芝麻web文件管理V1.00
编辑当前文件:/home/strato/chroot/opt/RZphp5/includes/Net/DNS.php
* * 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
* 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
* @author Marco Kaiser
* @author Florian Anderiasch
* @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
* @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: *
*
QUERY *
IQUERY *
STATUS *
NS_NOTIFY_OP *
UPDATE *
* * @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. *
*
NOERROR *
FORMERR *
SERVFAIL *
NXDOMAIN *
NOTIMP *
REFUSED *
YXDOMAIN *
YXRRSET *
NXRRSET *
NOTAUTH *
NOTZONE *
* * @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: * *
*
A *
NS *
MD *
MF *
CNAME *
SOA *
MB *
MG *
MR *
NULL *
WKS *
PTR *
HINFO *
MINFO *
MX *
TXT *
RP *
AFSDB *
X25 *
ISDN *
RT *
NSAP *
NSAP_PTR *
SIG *
KEY *
PX *
GPOS *
AAAA *
LOC *
NXT *
EID *
NIMLOC *
SRV *
ATMA *
NAPTR *
TSIG *
SPF *
UINFO *
UID *
GID *
UNSPEC *
IXFR *
AXFR *
MAILB *
MAILA *
ANY *
* * @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: *
*
IN *
CH *
HS *
NONE *
ANY *
* * @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 * }}} */ ?>