<?php
// обновление лога и статуса всех кроме click и miss
ignore_user_abort(true);
header('Content-Type: text/javascript; charset=UTF-8');
header('Expires: Thu, 18 Aug 1994 05:00:00 GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Access-Control-Allow-Methods: GET');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: *');
header('X-Robots-Tag: noindex');

require_once(__DIR__.'/data/conf.php');
@include(__DIR__.'/data/subsalt.php');
$ab_config['salt'] = $ab_config['subsalt'].$ab_config['salt'];

$ab_config['time'] = time();

// коннект к базе:
$antibot_db = new SQLite3(__DIR__.'/data/sqlite.db'); 
$antibot_db->busyTimeout(1500);
$antibot_db->exec("PRAGMA journal_mode = WAL;");

$newurl = isset($_GET['newurl']) ? trim(strip_tags($_GET['newurl'])) : '';
// если пусто, то из облака ответ:
$xxx = isset($_GET['xxx']) ? trim(strip_tags($_GET['xxx'])) : '';
// id клика:
$cid = isset($_GET['cid']) ? trim(preg_replace("/[^0-9\.]/","", $_GET['cid'])) : die();
// адблок 1 есть, 0 нету:
$adb = isset($_GET['a']) ? (int)trim(preg_replace("/[^0-9]/","", $_GET['a'])) : 0;
// recaptcha score если определялось на сайте:
$score = isset($_GET['score']) ? trim(preg_replace("/[^0-9\.]/","", $_GET['score'])) : 0;
// ширина монитора:
$w = isset($_GET['w']) ? (int)trim(preg_replace("/[^0-9]/","", $_GET['w'])) : 0;
// высота монитора:
$h = isset($_GET['h']) ? (int)trim(preg_replace("/[^0-9]/","", $_GET['h'])) : 0;
// ширина окна браузера:
$cw = isset($_GET['cw']) ? (int)trim(preg_replace("/[^0-9]/","", $_GET['cw'])) : 0;
// высота окна браузера:
$ch = isset($_GET['ch']) ? (int)trim(preg_replace("/[^0-9]/","", $_GET['ch'])) : 0;
// colordepth
$co = isset($_GET['co']) ? (int)trim(preg_replace("/[^0-9]/","", $_GET['co'])) : 0;
// pixeldepth
$pi = isset($_GET['pi']) ? (int)trim(preg_replace("/[^0-9]/","", $_GET['pi'])) : 0;
// причина блокировки:
$result = isset($_GET['result']) ? trim(strip_tags($_GET['result'])) : '';
$result = $antibot_db->escapeString($result);

//echo 'document.getElementById("content").innerHTML = "Loading 2...";';

if ($result == 'Wrong Click') {
//echo 'location.reload(true);';
echo 'document.location = location.href;';
$passed = 0;
} elseif ($newurl == '0') {
// заблоченный
$passed = 0;
} elseif ($newurl == '1') {
//echo 'location.reload(true);';
echo 'document.location = location.href;';
$passed = 1;
} elseif ($newurl != '') {
echo 'document.location = "'.$newurl.'";';
$passed = 1;
} else {
// ничего не делать
$passed = 0;
}

if ($xxx == '' AND $passed == 1) {
if ($ab_config['antibot_log_tests'] == 1) {
// разрешенный ответ из облака
$sql = 'UPDATE hits SET passed=\''.$passed.'\', recaptcha=\''.$score.'\', js_w=\''.$w.'\', js_h=\''.$h.'\', js_cw=\''.$cw.'\', js_ch=\''.$ch.'\', js_co=\''.$co.'\', js_pi=\''.$pi.'\', adblock=\''.$adb.'\' '.(($result != '') ? ', result=\''.$result.'\'' : '').' WHERE cid=\''.$cid.'\';';
$update = @$antibot_db->exec($sql);
if ($antibot_db->lastErrorMsg() == 'database is locked') {
file_put_contents(__DIR__.'/data/sqlerrorlog/'.date("YmdH", $ab_config['time']).floor(date("i")/10).'.txt', $sql."\n", FILE_APPEND | LOCK_EX);
}
}
file_put_contents(__DIR__.'/data/counters/auto_'.date('Ymd', $ab_config['time']), '1', FILE_APPEND | LOCK_EX);
} else {
if ($ab_config['antibot_log_tests'] == 1) {
// без обновления $passed:
$sql = 'UPDATE hits SET recaptcha=\''.$score.'\', js_w=\''.$w.'\', js_h=\''.$h.'\', js_cw=\''.$cw.'\', js_ch=\''.$ch.'\', js_co=\''.$co.'\', js_pi=\''.$pi.'\', adblock=\''.$adb.'\' '.(($result != '' AND $result != 'Wrong Click') ? ', result=\''.$result.'\'' : '').' WHERE cid=\''.$cid.'\';';
$update = @$antibot_db->exec($sql);
if ($antibot_db->lastErrorMsg() == 'database is locked') {
file_put_contents(__DIR__.'/data/sqlerrorlog/'.date("YmdH", $ab_config['time']).floor(date("i")/10).'.txt', $sql."\n", FILE_APPEND | LOCK_EX);
}
}
}
