mirror of
https://github.com/vitodeploy/vito.git
synced 2025-07-02 14:36:17 +00:00
init
This commit is contained in:
35
app/Http/Livewire/Application/ChangeBranch.php
Normal file
35
app/Http/Livewire/Application/ChangeBranch.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Application;
|
||||
|
||||
use App\Actions\Site\UpdateBranch;
|
||||
use App\Models\Site;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class ChangeBranch extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public Site $site;
|
||||
|
||||
public string $branch;
|
||||
|
||||
public function mount(): void
|
||||
{
|
||||
$this->branch = $this->site->branch;
|
||||
}
|
||||
|
||||
public function change(): void
|
||||
{
|
||||
app(UpdateBranch::class)->update($this->site, $this->all());
|
||||
|
||||
session()->flash('status', 'updating-branch');
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.application.change-branch');
|
||||
}
|
||||
}
|
40
app/Http/Livewire/Application/Deploy.php
Normal file
40
app/Http/Livewire/Application/Deploy.php
Normal file
@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Application;
|
||||
|
||||
use App\Exceptions\SourceControlIsNotConnected;
|
||||
use App\Models\Site;
|
||||
use App\Traits\HasToast;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class Deploy extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
use HasToast;
|
||||
|
||||
public Site $site;
|
||||
|
||||
public function deploy(): void
|
||||
{
|
||||
try {
|
||||
$this->site->deploy();
|
||||
|
||||
$this->toast()->success(__('Deployment started!'));
|
||||
|
||||
$this->emitTo(DeploymentsList::class, '$refresh');
|
||||
|
||||
$this->emitTo(DeploymentScript::class, '$refresh');
|
||||
} catch (SourceControlIsNotConnected $e) {
|
||||
session()->flash('toast.type', 'error');
|
||||
session()->flash('toast.message', $e->getMessage());
|
||||
$this->redirect(route('source-controls'));
|
||||
}
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.application.deploy');
|
||||
}
|
||||
}
|
37
app/Http/Livewire/Application/DeploymentScript.php
Normal file
37
app/Http/Livewire/Application/DeploymentScript.php
Normal file
@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Application;
|
||||
|
||||
use App\Actions\Site\UpdateDeploymentScript;
|
||||
use App\Models\Site;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class DeploymentScript extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public Site $site;
|
||||
|
||||
public string $script;
|
||||
|
||||
public function mount(): void
|
||||
{
|
||||
$this->script = $this->site->deploymentScript->content;
|
||||
}
|
||||
|
||||
public function save(): void
|
||||
{
|
||||
app(UpdateDeploymentScript::class)->update($this->site, $this->all());
|
||||
|
||||
session()->flash('status', 'script-updated');
|
||||
|
||||
$this->emit(Deploy::class, '$refresh');
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.application.deployment-script');
|
||||
}
|
||||
}
|
34
app/Http/Livewire/Application/DeploymentsList.php
Normal file
34
app/Http/Livewire/Application/DeploymentsList.php
Normal file
@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Application;
|
||||
|
||||
use App\Models\Site;
|
||||
use App\Traits\HasCustomPaginationView;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class DeploymentsList extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
use HasCustomPaginationView;
|
||||
|
||||
public Site $site;
|
||||
|
||||
public string $logContent;
|
||||
|
||||
public function showLog(int $id): void
|
||||
{
|
||||
$deployment = $this->site->deployments()->findOrFail($id);
|
||||
$this->logContent = $deployment->log->content;
|
||||
|
||||
$this->dispatchBrowserEvent('open-modal', 'show-log');
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.application.deployments-list', [
|
||||
'deployments' => $this->site->deployments()->latest()->simplePaginate(10),
|
||||
]);
|
||||
}
|
||||
}
|
20
app/Http/Livewire/Application/LaravelApp.php
Normal file
20
app/Http/Livewire/Application/LaravelApp.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Application;
|
||||
|
||||
use App\Models\Site;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class LaravelApp extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public Site $site;
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.application.laravel-app');
|
||||
}
|
||||
}
|
20
app/Http/Livewire/Application/PhpApp.php
Normal file
20
app/Http/Livewire/Application/PhpApp.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Application;
|
||||
|
||||
use App\Models\Site;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class PhpApp extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public Site $site;
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.application.php-app');
|
||||
}
|
||||
}
|
20
app/Http/Livewire/Application/WordpressApp.php
Normal file
20
app/Http/Livewire/Application/WordpressApp.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Application;
|
||||
|
||||
use App\Models\Site;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class WordpressApp extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public Site $site;
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.application.wordpress-app');
|
||||
}
|
||||
}
|
34
app/Http/Livewire/Cronjobs/CreateCronjob.php
Normal file
34
app/Http/Livewire/Cronjobs/CreateCronjob.php
Normal file
@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Cronjobs;
|
||||
|
||||
use App\Models\Server;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class CreateCronjob extends Component
|
||||
{
|
||||
public Server $server;
|
||||
|
||||
public string $user = '';
|
||||
|
||||
public string $command;
|
||||
|
||||
public string $frequency = '';
|
||||
|
||||
public string $custom;
|
||||
|
||||
public function create(): void
|
||||
{
|
||||
app(\App\Actions\CronJob\CreateCronJob::class)->create($this->server, $this->all());
|
||||
|
||||
$this->emitTo(CronjobsList::class, '$refresh');
|
||||
|
||||
$this->dispatchBrowserEvent('created', true);
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.cronjobs.create-cronjob');
|
||||
}
|
||||
}
|
35
app/Http/Livewire/Cronjobs/CronjobsList.php
Normal file
35
app/Http/Livewire/Cronjobs/CronjobsList.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Cronjobs;
|
||||
|
||||
use App\Models\Server;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class CronjobsList extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public Server $server;
|
||||
|
||||
public int $deleteId;
|
||||
|
||||
public function delete(): void
|
||||
{
|
||||
$cronjob = $this->server->cronJobs()->where('id', $this->deleteId)->firstOrFail();
|
||||
|
||||
$cronjob->removeFromServer();
|
||||
|
||||
$this->refreshComponent([]);
|
||||
|
||||
$this->dispatchBrowserEvent('confirmed', true);
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.cronjobs.cronjobs-list', [
|
||||
'cronjobs' => $this->server->cronJobs,
|
||||
]);
|
||||
}
|
||||
}
|
65
app/Http/Livewire/Databases/DatabaseList.php
Normal file
65
app/Http/Livewire/Databases/DatabaseList.php
Normal file
@ -0,0 +1,65 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Databases;
|
||||
|
||||
use App\Actions\Database\CreateDatabase;
|
||||
use App\Actions\Database\CreateDatabaseUser;
|
||||
use App\Models\Database;
|
||||
use App\Models\Server;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class DatabaseList extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public Server $server;
|
||||
|
||||
public int $deleteId;
|
||||
|
||||
public string $name;
|
||||
|
||||
public bool $user;
|
||||
|
||||
public string $username;
|
||||
|
||||
public string $password;
|
||||
|
||||
public bool $remote = false;
|
||||
|
||||
public string $host = '%';
|
||||
|
||||
public function create(): void
|
||||
{
|
||||
app(CreateDatabase::class)->create($this->server, $this->all());
|
||||
|
||||
if ($this->all()['user']) {
|
||||
app(CreateDatabaseUser::class)->create($this->server, $this->all());
|
||||
}
|
||||
|
||||
$this->refreshComponent([]);
|
||||
|
||||
$this->dispatchBrowserEvent('database-created', true);
|
||||
}
|
||||
|
||||
public function delete(): void
|
||||
{
|
||||
$database = Database::query()->findOrFail($this->deleteId);
|
||||
|
||||
$database->deleteFromServer();
|
||||
|
||||
$this->refreshComponent([]);
|
||||
|
||||
$this->emitTo(DatabaseUserList::class, '$refresh');
|
||||
|
||||
$this->dispatchBrowserEvent('confirmed', true);
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.databases.database-list', [
|
||||
'databases' => $this->server->databases,
|
||||
]);
|
||||
}
|
||||
}
|
94
app/Http/Livewire/Databases/DatabaseUserList.php
Normal file
94
app/Http/Livewire/Databases/DatabaseUserList.php
Normal file
@ -0,0 +1,94 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Databases;
|
||||
|
||||
use App\Actions\Database\CreateDatabaseUser;
|
||||
use App\Actions\Database\LinkUser;
|
||||
use App\Models\DatabaseUser;
|
||||
use App\Models\Server;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class DatabaseUserList extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public Server $server;
|
||||
|
||||
public int $deleteId;
|
||||
|
||||
public string $username;
|
||||
|
||||
public string $password;
|
||||
|
||||
public bool $remote;
|
||||
|
||||
public string $host = '%';
|
||||
|
||||
public int $linkId;
|
||||
|
||||
public array $link = [];
|
||||
|
||||
public string $viewPassword = '';
|
||||
|
||||
public function create(): void
|
||||
{
|
||||
app(CreateDatabaseUser::class)->create($this->server, $this->all());
|
||||
|
||||
$this->refreshComponent([]);
|
||||
|
||||
$this->dispatchBrowserEvent('database-user-created', true);
|
||||
}
|
||||
|
||||
public function delete(): void
|
||||
{
|
||||
$databaseUser = DatabaseUser::query()->findOrFail($this->deleteId);
|
||||
|
||||
$databaseUser->deleteFromServer();
|
||||
|
||||
$this->refreshComponent([]);
|
||||
|
||||
$this->emitTo(DatabaseList::class, '$refresh');
|
||||
|
||||
$this->dispatchBrowserEvent('confirmed', true);
|
||||
}
|
||||
|
||||
public function viewPassword(int $id): void
|
||||
{
|
||||
$databaseUser = DatabaseUser::query()->findOrFail($id);
|
||||
|
||||
$this->viewPassword = $databaseUser->password;
|
||||
|
||||
$this->dispatchBrowserEvent('open-modal', 'database-user-password');
|
||||
}
|
||||
|
||||
public function showLink(int $id): void
|
||||
{
|
||||
$databaseUser = DatabaseUser::query()->findOrFail($id);
|
||||
|
||||
$this->linkId = $id;
|
||||
$this->link = $databaseUser->databases;
|
||||
|
||||
$this->dispatchBrowserEvent('open-modal', 'link-database-user');
|
||||
}
|
||||
|
||||
public function link(): void
|
||||
{
|
||||
$databaseUser = DatabaseUser::query()->findOrFail($this->linkId);
|
||||
|
||||
app(LinkUser::class)->link($databaseUser, $this->link);
|
||||
|
||||
$this->refreshComponent([]);
|
||||
|
||||
$this->dispatchBrowserEvent('linked', true);
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.databases.database-user-list', [
|
||||
'databases' => $this->server->databases,
|
||||
'databaseUsers' => $this->server->databaseUsers,
|
||||
]);
|
||||
}
|
||||
}
|
40
app/Http/Livewire/Firewall/CreateFirewallRule.php
Normal file
40
app/Http/Livewire/Firewall/CreateFirewallRule.php
Normal file
@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Firewall;
|
||||
|
||||
use App\Actions\FirewallRule\CreateRule;
|
||||
use App\Models\Server;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class CreateFirewallRule extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public Server $server;
|
||||
|
||||
public string $type = 'allow';
|
||||
|
||||
public string $protocol = 'tcp';
|
||||
|
||||
public string $port;
|
||||
|
||||
public string $source = '0.0.0.0';
|
||||
|
||||
public string $mask = '0';
|
||||
|
||||
public function create(): void
|
||||
{
|
||||
app(CreateRule::class)->create($this->server, $this->all());
|
||||
|
||||
$this->emitTo(FirewallRulesList::class, '$refresh');
|
||||
|
||||
$this->dispatchBrowserEvent('created', true);
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.firewall.create-firewall-rule');
|
||||
}
|
||||
}
|
36
app/Http/Livewire/Firewall/FirewallRulesList.php
Normal file
36
app/Http/Livewire/Firewall/FirewallRulesList.php
Normal file
@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Firewall;
|
||||
|
||||
use App\Models\FirewallRule;
|
||||
use App\Models\Server;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class FirewallRulesList extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public Server $server;
|
||||
|
||||
public int $deleteId;
|
||||
|
||||
public function delete(): void
|
||||
{
|
||||
$rule = FirewallRule::query()->findOrFail($this->deleteId);
|
||||
|
||||
$rule->removeFromServer();
|
||||
|
||||
$this->refreshComponent([]);
|
||||
|
||||
$this->dispatchBrowserEvent('confirmed', true);
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.firewall.firewall-rules-list', [
|
||||
'rules' => $this->server->firewallRules,
|
||||
]);
|
||||
}
|
||||
}
|
34
app/Http/Livewire/NotificationChannels/AddChannel.php
Normal file
34
app/Http/Livewire/NotificationChannels/AddChannel.php
Normal file
@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\NotificationChannels;
|
||||
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class AddChannel extends Component
|
||||
{
|
||||
public string $provider = '';
|
||||
|
||||
public string $label;
|
||||
|
||||
public string $webhook_url;
|
||||
|
||||
public string $email;
|
||||
|
||||
public function add(): void
|
||||
{
|
||||
app(\App\Actions\NotificationChannels\AddChannel::class)->add(
|
||||
auth()->user(),
|
||||
$this->all()
|
||||
);
|
||||
|
||||
$this->emitTo(KeysList::class, '$refresh');
|
||||
|
||||
$this->dispatchBrowserEvent('added', true);
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.notification-channels.add-channel');
|
||||
}
|
||||
}
|
37
app/Http/Livewire/NotificationChannels/ChannelsList.php
Normal file
37
app/Http/Livewire/NotificationChannels/ChannelsList.php
Normal file
@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\NotificationChannels;
|
||||
|
||||
use App\Models\NotificationChannel;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class ChannelsList extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public int $deleteId;
|
||||
|
||||
protected $listeners = [
|
||||
'$refresh',
|
||||
];
|
||||
|
||||
public function delete(): void
|
||||
{
|
||||
$channel = NotificationChannel::query()->findOrFail($this->deleteId);
|
||||
|
||||
$channel->delete();
|
||||
|
||||
$this->refreshComponent([]);
|
||||
|
||||
$this->dispatchBrowserEvent('confirmed', true);
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.notification-channels.channels-list', [
|
||||
'channels' => NotificationChannel::query()->latest()->get(),
|
||||
]);
|
||||
}
|
||||
}
|
30
app/Http/Livewire/Php/DefaultCli.php
Normal file
30
app/Http/Livewire/Php/DefaultCli.php
Normal file
@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Php;
|
||||
|
||||
use App\Models\Server;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class DefaultCli extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public Server $server;
|
||||
|
||||
public function change(string $version): void
|
||||
{
|
||||
$this->server->php($version)->handler()->setDefaultCli();
|
||||
|
||||
$this->refreshComponent([]);
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.php.default-cli', [
|
||||
'defaultPHP' => $this->server->defaultService('php'),
|
||||
'phps' => $this->server->services()->where('type', 'php')->get(), //
|
||||
]);
|
||||
}
|
||||
}
|
85
app/Http/Livewire/Php/InstalledVersions.php
Normal file
85
app/Http/Livewire/Php/InstalledVersions.php
Normal file
@ -0,0 +1,85 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Php;
|
||||
|
||||
use App\Actions\PHP\InstallNewPHP;
|
||||
use App\Actions\PHP\UpdatePHPIni;
|
||||
use App\Models\Server;
|
||||
use App\Models\Service;
|
||||
use App\SSHCommands\GetPHPIniCommand;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
use Throwable;
|
||||
|
||||
class InstalledVersions extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public Server $server;
|
||||
|
||||
public int $uninstallId;
|
||||
|
||||
public int $iniId;
|
||||
|
||||
public string $ini = 'Loading php.ini';
|
||||
|
||||
public function install(string $version): void
|
||||
{
|
||||
app(InstallNewPHP::class)->install($this->server, [
|
||||
'version' => $version,
|
||||
]);
|
||||
|
||||
$this->refreshComponent([]);
|
||||
}
|
||||
|
||||
public function restart(int $id): void
|
||||
{
|
||||
$service = Service::query()->findOrFail($id);
|
||||
$service->restart();
|
||||
|
||||
$this->refreshComponent([]);
|
||||
}
|
||||
|
||||
public function uninstall(): void
|
||||
{
|
||||
$service = Service::query()->findOrFail($this->uninstallId);
|
||||
$service->uninstall();
|
||||
|
||||
$this->refreshComponent([]);
|
||||
|
||||
$this->dispatchBrowserEvent('confirmed', true);
|
||||
}
|
||||
|
||||
public function loadIni(int $id): void
|
||||
{
|
||||
$this->iniId = $id;
|
||||
$this->ini = 'Loading php.ini';
|
||||
|
||||
$service = Service::query()->findOrFail($this->iniId);
|
||||
|
||||
try {
|
||||
$this->ini = $service->server->ssh()->exec(new GetPHPIniCommand($service->version));
|
||||
} catch (Throwable) {
|
||||
//
|
||||
}
|
||||
}
|
||||
|
||||
public function saveIni(): void
|
||||
{
|
||||
$service = Service::query()->findOrFail($this->iniId);
|
||||
|
||||
app(UpdatePHPIni::class)->update($service, $this->all()['ini']);
|
||||
|
||||
$this->refreshComponent([]);
|
||||
|
||||
session()->flash('status', 'ini-updated');
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.php.installed-versions', [
|
||||
'phps' => $this->server->services()->where('type', 'php')->get(),
|
||||
]);
|
||||
}
|
||||
}
|
32
app/Http/Livewire/Profile/UpdatePassword.php
Normal file
32
app/Http/Livewire/Profile/UpdatePassword.php
Normal file
@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Profile;
|
||||
|
||||
use App\Actions\User\UpdateUserPassword;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class UpdatePassword extends Component
|
||||
{
|
||||
public string $current_password;
|
||||
|
||||
public string $password;
|
||||
|
||||
public string $password_confirmation;
|
||||
|
||||
public function update(): void
|
||||
{
|
||||
app(UpdateUserPassword::class)->update(auth()->user(), $this->all());
|
||||
|
||||
$this->current_password = '';
|
||||
$this->password = '';
|
||||
$this->password_confirmation = '';
|
||||
|
||||
session()->flash('status', 'password-updated');
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.profile.update-password');
|
||||
}
|
||||
}
|
48
app/Http/Livewire/Profile/UpdateProfileInformation.php
Normal file
48
app/Http/Livewire/Profile/UpdateProfileInformation.php
Normal file
@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Profile;
|
||||
|
||||
use App\Actions\User\UpdateUserProfileInformation;
|
||||
use App\Http\Livewire\UserDropdown;
|
||||
use Exception;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class UpdateProfileInformation extends Component
|
||||
{
|
||||
public string $name;
|
||||
|
||||
public string $email;
|
||||
|
||||
public function mount(): void
|
||||
{
|
||||
$this->name = auth()->user()->name;
|
||||
$this->email = auth()->user()->email;
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws Exception
|
||||
*/
|
||||
public function submit(): void
|
||||
{
|
||||
app(UpdateUserProfileInformation::class)->update(auth()->user(), $this->all());
|
||||
|
||||
session()->flash('status', 'profile-updated');
|
||||
|
||||
$this->emitTo(UserDropdown::class, '$refresh');
|
||||
}
|
||||
|
||||
public function sendVerificationEmail(): void
|
||||
{
|
||||
if (! auth()->user()->hasVerifiedEmail()) {
|
||||
auth()->user()->sendEmailVerificationNotification();
|
||||
|
||||
session()->flash('status', 'verification-link-sent');
|
||||
}
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.profile.update-profile-information');
|
||||
}
|
||||
}
|
36
app/Http/Livewire/Queues/CreateQueue.php
Normal file
36
app/Http/Livewire/Queues/CreateQueue.php
Normal file
@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Queues;
|
||||
|
||||
use App\Models\Site;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class CreateQueue extends Component
|
||||
{
|
||||
public Site $site;
|
||||
|
||||
public string $command;
|
||||
|
||||
public string $user = '';
|
||||
|
||||
public int $auto_start = 1;
|
||||
|
||||
public int $auto_restart = 1;
|
||||
|
||||
public int $numprocs;
|
||||
|
||||
public function create(): void
|
||||
{
|
||||
app(\App\Actions\Queue\CreateQueue::class)->create($this->site, $this->all());
|
||||
|
||||
$this->emitTo(QueuesList::class, '$refresh');
|
||||
|
||||
$this->dispatchBrowserEvent('created', true);
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.queues.create-queue');
|
||||
}
|
||||
}
|
57
app/Http/Livewire/Queues/QueuesList.php
Normal file
57
app/Http/Livewire/Queues/QueuesList.php
Normal file
@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Queues;
|
||||
|
||||
use App\Models\Queue;
|
||||
use App\Models\Site;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class QueuesList extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public Site $site;
|
||||
|
||||
public int $deleteId;
|
||||
|
||||
public function delete(): void
|
||||
{
|
||||
$queue = $this->site->queues()->findOrFail($this->deleteId);
|
||||
|
||||
$queue->remove();
|
||||
|
||||
$this->refreshComponent([]);
|
||||
|
||||
$this->dispatchBrowserEvent('confirmed', true);
|
||||
}
|
||||
|
||||
public function start(Queue $queue): void
|
||||
{
|
||||
$queue->start();
|
||||
|
||||
$this->refreshComponent([]);
|
||||
}
|
||||
|
||||
public function restart(Queue $queue): void
|
||||
{
|
||||
$queue->restart();
|
||||
|
||||
$this->refreshComponent([]);
|
||||
}
|
||||
|
||||
public function stop(Queue $queue): void
|
||||
{
|
||||
$queue->stop();
|
||||
|
||||
$this->refreshComponent([]);
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.queues.queues-list', [
|
||||
'queues' => $this->site->queues,
|
||||
]);
|
||||
}
|
||||
}
|
58
app/Http/Livewire/ServerLogs/LogsList.php
Normal file
58
app/Http/Livewire/ServerLogs/LogsList.php
Normal file
@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\ServerLogs;
|
||||
|
||||
use App\Models\Server;
|
||||
use App\Models\Site;
|
||||
use App\Traits\HasCustomPaginationView;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class LogsList extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
use HasCustomPaginationView;
|
||||
|
||||
public ?int $count = null;
|
||||
|
||||
public Server $server;
|
||||
|
||||
public ?Site $site = null;
|
||||
|
||||
public string $logContent;
|
||||
|
||||
public function showLog(int $id): void
|
||||
{
|
||||
$log = $this->server->logs()->findOrFail($id);
|
||||
$this->logContent = $log->content;
|
||||
|
||||
$this->dispatchBrowserEvent('open-modal', 'show-log');
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
if ($this->site) {
|
||||
return $this->renderSite();
|
||||
}
|
||||
|
||||
if ($this->count) {
|
||||
$logs = $this->server->logs()->latest()->take(10)->get();
|
||||
} else {
|
||||
$logs = $this->server->logs()->latest()->simplePaginate(10);
|
||||
}
|
||||
|
||||
return view('livewire.server-logs.logs-list', compact('logs'));
|
||||
}
|
||||
|
||||
private function renderSite(): View
|
||||
{
|
||||
if ($this->count) {
|
||||
$logs = $this->site->logs()->latest()->take(10)->get();
|
||||
} else {
|
||||
$logs = $this->site->logs()->latest()->simplePaginate(10);
|
||||
}
|
||||
|
||||
return view('livewire.server-logs.logs-list', compact('logs'));
|
||||
}
|
||||
}
|
40
app/Http/Livewire/ServerProviders/ConnectProvider.php
Normal file
40
app/Http/Livewire/ServerProviders/ConnectProvider.php
Normal file
@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\ServerProviders;
|
||||
|
||||
use App\Actions\ServerProvider\CreateServerProvider;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class ConnectProvider extends Component
|
||||
{
|
||||
public string $provider = '';
|
||||
|
||||
public string $name;
|
||||
|
||||
public string $token;
|
||||
|
||||
public string $key;
|
||||
|
||||
public string $secret;
|
||||
|
||||
public function connect(): void
|
||||
{
|
||||
app(CreateServerProvider::class)->create(auth()->user(), $this->all());
|
||||
|
||||
$this->emitTo(ProvidersList::class, '$refresh');
|
||||
|
||||
$this->dispatchBrowserEvent('connected', true);
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
if (request()->query('provider')) {
|
||||
$this->provider = request()->query('provider');
|
||||
}
|
||||
|
||||
return view('livewire.server-providers.connect-provider', [
|
||||
'open' => ! is_null(request()->query('provider')),
|
||||
]);
|
||||
}
|
||||
}
|
37
app/Http/Livewire/ServerProviders/ProvidersList.php
Normal file
37
app/Http/Livewire/ServerProviders/ProvidersList.php
Normal file
@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\ServerProviders;
|
||||
|
||||
use App\Models\ServerProvider;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class ProvidersList extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public int $deleteId;
|
||||
|
||||
protected $listeners = [
|
||||
'$refresh',
|
||||
];
|
||||
|
||||
public function delete(): void
|
||||
{
|
||||
$provider = ServerProvider::query()->findOrFail($this->deleteId);
|
||||
|
||||
$provider->delete();
|
||||
|
||||
$this->refreshComponent([]);
|
||||
|
||||
$this->dispatchBrowserEvent('confirmed', true);
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.server-providers.providers-list', [
|
||||
'providers' => ServerProvider::query()->latest()->get(),
|
||||
]);
|
||||
}
|
||||
}
|
24
app/Http/Livewire/ServerSettings/CheckConnection.php
Normal file
24
app/Http/Livewire/ServerSettings/CheckConnection.php
Normal file
@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\ServerSettings;
|
||||
|
||||
use App\Models\Server;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class CheckConnection extends Component
|
||||
{
|
||||
public Server $server;
|
||||
|
||||
public function check(): void
|
||||
{
|
||||
$this->server->checkConnection();
|
||||
|
||||
session()->flash('status', 'checking-connection');
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.server-settings.check-connection');
|
||||
}
|
||||
}
|
40
app/Http/Livewire/ServerSettings/EditServer.php
Normal file
40
app/Http/Livewire/ServerSettings/EditServer.php
Normal file
@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\ServerSettings;
|
||||
|
||||
use App\Models\Server;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class EditServer extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public Server $server;
|
||||
|
||||
public string $name;
|
||||
|
||||
public string $ip;
|
||||
|
||||
public string $port;
|
||||
|
||||
public function mount(): void
|
||||
{
|
||||
$this->name = $this->server->name;
|
||||
$this->ip = $this->server->ip;
|
||||
$this->port = $this->server->port;
|
||||
}
|
||||
|
||||
public function update(): void
|
||||
{
|
||||
app(\App\Actions\Server\EditServer::class)->edit($this->server, $this->all());
|
||||
|
||||
session()->flash('status', 'server-updated');
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.server-settings.edit-server');
|
||||
}
|
||||
}
|
24
app/Http/Livewire/ServerSettings/RebootServer.php
Normal file
24
app/Http/Livewire/ServerSettings/RebootServer.php
Normal file
@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\ServerSettings;
|
||||
|
||||
use App\Models\Server;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class RebootServer extends Component
|
||||
{
|
||||
public Server $server;
|
||||
|
||||
public function reboot(): void
|
||||
{
|
||||
$this->server->reboot();
|
||||
|
||||
session()->flash('status', 'rebooting-server');
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.server-settings.reboot-server');
|
||||
}
|
||||
}
|
20
app/Http/Livewire/ServerSettings/ServerDetails.php
Normal file
20
app/Http/Livewire/ServerSettings/ServerDetails.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\ServerSettings;
|
||||
|
||||
use App\Models\Server;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class ServerDetails extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public Server $server;
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.server-settings.server-details');
|
||||
}
|
||||
}
|
33
app/Http/Livewire/ServerSshKeys/AddExistingKey.php
Normal file
33
app/Http/Livewire/ServerSshKeys/AddExistingKey.php
Normal file
@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\ServerSshKeys;
|
||||
|
||||
use App\Models\Server;
|
||||
use App\Models\SshKey;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class AddExistingKey extends Component
|
||||
{
|
||||
public Server $server;
|
||||
|
||||
public string $key_id = '';
|
||||
|
||||
public function add(): void
|
||||
{
|
||||
$key = SshKey::query()->findOrFail($this->all()['key_id']);
|
||||
|
||||
$key->deployTo($this->server);
|
||||
|
||||
$this->emitTo(ServerKeysList::class, '$refresh');
|
||||
|
||||
$this->dispatchBrowserEvent('added', true);
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.server-ssh-keys.add-existing-key', [
|
||||
'keys' => SshKey::all(),
|
||||
]);
|
||||
}
|
||||
}
|
36
app/Http/Livewire/ServerSshKeys/AddNewKey.php
Normal file
36
app/Http/Livewire/ServerSshKeys/AddNewKey.php
Normal file
@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\ServerSshKeys;
|
||||
|
||||
use App\Actions\SshKey\CreateSshKey;
|
||||
use App\Models\Server;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class AddNewKey extends Component
|
||||
{
|
||||
public Server $server;
|
||||
|
||||
public string $name;
|
||||
|
||||
public string $public_key;
|
||||
|
||||
public function add(): void
|
||||
{
|
||||
$key = app(CreateSshKey::class)->create(
|
||||
auth()->user(),
|
||||
$this->all()
|
||||
);
|
||||
|
||||
$key->deployTo($this->server);
|
||||
|
||||
$this->emitTo(ServerKeysList::class, '$refresh');
|
||||
|
||||
$this->dispatchBrowserEvent('added', true);
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.server-ssh-keys.add-new-key');
|
||||
}
|
||||
}
|
40
app/Http/Livewire/ServerSshKeys/ServerKeysList.php
Normal file
40
app/Http/Livewire/ServerSshKeys/ServerKeysList.php
Normal file
@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\ServerSshKeys;
|
||||
|
||||
use App\Models\Server;
|
||||
use App\Models\SshKey;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class ServerKeysList extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public Server $server;
|
||||
|
||||
public int $deleteId;
|
||||
|
||||
protected $listeners = [
|
||||
'$refresh',
|
||||
];
|
||||
|
||||
public function delete(): void
|
||||
{
|
||||
$key = SshKey::query()->findOrFail($this->deleteId);
|
||||
|
||||
$key->deleteFrom($this->server);
|
||||
|
||||
$this->refreshComponent([]);
|
||||
|
||||
$this->dispatchBrowserEvent('confirmed', true);
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.server-ssh-keys.server-keys-list', [
|
||||
'keys' => $this->server->sshKeys,
|
||||
]);
|
||||
}
|
||||
}
|
64
app/Http/Livewire/Servers/CreateServer.php
Normal file
64
app/Http/Livewire/Servers/CreateServer.php
Normal file
@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Servers;
|
||||
|
||||
use App\Enums\Database;
|
||||
use App\Enums\OperatingSystem;
|
||||
use App\Enums\ServerType;
|
||||
use App\Enums\Webserver;
|
||||
use App\Models\ServerProvider;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
use Throwable;
|
||||
|
||||
class CreateServer extends Component
|
||||
{
|
||||
public string $provider = 'custom';
|
||||
|
||||
public string $server_provider = '';
|
||||
|
||||
public string $type = ServerType::REGULAR;
|
||||
|
||||
public string $name;
|
||||
|
||||
public string $ip;
|
||||
|
||||
public string $port;
|
||||
|
||||
public string $os = OperatingSystem::UBUNTU22;
|
||||
|
||||
public string $webserver = Webserver::NGINX;
|
||||
|
||||
public string $database = Database::MYSQL80;
|
||||
|
||||
public string $php = '8.2';
|
||||
|
||||
public string $plan = '';
|
||||
|
||||
public string $region = '';
|
||||
|
||||
/**
|
||||
* @throws Throwable
|
||||
*/
|
||||
public function submit(): void
|
||||
{
|
||||
$server = app(\App\Actions\Server\CreateServer::class)->create(
|
||||
auth()->user(),
|
||||
$this->all()
|
||||
);
|
||||
|
||||
$this->redirect(route('servers.show', ['server' => $server]));
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
$serverProviders = ServerProvider::query()->where('provider', $this->provider)->get();
|
||||
|
||||
return view(
|
||||
'livewire.servers.create-server',
|
||||
compact([
|
||||
'serverProviders',
|
||||
])
|
||||
);
|
||||
}
|
||||
}
|
29
app/Http/Livewire/Servers/DeleteServer.php
Normal file
29
app/Http/Livewire/Servers/DeleteServer.php
Normal file
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Servers;
|
||||
|
||||
use App\Models\Server;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class DeleteServer extends Component
|
||||
{
|
||||
public Server $server;
|
||||
|
||||
public function mount(Server $server): void
|
||||
{
|
||||
$this->server = $server;
|
||||
}
|
||||
|
||||
public function delete(): void
|
||||
{
|
||||
$this->server->delete();
|
||||
|
||||
$this->redirect(route('servers'));
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.servers.delete-server');
|
||||
}
|
||||
}
|
20
app/Http/Livewire/Servers/ServersList.php
Normal file
20
app/Http/Livewire/Servers/ServersList.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Servers;
|
||||
|
||||
use App\Models\Server;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class ServersList extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.servers.servers-list', [
|
||||
'servers' => Server::all(),
|
||||
]);
|
||||
}
|
||||
}
|
31
app/Http/Livewire/Servers/ShowServer.php
Normal file
31
app/Http/Livewire/Servers/ShowServer.php
Normal file
@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Servers;
|
||||
|
||||
use App\Models\Server;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class ShowServer extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public Server $server;
|
||||
|
||||
public function refreshComponent(array $data): void
|
||||
{
|
||||
if (isset($data['type']) && $data['type'] == 'install-server-finished') {
|
||||
$this->redirect(route('servers.show', ['server' => $this->server]));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$this->emit('refreshComponent');
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.servers.show-server');
|
||||
}
|
||||
}
|
49
app/Http/Livewire/Services/ServicesList.php
Normal file
49
app/Http/Livewire/Services/ServicesList.php
Normal file
@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Services;
|
||||
|
||||
use App\Models\Server;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class ServicesList extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public Server $server;
|
||||
|
||||
public function stop(int $id): void
|
||||
{
|
||||
$service = $this->server->services()->where('id', $id)->firstOrFail();
|
||||
|
||||
$service->stop();
|
||||
|
||||
$this->refreshComponent([]);
|
||||
}
|
||||
|
||||
public function start(int $id): void
|
||||
{
|
||||
$service = $this->server->services()->where('id', $id)->firstOrFail();
|
||||
|
||||
$service->start();
|
||||
|
||||
$this->refreshComponent([]);
|
||||
}
|
||||
|
||||
public function restart(int $id): void
|
||||
{
|
||||
$service = $this->server->services()->where('id', $id)->firstOrFail();
|
||||
|
||||
$service->restart();
|
||||
|
||||
$this->refreshComponent([]);
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.services.services-list', [
|
||||
'services' => $this->server->services,
|
||||
]);
|
||||
}
|
||||
}
|
41
app/Http/Livewire/Sites/ChangePhpVersion.php
Normal file
41
app/Http/Livewire/Sites/ChangePhpVersion.php
Normal file
@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Sites;
|
||||
|
||||
use App\Models\Site;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class ChangePhpVersion extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public Site $site;
|
||||
|
||||
public string $version;
|
||||
|
||||
public function mount(Site $site): void
|
||||
{
|
||||
$this->version = $site->php_version;
|
||||
}
|
||||
|
||||
public function change(): void
|
||||
{
|
||||
$this->site->changePHPVersion($this->version);
|
||||
|
||||
session()->flash('status', 'changing-php-version');
|
||||
}
|
||||
|
||||
public function refreshComponent(array $data): void
|
||||
{
|
||||
if (isset($data['type'])) {
|
||||
session()->flash('status', $data['type']);
|
||||
}
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.sites.change-php-version');
|
||||
}
|
||||
}
|
59
app/Http/Livewire/Sites/CreateSite.php
Normal file
59
app/Http/Livewire/Sites/CreateSite.php
Normal file
@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Sites;
|
||||
|
||||
use App\Enums\SiteType;
|
||||
use App\Exceptions\SourceControlIsNotConnected;
|
||||
use App\Models\Server;
|
||||
use App\Models\SourceControl;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class CreateSite extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public Server $server;
|
||||
|
||||
public string $type = SiteType::LARAVEL;
|
||||
|
||||
public string $domain;
|
||||
|
||||
public string $alias;
|
||||
|
||||
public string $php_version = '';
|
||||
|
||||
public string $web_directory = 'public';
|
||||
|
||||
public string $source_control = '';
|
||||
|
||||
public string $repository;
|
||||
|
||||
public string $branch;
|
||||
|
||||
public bool $composer;
|
||||
|
||||
/**
|
||||
* @throws SourceControlIsNotConnected
|
||||
*/
|
||||
public function create(): void
|
||||
{
|
||||
$site = app(\App\Actions\Site\CreateSite::class)->create(
|
||||
$this->server,
|
||||
$this->all()
|
||||
);
|
||||
|
||||
$this->redirect(route('servers.sites.show', [
|
||||
'server' => $site->server,
|
||||
'site' => $site,
|
||||
]));
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.sites.create-site', [
|
||||
'sourceControls' => SourceControl::all(),
|
||||
]);
|
||||
}
|
||||
}
|
27
app/Http/Livewire/Sites/DeleteSite.php
Normal file
27
app/Http/Livewire/Sites/DeleteSite.php
Normal file
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Sites;
|
||||
|
||||
use App\Models\Site;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class DeleteSite extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public Site $site;
|
||||
|
||||
public function delete(): void
|
||||
{
|
||||
$this->site->remove();
|
||||
|
||||
$this->redirect(route('servers.sites', ['server' => $this->site->server]));
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.sites.delete-site');
|
||||
}
|
||||
}
|
20
app/Http/Livewire/Sites/ShowSite.php
Normal file
20
app/Http/Livewire/Sites/ShowSite.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Sites;
|
||||
|
||||
use App\Models\Site;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class ShowSite extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public Site $site;
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.sites.show-site');
|
||||
}
|
||||
}
|
38
app/Http/Livewire/Sites/SitesList.php
Normal file
38
app/Http/Livewire/Sites/SitesList.php
Normal file
@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Sites;
|
||||
|
||||
use App\Models\Server;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class SitesList extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public Server $server;
|
||||
|
||||
public function refreshComponent(array $data): void
|
||||
{
|
||||
if (isset($data['type']) && $data['type'] == 'install-site-finished') {
|
||||
$this->redirect(
|
||||
route('servers.sites.show', [
|
||||
'server' => $this->server,
|
||||
'site' => $data['data']['site']['id'],
|
||||
])
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$this->emit('refreshComponent');
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.sites.sites-list', [
|
||||
'sites' => $this->server->sites()->latest()->get(),
|
||||
]);
|
||||
}
|
||||
}
|
36
app/Http/Livewire/SourceControls/Bitbucket.php
Normal file
36
app/Http/Livewire/SourceControls/Bitbucket.php
Normal file
@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\SourceControls;
|
||||
|
||||
use App\Actions\SourceControl\ConnectSourceControl;
|
||||
use App\Models\SourceControl;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class Bitbucket extends Component
|
||||
{
|
||||
public string $token;
|
||||
|
||||
public function mount(): void
|
||||
{
|
||||
$this->token = SourceControl::query()
|
||||
->where('provider', \App\Enums\SourceControl::BITBUCKET)
|
||||
->first()?->access_token ?? '';
|
||||
}
|
||||
|
||||
public function connect(): void
|
||||
{
|
||||
app(ConnectSourceControl::class)->connect(\App\Enums\SourceControl::BITBUCKET, $this->all());
|
||||
|
||||
session()->flash('status', 'bitbucket-updated');
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.source-controls.bitbucket', [
|
||||
'sourceControl' => SourceControl::query()
|
||||
->where('provider', \App\Enums\SourceControl::BITBUCKET)
|
||||
->first(),
|
||||
]);
|
||||
}
|
||||
}
|
36
app/Http/Livewire/SourceControls/Github.php
Normal file
36
app/Http/Livewire/SourceControls/Github.php
Normal file
@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\SourceControls;
|
||||
|
||||
use App\Actions\SourceControl\ConnectSourceControl;
|
||||
use App\Models\SourceControl;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class Github extends Component
|
||||
{
|
||||
public string $token;
|
||||
|
||||
public function mount(): void
|
||||
{
|
||||
$this->token = SourceControl::query()
|
||||
->where('provider', \App\Enums\SourceControl::GITHUB)
|
||||
->first()?->access_token ?? '';
|
||||
}
|
||||
|
||||
public function connect(): void
|
||||
{
|
||||
app(ConnectSourceControl::class)->connect(\App\Enums\SourceControl::GITHUB, $this->all());
|
||||
|
||||
session()->flash('status', 'github-updated');
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.source-controls.github', [
|
||||
'sourceControl' => SourceControl::query()
|
||||
->where('provider', \App\Enums\SourceControl::GITHUB)
|
||||
->first(),
|
||||
]);
|
||||
}
|
||||
}
|
36
app/Http/Livewire/SourceControls/Gitlab.php
Normal file
36
app/Http/Livewire/SourceControls/Gitlab.php
Normal file
@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\SourceControls;
|
||||
|
||||
use App\Actions\SourceControl\ConnectSourceControl;
|
||||
use App\Models\SourceControl;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class Gitlab extends Component
|
||||
{
|
||||
public string $token;
|
||||
|
||||
public function mount(): void
|
||||
{
|
||||
$this->token = SourceControl::query()
|
||||
->where('provider', \App\Enums\SourceControl::GITLAB)
|
||||
->first()?->access_token ?? '';
|
||||
}
|
||||
|
||||
public function connect(): void
|
||||
{
|
||||
app(ConnectSourceControl::class)->connect(\App\Enums\SourceControl::GITLAB, $this->all());
|
||||
|
||||
session()->flash('status', 'gitlab-updated');
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.source-controls.gitlab', [
|
||||
'sourceControl' => SourceControl::query()
|
||||
->where('provider', \App\Enums\SourceControl::GITLAB)
|
||||
->first(),
|
||||
]);
|
||||
}
|
||||
}
|
31
app/Http/Livewire/SshKeys/AddKey.php
Normal file
31
app/Http/Livewire/SshKeys/AddKey.php
Normal file
@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\SshKeys;
|
||||
|
||||
use App\Actions\SshKey\CreateSshKey;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class AddKey extends Component
|
||||
{
|
||||
public string $name;
|
||||
|
||||
public string $public_key;
|
||||
|
||||
public function add(): void
|
||||
{
|
||||
app(CreateSshKey::class)->create(
|
||||
auth()->user(),
|
||||
$this->all()
|
||||
);
|
||||
|
||||
$this->emitTo(KeysList::class, '$refresh');
|
||||
|
||||
$this->dispatchBrowserEvent('added', true);
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.ssh-keys.add-key');
|
||||
}
|
||||
}
|
37
app/Http/Livewire/SshKeys/KeysList.php
Normal file
37
app/Http/Livewire/SshKeys/KeysList.php
Normal file
@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\SshKeys;
|
||||
|
||||
use App\Models\SshKey;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class KeysList extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public int $deleteId;
|
||||
|
||||
protected $listeners = [
|
||||
'$refresh',
|
||||
];
|
||||
|
||||
public function delete(): void
|
||||
{
|
||||
$key = SshKey::query()->findOrFail($this->deleteId);
|
||||
|
||||
$key->delete();
|
||||
|
||||
$this->refreshComponent([]);
|
||||
|
||||
$this->dispatchBrowserEvent('confirmed', true);
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.ssh-keys.keys-list', [
|
||||
'keys' => SshKey::query()->latest()->get(),
|
||||
]);
|
||||
}
|
||||
}
|
35
app/Http/Livewire/Ssl/CreateSsl.php
Normal file
35
app/Http/Livewire/Ssl/CreateSsl.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Ssl;
|
||||
|
||||
use App\Models\Site;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class CreateSsl extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
|
||||
public Site $site;
|
||||
|
||||
public string $type = '';
|
||||
|
||||
public string $certificate;
|
||||
|
||||
public string $private;
|
||||
|
||||
public function create(): void
|
||||
{
|
||||
app(\App\Actions\SSL\CreateSSL::class)->create($this->site, $this->all());
|
||||
|
||||
$this->emitTo(SslsList::class, '$refresh');
|
||||
|
||||
$this->dispatchBrowserEvent('created', true);
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.ssl.create-ssl');
|
||||
}
|
||||
}
|
46
app/Http/Livewire/Ssl/SslsList.php
Normal file
46
app/Http/Livewire/Ssl/SslsList.php
Normal file
@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Ssl;
|
||||
|
||||
use App\Models\Site;
|
||||
use App\Traits\HasToast;
|
||||
use App\Traits\RefreshComponentOnBroadcast;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class SslsList extends Component
|
||||
{
|
||||
use RefreshComponentOnBroadcast;
|
||||
use HasToast;
|
||||
|
||||
public Site $site;
|
||||
|
||||
public int $deleteId;
|
||||
|
||||
public function delete(): void
|
||||
{
|
||||
$ssl = $this->site->ssls()->where('id', $this->deleteId)->firstOrFail();
|
||||
|
||||
$ssl->remove();
|
||||
|
||||
$this->refreshComponent([]);
|
||||
|
||||
$this->dispatchBrowserEvent('confirmed', true);
|
||||
}
|
||||
|
||||
public function refreshComponent(array $data): void
|
||||
{
|
||||
if (isset($data['type']) && $data['type'] == 'deploy-ssl-failed') {
|
||||
$this->toast()->error(__('SSL creation failed!'));
|
||||
}
|
||||
|
||||
$this->emit('refreshComponent');
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.ssl.ssls-list', [
|
||||
'ssls' => $this->site->ssls,
|
||||
]);
|
||||
}
|
||||
}
|
18
app/Http/Livewire/UserDropdown.php
Normal file
18
app/Http/Livewire/UserDropdown.php
Normal file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire;
|
||||
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class UserDropdown extends Component
|
||||
{
|
||||
protected $listeners = [
|
||||
'$refresh',
|
||||
];
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.user-dropdown');
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user