add enable/disable services

This commit is contained in:
Saeed Vaziry
2024-03-16 14:02:28 +01:00
parent 7a6dcb5654
commit 77d6914cd9
17 changed files with 219 additions and 24 deletions

View File

@ -51,4 +51,34 @@ public function restart(Service $service): void
$service->save();
})->onConnection('ssh');
}
public function enable(Service $service): void
{
$service->status = ServiceStatus::ENABLING;
$service->save();
dispatch(function () use ($service) {
$status = $service->server->systemd()->enable($service->unit);
if (str($status)->contains('Active: active')) {
$service->status = ServiceStatus::READY;
} else {
$service->status = ServiceStatus::FAILED;
}
$service->save();
})->onConnection('ssh');
}
public function disable(Service $service): void
{
$service->status = ServiceStatus::DISABLING;
$service->save();
dispatch(function () use ($service) {
$status = $service->server->systemd()->disable($service->unit);
if (str($status)->contains('Active: inactive')) {
$service->status = ServiceStatus::DISABLED;
} else {
$service->status = ServiceStatus::FAILED;
}
$service->save();
})->onConnection('ssh');
}
}

View File

@ -23,4 +23,10 @@ final class ServiceStatus extends Enum
const RESTARTING = 'restarting';
const STOPPED = 'stopped';
const ENABLING = 'enabling';
const DISABLING = 'disabling';
const DISABLED = 'disabled';
}

View File

@ -44,4 +44,22 @@ public function restart(Server $server, Service $service): RedirectResponse
return back();
}
public function enable(Server $server, Service $service): RedirectResponse
{
$service->enable();
Toast::success('Service is being enabled!');
return back();
}
public function disable(Server $server, Service $service): RedirectResponse
{
$service->disable();
Toast::success('Service is being disabled!');
return back();
}
}

View File

@ -93,4 +93,14 @@ public function restart(): void
{
app(Manage::class)->restart($this);
}
public function enable(): void
{
app(Manage::class)->enable($this);
}
public function disable(): void
{
app(Manage::class)->disable($this);
}
}

View File

@ -13,7 +13,7 @@ public function __construct(protected Server $server)
public function status(string $unit): string
{
$command = <<<EOD
sudo service $unit status | cat
sudo systemctl status $unit | cat
EOD;
return $this->server->ssh()->exec($command, sprintf('status-%s', $unit));
@ -22,8 +22,8 @@ public function status(string $unit): string
public function start(string $unit): string
{
$command = <<<EOD
sudo service $unit start
sudo service $unit status | cat
sudo systemctl start $unit
sudo systemctl status $unit | cat
EOD;
return $this->server->ssh()->exec($command, sprintf('start-%s', $unit));
@ -32,8 +32,8 @@ public function start(string $unit): string
public function stop(string $unit): string
{
$command = <<<EOD
sudo service $unit stop
sudo service $unit status | cat
sudo systemctl stop $unit
sudo systemctl status $unit | cat
EOD;
return $this->server->ssh()->exec($command, sprintf('stop-%s', $unit));
@ -42,10 +42,32 @@ public function stop(string $unit): string
public function restart(string $unit): string
{
$command = <<<EOD
sudo service $unit restart
sudo service $unit status | cat
sudo systemctl restart $unit
sudo systemctl status $unit | cat
EOD;
return $this->server->ssh()->exec($command, sprintf('restart-%s', $unit));
}
public function enable(string $unit): string
{
$command = <<<EOD
sudo systemctl start $unit
sudo systemctl enable $unit
sudo systemctl status $unit | cat
EOD;
return $this->server->ssh()->exec($command, sprintf('enable-%s', $unit));
}
public function disable(string $unit): string
{
$command = <<<EOD
sudo systemctl stop $unit
sudo systemctl disable $unit
sudo systemctl status $unit | cat
EOD;
return $this->server->ssh()->exec($command, sprintf('disable-%s', $unit));
}
}