From 11ba7ee34ff7b7ab392965991a7764803448dba8 Mon Sep 17 00:00:00 2001 From: nexxo Date: Sat, 1 Aug 2026 14:12:03 +0200 Subject: [PATCH] Hostdetailseite: die Adresse steht neben den IPs und ist ein Klick zur Proxmox-Oberflaeche --- app/Livewire/Admin/HostDetail.php | 2 ++ lang/de/hosts.php | 2 ++ lang/en/hosts.php | 2 ++ .../views/livewire/admin/host-detail.blade.php | 18 ++++++++++++++++++ tests/Feature/Admin/HostNamingTest.php | 16 ++++++++++++++++ 5 files changed, 40 insertions(+) diff --git a/app/Livewire/Admin/HostDetail.php b/app/Livewire/Admin/HostDetail.php index c642418..9d5ba73 100644 --- a/app/Livewire/Admin/HostDetail.php +++ b/app/Livewire/Admin/HostDetail.php @@ -7,6 +7,7 @@ use App\Models\ProvisioningRun; use App\Provisioning\Jobs\AdvanceRunJob; use App\Provisioning\Jobs\CollectHostLoad; use App\Services\Proxmox\HostLoadSeries; +use App\Support\HostName; use App\Support\PveVersion; use Illuminate\Support\Collection; use Livewire\Attributes\Layout; @@ -159,6 +160,7 @@ class HostDetail extends Component 'netout' => $this->latest($load['netout']), ], 'version' => PveVersion::parse($this->host->pve_version), + 'fqdn' => HostName::fqdn($this->host->name), ]); } } diff --git a/lang/de/hosts.php b/lang/de/hosts.php index bc621ae..e0658ed 100644 --- a/lang/de/hosts.php +++ b/lang/de/hosts.php @@ -91,6 +91,8 @@ return [ 'build' => 'Bau', 'onboarding_done' => 'Übernahme abgeschlossen', 'node' => 'Node', + 'fqdn' => 'Adresse', + 'fqdn_hint' => 'Proxmox-Oberfläche — antwortet nur aus dem WireGuard-Tunnel.', 'instances' => 'Instanzen', 'hosted' => 'Gehostete Instanzen', 'no_instances' => 'Auf diesem Host laufen noch keine Instanzen.', diff --git a/lang/en/hosts.php b/lang/en/hosts.php index c54d004..138bdbf 100644 --- a/lang/en/hosts.php +++ b/lang/en/hosts.php @@ -91,6 +91,8 @@ return [ 'storage' => 'Storage', 'compute' => 'Compute', 'node' => 'Node', + 'fqdn' => 'Address', + 'fqdn_hint' => 'Proxmox web UI — answers from inside the WireGuard tunnel only.', 'instances' => 'Instances', 'hosted' => 'Hosted instances', 'no_instances' => 'No instances running on this host yet.', diff --git a/resources/views/livewire/admin/host-detail.blade.php b/resources/views/livewire/admin/host-detail.blade.php index 6ae4320..b39d4d1 100644 --- a/resources/views/livewire/admin/host-detail.blade.php +++ b/resources/views/livewire/admin/host-detail.blade.php @@ -161,6 +161,24 @@
{{ __('hosts.unknown') }}
@endif + {{-- Die Adresse, nicht bloß der Name: ein Klick landet auf der + Proxmox-Oberfläche des Hosts. Sie antwortet nur aus dem Tunnel + — SecureHostFirewall lässt 8006 ausschließlich aus dem + Management-Subnetz zu, und der Name löst nur dort auf. + + col-span-full statt eines sechsten schmalen Feldes: die Tafel + hatte sechs Einträge in sechs Spalten, keine Lücke für einen + siebten. Eine siebte schmale Spalte hätte die Adresse mitten im + Domainnamen abgeschnitten — genau die Zeichenkette, die hier + lesbar sein muss. Eine eigene, volle Zeile lässt sie stehen. --}} +
+
{{ __('hosts.detail.fqdn') }}
+
+ {{ $fqdn }} +
+
{{-- Die Reserve gehört hierher und nicht auf eine Kachel: die Kacheln diff --git a/tests/Feature/Admin/HostNamingTest.php b/tests/Feature/Admin/HostNamingTest.php index 9dbe384..d9578a0 100644 --- a/tests/Feature/Admin/HostNamingTest.php +++ b/tests/Feature/Admin/HostNamingTest.php @@ -2,6 +2,7 @@ use App\Actions\StartHostOnboarding; use App\Livewire\Admin\HostCreate; +use App\Livewire\Admin\HostDetail; use App\Models\Datacenter; use App\Models\Host; use App\Support\HostName; @@ -140,3 +141,18 @@ it('nennt den Host im DNS so, wie die Konsole ihn nennt', function () { ->and(HostTakeoverCommand::fqdnFor($host)) ->toBe(HostName::fqdn($host->name)); }); + +it('zeigt auf der Detailseite die IP und die Domain', function () { + $host = onboard(); + $host->update(['status' => 'active', 'wg_ip' => '10.66.0.100', 'public_ip' => '203.0.113.200']); + + Livewire::actingAs(admin(), 'operator') + ->test(HostDetail::class, ['host' => $host]) + ->assertSee('203.0.113.200') + ->assertSee('10.66.0.100') + // Der Name allein hilft nicht, wenn niemand die Adresse dazu kennt. + // 8006 ist die Proxmox-Oberfläche; SecureHostFirewall lässt sie nur aus + // dem Tunnel zu, und der hostsdir-Eintrag löst nur dort auf. + ->assertSee('fsn-01.node.clupilot.com') + ->assertSee('https://fsn-01.node.clupilot.com:8006', false); +});