From 46ec8eed64586b674e7e793ba8aed19566967da5 Mon Sep 17 00:00:00 2001
From: Andras Bacsai
Date: Tue, 15 Oct 2024 15:43:53 +0200
Subject: [PATCH] fix: generate sentinel url
---
app/Livewire/Server/Form.php | 2 ++
app/Models/Server.php | 16 ++++++++++++++++
...6_update_metrics_token_in_server_settings.php | 4 +++-
database/seeders/DatabaseSeeder.php | 2 +-
database/seeders/ProductionSeeder.php | 2 +-
...entinelTokenSeeder.php => SentinelSeeder.php} | 8 +++++++-
resources/views/livewire/server/form.blade.php | 3 +++
7 files changed, 33 insertions(+), 4 deletions(-)
rename database/seeders/{GenerateSentinelTokenSeeder.php => SentinelSeeder.php} (56%)
diff --git a/app/Livewire/Server/Form.php b/app/Livewire/Server/Form.php
index 48c7c0ae7..dadf9033d 100644
--- a/app/Livewire/Server/Form.php
+++ b/app/Livewire/Server/Form.php
@@ -60,6 +60,7 @@ public function getListeners()
'server.settings.sentinel_metrics_history_days' => 'required|integer|min:1',
'server.settings.sentinel_push_interval_seconds' => 'required|integer|min:10',
'wildcard_domain' => 'nullable|url',
+ 'server.settings.sentinel_custom_url' => 'nullable|url',
'server.settings.is_sentinel_enabled' => 'required|boolean',
'server.settings.server_timezone' => 'required|string|timezone',
'server.settings.force_docker_cleanup' => 'required|boolean',
@@ -88,6 +89,7 @@ public function getListeners()
'server.settings.sentinel_metrics_history_days' => 'Metrics History',
'server.settings.sentinel_push_interval_seconds' => 'Push Interval',
'server.settings.is_sentinel_enabled' => 'Server API',
+ 'server.settings.sentinel_custom_url' => 'Sentinel URL',
'server.settings.server_timezone' => 'Server Timezone',
'server.settings.delete_unused_volumes' => 'Delete Unused Volumes',
'server.settings.delete_unused_networks' => 'Delete Unused Networks',
diff --git a/app/Models/Server.php b/app/Models/Server.php
index aac3ddddf..5bcd5b9de 100644
--- a/app/Models/Server.php
+++ b/app/Models/Server.php
@@ -527,6 +527,22 @@ public function forceDisableServer()
Storage::disk('ssh-mux')->delete($this->muxFilename());
}
+ public function generateSentinelUrl() {
+ if ($this->isLocalhost()) {
+ return 'http://host.docker.internal:8888';
+ }
+ $settings = InstanceSettings::get();
+ if ($settings->fqdn) {
+ return $settings->fqdn;
+ }
+ if ($settings->ipv4) {
+ return $settings->ipv4 . ':8888';
+ }
+ if ($settings->ipv6) {
+ return $settings->ipv6 . ':8888';
+ }
+ return null;
+ }
public function generateSentinelToken()
{
$data = [
diff --git a/database/migrations/2024_10_14_090416_update_metrics_token_in_server_settings.php b/database/migrations/2024_10_14_090416_update_metrics_token_in_server_settings.php
index 051457600..737dfd5ee 100644
--- a/database/migrations/2024_10_14_090416_update_metrics_token_in_server_settings.php
+++ b/database/migrations/2024_10_14_090416_update_metrics_token_in_server_settings.php
@@ -22,6 +22,7 @@ public function up(): void
$table->integer('sentinel_metrics_refresh_rate_seconds')->default(10);
$table->integer('sentinel_metrics_history_days')->default(7);
$table->integer('sentinel_push_interval_seconds')->default(60);
+ $table->string('sentinel_custom_url')->nullable();
});
Schema::table('servers', function (Blueprint $table) {
$table->dateTime('sentinel_updated_at')->default(now());
@@ -39,11 +40,12 @@ public function down(): void
$table->integer('metrics_history_days')->default(30);
$table->boolean('is_server_api_enabled')->default(false);
+ $table->dropColumn('is_sentinel_enabled');
$table->dropColumn('sentinel_token');
$table->dropColumn('sentinel_metrics_refresh_rate_seconds');
$table->dropColumn('sentinel_metrics_history_days');
$table->dropColumn('sentinel_push_interval_seconds');
- $table->dropColumn('is_sentinel_enabled');
+ $table->dropColumn('sentinel_custom_url');
});
Schema::table('servers', function (Blueprint $table) {
$table->dropColumn('sentinel_updated_at');
diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php
index 1888f0440..cec05c8fe 100644
--- a/database/seeders/DatabaseSeeder.php
+++ b/database/seeders/DatabaseSeeder.php
@@ -26,7 +26,7 @@ public function run(): void
S3StorageSeeder::class,
StandalonePostgresqlSeeder::class,
OauthSettingSeeder::class,
- GenerateSentinelTokenSeeder::class,
+ SentinelSeeder::class,
]);
}
}
diff --git a/database/seeders/ProductionSeeder.php b/database/seeders/ProductionSeeder.php
index a1a025e8d..90b9d46ff 100644
--- a/database/seeders/ProductionSeeder.php
+++ b/database/seeders/ProductionSeeder.php
@@ -186,7 +186,7 @@ public function run(): void
$this->call(OauthSettingSeeder::class);
$this->call(PopulateSshKeysDirectorySeeder::class);
- $this->call(GenerateSentinelTokenSeeder::class);
+ $this->call(SentinelSeeder::class);
}
}
diff --git a/database/seeders/GenerateSentinelTokenSeeder.php b/database/seeders/SentinelSeeder.php
similarity index 56%
rename from database/seeders/GenerateSentinelTokenSeeder.php
rename to database/seeders/SentinelSeeder.php
index d915f7259..3f719cf6e 100644
--- a/database/seeders/GenerateSentinelTokenSeeder.php
+++ b/database/seeders/SentinelSeeder.php
@@ -5,7 +5,7 @@
use App\Models\Server;
use Illuminate\Database\Seeder;
-class GenerateSentinelTokenSeeder extends Seeder
+class SentinelSeeder extends Seeder
{
public function run()
{
@@ -15,6 +15,12 @@ public function run()
if (str($server->settings->sentinel_token)->isEmpty()) {
$server->generateSentinelToken();
}
+ if (str($server->settings->sentinel_custom_url)->isEmpty()) {
+ $url = $server->generateSentinelUrl();
+ logger()->info("Setting sentinel custom url for server {$server->id} to {$url}");
+ $server->settings->sentinel_custom_url = $url;
+ $server->settings->save();
+ }
}
});
} catch (\Throwable $e) {
diff --git a/resources/views/livewire/server/form.blade.php b/resources/views/livewire/server/form.blade.php
index f05ec0dc4..43d982b6c 100644
--- a/resources/views/livewire/server/form.blade.php
+++ b/resources/views/livewire/server/form.blade.php
@@ -305,6 +305,9 @@ functional issues.
+
+
Regenerate