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) {
try {
ray($this->call_event_data);
if ($this->call_event_data) {
event(resolve("App\\Events\\$this->call_event_on_finish", [
"data" => $this->call_event_data,

View File

@ -2,7 +2,6 @@
namespace App\Events;
use App\Models\Server;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
@ -10,7 +9,8 @@ use Illuminate\Queue\SerializesModels;
class ProxyStarted
{
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
{
$this->server = data_get($event, 'server');
$this->server = data_get($event, 'data');
$this->server->setupDefault404Redirect();
$this->server->setupDynamicProxyConfiguration();
}

View File

@ -11,7 +11,15 @@ class DynamicConfigurations extends Component
public ?Server $server = null;
public $parameters = [];
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 = [
'contents.*' => 'nullable|string',
];
@ -24,6 +32,7 @@ class DynamicConfigurations extends Component
$files = $files->sort();
if ($files->contains('coolify.yaml')) {
$files = $files->filter(fn ($file) => $file !== 'coolify.yaml')->prepend('coolify.yaml');
$files = $files->filter(fn ($file) => $file !== 'Caddyfile')->prepend('Caddyfile');
}
$contents = collect([]);
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);
}
$this->contents = $contents;
$this->dispatch('refresh');
}
public function mount()
{

View File

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

View File

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