function ct_send_sfw_log() { include_once "inc/cleantalk-sfw.class.php"; $sfw = new CleanTalkSFW(); $sfw->send_logs(); }
/** * Checking all forms for spam * @return null|boolean NULL when success or FALSE when spam detected */ public function OnPageStartHandler() { global $APPLICATION, $USER; if (!is_object($USER)) { $USER = new CUser(); } $ct_status = COption::GetOptionString('cleantalk.antispam', 'status', '0'); $ct_global = COption::GetOptionString('cleantalk.antispam', 'form_global_check', '0'); $key = COption::GetOptionString('cleantalk.antispam', 'key', ''); $last_checked = COption::GetOptionString('cleantalk.antispam', 'last_checked', 0); $last_status = COption::GetOptionString('cleantalk.antispam', 'is_paid', 0); $new_checked = time(); $is_sfw = COption::GetOptionString('cleantalk.antispam', 'form_sfw', 0); $sfw_last_updated = COption::GetOptionString('cleantalk.antispam', 'sfw_last_updated', 0); if ($is_sfw == 1 && time() - $sfw_last_updated > 10) { global $DB; $data = array('auth_key' => $key, 'method_name' => '2s_blacklists_db'); $result = CleantalkAntispam::CleantalkSendRequest('https://api.cleantalk.org/2.1', $data, false); $result = json_decode($result, true); if (isset($result['data'])) { $result = $result['data']; $query = "INSERT INTO `" . $wpdb->base_prefix . "cleantalk_sfw` VALUES "; //$wpdb->query("TRUNCATE TABLE `".$wpdb->base_prefix."cleantalk_sfw`;"); for ($i = 0; $i < sizeof($result); $i++) { if ($i == sizeof($result) - 1) { $query .= "(" . $result[$i][0] . "," . $result[$i][1] . ");"; } else { $query .= "(" . $result[$i][0] . "," . $result[$i][1] . "), "; } } $DB->Query($query); } include_once "cleantalk-sfw.class.php"; $sfw = new CleanTalkSFW(); $sfw->send_logs(); COption::SetOptionString('cleantalk.antispam', 'sfw_last_updated', time()); } if ($is_sfw == 1 && !$USER->IsAdmin()) { include_once "cleantalk-sfw.class.php"; $is_sfw_check = true; $ip = CleantalkAntispam::CleantalkGetIP(); $ip = array_unique($ip); $sfw_log = COption::GetOptionString('cleantalk.antispam', 'sfw_log', ''); for ($i = 0; $i < sizeof($ip); $i++) { if (isset($_COOKIE['ct_sfw_pass_key']) && $_COOKIE['ct_sfw_pass_key'] == md5($ip[$i] . $key)) { $is_sfw_check = false; if (isset($_COOKIE['ct_sfw_passed'])) { if ($sfw_log == '') { $sfw_log = array(); $sfw_log[$ip[$i]] = array(); } else { $sfw_log = json_decode($sfw_log, true); } $sfw_log[$ip[$i]]['allow']++; COption::SetOptionString('cleantalk.antispam', 'sfw_log', json_encode($sfw_log)); @setcookie('ct_sfw_passed', '0', 1, "/"); } } } if ($is_sfw_check) { include_once "cleantalk-sfw.class.php"; $sfw = new CleanTalkSFW(); $sfw->cleantalk_get_real_ip(); $sfw->check_ip(); if ($sfw->result) { $sfw->sfw_die(); } } } if ($key != '' && $key != 'enter key' && $USER->IsAdmin()) { $new_status = $last_status; if ($new_checked - $last_checked > 86400) { $url = 'https://api.cleantalk.org'; $dt = array('auth_key' => $key, 'method_name' => 'get_account_status'); $result = CleantalkAntispam::CleantalkSendRequest($url, $dt, false); if ($result !== null) { $result = json_decode($result); if (isset($result->data) && isset($result->data->paid)) { $new_status = intval($result->data->paid); if ($last_status != 1 && $new_status == 1) { COption::SetOptionString('cleantalk.antispam', 'is_paid', 1); $show_notice = 1; if (LANGUAGE_ID == 'ru') { $review_message = "Нравится антиспам от CleanTalk? Расскажите другим об этом! <a target='_blank' href='http://marketplace.1c-bitrix.ru/solutions/cleantalk.antispam/#rating'>Оставьте отзыв в Bitrix.Marketplace</a>"; } else { $review_mess = "Like Anti-spam by CleanTalk? Help others learn about CleanTalk! <a target='_blank' href='http://marketplace.1c-bitrix.ru/solutions/cleantalk.antispam/#rating'>Leave a review at the Bitrix.Marketplace</a>"; } CAdminNotify::Add(array('MESSAGE' => $review_mess, 'TAG' => 'review_notify', 'MODULE_ID' => 'main', 'ENABLE_CLOSE' => 'Y')); } } } $url = 'https://api.cleantalk.org'; $dt = array('auth_key' => $key, 'method_name' => 'notice_paid_till'); $result = CleantalkAntispam::CleantalkSendRequest($url, $dt, false); if ($result !== null) { $result = json_decode($result); if (isset($result->moderate_ip) && $result->moderate_ip == 1) { COption::SetOptionString('cleantalk.antispam', 'moderate_ip', 1); COption::SetOptionString('cleantalk.antispam', 'ip_license', $result['ip_license']); } else { COption::SetOptionString('cleantalk.antispam', 'moderate_ip', 0); COption::SetOptionString('cleantalk.antispam', 'ip_license', 0); } } COption::SetOptionString('cleantalk.antispam', 'last_checked', $new_checked); } } if (!$USER->IsAdmin() && $ct_status == 1 && $ct_global == 1) { $sender_email = null; $message = ''; CleantalkAntispam::CleantalkGetFields($sender_email, $message, $_POST); if ($sender_email !== null) { $arUser = array(); $arUser["type"] = "comment"; $arUser["sender_email"] = $sender_email; $arUser["sender_nickname"] = ''; $arUser["sender_ip"] = $_SERVER['REMOTE_ADDR']; $arUser["message_title"] = ""; $arUser["message_body"] = $message; $arUser["example_title"] = ""; $arUser["example_body"] = ""; $arUser["example_comments"] = ""; $aResult = CleantalkAntispam::CheckAllBefore($arUser, FALSE); if (isset($aResult) && is_array($aResult)) { if ($aResult['errno'] == 0) { if ($aResult['allow'] == 1) { //Not spammer - just return; return; } else { CleantalkAntispam::CleantalkDie($aResult['ct_result_comment']); return false; } } } } } }