Spam protection, AntiSpam, FireWall by CleanTalk - Version 2.31

Version Description

2014-01-24 = * New: Added spam protection for JetPack comments * Fixed: cURL connection issue "Expect: 100-continue"

Download this release

Release Info

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

Code changes from version 2.30 to 2.31

Files changed (3) hide show
  1. cleantalk.class.php +3 -1
  2. cleantalk.php +78 -21
  3. readme.txt +49 -34
cleantalk.class.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Cleantalk base class
4
  *
5
- * @version 1.21.15
6
  * @package Cleantalk
7
  * @subpackage Base
8
  * @author Сleantalk team (welcome@cleantalk.ru)
@@ -613,6 +613,8 @@ class Cleantalk {
613
  curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
614
  // receive server response ...
615
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 
 
616
 
617
  $result = curl_exec($ch);
618
  curl_close($ch);
2
  /**
3
  * Cleantalk base class
4
  *
5
+ * @version 1.21.16
6
  * @package Cleantalk
7
  * @subpackage Base
8
  * @author Сleantalk team (welcome@cleantalk.ru)
613
  curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
614
  // receive server response ...
615
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
616
+ // resolve 'Expect: 100-continue' issue
617
+ curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
618
 
619
  $result = curl_exec($ch);
620
  curl_close($ch);
cleantalk.php CHANGED
@@ -3,12 +3,12 @@
3
  Plugin Name: Anti-spam by CleanTalk
4
  Plugin URI: http://cleantalk.org/wordpress
5
  Description: Cloud antispam for comments, registrations and contacts. The plugin doesn't use CAPTCHA, Q&A, math, counting animals or quiz to stop spam bots.
6
- Version: 2.30
7
  Author: СleanTalk <welcome@cleantalk.ru>
8
  Author URI: http://cleantalk.org
9
  */
10
 
11
- $ct_agent_version = 'wordpress-230';
12
  $ct_checkjs_frm = 'ct_checkjs_frm';
13
  $ct_checkjs_register_form = 'ct_checkjs_register_form';
14
  $ct_session_request_id_label = 'request_id';
@@ -20,8 +20,18 @@ $ct_checkjs_jpcf = 'ct_checkjs_jpcf';
20
  $ct_jpcf_patched = false;
21
  $ct_jpcf_fields = array('name', 'email');
22
 
 
 
 
 
 
 
 
 
 
 
 
23
  // Comments
24
- add_action('comment_form', 'ct_comment_form');
25
  add_filter('preprocess_comment', 'ct_check'); // param - comment data array
26
 
27
  // Formidable
@@ -60,6 +70,23 @@ if (is_admin()) {
60
  add_action('delete_user', 'ct_delete_user');
61
  }
62
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  /**
64
  * Inner function - Current Cleantalk options
65
  * @return mixed[] Array of options
@@ -231,20 +258,39 @@ function ct_comment_form() {
231
  * @param int $post_id Post ID, not used
232
  */
233
  function ct_add_hidden_fields($post_id = 0, $field_name = 'ct_checkjs', $return_string = false) {
234
- $ct_checkjs_def = 0;
 
235
  $ct_checkjs_key = ct_get_checkjs_value();
236
- $field_id = $field_name . '_' . md5(rand(0, 1000));
237
  ct_init_session();
238
  $_SESSION['formtime'] = time();
239
- $html = '
240
- <input type="hidden" id="%s" name="%s" value="0" />
241
- <script type="text/javascript">
242
- // <![CDATA[
243
- document.getElementById("%s").value = document.getElementById("%s").value.replace("%s", "%s");
244
- // ]]>
245
- </script>
246
- ';
247
- $html = sprintf($html, $field_id, $field_name, $field_id, $field_id, $ct_checkjs_def, $ct_checkjs_key);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
248
  if ($return_string === true) {
249
  return $html;
250
  } else {
@@ -387,13 +433,13 @@ function ct_check($comment) {
387
  // this action is called just when WP process POST request (adds new comment)
388
  // this action is called by wp-comments-post.php
389
  // after processing WP makes redirect to post page with comment's form by GET request (see above)
390
- global $wpdb, $current_user, $comment_post_id, $ct_agent_version;
391
 
392
  $options = ct_get_options();
393
- if (ct_is_user_enable() === false || $options['comments_test'] == 0) {
394
  return $comment;
395
  }
396
-
397
  $local_blacklists = wp_blacklist_check(
398
  $comment['comment_author'],
399
  $comment['comment_author_email'],
@@ -420,6 +466,8 @@ function ct_check($comment) {
420
  if ($comment['comment_type'] == 'pingback' && $wp_host !== null && $wp_host === $author_host) {
421
  return $comment;
422
  }
 
 
423
 
424
  $comment_post_id = $comment['comment_post_ID'];
425
 
@@ -509,7 +557,7 @@ function ct_check($comment) {
509
  )
510
  );
511
  }
512
-
513
  if ($ct_result->stop_queue == 1) {
514
  $err_text = '<center><b style="color: #49C73B;">Clean</b><b style="color: #349ebf;">Talk.</b> ' . __('Spam protection', 'cleantalk') . "</center><br><br>\n" . $ct_result->comment;
515
  $err_text .= '<script>setTimeout("history.back()", 5000);</script>';
@@ -579,8 +627,16 @@ function ct_die($comment_id, $comment_status) {
579
  */
580
  function js_test($field_name = 'ct_checkjs') {
581
  $checkjs = null;
582
- if (isset($_POST[$field_name])) {
583
- if($_POST[$field_name] == ct_get_checkjs_value()) {
 
 
 
 
 
 
 
 
584
  $checkjs = 1;
585
  } else {
586
  $checkjs = 0;
@@ -1347,6 +1403,7 @@ function ct_input_comments_test() {
1347
  echo "<input type='radio' id='cleantalk_comments_test1' name='cleantalk_settings[comments_test]' value='1' " . ($value == '1' ? 'checked' : '') . " /><label for='cleantalk_comments_test1'> " . __('Yes') . "</label>";
1348
  echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
1349
  echo "<input type='radio' id='cleantalk_comments_test0' name='cleantalk_settings[comments_test]' value='0' " . ($value == '0' ? 'checked' : '') . " /><label for='cleantalk_comments_test0'> " . __('No') . "</label>";
 
1350
  }
1351
 
1352
  /**
@@ -1358,7 +1415,7 @@ function ct_input_registrations_test() {
1358
  echo "<input type='radio' id='cleantalk_registrations_test1' name='cleantalk_settings[registrations_test]' value='1' " . ($value == '1' ? 'checked' : '') . " /><label for='cleantalk_registrations_test1'> " . __('Yes') . "</label>";
1359
  echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
1360
  echo "<input type='radio' id='cleantalk_registrations_test0' name='cleantalk_settings[registrations_test]' value='0' " . ($value == '0' ? 'checked' : '') . " /><label for='cleantalk_registrations_test0'> " . __('No') . "</label>";
1361
- admin_addDescriptionsFields(__('WordPress, BuddyPress', 'cleantalk'));
1362
  }
1363
 
1364
  /**
3
  Plugin Name: Anti-spam by CleanTalk
4
  Plugin URI: http://cleantalk.org/wordpress
5
  Description: Cloud antispam for comments, registrations and contacts. The plugin doesn't use CAPTCHA, Q&A, math, counting animals or quiz to stop spam bots.
6
+ Version: 2.31
7
  Author: СleanTalk <welcome@cleantalk.ru>
8
  Author URI: http://cleantalk.org
9
  */
10
 
11
+ $ct_agent_version = 'wordpress-231';
12
  $ct_checkjs_frm = 'ct_checkjs_frm';
13
  $ct_checkjs_register_form = 'ct_checkjs_register_form';
14
  $ct_session_request_id_label = 'request_id';
20
  $ct_jpcf_patched = false;
21
  $ct_jpcf_fields = array('name', 'email');
22
 
23
+ // Comment already proccessed
24
+ $ct_comment_done = false;
25
+
26
+ // JetPack active
27
+ $ct_jp_active = false;
28
+
29
+ // Default value for JS test
30
+ $ct_checkjs_def = 0;
31
+
32
+ add_action('init', 'ct_init');
33
+
34
  // Comments
 
35
  add_filter('preprocess_comment', 'ct_check'); // param - comment data array
36
 
37
  // Formidable
70
  add_action('delete_user', 'ct_delete_user');
71
  }
72
 
73
+ /**
74
+ * Init functions
75
+ * @return mixed[] Array of options
76
+ */
77
+ function ct_init() {
78
+ global $ct_jp_active;
79
+
80
+ $jetpack_active_modules = get_option('jetpack_active_modules');
81
+ if (class_exists( 'Jetpack', false) && $jetpack_active_modules && in_array('comments', $jetpack_active_modules)) {
82
+ $ct_jp_active = true;
83
+ add_action('wp_footer', 'ct_comment_form');
84
+ } else {
85
+ add_action('comment_form', 'ct_comment_form');
86
+
87
+ }
88
+ }
89
+
90
  /**
91
  * Inner function - Current Cleantalk options
92
  * @return mixed[] Array of options
258
  * @param int $post_id Post ID, not used
259
  */
260
  function ct_add_hidden_fields($post_id = 0, $field_name = 'ct_checkjs', $return_string = false) {
261
+ global $ct_jp_active, $ct_checkjs_def;
262
+
263
  $ct_checkjs_key = ct_get_checkjs_value();
 
264
  ct_init_session();
265
  $_SESSION['formtime'] = time();
266
+
267
+ if ($ct_jp_active) {
268
+ $html = '
269
+ <script type="text/javascript">
270
+ // <![CDATA[
271
+ function setCookie(c_name, value, exdays) {
272
+ var exdate = new Date();
273
+ exdate.setDate(exdate.getDate() + exdays);
274
+ var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
275
+ document.cookie = c_name + "=" + c_value;
276
+ }
277
+ setCookie("%s", "%s", 1);
278
+ // ]]>
279
+ </script>
280
+ ';
281
+ $html = sprintf($html, $field_name, $ct_checkjs_key);
282
+ } else {
283
+ $field_id = $field_name . '_' . md5(rand(0, 1000));
284
+ $html = '
285
+ <input type="hidden" id="%s" name="%s" value="0" />
286
+ <script type="text/javascript">
287
+ // <![CDATA[
288
+ document.getElementById("%s").value = document.getElementById("%s").value.replace("%s", "%s");
289
+ // ]]>
290
+ </script>
291
+ ';
292
+ $html = sprintf($html, $field_id, $field_name, $field_id, $field_id, $ct_checkjs_def, $ct_checkjs_key);
293
+ }
294
  if ($return_string === true) {
295
  return $html;
296
  } else {
433
  // this action is called just when WP process POST request (adds new comment)
434
  // this action is called by wp-comments-post.php
435
  // after processing WP makes redirect to post page with comment's form by GET request (see above)
436
+ global $wpdb, $current_user, $comment_post_id, $ct_agent_version, $ct_comment_done;
437
 
438
  $options = ct_get_options();
439
+ if (ct_is_user_enable() === false || $options['comments_test'] == 0 || $ct_comment_done) {
440
  return $comment;
441
  }
442
+
443
  $local_blacklists = wp_blacklist_check(
444
  $comment['comment_author'],
445
  $comment['comment_author_email'],
466
  if ($comment['comment_type'] == 'pingback' && $wp_host !== null && $wp_host === $author_host) {
467
  return $comment;
468
  }
469
+
470
+ $ct_comment_done = true;
471
 
472
  $comment_post_id = $comment['comment_post_ID'];
473
 
557
  )
558
  );
559
  }
560
+
561
  if ($ct_result->stop_queue == 1) {
562
  $err_text = '<center><b style="color: #49C73B;">Clean</b><b style="color: #349ebf;">Talk.</b> ' . __('Spam protection', 'cleantalk') . "</center><br><br>\n" . $ct_result->comment;
563
  $err_text .= '<script>setTimeout("history.back()", 5000);</script>';
627
  */
628
  function js_test($field_name = 'ct_checkjs') {
629
  $checkjs = null;
630
+ $js_field = null;
631
+ if (isset($_POST[$field_name]))
632
+ $js_field = $_POST[$field_name];
633
+
634
+ if (isset($_COOKIE[$field_name])) {
635
+ $js_field = $_COOKIE[$field_name];
636
+ }
637
+
638
+ if ($js_field !== null) {
639
+ if($js_field == ct_get_checkjs_value()) {
640
  $checkjs = 1;
641
  } else {
642
  $checkjs = 0;
1403
  echo "<input type='radio' id='cleantalk_comments_test1' name='cleantalk_settings[comments_test]' value='1' " . ($value == '1' ? 'checked' : '') . " /><label for='cleantalk_comments_test1'> " . __('Yes') . "</label>";
1404
  echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
1405
  echo "<input type='radio' id='cleantalk_comments_test0' name='cleantalk_settings[comments_test]' value='0' " . ($value == '0' ? 'checked' : '') . " /><label for='cleantalk_comments_test0'> " . __('No') . "</label>";
1406
+ admin_addDescriptionsFields(__('WordPress, JetPack', 'cleantalk'));
1407
  }
1408
 
1409
  /**
1415
  echo "<input type='radio' id='cleantalk_registrations_test1' name='cleantalk_settings[registrations_test]' value='1' " . ($value == '1' ? 'checked' : '') . " /><label for='cleantalk_registrations_test1'> " . __('Yes') . "</label>";
1416
  echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
1417
  echo "<input type='radio' id='cleantalk_registrations_test0' name='cleantalk_settings[registrations_test]' value='0' " . ($value == '0' ? 'checked' : '') . " /><label for='cleantalk_registrations_test0'> " . __('No') . "</label>";
1418
+ admin_addDescriptionsFields(__('WordPress, BuddyPress, bbPress', 'cleantalk'));
1419
  }
1420
 
1421
  /**
readme.txt CHANGED
@@ -1,45 +1,42 @@
1
  === Anti-spam by CleanTalk ===
2
  Contributors: znaeff, shagimuratov
3
- Tags: antispam, anti-spam, spam, captcha, comment, comments, wpmu, network, multisite, forms, registration, login, contact form, buddypress, bbpress, admin, user, users, post, posts, wordpress, javascript, plugin, blacklists, cloud, math, signup, akismet, JetPack, WooCommerce
4
  Requires at least: 3.0
5
  Tested up to: 3.8.1
6
- Stable tag: 2.30
7
  License: GPLv2
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
10
- Cloud antispam for comments, signups and contacts.
11
 
12
  == Description ==
 
 
 
13
  1. Stops spam bots comments.
14
  1. Stops spam bots signups.
15
  1. Stops spam bots contacts emails.
16
- = Antispam features =
17
- * WordPress comments and signups.
18
- * BuddyPress, bbPress signups.
 
19
  * Formiadble forms.
20
  * Contact form 7.
21
  * JetPack Contact form.
22
  * WooCommerce review form.
23
- * no CAPTCHA, no questions, no counting animals, no puzzles, no math.
24
 
25
- The plugin is WordPress MultiUser (WPMU or WordPress network) compatible. Each blog in multisite environment has individual anitspam options for spam bots protection.
26
-
27
- Spam comments moves to SPAM folder. First comment from a new author plugin compares with post and previous comments. If the relevance of the comment is good enough it gets approval at the blog without manual approval.
28
-
29
- The plugin is a client application for anti-spam cloud service <a href="http://cleantalk.org" target="_blank">cleantalk.org</a>. CleanTalk.org daily prevents from spam 5000 blogs, blocks up to 500 000 spam bots attacks and approves up to 4000 not spam comments.
30
- = Requirements =
31
- WordPress 3.0 at least. PHP 4, 5 with CURL or file_get_contents() function and enabled 'allow_url_fopen' setting. <a href="http://cleantalk.org/register?platform=wordpress">Sign up</a> to get an Access key.
32
- = Translations =
33
- * English
34
- * Russian (ru_RU)
35
- * Spain (es_ES) - thanks to Andrew Kurtis and <a href="http://www.webhostinghub.com/index-c.html?utm_expid=31925339-46.KEGZK8A6Q3yfZW0EUfEw5Q.1">WebHostingHub</a>
36
 
37
  == Installation ==
38
 
39
  1. Download, install and activate the plugin.
40
- 1. Get and enter the Access key in the settings
41
- <a href="http://cleantalk.org/register?platform=wordpress" target="_blank">http://cleantalk.org/register</a>
42
- 1. Enjoy the blog without spam.
 
 
 
 
43
 
44
  == Frequently Asked Questions ==
45
 
@@ -47,27 +44,25 @@ WordPress 3.0 at least. PHP 4, 5 with CURL or file_get_contents() function and e
47
  Plugin uses several simple tests to stop spammers.
48
 
49
  * Spam bots signatures.
50
- * Blacklists checks by Email, IP, web-sites domain names.
51
- * JavaScript availability.
52
- * Comment submit time.
53
- * Relevance test for the comment.
54
 
55
  = How plugin works? =
56
-
57
- Plugin sends a comment's text and several previous approved comments to the cloud. Cloud evaluates the relevance of the comment's text on the topic, tests on spam and finaly provides a solution - to publish or put on manual moderation of comments. If a comment is placed on manual moderation, the plugin adds to the text of a comment explaining the reason for the ban server publishing.
58
 
59
  = Will plugin works with my theme? =
 
60
 
61
- Plugin works with all WordPress themes. With some themes may not works JavaScript antispam method, but it's not crucial to protect your blog from spam.
62
-
63
- = How can I test antispam protection? =
64
- Please use test email stop_email@example.com for comments. Also you can see comments proccessed by plugin for last 7 days at <a href="http://cleantalk.org/my/show_requests">Control panel</a> or look at folder "Spam" for banned comments.
65
 
66
  = How the plugin is effective against spam bots? =
67
- Plugin Antispam by CleanTalk stops about 99.99% of spam comments by spam bots. More over, by determining the relevance of the comment text, the plugin stops about 96% spam comments submitted manually via browser.
68
 
69
  = What about pingback, trackback spam? =
70
- Plugin by default pass not spam pingbacks/trackbacks (sender host clear at <a href="http://cleantalk.org/blacklists">Blacklists IP</a> database) from third-party sites to the blog. If the pingback has more then 3 records in the Blacklists and not relevant to the blog the pingback will be stopped by CleanTalk.
71
 
72
  = Why do I need one more anti-spam plugin? =
73
  1. The plugin is more effective than CAPTCHA because use several methods to stop spammers.
@@ -75,7 +70,19 @@ Plugin by default pass not spam pingbacks/trackbacks (sender host clear at <a hr
75
  1. CleanTalk automatically approves relevant, not spam comments.
76
 
77
  = Should I use another antispam plugins? =
78
- Use other antispam plugins not necessarily, because CleanTalk stops 99.99% of spam comments. But if necessary, the plugin can work together with Akismet, Captcha and etc.
 
 
 
 
 
 
 
 
 
 
 
 
79
 
80
  == Screenshots ==
81
  1. The comment from spammer (sender blacklisted by IP/Email, comment text not relevant for the post) prohibited to place in the queue WordPress.
@@ -86,6 +93,10 @@ Use other antispam plugins not necessarily, because CleanTalk stops 99.99% of sp
86
 
87
  == Changelog ==
88
 
 
 
 
 
89
  = 2.30 2014-01-13 =
90
  * Changed: Improved servers connection logic.
91
  * Fixed: Antispam test for Fomidable forms.
@@ -230,6 +241,10 @@ Use other antispam plugins not necessarily, because CleanTalk stops 99.99% of sp
230
  * First version
231
 
232
  == Upgrade Notice ==
 
 
 
 
233
  = 2.30 2014-01-13 =
234
  * Changed: Improved servers connection logic.
235
  * Fixed: Antispam test for Fomidable forms.
1
  === Anti-spam by CleanTalk ===
2
  Contributors: znaeff, shagimuratov
3
+ Tags: antispam, anti-spam, anti spam, spam, captcha, comment, comments, wpmu, network, multisite, forms, registration, login, contact form, buddypress, bbpress, admin, user, users, post, posts, wordpress, javascript, plugin, blacklists, cloud, math, signup, akismet, JetPack, WooCommerce
4
  Requires at least: 3.0
5
  Tested up to: 3.8.1
6
+ Stable tag: 2.31
7
  License: GPLv2
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
10
+ Cloud anti-spam for comments, signups and contacts.
11
 
12
  == Description ==
13
+ No CAPTCHA, no questions, no counting animals, no puzzles, no math.
14
+
15
+ = Anti-spam features =
16
  1. Stops spam bots comments.
17
  1. Stops spam bots signups.
18
  1. Stops spam bots contacts emails.
19
+
20
+ = Anti-spam protection =
21
+ * WordPress, JetPack comments.
22
+ * WordPress, BuddyPress, bbPress signups.
23
  * Formiadble forms.
24
  * Contact form 7.
25
  * JetPack Contact form.
26
  * WooCommerce review form.
 
27
 
28
+ The plugin is a client application for cloud anti-spam CleanTalk.org, which are daily protects 5k web-sites from spam bots.
 
 
 
 
 
 
 
 
 
 
29
 
30
  == Installation ==
31
 
32
  1. Download, install and activate the plugin.
33
+ 1. Get Access key <a href="http://cleantalk.org/register?platform=wordpress" target="_blank">http://cleantalk.org/register</a>
34
+ 1. Enter Access key at the plugin settings.
35
+ 1. To test anti-spam protection use email **stop_email@example.com**. You shoud see server comment like this,
36
+
37
+ *** Forbidden. Sender blacklisted. Request number 8aa9209204b2f521b3da16f92d9440a5. Antispam service cleantalk.org. ***
38
+
39
+ 1. To check and control anti-spam process use <a href="http://cleantalk.org/my" target="_blank">Control panel</a> at the cleantalk.org.
40
 
41
  == Frequently Asked Questions ==
42
 
44
  Plugin uses several simple tests to stop spammers.
45
 
46
  * Spam bots signatures.
47
+ * JavaScript antispam test.
48
+ * Checks by Email, IP, web-sites domain at <a href="http://cleantalk.org/blacklists" target="_blank">spam activities list</a>.
49
+ * Comment submit time. Spam bots usually send post immediately after page load.
50
+ * Relevance test for the comment. Spam bots send offtop posts, so the plugin can filter spam bots by oftop.
51
 
52
  = How plugin works? =
53
+ Spam comments moves to SPAM folder. First comment from a new author plugin compares with post and previous comments. If the relevance of the comment is good enough it gets approval at the blog without manual approval.
 
54
 
55
  = Will plugin works with my theme? =
56
+ Plugin works with all WordPress themes. With some themes may not works JavaScript anti-spam method, but it's not crucial to protect your blog from spam bots.
57
 
58
+ = How can I test anti-spam protection? =
59
+ Please use email **stop_email@example.com** for comments, contacts or signups. Also you can see comments proccessed by plugin for last 7 days at <a href="http://cleantalk.org/my/show_requests">Control panel</a> or look at folder "Spam" for banned comments.
 
 
60
 
61
  = How the plugin is effective against spam bots? =
62
+ Plugin Anti-spam by CleanTalk stops about 100% of spam bots comments. More over, by determining the relevance of the comment text, the plugin stops about 96% spam comments submitted manually via browser.
63
 
64
  = What about pingback, trackback spam? =
65
+ Plugin by default pass not spam pingbacks/trackbacks (sender host clear at <a href="http://cleantalk.org/blacklists">blacklists IP</a> database) from third-party sites to the blog. If the pingback has more then 3 records in the blacklists and not relevant to the blog the pingback will be stopped by CleanTalk.
66
 
67
  = Why do I need one more anti-spam plugin? =
68
  1. The plugin is more effective than CAPTCHA because use several methods to stop spammers.
70
  1. CleanTalk automatically approves relevant, not spam comments.
71
 
72
  = Should I use another antispam plugins? =
73
+ Use other antispam plugins not necessarily, because CleanTalk stops 100% of spam comments.
74
+
75
+ = The plugin WordPress MultiUser (WPMU or WordPress network) compatible? =
76
+ The plugin is WordPress MultiUser (WPMU or WordPress network) compatible. Each blog in multisite environment has individual anitspam options for spam bots protection.
77
+
78
+ = What about requirements? =
79
+ WordPress 3.0 at least. PHP 4, 5 with CURL or file_get_contents() function and enabled 'allow_url_fopen' setting. <a href="http://cleantalk.org/register?platform=wordpress">Sign up</a> to get an Access key.
80
+
81
+ = Has the plugin translations? =
82
+ * English
83
+ * Russian (ru_RU)
84
+ * Spain (es_ES) - thanks to Andrew Kurtis and <a href="http://www.webhostinghub.com/index-c.html?utm_expid=31925339-46.KEGZK8A6Q3yfZW0EUfEw5Q.1">WebHostingHub</a>
85
+
86
 
87
  == Screenshots ==
88
  1. The comment from spammer (sender blacklisted by IP/Email, comment text not relevant for the post) prohibited to place in the queue WordPress.
93
 
94
  == Changelog ==
95
 
96
+ = 2.31 2014-01-24 =
97
+ * New: Added spam protection for JetPack comments
98
+ * Fixed: cURL connection issue "Expect: 100-continue"
99
+
100
  = 2.30 2014-01-13 =
101
  * Changed: Improved servers connection logic.
102
  * Fixed: Antispam test for Fomidable forms.
241
  * First version
242
 
243
  == Upgrade Notice ==
244
+ = 2.31 2014-01-24 =
245
+ * New: Added spam protection for JetPack comments
246
+ * Fixed: CURL connection issue "Expect: 100-continue"
247
+
248
  = 2.30 2014-01-13 =
249
  * Changed: Improved servers connection logic.
250
  * Fixed: Antispam test for Fomidable forms.