Example #1
0
 /**
  * Parse a source hostname and generate a host info
  * @param $hostName
  *
  * @return Varien_Object
  */
 protected function _getHostInfo($hostName)
 {
     $hostInfo = new Varien_Object();
     $matches = array();
     if (strpos($hostName, '/') !== false) {
         $hostInfo->setAddressType(self::ADDRESS_TYPE_UNIX_SOCKET)->setUnixSocket($hostName);
     } elseif (preg_match('/^\\[(([0-9a-f]{1,4})?(:([0-9a-f]{1,4})?){1,}:([0-9a-f]{1,4}))(%[0-9a-z]+)?\\](:([0-9]+))?$/i', $hostName, $matches)) {
         $hostName = isset($matches[1]) ? $matches[1] : null;
         !is_null($hostName) && isset($matches[6]) && ($hostName .= $matches[6]);
         $hostInfo->setAddressType(self::ADDRESS_TYPE_IPV6_ADDRESS)->setHostName($hostName)->setPort(isset($matches[8]) ? $matches[8] : null);
     } elseif (preg_match('/^(([0-9a-f]{1,4})?(:([0-9a-f]{1,4})?){1,}:([0-9a-f]{1,4}))(%[0-9a-z]+)?$/i', $hostName, $matches)) {
         $hostName = isset($matches[1]) ? $matches[1] : null;
         !is_null($hostName) && isset($matches[6]) && ($hostName .= $matches[6]);
         $hostInfo->setAddressType(self::ADDRESS_TYPE_IPV6_ADDRESS)->setHostName($hostName);
     } elseif (strpos($hostName, ':') !== false) {
         list($hostAddress, $hostPort) = explode(':', $hostName);
         $hostInfo->setAddressType(filter_var($hostAddress, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) ? self::ADDRESS_TYPE_IPV4_ADDRESS : self::ADDRESS_TYPE_HOSTNAME)->setHostName($hostAddress)->setPort($hostPort);
     } else {
         $hostInfo->setAddressType(filter_var($hostName, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) ? self::ADDRESS_TYPE_IPV4_ADDRESS : self::ADDRESS_TYPE_HOSTNAME)->setHostName($hostName);
     }
     return $hostInfo;
 }