fix: startproxy event
fix: add data to async remove processes
This commit is contained in:
parent
b3d15f91e4
commit
2509406d1c
@ -39,7 +39,7 @@ public function __construct(CoolifyTaskArgs $remoteProcessArgs)
|
|||||||
|
|
||||||
public function __invoke(): Activity
|
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);
|
dispatch($job);
|
||||||
$this->activity->refresh();
|
$this->activity->refresh();
|
||||||
return $this->activity;
|
return $this->activity;
|
||||||
|
@ -21,6 +21,8 @@ class RunRemoteProcess
|
|||||||
|
|
||||||
public $call_event_on_finish = null;
|
public $call_event_on_finish = null;
|
||||||
|
|
||||||
|
public $call_event_data = null;
|
||||||
|
|
||||||
protected $time_start;
|
protected $time_start;
|
||||||
|
|
||||||
protected $current_time;
|
protected $current_time;
|
||||||
@ -34,7 +36,7 @@ class RunRemoteProcess
|
|||||||
/**
|
/**
|
||||||
* Create a new job instance.
|
* 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) {
|
if ($activity->getExtraProperty('type') !== ActivityTypes::INLINE->value) {
|
||||||
@ -45,6 +47,7 @@ public function __construct(Activity $activity, bool $hide_from_output = false,
|
|||||||
$this->hide_from_output = $hide_from_output;
|
$this->hide_from_output = $hide_from_output;
|
||||||
$this->ignore_errors = $ignore_errors;
|
$this->ignore_errors = $ignore_errors;
|
||||||
$this->call_event_on_finish = $call_event_on_finish;
|
$this->call_event_on_finish = $call_event_on_finish;
|
||||||
|
$this->call_event_data = $call_event_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function decodeOutput(?Activity $activity = null): string
|
public static function decodeOutput(?Activity $activity = null): string
|
||||||
@ -111,9 +114,16 @@ public function __invoke(): ProcessResult
|
|||||||
}
|
}
|
||||||
if ($this->call_event_on_finish) {
|
if ($this->call_event_on_finish) {
|
||||||
try {
|
try {
|
||||||
event(resolve("App\\Events\\$this->call_event_on_finish", [
|
ray($this->call_event_data);
|
||||||
'userId' => $this->activity->causer_id,
|
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) {
|
} catch (\Throwable $e) {
|
||||||
ray($e);
|
ray($e);
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Actions\Proxy;
|
namespace App\Actions\Proxy;
|
||||||
|
|
||||||
use App\Events\ProxyStatusChanged;
|
use App\Events\ProxyStarted;
|
||||||
use App\Models\Server;
|
use App\Models\Server;
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
use Lorisleiva\Actions\Concerns\AsAction;
|
use Lorisleiva\Actions\Concerns\AsAction;
|
||||||
@ -54,13 +54,14 @@ public function handle(Server $server, bool $async = true): string|Activity
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($async) {
|
if ($async) {
|
||||||
$activity = remote_process($commands, $server);
|
$activity = remote_process($commands, $server, callEventOnFinish: 'ProxyStarted', callEventData: $server);
|
||||||
return $activity;
|
return $activity;
|
||||||
} else {
|
} else {
|
||||||
instant_remote_process($commands, $server);
|
instant_remote_process($commands, $server);
|
||||||
$server->proxy->set('status', 'running');
|
$server->proxy->set('status', 'running');
|
||||||
$server->proxy->set('type', $proxyType);
|
$server->proxy->set('type', $proxyType);
|
||||||
$server->save();
|
$server->save();
|
||||||
|
ProxyStarted::dispatch($server);
|
||||||
return 'OK';
|
return 'OK';
|
||||||
}
|
}
|
||||||
} catch (\Throwable $e) {
|
} catch (\Throwable $e) {
|
||||||
|
@ -21,6 +21,7 @@ public function __construct(
|
|||||||
public ?string $status = null ,
|
public ?string $status = null ,
|
||||||
public bool $ignore_errors = false,
|
public bool $ignore_errors = false,
|
||||||
public $call_event_on_finish = null,
|
public $call_event_on_finish = null,
|
||||||
|
public $call_event_data = null
|
||||||
) {
|
) {
|
||||||
if(is_null($status)){
|
if(is_null($status)){
|
||||||
$this->status = ProcessStatus::QUEUED->value;
|
$this->status = ProcessStatus::QUEUED->value;
|
||||||
|
16
app/Events/ProxyStarted.php
Normal file
16
app/Events/ProxyStarted.php
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
|
use App\Models\Server;
|
||||||
|
use Illuminate\Broadcasting\InteractsWithSockets;
|
||||||
|
use Illuminate\Foundation\Events\Dispatchable;
|
||||||
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
|
class ProxyStarted
|
||||||
|
{
|
||||||
|
use Dispatchable, InteractsWithSockets, SerializesModels;
|
||||||
|
public function __construct(public Server $server)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
@ -21,7 +21,8 @@ class CoolifyTask implements ShouldQueue, ShouldBeEncrypted
|
|||||||
public function __construct(
|
public function __construct(
|
||||||
public Activity $activity,
|
public Activity $activity,
|
||||||
public bool $ignore_errors = false,
|
public bool $ignore_errors = false,
|
||||||
public $call_event_on_finish = null
|
public $call_event_on_finish = null,
|
||||||
|
public $call_event_data = null
|
||||||
) {
|
) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -33,7 +34,8 @@ public function handle(): void
|
|||||||
$remote_process = resolve(RunRemoteProcess::class, [
|
$remote_process = resolve(RunRemoteProcess::class, [
|
||||||
'activity' => $this->activity,
|
'activity' => $this->activity,
|
||||||
'ignore_errors' => $this->ignore_errors,
|
'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();
|
$remote_process();
|
||||||
|
21
app/Listeners/ProxyStartedNotification.php
Normal file
21
app/Listeners/ProxyStartedNotification.php
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Listeners;
|
||||||
|
|
||||||
|
use App\Events\ProxyStarted;
|
||||||
|
use App\Models\Server;
|
||||||
|
|
||||||
|
class ProxyStartedNotification
|
||||||
|
{
|
||||||
|
public Server $server;
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public function handle(ProxyStarted $event): void
|
||||||
|
{
|
||||||
|
$this->server = data_get($event, 'server');
|
||||||
|
$this->server->setupDefault404Redirect();
|
||||||
|
$this->server->setupDynamicProxyConfiguration();
|
||||||
|
}
|
||||||
|
}
|
@ -2,8 +2,10 @@
|
|||||||
|
|
||||||
namespace App\Providers;
|
namespace App\Providers;
|
||||||
|
|
||||||
|
use App\Events\ProxyStarted;
|
||||||
use App\Listeners\MaintenanceModeDisabledNotification;
|
use App\Listeners\MaintenanceModeDisabledNotification;
|
||||||
use App\Listeners\MaintenanceModeEnabledNotification;
|
use App\Listeners\MaintenanceModeEnabledNotification;
|
||||||
|
use App\Listeners\ProxyStartedNotification;
|
||||||
use Illuminate\Foundation\Events\MaintenanceModeDisabled;
|
use Illuminate\Foundation\Events\MaintenanceModeDisabled;
|
||||||
use Illuminate\Foundation\Events\MaintenanceModeEnabled;
|
use Illuminate\Foundation\Events\MaintenanceModeEnabled;
|
||||||
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
|
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
|
||||||
@ -17,9 +19,9 @@ class EventServiceProvider extends ServiceProvider
|
|||||||
MaintenanceModeDisabled::class => [
|
MaintenanceModeDisabled::class => [
|
||||||
MaintenanceModeDisabledNotification::class,
|
MaintenanceModeDisabledNotification::class,
|
||||||
],
|
],
|
||||||
// Registered::class => [
|
ProxyStarted::class => [
|
||||||
// SendEmailVerificationNotification::class,
|
ProxyStartedNotification::class,
|
||||||
// ],
|
],
|
||||||
];
|
];
|
||||||
public function boot(): void
|
public function boot(): void
|
||||||
{
|
{
|
||||||
|
@ -24,7 +24,8 @@ function remote_process(
|
|||||||
?string $type_uuid = null,
|
?string $type_uuid = null,
|
||||||
?Model $model = null,
|
?Model $model = null,
|
||||||
bool $ignore_errors = false,
|
bool $ignore_errors = false,
|
||||||
$callEventOnFinish = null
|
$callEventOnFinish = null,
|
||||||
|
$callEventData = null
|
||||||
): Activity {
|
): Activity {
|
||||||
if (is_null($type)) {
|
if (is_null($type)) {
|
||||||
$type = ActivityTypes::INLINE->value;
|
$type = ActivityTypes::INLINE->value;
|
||||||
@ -50,6 +51,7 @@ function remote_process(
|
|||||||
model: $model,
|
model: $model,
|
||||||
ignore_errors: $ignore_errors,
|
ignore_errors: $ignore_errors,
|
||||||
call_event_on_finish: $callEventOnFinish,
|
call_event_on_finish: $callEventOnFinish,
|
||||||
|
call_event_data: $callEventData,
|
||||||
),
|
),
|
||||||
])();
|
])();
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,10 @@
|
|||||||
<x-forms.button type="submit">Save</x-forms.button>
|
<x-forms.button type="submit">Save</x-forms.button>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="pb-4 ">Before switching proxies, please read <a
|
<div class="pb-4 "> <svg class="inline-flex w-6 h-6 mr-2 text-warning" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path fill="currentColor"
|
||||||
|
d="M240.26 186.1L152.81 34.23a28.74 28.74 0 0 0-49.62 0L15.74 186.1a27.45 27.45 0 0 0 0 27.71A28.31 28.31 0 0 0 40.55 228h174.9a28.31 28.31 0 0 0 24.79-14.19a27.45 27.45 0 0 0 .02-27.71m-20.8 15.7a4.46 4.46 0 0 1-4 2.2H40.55a4.46 4.46 0 0 1-4-2.2a3.56 3.56 0 0 1 0-3.73L124 46.2a4.77 4.77 0 0 1 8 0l87.44 151.87a3.56 3.56 0 0 1 .02 3.73M116 136v-32a12 12 0 0 1 24 0v32a12 12 0 0 1-24 0m28 40a16 16 0 1 1-16-16a16 16 0 0 1 16 16" />
|
||||||
|
</svg>Before switching proxies, please read <a class="text-white underline"
|
||||||
href="https://coolify.io/docs/server/switching-proxies">this</a>.</div>
|
href="https://coolify.io/docs/server/switching-proxies">this</a>.</div>
|
||||||
@if ($server->proxyType() === 'TRAEFIK_V2')
|
@if ($server->proxyType() === 'TRAEFIK_V2')
|
||||||
<div class="pb-4">Traefik v2</div>
|
<div class="pb-4">Traefik v2</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user