From 23ddded61e9262d527812810fb97a200bf8b6677 Mon Sep 17 00:00:00 2001 From: Boy132 Date: Sun, 6 Jul 2025 22:42:59 +0200 Subject: [PATCH] Replace `gethostbynamel` with `dns_get_record` (#1479) --- .../NodeResource/Pages/CreateNode.php | 12 +++++------- .../Resources/NodeResource/Pages/EditNode.php | 18 ++++++++---------- app/helpers.php | 17 +++++++++++++++++ 3 files changed, 30 insertions(+), 17 deletions(-) diff --git a/app/Filament/Admin/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Admin/Resources/NodeResource/Pages/CreateNode.php index 729a09bdb..f81327ba2 100644 --- a/app/Filament/Admin/Resources/NodeResource/Pages/CreateNode.php +++ b/app/Filament/Admin/Resources/NodeResource/Pages/CreateNode.php @@ -89,16 +89,14 @@ class CreateNode extends CreateRecord return; } - $validRecords = gethostbynamel($state); - if ($validRecords) { + $ip = get_ip_from_hostname($state); + if ($ip) { $set('dns', true); - $set('ip', collect($validRecords)->first()); - - return; + $set('ip', $ip); + } else { + $set('dns', false); } - - $set('dns', false); }) ->maxLength(255), diff --git a/app/Filament/Admin/Resources/NodeResource/Pages/EditNode.php b/app/Filament/Admin/Resources/NodeResource/Pages/EditNode.php index bf511df87..cebae0731 100644 --- a/app/Filament/Admin/Resources/NodeResource/Pages/EditNode.php +++ b/app/Filament/Admin/Resources/NodeResource/Pages/EditNode.php @@ -154,16 +154,14 @@ class EditNode extends EditRecord return; } - $validRecords = gethostbynamel($state); - if ($validRecords) { + $ip = get_ip_from_hostname($state); + if ($ip) { $set('dns', true); - $set('ip', collect($validRecords)->first()); - - return; + $set('ip', $ip); + } else { + $set('dns', false); } - - $set('dns', false); }) ->maxLength(255), TextInput::make('ip') @@ -618,10 +616,10 @@ class EditNode extends EditRecord $data['config'] = $node->getYamlConfiguration(); if (!is_ip($node->fqdn)) { - $validRecords = gethostbynamel($node->fqdn); - if ($validRecords) { + $ip = get_ip_from_hostname($node->fqdn); + if ($ip) { $data['dns'] = true; - $data['ip'] = collect($validRecords)->first(); + $data['ip'] = $ip; } else { $data['dns'] = false; } diff --git a/app/helpers.php b/app/helpers.php index 6098eff07..46b9e8648 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -81,3 +81,20 @@ if (!function_exists('resolve_path')) { return implode('/', $absolutes); } } + +if (!function_exists('get_ip_from_hostname')) { + function get_ip_from_hostname(string $hostname): string|bool + { + $validARecords = @dns_get_record($hostname, DNS_A); + if ($validARecords) { + return collect($validARecords)->first()['ip']; + } + + $validAAAARecords = @dns_get_record($hostname, DNS_AAAA); + if ($validAAAARecords) { + return collect($validAAAARecords)->first()['ipv6']; + } + + return false; + } +}