/** * Retrieve all DNS records for a given host, with 5 seconds as the default * timeout for the operation, using Google's public nameservers. */ function resolv_get_records($host, $query = DNS_ALL, $timeout = 5.0, $ns = null) { if (is_null($query)) { $query = DNS_ALL; } $query = _resolv_convert_query($query); if (is_null($ns)) { $ns = '8.8.8.8'; } try { $start = microtime(true); $res = _resolv_choice([function () use($host, $query, &$timeout, $ns) { return call_user_func_array("_resolv_query_udp", [$host, $timeout, $ns, $query]); }, function () use($start, &$timeout) { $timeout -= microtime(true) - $start; return [false, null]; }, function () use($host, $query, &$timeout, $ns) { return call_user_func_array("_resolv_query_tcp", [$host, $query, $ns, $query]); }]); if (is_null($res)) { throw new Exception("Unable to fetch records"); } // Handle response if ($res->getResponseCode() !== 0) { throw new Exception("Server returned error code " . $res->getResponseCode()); } return _resolv_convert_results($res, $host); } catch (Exception $e) { return []; } }
if (sizeof(array_diff($native, $resolv)) || sizeof(array_diff($resolv, $native))) { echo "Failed check for bcc.com A records\n"; var_dump($native); var_dump($resolv); exit(1); } $native = array_map("_target", dns_get_record("bbc.com", DNS_MX)); $resolv = array_map("_target", resolv_get_records("bbc.com", DNS_MX, 5, "8.8.8.8")); if (sizeof(array_diff($native, $resolv)) || sizeof(array_diff($resolv, $native))) { echo "Failed check for bcc.com MX records\n"; var_dump($native); var_dump($resolv); exit(1); } // test tcp mode $native = array_map("_ip", dns_get_record("bbc.com", DNS_A)); $resolv = array_map("_ip", _resolv_convert_results(_resolv_query_tcp("bbc.com", 5, "8.8.8.8", _resolv_convert_query(DNS_A))[1], "bbc.com")); if (sizeof(array_diff($native, $resolv)) || sizeof(array_diff($resolv, $native))) { echo "Failed TCP check for bcc.com A records\n"; var_dump($native); var_dump($resolv); exit(1); } $native = array_map("_target", dns_get_record("bbc.com", DNS_MX)); $resolv = array_map("_target", _resolv_convert_results(_resolv_query_tcp("bbc.com", 5, "8.8.8.8", _resolv_convert_query(DNS_MX))[1], "bbc.com")); if (sizeof(array_diff($native, $resolv)) || sizeof(array_diff($resolv, $native))) { echo "Failed TCP check for bcc.com MX records\n"; var_dump($native); var_dump($resolv); exit(1); }