0byt3m1n1
Path:
/
data
/
applications
/
aps
/
geeklog
/
1.8.0-0
/
standard
/
htdocs
/
system
/
pear
/
Net
/
[
Home
]
File: DNS.php
<?php /** * Class to provide IPv4 calculations * * Module written/ported by Eric Kilfoil <eric@ypass.net> * * This is the copyright notice from the PERL Net::DNS module: * * Copyright (c) 1997-2000 Michael Fuhr. All rights reserved. This * program is free software; you can redistribute it and/or modify it * under the same terms as Perl itself. * * The majority of this is _NOT_ my code. I simply ported it from the * PERL Net::DNS module. * * The author of the Net::DNS module is Michael Fuhr <mike@fuhr.org> * http://www.fuhr.org/~mfuhr/perldns/ * * Michael Fuhr has nothing to with the porting of this code to PHP. * Any questions directly related to this class library should be directed * to the maintainer. * * * PHP versions 4 and 5 * * LICENSE: This source file is subject to version 3.01 of the PHP license * that is available through the world-wide-web at the following URI: * http://www.php.net/license/3_01.txt. If you did not receive a copy of * the PHP License and are unable to obtain it through the web, please * send a note to license@php.net so we can mail you a copy immediately. * * @category Net * @package Net_IPv4 * @author Eric Kilfoil <edk@ypass.net> * @author Marco Kaiser <bate@php.net> * @author Florian Anderiasch <fa@php.net> * @copyright The PHP Group * @license http://www.php.net/license/3_01.txt PHP License 3.01 * @version CVS: $Id: DNS.php 302014 2010-08-09 06:17:29Z bate $ * @link http://pear.php.net/package/Net_DNS */ /* Include information {{{ */ require_once("Net/DNS/Header.php"); require_once("Net/DNS/Question.php"); require_once("Net/DNS/Packet.php"); require_once("Net/DNS/Resolver.php"); require_once("Net/DNS/RR.php"); /* }}} */ /* GLOBAL VARIABLE definitions {{{ */ // Used by the Net_DNS_Resolver object to generate an ID $GLOBALS['_Net_DNS_packet_id'] = mt_rand(0, 65535); /* }}} */ /* Net_DNS object definition (incomplete) {{{ */ /** * Initializes a resolver object * * Net_DNS allows you to query a nameserver for DNS lookups. It bypasses the * system resolver library entirely, which allows you to query any nameserver, * set your own values for retries, timeouts, recursion, etc. * * @author Eric Kilfoil <eric@ypass.net> * @package Net_DNS * @version 0.01alpha */ class Net_DNS { /* class variable definitions {{{ */ /** * A default resolver object created on instantiation * * @var Net_DNS_Resolver object */ var $resolver; var $VERSION = '1.00b2'; // This should probably be a define :( var $PACKETSZ = 512; var $HFIXEDSZ = 12; var $QFIXEDSZ = 4; var $RRFIXEDSZ = 10; var $INT32SZ = 4; var $INT16SZ = 2; /* }}} */ /* class constructor - Net_DNS() {{{ */ /** * Initializes a resolver object * * @see Net_DNS_Resolver * @param array $defaults * @return Net_DNS */ function Net_DNS($defaults = array()) { $this->resolver = new Net_DNS_Resolver($defaults); } /* }}} */ /* Net_DNS::opcodesbyname() {{{ */ /** * Translates opcode names to integers * * Translates the name of a DNS OPCODE into it's assigned number * listed in RFC1035, RFC1996, or RFC2136. Valid OPCODES are: * <ul> * <li>QUERY * <li>IQUERY * <li>STATUS * <li>NS_NOTIFY_OP * <li>UPDATE * <ul> * * @param string $opcode A DNS Packet OPCODE name * @return integer The integer value of an OPCODE * @see Net_DNS::opcodesbyval() */ function opcodesbyname($opcode) { $op = array( 'QUERY' => 0, // RFC 1035 'IQUERY' => 1, // RFC 1035 'STATUS' => 2, // RFC 1035 'NS_NOTIFY_OP' => 4, // RFC 1996 'UPDATE' => 5, // RFC 2136 ); if (! strlen($op[$opcode])) { $op[$opcode] = null; } return $op[$opcode]; } /* }}} */ /* Net_DNS::opcodesbyval() {{{*/ /** * Translates opcode integers into names * * Translates the integer value of an opcode into it's name * * @param integer $opcodeval A DNS packet opcode integer * @return string The name of the OPCODE * @see Net_DNS::opcodesbyname() */ function opcodesbyval($opcodeval) { $opval = array( 0 => 'QUERY', 1 => 'IQUERY', 2 => 'STATUS', 4 => 'NS_NOTIFY_OP', 5 => 'UPDATE', ); if (! strlen($opval[$opcodeval])) { $opval[$opcodeval] = null; } return $opval[$opcodeval]; } /*}}}*/ /* Net_DNS::rcodesbyname() {{{*/ /** * Translates rcode names to integers * * Translates the name of a DNS RCODE (result code) into it's assigned number. * <ul> * <li>NOERROR * <li>FORMERR * <li>SERVFAIL * <li>NXDOMAIN * <li>NOTIMP * <li>REFUSED * <li>YXDOMAIN * <li>YXRRSET * <li>NXRRSET * <li>NOTAUTH * <li>NOTZONE * <ul> * * @param string $rcode A DNS Packet RCODE name * @return integer The integer value of an RCODE * @see Net_DNS::rcodesbyval() */ function rcodesbyname($rcode) { $rc = array( 'NOERROR' => 0, // RFC 1035 'FORMERR' => 1, // RFC 1035 'SERVFAIL' => 2, // RFC 1035 'NXDOMAIN' => 3, // RFC 1035 'NOTIMP' => 4, // RFC 1035 'REFUSED' => 5, // RFC 1035 'YXDOMAIN' => 6, // RFC 2136 'YXRRSET' => 7, // RFC 2136 'NXRRSET' => 8, // RFC 2136 'NOTAUTH' => 9, // RFC 2136 'NOTZONE' => 10, // RFC 2136 ); if (! strlen($rc[$rcode])) { $rc[$rcode] = null; } return $rc[$rcode]; } /*}}}*/ /* Net_DNS::rcodesbyval() {{{*/ /** * Translates rcode integers into names * * Translates the integer value of an rcode into it's name * * @param integer $rcodeval A DNS packet rcode integer * @return string The name of the RCODE * @see Net_DNS::rcodesbyname() */ function rcodesbyval($rcodeval) { $rc = array( 0 => 'NOERROR', 1 => 'FORMERR', 2 => 'SERVFAIL', 3 => 'NXDOMAIN', 4 => 'NOTIMP', 5 => 'REFUSED', 6 => 'YXDOMAIN', 7 => 'YXRRSET', 8 => 'NXRRSET', 9 => 'NOTAUTH', 10 => 'NOTZONE', ); if (! strlen($rc[$rcodeval])) { $rc[$rcodeval] = null; } return $rc[$rcodeval]; } /*}}}*/ /* Net_DNS::typesbyname() {{{*/ /** * Translates RR type names into integers * * Translates a Resource Record from it's name to it's integer value. * Valid resource record types are: * * <ul> * <li>A * <li>NS * <li>MD * <li>MF * <li>CNAME * <li>SOA * <li>MB * <li>MG * <li>MR * <li>NULL * <li>WKS * <li>PTR * <li>HINFO * <li>MINFO * <li>MX * <li>TXT * <li>RP * <li>AFSDB * <li>X25 * <li>ISDN * <li>RT * <li>NSAP * <li>NSAP_PTR * <li>SIG * <li>KEY * <li>PX * <li>GPOS * <li>AAAA * <li>LOC * <li>NXT * <li>EID * <li>NIMLOC * <li>SRV * <li>ATMA * <li>NAPTR * <li>TSIG * <li>SPF * <li>UINFO * <li>UID * <li>GID * <li>UNSPEC * <li>IXFR * <li>AXFR * <li>MAILB * <li>MAILA * <li>ANY * <ul> * * @param string $rrtype A DNS packet RR type name * @return integer The integer value of an RR type * @see Net_DNS::typesbyval() */ function typesbyname($rrtype) { $rc = array( 'A' => 1, 'NS' => 2, 'MD' => 3, 'MF' => 4, 'CNAME' => 5, 'SOA' => 6, 'MB' => 7, 'MG' => 8, 'MR' => 9, 'NULL' => 10, 'WKS' => 11, 'PTR' => 12, 'HINFO' => 13, 'MINFO' => 14, 'MX' => 15, 'TXT' => 16, 'RP' => 17, 'AFSDB' => 18, 'X25' => 19, 'ISDN' => 20, 'RT' => 21, 'NSAP' => 22, 'NSAP_PTR' => 23, 'SIG' => 24, 'KEY' => 25, 'PX' => 26, 'GPOS' => 27, 'AAAA' => 28, 'LOC' => 29, 'NXT' => 30, 'EID' => 31, 'NIMLOC' => 32, 'SRV' => 33, 'ATMA' => 34, 'NAPTR' => 35, 'SPF' => 99, 'UINFO' => 100, 'UID' => 101, 'GID' => 102, 'UNSPEC' => 103, 'TSIG' => 250, 'IXFR' => 251, 'AXFR' => 252, 'MAILB' => 253, 'MAILA' => 254, 'ANY' => 255, ); if (empty($rc[$rrtype])) { $rc[$rrtype] = null; } return $rc[$rrtype]; } /*}}}*/ /* Net_DNS::typesbyval() {{{*/ /** * Translates RR type integers into names * * Translates the integer value of an RR type into it's name * * @param integer $rrtypeval A DNS packet RR type integer * @return string The name of the RR type * @see Net_DNS::typesbyname() */ function typesbyval($rrtypeval) { $rc = array( 1 => 'A', 2 => 'NS', 3 => 'MD', 4 => 'MF', 5 => 'CNAME', 6 => 'SOA', 7 => 'MB', 8 => 'MG', 9 => 'MR', 10 => 'NULL', 11 => 'WKS', 12 => 'PTR', 13 => 'HINFO', 14 => 'MINFO', 15 => 'MX', 16 => 'TXT', 17 => 'RP', 18 => 'AFSDB', 19 => 'X25', 20 => 'ISDN', 21 => 'RT', 22 => 'NSAP', 23 => 'NSAP_PTR', 24 => 'SIG', 25 => 'KEY', 26 => 'PX', 27 => 'GPOS', 28 => 'AAAA', 29 => 'LOC', 30 => 'NXT', 31 => 'EID', 32 => 'NIMLOC', 33 => 'SRV', 34 => 'ATMA', 35 => 'NAPTR', 99 => 'SPF', 100 => 'UINFO', 101 => 'UID', 102 => 'GID', 103 => 'UNSPEC', 250 => 'TSIG', 251 => 'IXFR', 252 => 'AXFR', 253 => 'MAILB', 254 => 'MAILA', 255 => 'ANY', ); $rrtypeval = preg_replace(array('/\s*/',' /^0*/'), '', $rrtypeval); if (empty($rc[$rrtypeval])) { $rc[$rrtypeval] = null; } return $rc[$rrtypeval]; } /*}}}*/ /* Net_DNS::classesbyname() {{{*/ /** * translates a DNS class from it's name to it's integer value. Valid * class names are: * <ul> * <li>IN * <li>CH * <li>HS * <li>NONE * <li>ANY * </ul> * * @param string $class A DNS packet class type * @return integer The integer value of an class type * @see Net_DNS::classesbyval() */ function classesbyname($class) { $rc = array( 'IN' => 1, // RFC 1035 'CH' => 3, // RFC 1035 'HS' => 4, // RFC 1035 'NONE' => 254, // RFC 2136 'ANY' => 255 // RFC 1035 ); if (!isset($rc[$class])) { $rc[$class] = null; } return $rc[$class]; } /*}}}*/ /* Net_DNS::classesbyval() {{{*/ /** * Translates RR class integers into names * * Translates the integer value of an RR class into it's name * * @param integer $classval A DNS packet RR class integer * @return string The name of the RR class * @see Net_DNS::classesbyname() */ function classesbyval($classval) { $rc = array( 1 => 'IN', 3 => 'CH', 4 => 'HS', 254 => 'NONE', 255 => 'ANY' ); $classval = preg_replace(array('/\s*/',' /^0*/'), '', $classval); if (empty($rc[$classval])) { $rc[$classval] = null; } return $rc[$classval]; } /*}}}*/ /* not completed - Net_DNS::mx() {{{*/ /*}}}*/ /* not completed - Net_DNS::yxrrset() {{{*/ /*}}}*/ /* not completed - Net_DNS::nxrrset() {{{*/ /*}}}*/ /* not completed - Net_DNS::yxdomain() {{{*/ /*}}}*/ /* not completed - Net_DNS::nxdomain() {{{*/ /*}}}*/ /* not completed - Net_DNS::rr_add() {{{*/ /*}}}*/ /* not completed - Net_DNS::rr_del() {{{*/ /*}}}*/ } /* }}} */ /* VIM Settings {{{ * Local variables: * tab-width: 4 * c-basic-offset: 4 * soft-stop-width: 4 * c indent on * End: * vim600: sw=4 ts=4 sts=4 cindent fdm=marker et * vim<600: sw=4 ts=4 * }}} */ ?>