fix: proxy switch

This commit is contained in:
Andras Bacsai 2024-03-12 12:30:40 +01:00
parent bcc61b0d8b
commit 1835a91467
6 changed files with 133 additions and 134 deletions

View File

@ -114,7 +114,6 @@ class RunRemoteProcess
} }
if ($this->call_event_on_finish) { if ($this->call_event_on_finish) {
try { try {
ray($this->call_event_data);
if ($this->call_event_data) { if ($this->call_event_data) {
event(resolve("App\\Events\\$this->call_event_on_finish", [ event(resolve("App\\Events\\$this->call_event_on_finish", [
"data" => $this->call_event_data, "data" => $this->call_event_data,

View File

@ -2,7 +2,6 @@
namespace App\Events; namespace App\Events;
use App\Models\Server;
use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
@ -10,7 +9,8 @@ use Illuminate\Queue\SerializesModels;
class ProxyStarted class ProxyStarted
{ {
use Dispatchable, InteractsWithSockets, SerializesModels; use Dispatchable, InteractsWithSockets, SerializesModels;
public function __construct(public Server $server) public function __construct(public $data)
{ {
} }
} }

View File

@ -14,7 +14,7 @@ class ProxyStartedNotification
public function handle(ProxyStarted $event): void public function handle(ProxyStarted $event): void
{ {
$this->server = data_get($event, 'server'); $this->server = data_get($event, 'data');
$this->server->setupDefault404Redirect(); $this->server->setupDefault404Redirect();
$this->server->setupDynamicProxyConfiguration(); $this->server->setupDynamicProxyConfiguration();
} }

View File

@ -11,7 +11,15 @@ class DynamicConfigurations extends Component
public ?Server $server = null; public ?Server $server = null;
public $parameters = []; public $parameters = [];
public Collection $contents; public Collection $contents;
protected $listeners = ['loadDynamicConfigurations', 'refresh' => '$refresh']; public function getListeners()
{
$teamId = auth()->user()->currentTeam()->id;
return [
"echo-private:team.{$teamId},ProxyStatusChanged" => 'loadDynamicConfigurations',
'loadDynamicConfigurations',
'refresh' => '$refresh'
];
}
protected $rules = [ protected $rules = [
'contents.*' => 'nullable|string', 'contents.*' => 'nullable|string',
]; ];
@ -24,6 +32,7 @@ class DynamicConfigurations extends Component
$files = $files->sort(); $files = $files->sort();
if ($files->contains('coolify.yaml')) { if ($files->contains('coolify.yaml')) {
$files = $files->filter(fn ($file) => $file !== 'coolify.yaml')->prepend('coolify.yaml'); $files = $files->filter(fn ($file) => $file !== 'coolify.yaml')->prepend('coolify.yaml');
$files = $files->filter(fn ($file) => $file !== 'Caddyfile')->prepend('Caddyfile');
} }
$contents = collect([]); $contents = collect([]);
foreach ($files as $file) { foreach ($files as $file) {
@ -31,6 +40,7 @@ class DynamicConfigurations extends Component
$contents[$without_extension] = instant_remote_process(["cat {$proxy_path}/dynamic/{$file}"], $this->server); $contents[$without_extension] = instant_remote_process(["cat {$proxy_path}/dynamic/{$file}"], $this->server);
} }
$this->contents = $contents; $this->contents = $contents;
$this->dispatch('refresh');
} }
public function mount() public function mount()
{ {

View File

@ -75,12 +75,7 @@ class Configuration extends Component
$this->settings->save(); $this->settings->save();
$this->server = Server::findOrFail(0); $this->server = Server::findOrFail(0);
$this->setup_instance_fqdn(); $this->server->setupDynamicProxyConfiguration();
$this->dispatch('success', 'Instance settings updated successfully!'); $this->dispatch('success', 'Instance settings updated successfully!');
} }
private function setup_instance_fqdn()
{
$this->server->setupDynamicProxyConfiguration();
}
} }

View File

@ -3,7 +3,6 @@
namespace App\Models; namespace App\Models;
use App\Actions\Server\InstallDocker; use App\Actions\Server\InstallDocker;
use App\Enums\ProxyStatus;
use App\Enums\ProxyTypes; use App\Enums\ProxyTypes;
use App\Notifications\Server\Revived; use App\Notifications\Server\Revived;
use App\Notifications\Server\Unreachable; use App\Notifications\Server\Unreachable;
@ -125,7 +124,6 @@ class Server extends BaseModel
$dynamic_conf_path = $this->proxyPath() . "/dynamic"; $dynamic_conf_path = $this->proxyPath() . "/dynamic";
$proxy_type = $this->proxyType(); $proxy_type = $this->proxyType();
$redirect_url = $this->proxy->redirect_url; $redirect_url = $this->proxy->redirect_url;
if ($proxy_type === 'TRAEFIK_V2') { if ($proxy_type === 'TRAEFIK_V2') {
$default_redirect_file = "$dynamic_conf_path/default_redirect_404.yaml"; $default_redirect_file = "$dynamic_conf_path/default_redirect_404.yaml";
} else if ($proxy_type === 'CADDY') { } else if ($proxy_type === 'CADDY') {
@ -199,7 +197,6 @@ class Server extends BaseModel
$conf = ":80, :443 { $conf = ":80, :443 {
redir $redirect_url redir $redirect_url
}"; }";
ray($conf);
$conf = $conf =
"# This file is automatically generated by Coolify.\n" . "# This file is automatically generated by Coolify.\n" .
"# Do not edit it manually (only if you know what are you doing).\n\n" . "# Do not edit it manually (only if you know what are you doing).\n\n" .
@ -224,7 +221,6 @@ ray($conf);
{ {
$settings = InstanceSettings::get(); $settings = InstanceSettings::get();
$dynamic_config_path = $this->proxyPath() . "/dynamic"; $dynamic_config_path = $this->proxyPath() . "/dynamic";
if ($this) {
if ($this->proxyType() === 'TRAEFIK_V2') { if ($this->proxyType() === 'TRAEFIK_V2') {
$file = "$dynamic_config_path/coolify.yaml"; $file = "$dynamic_config_path/coolify.yaml";
if (empty($settings->fqdn)) { if (empty($settings->fqdn)) {
@ -370,7 +366,6 @@ $schema://$host {
} }
} }
} }
}
public function reloadCaddy() public function reloadCaddy()
{ {
return instant_remote_process([ return instant_remote_process([
@ -396,16 +391,16 @@ $schema://$host {
} }
public function proxyType() public function proxyType()
{ {
$proxyType = $this->proxy->get('type'); // $proxyType = $this->proxy->get('type');
if ($proxyType === ProxyTypes::NONE->value) { // if ($proxyType === ProxyTypes::NONE->value) {
return $proxyType; // return $proxyType;
} // }
// if (is_null($proxyType)) { // if (is_null($proxyType)) {
// $this->proxy->type = ProxyTypes::TRAEFIK_V2->value; // $this->proxy->type = ProxyTypes::TRAEFIK_V2->value;
// $this->proxy->status = ProxyStatus::EXITED->value; // $this->proxy->status = ProxyStatus::EXITED->value;
// $this->save(); // $this->save();
// } // }
return $this->proxy->get('type'); return data_get($this->proxy, 'type.type');
} }
public function scopeWithProxy(): Builder public function scopeWithProxy(): Builder
{ {