public function ipv6_to_arpa($ip) { $ip = HelperFunctions::ipv6_expand($ip); $p = explode(":", $ip); $n = ''; foreach ($p as $part) { $n .= $part; } $n = str_split(strrev($n)); return implode(".", $n) . ".ip6.arpa"; }
public function get_arpa($response, $identifier, &$out = null, $extra_props = false) { $arpa = HelperFunctions::ip_to_arpa($identifier); for ($i = 0; ($ret = HelperFunctions::truncate_arpa($arpa, $i)) !== false; $i++) { $response = ZoneFunctions::get_zone($response, $ret, $out); if ($response->code !== Response::NOTFOUND) { foreach ($out['records'] as $record) { if ($record['type'] == "PTR" && HelperFunctions::ipv6_expand($identifier) == HelperFunctions::arpa_to_ip($record['name'])) { $output = array("name" => $record['name'], "ip" => $identifier, "reverse_dns" => $record['content'], "arpa_zone" => $ret); if ($extra_props) { $output['ttl'] = $record['ttl']; $output['priority'] = $record['priority']; } $response->code = Response::OK; $response->body = $output; $response->log_message = sprintf("Retrieved Arpa zone '%s' for IP '%s'", $record['name'], $identifier); $out = $output; return $response; } } } } $response->code = Response::NOTFOUND; $response->error = "Could not find the Arpa zone for IP " . $identifier; $response->error_detail = "ARPA_NO_ZONE_FOR_IP"; $out = false; return $response; }