Version Description
August 4 2016 = * Added Anti-Spam protection for Quick Event Manager. * Improved bulk spam test for users. Now the plugin does not mark as Spam user, if the user IP address has spam activity more than 30 days ago. * Fixed bulk spam test for comments. Previous version had a conflict between spam history for IP and Email. * Minor fix function to get the API key.
Download this release
Release Info
Developer | shagimuratov |
Plugin | Spam protection, AntiSpam, FireWall by CleanTalk |
Version | 5.45.2 |
Comparing to | |
See all releases |
Code changes from version 5.45.1 to 5.45.2
- cleantalk.php +3 -3
- inc/cleantalk-admin.php +3 -0
- inc/cleantalk-ajax.php +13 -2
- inc/cleantalk-comments-checkspam.js +1 -1
- inc/cleantalk-comments.php +12 -16
- inc/cleantalk-users-checkspam.js +1 -1
- inc/cleantalk-users.php +23 -5
- inc/cleantalk.class.php +65 -13
- readme.txt +18 -6
cleantalk.php
CHANGED
@@ -3,12 +3,12 @@
|
|
3 |
Plugin Name: Spam Protection by CleanTalk
|
4 |
Plugin URI: http://cleantalk.org
|
5 |
Description: Max power, all-in-one, captcha less, premium anti-spam plugin. No comment spam, no registration spam, no contact spam, protects any WordPress forms. Formerly Anti-Spam by CleanTalk.
|
6 |
-
Version: 5.45.
|
7 |
Author: СleanTalk <welcome@cleantalk.org>
|
8 |
Author URI: http://cleantalk.org
|
9 |
*/
|
10 |
-
$cleantalk_plugin_version='5.45.
|
11 |
-
$ct_agent_version = 'wordpress-
|
12 |
$cleantalk_executed=false;
|
13 |
$ct_sfw_updated = false;
|
14 |
|
3 |
Plugin Name: Spam Protection by CleanTalk
|
4 |
Plugin URI: http://cleantalk.org
|
5 |
Description: Max power, all-in-one, captcha less, premium anti-spam plugin. No comment spam, no registration spam, no contact spam, protects any WordPress forms. Formerly Anti-Spam by CleanTalk.
|
6 |
+
Version: 5.45.2
|
7 |
Author: СleanTalk <welcome@cleantalk.org>
|
8 |
Author URI: http://cleantalk.org
|
9 |
*/
|
10 |
+
$cleantalk_plugin_version='5.45.2';
|
11 |
+
$ct_agent_version = 'wordpress-5452';
|
12 |
$cleantalk_executed=false;
|
13 |
$ct_sfw_updated = false;
|
14 |
|
inc/cleantalk-admin.php
CHANGED
@@ -4,6 +4,9 @@ $ct_plugin_basename = 'cleantalk-spam-protect/cleantalk.php';
|
|
4 |
$ct_options=ct_get_options();
|
5 |
$ct_data=ct_get_data();
|
6 |
|
|
|
|
|
|
|
7 |
add_filter( 'activity_box_end', 'cleantalk_custom_glance_items', 10, 1 );
|
8 |
function cleantalk_custom_glance_items( )
|
9 |
{
|
4 |
$ct_options=ct_get_options();
|
5 |
$ct_data=ct_get_data();
|
6 |
|
7 |
+
// How many days we use an IP to detect spam.
|
8 |
+
$ct_ip_penalty_days = 30;
|
9 |
+
|
10 |
add_filter( 'activity_box_end', 'cleantalk_custom_glance_items', 10, 1 );
|
11 |
function cleantalk_custom_glance_items( )
|
12 |
{
|
inc/cleantalk-ajax.php
CHANGED
@@ -283,7 +283,7 @@ function ct_ajax_hook()
|
|
283 |
$nickname=null;
|
284 |
$contact = true;
|
285 |
$subject = '';
|
286 |
-
|
287 |
//
|
288 |
// Skip test if Custom contact forms is disabled.
|
289 |
//
|
@@ -498,7 +498,18 @@ function ct_ajax_hook()
|
|
498 |
print_r($output);
|
499 |
die;
|
500 |
}
|
501 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
502 |
{
|
503 |
print $ct_result->comment;
|
504 |
die();
|
283 |
$nickname=null;
|
284 |
$contact = true;
|
285 |
$subject = '';
|
286 |
+
|
287 |
//
|
288 |
// Skip test if Custom contact forms is disabled.
|
289 |
//
|
498 |
print_r($output);
|
499 |
die;
|
500 |
}
|
501 |
+
//Quick event manager
|
502 |
+
else if($_POST['action']=='qem_validate_form'){
|
503 |
+
$errors[] = 'registration_forbidden';
|
504 |
+
$result = Array(
|
505 |
+
success => 'false',
|
506 |
+
errors => $errors,
|
507 |
+
title => $ct_result->comment
|
508 |
+
);
|
509 |
+
print json_encode($result);
|
510 |
+
die();
|
511 |
+
}
|
512 |
+
else
|
513 |
{
|
514 |
print $ct_result->comment;
|
515 |
die();
|
inc/cleantalk-comments-checkspam.js
CHANGED
@@ -88,7 +88,7 @@ function ct_send_comments()
|
|
88 |
}
|
89 |
}
|
90 |
},
|
91 |
-
timeout:
|
92 |
});
|
93 |
}
|
94 |
function ct_show_info()
|
88 |
}
|
89 |
}
|
90 |
},
|
91 |
+
timeout: 15000
|
92 |
});
|
93 |
}
|
94 |
function ct_show_info()
|
inc/cleantalk-comments.php
CHANGED
@@ -280,11 +280,8 @@ add_action( 'wp_ajax_ajax_check_comments', 'ct_ajax_check_comments' );
|
|
280 |
function ct_ajax_check_comments()
|
281 |
{
|
282 |
check_ajax_referer( 'ct_secret_nonce', 'security' );
|
283 |
-
global $ct_options;
|
284 |
$ct_options = ct_get_options();
|
285 |
-
|
286 |
-
// How many days we use an IP to detect spam.
|
287 |
-
$penalty_days = 30;
|
288 |
|
289 |
$args_unchecked = array(
|
290 |
'meta_query' => array(
|
@@ -316,6 +313,7 @@ function ct_ajax_check_comments()
|
|
316 |
$data[]=$u[$i]->comment_author_IP;
|
317 |
$data[]=$u[$i]->comment_author_email;
|
318 |
}
|
|
|
319 |
$data=implode(',',$data);
|
320 |
|
321 |
$request=Array();
|
@@ -327,7 +325,7 @@ function ct_ajax_check_comments()
|
|
327 |
{
|
328 |
require_once('cleantalk.class.php');
|
329 |
}
|
330 |
-
$result=sendRawRequest($url, $request);
|
331 |
|
332 |
$result=json_decode($result);
|
333 |
|
@@ -339,31 +337,29 @@ function ct_ajax_check_comments()
|
|
339 |
{
|
340 |
for($i=0;$i<sizeof($u);$i++)
|
341 |
{
|
342 |
-
$
|
343 |
-
$
|
|
|
344 |
|
345 |
add_comment_meta($u[$i]->comment_ID,'ct_checked',date("Y-m-d H:m:s"),true);
|
346 |
$uip=$u[$i]->comment_author_IP;
|
347 |
-
if(empty($uip))continue;
|
348 |
$uim=$u[$i]->comment_author_email;
|
349 |
-
if(empty($uim))continue;
|
350 |
|
351 |
if(isset($result->data->$uip) && $result->data->$uip->appears == 1)
|
352 |
{
|
353 |
-
$
|
354 |
-
$
|
355 |
}
|
356 |
if(isset($result->data->$uim) && $result->data->$uim->appears==1)
|
357 |
{
|
358 |
-
$
|
359 |
-
$update_time = strtotime($result->data->$uim->updated) > $update_time ? strtotime($result->data->$uim->updated) : $update_time;
|
360 |
}
|
361 |
|
362 |
// Do not use the spam records becaus it was a spammer far time ago.
|
363 |
-
if (time() - $
|
364 |
-
$
|
365 |
}
|
366 |
-
if ($
|
367 |
add_comment_meta($u[$i]->comment_ID,'ct_marked_as_spam','1',true);
|
368 |
}
|
369 |
}
|
280 |
function ct_ajax_check_comments()
|
281 |
{
|
282 |
check_ajax_referer( 'ct_secret_nonce', 'security' );
|
283 |
+
global $ct_options, $ct_ip_penalty_days;
|
284 |
$ct_options = ct_get_options();
|
|
|
|
|
|
|
285 |
|
286 |
$args_unchecked = array(
|
287 |
'meta_query' => array(
|
313 |
$data[]=$u[$i]->comment_author_IP;
|
314 |
$data[]=$u[$i]->comment_author_email;
|
315 |
}
|
316 |
+
$data[]='23.105.21.74';
|
317 |
$data=implode(',',$data);
|
318 |
|
319 |
$request=Array();
|
325 |
{
|
326 |
require_once('cleantalk.class.php');
|
327 |
}
|
328 |
+
$result=sendRawRequest($url, $request, false, 5);
|
329 |
|
330 |
$result=json_decode($result);
|
331 |
|
337 |
{
|
338 |
for($i=0;$i<sizeof($u);$i++)
|
339 |
{
|
340 |
+
$mark_spam_ip = false;
|
341 |
+
$mark_spam_email = false;
|
342 |
+
$ip_update_time = 0;
|
343 |
|
344 |
add_comment_meta($u[$i]->comment_ID,'ct_checked',date("Y-m-d H:m:s"),true);
|
345 |
$uip=$u[$i]->comment_author_IP;
|
|
|
346 |
$uim=$u[$i]->comment_author_email;
|
|
|
347 |
|
348 |
if(isset($result->data->$uip) && $result->data->$uip->appears == 1)
|
349 |
{
|
350 |
+
$mark_spam_ip = true;
|
351 |
+
$ip_update_time = strtotime($result->data->$uip->updated);
|
352 |
}
|
353 |
if(isset($result->data->$uim) && $result->data->$uim->appears==1)
|
354 |
{
|
355 |
+
$mark_spam_email = true;
|
|
|
356 |
}
|
357 |
|
358 |
// Do not use the spam records becaus it was a spammer far time ago.
|
359 |
+
if (time() - $ip_update_time > 86400 * $ct_ip_penalty_days) {
|
360 |
+
$mark_spam_ip = false;
|
361 |
}
|
362 |
+
if ($mark_spam_ip || $mark_spam_email) {
|
363 |
add_comment_meta($u[$i]->comment_ID,'ct_marked_as_spam','1',true);
|
364 |
}
|
365 |
}
|
inc/cleantalk-users-checkspam.js
CHANGED
@@ -86,7 +86,7 @@ function ct_send_users()
|
|
86 |
ct_send_users();
|
87 |
}
|
88 |
},
|
89 |
-
timeout:
|
90 |
});
|
91 |
}
|
92 |
function ct_show_users_info()
|
86 |
ct_send_users();
|
87 |
}
|
88 |
},
|
89 |
+
timeout: 15000
|
90 |
});
|
91 |
}
|
92 |
function ct_show_users_info()
|
inc/cleantalk-users.php
CHANGED
@@ -238,7 +238,7 @@ add_action( 'wp_ajax_ajax_check_users', 'ct_ajax_check_users' );
|
|
238 |
|
239 |
function ct_ajax_check_users()
|
240 |
{
|
241 |
-
global $ct_options;
|
242 |
|
243 |
check_ajax_referer('ct_secret_nonce', 'security');
|
244 |
|
@@ -278,7 +278,9 @@ function ct_ajax_check_users()
|
|
278 |
} else {
|
279 |
$u[$i]->data->user_ip = null;
|
280 |
}
|
281 |
-
|
|
|
|
|
282 |
}
|
283 |
$data=implode(',',$data);
|
284 |
|
@@ -291,7 +293,7 @@ function ct_ajax_check_users()
|
|
291 |
{
|
292 |
require_once('cleantalk.class.php');
|
293 |
}
|
294 |
-
$result=sendRawRequest($url, $request);
|
295 |
|
296 |
$result=json_decode($result);
|
297 |
|
@@ -318,14 +320,30 @@ function ct_ajax_check_users()
|
|
318 |
if ($skip_user) {
|
319 |
continue;
|
320 |
}
|
|
|
|
|
|
|
|
|
321 |
|
322 |
$uip = $u[$i]->data->user_ip;
|
323 |
$uim = $u[$i]->data->user_email;
|
324 |
|
325 |
-
if(
|
326 |
{
|
327 |
-
|
|
|
|
|
|
|
|
|
|
|
328 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
329 |
}
|
330 |
print 1;
|
331 |
}
|
238 |
|
239 |
function ct_ajax_check_users()
|
240 |
{
|
241 |
+
global $ct_options,$ct_ip_penalty_days;
|
242 |
|
243 |
check_ajax_referer('ct_secret_nonce', 'security');
|
244 |
|
278 |
} else {
|
279 |
$u[$i]->data->user_ip = null;
|
280 |
}
|
281 |
+
if (isset($u[$i]->data->user_email) && $u[$i]->data->user_email) {
|
282 |
+
$data[]=$u[$i]->data->user_email;
|
283 |
+
}
|
284 |
}
|
285 |
$data=implode(',',$data);
|
286 |
|
293 |
{
|
294 |
require_once('cleantalk.class.php');
|
295 |
}
|
296 |
+
$result=sendRawRequest($url, $request, false, 5);
|
297 |
|
298 |
$result=json_decode($result);
|
299 |
|
320 |
if ($skip_user) {
|
321 |
continue;
|
322 |
}
|
323 |
+
$mark_spam_ip = false;
|
324 |
+
$mark_spam_email = false;
|
325 |
+
$ip_update_time = 0;
|
326 |
+
|
327 |
|
328 |
$uip = $u[$i]->data->user_ip;
|
329 |
$uim = $u[$i]->data->user_email;
|
330 |
|
331 |
+
if(isset($result->data->$uip) && $result->data->$uip->appears == 1)
|
332 |
{
|
333 |
+
$mark_spam_ip = true;
|
334 |
+
$ip_update_time = strtotime($result->data->$uip->updated);
|
335 |
+
}
|
336 |
+
if(isset($result->data->$uim) && $result->data->$uim->appears==1)
|
337 |
+
{
|
338 |
+
$mark_spam_email = true;
|
339 |
}
|
340 |
+
// Do not use the spam records becaus it was a spammer far time ago.
|
341 |
+
if (time() - $ip_update_time > 86400 * $ct_ip_penalty_days) {
|
342 |
+
$mark_spam_ip = false;
|
343 |
+
}
|
344 |
+
if ($mark_spam_ip || $mark_spam_email) {
|
345 |
+
update_user_meta($u[$i]->ID,'ct_marked_as_spam','1',true);
|
346 |
+
}
|
347 |
}
|
348 |
print 1;
|
349 |
}
|
inc/cleantalk.class.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Cleantalk base class
|
4 |
*
|
5 |
-
* @version 2.1.
|
6 |
* @package Cleantalk
|
7 |
* @subpackage Base
|
8 |
* @author Cleantalk team (welcome@cleantalk.org)
|
@@ -11,6 +11,31 @@
|
|
11 |
* @see https://github.com/CleanTalk/php-antispam
|
12 |
*
|
13 |
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
|
15 |
/**
|
16 |
* Load JSON functions if they are not exists
|
@@ -376,7 +401,7 @@ class Cleantalk {
|
|
376 |
* Server connection timeout in seconds
|
377 |
* @var int
|
378 |
*/
|
379 |
-
private $server_timeout =
|
380 |
|
381 |
/**
|
382 |
* Cleantalk server url
|
@@ -1050,16 +1075,19 @@ class Cleantalk {
|
|
1050 |
* @return type
|
1051 |
*/
|
1052 |
|
1053 |
-
|
1054 |
{
|
1055 |
-
$
|
1056 |
-
|
1057 |
-
|
1058 |
-
|
1059 |
-
|
1060 |
-
|
1061 |
-
|
1062 |
-
|
|
|
|
|
|
|
1063 |
}
|
1064 |
|
1065 |
/**
|
@@ -1095,6 +1123,7 @@ function sendRawRequest($url,$data,$isJSON=false,$timeout=3)
|
|
1095 |
if(!$isJSON)
|
1096 |
{
|
1097 |
$data=http_build_query($data);
|
|
|
1098 |
}
|
1099 |
else
|
1100 |
{
|
@@ -1129,8 +1158,10 @@ function sendRawRequest($url,$data,$isJSON=false,$timeout=3)
|
|
1129 |
{
|
1130 |
$opts = array(
|
1131 |
'http'=>array(
|
1132 |
-
'method'=>"POST",
|
1133 |
-
'
|
|
|
|
|
1134 |
);
|
1135 |
$context = stream_context_create($opts);
|
1136 |
$result = @file_get_contents($url, 0, $context);
|
@@ -1144,6 +1175,11 @@ if( !function_exists('apache_request_headers') )
|
|
1144 |
{
|
1145 |
$arh = array();
|
1146 |
$rx_http = '/\AHTTP_/';
|
|
|
|
|
|
|
|
|
|
|
1147 |
foreach($_SERVER as $key => $val)
|
1148 |
{
|
1149 |
if( preg_match($rx_http, $key) )
|
@@ -1159,18 +1195,29 @@ if( !function_exists('apache_request_headers') )
|
|
1159 |
$arh[$arh_key] = $val;
|
1160 |
}
|
1161 |
}
|
|
|
|
|
|
|
|
|
|
|
1162 |
return( $arh );
|
1163 |
}
|
1164 |
}
|
1165 |
|
1166 |
function cleantalk_get_real_ip()
|
1167 |
{
|
|
|
|
|
|
|
|
|
|
|
1168 |
if ( function_exists( 'apache_request_headers' ) )
|
1169 |
{
|
1170 |
$headers = apache_request_headers();
|
1171 |
}
|
1172 |
else
|
1173 |
{
|
|
|
1174 |
$headers = $_SERVER;
|
1175 |
}
|
1176 |
if ( array_key_exists( 'X-Forwarded-For', $headers ) )
|
@@ -1187,6 +1234,11 @@ function cleantalk_get_real_ip()
|
|
1187 |
{
|
1188 |
$the_ip = filter_var( $_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 );
|
1189 |
}
|
|
|
|
|
|
|
|
|
|
|
1190 |
return $the_ip;
|
1191 |
}
|
1192 |
|
2 |
/**
|
3 |
* Cleantalk base class
|
4 |
*
|
5 |
+
* @version 2.1.3
|
6 |
* @package Cleantalk
|
7 |
* @subpackage Base
|
8 |
* @author Cleantalk team (welcome@cleantalk.org)
|
11 |
* @see https://github.com/CleanTalk/php-antispam
|
12 |
*
|
13 |
*/
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Creating apache_request_headers() if not exists
|
17 |
+
*/
|
18 |
+
if( !function_exists('apache_request_headers') ) {
|
19 |
+
function apache_request_headers() {
|
20 |
+
$arh = array();
|
21 |
+
$rx_http = '/\AHTTP_/';
|
22 |
+
foreach($_SERVER as $key => $val) {
|
23 |
+
if( preg_match($rx_http, $key) ) {
|
24 |
+
$arh_key = preg_replace($rx_http, '', $key);
|
25 |
+
$rx_matches = array();
|
26 |
+
// do some nasty string manipulations to restore the original letter case
|
27 |
+
// this should work in most cases
|
28 |
+
$rx_matches = explode('_', $arh_key);
|
29 |
+
if( count($rx_matches) > 0 and strlen($arh_key) > 2 ) {
|
30 |
+
foreach($rx_matches as $ak_key => $ak_val) $rx_matches[$ak_key] = ucfirst($ak_val);
|
31 |
+
$arh_key = implode('-', $rx_matches);
|
32 |
+
}
|
33 |
+
$arh[$arh_key] = $val;
|
34 |
+
}
|
35 |
+
}
|
36 |
+
return( $arh );
|
37 |
+
}
|
38 |
+
}
|
39 |
|
40 |
/**
|
41 |
* Load JSON functions if they are not exists
|
401 |
* Server connection timeout in seconds
|
402 |
* @var int
|
403 |
*/
|
404 |
+
private $server_timeout = 15;
|
405 |
|
406 |
/**
|
407 |
* Cleantalk server url
|
1075 |
* @return type
|
1076 |
*/
|
1077 |
|
1078 |
+
if(!function_exists('getAutoKey'))
|
1079 |
{
|
1080 |
+
function getAutoKey($email, $host, $platform)
|
1081 |
+
{
|
1082 |
+
$request=Array();
|
1083 |
+
$request['method_name'] = 'get_api_key';
|
1084 |
+
$request['email'] = $email;
|
1085 |
+
$request['website'] = $host;
|
1086 |
+
$request['platform'] = $platform;
|
1087 |
+
$url='https://api.cleantalk.org';
|
1088 |
+
$result=sendRawRequest($url,$request);
|
1089 |
+
return $result;
|
1090 |
+
}
|
1091 |
}
|
1092 |
|
1093 |
/**
|
1123 |
if(!$isJSON)
|
1124 |
{
|
1125 |
$data=http_build_query($data);
|
1126 |
+
$data=str_replace("&", "&", $data);
|
1127 |
}
|
1128 |
else
|
1129 |
{
|
1158 |
{
|
1159 |
$opts = array(
|
1160 |
'http'=>array(
|
1161 |
+
'method' => "POST",
|
1162 |
+
'timeout'=> $timeout,
|
1163 |
+
'content' => $data
|
1164 |
+
)
|
1165 |
);
|
1166 |
$context = stream_context_create($opts);
|
1167 |
$result = @file_get_contents($url, 0, $context);
|
1175 |
{
|
1176 |
$arh = array();
|
1177 |
$rx_http = '/\AHTTP_/';
|
1178 |
+
if(defined('IN_PHPBB'))
|
1179 |
+
{
|
1180 |
+
global $request;
|
1181 |
+
$request->enable_super_globals();
|
1182 |
+
}
|
1183 |
foreach($_SERVER as $key => $val)
|
1184 |
{
|
1185 |
if( preg_match($rx_http, $key) )
|
1195 |
$arh[$arh_key] = $val;
|
1196 |
}
|
1197 |
}
|
1198 |
+
if(defined('IN_PHPBB'))
|
1199 |
+
{
|
1200 |
+
global $request;
|
1201 |
+
$request->disable_super_globals();
|
1202 |
+
}
|
1203 |
return( $arh );
|
1204 |
}
|
1205 |
}
|
1206 |
|
1207 |
function cleantalk_get_real_ip()
|
1208 |
{
|
1209 |
+
if(defined('IN_PHPBB'))
|
1210 |
+
{
|
1211 |
+
global $request;
|
1212 |
+
$request->enable_super_globals();
|
1213 |
+
}
|
1214 |
if ( function_exists( 'apache_request_headers' ) )
|
1215 |
{
|
1216 |
$headers = apache_request_headers();
|
1217 |
}
|
1218 |
else
|
1219 |
{
|
1220 |
+
|
1221 |
$headers = $_SERVER;
|
1222 |
}
|
1223 |
if ( array_key_exists( 'X-Forwarded-For', $headers ) )
|
1234 |
{
|
1235 |
$the_ip = filter_var( $_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 );
|
1236 |
}
|
1237 |
+
if(defined('IN_PHPBB'))
|
1238 |
+
{
|
1239 |
+
global $request;
|
1240 |
+
$request->disable_super_globals();
|
1241 |
+
}
|
1242 |
return $the_ip;
|
1243 |
}
|
1244 |
|
readme.txt
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
-
=== Spam Protection by CleanTalk ===
|
2 |
Contributors: znaeff, shagimuratov, serge00
|
3 |
Tags: spam, anti-spam, antispam, anti spam, bbpress, buddypress, captcha, capcha, captha, catcha, cf7 spam, comments, contact form spam, signup, spammers, spammy, woocommerce, wordpress spam, booking, order, subscription, gravity spam, jetpack, bots, contact form 7, contact form, registrations, ninja, Fast Secure Contact, Gravity forms, formidable, mailchimp, s2member, protection, protect, email, akismet, plugin, contact, recaptcha, google captcha, google recaptcha, math, security, login, blacklist, prevent spam comments, wordpress, User Frontend, bulk delete, bulk remove, cloudflare, widget, review, auth forms, firewall, ddos, cleantalk, mailpoet, profile builder, comment spam, registration spam, spam comments, comment moderation, spam bots, block spam, signup spam, spam blocker, spam filter, user registration spam,pingback,trackback, anti-spam plugin, varnish, amp, spam free, userpro
|
4 |
Requires at least: 3.0
|
5 |
Tested up to: 4.6
|
6 |
-
Stable tag: 5.45.
|
7 |
License: GPLv2
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
@@ -22,13 +22,13 @@ No CAPTCHA, no questions, no animal counting, no puzzles, no math and no spam bo
|
|
22 |
1. Stops spam in widgets.
|
23 |
1. Checks the existing comments for spam.
|
24 |
|
25 |
-
= FREE TRIAL THEN $8 PER YEAR =
|
26 |
-
CleanTalk is a free plugin which work with the premium Cloud Anti-Spam service cleantalk.org. This plugin as a service https://en.wikipedia.org/wiki/Software_as_a_service.
|
27 |
-
|
28 |
= Public reviews =
|
29 |
> Using CleanTalk on WPLift was a great test as we receive huge amounts of spam.
|
30 |
> *Oliver Dale, <a href="http://wplift.com/wordpress-anti-spam-plugin" target="_blank">WPLift.com</a>.*
|
31 |
|
|
|
|
|
|
|
32 |
= Anti-Spam protection for comments =
|
33 |
Supports native WordPress, JetPack comments and any other comment plugins. The plugin moves spam comments to SPAM folder or you can set the option to ban spam comments silently. You can also enable the option in the plugin settings to auto-delete comments from SPAM folder.
|
34 |
|
@@ -472,9 +472,15 @@ WordPress 3.0 at least. PHP 5 with CURL or file_get_contents() function and enab
|
|
472 |
1. CleanTalk works faster than most of other anti-spam plugins.
|
473 |
|
474 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
475 |
= 5.45.1 July 26 2016 =
|
476 |
* Fixed issue with missed spam messages, subscriptions.
|
477 |
-
* Improved bulk spam test for comments. Now the plugin will not mark as Spam comments, if a comment sender (IP address) has spam activity more
|
478 |
|
479 |
= 5.45 July 21 2016 =
|
480 |
* Optimized bulk spam comments deletion.
|
@@ -1099,6 +1105,12 @@ WordPress 3.0 at least. PHP 5 with CURL or file_get_contents() function and enab
|
|
1099 |
* First version
|
1100 |
|
1101 |
== Upgrade Notice ==
|
|
|
|
|
|
|
|
|
|
|
|
|
1102 |
= 5.45.1 July 26 2016 =
|
1103 |
* Fixed issue with missed spam messages, subscriptions.
|
1104 |
* Improved bulk spam test for comments. Now the plugin will not mark as Spam comments, if a comment sender (IP address) has spam activity more then 30 days ago.
|
1 |
+
=== Spam Protection by CleanTalk (no Captcha Anti-Spam) ===
|
2 |
Contributors: znaeff, shagimuratov, serge00
|
3 |
Tags: spam, anti-spam, antispam, anti spam, bbpress, buddypress, captcha, capcha, captha, catcha, cf7 spam, comments, contact form spam, signup, spammers, spammy, woocommerce, wordpress spam, booking, order, subscription, gravity spam, jetpack, bots, contact form 7, contact form, registrations, ninja, Fast Secure Contact, Gravity forms, formidable, mailchimp, s2member, protection, protect, email, akismet, plugin, contact, recaptcha, google captcha, google recaptcha, math, security, login, blacklist, prevent spam comments, wordpress, User Frontend, bulk delete, bulk remove, cloudflare, widget, review, auth forms, firewall, ddos, cleantalk, mailpoet, profile builder, comment spam, registration spam, spam comments, comment moderation, spam bots, block spam, signup spam, spam blocker, spam filter, user registration spam,pingback,trackback, anti-spam plugin, varnish, amp, spam free, userpro
|
4 |
Requires at least: 3.0
|
5 |
Tested up to: 4.6
|
6 |
+
Stable tag: 5.45.2
|
7 |
License: GPLv2
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
22 |
1. Stops spam in widgets.
|
23 |
1. Checks the existing comments for spam.
|
24 |
|
|
|
|
|
|
|
25 |
= Public reviews =
|
26 |
> Using CleanTalk on WPLift was a great test as we receive huge amounts of spam.
|
27 |
> *Oliver Dale, <a href="http://wplift.com/wordpress-anti-spam-plugin" target="_blank">WPLift.com</a>.*
|
28 |
|
29 |
+
= FREE TRIAL THEN $8 PER YEAR =
|
30 |
+
> CleanTalk is a free plugin which work with the premium Cloud Anti-Spam service cleantalk.org. This plugin as a service https://en.wikipedia.org/wiki/Software_as_a_service.
|
31 |
+
|
32 |
= Anti-Spam protection for comments =
|
33 |
Supports native WordPress, JetPack comments and any other comment plugins. The plugin moves spam comments to SPAM folder or you can set the option to ban spam comments silently. You can also enable the option in the plugin settings to auto-delete comments from SPAM folder.
|
34 |
|
472 |
1. CleanTalk works faster than most of other anti-spam plugins.
|
473 |
|
474 |
== Changelog ==
|
475 |
+
= 5.45.2 August 4 2016 =
|
476 |
+
* Added Anti-Spam protection for Quick Event Manager.
|
477 |
+
* Improved bulk spam test for users. Now the plugin does not mark as Spam user, if the user IP address has spam activity more than 30 days ago.
|
478 |
+
* Fixed bulk spam test for comments. Previous version had a conflict between spam history for IP and Email.
|
479 |
+
* Minor fix function to get the API key.
|
480 |
+
|
481 |
= 5.45.1 July 26 2016 =
|
482 |
* Fixed issue with missed spam messages, subscriptions.
|
483 |
+
* Improved bulk spam test for comments. Now the plugin will not mark as Spam comments, if a comment sender (IP address) has spam activity more than 30 days ago.
|
484 |
|
485 |
= 5.45 July 21 2016 =
|
486 |
* Optimized bulk spam comments deletion.
|
1105 |
* First version
|
1106 |
|
1107 |
== Upgrade Notice ==
|
1108 |
+
= 5.45.2 August 4 2016 =
|
1109 |
+
* Added Anti-Spam protection for Quick Event Manager.
|
1110 |
+
* Improved bulk spam test for users. Now the plugin does not mark as Spam user, if the user IP address has spam activity more then 30 days ago.
|
1111 |
+
* Fixed bulk spam test for comments. Previous version had a conflict between spam history for IP and Email.
|
1112 |
+
* Minor fix function to get the API key.
|
1113 |
+
|
1114 |
= 5.45.1 July 26 2016 =
|
1115 |
* Fixed issue with missed spam messages, subscriptions.
|
1116 |
* Improved bulk spam test for comments. Now the plugin will not mark as Spam comments, if a comment sender (IP address) has spam activity more then 30 days ago.
|