コード例 #1
0
 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;
 }