From 55b9485fcf5f1a73373382f1afe147e2d58332d2 Mon Sep 17 00:00:00 2001 From: "Harry (hjbdev)" Date: Tue, 8 Apr 2025 20:23:16 +0100 Subject: [PATCH] Sync wireguard rules uses internal jumps if they are available --- app/Actions/Servers/SyncWireguardRules.php | 9 +++++++-- app/Models/Provider.php | 1 + database/seeders/DatabaseSeeder.php | 2 +- resources/js/pages/Applications/Index.vue | 2 +- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/app/Actions/Servers/SyncWireguardRules.php b/app/Actions/Servers/SyncWireguardRules.php index 1b2b4cf..ecb536c 100644 --- a/app/Actions/Servers/SyncWireguardRules.php +++ b/app/Actions/Servers/SyncWireguardRules.php @@ -27,11 +27,16 @@ class SyncWireguardRules $output = $result->getOutput(); $commands = collect(); - $server->organisation->servers()->where('id', '!=', $server->id)->each(function ($organisationServer) use (&$commands, $output) { + $server->organisation->servers()->where('id', '!=', $server->id)->each(function ($organisationServer) use (&$commands, $output, $server) { if (Str::contains($output, $organisationServer->internal_public_key)) { $commands->push("wg set wg0 peer {$organisationServer->internal_public_key} remove"); } - $commands->push("wg set wg0 peer {$organisationServer->internal_public_key} allowed-ips {$organisationServer->internal_ip}/32"); + + if ($organisationServer->external_network_id === $server->external_network_id) { + $commands->push("wg set wg0 peer {$organisationServer->internal_public_key} allowed-ips {$organisationServer->internal_ip}/32"); + } else { + $commands->push("wg set wg0 peer {$organisationServer->internal_public_key} allowed-ips {$organisationServer->ipv4}/32,{$organisationServer->ipv6}/128"); + } }); $result = $ssh->execute($commands->toArray()); diff --git a/app/Models/Provider.php b/app/Models/Provider.php index 2b9c386..e74a962 100644 --- a/app/Models/Provider.php +++ b/app/Models/Provider.php @@ -15,6 +15,7 @@ class Provider extends Model use HasFactory; protected $guarded = []; + protected $hidden = ['token']; protected function casts(): array diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index aab5bb6..f7c2123 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -43,7 +43,7 @@ class DatabaseSeeder extends Seeder 'name' => 'keystone', 'external_id' => 'net-12345', 'provider_id' => $provider->id, - 'ip_range' => fake()->ipv4() . '/24', + 'ip_range' => fake()->ipv4().'/24', ]); $servers = Server::factory(40) diff --git a/resources/js/pages/Applications/Index.vue b/resources/js/pages/Applications/Index.vue index 4bc8135..79c8915 100644 --- a/resources/js/pages/Applications/Index.vue +++ b/resources/js/pages/Applications/Index.vue @@ -35,7 +35,7 @@ const props = defineProps({
- + {{ application.name }}