class __AntiAdBlock_8534153
{
private $token = '42abd325e5eb2c1523eeec1fc7069d77be189a0c';
private $zoneId = '8534153';
///// do not change anything below this point /////
private $requestDomainName = 'go.transferzenad.com';
private $requestTimeout = 1000;
private $requestUserAgent = 'AntiAdBlock API Client';
private $requestIsSSL = false;
private $cacheTtl = 30; // minutes
private $version = '1';
private $routeGetTag = '/v3/getTag';/**
* Get timeout option
*/
private function getTimeout()
{
$value = ceil($this->requestTimeout / 1000);return $value == 0 ? 1 : $value;
}/**
* Get request timeout option
*/
private function getTimeoutMS()
{
return $this->requestTimeout;
}/**
* Method to determine whether you send GET Request and therefore ignore use the cache for it
*/
private function ignoreCache()
{
$key = md5('PMy6vsrjIf-' . $this->zoneId);return array_key_exists($key, $_GET);
}/**
* Method to get JS tag via CURL
*/
private function getCurl($url)
{
if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) {
return false;
}
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)',
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_TIMEOUT => $this->getTimeout(),
CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(),
CURLOPT_CONNECTTIMEOUT => $this->getTimeout(),
CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(),
));
$version = curl_version();
$scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http';
curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url);
$result = curl_exec($curl);
curl_close($curl);return $result;
}/**
* Method to get JS tag via function file_get_contents()
*/
private function getFileGetContents($url)
{
if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') ||
((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) {
return false;
}
$scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http';
$context = stream_context_create(array(
$scheme => array(
'timeout' => $this->getTimeout(), // seconds
'user_agent' => $this->requestUserAgent . ' (fgc)',
),
));return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context);
}/**
* Method to get JS tag via function fsockopen()
*/
private function getFsockopen($url)
{
$fp = null;
if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) {
$fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout());
}
if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) {
return false;
}
$out = "GET HTTP/1.1\r\n";
$out .= "Host: \r\n";
$out .= "User-Agent: (socket)\r\n";
$out .= "Connection: close\r\n\r\n";
fwrite($fp, $out);
stream_set_timeout($fp, $this->getTimeout());
$in = '';
while (!feof($fp)) {
$in .= fgets($fp, 2048);
}
fclose($fp);$parts = explode("\r\n\r\n", trim($in));return isset($parts[1]) ? $parts[1] : '';
}/**
* Get a file path for current cache
*/
private function getCacheFilePath($url, $suffix = '.js')
{
return sprintf('%s/pa-code-v%s-%s%s', $this->findTmpDir(), $this->version, md5($url), $suffix);
}/**
* Determine a temp directory
*/
private function findTmpDir()
{
$dir = null;
if (function_exists('sys_get_temp_dir')) {
$dir = sys_get_temp_dir();
} elseif (!empty($_ENV['TMP'])) {
$dir = realpath($_ENV['TMP']);
} elseif (!empty($_ENV['TMPDIR'])) {
$dir = realpath($_ENV['TMPDIR']);
} elseif (!empty($_ENV['TEMP'])) {
$dir = realpath($_ENV['TEMP']);
} else {
$filename = tempnam(dirname(__FILE__), '');
if (file_exists($filename)) {
unlink($filename);
$dir = realpath(dirname($filename));
}
}return $dir;
}/**
* Check if PHP code is cached
*/
private function isActualCache($file)
{
if ($this->ignoreCache()) {
return false;
}return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60);
}/**
* Function to get JS tag via different helper method. It returns the first success response.
*/
private function getCode($url)
{
$code = false;
if (!$code) {
$code = $this->getCurl($url);
}
if (!$code) {
$code = $this->getFileGetContents($url);
}
if (!$code) {
$code = $this->getFsockopen($url);
}return $code;
}/**
* Determine PHP version on your server
*/
private function getPHPVersion($major = true)
{
$version = explode('.', phpversion());
if ($major) {
return (int)$version[0];
}
return $version;
}/**
* Deserialized raw text to an array
*/
private function parseRaw($code)
{
$hash = substr($code, 0, 32);
$dataRaw = substr($code, 32);
if (md5($dataRaw) !== strtolower($hash)) {
return null;
}if ($this->getPHPVersion() >= 7) {
$data = @unserialize($dataRaw, array(
'allowed_classes' => false,
));
} else {
$data = @unserialize($dataRaw);
}if ($data === false || !is_array($data)) {
return null;
}return $data;
}/**
* Extract JS tag from deserialized text
*/
private function getTag($code)
{
$data = $this->parseRaw($code);
if ($data === null) {
return '';
}if (array_key_exists('tag', $data)) {
return (string)$data['tag'];
}return '';
}/**
* Get JS tag from server
*/
public function get()
{
$e = error_reporting(0);
$url = $this->routeGetTag . '?' . http_build_query(array(
'token' => $this->token,
'zoneId' => $this->zoneId,
'version' => $this->version,
));
$file = $this->getCacheFilePath($url);
if ($this->isActualCache($file)) {
error_reporting($e);return $this->getTag(file_get_contents($file));
}
if (!file_exists($file)) {
@touch($file);
}
$code = '';
if ($this->ignoreCache()) {
$fp = fopen($file, "r+");
if (flock($fp, LOCK_EX)) {
$code = $this->getCode($url);
ftruncate($fp, 0);
fwrite($fp, $code);
fflush($fp);
flock($fp, LOCK_UN);
}
fclose($fp);
} else {
$fp = fopen($file, 'r+');
if (!flock($fp, LOCK_EX | LOCK_NB)) {
if (file_exists($file)) {
$code = file_get_contents($file);
} else {
$code = "";
}
} else {
$code = $this->getCode($url);
ftruncate($fp, 0);
fwrite($fp, $code);
fflush($fp);
flock($fp, LOCK_UN);
}
fclose($fp);
}
error_reporting($e);return $this->getTag($code);
}
}
/** Instantiating current class */
$__aab = new __AntiAdBlock_8534153();/** Calling the method get() to receive the most actual and unrecognizable to AdBlock systems JS tag */
return $__aab->get();