diff --git a/snappymail/v/0.0.0/app/libraries/snappymail/dns.php b/snappymail/v/0.0.0/app/libraries/snappymail/dns.php index ee0ca7517..e831b8603 100644 --- a/snappymail/v/0.0.0/app/libraries/snappymail/dns.php +++ b/snappymail/v/0.0.0/app/libraries/snappymail/dns.php @@ -52,11 +52,8 @@ abstract class DNS public static function MX(string $domain) : array { $mxhosts = array(); - $values = \dns_get_record($domain, \DNS_MX); - if ($values) { - foreach ($values as $record) { - $mxhosts[$record['pri']] = $record['target']; - } + foreach (\dns_get_record($host, \DNS_MX) ?: array() as $record) { + $mxhosts[$record['pri']] = $record['target']; } if (!$mxhosts) { \getmxrr($domain, $mxhosts); @@ -68,13 +65,27 @@ abstract class DNS public static function SRV(string $domain) : array { $result = array(); - $values = \dns_get_record($domain, \DNS_SRV); - if ($values) { - foreach ($values as $record) { - $result[$record['pri']] = $record; - } + foreach (\dns_get_record($host, \DNS_SRV) ?: array() as $record) { + $result[$record['pri']] = $record; } \ksort($result); return \array_values($result); } + + public static function IP(string $domain): array + { + $ips = array(); + foreach (\dns_get_record($host, \DNS_A | (\defined('AF_INET6') ? \DNS_AAAA : 0)) ?: array() as $record) { + if (!empty($record['ip'])) { + $ips[] = $record['ip']; + } + if (!empty($record['ipv6'])) { + $ips[] = $record['ipv6']; + } + } + if (!$ips) { + $ips = \gethostbynamel($host); + } + return $ips ?: array(); + } }