Spam protection, AntiSpam, FireWall by CleanTalk - Version 5.120.1

Version Description

June 6 2019 = * Mod: Description for Search form protection. * Fix: CSS and JS attachment. * Fix: Undefined index error.

Download this release

Release Info

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

Code changes from version 5.120 to 5.120.1

apbct-fingerprint.js DELETED
@@ -1,293 +0,0 @@
1
- /*
2
- * fingerprintJS 0.5.5 - Fast browser fingerprint library
3
- * https://github.com/Valve/fingerprintjs
4
- * Copyright (c) 2013 Valentin Vasilyev (valentin.vasilyev@outlook.com)
5
- * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.
6
- *
7
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
8
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
9
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
10
- * ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
11
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
12
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
13
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
14
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
15
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
16
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
17
- */
18
- console.log('some1');
19
- ;(function (name, context, definition) {
20
- if (typeof module !== 'undefined' && module.exports) { module.exports = definition(); }
21
- else if (typeof define === 'function' && define.amd) { define(definition); }
22
- else { context[name] = definition(); }
23
- })('Fingerprint', this, function () {
24
- 'use strict';
25
-
26
- var Fingerprint = function (options) {
27
- var nativeForEach, nativeMap;
28
- nativeForEach = Array.prototype.forEach;
29
- nativeMap = Array.prototype.map;
30
-
31
- this.each = function (obj, iterator, context) {
32
- if (obj === null) {
33
- return;
34
- }
35
- if (nativeForEach && obj.forEach === nativeForEach) {
36
- obj.forEach(iterator, context);
37
- } else if (obj.length === +obj.length) {
38
- for (var i = 0, l = obj.length; i < l; i++) {
39
- if (iterator.call(context, obj[i], i, obj) === {}) return;
40
- }
41
- } else {
42
- for (var key in obj) {
43
- if (obj.hasOwnProperty(key)) {
44
- if (iterator.call(context, obj[key], key, obj) === {}) return;
45
- }
46
- }
47
- }
48
- };
49
-
50
- this.map = function(obj, iterator, context) {
51
- var results = [];
52
- // Not using strict equality so that this acts as a
53
- // shortcut to checking for `null` and `undefined`.
54
- if (obj == null) return results;
55
- if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
56
- this.each(obj, function(value, index, list) {
57
- results[results.length] = iterator.call(context, value, index, list);
58
- });
59
- return results;
60
- };
61
-
62
- if (typeof options == 'object'){
63
- this.hasher = options.hasher;
64
- this.screen_resolution = options.screen_resolution;
65
- this.screen_orientation = options.screen_orientation;
66
- this.canvas = options.canvas;
67
- this.ie_activex = options.ie_activex;
68
- } else if(typeof options == 'function'){
69
- this.hasher = options;
70
- }
71
- };
72
-
73
- Fingerprint.prototype = {
74
- get: function(){
75
- var keys = [];
76
- keys.push(navigator.userAgent);
77
- keys.push(navigator.language);
78
- keys.push(screen.colorDepth);
79
- if (this.screen_resolution) {
80
- var resolution = this.getScreenResolution();
81
- if (typeof resolution !== 'undefined'){ // headless browsers, such as phantomjs
82
- keys.push(resolution.join('x'));
83
- }
84
- }
85
- keys.push(new Date().getTimezoneOffset());
86
- keys.push(this.hasSessionStorage());
87
- keys.push(this.hasLocalStorage());
88
- keys.push(this.hasIndexDb());
89
- //body might not be defined at this point or removed programmatically
90
- if(document.body){
91
- keys.push(typeof(document.body.addBehavior));
92
- } else {
93
- keys.push(typeof undefined);
94
- }
95
- keys.push(typeof(window.openDatabase));
96
- keys.push(navigator.cpuClass);
97
- keys.push(navigator.platform);
98
- keys.push(navigator.doNotTrack);
99
- keys.push(this.getPluginsString());
100
- if(this.canvas && this.isCanvasSupported()){
101
- keys.push(this.getCanvasFingerprint());
102
- }
103
- if(this.hasher){
104
- return this.hasher(keys.join('###'), 31);
105
- } else {
106
- return this.murmurhash3_32_gc(keys.join('###'), 31);
107
- }
108
- },
109
-
110
- /**
111
- * JS Implementation of MurmurHash3 (r136) (as of May 20, 2011)
112
- *
113
- * @author <a href="mailto:gary.court@gmail.com">Gary Court</a>
114
- * @see http://github.com/garycourt/murmurhash-js
115
- * @author <a href="mailto:aappleby@gmail.com">Austin Appleby</a>
116
- * @see http://sites.google.com/site/murmurhash/
117
- *
118
- * @param {string} key ASCII only
119
- * @param {number} seed Positive integer only
120
- * @return {number} 32-bit positive integer hash
121
- */
122
-
123
- murmurhash3_32_gc: function(key, seed) {
124
- var remainder, bytes, h1, h1b, c1, c2, k1, i;
125
-
126
- remainder = key.length & 3; // key.length % 4
127
- bytes = key.length - remainder;
128
- h1 = seed;
129
- c1 = 0xcc9e2d51;
130
- c2 = 0x1b873593;
131
- i = 0;
132
-
133
- while (i < bytes) {
134
- k1 =
135
- ((key.charCodeAt(i) & 0xff)) |
136
- ((key.charCodeAt(++i) & 0xff) << 8) |
137
- ((key.charCodeAt(++i) & 0xff) << 16) |
138
- ((key.charCodeAt(++i) & 0xff) << 24);
139
- ++i;
140
-
141
- k1 = ((((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16))) & 0xffffffff;
142
- k1 = (k1 << 15) | (k1 >>> 17);
143
- k1 = ((((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16))) & 0xffffffff;
144
-
145
- h1 ^= k1;
146
- h1 = (h1 << 13) | (h1 >>> 19);
147
- h1b = ((((h1 & 0xffff) * 5) + ((((h1 >>> 16) * 5) & 0xffff) << 16))) & 0xffffffff;
148
- h1 = (((h1b & 0xffff) + 0x6b64) + ((((h1b >>> 16) + 0xe654) & 0xffff) << 16));
149
- }
150
-
151
- k1 = 0;
152
-
153
- switch (remainder) {
154
- case 3: k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16;
155
- case 2: k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8;
156
- case 1: k1 ^= (key.charCodeAt(i) & 0xff);
157
-
158
- k1 = (((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff;
159
- k1 = (k1 << 15) | (k1 >>> 17);
160
- k1 = (((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff;
161
- h1 ^= k1;
162
- }
163
-
164
- h1 ^= key.length;
165
-
166
- h1 ^= h1 >>> 16;
167
- h1 = (((h1 & 0xffff) * 0x85ebca6b) + ((((h1 >>> 16) * 0x85ebca6b) & 0xffff) << 16)) & 0xffffffff;
168
- h1 ^= h1 >>> 13;
169
- h1 = ((((h1 & 0xffff) * 0xc2b2ae35) + ((((h1 >>> 16) * 0xc2b2ae35) & 0xffff) << 16))) & 0xffffffff;
170
- h1 ^= h1 >>> 16;
171
-
172
- return h1 >>> 0;
173
- },
174
-
175
- // https://bugzilla.mozilla.org/show_bug.cgi?id=781447
176
- hasLocalStorage: function () {
177
- try{
178
- return !!window.localStorage;
179
- } catch(e) {
180
- return true; // SecurityError when referencing it means it exists
181
- }
182
- },
183
-
184
- hasSessionStorage: function () {
185
- try{
186
- return !!window.sessionStorage;
187
- } catch(e) {
188
- return true; // SecurityError when referencing it means it exists
189
- }
190
- },
191
-
192
- hasIndexDb: function () {
193
- try{
194
- return !!window.indexedDB;
195
- } catch(e) {
196
- return true; // SecurityError when referencing it means it exists
197
- }
198
- },
199
-
200
- isCanvasSupported: function () {
201
- var elem = document.createElement('canvas');
202
- return !!(elem.getContext && elem.getContext('2d'));
203
- },
204
-
205
- isIE: function () {
206
- if(navigator.appName === 'Microsoft Internet Explorer') {
207
- return true;
208
- } else if(navigator.appName === 'Netscape' && /Trident/.test(navigator.userAgent)){// IE 11
209
- return true;
210
- }
211
- return false;
212
- },
213
-
214
- getPluginsString: function () {
215
- if(this.isIE() && this.ie_activex){
216
- return this.getIEPluginsString();
217
- } else {
218
- return this.getRegularPluginsString();
219
- }
220
- },
221
-
222
- getRegularPluginsString: function () {
223
- return this.map(navigator.plugins, function (p) {
224
- var mimeTypes = this.map(p, function(mt){
225
- return [mt.type, mt.suffixes].join('~');
226
- }).join(',');
227
- return [p.name, p.description, mimeTypes].join('::');
228
- }, this).join(';');
229
- },
230
-
231
- getIEPluginsString: function () {
232
- if(window.ActiveXObject){
233
- var names = ['ShockwaveFlash.ShockwaveFlash',//flash plugin
234
- 'AcroPDF.PDF', // Adobe PDF reader 7+
235
- 'PDF.PdfCtrl', // Adobe PDF reader 6 and earlier, brrr
236
- 'QuickTime.QuickTime', // QuickTime
237
- // 5 versions of real players
238
- 'rmocx.RealPlayer G2 Control',
239
- 'rmocx.RealPlayer G2 Control.1',
240
- 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)',
241
- 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)',
242
- 'RealPlayer',
243
- 'SWCtl.SWCtl', // ShockWave player
244
- 'WMPlayer.OCX', // Windows media player
245
- 'AgControl.AgControl', // Silverlight
246
- 'Skype.Detection'];
247
-
248
- // starting to detect plugins in IE
249
- return this.map(names, function(name){
250
- try{
251
- new ActiveXObject(name);
252
- return name;
253
- } catch(e){
254
- return null;
255
- }
256
- }).join(';');
257
- } else {
258
- return ""; // behavior prior version 0.5.0, not breaking backwards compat.
259
- }
260
- },
261
-
262
- getScreenResolution: function () {
263
- var resolution;
264
- if(this.screen_orientation){
265
- resolution = (screen.height > screen.width) ? [screen.height, screen.width] : [screen.width, screen.height];
266
- }else{
267
- resolution = [screen.height, screen.width];
268
- }
269
- return resolution;
270
- },
271
-
272
- getCanvasFingerprint: function () {
273
- var canvas = document.createElement('canvas');
274
- var ctx = canvas.getContext('2d');
275
- // https://www.browserleaks.com/canvas#how-does-it-work
276
- var txt = 'http://valve.github.io';
277
- ctx.textBaseline = "top";
278
- ctx.font = "14px 'Arial'";
279
- ctx.textBaseline = "alphabetic";
280
- ctx.fillStyle = "#f60";
281
- ctx.fillRect(125,1,62,20);
282
- ctx.fillStyle = "#069";
283
- ctx.fillText(txt, 2, 15);
284
- ctx.fillStyle = "rgba(102, 204, 0, 0.7)";
285
- ctx.fillText(txt, 4, 17);
286
- return canvas.toDataURL();
287
- }
288
- };
289
-
290
-
291
- return Fingerprint;
292
-
293
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cleantalk.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Anti-Spam 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.
6
- Version: 5.120
7
  Author: СleanTalk <welcome@cleantalk.org>
8
  Author URI: http://cleantalk.org
9
  */
@@ -537,7 +537,8 @@ function apbct_sfw__check()
537
  $apbct->saveData();
538
  $sfw->sfw_die($apbct->api_key, '', parse_url(get_option('siteurl'),PHP_URL_HOST));
539
  }else{
540
- if(!empty($apbct->settings['set_cookies']) && !headers_sent())
 
541
  setcookie ('ct_sfw_pass_key', md5($sfw->passed_ips[key($sfw->passed_ips)]['ip'].$apbct->api_key), time()+86400*30, '/', parse_url(get_option('siteurl'),PHP_URL_HOST) ,false, true);
542
  }
543
  }
@@ -1538,7 +1539,26 @@ function apbct_wp_get_user_by($field, $value){
1538
  * @return string Hash of $data
1539
  */
1540
  function apbct_wp_hash( $data, $scheme = 'auth' ) {
1541
- $salt = constant(strtoupper("{$scheme}_KEY")).constant(strtoupper("{$scheme}_SALT"));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1542
  return hash_hmac('md5', $data, $salt);
1543
  }
1544
 
3
  Plugin Name: Anti-Spam 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.
6
+ Version: 5.120.1
7
  Author: СleanTalk <welcome@cleantalk.org>
8
  Author URI: http://cleantalk.org
9
  */
537
  $apbct->saveData();
538
  $sfw->sfw_die($apbct->api_key, '', parse_url(get_option('siteurl'),PHP_URL_HOST));
539
  }else{
540
+ reset($sfw->passed_ips);
541
+ if(!empty($apbct->settings['set_cookies']) && !headers_sent() && key($sfw->passed_ips))
542
  setcookie ('ct_sfw_pass_key', md5($sfw->passed_ips[key($sfw->passed_ips)]['ip'].$apbct->api_key), time()+86400*30, '/', parse_url(get_option('siteurl'),PHP_URL_HOST) ,false, true);
543
  }
544
  }
1539
  * @return string Hash of $data
1540
  */
1541
  function apbct_wp_hash( $data, $scheme = 'auth' ) {
1542
+
1543
+ $values = array(
1544
+ 'key' => '',
1545
+ 'salt' => '',
1546
+ );
1547
+
1548
+ foreach(array('key', 'salt') as $type){
1549
+ $const = strtoupper( "{$scheme}_{$type}");
1550
+ if ( defined($const) && constant($const)){
1551
+ $values[$type] = constant($const);
1552
+ }elseif(!$values[$type]){
1553
+ $values[$type] = get_site_option( "{$scheme}_{$type}");
1554
+ if (!$values[$type]){
1555
+ $values[$type] = '';
1556
+ }
1557
+ }
1558
+ }
1559
+
1560
+ $salt = $values['key'] . $values['salt'];
1561
+
1562
  return hash_hmac('md5', $data, $salt);
1563
  }
1564
 
inc/cleantalk-admin.php CHANGED
@@ -221,7 +221,7 @@ function apbct_admin__enqueue_scripts($hook){
221
 
222
  // Scripts to all admin pages
223
  wp_enqueue_script('ct_admin_js_notices', plugins_url('/cleantalk-spam-protect/js/cleantalk-admin.min.js'), array(), APBCT_VERSION);
224
- wp_enqueue_style ('ct_admin_css', plugins_url('/cleantalk-spam-protect/css/cleantalk-admin.min..css'), array(), APBCT_VERSION, 'all');
225
 
226
  wp_localize_script( 'jquery', 'ctAdminCommon', array(
227
  'plugin_name' => $apbct->plugin_name,
221
 
222
  // Scripts to all admin pages
223
  wp_enqueue_script('ct_admin_js_notices', plugins_url('/cleantalk-spam-protect/js/cleantalk-admin.min.js'), array(), APBCT_VERSION);
224
+ wp_enqueue_style ('ct_admin_css', plugins_url('/cleantalk-spam-protect/css/cleantalk-admin.min.css'), array(), APBCT_VERSION, 'all');
225
 
226
  wp_localize_script( 'jquery', 'ctAdminCommon', array(
227
  'plugin_name' => $apbct->plugin_name,
inc/cleantalk-public.php CHANGED
@@ -1467,7 +1467,7 @@ function ct_register_form() {
1467
  }
1468
 
1469
  function apbct_login__scripts(){
1470
- echo '<script src="'.APBCT_URL_PATH.'/js/apbct-public.js"></script>';
1471
  }
1472
 
1473
  /**
@@ -3009,7 +3009,7 @@ function ct_enqueue_scripts_public($hook){
3009
  // Use AJAX for JavaScript check
3010
  if($apbct->settings['use_ajax']){
3011
 
3012
- wp_enqueue_script('ct_nocache', plugins_url('/cleantalk-spam-protect/inc/cleantalk_nocache.min.js'), array(), APBCT_VERSION, false /*in header*/);
3013
 
3014
  wp_localize_script('ct_nocache', 'ctNocache', array(
3015
  'ajaxurl' => admin_url('admin-ajax.php'),
1467
  }
1468
 
1469
  function apbct_login__scripts(){
1470
+ echo '<script src="'.APBCT_URL_PATH.'/js/apbct-public.min.js"></script>';
1471
  }
1472
 
1473
  /**
3009
  // Use AJAX for JavaScript check
3010
  if($apbct->settings['use_ajax']){
3011
 
3012
+ wp_enqueue_script('ct_nocache', plugins_url('/cleantalk-spam-protect/js/cleantalk_nocache.min.js'), array(), APBCT_VERSION, false /*in header*/);
3013
 
3014
  wp_localize_script('ct_nocache', 'ctNocache', array(
3015
  'ajaxurl' => admin_url('admin-ajax.php'),
inc/cleantalk-settings.php CHANGED
@@ -145,7 +145,11 @@ function apbct_settings__add_page() {
145
  ),
146
  'search_test' => array(
147
  'title' => __('Test default Wordpress search form for spam', 'cleantalk'),
148
- 'description' => __('Some description.', 'cleantalk'),
 
 
 
 
149
  ),
150
  'check_external' => array(
151
  'title' => __('Protect external forms', 'cleantalk'),
145
  ),
146
  'search_test' => array(
147
  'title' => __('Test default Wordpress search form for spam', 'cleantalk'),
148
+ 'description' => sprintf(
149
+ __('Spam protection for Search form. Read more about %sspam protection for Search form%s on our blog.', 'cleantalk'),
150
+ '<a href="https://blog.cleantalk.org/how-to-protect-website-search-from-spambots/" target="_blank">',
151
+ '</a>'
152
+ )
153
  ),
154
  'check_external' => array(
155
  'title' => __('Protect external forms', 'cleantalk'),
inc/cleantalk_nocache.js DELETED
@@ -1,210 +0,0 @@
1
- /*
2
- Assign default values for backend variables.
3
- */
4
- if (typeof ctNocache === 'undefined') {
5
- ctNocache.set_cookies_flag = true;
6
- ctNocache.ajaxurl = '/wp-admin/admin-ajax.php';
7
- }
8
-
9
- function sendRequest(url,callback,postData) {
10
- var req = createXMLHTTPObject();
11
- if (!req) return;
12
- var method = (postData) ? "POST" : "GET";
13
-
14
- var protocol = location.protocol;
15
- if (protocol === 'https:') {
16
- url = url.replace('http:', 'https:');
17
- } else {
18
- url = url.replace('https:', 'http:');
19
- }
20
-
21
- req.open(method,url,true);
22
- if (postData)
23
- req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
24
- req.onreadystatechange = function () {
25
- if (req.readyState != 4) return;
26
- if (req.status != 200 && req.status != 304) {
27
- // alert('HTTP error ' + req.status);
28
- return;
29
- }
30
- callback(req);
31
- };
32
- if (req.readyState == 4) return;
33
- req.send(postData);
34
- }
35
-
36
- var XMLHttpFactories = [
37
- function () {return new XMLHttpRequest()},
38
- function () {return new ActiveXObject("Msxml2.XMLHTTP")},
39
- function () {return new ActiveXObject("Msxml3.XMLHTTP")},
40
- function () {return new ActiveXObject("Microsoft.XMLHTTP")}
41
- ];
42
-
43
- function createXMLHTTPObject() {
44
- var xmlhttp = false;
45
- for (var i=0;i<XMLHttpFactories.length;i++) {
46
- try {
47
- xmlhttp = XMLHttpFactories[i]();
48
- }
49
- catch (e) {
50
- continue;
51
- }
52
- break;
53
- }
54
- return xmlhttp;
55
- }
56
-
57
- function ct_getCookie(name) {
58
- var matches = document.cookie.match(new RegExp(
59
- "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
60
- ));
61
- return matches ? decodeURIComponent(matches[1]) : undefined;
62
- }
63
-
64
- function ct_setCookie(name, value)
65
- {
66
- if (ctNocache.set_cookies_flag) {
67
- document.cookie = name+" =; expires=Thu, 01 Jan 1970 00:00:01 GMT; path = /";
68
- document.cookie = name+" =; expires=Thu, 01 Jan 1970 00:00:01 GMT";
69
-
70
- var date = new Date;
71
- date.setDate(date.getDate() + 1);
72
- setTimeout(function() { document.cookie = name+"=" + value + "; expires=" + date.toUTCString() + "; path = /;"}, 500);
73
- }
74
-
75
- return null;
76
- }
77
-
78
- function ct_callback(req)
79
- {
80
- ct_cookie = req.responseText.trim();
81
- //alert('Key value: ' + ct_cookie);
82
-
83
- ct_setCookie('ct_checkjs', ct_cookie);
84
-
85
- for(i=0;i<document.forms.length;i++)
86
- {
87
- f=document.forms[i];
88
- for(j=0;j<f.elements.length;j++)
89
- {
90
- e=f.elements[j];
91
- if(e.name!==undefined&&e.name.indexOf('ct_checkjs')!=-1)
92
- {
93
- e.value=ct_cookie;
94
- //alert('Form #' + i + ', field ' + e.name + ' = ' + ct_cookie);
95
- }
96
- }
97
- }
98
-
99
- //alert('Set cookie: \n' + document.cookie);
100
- }
101
-
102
- if (!Date.now) {
103
- Date.now = function() { return new Date().getTime(); }
104
- }
105
-
106
- if(ct_nocache_executed==undefined)
107
- {
108
- var ct_nocache_executed=true;
109
-
110
- var checkjs_cookie=ct_getCookie('ct_checkjs');
111
-
112
- if(checkjs_cookie!=undefined)
113
- {
114
- for(i=0;i<document.forms.length;i++)
115
- {
116
- f=document.forms[i];
117
- for(j=0;j<f.elements.length;j++)
118
- {
119
- e=f.elements[j];
120
- if(e.name!==undefined&&e.name.indexOf('ct_checkjs')!=-1)
121
- {
122
- e.value=checkjs_cookie;
123
- //alert('Form #' + i + ', field ' + e.name + ' = ' + ct_cookie);
124
- }
125
- }
126
- }
127
- }
128
-
129
- if(checkjs_cookie==undefined) //86400 is 24 hours
130
- {
131
- sendRequest(ctNocache.ajaxurl+'?'+Math.random(),ct_callback,'action=ct_get_cookie');
132
- }
133
-
134
- if(typeof ctNocache.info_flag !== 'undefined' && ctNocache.info_flag)
135
- {
136
-
137
- var cleantalk_user_info={};
138
-
139
- var cleantalk_screen_info={};
140
- for(var prop in screen)
141
- {
142
- if (navigator[prop] instanceof Object || screen[prop]==='')
143
- continue;
144
- cleantalk_screen_info[prop]=screen[prop];
145
- }
146
-
147
- cleantalk_user_info.screen=cleantalk_screen_info;
148
-
149
- var cleantalk_plugins=Array();
150
- var prev;
151
- var cnt=0;
152
- for(var i=0;i<navigator.plugins.length;i++)
153
- {
154
- var plugin = navigator.plugins[i];
155
- var plugin = plugin.name+" "+(plugin.version || '')
156
- if (prev == plugin ) continue;
157
- cleantalk_plugins[cnt]=plugin;
158
- cnt++;
159
- prev = plugin;
160
- }
161
- cleantalk_user_info.plugins=cleantalk_plugins;
162
-
163
- cleantalk_user_info.timezone_offset = -new Date().getTimezoneOffset()/60;
164
- cleantalk_user_info.datetime = Math.round((new Date().getTime())/1000);
165
-
166
- cleantalk_user_info.browser_x=document.documentElement.clientWidth;
167
- cleantalk_user_info.browser_y=document.documentElement.clientHeight;
168
-
169
- var ua = navigator.userAgent.toLowerCase();
170
- var flashInstalled = 0;
171
- if (typeof(navigator.plugins)!="undefined"&&typeof(navigator.plugins["Shockwave Flash"])=="object")
172
- {
173
- flashInstalled = 1;
174
- }
175
- else if (typeof window.ActiveXObject != "undefined")
176
- {
177
- try
178
- {
179
- if (new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))
180
- {
181
- flashInstalled = 1;
182
- }
183
- } catch(e) {};
184
- };
185
-
186
- cleantalk_user_info.is_flash=flashInstalled;
187
-
188
- isVisitedMain=-1;
189
- if(location.href=='http://'+location.hostname+'/' || location.href=='https://'+location.hostname+'/')
190
- {
191
- isVisitedMain=1;
192
- setTimeout(function() { document.cookie = "ct_visited_main = 1; path = /;"}, 1500);
193
- }
194
-
195
-
196
- ct_visited_main = ct_getCookie('ct_visited_main');
197
- if(ct_visited_main==undefined && isVisitedMain==-1)
198
- {
199
- isVisitedMain=0;
200
- }
201
- else
202
- {
203
- isVisitedMain=1;
204
- }
205
-
206
- cleantalk_user_info.is_main=isVisitedMain;
207
-
208
- setTimeout(function() { document.cookie = "ct_user_info = "+escape(JSON.stringify(cleantalk_user_info))+"; path = /;"}, 1500);
209
- }
210
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/cleantalk_nocache.min.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ function sendRequest(e,t,n){var c=createXMLHTTPObject();if(c){var i=n?"POST":"GET";e="https:"===location.protocol?e.replace("http:","https:"):e.replace("https:","http:"),c.open(i,e,!0),n&&c.setRequestHeader("Content-type","application/x-www-form-urlencoded"),c.onreadystatechange=function(){4==c.readyState&&(200!=c.status&&304!=c.status||t(c))},4!=c.readyState&&c.send(n)}}"undefined"==typeof ctNocache&&(ctNocache.set_cookies_flag=!0,ctNocache.ajaxurl="/wp-admin/admin-ajax.php");var XMLHttpFactories=[function(){return new XMLHttpRequest},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml3.XMLHTTP")},function(){return new ActiveXObject("Microsoft.XMLHTTP")}];function createXMLHTTPObject(){for(var e=!1,t=0;t<XMLHttpFactories.length;t++){try{e=XMLHttpFactories[t]()}catch(e){continue}break}return e}function ct_getCookie(e){var t=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,"\\$1")+"=([^;]*)"));return t?decodeURIComponent(t[1]):void 0}function ct_setCookie(e,t){if(ctNocache.set_cookies_flag){document.cookie=e+" =; expires=Thu, 01 Jan 1970 00:00:01 GMT; path = /",document.cookie=e+" =; expires=Thu, 01 Jan 1970 00:00:01 GMT";var n=new Date;n.setDate(n.getDate()+1),setTimeout(function(){document.cookie=e+"="+t+"; expires="+n.toUTCString()+"; path = /;"},500)}return null}function ct_callback(t){for(ct_cookie=t.responseText.trim(),ct_setCookie("ct_checkjs",ct_cookie),i=0;i<document.forms.length;i++)for(f=document.forms[i],j=0;j<f.elements.length;j++)e=f.elements[j],void 0!==e.name&&-1!=e.name.indexOf("ct_checkjs")&&(e.value=ct_cookie)}if(Date.now||(Date.now=function(){return(new Date).getTime()}),null==ct_nocache_executed){var ct_nocache_executed=!0,checkjs_cookie=ct_getCookie("ct_checkjs");if(null!=checkjs_cookie)for(i=0;i<document.forms.length;i++)for(f=document.forms[i],j=0;j<f.elements.length;j++)e=f.elements[j],void 0!==e.name&&-1!=e.name.indexOf("ct_checkjs")&&(e.value=checkjs_cookie);if(null==checkjs_cookie&&sendRequest(ctNocache.ajaxurl+"?"+Math.random(),ct_callback,"action=ct_get_cookie"),void 0!==ctNocache.info_flag&&ctNocache.info_flag){var cleantalk_user_info={},cleantalk_screen_info={};for(var prop in screen)navigator[prop]instanceof Object||""===screen[prop]||(cleantalk_screen_info[prop]=screen[prop]);cleantalk_user_info.screen=cleantalk_screen_info;for(var prev,cleantalk_plugins=Array(),cnt=0,i=0;i<navigator.plugins.length;i++){var plugin;prev!=(plugin=(plugin=navigator.plugins[i]).name+" "+(plugin.version||""))&&(cleantalk_plugins[cnt]=plugin,cnt++,prev=plugin)}cleantalk_user_info.plugins=cleantalk_plugins,cleantalk_user_info.timezone_offset=-(new Date).getTimezoneOffset()/60,cleantalk_user_info.datetime=Math.round((new Date).getTime()/1e3),cleantalk_user_info.browser_x=document.documentElement.clientWidth,cleantalk_user_info.browser_y=document.documentElement.clientHeight;var ua=navigator.userAgent.toLowerCase(),flashInstalled=0;if(void 0!==navigator.plugins&&"object"==typeof navigator.plugins["Shockwave Flash"])flashInstalled=1;else if(void 0!==window.ActiveXObject)try{new ActiveXObject("ShockwaveFlash.ShockwaveFlash")&&(flashInstalled=1)}catch(e){}cleantalk_user_info.is_flash=flashInstalled,isVisitedMain=-1,location.href!="http://"+location.hostname+"/"&&location.href!="https://"+location.hostname+"/"||(isVisitedMain=1,setTimeout(function(){document.cookie="ct_visited_main = 1; path = /;"},1500)),ct_visited_main=ct_getCookie("ct_visited_main"),null==ct_visited_main&&-1==isVisitedMain?isVisitedMain=0:isVisitedMain=1,cleantalk_user_info.is_main=isVisitedMain,setTimeout(function(){document.cookie="ct_user_info = "+escape(JSON.stringify(cleantalk_user_info))+"; path = /;"},1500)}}
2
+ //# sourceMappingURL=cleantalk_nocache.min.js.map
js/cleantalk_nocache.min.js.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"sources":["cleantalk_nocache.js"],"names":["sendRequest","url","callback","postData","req","createXMLHTTPObject","method","location","protocol","replace","open","setRequestHeader","onreadystatechange","readyState","status","send","ctNocache","set_cookies_flag","ajaxurl","XMLHttpFactories","XMLHttpRequest","ActiveXObject","xmlhttp","i","length","e","ct_getCookie","name","matches","document","cookie","match","RegExp","decodeURIComponent","undefined","ct_setCookie","value","date","Date","setDate","getDate","setTimeout","toUTCString","ct_callback","ct_cookie","responseText","trim","forms","f","j","elements","indexOf","now","getTime","ct_nocache_executed","checkjs_cookie","Math","random","info_flag","cleantalk_user_info","cleantalk_screen_info","prop","screen","navigator","Object","prev","cleantalk_plugins","Array","cnt","plugins","plugin","version","timezone_offset","getTimezoneOffset","datetime","round","browser_x","documentElement","clientWidth","browser_y","clientHeight","ua","userAgent","toLowerCase","flashInstalled","window","is_flash","isVisitedMain","href","hostname","ct_visited_main","is_main","escape","JSON","stringify"],"mappings":"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","file":"cleantalk_nocache.min.js","sourcesContent":["/*\n Assign default values for backend variables.\n*/\nif (typeof ctNocache === 'undefined') {\n ctNocache.set_cookies_flag = true;\n ctNocache.ajaxurl = '/wp-admin/admin-ajax.php';\n}\n\nfunction sendRequest(url,callback,postData) {\n var req = createXMLHTTPObject();\n if (!req) return;\n var method = (postData) ? \"POST\" : \"GET\";\n \n var protocol = location.protocol;\n if (protocol === 'https:') {\n url = url.replace('http:', 'https:');\n } else {\n url = url.replace('https:', 'http:');\n }\n \n req.open(method,url,true);\n if (postData)\n req.setRequestHeader('Content-type','application/x-www-form-urlencoded');\n req.onreadystatechange = function () {\n if (req.readyState != 4) return;\n if (req.status != 200 && req.status != 304) {\n// alert('HTTP error ' + req.status);\n return;\n }\n callback(req);\n };\n if (req.readyState == 4) return;\n req.send(postData);\n}\n\nvar XMLHttpFactories = [\n function () {return new XMLHttpRequest()},\n function () {return new ActiveXObject(\"Msxml2.XMLHTTP\")},\n function () {return new ActiveXObject(\"Msxml3.XMLHTTP\")},\n function () {return new ActiveXObject(\"Microsoft.XMLHTTP\")}\n];\n\nfunction createXMLHTTPObject() {\n var xmlhttp = false;\n for (var i=0;i<XMLHttpFactories.length;i++) {\n try {\n xmlhttp = XMLHttpFactories[i]();\n }\n catch (e) {\n continue;\n }\n break;\n }\n return xmlhttp;\n}\n\nfunction ct_getCookie(name) {\n var matches = document.cookie.match(new RegExp(\n \"(?:^|; )\" + name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') + \"=([^;]*)\"\n ));\n return matches ? decodeURIComponent(matches[1]) : undefined;\n}\n\nfunction ct_setCookie(name, value)\n{\n if (ctNocache.set_cookies_flag) {\n document.cookie = name+\" =; expires=Thu, 01 Jan 1970 00:00:01 GMT; path = /\";\n document.cookie = name+\" =; expires=Thu, 01 Jan 1970 00:00:01 GMT\";\n \n var date = new Date;\n date.setDate(date.getDate() + 1);\n setTimeout(function() { document.cookie = name+\"=\" + value + \"; expires=\" + date.toUTCString() + \"; path = /;\"}, 500);\n }\n\n return null;\n}\n\nfunction ct_callback(req)\n{\n\tct_cookie = req.responseText.trim();\n\t//alert('Key value: ' + ct_cookie);\n\t\n\tct_setCookie('ct_checkjs', ct_cookie);\n\t\n\tfor(i=0;i<document.forms.length;i++)\n\t{\n\t\tf=document.forms[i];\n\t\tfor(j=0;j<f.elements.length;j++)\n\t\t{\n\t\t\te=f.elements[j];\n\t\t\tif(e.name!==undefined&&e.name.indexOf('ct_checkjs')!=-1)\n\t\t\t{\n\t\t\t\te.value=ct_cookie;\n\t\t\t\t//alert('Form #' + i + ', field ' + e.name + ' = ' + ct_cookie);\n\t\t\t}\n\t\t}\n\t}\n\n\t//alert('Set cookie: \\n' + document.cookie);\n}\n\nif (!Date.now) {\n\tDate.now = function() { return new Date().getTime(); }\n}\n\nif(ct_nocache_executed==undefined)\n{\n\tvar ct_nocache_executed=true;\n\t\n\tvar checkjs_cookie=ct_getCookie('ct_checkjs');\n\t\n\tif(checkjs_cookie!=undefined)\n\t{\n\t\tfor(i=0;i<document.forms.length;i++)\n\t\t{\n\t\t\tf=document.forms[i];\n\t\t\tfor(j=0;j<f.elements.length;j++)\n\t\t\t{\n\t\t\t\te=f.elements[j];\n\t\t\t\tif(e.name!==undefined&&e.name.indexOf('ct_checkjs')!=-1)\n\t\t\t\t{\n\t\t\t\t\te.value=checkjs_cookie;\n\t\t\t\t\t//alert('Form #' + i + ', field ' + e.name + ' = ' + ct_cookie);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\t\n\t\n\tif(checkjs_cookie==undefined) //86400 is 24 hours\n\t{\n\t\tsendRequest(ctNocache.ajaxurl+'?'+Math.random(),ct_callback,'action=ct_get_cookie');\n\t}\n\t\n\tif(typeof ctNocache.info_flag !== 'undefined' && ctNocache.info_flag)\n\t{\n\t\n\t\tvar cleantalk_user_info={};\n\t\t\n\t\tvar cleantalk_screen_info={};\n\t\tfor(var prop in screen)\n\t\t{\n\t\t\tif (navigator[prop] instanceof Object || screen[prop]==='')\n\t\t\t\tcontinue;\n\t\t\tcleantalk_screen_info[prop]=screen[prop];\n\t\t}\n\t\t\n\t\tcleantalk_user_info.screen=cleantalk_screen_info;\n\t\t\n\t\tvar cleantalk_plugins=Array();\n\t\tvar prev;\n\t\tvar cnt=0;\n\t\tfor(var i=0;i<navigator.plugins.length;i++)\n\t\t{\n\t\t\tvar plugin = navigator.plugins[i];\n\t\t\tvar plugin = plugin.name+\" \"+(plugin.version || '')\n\t\t\tif (prev == plugin ) continue;\n\t\t\tcleantalk_plugins[cnt]=plugin;\n\t\t\tcnt++;\n\t\t\tprev = plugin;\n\t\t}\n\t\tcleantalk_user_info.plugins=cleantalk_plugins;\n\t\t\n\t\tcleantalk_user_info.timezone_offset = -new Date().getTimezoneOffset()/60;\n\t\tcleantalk_user_info.datetime = Math.round((new Date().getTime())/1000);\n\t\t\n\t\tcleantalk_user_info.browser_x=document.documentElement.clientWidth;\n\t\tcleantalk_user_info.browser_y=document.documentElement.clientHeight;\n\t\t\n\t\tvar ua = navigator.userAgent.toLowerCase();\n\t\tvar flashInstalled = 0;\n\t\tif (typeof(navigator.plugins)!=\"undefined\"&&typeof(navigator.plugins[\"Shockwave Flash\"])==\"object\")\n\t\t{\n\t\t\tflashInstalled = 1;\n\t\t}\n\t\telse if (typeof window.ActiveXObject != \"undefined\")\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tif (new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash\"))\n\t\t\t\t{\n\t\t\t\t\tflashInstalled = 1;\n\t\t\t\t}\n\t\t\t} catch(e) {};\n\t\t};\n\t\t\n\t\tcleantalk_user_info.is_flash=flashInstalled;\n\t\t\n\t\tisVisitedMain=-1;\n\t\tif(location.href=='http://'+location.hostname+'/' || location.href=='https://'+location.hostname+'/')\n\t\t{\n\t\t\tisVisitedMain=1;\n\t\t\tsetTimeout(function() { document.cookie = \"ct_visited_main = 1; path = /;\"}, 1500);\n\t\t}\n\t\t\n\t\t\n\t\tct_visited_main = ct_getCookie('ct_visited_main');\n\t\tif(ct_visited_main==undefined && isVisitedMain==-1)\n\t\t{\n\t\t\tisVisitedMain=0;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tisVisitedMain=1;\n\t\t}\n\t\t\n\t\tcleantalk_user_info.is_main=isVisitedMain;\n\t\t\n\t\tsetTimeout(function() { document.cookie = \"ct_user_info = \"+escape(JSON.stringify(cleantalk_user_info))+\"; path = /;\"}, 1500);\n\t}\n}"]}
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: safronik
3
  Tags: spam, antispam, protection, comments, firewall
4
  Requires at least: 3.0
5
  Tested up to: 5.2
6
- Stable tag: 5.120
7
  License: GPLv2
8
 
9
  Spam protection, antispam, all-in-one, premium plugin. No spam comments & users, no spam contact form & WooCommerce anti-spam.
@@ -560,6 +560,11 @@ If your website has forms that send data to external sources, you can enable opt
560
  10. Website's options.
561
 
562
  == Changelog ==
 
 
 
 
 
563
  = 5.120 June 5 2019 =
564
  * Fix: bbPress false positives.
565
  * Fix: SpamFireWall check condition.
@@ -1904,6 +1909,11 @@ If your website has forms that send data to external sources, you can enable opt
1904
  * First version
1905
 
1906
  == Upgrade Notice ==
 
 
 
 
 
1907
  = 5.120 June 5 2019 =
1908
  * Fix: bbPress false positives.
1909
  * Fix: SpamFireWall check condition.
3
  Tags: spam, antispam, protection, comments, firewall
4
  Requires at least: 3.0
5
  Tested up to: 5.2
6
+ Stable tag: 5.120.1
7
  License: GPLv2
8
 
9
  Spam protection, antispam, all-in-one, premium plugin. No spam comments & users, no spam contact form & WooCommerce anti-spam.
560
  10. Website's options.
561
 
562
  == Changelog ==
563
+ = 5.120.1 June 6 2019 =
564
+ * Mod: Description for Search form protection.
565
+ * Fix: CSS and JS attachment.
566
+ * Fix: Undefined index error.
567
+
568
  = 5.120 June 5 2019 =
569
  * Fix: bbPress false positives.
570
  * Fix: SpamFireWall check condition.
1909
  * First version
1910
 
1911
  == Upgrade Notice ==
1912
+ = 5.120.1 June 6 2019 =
1913
+ * Mod: Description for Search form protection.
1914
+ * Fix: CSS and JS attachment.
1915
+ * Fix: Undefined index error.
1916
+
1917
  = 5.120 June 5 2019 =
1918
  * Fix: bbPress false positives.
1919
  * Fix: SpamFireWall check condition.