fix: generate sentinel url

This commit is contained in:
Andras Bacsai
2024-10-15 15:43:53 +02:00
parent 73923a0207
commit 46ec8eed64
7 changed files with 33 additions and 4 deletions

View File

@@ -60,6 +60,7 @@ class Form extends Component
'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 @@ class Form extends Component
'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',

View File

@@ -527,6 +527,22 @@ $schema://$host {
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 = [

View File

@@ -22,6 +22,7 @@ return new class extends Migration
$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 @@ return new class extends Migration
$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');

View File

@@ -26,7 +26,7 @@ class DatabaseSeeder extends Seeder
S3StorageSeeder::class,
StandalonePostgresqlSeeder::class,
OauthSettingSeeder::class,
GenerateSentinelTokenSeeder::class,
SentinelSeeder::class,
]);
}
}

View File

@@ -186,7 +186,7 @@ uZx9iFkCELtxrh31QJ68AAAAEXNhaWxANzZmZjY2ZDJlMmRkAQIDBA==
$this->call(OauthSettingSeeder::class);
$this->call(PopulateSshKeysDirectorySeeder::class);
$this->call(GenerateSentinelTokenSeeder::class);
$this->call(SentinelSeeder::class);
}
}

View File

@@ -5,7 +5,7 @@ namespace Database\Seeders;
use App\Models\Server;
use Illuminate\Database\Seeder;
class GenerateSentinelTokenSeeder extends Seeder
class SentinelSeeder extends Seeder
{
public function run()
{
@@ -15,6 +15,12 @@ class GenerateSentinelTokenSeeder extends Seeder
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) {

View File

@@ -305,6 +305,9 @@
<div class="flex flex-wrap gap-2 sm:flex-nowrap items-end">
<x-forms.input type="password" id="server.settings.sentinel_token" label="Sentinel token"
required helper="Token for Sentinel." />
<x-forms.input id="server.settings.sentinel_custom_url" label="Sentinel custom URL"
helper="Custom URL for Sentinel." />
<x-forms.button wire:click="regenerateSentinelToken">Regenerate</x-forms.button>
</div>
<div class="flex flex-col gap-2">