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

Source for file URI.php

Documentation is available at URI.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) 2011, 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 2011 Mike Pultz <mike@mikepultz.com>
  45.  * @license   http://www.opensource.org/licenses/bsd-license.php  BSD License
  46.  * @version   SVN: $Id: URI.php 132 2011-12-03 05:28:54Z mike.pultz $
  47.  * @link      http://pear.php.net/package/Net_DNS2
  48.  * @since     File available since Release 1.2.0
  49.  *
  50.  */
  51.  
  52. /**
  53.  * URI Resource Record - http://tools.ietf.org/html/draft-faltstrom-uri-06
  54.  *
  55.  *    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  56.  *    |                   PRIORITY                    |
  57.  *    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  58.  *    |                    WEIGHT                     |
  59.  *    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  60.  *    /                    TARGET                     /
  61.  *    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  62.  *
  63.  * @category Networking
  64.  * @package  Net_DNS2
  65.  * @author   Mike Pultz <mike@mikepultz.com>
  66.  * @license  http://www.opensource.org/licenses/bsd-license.php  BSD License
  67.  * @link     http://pear.php.net/package/Net_DNS2
  68.  * @see      Net_DNS2_RR
  69.  *
  70.  */
  71. class Net_DNS2_RR_URI extends Net_DNS2_RR
  72. {
  73.     /*
  74.      * The priority of this target host.
  75.      */
  76.     public $priority;
  77.  
  78.     /*
  79.      * a relative weight for entries with the same priority
  80.      */
  81.     public $weight;
  82.  
  83.     /*
  84.       * The domain name of the target host
  85.      */
  86.     public $target;
  87.  
  88.     /**
  89.      * method to return the rdata portion of the packet as a string
  90.      *
  91.      * @return  string 
  92.      * @access  protected
  93.      *
  94.      */
  95.     protected function rrToString()
  96.     {
  97.         //
  98.         // presentation format has double quotes (") around the target.
  99.         //
  100.         return $this->priority . ' ' $this->weight . ' "' 
  101.             $this->cleanString($this->target'"';
  102.     }
  103.  
  104.     /**
  105.      * parses the rdata portion from a standard DNS config line
  106.      *
  107.      * @param array $rdata a string split line of values for the rdata
  108.      *
  109.      * @return boolean 
  110.      * @access protected
  111.      *
  112.      */
  113.     protected function rrFromString(array $rdata)
  114.     {
  115.         $this->priority = $rdata[0];
  116.         $this->weight   = $rdata[1];
  117.  
  118.         //
  119.         // make sure to trim the lead/trailing double quote if it's there.
  120.         //
  121.         $this->target   = trim($this->cleanString($rdata[2])'"');
  122.         
  123.         return true;
  124.     }
  125.  
  126.     /**
  127.      * parses the rdata of the Net_DNS2_Packet object
  128.      *
  129.      * @param Net_DNS2_Packet &$packet a Net_DNS2_Packet packet to parse the RR from
  130.      *
  131.      * @return boolean 
  132.      * @access protected
  133.      *
  134.      */
  135.     protected function rrSet(Net_DNS2_Packet &$packet)
  136.     {
  137.         if ($this->rdlength > 0{
  138.             
  139.             //
  140.             // unpack the priority and weight
  141.             //
  142.             $x unpack('npriority/nweight'$this->rdata);
  143.  
  144.             $this->priority = $x['priority'];
  145.             $this->weight   = $x['weight'];
  146.  
  147.             $offset         $packet->offset + 4;
  148.             $this->target   = Net_DNS2_Packet::expand($packet$offset);
  149.  
  150.             return true;
  151.         }
  152.         
  153.         return false;
  154.     }
  155.  
  156.     /**
  157.      * returns the rdata portion of the DNS packet
  158.      *
  159.      * @param Net_DNS2_Packet &$packet a Net_DNS2_Packet packet use for
  160.      *                                  compressed names
  161.      *
  162.      * @return mixed                   either returns a binary packed
  163.      *                                  string or null on failure
  164.      * @access protected
  165.      *
  166.      */
  167.     protected function rrGet(Net_DNS2_Packet &$packet)
  168.     {
  169.         if (strlen($this->target> 0{
  170.  
  171.             $data pack('nn'$this->priority$this->weight);
  172.             $packet->offset += 4;
  173.  
  174.             $data .= $packet->compress(trim($this->target'"')$packet->offset);
  175.  
  176.             return $data;
  177.         }
  178.  
  179.         return null;
  180.     }
  181. }
  182.  
  183. ?>

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