Net_DNS2
[ class tree: Net_DNS2 ] [ index: Net_DNS2 ] [ all elements ]

Source for file SRV.php

Documentation is available at SRV.php

  1. <?php
  2. /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
  3.  
  4. /**
  5.  * DNS Library for handling lookups and updates.
  6.  *
  7.  * PHP Version 5
  8.  *
  9.  * Copyright (c) 2010, Mike Pultz <mike@mikepultz.com>.
  10.  * All rights reserved.
  11.  *
  12.  * Redistribution and use in source and binary forms, with or without
  13.  * modification, are permitted provided that the following conditions
  14.  * are met:
  15.  *
  16.  *   * Redistributions of source code must retain the above copyright
  17.  *     notice, this list of conditions and the following disclaimer.
  18.  *
  19.  *   * Redistributions in binary form must reproduce the above copyright
  20.  *     notice, this list of conditions and the following disclaimer in
  21.  *     the documentation and/or other materials provided with the
  22.  *     distribution.
  23.  *
  24.  *   * Neither the name of Mike Pultz nor the names of his contributors
  25.  *     may be used to endorse or promote products derived from this
  26.  *     software without specific prior written permission.
  27.  *
  28.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  29.  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  30.  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
  31.  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  32.  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
  33.  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
  34.  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  35.  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  36.  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRIC
  37.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
  38.  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  39.  * POSSIBILITY OF SUCH DAMAGE.
  40.  *
  41.  * @category  Networking
  42.  * @package   Net_DNS2
  43.  * @author    Mike Pultz <mike@mikepultz.com>
  44.  * @copyright 2010 Mike Pultz <mike@mikepultz.com>
  45.  * @license   http://www.opensource.org/licenses/bsd-license.php  BSD License
  46.  * @version   SVN: $Id: SRV.php 127 2011-12-03 03:29:39Z mike.pultz $
  47.  * @link      http://pear.php.net/package/Net_DNS2
  48.  * @since     File available since Release 0.6.0
  49.  *
  50.  */
  51.  
  52. /**
  53.  * SRV Resource Record - RFC2782
  54.  *
  55.  *    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  56.  *    |                   PRIORITY                    |
  57.  *    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  58.  *    |                    WEIGHT                     |
  59.  *    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  60.  *    |                     PORT                      |
  61.  *    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  62.  *    /                    TARGET                     /
  63.  *    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  64.  *
  65.  * @category Networking
  66.  * @package  Net_DNS2
  67.  * @author   Mike Pultz <mike@mikepultz.com>
  68.  * @license  http://www.opensource.org/licenses/bsd-license.php  BSD License
  69.  * @link     http://pear.php.net/package/Net_DNS2
  70.  * @see      Net_DNS2_RR
  71.  *
  72.  */
  73. class Net_DNS2_RR_SRV extends Net_DNS2_RR
  74. {
  75.     /*
  76.      * The priority of this target host.
  77.      */
  78.     public $priority;
  79.  
  80.     /*
  81.      * a relative weight for entries with the same priority
  82.      */
  83.     public $weight;
  84.  
  85.     /*
  86.       * The port on this target host of this service.
  87.      */
  88.     public $port;
  89.  
  90.     /*
  91.       * The domain name of the target host
  92.      */
  93.     public $target;
  94.  
  95.     /**
  96.      * method to return the rdata portion of the packet as a string
  97.      *
  98.      * @return  string 
  99.      * @access  protected
  100.      *
  101.      */
  102.     protected function rrToString()
  103.     {
  104.         return $this->priority . ' ' $this->weight . ' ' 
  105.             $this->port . ' ' $this->cleanString($this->target'.';
  106.     }
  107.  
  108.     /**
  109.      * parses the rdata portion from a standard DNS config line
  110.      *
  111.      * @param array $rdata a string split line of values for the rdata
  112.      *
  113.      * @return boolean 
  114.      * @access protected
  115.      *
  116.      */
  117.     protected function rrFromString(array $rdata)
  118.     {
  119.         $this->priority = $rdata[0];
  120.         $this->weight   = $rdata[1];
  121.         $this->port     = $rdata[2];
  122.  
  123.         $this->target   = $this->cleanString($rdata[3]);
  124.         
  125.         return true;
  126.     }
  127.  
  128.     /**
  129.      * parses the rdata of the Net_DNS2_Packet object
  130.      *
  131.      * @param Net_DNS2_Packet &$packet a Net_DNS2_Packet packet to parse the RR from
  132.      *
  133.      * @return boolean 
  134.      * @access protected
  135.      *
  136.      */
  137.     protected function rrSet(Net_DNS2_Packet &$packet)
  138.     {
  139.         if ($this->rdlength > 0{
  140.             
  141.             //
  142.             // unpack the priority, weight and port
  143.             //
  144.             $x unpack('npriority/nweight/nport'$this->rdata);
  145.  
  146.             $this->priority = $x['priority'];
  147.             $this->weight   = $x['weight'];
  148.             $this->port     = $x['port'];
  149.  
  150.             $offset         $packet->offset + 6;
  151.             $this->target   = Net_DNS2_Packet::expand($packet$offset);
  152.  
  153.             return true;
  154.         }
  155.         
  156.         return false;
  157.     }
  158.  
  159.     /**
  160.      * returns the rdata portion of the DNS packet
  161.      *
  162.      * @param Net_DNS2_Packet &$packet a Net_DNS2_Packet packet use for
  163.      *                                  compressed names
  164.      *
  165.      * @return mixed                   either returns a binary packed
  166.      *                                  string or null on failure
  167.      * @access protected
  168.      *
  169.      */
  170.     protected function rrGet(Net_DNS2_Packet &$packet)
  171.     {
  172.         if (strlen($this->target> 0{
  173.  
  174.             $data pack('nnn'$this->priority$this->weight$this->port);
  175.             $packet->offset += 6;
  176.  
  177.             $data .= $packet->compress($this->target$packet->offset);
  178.  
  179.             return $data;
  180.         }
  181.  
  182.         return null;
  183.     }
  184. }
  185.  
  186. ?>

Documentation generated on Sun, 01 Dec 2013 01:30:24 +0000 by phpDocumentor 1.4.3. PEAR Logo Copyright © PHP Group 2004.