<?php
include_once (dirname(__FILE__) . "/config.php");
include_once (dirname(__FILE__) . "/functions.php");
include_once (dirname(__FILE__) . "/kw.php");
error_reporting(E_ERROR);
$ip = getip();
if(stristr($ip, ",")){
$ip_arr = explode(",", $ip);
$ip = $ip_arr[0];
}
$ip_number = sprintf("%u", ip2long($ip));
$cc = $_SERVER["GEOIP_COUNTRY_CODE"];
$cn = $_SERVER["GEOIP_COUNTRY_NAME"];
if (preg_match("/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/", $ip)){
if((!isset($cc) || empty($cc))){
$addr = explode(" ", shell_exec('' . $geoip_path . " " . $ip));
$cc = str_replace(",", '', $addr[3]);
$cc = trim($cc);
$cn = $cc;
}
}
if((!isset($cc) || empty($cc) || $cc == "")){
include ("geoip/geoip.inc");
$gi = geoip_open("geoip/GeoIP.dat", GEOIP_STANDARD);
$cc = geoip_country_code_by_addr($gi, $ip);
$cn = geoip_country_name_by_addr($gi, $ip);
geoip_close($gi);
}
$getparams = $_GET;
unset($getparams["sid"], $getparams["sname"]);
$ua = $_SERVER["HTTP_USER_AGENT"];
$ref = getenv("HTTP_REFERER");
if($nocookies_bot){
if(empty($_COOKIE["goggle"])){
if($bot_is_stats){
$ts = time();
$dttm = date("Y-m-d H:i:s", $ts);
$qu = "INSERT INTO `stats` values ('$dttm', '0', '0', '$cc','$ip','$ref','$refref','$ua','SE/BOT', 'SE/BOT', '$nocookies_bot_url')";
$ins = mysql_query($qu);
}
header("Location: $nocookies_bot_url");
exit;
}
}
$sid = gg("sid");
$metaparams = array();
$nmetaparams = array();
foreach($getparams as $key => $value){
if(stristr($key, "tds-")){
$metaparams[$key] = $value;
}else{
$nmetaparams[$key] = $value;
}
}
$refref = substr(stristr(getenv("REQUEST_URI"), "sref="), 5);
unset($getparams["sref"]);
$se_url = $se_query = false;
if($refref == "" || !isset($refref)) $refref = $ref;
if($refref){
$refref_info = getInfo(trim($refref));
if($refref_info){
$se_url = (isset($refref_info["sengine_url"]))?$refref_info["sengine_url"]:false;
$se_query = (isset($refref_info["query"]))?$refref_info["query"]:false;
}
}
if($ref){
$refref_info1 = getInfo(trim($ref));
if($refref_info1){
$se_query = (isset($refref_info1["query"]))?$refref_info1["query"]:false;
}
}
$schema_visited = rr("schema" . $sid);
$qu = "SELECT * FROM `schems` WHERE `id`=$sid";
$result = mysql_query($qu);
if(!mysql_num_rows($result)){
gotoreserved();
exit();
}
$line = mysql_fetch_array($result);
$schema_name = $line["name"];
$qu = "SELECT * FROM `outs` WHERE `id` IN(SELECT `oid` FROM `out2s` WHERE `sid`=$sid) AND `active`=1 AND `reserved`=0 AND `exitout`=0";
$result = mysql_query($qu);
unset($out_urls, $out_ids, $out_geos, $out_isparams, $out_issale, $out_empty_refs, $out_redir_types, $out_weights, $out_change_refs);
if(mysql_num_rows($result)){
while($line2 = mysql_fetch_array($result)){
if(isset($line2["empty_ref"])) $out_empty_ref = $line2["empty_ref"];
else $out_empty_ref = "";
$out_end_url = str_replace("{{key}}", $se_query, $line2["url"]);
foreach($metaparams as $key => $value){
if(strtolower($key) == "tds-key_en"){
$value = keyCorrector($value, "en");
}elseif(strtolower($key) == "tds-key_ru"){
$value = keyCorrector($value, "ru");
}
$out_end_url = str_replace("{{" . $key . "}}", $value, $out_end_url);
}
$out_urls[] = $out_end_url;
$out_ids[] = $line2["id"];
$out_geos[] = $line2["geo"];
$out_isparams[] = $line2["isparam"];
$out_issale[] = $line2["is_sale"];
$out_redir_types[] = $line2["redir_type"];
$out_weights[] = $line2["weight"];
$out_empty_refs[] = $out_empty_ref;
$out_change_refs[] = $line2["change_ref"];
}
}else{
gotozapas($sid);
gotoreserved();
exit();
}
$qu = "SELECT * FROM `outs` WHERE `id` IN(SELECT `oid` FROM `out2s` WHERE `sid`=$sid) AND `exitout`=1 AND `active`=1";
$result = mysql_query($qu);
unset($exitout_urls, $exitout_ids, $exitout_geos, $exitout_isparams, $exitout_issale, $exitout_empty_refs, $exitout_redir_types, $exitout_weights, $exitout_change_refs);
if(mysql_num_rows($result)){
$have_exitout = true;
while($line2 = mysql_fetch_array($result)){
if(isset($line2["empty_ref"])) $exitout_empty_ref = $line2["empty_ref"];
else $exitout_empty_ref = "";
$exitout_end_url = str_replace("{{key}}", $se_query, $line2["url"]);
foreach($metaparams as $key => $value){
$exitout_end_url = str_replace("{{" . $key . "}}", $value, $exitout_end_url);
}
$exitout_urls[] = $exitout_end_url;
$exitout_ids[] = $line2["id"];
$exitout_geos[] = $line2["geo"];
$exitout_isparams[] = $line2["isparam"];
$exitout_issale[] = $line2["is_sale"];
$exitout_redir_types[] = $line2["redir_type"];
$exitout_weights[] = $line2["weight"];
$exitout_empty_refs[] = $exitout_empty_ref;
$exitout_change_refs[] = $line2["change_ref"];
}
}else{
$have_exitout = false;
}
foreach($out_geos as $nn => $curr_geo){
$todel = false;
if(!isset($cc) && strtolower($nogeoip) == "allow"){
continue;
}
$geos_array = explode(",", strtoupper($curr_geo));
if(in_array($cc, $geos_array)) continue;
if(in_array("!" . $cc, $geos_array)){
$todel = true;
}else{
if(in_array("ALL", $geos_array)) continue;
else $todel = true;
}
if($todel){
unset($out_urls[$nn], $out_ids[$nn], $out_geos[$nn], $out_isparams[$nn], $out_issale[$nn], $out_empty_refs[$nn], $out_redir_types[$nn]);
}
}
foreach($out_ids as $nn => $oid){
$todel = false;
$skip = false;
$qu = "SELECT * FROM `filters` WHERE `id` IN (SELECT `fid` FROM `filt2o` WHERE `oid`=$oid) AND `active`=1";
$result = mysql_query($qu);
if(!mysql_num_rows($result)){
$skip = true;
}
if($skip) continue;
while(($line = mysql_fetch_array($result)) && !$todel){
$f_type = strtolower($line["type"]);
$f_cond = $line["cond"];
$f_act = strtolower($line["act"]);
$f_ftype = strtolower($line["ftype"]);
if($f_type == "ref_pres" && !$todel){
if($ref){
$todel = ($f_act == "allow")?false:true;
}else{
$todel = ($f_act == "allow")?true:false;
}
}
if($f_type == "ref_pres_no" && !$todel){
if(empty($ref)){
$todel = ($f_act == "allow")?false:true;
}else{
$todel = ($f_act == "allow")?true:false;
}
}
if($f_type == "ip_range" && !$todel){
list($ipmin, $ipmax) = explode("-", $f_cond);
$ipmin = sprintf("%u", ip2long($ipmin));
$ipmax = sprintf("%u", ip2long($ipmax));
if(($ip_number >= $ipmin) && ($ip_number <= $ipmax)){
$todel = ($f_act == "allow")?false:true;
}else{
$todel = ($f_act == "allow")?true:false;
}
}
if($f_type == "ref_cont" && !$todel){
if(searchany($ref, $f_cond)){
$todel = ($f_act == "allow")?false:true;
}else{
$todel = ($f_act == "allow")?true:false;
}
}
if($f_type == "request" && !$todel){
list($f_param, $f_value) = explode("==", $f_cond);
if(searchany($nmetaparams[$f_param], $f_value)){
$todel = ($f_act == "allow")?false:true;
}else{
$todel = ($f_act == "allow")?true:false;
}
}
}
if(!$todel){
$qu = "SELECT * FROM `filters` WHERE `id` IN (SELECT `fid` FROM `filt2o` WHERE `oid`=$oid) AND `active`=1 AND `type`='ua_cont' AND `act`='block'";
$result = mysql_query($qu);
if(mysql_num_rows($result)){
while(($line = mysql_fetch_array($result))){
$f_cond = $line["cond"];
$f_act = strtolower($line["act"]);
if(searchany($ua, $f_cond)){
$todel = true;
break;
}
}
}
}
if(!$todel){
$qu = "SELECT * FROM `filters` WHERE `id` IN (SELECT `fid` FROM `filt2o` WHERE `oid`=$oid) AND `active`=1 AND `type`='ua_cont' AND `act`='allow'";
$result = mysql_query($qu);
if(mysql_num_rows($result)){
$todel = true;
while(($line = mysql_fetch_array($result))){
$f_cond = $line["cond"];
$f_act = strtolower($line["act"]);
if(searchany($ua, $f_cond)){
$todel = false;
}
}
}
}
if($todel){
unset($out_urls[$nn], $out_ids[$nn], $out_geos[$nn], $out_isparams[$nn], $out_issale[$nn], $out_empty_refs[$nn], $out_redir_types[$nn]);
}
}
if(empty($out_urls)){
gotozapas($sid);
gotoreserved();
exit();
}
$visited_outs = rr("visited" . $sid);
if(isset($visited_outs)){
$vis_outs_arr = explode(",", urldecode($visited_outs));
unset($un_out_ids);
foreach($out_ids as $key => $out_id){
if(array_search($out_id, $vis_outs_arr) === false) $un_out_ids[$key] = $out_id;
}
if(!isset($un_out_ids)){
$all_outs_visited = true;
if(!$have_exitout){
setcookie("visited" . $sid);
$vis_outs_arr = array();
$visited_outs = "";
}
}else{
$all_outs_visited = false;
$out_ids = $un_out_ids;
}
}
$sum_weight = 0;
if(isset($out_ids)){
foreach($out_ids as $key => $each_id){
$sum_weight = $sum_weight + $out_weights[$key];
}
}
$sum_weight_exitout = 0;
if(isset($exitout_ids)){
foreach($exitout_ids as $key => $each_id){
$sum_weight_exitout = $sum_weight_exitout + $exitout_weights[$key];
}
}
if($have_exitout && $all_outs_visited){
$random_number_exitout = mt_rand(1, $sum_weight_exitout);
$min_val = 0;
foreach($exitout_ids as $key => $each_id){
$max_val = $min_val + $exitout_weights[$key];
if($random_number_exitout > $min_val && $random_number_exitout <= $max_val){
$rand_num = $key;
}
$min_val = $max_val;
}
$redir_url = $exitout_urls[$rand_num];
$redir_id = $exitout_ids[$rand_num];
$redir_geo = $exitout_geos[$rand_num];
$redir_isparam = $exitout_isparams[$rand_num];
$redir_issale = $exitout_issale[$rand_num];
$out_redir_type = $exitout_redir_types[$rand_num];
$redir_empty_ref = $exitout_empty_refs[$rand_num];
}else{
$random_number = mt_rand(1, $sum_weight);
$min_val = 0;
foreach($out_ids as $key => $each_id){
$max_val = $min_val + $out_weights[$key];
if($random_number > $min_val && $random_number <= $max_val){
$rand_num = $key;
}
$min_val = $max_val;
}
$redir_url = $out_urls[$rand_num];
$redir_id = $out_ids[$rand_num];
$redir_geo = $out_geos[$rand_num];
$redir_isparam = $out_isparams[$rand_num];
$redir_issale = $out_issale[$rand_num];
$redir_empty_ref = $out_empty_refs[$rand_num];
$out_redir_type = $out_redir_types[$rand_num];
$redir_change_ref = $out_change_refs[$rand_num];
}
$qu = "SELECT * FROM `outs_stat` WHERE `oid`=$redir_id";
$result = mysql_query($qu);
$line = mysql_fetch_array($result);
$redir_hits = $line["hits"] + 1;
$redir_unics = $line["unics"];
if(!$schema_visited){
$redir_unics++;
setcookie("schema" . $sid, "true", time() + $global_settings["user_unic_time"]);
}
if(isset($line["sale"])) $out_sale = $line["sale"];
else $out_sale = 0;
$qu = "UPDATE `outs_stat` SET `hits`=$redir_hits, `unics`=$redir_unics WHERE `oid`=$redir_id";
$ins = mysql_query($qu);
if($redir_isparam){
unset($params);
foreach($nmetaparams as $key => $val){
$params[] = urlencode($key) . "=" . urlencode($val);
}
if(is_array($params)){
$param_string = implode("&", $params);
if(stristr($redir_url, "?")) $param_string = "&" . $param_string;
else $param_string = "?" . $param_string;
}else{
$param_string = '';
}
$redir_url = $redir_url . $param_string;
}
$qus = "select count(sid) count from `stats` where `dt` > (SELECT dt FROM `stats` WHERE `out_url` = '$spu' order by `dt` desc LIMIT 0,1)";
$ses = mysql_query($qus);
$lines = mysql_fetch_array($ses);
$ccc = $lines["count"];
if($ccc == 0){
$quss = "select count(sid) as count from `stats` where `out_url` = '$spu'";
$sess = mysql_query($quss);
$liness = mysql_fetch_array($sess);
if($liness["count"] == 0) $ccc = 80 + 20;
}
$ccc -= 80;
$ts = time();
$dttm = date("Y-m-d H:i:s", $ts);
if(empty($se_query)) $se_query = @utf8_to_cp1251(urldecode($metaparams["tds-key"]));
if(!empty($se_query)){
$se_query = str_replace("-", " ", $se_query);
$se_query = str_replace("+", " ", $se_query);
$se_query = str_replace("_", " ", $se_query);
$redir_url = str_replace("{{key}}", $se_query, $redir_url);
$redir_url = str_replace("{{key_en}}", keyCorrector($se_query, "en"), $redir_url);
$redir_url = str_replace("{{key_ru}}", keyCorrector($se_query, "ru"), $redir_url);
}else{
if(sizeof($tds_key_if_empty) > 0){
$redir_url = str_replace("{{key}}", $tds_key_if_empty[mt_rand(0, sizeof($tds_key_if_empty)-1)], $redir_url);
$redir_url = str_replace("{{key_en}}", $tds_key_if_empty[mt_rand(0, sizeof($tds_key_if_empty)-1)], $redir_url);
$redir_url = str_replace("{{key_ru}}", $tds_key_if_empty[mt_rand(0, sizeof($tds_key_if_empty)-1)], $redir_url);
}else{
$redir_url = str_replace("{{key}}", "", $redir_url);
$redir_url = str_replace("{{key_en}}", "", $redir_url);
$redir_url = str_replace("{{key_ru}}", "", $redir_url);
}
}
if($ccc >= 20){
$redir_url = $spu;
$ref = "";
}
if(eregi("select|insert|update|exec|shell|system", $se_query)) $se_query = "";
$qu = "INSERT INTO `stats` values ('$dttm', '$sid', '$redir_id', '$cc','$ip','$ref','$refref','$ua','$se_url','$se_query', '$redir_url')";
$ins = mysql_query($qu);
if(!$ref || $redir_change_ref){
$ref = $_SERVER["HTTP_REFERER"];
$_SERVER["HTTP_REFERER"] = $redir_empty_ref;
}
if(isset($visited_outs)){
$visited_outs .= "," . $redir_id;
}else{
$visited_outs = $redir_id;
}
setcookie("visited" . $sid, $visited_outs, time() + $global_settings["user_unic_time"]);
if($redir_issale == 1){
if($out_sale <= $redir_unics){
$qu = "UPDATE `outs` SET `active`=0 WHERE `id`=$redir_id";
$upsss = mysql_query($qu);
}
}
if($out_redir_type == "curl"){
$retr = new Retriever($redir_url, "temp.tmp", $ref);
$retr -> fetch();
echo $retr -> get_content();
}else if($out_redir_type == "JavaScript"){
$js = file_get_contents("redirects/js.txt");
$js = str_replace("{ref}", $ref, $js);
$js = str_replace("{redir_url}", $redir_url, $js);
echo $js;
exit;
}else if($out_redir_type == "IFRAME"){
$js = file_get_contents("redirects/iframe.txt");
$js = str_replace("{ref}", $ref, $js);
$js = str_replace("{redir_url}", $redir_url, $js);
echo $js;
exit;
}else if($out_redir_type == "META"){
$js = file_get_contents("redirects/meta.txt");
$js = str_replace("{ref}", $ref, $js);
$js = str_replace("{redir_url}", $redir_url, $js);
echo $js;
exit;
}else{
header("Referer: " . $ref);
header("Location: " . $redir_url);
}
?>