Changeset 2276839
- Timestamp:
- 04/06/2020 02:41:14 AM (6 years ago)
- Location:
- goodbye-captcha/trunk
- Files:
-
- 4 edited
-
assets/public/scripts/gdbc-client-new.js.php (modified) (2 diffs)
-
assets/public/scripts/gdbc-client.js.php (modified) (1 diff)
-
goodbye-captcha.php (modified) (4 diffs)
-
readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
goodbye-captcha/trunk/assets/public/scripts/gdbc-client-new.js.php
r1860144 r2276839 1 1 <?php 2 /*3 * Copyright (C) 2018 Mihai Chelaru4 *5 * This program is free software; you can redistribute it and/or6 * modify it under the terms of the GNU General Public License7 * as published by the Free Software Foundation; either version 28 * 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 of12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the13 * GNU General Public License for more details.14 *15 * You should have received a copy of the GNU General Public License16 * along with this program; if not, write to the Free Software17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.18 */19 2 20 3 defined( 'ABSPATH' ) || exit; 21 4 22 function gdbcRewriteNoCacheHeaders($arrHeaders) 23 { 5 add_filter('nocache_headers', function($arrHeaders){ 24 6 $arrHeaders['Cache-Control'] = 'no-store, no-cache, must-revalidate, max-age=0'; 25 7 $arrHeaders['Content-Type'] = 'application/javascript; charset=utf-8'; 26 8 27 9 return $arrHeaders; 28 } 29 30 add_filter('nocache_headers', 'gdbcRewriteNoCacheHeaders', 1); 10 }, 1); 31 11 32 12 nocache_headers(); … … 102 82 103 83 requestObj.onreadystatechange = function () { 104 if (4 === requestObj.readyState && 200 === requestObj.status){ 84 if (4 === requestObj.readyState && 200 === requestObj.status) 85 { 105 86 try 106 87 { 107 88 var rs = JSON.parse(requestObj.responseText); 108 if(rs.data !== 'undefined') 109 for(var p in rs.data){ 110 if(p=='token'){ 111 formFieldElm.value = rs.data[p]; 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]]; 112 107 } 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 108 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 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 + ']'; 126 114 } 127 115 } 116 } 128 117 118 window.jQuery && jQuery.ajaxPrefilter(function( options, originalOptions, jqXHR ) { 119 120 if( ! ('action' in originalOptions.data) || originalOptions.data.action !== 'nf_ajax_submit') 121 return; 122 123 for(var token in tokens){ 124 tokens[token] = formElement.querySelector('input[name="'+token+'"]'); 125 tokens[token] && (tokens[token] = tokens[token].value ); 126 } 127 128 options.data = jQuery.param(jQuery.extend(originalOptions.data||{}, tokens)); 129 130 }); 131 132 133 129 134 } 130 135 catch(e){console.log(e.message);} -
goodbye-captcha/trunk/assets/public/scripts/gdbc-client.js.php
r1593955 r2276839 1 1 <?php 2 /*3 * Copyright (C) 2014 Mihai Chelaru4 *5 * This program is free software; you can redistribute it and/or6 * modify it under the terms of the GNU General Public License7 * as published by the Free Software Foundation; either version 28 * 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 of12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the13 * GNU General Public License for more details.14 *15 * You should have received a copy of the GNU General Public License16 * along with this program; if not, write to the Free Software17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.18 */19 2 20 3 defined( 'ABSPATH' ) || exit; 21 4 22 function gdbcRewriteNoCacheHeaders($arrHeaders) 23 { 5 add_filter('nocache_headers', function($arrHeaders){ 24 6 $arrHeaders['Cache-Control'] = 'no-store, no-cache, must-revalidate, max-age=0'; 25 7 $arrHeaders['Content-Type'] = 'application/javascript; charset=utf-8'; 26 8 27 9 return $arrHeaders; 28 } 29 30 add_filter('nocache_headers', 'gdbcRewriteNoCacheHeaders', 1); 10 }, 1); 31 11 32 12 nocache_headers(); 33 13 14 if(null === ($settingsModuleInstance = GdbcModulesController::getPublicModuleInstance(GdbcModulesController::MODULE_SETTINGS))){ 15 exit; 16 } 34 17 35 ?> 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 ); 36 25 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 }; 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; 44 161 45 gdbcClient.requestTokens = function() {46 $('form input[name=' + Gdbc.formFieldName + ']').each(function(){47 requestTokenValue($(this));48 });49 };50 162 51 var requestTokenValue = function(elm) { 52 var ajaxData = {}; 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; 53 169 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 } 170 echo str_replace(array_keys($arrPlaceHolders), $arrPlaceHolders, $scriptOutput); 69 171 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 172 84 jQuery(document).ready(function($){(new $.GdbcClient()).requestTokens();}); -
goodbye-captcha/trunk/goodbye-captcha.php
r2262184 r2276839 11 11 * Plugin URI: http://www.wpbruiser.com 12 12 * Description: An extremely powerful anti-spam plugin that blocks spambots without annoying captcha images. 13 * Version: 3.1.3 813 * Version: 3.1.39 14 14 * Author: Mihai Chelaru 15 15 * Author URI: http://www.wpbruiser.com … … 19 19 20 20 21 22 21 if(!class_exists('GoodByeCaptcha', false)) 23 22 { … … 25 24 { 26 25 27 CONST PLUGIN_VERSION = '3.1.3 8';26 CONST PLUGIN_VERSION = '3.1.39'; 28 27 CONST PLUGIN_SLUG = 'wp-bruiser'; 29 28 CONST PLUGIN_NAME = 'WPBruiser'; … … 141 140 GdbcIPUtils::getClientIpAddress(); 142 141 143 if (!empty($_GET['gdbc-client']) && file_exists($filePath = dirname(__FILE__) . '/assets/public/scripts/gdbc-client -new.js.php')) {142 if (!empty($_GET['gdbc-client']) && file_exists($filePath = dirname(__FILE__) . '/assets/public/scripts/gdbc-client.js.php')) { 144 143 require_once(ABSPATH . 'wp-includes/pluggable.php'); 145 144 (!defined('LOGGED_IN_COOKIE') && function_exists('wp_cookie_constants')) ? wp_cookie_constants() : null; -
goodbye-captcha/trunk/readme.txt
r2262184 r2276839 5 5 Requires at least: 4.0 6 6 Tested up to: 5.4 7 Stable tag: 3.1.3 87 Stable tag: 3.1.39 8 8 License: GPLv2 or later 9 9 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 223 223 == Changelog == 224 224 225 = 3.1.39 = 226 - Refreshed Country IPs 227 - Refreshed WebAttackers IPs 228 - Refreshed Proxy IPs 229 - Refreshed Incapsula, Amazon and Cloudflare trusted IPs ranges 230 225 231 = 3.1.38 = 226 232 **Fixes**
Note: See TracChangeset
for help on using the changeset viewer.