fix: generate sentinel url
This commit is contained in:
@@ -60,6 +60,7 @@ class Form extends Component
|
|||||||
'server.settings.sentinel_metrics_history_days' => 'required|integer|min:1',
|
'server.settings.sentinel_metrics_history_days' => 'required|integer|min:1',
|
||||||
'server.settings.sentinel_push_interval_seconds' => 'required|integer|min:10',
|
'server.settings.sentinel_push_interval_seconds' => 'required|integer|min:10',
|
||||||
'wildcard_domain' => 'nullable|url',
|
'wildcard_domain' => 'nullable|url',
|
||||||
|
'server.settings.sentinel_custom_url' => 'nullable|url',
|
||||||
'server.settings.is_sentinel_enabled' => 'required|boolean',
|
'server.settings.is_sentinel_enabled' => 'required|boolean',
|
||||||
'server.settings.server_timezone' => 'required|string|timezone',
|
'server.settings.server_timezone' => 'required|string|timezone',
|
||||||
'server.settings.force_docker_cleanup' => 'required|boolean',
|
'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_metrics_history_days' => 'Metrics History',
|
||||||
'server.settings.sentinel_push_interval_seconds' => 'Push Interval',
|
'server.settings.sentinel_push_interval_seconds' => 'Push Interval',
|
||||||
'server.settings.is_sentinel_enabled' => 'Server API',
|
'server.settings.is_sentinel_enabled' => 'Server API',
|
||||||
|
'server.settings.sentinel_custom_url' => 'Sentinel URL',
|
||||||
'server.settings.server_timezone' => 'Server Timezone',
|
'server.settings.server_timezone' => 'Server Timezone',
|
||||||
'server.settings.delete_unused_volumes' => 'Delete Unused Volumes',
|
'server.settings.delete_unused_volumes' => 'Delete Unused Volumes',
|
||||||
'server.settings.delete_unused_networks' => 'Delete Unused Networks',
|
'server.settings.delete_unused_networks' => 'Delete Unused Networks',
|
||||||
|
@@ -527,6 +527,22 @@ $schema://$host {
|
|||||||
Storage::disk('ssh-mux')->delete($this->muxFilename());
|
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()
|
public function generateSentinelToken()
|
||||||
{
|
{
|
||||||
$data = [
|
$data = [
|
||||||
|
@@ -22,6 +22,7 @@ return new class extends Migration
|
|||||||
$table->integer('sentinel_metrics_refresh_rate_seconds')->default(10);
|
$table->integer('sentinel_metrics_refresh_rate_seconds')->default(10);
|
||||||
$table->integer('sentinel_metrics_history_days')->default(7);
|
$table->integer('sentinel_metrics_history_days')->default(7);
|
||||||
$table->integer('sentinel_push_interval_seconds')->default(60);
|
$table->integer('sentinel_push_interval_seconds')->default(60);
|
||||||
|
$table->string('sentinel_custom_url')->nullable();
|
||||||
});
|
});
|
||||||
Schema::table('servers', function (Blueprint $table) {
|
Schema::table('servers', function (Blueprint $table) {
|
||||||
$table->dateTime('sentinel_updated_at')->default(now());
|
$table->dateTime('sentinel_updated_at')->default(now());
|
||||||
@@ -39,11 +40,12 @@ return new class extends Migration
|
|||||||
$table->integer('metrics_history_days')->default(30);
|
$table->integer('metrics_history_days')->default(30);
|
||||||
$table->boolean('is_server_api_enabled')->default(false);
|
$table->boolean('is_server_api_enabled')->default(false);
|
||||||
|
|
||||||
|
$table->dropColumn('is_sentinel_enabled');
|
||||||
$table->dropColumn('sentinel_token');
|
$table->dropColumn('sentinel_token');
|
||||||
$table->dropColumn('sentinel_metrics_refresh_rate_seconds');
|
$table->dropColumn('sentinel_metrics_refresh_rate_seconds');
|
||||||
$table->dropColumn('sentinel_metrics_history_days');
|
$table->dropColumn('sentinel_metrics_history_days');
|
||||||
$table->dropColumn('sentinel_push_interval_seconds');
|
$table->dropColumn('sentinel_push_interval_seconds');
|
||||||
$table->dropColumn('is_sentinel_enabled');
|
$table->dropColumn('sentinel_custom_url');
|
||||||
});
|
});
|
||||||
Schema::table('servers', function (Blueprint $table) {
|
Schema::table('servers', function (Blueprint $table) {
|
||||||
$table->dropColumn('sentinel_updated_at');
|
$table->dropColumn('sentinel_updated_at');
|
||||||
|
@@ -26,7 +26,7 @@ class DatabaseSeeder extends Seeder
|
|||||||
S3StorageSeeder::class,
|
S3StorageSeeder::class,
|
||||||
StandalonePostgresqlSeeder::class,
|
StandalonePostgresqlSeeder::class,
|
||||||
OauthSettingSeeder::class,
|
OauthSettingSeeder::class,
|
||||||
GenerateSentinelTokenSeeder::class,
|
SentinelSeeder::class,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -186,7 +186,7 @@ uZx9iFkCELtxrh31QJ68AAAAEXNhaWxANzZmZjY2ZDJlMmRkAQIDBA==
|
|||||||
|
|
||||||
$this->call(OauthSettingSeeder::class);
|
$this->call(OauthSettingSeeder::class);
|
||||||
$this->call(PopulateSshKeysDirectorySeeder::class);
|
$this->call(PopulateSshKeysDirectorySeeder::class);
|
||||||
$this->call(GenerateSentinelTokenSeeder::class);
|
$this->call(SentinelSeeder::class);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -5,7 +5,7 @@ namespace Database\Seeders;
|
|||||||
use App\Models\Server;
|
use App\Models\Server;
|
||||||
use Illuminate\Database\Seeder;
|
use Illuminate\Database\Seeder;
|
||||||
|
|
||||||
class GenerateSentinelTokenSeeder extends Seeder
|
class SentinelSeeder extends Seeder
|
||||||
{
|
{
|
||||||
public function run()
|
public function run()
|
||||||
{
|
{
|
||||||
@@ -15,6 +15,12 @@ class GenerateSentinelTokenSeeder extends Seeder
|
|||||||
if (str($server->settings->sentinel_token)->isEmpty()) {
|
if (str($server->settings->sentinel_token)->isEmpty()) {
|
||||||
$server->generateSentinelToken();
|
$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) {
|
} catch (\Throwable $e) {
|
@@ -305,6 +305,9 @@
|
|||||||
<div class="flex flex-wrap gap-2 sm:flex-nowrap items-end">
|
<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"
|
<x-forms.input type="password" id="server.settings.sentinel_token" label="Sentinel token"
|
||||||
required helper="Token for Sentinel." />
|
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>
|
<x-forms.button wire:click="regenerateSentinelToken">Regenerate</x-forms.button>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-col gap-2">
|
<div class="flex flex-col gap-2">
|
||||||
|
Reference in New Issue
Block a user