Version Description
Fixes - Ajax call javascript error
Download this release
Release Info
Developer | mihche |
Plugin | WPBruiser {no- Captcha anti-Spam} |
Version | 3.1.40 |
Comparing to | |
See all releases |
Code changes from version 3.1.38 to 3.1.40
- assets/public/scripts/gdbc-client-new.js.php +53 -40
- assets/public/scripts/gdbc-client.js.php +160 -72
- goodbye-captcha.php +2 -3
- readme.txt +11 -1
assets/public/scripts/gdbc-client-new.js.php
CHANGED
@@ -1,33 +1,13 @@
|
|
1 |
<?php
|
2 |
-
/*
|
3 |
-
* Copyright (C) 2018 Mihai Chelaru
|
4 |
-
*
|
5 |
-
* This program is free software; you can redistribute it and/or
|
6 |
-
* modify it under the terms of the GNU General Public License
|
7 |
-
* as published by the Free Software Foundation; either version 2
|
8 |
-
* of the License, or (at your option) any later version.
|
9 |
-
*
|
10 |
-
* This program is distributed in the hope that it will be useful,
|
11 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13 |
-
* GNU General Public License for more details.
|
14 |
-
*
|
15 |
-
* You should have received a copy of the GNU General Public License
|
16 |
-
* along with this program; if not, write to the Free Software
|
17 |
-
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
18 |
-
*/
|
19 |
|
20 |
defined( 'ABSPATH' ) || exit;
|
21 |
|
22 |
-
function
|
23 |
-
{
|
24 |
$arrHeaders['Cache-Control'] = 'no-store, no-cache, must-revalidate, max-age=0';
|
25 |
$arrHeaders['Content-Type'] = 'application/javascript; charset=utf-8';
|
26 |
|
27 |
return $arrHeaders;
|
28 |
-
}
|
29 |
-
|
30 |
-
add_filter('nocache_headers', 'gdbcRewriteNoCacheHeaders', 1);
|
31 |
|
32 |
nocache_headers();
|
33 |
|
@@ -101,31 +81,62 @@ $hiddenInputName = $settingsModuleInstance->getOption(GdbcSettingsAdminModule::O
|
|
101 |
requestObj.send(serializeObject(ajaxData));
|
102 |
|
103 |
requestObj.onreadystatechange = function () {
|
104 |
-
if (4 === requestObj.readyState && 200 === requestObj.status)
|
|
|
105 |
try
|
106 |
{
|
107 |
var rs = JSON.parse(requestObj.responseText);
|
108 |
-
if(rs.data
|
109 |
-
|
110 |
-
|
111 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
}
|
113 |
-
else {
|
114 |
-
var value = '', arrValues = rs.data[p].split('|');
|
115 |
-
for (var i = 0; i < arrValues.length; ++i) {
|
116 |
-
if (browserInfo.hasOwnProperty(arrValues[i]))
|
117 |
-
value += browserInfo[arrValues[i]];
|
118 |
-
}
|
119 |
-
|
120 |
-
var elm = document.createElement("input");elm.name = p;elm.value=value;elm.type='hidden';formElement.appendChild(elm);
|
121 |
-
|
122 |
-
if((' ' + formElement.className + ' ').indexOf(' mailpoet_form ') > -1){
|
123 |
-
elm.name = 'data[' + p + ']';formFieldElm.name = 'data[' + formFieldElm.name + ']';
|
124 |
-
}
|
125 |
|
|
|
|
|
|
|
|
|
|
|
126 |
}
|
127 |
}
|
128 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
129 |
}
|
130 |
catch(e){console.log(e.message);}
|
131 |
}
|
@@ -134,6 +145,8 @@ $hiddenInputName = $settingsModuleInstance->getOption(GdbcSettingsAdminModule::O
|
|
134 |
|
135 |
init();
|
136 |
|
|
|
|
|
137 |
function serializeObject(obj) {
|
138 |
var str = [];
|
139 |
for(var p in obj)
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
defined( 'ABSPATH' ) || exit;
|
4 |
|
5 |
+
add_filter('nocache_headers', function($arrHeaders){
|
|
|
6 |
$arrHeaders['Cache-Control'] = 'no-store, no-cache, must-revalidate, max-age=0';
|
7 |
$arrHeaders['Content-Type'] = 'application/javascript; charset=utf-8';
|
8 |
|
9 |
return $arrHeaders;
|
10 |
+
}, 1);
|
|
|
|
|
11 |
|
12 |
nocache_headers();
|
13 |
|
81 |
requestObj.send(serializeObject(ajaxData));
|
82 |
|
83 |
requestObj.onreadystatechange = function () {
|
84 |
+
if (4 === requestObj.readyState && 200 === requestObj.status)
|
85 |
+
{
|
86 |
try
|
87 |
{
|
88 |
var rs = JSON.parse(requestObj.responseText);
|
89 |
+
if(rs.data === 'undefined')
|
90 |
+
return;
|
91 |
+
|
92 |
+
var tokens = {};
|
93 |
+
|
94 |
+
for(var p in rs.data)
|
95 |
+
{
|
96 |
+
if(p=='token')
|
97 |
+
{
|
98 |
+
formFieldElm.value = rs.data[p];
|
99 |
+
tokens[formFieldElm.name] = null;
|
100 |
+
}
|
101 |
+
else
|
102 |
+
{
|
103 |
+
var value = '', arrValues = rs.data[p].split('|');
|
104 |
+
for (var i = 0; i < arrValues.length; ++i) {
|
105 |
+
if (browserInfo.hasOwnProperty(arrValues[i]))
|
106 |
+
value += browserInfo[arrValues[i]];
|
107 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
108 |
|
109 |
+
var elm = document.createElement("input");elm.name = p;elm.value=value;elm.type='hidden';formElement.appendChild(elm);
|
110 |
+
tokens[elm.name] = null;
|
111 |
+
|
112 |
+
if((' ' + formElement.className + ' ').indexOf(' mailpoet_form ') > -1){
|
113 |
+
elm.name = 'data[' + p + ']';formFieldElm.name = 'data[' + formFieldElm.name + ']';
|
114 |
}
|
115 |
}
|
116 |
+
}
|
117 |
+
|
118 |
+
window.jQuery && jQuery.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
|
119 |
+
|
120 |
+
if(!formElement.querySelector('.nf-element'))
|
121 |
+
return;
|
122 |
+
console.log(options);console.log(originalOptions);
|
123 |
+
|
124 |
+
if( !isObject(options) || !isObject(originalOptions) || !('data' in originalOptions) || !isObject(originalOptions.data))
|
125 |
+
return;
|
126 |
+
|
127 |
+
if( !('action' in originalOptions.data) || originalOptions.data.action !== 'nf_ajax_submit')
|
128 |
+
return;
|
129 |
+
|
130 |
+
for(var token in tokens){
|
131 |
+
tokens[token] = formElement.querySelector('input[name="'+token+'"]');
|
132 |
+
tokens[token] && (tokens[token] = tokens[token].value );
|
133 |
+
}
|
134 |
+
|
135 |
+
options.data = jQuery.param(jQuery.extend(originalOptions.data||{}, tokens));
|
136 |
+
|
137 |
+
});
|
138 |
+
|
139 |
+
|
140 |
}
|
141 |
catch(e){console.log(e.message);}
|
142 |
}
|
145 |
|
146 |
init();
|
147 |
|
148 |
+
function isObject(a) {return (!!a) && (a.constructor === Object);}
|
149 |
+
|
150 |
function serializeObject(obj) {
|
151 |
var str = [];
|
152 |
for(var p in obj)
|
assets/public/scripts/gdbc-client.js.php
CHANGED
@@ -1,84 +1,172 @@
|
|
1 |
<?php
|
2 |
-
/*
|
3 |
-
* Copyright (C) 2014 Mihai Chelaru
|
4 |
-
*
|
5 |
-
* This program is free software; you can redistribute it and/or
|
6 |
-
* modify it under the terms of the GNU General Public License
|
7 |
-
* as published by the Free Software Foundation; either version 2
|
8 |
-
* of the License, or (at your option) any later version.
|
9 |
-
*
|
10 |
-
* This program is distributed in the hope that it will be useful,
|
11 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13 |
-
* GNU General Public License for more details.
|
14 |
-
*
|
15 |
-
* You should have received a copy of the GNU General Public License
|
16 |
-
* along with this program; if not, write to the Free Software
|
17 |
-
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
18 |
-
*/
|
19 |
|
20 |
defined( 'ABSPATH' ) || exit;
|
21 |
|
22 |
-
function
|
23 |
-
{
|
24 |
$arrHeaders['Cache-Control'] = 'no-store, no-cache, must-revalidate, max-age=0';
|
25 |
$arrHeaders['Content-Type'] = 'application/javascript; charset=utf-8';
|
26 |
-
|
27 |
return $arrHeaders;
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
}
|
29 |
|
30 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
|
32 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
|
34 |
|
35 |
-
?>
|
36 |
-
|
37 |
-
(function($) {
|
38 |
-
$.GdbcClient = function(el, options) {
|
39 |
-
var gdbcClient = this, defaults = {};
|
40 |
-
gdbcClient.settings = {};
|
41 |
-
var init = function() {
|
42 |
-
gdbcClient.settings = $.extend({}, defaults, options);
|
43 |
-
};
|
44 |
-
|
45 |
-
gdbcClient.requestTokens = function() {
|
46 |
-
$('form input[name=' + Gdbc.formFieldName + ']').each(function(){
|
47 |
-
requestTokenValue($(this));
|
48 |
-
});
|
49 |
-
};
|
50 |
-
|
51 |
-
var requestTokenValue = function(elm) {
|
52 |
-
var ajaxData = {};
|
53 |
-
|
54 |
-
ajaxData[Gdbc.formFieldName] = '<?php echo GdbcAjaxController::getAjaxNonce(); ?>';
|
55 |
-
ajaxData['action'] = '<?php echo GdbcAjaxController::ACTION_RETRIEVE_TOKEN ?>';
|
56 |
-
ajaxData['requestTime'] = (new Date()).getTime();
|
57 |
-
ajaxData['browserInfo'] = JSON.stringify(Gdbc.browserInfo);
|
58 |
-
$.ajax({
|
59 |
-
type : "post",
|
60 |
-
cache: false,
|
61 |
-
dataType : "json",
|
62 |
-
url : Gdbc.ajaxUrl + '?t=' + ajaxData['requestTime'],
|
63 |
-
data : ajaxData,
|
64 |
-
success: function(response){
|
65 |
-
$.each(response.data, function(prop, val){
|
66 |
-
if(prop === 'token'){
|
67 |
-
elm.val(val);return;
|
68 |
-
}
|
69 |
-
|
70 |
-
var value = '', arrValues = val.split('|');
|
71 |
-
for(var i=0; i<arrValues.length; ++i) {
|
72 |
-
if (Gdbc.browserInfo.hasOwnProperty(arrValues[i]))
|
73 |
-
value += Gdbc.browserInfo[arrValues[i]];
|
74 |
-
}
|
75 |
-
$('<input>').prop({type:'hidden',name:prop,value:value}).appendTo(elm.closest('form'));
|
76 |
-
});
|
77 |
-
}
|
78 |
-
});
|
79 |
-
};
|
80 |
-
init();
|
81 |
-
}
|
82 |
-
})(jQuery);
|
83 |
-
|
84 |
-
jQuery(document).ready(function($){(new $.GdbcClient()).requestTokens();});
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
defined( 'ABSPATH' ) || exit;
|
4 |
|
5 |
+
add_filter('nocache_headers', function($arrHeaders){
|
|
|
6 |
$arrHeaders['Cache-Control'] = 'no-store, no-cache, must-revalidate, max-age=0';
|
7 |
$arrHeaders['Content-Type'] = 'application/javascript; charset=utf-8';
|
8 |
+
|
9 |
return $arrHeaders;
|
10 |
+
}, 1);
|
11 |
+
|
12 |
+
nocache_headers();
|
13 |
+
|
14 |
+
if(null === ($settingsModuleInstance = GdbcModulesController::getPublicModuleInstance(GdbcModulesController::MODULE_SETTINGS))){
|
15 |
+
exit;
|
16 |
}
|
17 |
|
18 |
+
$arrPlaceHolders = array(
|
19 |
+
'__INPUT_NAME__' => $settingsModuleInstance->getOption(GdbcSettingsAdminModule::OPTION_HIDDEN_INPUT_NAME),
|
20 |
+
'__AJAX_URL__' => MchGdbcWpUtils::getAjaxUrl(),
|
21 |
+
'__AJAX_NONCE__' => GdbcAjaxController::getAjaxNonce(),
|
22 |
+
'__AJAX_ACTION__' => GdbcAjaxController::ACTION_RETRIEVE_TOKEN,
|
23 |
+
|
24 |
+
);
|
25 |
|
26 |
+
$scriptOutput = <<<Output
|
27 |
+
(function() {'use strict';
|
28 |
+
if (!Array.isArray){Array.isArray = function(arg){return Object.prototype.toString.call(arg) === '[object Array]';};}
|
29 |
+
if (!String.prototype.trim){String.prototype.trim = function () {return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');};}
|
30 |
+
|
31 |
+
var WPBruiserClient = function(){
|
32 |
+
var browserInfo = new Array();
|
33 |
+
function init(){
|
34 |
+
var w=window,d=document,e=0,f=0;e|=w.ActiveXObject?1:0;e|=w.opera?2:0;e|=w.chrome?4:0;
|
35 |
+
e|='getBoxObjectFor' in d || 'mozInnerScreenX' in w?8:0;e|=('WebKitCSSMatrix' in w||'WebKitPoint' in w||'webkitStorageInfo' in w||'webkitURL' in w)?16:0;
|
36 |
+
e|=(e&16&&({}.toString).toString().indexOf("\\n")===-1)?32:0;f|='sandbox' in d.createElement('iframe')?1:0;f|='WebSocket' in w?2:0;
|
37 |
+
f|=w.Worker?4:0;f|=w.applicationCache?8:0;f|=w.history && history.pushState?16:0;f|=d.documentElement.webkitRequestFullScreen?32:0;f|='FileReader' in w?64:0;
|
38 |
+
|
39 |
+
var ua = navigator.userAgent.toLowerCase();
|
40 |
+
var regex = /compatible; ([\w.+]+)[ \/]([\w.+]*)|([\w .+]+)[: \/]([\w.+]+)|([\w.+]+)/g;
|
41 |
+
var match = regex.exec(ua);
|
42 |
+
browserInfo = {screenWidth:screen.width,screenHeight:screen.height,engine:e,features:f};
|
43 |
+
while (match !== null) {
|
44 |
+
var prop = {};
|
45 |
+
if (match[1]) {
|
46 |
+
prop.type = match[1];
|
47 |
+
prop.version = match[2];
|
48 |
+
} else if (match[3]) {
|
49 |
+
prop.type = match[3];
|
50 |
+
prop.version = match[4];
|
51 |
+
} else {
|
52 |
+
prop.type = match[5];
|
53 |
+
}
|
54 |
+
prop.type = (prop.type).trim().replace('.','').replace(' ','_');
|
55 |
+
var value = prop.version ? prop.version : true;
|
56 |
+
if (browserInfo[prop.type]) {
|
57 |
+
!Array.isArray(browserInfo[prop.type])?browserInfo[prop.type]=new Array(browserInfo[prop.type]):'';
|
58 |
+
browserInfo[prop.type].push(value);
|
59 |
+
}
|
60 |
+
else browserInfo[prop.type] = value;
|
61 |
+
match = regex.exec(ua);
|
62 |
+
}
|
63 |
+
};
|
64 |
+
|
65 |
+
|
66 |
+
var requestTokens = function(){for(var i = 0; i < document.forms.length; ++i){retrieveToken(document.forms[i]);}};
|
67 |
+
|
68 |
+
function retrieveToken(formElement){
|
69 |
+
|
70 |
+
var requestObj = (window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"));
|
71 |
+
|
72 |
+
var formFieldElm = formElement.querySelector('input[name="__INPUT_NAME__"]');
|
73 |
+
if(!requestObj || !formFieldElm) return;
|
74 |
+
var ajaxData = [];
|
75 |
+
|
76 |
+
ajaxData['__INPUT_NAME__'] = '__AJAX_NONCE__';
|
77 |
+
ajaxData['action'] = '__AJAX_ACTION__';
|
78 |
+
ajaxData['requestTime'] = (new Date()).getTime();
|
79 |
+
ajaxData['browserInfo'] = JSON.stringify(browserInfo);
|
80 |
+
|
81 |
+
requestObj.open('POST', '__AJAX_URL__', true);
|
82 |
+
requestObj.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
|
83 |
+
requestObj.setRequestHeader("X-Requested-With", "XMLHttpRequest");
|
84 |
+
requestObj.setRequestHeader('Accept',"application/json, text/javascript, */*; q=0.01");
|
85 |
+
requestObj.send(serializeObject(ajaxData));
|
86 |
+
|
87 |
+
requestObj.onreadystatechange = function () {
|
88 |
+
if (4 === requestObj.readyState && 200 === requestObj.status)
|
89 |
+
{
|
90 |
+
try
|
91 |
+
{
|
92 |
+
var rs = JSON.parse(requestObj.responseText);
|
93 |
+
if(rs.data === 'undefined')
|
94 |
+
return;
|
95 |
+
|
96 |
+
var tokens = {};
|
97 |
+
|
98 |
+
for(var p in rs.data)
|
99 |
+
{
|
100 |
+
if(p=='token')
|
101 |
+
{
|
102 |
+
formFieldElm.value = rs.data[p];
|
103 |
+
tokens[formFieldElm.name] = null;
|
104 |
+
}
|
105 |
+
else
|
106 |
+
{
|
107 |
+
var value = '', arrValues = rs.data[p].split('|');
|
108 |
+
for (var i = 0; i < arrValues.length; ++i) {
|
109 |
+
if (browserInfo.hasOwnProperty(arrValues[i]))
|
110 |
+
value += browserInfo[arrValues[i]];
|
111 |
+
}
|
112 |
+
|
113 |
+
var elm = document.createElement("input");elm.name = p;elm.value=value;elm.type='hidden';formElement.appendChild(elm);
|
114 |
+
tokens[elm.name] = null;
|
115 |
+
|
116 |
+
if((' ' + formElement.className + ' ').indexOf(' mailpoet_form ') > -1){
|
117 |
+
elm.name = 'data[' + p + ']';formFieldElm.name = 'data[' + formFieldElm.name + ']';
|
118 |
+
}
|
119 |
+
}
|
120 |
+
}
|
121 |
+
|
122 |
+
window.jQuery && jQuery.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
|
123 |
+
|
124 |
+
if( ! ('action' in originalOptions.data) || originalOptions.data.action !== 'nf_ajax_submit')
|
125 |
+
return;
|
126 |
+
|
127 |
+
for(var token in tokens){
|
128 |
+
tokens[token] = formElement.querySelector('input[name="'+token+'"]');
|
129 |
+
tokens[token] && (tokens[token] = tokens[token].value );
|
130 |
+
}
|
131 |
+
|
132 |
+
options.data = jQuery.param(jQuery.extend(originalOptions.data||{}, tokens));
|
133 |
+
|
134 |
+
});
|
135 |
+
|
136 |
+
|
137 |
+
|
138 |
+
}
|
139 |
+
catch(e){console.log(e.message);}
|
140 |
+
}
|
141 |
+
}
|
142 |
+
}
|
143 |
+
|
144 |
+
init();
|
145 |
+
|
146 |
+
function serializeObject(obj) {
|
147 |
+
var str = [];
|
148 |
+
for(var p in obj)
|
149 |
+
if (obj.hasOwnProperty(p)) {
|
150 |
+
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
|
151 |
+
}
|
152 |
+
return str.join("&");
|
153 |
+
}
|
154 |
+
return {requestTokens : requestTokens};
|
155 |
+
}
|
156 |
+
|
157 |
+
window.WPBruiserClient = new WPBruiserClient();window.WPBruiserClient.requestTokens();
|
158 |
+
|
159 |
+
})();
|
160 |
+
Output;
|
161 |
+
|
162 |
+
|
163 |
+
/**
|
164 |
+
* compressed javascript https://jscompress.com/
|
165 |
+
*/
|
166 |
+
//$scriptOutput = <<<Output
|
167 |
+
//!function(){"use strict";Array.isArray||(Array.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")});window.WPBruiserClient=new function(){var p=new Array;function t(s){var c=window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP"),u=s.querySelector('input[name="__INPUT_NAME__"]');if(c&&u){var e=[];e['__INPUT_NAME__']="__AJAX_NONCE__",e.action="__AJAX_ACTION__",e.requestTime=(new Date).getTime(),e.browserInfo=JSON.stringify(p),c.open("POST","__AJAX_URL__",!0),c.setRequestHeader("Content-type","application/x-www-form-urlencoded; charset=UTF-8"),c.setRequestHeader("X-Requested-With","XMLHttpRequest"),c.setRequestHeader("Accept","application/json, text/javascript, */*; q=0.01"),c.send(function(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t.join("&")}(e)),c.onreadystatechange=function(){if(4===c.readyState&&200===c.status)try{var e=JSON.parse(c.responseText);if("undefined"===e.data)return;var a={};for(var t in e.data)if("token"==t)u.value=e.data[t],a[u.name]=null;else{for(var n="",r=e.data[t].split("|"),i=0;i<r.length;++i)p.hasOwnProperty(r[i])&&(n+=p[r[i]]);var o=document.createElement("input");o.name=t,o.value=n,o.type="hidden",s.appendChild(o),a[o.name]=null,-1<(" "+s.className+" ").indexOf(" mailpoet_form ")&&(o.name="data["+t+"]",u.name="data["+u.name+"]")}window.jQuery&&jQuery.ajaxPrefilter(function(e,t,n){if("action"in t.data&&"nf_ajax_submit"===t.data.action){for(var r in a)a[r]=s.querySelector('input[name="'+r+'"]'),a[r]&&(a[r]=a[r].value);e.data=jQuery.param(jQuery.extend(t.data||{},a))}})}catch(e){console.log(e.message)}}}}return function(){var e=window,t=document,n=0,r=0;n|=e.ActiveXObject?1:0,n|=e.opera?2:0,n|=e.chrome?4:0,n|="getBoxObjectFor"in t||"mozInnerScreenX"in e?8:0,n|="WebKitCSSMatrix"in e||"WebKitPoint"in e||"webkitStorageInfo"in e||"webkitURL"in e?16:0,n|=16&n&&-1==={}.toString.toString().indexOf("\\n")?32:0,r|="sandbox"in t.createElement("iframe")?1:0,r|="WebSocket"in e?2:0,r|=e.Worker?4:0,r|=e.applicationCache?8:0,r|=e.history&&history.pushState?16:0,r|=t.documentElement.webkitRequestFullScreen?32:0,r|="FileReader"in e?64:0;var a=navigator.userAgent.toLowerCase(),i=/compatible; ([\w.+]+)[ \/]([\w.+]*)|([\w .+]+)[: \/]([\w.+]+)|([\w.+]+)/g,o=i.exec(a);for(p={screenWidth:screen.width,screenHeight:screen.height,engine:n,features:r};null!==o;){var s={};o[1]?(s.type=o[1],s.version=o[2]):o[3]?(s.type=o[3],s.version=o[4]):s.type=o[5],s.type=s.type.trim().replace(".","").replace(" ","_");var c=!s.version||s.version;p[s.type]?(Array.isArray(p[s.type])||(p[s.type]=new Array(p[s.type])),p[s.type].push(c)):p[s.type]=c,o=i.exec(a)}}(),{requestTokens:function(){for(var e=0;e<document.forms.length;++e)t(document.forms[e])}}},window.WPBruiserClient.requestTokens()}();
|
168 |
+
//Output;
|
169 |
+
|
170 |
+
echo str_replace(array_keys($arrPlaceHolders), $arrPlaceHolders, $scriptOutput);
|
171 |
|
172 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
goodbye-captcha.php
CHANGED
@@ -10,7 +10,7 @@
|
|
10 |
* Plugin Name: WPBruiser
|
11 |
* Plugin URI: http://www.wpbruiser.com
|
12 |
* Description: An extremely powerful anti-spam plugin that blocks spambots without annoying captcha images.
|
13 |
-
* Version: 3.1.
|
14 |
* Author: Mihai Chelaru
|
15 |
* Author URI: http://www.wpbruiser.com
|
16 |
* Text Domain: wp-bruiser
|
@@ -18,13 +18,12 @@
|
|
18 |
*/
|
19 |
|
20 |
|
21 |
-
|
22 |
if(!class_exists('GoodByeCaptcha', false))
|
23 |
{
|
24 |
class GoodByeCaptcha
|
25 |
{
|
26 |
|
27 |
-
CONST PLUGIN_VERSION = '3.1.
|
28 |
CONST PLUGIN_SLUG = 'wp-bruiser';
|
29 |
CONST PLUGIN_NAME = 'WPBruiser';
|
30 |
CONST PLUGIN_SITE_URL = 'https://www.wpbruiser.com';
|
10 |
* Plugin Name: WPBruiser
|
11 |
* Plugin URI: http://www.wpbruiser.com
|
12 |
* Description: An extremely powerful anti-spam plugin that blocks spambots without annoying captcha images.
|
13 |
+
* Version: 3.1.40
|
14 |
* Author: Mihai Chelaru
|
15 |
* Author URI: http://www.wpbruiser.com
|
16 |
* Text Domain: wp-bruiser
|
18 |
*/
|
19 |
|
20 |
|
|
|
21 |
if(!class_exists('GoodByeCaptcha', false))
|
22 |
{
|
23 |
class GoodByeCaptcha
|
24 |
{
|
25 |
|
26 |
+
CONST PLUGIN_VERSION = '3.1.40';
|
27 |
CONST PLUGIN_SLUG = 'wp-bruiser';
|
28 |
CONST PLUGIN_NAME = 'WPBruiser';
|
29 |
CONST PLUGIN_SITE_URL = 'https://www.wpbruiser.com';
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_i
|
|
4 |
Tags: captcha, antispam, anti-spam, spam, mailpoet, antispambot, brute force, comment spam, jetpack contact form, contact form 7, ninja forms, formidable forms, wp bruiser
|
5 |
Requires at least: 4.0
|
6 |
Tested up to: 5.4
|
7 |
-
Stable tag: 3.1.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -222,6 +222,16 @@ Studies shown that visual CAPTCHAs take around 5-10 seconds to complete and audi
|
|
222 |
|
223 |
== Changelog ==
|
224 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
225 |
= 3.1.38 =
|
226 |
**Fixes**
|
227 |
- Compatibility with Mailchimp for WordPress
|
4 |
Tags: captcha, antispam, anti-spam, spam, mailpoet, antispambot, brute force, comment spam, jetpack contact form, contact form 7, ninja forms, formidable forms, wp bruiser
|
5 |
Requires at least: 4.0
|
6 |
Tested up to: 5.4
|
7 |
+
Stable tag: 3.1.40
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
222 |
|
223 |
== Changelog ==
|
224 |
|
225 |
+
= 3.1.40 =
|
226 |
+
**Fixes**
|
227 |
+
- Ajax call javascript error
|
228 |
+
|
229 |
+
= 3.1.39 =
|
230 |
+
- Refreshed Country IPs
|
231 |
+
- Refreshed WebAttackers IPs
|
232 |
+
- Refreshed Proxy IPs
|
233 |
+
- Refreshed Incapsula, Amazon and Cloudflare trusted IPs ranges
|
234 |
+
|
235 |
= 3.1.38 =
|
236 |
**Fixes**
|
237 |
- Compatibility with Mailchimp for WordPress
|