home *** CD-ROM | disk | FTP | other *** search
- <?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 1997-2005 The PHP Group
- * @license http://www.php.net/license/3_01.txt PHP License 3.01
- * @version CVS: $Id: DNS.php,v 1.14 2006/10/25 17:52:44 bate Exp $
- * @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>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,
- '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',
- 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
- * }}} */
- ?>
-