This commit is contained in:
Andras Bacsai 2023-06-15 13:51:31 +02:00
parent f46493e885
commit 0d45d9980c
14 changed files with 32 additions and 48 deletions

View File

@ -12,7 +12,6 @@ class Form extends Component
public Server $server;
public $uptime;
public $dockerVersion;
public $dockerComposeVersion;
protected $rules = [
'server.name' => 'required|min:6',
@ -20,7 +19,7 @@ class Form extends Component
'server.ip' => 'required',
'server.user' => 'required',
'server.port' => 'required',
'server.settings.is_validated' => 'required',
'server.settings.is_reachable' => 'required',
'server.settings.is_part_of_swarm' => 'required'
];
public function mount()
@ -36,7 +35,10 @@ class Form extends Component
{
try {
$this->uptime = instant_remote_process(['uptime'], $this->server, false);
if (!$this->uptime) {
if ($this->uptime) {
$this->server->settings->is_reachable = true;
$this->server->settings->save();
} else {
$this->uptime = 'Server not reachable.';
throw new \Exception('Server not reachable.');
}
@ -44,15 +46,10 @@ class Form extends Component
if (!$this->dockerVersion) {
$this->dockerVersion = 'Not installed.';
} else {
$this->server->settings->is_docker_installed = true;
$this->server->settings->is_validated = true;
$this->server->settings->is_usable = true;
$this->server->settings->save();
$this->emit('serverValidated');
}
$this->dockerComposeVersion = instant_remote_process(['docker compose version|head -2|grep -i version'], $this->server, false);
if (!$this->dockerComposeVersion) {
$this->dockerComposeVersion = 'Not installed.';
}
} catch (\Exception $e) {
return general_error_handler(err: $e, that: $this);
}

View File

@ -29,7 +29,7 @@ class InstanceProxyCheckJob implements ShouldQueue
{
try {
$container_name = 'coolify-proxy';
$servers = Server::whereRelation('settings', 'is_validated', true)->where('extra_attributes->proxy_type', ProxyTypes::TRAEFIK_V2)->get();
$servers = Server::whereRelation('settings', 'is_reachable', true)->where('extra_attributes->proxy_type', ProxyTypes::TRAEFIK_V2)->get();
foreach ($servers as $server) {
$status = get_container_status(server: $server, container_id: $container_name);

View File

@ -65,7 +65,7 @@ class Server extends BaseModel
static public function validated()
{
return Server::ownedByCurrentTeam()->whereRelation('settings', 'is_validated', true);
return Server::ownedByCurrentTeam()->whereRelation('settings', 'is_reachable', true);
}
static public function destinationsByServer(string $server_id)

View File

@ -8,7 +8,7 @@ class ServerSetting extends Model
{
protected $fillable = [
'server_id',
'is_docker_installed',
'is_usable',
];
public function server()
{

View File

@ -50,7 +50,7 @@ function remote_process(
function save_private_key_for_server(Server $server)
{
if (data_get($server, 'privateKey.private_key') === null) {
$server->settings->is_validated = false;
$server->settings->is_reachable = false;
$server->settings->save();
throw new \Exception("Server {$server->name} does not have a private key");
}

View File

@ -16,8 +16,8 @@ return new class extends Migration
$table->boolean('is_part_of_swarm')->default(false);
$table->boolean('is_jump_server')->default(false);
$table->boolean('is_build_server')->default(false);
$table->boolean('is_validated')->default(false);
$table->boolean('is_docker_installed')->default(false);
$table->boolean('is_reachable')->default(false);
$table->boolean('is_usable')->default(false);
$table->foreignId('server_id');
$table->timestamps();
});

View File

@ -85,7 +85,7 @@ class ProductionSeeder extends Seeder
'proxy_status' => ProxyStatus::EXITED->value
]);
$server = Server::create($server_details);
$server->settings->is_validated = true;
$server->settings->is_reachable = true;
$server->settings->save();
}
if (StandaloneDocker::find(0) == null) {

View File

@ -15,12 +15,12 @@ class ServerSettingSeeder extends Seeder
{
$server_2 = Server::find(0)->load(['settings']);
$server_2->settings->is_build_server = true;
$server_2->settings->is_validated = true;
$server_2->settings->is_reachable = true;
$server_2->settings->save();
$server_3 = Server::find(1)->load(['settings']);
$server_3->settings->is_part_of_swarm = false;
$server_3->settings->is_validated = false;
$server_3->settings->is_reachable = false;
$server_3->settings->save();
}
}

View File

@ -79,15 +79,6 @@
}, 2000);
}
function changePasswordFieldType(id) {
const input = document.getElementById(id);
if (input.type === 'password') {
input.type = 'text';
} else {
input.type = 'password';
}
}
function copyToClipboard(text) {
navigator.clipboard.writeText(text);
Livewire.emit('message', 'Copied to clipboard.');
@ -108,18 +99,17 @@
if (message) Toaster.success(message)
})
</script>
@else
<script>
function changePasswordFieldType(id) {
const input = document.getElementById(id);
if (input.type === 'password') {
input.type = 'text';
} else {
input.type = 'password';
}
}
</script>
@endauth
<script>
function changePasswordFieldType(id) {
const input = document.getElementById(id);
if (input.type === 'password') {
input.type = 'text';
} else {
input.type = 'password';
}
}
</script>
</body>
</html>

