From 2509406d1c1c80a17ff87f7b2f2a4958e3e831d3 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Tue, 12 Mar 2024 11:22:02 +0100 Subject: [PATCH] fix: startproxy event fix: add data to async remove processes --- .../CoolifyTask/PrepareCoolifyTask.php | 2 +- app/Actions/CoolifyTask/RunRemoteProcess.php | 18 ++++++++++++---- app/Actions/Proxy/StartProxy.php | 5 +++-- app/Data/CoolifyTaskArgs.php | 1 + app/Events/ProxyStarted.php | 16 ++++++++++++++ app/Jobs/CoolifyTask.php | 6 ++++-- app/Listeners/ProxyStartedNotification.php | 21 +++++++++++++++++++ app/Providers/EventServiceProvider.php | 8 ++++--- bootstrap/helpers/remoteProcess.php | 4 +++- .../views/livewire/server/proxy.blade.php | 5 ++++- 10 files changed, 72 insertions(+), 14 deletions(-) create mode 100644 app/Events/ProxyStarted.php create mode 100644 app/Listeners/ProxyStartedNotification.php diff --git a/app/Actions/CoolifyTask/PrepareCoolifyTask.php b/app/Actions/CoolifyTask/PrepareCoolifyTask.php index b5b5a8853..e6a549756 100644 --- a/app/Actions/CoolifyTask/PrepareCoolifyTask.php +++ b/app/Actions/CoolifyTask/PrepareCoolifyTask.php @@ -39,7 +39,7 @@ class PrepareCoolifyTask public function __invoke(): Activity { - $job = new CoolifyTask($this->activity, ignore_errors: $this->remoteProcessArgs->ignore_errors, call_event_on_finish: $this->remoteProcessArgs->call_event_on_finish); + $job = new CoolifyTask($this->activity, ignore_errors: $this->remoteProcessArgs->ignore_errors, call_event_on_finish: $this->remoteProcessArgs->call_event_on_finish, call_event_data: $this->remoteProcessArgs->call_event_data); dispatch($job); $this->activity->refresh(); return $this->activity; diff --git a/app/Actions/CoolifyTask/RunRemoteProcess.php b/app/Actions/CoolifyTask/RunRemoteProcess.php index 327d46c68..737b4babe 100644 --- a/app/Actions/CoolifyTask/RunRemoteProcess.php +++ b/app/Actions/CoolifyTask/RunRemoteProcess.php @@ -21,6 +21,8 @@ class RunRemoteProcess public $call_event_on_finish = null; + public $call_event_data = null; + protected $time_start; protected $current_time; @@ -34,7 +36,7 @@ class RunRemoteProcess /** * Create a new job instance. */ - public function __construct(Activity $activity, bool $hide_from_output = false, bool $ignore_errors = false, $call_event_on_finish = null) + public function __construct(Activity $activity, bool $hide_from_output = false, bool $ignore_errors = false, $call_event_on_finish = null, $call_event_data = null) { if ($activity->getExtraProperty('type') !== ActivityTypes::INLINE->value) { @@ -45,6 +47,7 @@ class RunRemoteProcess $this->hide_from_output = $hide_from_output; $this->ignore_errors = $ignore_errors; $this->call_event_on_finish = $call_event_on_finish; + $this->call_event_data = $call_event_data; } public static function decodeOutput(?Activity $activity = null): string @@ -111,9 +114,16 @@ class RunRemoteProcess } if ($this->call_event_on_finish) { try { - event(resolve("App\\Events\\$this->call_event_on_finish", [ - 'userId' => $this->activity->causer_id, - ])); + ray($this->call_event_data); + if ($this->call_event_data) { + event(resolve("App\\Events\\$this->call_event_on_finish", [ + "data" => $this->call_event_data, + ])); + } else { + event(resolve("App\\Events\\$this->call_event_on_finish", [ + 'userId' => $this->activity->causer_id, + ])); + } } catch (\Throwable $e) { ray($e); } diff --git a/app/Actions/Proxy/StartProxy.php b/app/Actions/Proxy/StartProxy.php index a781ab442..ab635fc65 100644 --- a/app/Actions/Proxy/StartProxy.php +++ b/app/Actions/Proxy/StartProxy.php @@ -2,7 +2,7 @@ namespace App\Actions\Proxy; -use App\Events\ProxyStatusChanged; +use App\Events\ProxyStarted; use App\Models\Server; use Illuminate\Support\Str; use Lorisleiva\Actions\Concerns\AsAction; @@ -54,13 +54,14 @@ class StartProxy } if ($async) { - $activity = remote_process($commands, $server); + $activity = remote_process($commands, $server, callEventOnFinish: 'ProxyStarted', callEventData: $server); return $activity; } else { instant_remote_process($commands, $server); $server->proxy->set('status', 'running'); $server->proxy->set('type', $proxyType); $server->save(); + ProxyStarted::dispatch($server); return 'OK'; } } catch (\Throwable $e) { diff --git a/app/Data/CoolifyTaskArgs.php b/app/Data/CoolifyTaskArgs.php index cc717561f..e1e43f2f0 100644 --- a/app/Data/CoolifyTaskArgs.php +++ b/app/Data/CoolifyTaskArgs.php @@ -21,6 +21,7 @@ class CoolifyTaskArgs extends Data public ?string $status = null , public bool $ignore_errors = false, public $call_event_on_finish = null, + public $call_event_data = null ) { if(is_null($status)){ $this->status = ProcessStatus::QUEUED->value; diff --git a/app/Events/ProxyStarted.php b/app/Events/ProxyStarted.php new file mode 100644 index 000000000..c77fe08b0 --- /dev/null +++ b/app/Events/ProxyStarted.php @@ -0,0 +1,16 @@ + $this->activity, 'ignore_errors' => $this->ignore_errors, - 'call_event_on_finish' => $this->call_event_on_finish + 'call_event_on_finish' => $this->call_event_on_finish, + 'call_event_data' => $this->call_event_data ]); $remote_process(); diff --git a/app/Listeners/ProxyStartedNotification.php b/app/Listeners/ProxyStartedNotification.php new file mode 100644 index 000000000..62131c22a --- /dev/null +++ b/app/Listeners/ProxyStartedNotification.php @@ -0,0 +1,21 @@ +server = data_get($event, 'server'); + $this->server->setupDefault404Redirect(); + $this->server->setupDynamicProxyConfiguration(); + } +} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index a9b4496b4..0e9be72d1 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -2,8 +2,10 @@ namespace App\Providers; +use App\Events\ProxyStarted; use App\Listeners\MaintenanceModeDisabledNotification; use App\Listeners\MaintenanceModeEnabledNotification; +use App\Listeners\ProxyStartedNotification; use Illuminate\Foundation\Events\MaintenanceModeDisabled; use Illuminate\Foundation\Events\MaintenanceModeEnabled; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; @@ -17,9 +19,9 @@ class EventServiceProvider extends ServiceProvider MaintenanceModeDisabled::class => [ MaintenanceModeDisabledNotification::class, ], - // Registered::class => [ - // SendEmailVerificationNotification::class, - // ], + ProxyStarted::class => [ + ProxyStartedNotification::class, + ], ]; public function boot(): void { diff --git a/bootstrap/helpers/remoteProcess.php b/bootstrap/helpers/remoteProcess.php index 13905391e..0aba82ea1 100644 --- a/bootstrap/helpers/remoteProcess.php +++ b/bootstrap/helpers/remoteProcess.php @@ -24,7 +24,8 @@ function remote_process( ?string $type_uuid = null, ?Model $model = null, bool $ignore_errors = false, - $callEventOnFinish = null + $callEventOnFinish = null, + $callEventData = null ): Activity { if (is_null($type)) { $type = ActivityTypes::INLINE->value; @@ -50,6 +51,7 @@ function remote_process( model: $model, ignore_errors: $ignore_errors, call_event_on_finish: $callEventOnFinish, + call_event_data: $callEventData, ), ])(); } diff --git a/resources/views/livewire/server/proxy.blade.php b/resources/views/livewire/server/proxy.blade.php index 60828ec3d..49bf654a6 100644 --- a/resources/views/livewire/server/proxy.blade.php +++ b/resources/views/livewire/server/proxy.blade.php @@ -13,7 +13,10 @@ Save -
Before switching proxies, please read + + Before switching proxies, please read this.
@if ($server->proxyType() === 'TRAEFIK_V2')
Traefik v2