public function sfw_die() { $key = cleantalk_get_api_key(); $sfw_die_page = file_get_contents(dirname(__FILE__) . "/sfw_die_page.html"); $sfw_die_page = str_replace("{REMOTE_ADDRESS}", $this->blocked_ip, $sfw_die_page); $sfw_die_page = str_replace("{REQUEST_URI}", $_SERVER['REQUEST_URI'], $sfw_die_page); $sfw_die_page = str_replace("{SFW_COOKIE}", md5($this->blocked_ip . $key), $sfw_die_page); @header('HTTP/1.0 403 Forbidden'); print $sfw_die_page; die; }
function cleantalk_buffer($buffer) { global $modSettings, $user_info, $smcFunc, $txt; if ($user_info['is_admin'] && isset($_GET['action']) && $_GET['action'] == 'admin') { global $forum_version; if (strpos($forum_version, 'SMF 2.0') === false) { $html = ''; } else { $html = '<span id="ct_anchor"></span><script> document.getElementById("ct_anchor").parentElement.style.height="0px"; document.getElementById("ct_anchor").parentElement.style.padding="0px"; document.getElementById("ct_anchor").parentElement.style.border="0px"; </script>'; } if (isset($_POST['ct_del_user'])) { foreach ($_POST['ct_del_user'] as $key => $value) { $result = $smcFunc['db_query']('', 'delete from {db_prefix}members where id_member=' . intval($key), array()); } } if (isset($_GET['ctcheckspam'])) { $result = $smcFunc['db_query']('', 'select * from {db_prefix}members limit 1', array()); $row = $smcFunc['db_fetch_assoc']($result); if (!isset($row['ct_marked'])) { $sql = 'ALTER TABLE {db_prefix}members ADD `ct_marked` INT DEFAULT 0 '; $result = $smcFunc['db_query']('', $sql, array()); } else { $sql = 'ALTER TABLE {db_prefix}members DROP COLUMN `ct_marked`'; $result = $smcFunc['db_query']('', $sql, array()); $sql = 'ALTER TABLE {db_prefix}members ADD `ct_marked` INT DEFAULT 0 '; $result = $smcFunc['db_query']('', $sql, array()); } $sql = 'UPDATE {db_prefix}members set ct_marked=0'; $result = $smcFunc['db_query']('', $sql, array()); $sql = 'SELECT * FROM {db_prefix}members where passwd<>""'; $result = $smcFunc['db_query']('', $sql, array()); $users = array(); $users[0] = array(); $data = array(); $data[0] = array(); $cnt = 0; while ($row = $smcFunc['db_fetch_assoc']($result)) { //$html.=serialize($row); $users[$cnt][] = array('name' => $row['member_name'], 'id' => $row['id_member'], 'email' => $row['email_address'], 'ip' => $row['member_ip'], 'joined' => $row['date_registered'], 'visit' => $row['last_login']); $data[$cnt][] = $row['email_address']; $data[$cnt][] = $row['member_ip']; if (sizeof($users[$cnt]) > 450) { $cnt++; $users[$cnt] = array(); $data[$cnt] = array(); } } $error = ""; for ($i = 0; $i < sizeof($users); $i++) { $send = implode(',', $data[$i]); $req = "data={$send}"; $opts = array('http' => array('method' => "POST", 'content' => $req)); $context = stream_context_create($opts); $result = @file_get_contents("https://api.cleantalk.org/?method_name=spam_check&auth_key=" . cleantalk_get_api_key(), 0, $context); $result = json_decode($result); if (isset($result->error_message)) { $error = $result->error_message; } else { if (isset($result->data)) { foreach ($result->data as $key => $value) { if ($key === filter_var($key, FILTER_VALIDATE_IP)) { if ($value->appears == 1) { $sql = 'UPDATE {db_prefix}members set ct_marked=1 where member_ip="' . $key . '"'; $result = $smcFunc['db_query']('', $sql, array()); } } else { if ($value->appears == 1) { $sql = 'UPDATE {db_prefix}members set ct_marked=1 where email_address="' . $key . '"'; $result = $smcFunc['db_query']('', $sql, array()); } } } } } } if ($error != '') { $html .= '<center><div style="border:2px solid red;color:red;font-size:16px;width:300px;padding:5px;"><b>' . $error . '</b></div><br></center>'; } } $result = $smcFunc['db_query']('', 'select * from {db_prefix}members limit 1', array()); $row = $smcFunc['db_fetch_assoc']($result); if (!isset($row['ct_marked'])) { $sql = 'ALTER TABLE {db_prefix}members ADD `ct_marked` INT DEFAULT 0 '; $result = $smcFunc['db_query']('', $sql, array()); } $sql = 'SELECT * FROM {db_prefix}members where ct_marked=1'; $result = $smcFunc['db_query']('', $sql, array()); if ($smcFunc['db_num_rows']($result) == 0 && isset($_GET['ctcheckspam'])) { $html .= '<center><div><b>' . $txt['cleantalk_check_users_nofound'] . '</b></div><br><br></center>'; } else { if ($smcFunc['db_num_rows']($result) > 0) { if (isset($_GET['ctcheckspam'])) { $html .= '<center><h3>' . $txt['cleantalk_check_users_done'] . '</h3><br /><br /></center>'; } $html .= '<center><table style="border-color:#666666;" border=1 cellspacing=0 cellpadding=3> <thead> <tr> <th>' . $txt['cleantalk_check_users_tbl_select'] . '</th> <th>' . $txt['cleantalk_check_users_tbl_username'] . '</th> <th>' . $txt['cleantalk_check_users_tbl_joined'] . '</th> <th>E-mail</th> <th>IP</th> <th>' . $txt['cleantalk_check_users_tbl_lastvisit'] . '</th> </tr> </thead> <tbody>'; $found = false; while ($row = $smcFunc['db_fetch_assoc']($result)) { $found = true; $html .= "<tr>\n\t\t\t\t<td><input type='checkbox' name=ct_del_user[" . $row['id_member'] . "] value='1' /></td>\n\t\t\t\t<td>" . $row['member_name'] . "</td>\n\t\t\t\t<td>" . date("Y-m-d H:i:s", $row['date_registered']) . "</td>\n\t\t\t\t<td><a target='_blank' href='https://cleantalk.org/blacklists/" . $row['email_address'] . "'><img src='https://cleantalk.org/images/icons/external_link.gif' border='0'/> " . $row['email_address'] . "</a></td>\n\t\t\t\t<td><a target='_blank' href='https://cleantalk.org/blacklists/" . $row['member_ip'] . "'><img src='https://cleantalk.org/images/icons/external_link.gif' border='0'/> " . $row['member_ip'] . "</a></td>\n\t\t\t\t<td>" . date("Y-m-d H:i:s", $row['last_login']) . "</td>\n\t\t\t\t</tr>"; } $html .= "</tbody></table><br /><input type=submit name='ct_delete_checked' value='" . $txt['cleantalk_check_users_tbl_delselect'] . "' onclick='return confirm(\"" . $txt['cleantalk_check_users_confirm'] . "\")'> <input type=submit name='ct_delete_all' value='" . $txt['cleantalk_check_users_tbl_delall'] . "' onclick='return confirm(\"" . $txt['cleantalk_check_users_confirm'] . "\")'><br />" . $txt['cleantalk_check_users_tbl_delnotice'] . "<br /><br /></center>"; } } $html .= "<center><button style=\"width:20%;\" id=\"check_spam\" onclick=\"location.href=location.href.replace('&finishcheck=1','').replace('&ctcheckspam=1','')+'&ctcheckspam=1';return false;\">" . $txt['cleantalk_check_users_button'] . "</button><br />" . $txt['cleantalk_check_users_button_after'] . "</center>"; $buffer = str_replace("%CLEANTALK_CHECK_USERS%", $html, $buffer); } return $buffer; }
/** * Calling by hook integrate_load_theme */ function cleantalk_load() { global $context, $user_info, $modSettings; if (isset($context['template_layers']) && is_array($context['template_layers']) && in_array('body', $context['template_layers']) && ($user_info['is_guest'] || $user_info['posts'] == 0) && !cleantalk_is_valid_js()) { $context['html_headers'] .= cleantalk_print_js_input(); } if (isset($context['template_layers']) && $context['template_layers'] === array('html', 'body') && array_key_exists('cleantalk_tell_others', $modSettings) && $modSettings['cleantalk_tell_others']) { // add "tell others" templates $context['template_layers'][] = 'cleantalk'; } if (isset($_POST['cleantalk_api_key'])) { $ct = new Cleantalk(); $ct->server_url = CT_SERVER_URL; $ct_request = new CleantalkRequest(); $ct_request->auth_key = cleantalk_get_api_key(); $ct_request->response_lang = 'en'; // SMF use any charset and language $ct_request->agent = CT_AGENT_VERSION; $ct_request->sender_email = '*****@*****.**'; $ip = isset($user_info['ip']) ? $user_info['ip'] : $_SERVER['REMOTE_ADDR']; $ct_request->sender_ip = $ct->ct_session_ip($ip); $ct_request->sender_nickname = 'CleanTalk'; $ct_request->message = 'This message is a test to check the connection to the CleanTalk servers.'; $ct_request->submit_time = 10; $ct_request->js_on = 1; $ct_result = $ct->isAllowMessage($ct_request); } }