View File

@ -9,7 +9,7 @@
Delete
</x-forms.button>
@endif
@if (!$server->settings->is_validated)
@if (!$server->settings->is_reachable)
<div class="w-full">
<x-forms.button isHighlighted wire:click.prevent='validateServer'>
Validate Server
@ -45,14 +45,14 @@
</div>
</div>
@if ($server->settings->is_validated)
@if ($server->settings->is_reachable)
<h3 class="pt-8 pb-4">Quick Actions</h3>
<div class="flex items-center gap-2">
<x-forms.button wire:click.prevent='validateServer'>
Check Server Details
</x-forms.button>
<x-forms.button wire:click.prevent='installDocker'>
@if ($server->settings->is_docker_installed)
@if ($server->settings->is_usable)
Reconfigure Docker Engine
@else
Install Docker Engine
@ -71,9 +71,6 @@
@isset($dockerVersion)
<p>Docker Engine {{ $dockerVersion }}</p>
@endisset
@isset($dockerComposeVersion)
<p>Compose: {{ $dockerComposeVersion }}</p>
@endisset
</div>
@endisset
</form>

View File

@ -1,7 +1,7 @@
<div x-data="{ stopProxy: false }">
<x-naked-modal show="stopProxy" action="stopProxy"
message='Are you sure you would like to stop the proxy? All resources will be unavailable.' />
@if ($server->settings->is_validated)
@if ($server->settings->is_reachable)
@if ($server->extra_attributes->proxy_type)
<div x-init="$wire.checkProxySettingsInSync">
<div wire:loading wire:target="checkProxySettingsInSync">

View File

@ -1,5 +1,5 @@
<div>
@if ($server->settings->is_validated)
@if ($server->settings->is_reachable)
@if ($server->extra_attributes->proxy_status === 'running')
<div class="flex gap-4">
<div class="group">

View File

@ -1,5 +1,5 @@
<div>
@if ($server->settings->is_validated)
@if ($server->settings->is_reachable)
<div wire:poll.10000ms="proxyStatus" x-init="$wire.proxyStatus">
@if ($server->extra_attributes->proxy_status === 'running')
<x-status.running />

View File

@ -7,7 +7,7 @@
href="{{ route('server.show', ['server_uuid' => data_get($server, 'uuid')]) }}">
<div class="group-hover:text-white">
<div>{{ $server->name }}</div>
@if (!$server->settings->is_validated)
@if (!$server->settings->is_reachable)
<div class="text-xs text-error">not validated</div>
@endif
</div>