archives
bundled-libs
Cache
HTTP
Net
DNS2
Cache
Packet
RR
A.php
AAAA.php
AFSDB.php
ANY.php
APL.php
ATMA.php
AVC.php
CAA.php
CDNSKEY.php
CDS.php
CERT.php
CNAME.php
CSYNC.php
DHCID.php
DLV.php
DNAME.php
DNSKEY.php
DS.php
EID.php
EUI48.php
EUI64.php
HINFO.php
HIP.php
IPSECKEY.php
ISDN.php
KEY.php
KX.php
L32.php
L64.php
LOC.php
LP.php
MX.php
NAPTR.php
NID.php
NIMLOC.php
NS.php
NSAP.php
NSEC.php
NSEC3.php
NSEC3PARAM.php
OPENPGPKEY.php
OPT.php
PTR.php
PX.php
RP.php
RRSIG.php
RT.php
SIG.php
SMIMEA.php
SOA.php
SPF.php
SRV.php
SSHFP.php
TA.php
TALINK.php
TKEY.php
TLSA.php
TSIG.php
TXT.php
URI.php
WKS.php
X25.php
Socket
BitMap.php
Cache.php
Exception.php
Header.php
Lookups.php
Packet.php
PrivateKey.php
Question.php
RR.php
Resolver.php
Socket.php
Updater.php
DNSBL
BUNDLE_NOTICE
CheckIP.php
DNS2.php
DNSBL.php
Socket.php
URL.php
URL2.php
Onyx
PEAR
Smarty
Text
XML
composer
docs
katzgrau
psr
simplepie
tests
zendframework
.current_version
PEAR.php
PEAR5.php
autoload.php
create_release.sh
serendipity_generateFTPChecksums.php
deployment
docs
htmlarea
include
lang
plugins
sql
templates
templates_c
tests
uploads
.gitignore
README.markdown
checksums.inc.php
comment.php
composer.json
composer.phar
exit.php
index.php
rss.php
serendipity.css.php
serendipity_admin.php
serendipity_admin_image_selector.php
serendipity_config.inc.php
serendipity_xmlrpc.php
wfwcomment.php
Fixes #459 See https://pear.php.net/package/Net_DNS2/ Signed-off-by: Thomas Hochstein <thh@inter.net>
204 lines
5.6 KiB
PHP
204 lines
5.6 KiB
PHP
<?php
|
|
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
|
|
|
/**
|
|
* DNS Library for handling lookups and updates.
|
|
*
|
|
* PHP Version 5
|
|
*
|
|
* Copyright (c) 2015, Mike Pultz <mike@mikepultz.com>.
|
|
* All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
*
|
|
* * Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
*
|
|
* * Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in
|
|
* the documentation and/or other materials provided with the
|
|
* distribution.
|
|
*
|
|
* * Neither the name of Mike Pultz nor the names of his contributors
|
|
* may be used to endorse or promote products derived from this
|
|
* software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRIC
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
*
|
|
* @category Networking
|
|
* @package Net_DNS2
|
|
* @author Mike Pultz <mike@mikepultz.com>
|
|
* @copyright 2015 Mike Pultz <mike@mikepultz.com>
|
|
* @license http://www.opensource.org/licenses/bsd-license.php BSD License
|
|
* @version SVN: $Id$
|
|
* @link http://pear.php.net/package/Net_DNS2
|
|
* @since File available since Release 1.4.1
|
|
*
|
|
*/
|
|
|
|
/**
|
|
* CSYNC Resource Record - RFC 7477 seciond 2.1.1
|
|
*
|
|
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
|
* | SOA Serial |
|
|
* | |
|
|
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
|
* | Flags |
|
|
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
|
* / Type Bit Map /
|
|
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
|
*
|
|
* @category Networking
|
|
* @package Net_DNS2
|
|
* @author Mike Pultz <mike@mikepultz.com>
|
|
* @license http://www.opensource.org/licenses/bsd-license.php BSD License
|
|
* @link http://pear.php.net/package/Net_DNS2
|
|
* @see Net_DNS2_RR
|
|
*
|
|
*/
|
|
class Net_DNS2_RR_CSYNC extends Net_DNS2_RR
|
|
{
|
|
/*
|
|
* serial number
|
|
*/
|
|
public $serial;
|
|
|
|
/*
|
|
* flags
|
|
*/
|
|
public $flags;
|
|
|
|
/*
|
|
* array of RR type names
|
|
*/
|
|
public $type_bit_maps = array();
|
|
|
|
/**
|
|
* method to return the rdata portion of the packet as a string
|
|
*
|
|
* @return string
|
|
* @access protected
|
|
*
|
|
*/
|
|
protected function rrToString()
|
|
{
|
|
$out = $this->serial . ' ' . $this->flags;
|
|
|
|
//
|
|
// show the RR's
|
|
//
|
|
foreach ($this->type_bit_maps as $rr) {
|
|
|
|
$out .= ' ' . strtoupper($rr);
|
|
}
|
|
|
|
return $out;
|
|
}
|
|
|
|
/**
|
|
* parses the rdata portion from a standard DNS config line
|
|
*
|
|
* @param array $rdata a string split line of values for the rdata
|
|
*
|
|
* @return boolean
|
|
* @access protected
|
|
*
|
|
*/
|
|
protected function rrFromString(array $rdata)
|
|
{
|
|
$this->serial = array_shift($rdata);
|
|
$this->flags = array_shift($rdata);
|
|
|
|
$this->type_bit_maps = $rdata;
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* parses the rdata of the Net_DNS2_Packet object
|
|
*
|
|
* @param Net_DNS2_Packet &$packet a Net_DNS2_Packet packet to parse the RR from
|
|
*
|
|
* @return boolean
|
|
* @access protected
|
|
*
|
|
*/
|
|
protected function rrSet(Net_DNS2_Packet &$packet)
|
|
{
|
|
if ($this->rdlength > 0) {
|
|
|
|
//
|
|
// unpack the serial and flags values
|
|
//
|
|
$x = unpack('@' . $packet->offset . '/Nserial/nflags', $packet->rdata);
|
|
|
|
$this->serial = Net_DNS2::expandUint32($x['serial']);
|
|
$this->flags = $x['flags'];
|
|
|
|
//
|
|
// parse out the RR bitmap
|
|
//
|
|
$this->type_bit_maps = Net_DNS2_BitMap::bitMapToArray(
|
|
substr($this->rdata, 6)
|
|
);
|
|
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* returns the rdata portion of the DNS packet
|
|
*
|
|
* @param Net_DNS2_Packet &$packet a Net_DNS2_Packet packet use for
|
|
* compressed names
|
|
*
|
|
* @return mixed either returns a binary packed
|
|
* string or null on failure
|
|
* @access protected
|
|
*
|
|
*/
|
|
protected function rrGet(Net_DNS2_Packet &$packet)
|
|
{
|
|
//
|
|
// pack the serial and flags values
|
|
//
|
|
$data = pack('Nn', $this->serial, $this->flags);
|
|
|
|
//
|
|
// convert the array of RR names to a type bitmap
|
|
//
|
|
$data .= Net_DNS2_BitMap::arrayToBitMap($this->type_bit_maps);
|
|
|
|
//
|
|
// advance the offset
|
|
//
|
|
$packet->offset += strlen($data);
|
|
|
|
return $data;
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Local variables:
|
|
* tab-width: 4
|
|
* c-basic-offset: 4
|
|
* c-hanging-comment-ender-p: nil
|
|
* End:
|
|
*/
|
|
?>
|