Page not found');
define('CHECK_MCPROXY', 0);
define('CHECK_MCPROXY_PARAM', '9cb597da0a4a0bcbe887abc5ecf21930');
define('CHECK_MCPROXY_VALUE', '4bd92e8b9cd349b5dbcce45b8588846f60532381d10365d5e573bea30d33b6c9');
function translateCurlError($code) {$output = '';$curl_errors = array(2 => "Can't init curl.",6 => "Can't resolve server's DNS of our domain. Please contact your hosting provider and tell them about this issue.",7 => "Can't connect to the server.",28 => "Operation timeout. Check you DNS setting.");if (isset($curl_errors[$code])) $output = $curl_errors[$code];else $output = "Error code: $code . Check if php cURL library installed and enabled on your server.";return $output;}
function mc_encrypt($encrypt) {$key = ENC_KEY;$encrypt = serialize($encrypt);$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM);$key = pack('H*', $key);$mac = hash_hmac('sha256', $encrypt, substr(bin2hex($key), -32));$passcrypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $encrypt.$mac, MCRYPT_MODE_CBC, $iv);$encoded = base64_encode($passcrypt).'|'.base64_encode($iv);return $encoded;}
function mc_decrypt($decrypt) {$key = ENC_KEY;$decrypt = explode('|', $decrypt.'|');$decoded = base64_decode($decrypt[0]);$iv = base64_decode($decrypt[1]);if(strlen($iv)!==mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC)){ return false; }$key = pack('H*', $key);$decrypted = trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $decoded, MCRYPT_MODE_CBC, $iv));$mac = substr($decrypted, -64);$decrypted = substr($decrypted, 0, -64);$calcmac = hash_hmac('sha256', $decrypted, substr(bin2hex($key), -32));if($calcmac!==$mac){ return false; }$decrypted = unserialize($decrypted);return $decrypted;}
// For PHP 7,7+ use this functions for encript/decript. You neen openssl library installed
//function mc_encrypt($encrypt) {$plaintext = $encrypt;$ivlen = openssl_cipher_iv_length($cipher="AES-128-CBC");$iv = openssl_random_pseudo_bytes($ivlen);$ciphertext_raw = openssl_encrypt($plaintext, $cipher, ENC_KEY, $options=OPENSSL_RAW_DATA, $iv);$hmac = hash_hmac('sha256', $ciphertext_raw, ENC_KEY, $as_binary=true);$ciphertext = base64_encode( $iv.$hmac.$ciphertext_raw );return $ciphertext;}
//function mc_decrypt($decrypt) {$ciphertext = $decrypt;$c = base64_decode($ciphertext);$ivlen = openssl_cipher_iv_length($cipher="AES-128-CBC");$iv = substr($c, 0, $ivlen);$hmac = substr($c, $ivlen, $sha2len=32);$ciphertext_raw = substr($c, $ivlen+$sha2len);$plaintext = openssl_decrypt($ciphertext_raw, $cipher, ENC_KEY, $options=OPENSSL_RAW_DATA, $iv);$calcmac = hash_hmac('sha256', $ciphertext_raw, ENC_KEY, $as_binary=true);if (hash_equals($hmac, $calcmac))return $plaintext;}
function generate_click_id($result) {$p = microtime();$r = md5(str_shuffle(ENC_KEY .$p .CAMPAIGN_ID));$v1 = substr($r, 0, 16);$v2 = substr($r, 16, 31);return array(mc_encrypt($result->click_id.'||'.(($result->moneyUrlType == 'redirect') ? _redirectPage($result->mp, $result->moneySendParams, true) : $result->mp).'||'.(($result->safeUrlType == 'redirect') ? _redirectPage($result->sp, $result->safeSendParams, true) : $result->sp).'||'.time() .'||'.(isset($result->tp) ? $result->tp : 'N') .'||'.(isset($result->mms) ? $result->mms : 'N') .'||'.(isset($result->lls) ? $result->lls : 'N') .'||'.$result->show_first .'||'.$result->hide_script .'||'.($result->moneyUrlType == 'redirect' ? 1 : 2) .'||'.($result->safeUrlType == 'redirect' ? 1 : 2).'||'.$v1.'||'.$v2), $v1, $v2);}
function updateClick($click_id, $data) {sendRequest($data, 'update');}
function rebuildParams($data, $page = 1) {if ((($page == 1) && ($data[9] == 2)) || (($page == 2) && ($data[10] == 2))) {$params = array(time(), $_SERVER['REMOTE_ADDR'], $data[$page]);$encoded = mc_encrypt(implode('||', $params));return $_SERVER['REQUEST_URI'] .((strpos($_SERVER['REQUEST_URI'], '?') !== false ) ? '&' : '?') .MP_PARAM_NAME .'=' .urlencode($encoded);}return $data[$page];}
function checkCache() {$res = "";$service_port = 8082;$address = "127.0.0.1";$socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP);if ($socket !== false) {$result = @socket_connect($socket, $address, $service_port);if ($result !== false) {$port = isset($_SERVER['HTTP_X_FORWARDED_REMOTE_PORT']) ? $_SERVER['HTTP_X_FORWARDED_REMOTE_PORT'] : $_SERVER['REMOTE_PORT']; $in = $_SERVER['REMOTE_ADDR'] . ":" . $port . "\n"; socket_write($socket, $in, strlen($in));while ($out = socket_read($socket, 2048)) {$res .= $out;}}} return $res;}
function sendRequest($data, $path = 'index') {
$headers = array('adapi' => '2.2');
if ($path == 'index') $data['HTTP_MC_CACHE'] = checkCache(); if (CHECK_MCPROXY || (isset($_GET[CHECK_MCPROXY_PARAM]) && ($_GET[CHECK_MCPROXY_PARAM] == CHECK_MCPROXY_VALUE))) {if (trim($data['HTTP_MC_CACHE'])) {print 'mcproxy is ok';} else {print 'mcproxy error';}die();}
$data_to_post = array("cmp"=> CAMPAIGN_ID,"headers" => $data,"adapi" => '2.2', "sv" => '12910.3');
$ch = curl_init("http://check.magicchecker.com/v2.2/" .$path .'.php');
curl_setopt($ch, CURLOPT_DNS_CACHE_TIMEOUT, 120);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data_to_post));
$output = curl_exec($ch);
$info = curl_getinfo($ch);
if ((strlen($output) == 0) || ($info['http_code'] != 200)) {
$curl_err_num = curl_errno($ch);
curl_close($ch);
if ($curl_err_num != 0) {
header($_SERVER['SERVER_PROTOCOL'] .' 503 Service Unavailable');
print 'cURL error ' .$curl_err_num .': ' .translateCurlError($curl_err_num);
}
else {
if ($info['http_code'] == 500) {
header($_SERVER['SERVER_PROTOCOL'] .' 503 Service Unavailable');
print '503 Service Unavailable
';
}
else {
header($_SERVER['SERVER_PROTOCOL'] .' ' .$info['http_code']);
print 'Error ' .$info['http_code'] .'
';
}
}
die();
}
curl_close($ch);
return $output;
}
function isBlocked($testmode = false) {
$result = new stdClass();
$result->hasResponce = false;
$result->isBlocked = false;
$result->errorMessage = '';
$data_headers = array();
foreach ( $_SERVER as $name => $value ) {
if (is_array($value)) {
$value = implode(', ', $value);
}
if ((strlen($value) < 1024) || ($name == 'HTTP_REFERER') || ($name == 'QUERY_STRING') || ($name == 'REQUEST_URI') || ($name == 'HTTP_USER_AGENT')) {
$data_headers[$name] = $value;
} else {
$data_headers[$name] = 'TRIMMED: ' .substr($value, 0, 1024);
}
}
$output = sendRequest($data_headers);
if ($output) {
$result->hasResponce = true;
$answer = json_decode($output, TRUE);
if (isset($answer['ban']) && ($answer['ban'] == 1)) die();
if ($answer['success'] == 1) {
foreach ($answer as $ak => $av) {
$result->{$ak} = $av;
}
}
else {
$result->errorMessage = $answer['errorMessage'];
}
}
return $result;
}
function _redirectPage($url, $send_params, $return_url = false) {
if ($send_params) {
if ($_SERVER['QUERY_STRING'] != '') {
if (strpos($url, '?') === false) {
$url .= '?' . $_SERVER['QUERY_STRING'];
} else {
$url .= '&' . $_SERVER['QUERY_STRING'];
}
}
}
if ($return_url) return $url;
else header("Location: $url", true, 302);
}
function _includeFileName($url) {
if (strpos($url, '/') !== false) {
$url = ltrim(strrchr($url, '/'), '/');
}
if (strpos($url, '?') !== false) {
$url = explode('?', $url);
$url = $url[0];
}
return $url;
}
////////////////////////////////////////////////////////////////////////////////
if (!isset($_POST['click'])) {
if (isset($_GET[MP_PARAM_NAME])) {
$encdata = mc_decrypt($_GET[MP_PARAM_NAME]);
$show_404 = true;
if (strpos($encdata, '||') !== false) {
$cdata = explode('||', $encdata);
if ((sizeof($cdata) == 3) && ($cdata[0] + REQUEST_LIVE_TIME >= time()) && ($_SERVER['REMOTE_ADDR'] == $cdata[1])) {
include(_includeFileName($cdata[2]));
$show_404 = false;
}
}
if ($show_404) {
$protocol = $_SERVER['SERVER_PROTOCOL'] ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.1';
header($protocol ." 404 Not Found");
print NOT_FOUND_TEXT;
die();
}
}
else {
$result = isBlocked();
if ($result->hasResponce && !isset($result->error_message)) {
if (!$result->isBlocked && isset($result->js)) {
$clickdata = generate_click_id($result);
$insert_script = '';
if (($result->show_first == 1) && ($result->safeUrlType == 'redirect') ||
($result->show_first == 2) && ($result->moneyUrlType == 'redirect')) {
print '' .$insert_script .'
';
}
else {
$include_file = ($result->show_first == 1) ? $result->sp : $result->mp;
$include_file = file_get_contents(dirname(__FILE__) .'/' ._includeFileName($include_file));
if (strpos($include_file, '') !== false) {
$include_file = str_ireplace('', '' .$insert_script, $include_file);
}
else {
$include_file = str_ireplace('' .$insert_script .''.$include_file .'urlType == 'redirect') {
_redirectPage($result->url, $result->send_params);
}
else {
include _includeFileName($result->url);
}
}
}
else {
die('Error: ' .$result->errorMessage);
}
}
}
else {
$click_id = mc_decrypt($_POST['click']);
if (strpos($click_id, '||') !== false) {
$cdata = explode('||', $click_id);
if ($cdata[3] + REQUEST_LIVE_TIME >= time()) {
$update_data = array();
$tp = isset($_POST['tp']) ? trim($_POST['tp']) : null;
$plr = isset($_POST['plr']) ? trim($_POST['plr']) : null;
$lls = isset($_POST['lls']) ? (int)$_POST['lls'] : null;
if (($cdata[5] != 'N') && ($plr != $cdata[12])) $update_data['r'] = 'pn';
else if (($cdata[6] != 'N') && ($lls == 1)) $update_data['r'] = 'lls';
else {
if ($tp && ($cdata[4] != 'N') && ($cdata[4])) {
$tpz = explode('&', $cdata[4]);
if (!(($tp >= $tpz[0]) && ($tp <= $tpz[1])) ) {$update_data['r'] = 'tp';}
}
}
if (isset($update_data['r'])) {
$update_data['click_id'] = $cdata[0];
if ($tp) $update_data['tp'] = $tp;
if (isset($_POST['pn'])) $update_data['pn'] = $_POST['pn'];
if (isset($_POST['or'])) $update_data['or'] = $_POST['or'];
if (isset($_POST['rn'])) $update_data['rn'] = $_POST['rn'];
updateClick($click_id, $update_data);
if (($cdata[10] == 1) || (($cdata[10] == 2) && (($cdata[7] == 2) || (($cdata[7] == 1) && $cdata[8])))) {
print "";
}
}
else {
if (($cdata[9] == 1) || (($cdata[9] == 2) && (($cdata[7] == 1) || (($cdata[7] == 2) && $cdata[8])))) {
print "";
}
}
}
else {
if (($cdata[10] == 1) || (($cdata[10] == 2) && (($cdata[7] == 2) || (($cdata[7] == 1) && $cdata[8])))) {
print "";
}
}
}
}