Spam protection, AntiSpam, FireWall by CleanTalk - Version 5.55

Version Description

December 23 2016 = * Integrations: Caldera Forms, Visual Form Builder. * Fix for different 'cookies' header names. * Fixed user deletion.

Download this release

Release Info

Developer Safronik
Plugin Icon 128x128 Spam protection, AntiSpam, FireWall by CleanTalk
Version 5.55
Comparing to
See all releases

Code changes from version 5.54 to 5.55

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, no Captcha, 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.54
7
  Author: СleanTalk <welcome@cleantalk.org>
8
  Author URI: http://cleantalk.org
9
- */
10
- $cleantalk_plugin_version='5.54';
11
- $ct_agent_version = 'wordpress-554';
12
  $cleantalk_executed=false;
13
  $ct_sfw_updated = false;
14
 
@@ -39,7 +39,7 @@ if(!defined('CLEANTALK_PLUGIN_DIR')){
39
  require_once(CLEANTALK_PLUGIN_DIR . 'inc/cleantalk-widget.php');
40
  $ct_options=ct_get_options();
41
  $ct_data=ct_get_data();
42
-
43
  if(!isset($ct_data['db_refreshed'])){
44
 
45
  global $wpdb;
3
  Plugin Name: Spam Protection by CleanTalk
4
  Plugin URI: http://cleantalk.org
5
  Description: Max power, all-in-one, no Captcha, 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.55
7
  Author: СleanTalk <welcome@cleantalk.org>
8
  Author URI: http://cleantalk.org
9
+ */
10
+ $cleantalk_plugin_version='5.55';
11
+ $ct_agent_version = 'wordpress-555';
12
  $cleantalk_executed=false;
13
  $ct_sfw_updated = false;
14
 
39
  require_once(CLEANTALK_PLUGIN_DIR . 'inc/cleantalk-widget.php');
40
  $ct_options=ct_get_options();
41
  $ct_data=ct_get_data();
42
+
43
  if(!isset($ct_data['db_refreshed'])){
44
 
45
  global $wpdb;
inc/cleantalk-admin.php CHANGED
@@ -694,7 +694,7 @@ function ct_section_settings_state() {
694
  if($test_failed && $ct_data['moderate_ip'] != 1)
695
  {
696
  print __("Testing is failed, check settings. Tech support <a target=_blank href='mailto:support@cleantalk.org'>support@cleantalk.org</a>", 'cleantalk');
697
- }
698
  return true;
699
  }
700
 
694
  if($test_failed && $ct_data['moderate_ip'] != 1)
695
  {
696
  print __("Testing is failed, check settings. Tech support <a target=_blank href='mailto:support@cleantalk.org'>support@cleantalk.org</a>", 'cleantalk');
697
+ }
698
  return true;
699
  }
700
 
inc/cleantalk-public.php CHANGED
@@ -1469,7 +1469,7 @@ function ct_registration_errors($errors, $sanitized_user_login = null, $user_ema
1469
 
1470
  $ct_options=ct_get_options();
1471
  $ct_data=ct_get_data();
1472
-
1473
  // Go out if a registrered user action
1474
  if (ct_is_user_enable() === false) {
1475
  return $errors;
@@ -1545,7 +1545,7 @@ function ct_registration_errors($errors, $sanitized_user_login = null, $user_ema
1545
  if ($sender_info === false) {
1546
  $sender_info= '';
1547
  }
1548
-
1549
  require_once('cleantalk.class.php');
1550
  $config = ct_get_server();
1551
  $ct = new Cleantalk();
@@ -1565,7 +1565,7 @@ function ct_registration_errors($errors, $sanitized_user_login = null, $user_ema
1565
  $ct_request->sender_info = $sender_info;
1566
  $ct_request->js_on = $checkjs;
1567
  $ct_request->submit_time = $submit_time;
1568
-
1569
  $ct_result = $ct->isAllowUser($ct_request);
1570
  if ($ct->server_change) {
1571
  update_option(
@@ -2311,7 +2311,7 @@ function ct_contact_form_validate () {
2311
  ) {
2312
  return null;
2313
  }
2314
-
2315
  // Do not execute anti-spam test for logged in users.
2316
  if (isset($_COOKIE[LOGGED_IN_COOKIE]) && $ct_options['protect_logged_in'] != 1) {
2317
  return null;
@@ -2320,7 +2320,7 @@ function ct_contact_form_validate () {
2320
  //Skip the test if the checkout setting is unset && and it's not WooCommerce
2321
  if($ct_options['wc_checkout_test'] == 0 && strpos($_SERVER['REQUEST_URI'],'wc-ajax=checkout') && strpos($_POST['_wp_http_referer'],'wc-ajax=update_order_review'))
2322
  return null;
2323
-
2324
  //@header("CtConditions: Passed");
2325
  cleantalk_debug("CtConditions", "Passed");
2326
 
@@ -2380,8 +2380,7 @@ function ct_contact_form_validate () {
2380
 
2381
  //@header("CtBaseCallBefore: 1");
2382
  cleantalk_debug("CtBaseCallBefore", "1");
2383
-
2384
-
2385
  $ct_base_call_result = ct_base_call(array(
2386
  'message' => $message,
2387
  'example' => null,
@@ -2402,8 +2401,8 @@ function ct_contact_form_validate () {
2402
 
2403
  $ct = $ct_base_call_result['ct'];
2404
  $ct_result = $ct_base_call_result['ct_result'];
2405
-
2406
  if ($ct_result->allow == 0) {
 
2407
  //@header("CtResult: Not Allow");
2408
  cleantalk_debug("CtResult", "Not Allow");
2409
 
@@ -2415,57 +2414,54 @@ function ct_contact_form_validate () {
2415
  if ($ajax_call) {
2416
  //@header("AJAX: Yes");
2417
  cleantalk_debug("AJAX", "Yes");
2418
- echo $ct_result->comment;
2419
  } else {
 
2420
  //@header("AJAX: No");
2421
  cleantalk_debug("AJAX", "No");
2422
  global $ct_comment;
2423
  $ct_comment = $ct_result->comment;
2424
- if(isset($_POST['cma-action'])&&$_POST['cma-action']=='add')
2425
- {
2426
  $result=Array('success'=>0, 'thread_id'=>null,'messages'=>Array($ct_result->comment));
2427
  header("Content-Type: application/json");
2428
  print json_encode($result);
2429
  die();
2430
- }
2431
- else if(isset($_POST['TellAFriend_email']))
2432
- {
2433
  echo $ct_result->comment;
2434
  die();
2435
- }
2436
- //
2437
- // Gravity forms submission
2438
- //
2439
- else if(isset($_POST['gform_submit']))
2440
- {
2441
  $response = sprintf("<!DOCTYPE html><html><head><meta charset='UTF-8' /></head><body class='GF_AJAX_POSTBACK'><div id='gform_confirmation_wrapper_1' class='gform_confirmation_wrapper '><div id='gform_confirmation_message_1' class='gform_confirmation_message_1
2442
  gform_confirmation_message'>%s</div></div></body></html>",
2443
  $ct_result->comment
2444
  );
2445
  echo $response;
2446
  die();
2447
- }
2448
- //WooCommerce checkout ("Place Oreder button")
2449
- elseif(isset($_POST['_wp_http_referer'])){
2450
- if(strpos($_POST['_wp_http_referer'],'wc-ajax=update_order_review')){
2451
- $result = Array(
2452
- result => 'failure',
2453
- messages => "<ul class=\"woocommerce-error\"><li>".$ct_result->comment."</li></ul>",
2454
- refresh => 'false',
2455
- reload => 'false'
2456
- );
2457
- print json_encode($result);
2458
- die();
2459
- }
2460
- }
2461
- elseif(isset($_POST['action']) && $_POST['action'] == 'ct_check_internal')
2462
- {
2463
  return $ct_result->comment;
2464
- }
2465
- else
2466
- {
 
 
 
 
 
 
2467
  ct_die(null, null);
2468
- }
2469
  }
2470
  exit;
2471
  }
1469
 
1470
  $ct_options=ct_get_options();
1471
  $ct_data=ct_get_data();
1472
+
1473
  // Go out if a registrered user action
1474
  if (ct_is_user_enable() === false) {
1475
  return $errors;
1545
  if ($sender_info === false) {
1546
  $sender_info= '';
1547
  }
1548
+
1549
  require_once('cleantalk.class.php');
1550
  $config = ct_get_server();
1551
  $ct = new Cleantalk();
1565
  $ct_request->sender_info = $sender_info;
1566
  $ct_request->js_on = $checkjs;
1567
  $ct_request->submit_time = $submit_time;
1568
+
1569
  $ct_result = $ct->isAllowUser($ct_request);
1570
  if ($ct->server_change) {
1571
  update_option(
2311
  ) {
2312
  return null;
2313
  }
2314
+
2315
  // Do not execute anti-spam test for logged in users.
2316
  if (isset($_COOKIE[LOGGED_IN_COOKIE]) && $ct_options['protect_logged_in'] != 1) {
2317
  return null;
2320
  //Skip the test if the checkout setting is unset && and it's not WooCommerce
2321
  if($ct_options['wc_checkout_test'] == 0 && strpos($_SERVER['REQUEST_URI'],'wc-ajax=checkout') && strpos($_POST['_wp_http_referer'],'wc-ajax=update_order_review'))
2322
  return null;
2323
+
2324
  //@header("CtConditions: Passed");
2325
  cleantalk_debug("CtConditions", "Passed");
2326
 
2380
 
2381
  //@header("CtBaseCallBefore: 1");
2382
  cleantalk_debug("CtBaseCallBefore", "1");
2383
+
 
2384
  $ct_base_call_result = ct_base_call(array(
2385
  'message' => $message,
2386
  'example' => null,
2401
 
2402
  $ct = $ct_base_call_result['ct'];
2403
  $ct_result = $ct_base_call_result['ct_result'];
 
2404
  if ($ct_result->allow == 0) {
2405
+
2406
  //@header("CtResult: Not Allow");
2407
  cleantalk_debug("CtResult", "Not Allow");
2408
 
2414
  if ($ajax_call) {
2415
  //@header("AJAX: Yes");
2416
  cleantalk_debug("AJAX", "Yes");
2417
+ echo $ct_result->comment;
2418
  } else {
2419
+
2420
  //@header("AJAX: No");
2421
  cleantalk_debug("AJAX", "No");
2422
  global $ct_comment;
2423
  $ct_comment = $ct_result->comment;
2424
+ if(isset($_POST['cma-action'])&&$_POST['cma-action']=='add'){
 
2425
  $result=Array('success'=>0, 'thread_id'=>null,'messages'=>Array($ct_result->comment));
2426
  header("Content-Type: application/json");
2427
  print json_encode($result);
2428
  die();
2429
+
2430
+ }else if(isset($_POST['TellAFriend_email'])){
 
2431
  echo $ct_result->comment;
2432
  die();
2433
+
2434
+ }else if(isset($_POST['gform_submit'])){ // Gravity forms submission
 
 
 
 
2435
  $response = sprintf("<!DOCTYPE html><html><head><meta charset='UTF-8' /></head><body class='GF_AJAX_POSTBACK'><div id='gform_confirmation_wrapper_1' class='gform_confirmation_wrapper '><div id='gform_confirmation_message_1' class='gform_confirmation_message_1
2436
  gform_confirmation_message'>%s</div></div></body></html>",
2437
  $ct_result->comment
2438
  );
2439
  echo $response;
2440
  die();
2441
+
2442
+ }elseif(isset($_POST['_wp_http_referer']) && strpos($_POST['_wp_http_referer'],'wc-ajax=update_order_review')){ //WooCommerce checkout ("Place Oreder button")
2443
+ $result = Array(
2444
+ result => 'failure',
2445
+ messages => "<ul class=\"woocommerce-error\"><li>".$ct_result->comment."</li></ul>",
2446
+ refresh => 'false',
2447
+ reload => 'false'
2448
+ );
2449
+ print json_encode($result);
2450
+ die();
2451
+
2452
+ }elseif(isset($_POST['action']) && $_POST['action'] == 'ct_check_internal'){
 
 
 
 
2453
  return $ct_result->comment;
2454
+
2455
+ }elseif(isset($_POST['vfb-submit']) && defined('VFB_VERSION')){
2456
+ wp_die("<h1>Spam Protection by CleanTalk</h1><h2>".$ct_result->comment."</h2>", '', array('response' => 403, "back_link" => true, "text_direction" => 'ltr'));
2457
+
2458
+ }elseif(isset($_POST['action']) && $_POST['action'] == 'cf_process_ajax_submit'){
2459
+ echo "<h3>Antispam by CleanTalk: <u>".$ct_result->comment."</u></h3>";
2460
+ die();
2461
+
2462
+ }else
2463
  ct_die(null, null);
2464
+
2465
  }
2466
  exit;
2467
  }
inc/cleantalk-users.php CHANGED
@@ -257,6 +257,7 @@ function ct_ajax_check_users()
257
  for($i=0;$i<sizeof($u);$i++)
258
  {
259
  $user_meta=get_user_meta($u[$i]->ID, 'session_tokens', true);
 
260
  if(is_array($user_meta))
261
  {
262
  $user_meta=array_values($user_meta);
@@ -277,7 +278,7 @@ function ct_ajax_check_users()
277
  die();
278
  }
279
  $data=implode(',',$data);
280
-
281
  $request=Array();
282
  $request['method_name'] = 'spam_check_cms';
283
  $request['auth_key'] = $ct_options['apikey'];
@@ -288,7 +289,7 @@ function ct_ajax_check_users()
288
  require_once('cleantalk.class.php');
289
  }
290
  $result=sendRawRequest($url, $request, false, 5);
291
-
292
  $result=json_decode($result);
293
 
294
  if(isset($result->error_message))
@@ -386,29 +387,53 @@ add_action( 'wp_ajax_ajax_insert_users', 'ct_ajax_insert_users' );
386
  function ct_ajax_insert_users()
387
  {
388
  check_ajax_referer( 'ct_secret_nonce', 'security' );
389
-
390
- $inserted = 0;
391
- $use_id = 0;
392
- for($i=0; $i<500 ;$i++)
393
- {
394
- $rnd=mt_rand(1,10000000);
395
-
396
- $user_name = "user_$rnd";
397
- $email="stop_email_$rnd@example.com";
398
-
399
- $user_id = wp_create_user(
400
- $user_name,
401
- $email,
402
- rand()
403
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
404
 
405
- if (is_int($user_id)) {
406
- $inserted++;
407
- } else {
408
- error_log(print_r($user_id, true));
409
- }
 
 
 
 
 
 
 
410
  }
411
-
412
  print "$inserted";
413
  die();
414
  }
@@ -429,16 +454,24 @@ function ct_ajax_delete_all_users()
429
  {
430
  global $wpdb;
431
 
432
- $r = $wpdb->get_results("select count(*) from $wpdb->usermeta where meta_key='ct_marked_as_spam';");
433
- $cnt_all = $r ? count($r) : 0;
434
 
435
- $r=$wpdb->get_results("select distinct $wpdb->users.ID from $wpdb->users inner join $wpdb->usermeta on $wpdb->users.ID=$wpdb->usermeta.user_id where $wpdb->usermeta.meta_key='ct_marked_as_spam' limit 10;", ARRAY_A);
436
- if ($r) {
437
- for($i = 0; $i < count($r); $i++) {
438
- wp_delete_user($r[$i]['ID']);
 
 
 
 
 
 
 
439
  usleep(5000);
440
  }
441
- }
 
442
  print $count_all;
443
  die();
444
  }
257
  for($i=0;$i<sizeof($u);$i++)
258
  {
259
  $user_meta=get_user_meta($u[$i]->ID, 'session_tokens', true);
260
+
261
  if(is_array($user_meta))
262
  {
263
  $user_meta=array_values($user_meta);
278
  die();
279
  }
280
  $data=implode(',',$data);
281
+
282
  $request=Array();
283
  $request['method_name'] = 'spam_check_cms';
284
  $request['auth_key'] = $ct_options['apikey'];
289
  require_once('cleantalk.class.php');
290
  }
291
  $result=sendRawRequest($url, $request, false, 5);
292
+
293
  $result=json_decode($result);
294
 
295
  if(isset($result->error_message))
387
  function ct_ajax_insert_users()
388
  {
389
  check_ajax_referer( 'ct_secret_nonce', 'security' );
390
+
391
+ global $wpdb;
392
+
393
+ /* DELETION
394
+ $users = get_users(array('search' => '*user_*', 'search_columns' => array('login', 'nicename')));
395
+ $inserted = 0;
396
+ foreach($users as $user)
397
+ if(wp_delete_user($user->id))
398
+ $inserted++;
399
+ //*/
400
+
401
+ $result = $wpdb->get_results("SELECT network FROM `".$wpdb->base_prefix."cleantalk_sfw` LIMIT 200;", ARRAY_A);
402
+ if($result){
403
+ $ip = array();
404
+ foreach($result as $value){
405
+ $ips[] = long2ip($value['network']);
406
+ }
407
+ unset($value);
408
+
409
+ $inserted = 0;
410
+ $use_id = 0;
411
+ for($i=0; $i<200 ;$i++){
412
+ $rnd=mt_rand(1,10000000);
413
+
414
+ $user_name = "user_$rnd";
415
+ $email="stop_email_$rnd@example.com";
416
+
417
+ $user_id = wp_create_user(
418
+ $user_name,
419
+ rand(),
420
+ $email
421
+ );
422
 
423
+ $curr_user = get_user_by('email', $email);
424
+
425
+ update_user_meta($curr_user->ID, 'session_tokens', array($rnd => array('ip' => $ips[$i])));
426
+
427
+ if (is_int($user_id))
428
+ $inserted++;
429
+ else
430
+ error_log(print_r($user_id, true));
431
+
432
+ }
433
+ }else{
434
+ $inserted = '0';
435
  }
436
+
437
  print "$inserted";
438
  die();
439
  }
454
  {
455
  global $wpdb;
456
 
457
+ $r = $wpdb->get_results("select count(*) as cnt from $wpdb->usermeta where meta_key='ct_marked_as_spam';");
458
+ $count_all = $r ? $r[0]->cnt : 0;
459
 
460
+ $args = array(
461
+ 'meta_key' => 'ct_marked_as_spam',
462
+ 'meta_value' => '1',
463
+ 'fields' => array('ID'),
464
+ 'number' => 10
465
+ );
466
+ $users = get_users($args);
467
+
468
+ if ($users){
469
+ foreach($users as $user){
470
+ wp_delete_user($user->ID);
471
  usleep(5000);
472
  }
473
+ }
474
+
475
  print $count_all;
476
  die();
477
  }
inc/cleantalk.class.php CHANGED
@@ -732,12 +732,20 @@ class Cleantalk {
732
 
733
  if($msg->method_name != 'send_feedback'){
734
  $ct_tmp = apache_request_headers();
735
- $ct_tmp['Cookie'] = preg_replace(array(
 
 
 
 
 
 
 
 
736
  '/\s{0,1}ct_checkjs=[a-z0-9]*[;|$]{0,1}/',
737
  '/\s{0,1}ct_timezone=.{0,1}\d{1,2}[;|$]/',
738
  '/\s{0,1}ct_pointer_data=.*5D[;|$]{0,1}/',
739
  '/;{0,1}\s{0,3}$/'
740
- ), '', $ct_tmp['Cookie']);
741
  $msg->all_headers=json_encode($ct_tmp);
742
  }
743
 
732
 
733
  if($msg->method_name != 'send_feedback'){
734
  $ct_tmp = apache_request_headers();
735
+
736
+ if(isset($ct_tmp['Cookie']))
737
+ $cookie_name = 'Cookie';
738
+ elseif(isset($ct_tmp['cookie']))
739
+ $cookie_name = 'cookie';
740
+ else
741
+ $cookie_name = 'COOKIE';
742
+
743
+ $ct_tmp[$cookie_name] = preg_replace(array(
744
  '/\s{0,1}ct_checkjs=[a-z0-9]*[;|$]{0,1}/',
745
  '/\s{0,1}ct_timezone=.{0,1}\d{1,2}[;|$]/',
746
  '/\s{0,1}ct_pointer_data=.*5D[;|$]{0,1}/',
747
  '/;{0,1}\s{0,3}$/'
748
+ ), '', $ct_tmp[$cookie_name]);
749
  $msg->all_headers=json_encode($ct_tmp);
750
  }
751
 
readme.txt CHANGED
@@ -1,9 +1,9 @@
1
  === Spam Protection by CleanTalk (no Captcha Anti-Spam) ===
2
  Contributors: znaeff, shagimuratov, serge00, sartemd174
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, subscription, gravity spam, jetpack, bots, contact form 7, contact form, registrations, ninja, Fast Secure Contact, Gravity forms, formidable, mailchimp, s2member, protection, protect, email, plugin, contact, recaptcha, google captcha, google recaptcha, blacklist, prevent spam comments, wordpress, User Frontend, bulk delete, bulk remove, widget, review, firewall, 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,honeypot,puzzle,quiz,survey,poll,security
4
  Requires at least: 3.0
5
  Tested up to: 4.7
6
- Stable tag: 5.54
7
  License: GPLv2
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
@@ -44,7 +44,7 @@ Supports native WordPress, JetPack comments and any other comment plugins. The p
44
  Filters spam bots on registration forms of WordPress, BuddyPress, bbPress, S2Member, WooCommerce, Profile builder, Login with AJAX and any other registration plugins.
45
 
46
  = Protection from contact form spam =
47
- The plugin is tested and ready to protect from spam emails via Formidable forms, Contact form 7, JetPack Contact form, Fast Secure Contact form, Ninja forms, Landing pages, Gravity forms, Contact Form by BestWebSoft, Simple Contact Form Plugin - PirateForms, Visual Form Builder, Form, Contact Form by WebDorado, Contact Form Email, MW WP Form, Contact Form by Jeff Bulllins, Easy Contact, Contact Us Form, Grunion Contact Form, WCP Contact Form, Easy WordPress Contact Form Plugin, WPForms Lite, Custom Contact Forms and any other themes or custom contact forms.
48
 
49
  = WooCommerce spam filter =
50
  Anti-spam by CleanTalk filters spam registrations and spam reviews for WooCommerce. The plugin is fully compatible with WooCommerce 2.1 and higher.
@@ -484,6 +484,11 @@ WordPress 3.0 at least. PHP 5 with CURL or file_get_contents() function and enab
484
  1. The Dashboard with a map of most spam active countries per your account.
485
 
486
  == Changelog ==
 
 
 
 
 
487
  = 5.54 December 12 2016 =
488
  * Integrations: AmoForms, Contact Form Clean and Simple.
489
  * Comments check logic refreshed.
@@ -1213,6 +1218,11 @@ WordPress 3.0 at least. PHP 5 with CURL or file_get_contents() function and enab
1213
 
1214
  == Upgrade Notice ==
1215
  == Changelog ==
 
 
 
 
 
1216
  = 5.54 December 12 2016 =
1217
  * Integrations: AmoForms, Contact Form Clean and Simple.
1218
  * Comments check logic refreshed.
1
  === Spam Protection by CleanTalk (no Captcha Anti-Spam) ===
2
  Contributors: znaeff, shagimuratov, serge00, sartemd174
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, subscription, gravity spam, jetpack, bots, contact form 7, contact form, registrations, ninja, Fast Secure Contact, Gravity forms, formidable, mailchimp, s2member, protection, protect, email, plugin, contact, recaptcha, google captcha, google recaptcha, blacklist, prevent spam comments, wordpress, User Frontend, bulk delete, bulk remove, widget, review, firewall, 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,honeypot,puzzle,quiz,survey,poll,security, amo forms, caldera forms, visual form builder, contact form clean and simple
4
  Requires at least: 3.0
5
  Tested up to: 4.7
6
+ Stable tag: 5.55
7
  License: GPLv2
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
44
  Filters spam bots on registration forms of WordPress, BuddyPress, bbPress, S2Member, WooCommerce, Profile builder, Login with AJAX and any other registration plugins.
45
 
46
  = Protection from contact form spam =
47
+ The plugin is tested and ready to protect from spam emails via Formidable forms, Contact form 7, JetPack Contact form, Fast Secure Contact form, Ninja forms, Landing pages, Gravity forms, Contact Form by BestWebSoft, Simple Contact Form Plugin - PirateForms, Visual Form Builder, Form, Contact Form by WebDorado, Contact Form Email, MW WP Form, Contact Form by Jeff Bulllins, Easy Contact, Contact Us Form, Grunion Contact Form, WCP Contact Form, Easy WordPress Contact Form Plugin, WPForms Lite, Custom Contact, Forms, Amo Forms, Caldera Forms, Visual Form Builder, Contact Form Clean and Simple and any other themes or custom contact forms.
48
 
49
  = WooCommerce spam filter =
50
  Anti-spam by CleanTalk filters spam registrations and spam reviews for WooCommerce. The plugin is fully compatible with WooCommerce 2.1 and higher.
484
  1. The Dashboard with a map of most spam active countries per your account.
485
 
486
  == Changelog ==
487
+ = 5.55 December 23 2016 =
488
+ * Integrations: Caldera Forms, Visual Form Builder.
489
+ * Fix for different 'cookies' header names.
490
+ * Fixed user deletion.
491
+
492
  = 5.54 December 12 2016 =
493
  * Integrations: AmoForms, Contact Form Clean and Simple.
494
  * Comments check logic refreshed.
1218
 
1219
  == Upgrade Notice ==
1220
  == Changelog ==
1221
+ = 5.55 December 23 2016 =
1222
+ * Integrations: Caldera Forms, Visual Form Builder.
1223
+ * Fix for different 'cookies' header names.
1224
+ * Fixed user deletion.
1225
+
1226
  = 5.54 December 12 2016 =
1227
  * Integrations: AmoForms, Contact Form Clean and Simple.
1228
  * Comments check logic refreshed.