Date: Tue, 22 Aug 2023 14:41:06 +0500
Subject: [PATCH 065/109] Fix. After tests.
---
inc/spbc-scanner.php | 22 ++++++++++++++--------
inc/spbc-settings.php | 2 +-
2 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/inc/spbc-scanner.php b/inc/spbc-scanner.php
index 778c3f15d..74436aec5 100644
--- a/inc/spbc-scanner.php
+++ b/inc/spbc-scanner.php
@@ -1045,14 +1045,20 @@ function spbc_get_sql_where_addiction_for_table_of_category($category)
global $spbc;
switch ($category) {
case 'critical':
- $res = ' WHERE severity IN("CRITICAL") AND
- (status <> "QUARANTINED" AND
- status <> "APROVED" AND
- status <> "APPROVED_BY_CT")
- AND
- (last_sent IS NULL OR
- pscan_status = "DANGEROUS" OR
- analysis_status = "DANGEROUS")';
+ $res = ' WHERE status = "DENIED_BY_CLOUD"
+ OR (
+ severity IN("CRITICAL")
+ AND (
+ status <> "QUARANTINED" AND
+ status <> "APROVED" AND
+ status <> "APPROVED_BY_CT"
+ )
+ AND (
+ last_sent IS NULL OR
+ pscan_status = "DANGEROUS" OR
+ analysis_status = "DANGEROUS"
+ )
+ )';
break;
case 'suspicious':
$res = ' WHERE severity <> "CRITICAL" AND
diff --git a/inc/spbc-settings.php b/inc/spbc-settings.php
index 13feac8db..8c4e35bc8 100644
--- a/inc/spbc-settings.php
+++ b/inc/spbc-settings.php
@@ -4857,7 +4857,7 @@ function spbc__manual_cure_service_suggest_html($for)
$out .= '';
// show triangle
$out .= $show_exclaim_triangle
- ? '  '
+ ? '  '
: '';
// complete the suggestion text
$out .= $text . ' ' . $href . '.';
From 6b230bf4329b6d9302297c55bad9ea733ac9a0e8 Mon Sep 17 00:00:00 2001
From: alexandergull
Date: Tue, 22 Aug 2023 14:52:31 +0500
Subject: [PATCH 066/109] Fix. Disable suggestion blocks for WL mode.
---
inc/spbc-settings.php | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/inc/spbc-settings.php b/inc/spbc-settings.php
index 8c4e35bc8..2790ee385 100644
--- a/inc/spbc-settings.php
+++ b/inc/spbc-settings.php
@@ -2788,7 +2788,7 @@ function spbc_field_scanner__show_accordion($direct_call = false)
//critical description
$critical_description = __('These files may not contain malicious code but they use very dangerous PHP functions and constructions! PHP developers don\'t recommend to use it and it looks very suspicious.', 'security-malware-firewall');
- if ($spbc->data['display_scanner_warnings']['analysis']) {
+ if ($spbc->data['display_scanner_warnings']['analysis'] && !$spbc->data['wl_mode_enabled']) {
$critical_description .= spbc__manual_cure_service_suggest_html('critical');
}
@@ -2802,7 +2802,7 @@ function spbc_field_scanner__show_accordion($direct_call = false)
. __('option', 'security-malware-firewall')
. ' '
. '' . __('here', 'security-malware-firewall') . ' .';
- $unknown_files_description .= spbc__manual_cure_service_suggest_html('unknown');
+ $unknown_files_description .= $spbc->data['wl_mode_enabled'] ? '' : spbc__manual_cure_service_suggest_html('unknown');
//cure log description
$cure_log_description = '' .
From ea1a03b37cb8b5eed582fc39224911177b77a9f2 Mon Sep 17 00:00:00 2001
From: alexandergull
Date: Wed, 23 Aug 2023 11:42:52 +0500
Subject: [PATCH 067/109] New. Show different types of weakspots in severity
order.
---
js/spbc-settings_tab--scanner.min.js | 2 +-
js/spbc-settings_tab--scanner.min.js.map | 2 +-
js/src/spbc-settings_tab--scanner.js | 72 ++++++++++++++++--------
3 files changed, 49 insertions(+), 27 deletions(-)
diff --git a/js/spbc-settings_tab--scanner.min.js b/js/spbc-settings_tab--scanner.min.js
index e3182018e..ead42b042 100644
--- a/js/spbc-settings_tab--scanner.min.js
+++ b/js/spbc-settings_tab--scanner.min.js
@@ -1,4 +1,4 @@
-function spbc_popup_tip___show(e){function s(e){void 0!==e&&(0!=jQuery(e.target).parent(".spbc_popup_tip--wrapper").length&&!jQuery(e.target).hasClass("spbc_popup_tip--icon---cancel")||jQuery(e.target).hasClass("spbc_popup_tip--icon---show"))||(jQuery(".spbc_popup_tip--wrapper").hide(),jQuery(document).off("click",s))}var t=e.attr("spbc_tip_title")||null,o=e.attr("spbc_tip_text")||null,n=(s(),e.after(""),jQuery(".spbc_popup_tip--wrapper"));n.empty().append("").css({top:e.position().top-2,left:e.position().left+25}),n.append("").append("").append(""),jQuery(document).on("click",s),e.parents("tr").on("mouseout",s)}function spbc_scanner_button_file_view_event(e){var e=jQuery(e),s={action:"spbc_scanner_file_view",file_id:e.parents(".row-actions").attr("uid")},e={spinner:e.parent().siblings(".tbl-preloader--tiny"),callback:spbc_scannerButtonView_callback,errorOutput:function(e){spbcModal.open().putError(e)}};spbc_sendAJAXRequest(s,e)}function spbc_scanner_analysis_log_delete_from_log(e){var e=jQuery(e),s={action:"spbc_scanner_analysis_log_delete_from_log",file_id:e.parents(".row-actions").attr("uid")},e={spinner:e.parent().siblings(".tbl-preloader--tiny"),callback:window.location.reload(),errorOutput:function(e){spbcModal.open().putError(e)}};spbc_sendAJAXRequest(s,e)}function spbc_scanner_button_page_view_event(e){var e=jQuery(e),s={action:"spbc_scanner_page_view",page_url:e.parents(".row-actions").attr("uid")},e={spinner:e.parent().siblings(".tbl-preloader--tiny"),callback:spbc_scannerButtonView_callback,errorOutput:function(e){spbcModal.open().putError(e)}},t=jQuery("#wpwrap"),o=jQuery("#spbc_dialog"),n=(o.dialog({modal:!0,title:"Loading..",position:{my:"center top",at:"center top+100px",of:window},width:t.width()/100*90,show:{effect:"blind",duration:500},draggable:!1,resizable:!1,closeText:"X",classes:{"ui-dialog":"spbc---top"},open:function(e,s){e.target.style.overflow="auto",jQuery("#spbc_dialog").height(document.documentElement.clientHeight/100*25)},beforeClose:function(e,s){document.body.style.overflow="auto",jQuery("#spbc_dialog").empty()}}),o.append(' '),jQuery("#spbc_file_view_preloader")),t=4e-4*t.width();n.height(128*t),n.width(128*t),n.css({left:o.width()/2-128*t/2}),n.css({top:o.height()/2-128*t/2}),spbc_sendAJAXRequest(s,e)}function spbc_scannerButtonView_callback(e){var s,t=jQuery("#spbc_dialog");t.empty(),jQuery("#spbc_file_view_preloader").css({display:"none"});for(s in e.file)t.append(''.printf(s,e.file[s]));let o=19*Object.keys(e.file).length<76?76:19*Object.keys(e.file).length,n=document.documentElement.clientHeight/100*75,a=o%s %s
',c=[];for(o in s.weak_spots=JSON.parse(s.weak_spots),s.weak_spots)c=c.concat(Object.keys(s.weak_spots[o]));for(n in c=[...new Set(c)].sort()){var r=+c[n];for(let e=r-2;e<=2+r;e++)void 0!==s.file[e]&&jQuery("#spbc_dialog").append((r===e?'':a).printf(e,s.file[e]));jQuery("#spbc_dialog").append(a.printf("",""))}jQuery("#spbc_dialog div").last().remove();let i=19*jQuery("#spbc_dialog div").length<76?76:19*jQuery("#spbc_dialog div").length,p=document.documentElement.clientHeight/100*75,l=i{};if(1==o.success){console.log(o);var n,a='
',c=[];for(n in o.weak_spots=JSON.parse(o.weak_spots),o.weak_spots)c=c.concat(Object.keys(o.weak_spots[n]));var r,c=[...new Set(c)].sort(),i=new Map(Object.entries(o.weak_spots.CRITICAL));for(r in c){var p=+c[r];for(let t=p-2;t<=2+p;t++)if(void 0!==o.file[t]){var l=p===t;let e,s;e=l?'':a,s=l&&!o.file[t].includes("iframe")?e.printf(t,i.get(c[r])):e.printf(t,o.file[t]),jQuery("#spbc_dialog").append(s)}jQuery("#spbc_dialog").append(a.printf("","")),jQuery("#spbc_dialog div").last().remove()}}else jQuery("#spbc_dialog").append('%s
'.printf(o.content)),t=()=>{document.location.reload()};let _=19*jQuery("#spbc_dialog div").length<76?76:19*jQuery("#spbc_dialog div").length,d=document.documentElement.clientHeight/100*75,u=_Modified',"Line",'Original '));for(var n=1;void 0!==s.file[n]||void 0!==s.file_original[n];n++)if(void 0===s.file[n]&&(s.file[n]=""),void 0===s.file_original[n]&&(s.file_original[n]=""),-1!=s.difference.indexOf(n)){for(let e=n-2;e<=n+2;e++)void 0!==s.file[e]&&void 0!==s.file_original[n]&&jQuery("#spbc_dialog").append((n===e?'':o).printf(s.file[e]||"",e,s.file_original[e]||""));jQuery("#spbc_dialog").append(o.printf("","",""))}var a=19*jQuery("#spbc_dialog div").length+19,c=document.documentElement.clientHeight/100*75,r=a{document.getElementById("spbc_scanner__last_scan_info").innerText=e.data}})}function spbc_scanner_file_monitoring_show_current_snapshot(e){var e=jQuery(e),s=e.parents(".row-actions").attr("uid");const t=e.closest(".column-path").find(".title").text(),o=jQuery("[data-remodal-id=spbc-file-monitoring-modal]");o.remodal().open();e={action:"spbc_file_monitoring_show_snapshots",file_id:s,security:spbcSettings.ajax_nonce};jQuery.ajax({type:"POST",async:!0,url:spbcSettings.ajaxurl,data:e,success:function(e){e.success&&(o.find("#spbc-fm-snapshot-list ul").remove(),o.find("#spbc-fm-snapshot-file-name").text(t),drawSnapshotList(e.data,o),drawCurrentSnapshot(e.data[0].id,o))}})}function drawSnapshotList(e,s){let t="";for(var o of e)t+=`${o.created_at} `;e=`
+function spbc_popup_tip___show(e){function s(e){void 0!==e&&(0!=jQuery(e.target).parent(".spbc_popup_tip--wrapper").length&&!jQuery(e.target).hasClass("spbc_popup_tip--icon---cancel")||jQuery(e.target).hasClass("spbc_popup_tip--icon---show"))||(jQuery(".spbc_popup_tip--wrapper").hide(),jQuery(document).off("click",s))}var t=e.attr("spbc_tip_title")||null,o=e.attr("spbc_tip_text")||null,n=(s(),e.after(""),jQuery(".spbc_popup_tip--wrapper"));n.empty().append("").css({top:e.position().top-2,left:e.position().left+25}),n.append("").append("").append(""),jQuery(document).on("click",s),e.parents("tr").on("mouseout",s)}function spbc_scanner_button_file_view_event(e){var e=jQuery(e),s={action:"spbc_scanner_file_view",file_id:e.parents(".row-actions").attr("uid")},e={spinner:e.parent().siblings(".tbl-preloader--tiny"),callback:spbc_scannerButtonView_callback,errorOutput:function(e){spbcModal.open().putError(e)}};spbc_sendAJAXRequest(s,e)}function spbc_scanner_analysis_log_delete_from_log(e){var e=jQuery(e),s={action:"spbc_scanner_analysis_log_delete_from_log",file_id:e.parents(".row-actions").attr("uid")},e={spinner:e.parent().siblings(".tbl-preloader--tiny"),callback:window.location.reload(),errorOutput:function(e){spbcModal.open().putError(e)}};spbc_sendAJAXRequest(s,e)}function spbc_scanner_button_page_view_event(e){var e=jQuery(e),s={action:"spbc_scanner_page_view",page_url:e.parents(".row-actions").attr("uid")},e={spinner:e.parent().siblings(".tbl-preloader--tiny"),callback:spbc_scannerButtonView_callback,errorOutput:function(e){spbcModal.open().putError(e)}},t=jQuery("#wpwrap"),o=jQuery("#spbc_dialog"),n=(o.dialog({modal:!0,title:"Loading..",position:{my:"center top",at:"center top+100px",of:window},width:t.width()/100*90,show:{effect:"blind",duration:500},draggable:!1,resizable:!1,closeText:"X",classes:{"ui-dialog":"spbc---top"},open:function(e,s){e.target.style.overflow="auto",jQuery("#spbc_dialog").height(document.documentElement.clientHeight/100*25)},beforeClose:function(e,s){document.body.style.overflow="auto",jQuery("#spbc_dialog").empty()}}),o.append(' '),jQuery("#spbc_file_view_preloader")),t=4e-4*t.width();n.height(128*t),n.width(128*t),n.css({left:o.width()/2-128*t/2}),n.css({top:o.height()/2-128*t/2}),spbc_sendAJAXRequest(s,e)}function spbc_scannerButtonView_callback(e){var s,t=jQuery("#spbc_dialog");t.empty(),jQuery("#spbc_file_view_preloader").css({display:"none"});for(s in e.file)t.append(''.printf(s,e.file[s]));let o=19*Object.keys(e.file).length<76?76:19*Object.keys(e.file).length,n=document.documentElement.clientHeight/100*75,a=o%s %s
',r=[],i=[];for(n in s.weak_spots=JSON.parse(s.weak_spots),s.weak_spots)r[n]=Object.keys(s.weak_spots[n]);for(key in o=Object.keys(r).sort())i[o[key]]=r[o[key]];for(a in i){var p,l="spbc-dialog-row-header-"+a.toLowerCase(),_=''+a+" weakspots: ",d=jQuery("#spbc_dialog"),_=(d.append(c.printf("",_)),d.append(c.printf("... ","... ")),d.find("#"+l));for(p in _.parent().parent().css("text-align","center"),_.parent().parent().css("border","1px dotted"),_.parent().parent().css("background","darkgrey"),r[a]){p=[...new Set(p)].sort();var u=+r[a][p];for(let e=u-2;e<=2+u;e++)void 0!==s.file[e]&&d.append((u===e?'':c).printf(e,s.file[e]));d.append(c.printf("... ","... "))}}jQuery("#spbc_dialog div").last().remove();let b=19*jQuery("#spbc_dialog div").length<76?76:19*jQuery("#spbc_dialog div").length,f=document.documentElement.clientHeight/100*75,g=b{};if(1==o.success){console.log(o);var n,a='',c=[];for(n in o.weak_spots=JSON.parse(o.weak_spots),o.weak_spots)c=c.concat(Object.keys(o.weak_spots[n]));var r,c=[...new Set(c)].sort(),i=new Map(Object.entries(o.weak_spots.CRITICAL));for(r in c){var p=+c[r];for(let t=p-2;t<=2+p;t++)if(void 0!==o.file[t]){var l=p===t;let e,s;e=l?'':a,s=l&&!o.file[t].includes("iframe")?e.printf(t,i.get(c[r])):e.printf(t,o.file[t]),jQuery("#spbc_dialog").append(s)}jQuery("#spbc_dialog").append(a.printf("","")),jQuery("#spbc_dialog div").last().remove()}}else jQuery("#spbc_dialog").append('%s
'.printf(o.content)),t=()=>{document.location.reload()};let _=19*jQuery("#spbc_dialog div").length<76?76:19*jQuery("#spbc_dialog div").length,d=document.documentElement.clientHeight/100*75,u=_Modified',"Line",'Original '));for(var n=1;void 0!==s.file[n]||void 0!==s.file_original[n];n++)if(void 0===s.file[n]&&(s.file[n]=""),void 0===s.file_original[n]&&(s.file_original[n]=""),-1!=s.difference.indexOf(n)){for(let e=n-2;e<=n+2;e++)void 0!==s.file[e]&&void 0!==s.file_original[n]&&jQuery("#spbc_dialog").append((n===e?'':o).printf(s.file[e]||"",e,s.file_original[e]||""));jQuery("#spbc_dialog").append(o.printf("","",""))}var a=19*jQuery("#spbc_dialog div").length+19,c=document.documentElement.clientHeight/100*75,r=a{document.getElementById("spbc_scanner__last_scan_info").innerText=e.data}})}function spbc_scanner_file_monitoring_show_current_snapshot(e){var e=jQuery(e),s=e.parents(".row-actions").attr("uid");const t=e.closest(".column-path").find(".title").text(),o=jQuery("[data-remodal-id=spbc-file-monitoring-modal]");o.remodal().open();e={action:"spbc_file_monitoring_show_snapshots",file_id:s,security:spbcSettings.ajax_nonce};jQuery.ajax({type:"POST",async:!0,url:spbcSettings.ajaxurl,data:e,success:function(e){e.success&&(o.find("#spbc-fm-snapshot-list ul").remove(),o.find("#spbc-fm-snapshot-file-name").text(t),drawSnapshotList(e.data,o),drawCurrentSnapshot(e.data[0].id,o))}})}function drawSnapshotList(e,s){let t="";for(var o of e)t+=`${o.created_at} `;e=``;s.find("#spbc-fm-snapshot-list").append(e)}function drawCurrentSnapshot(s,t){var e={action:"spbc_file_monitoring_show_current_snapshot",snapshot_id:s,security:spbcSettings.ajax_nonce};jQuery.ajax({type:"POST",async:!0,url:spbcSettings.ajaxurl,data:e,beforeSend:function(){jQuery("#spbc-file-monitoring-modal-preloader").show()},success:function(e){e.success&&(t.find("#spbc-fm-snapshot-view .wrap").remove(),t.find("[data-spanshot-id").removeClass("active"),t.find("[data-spanshot-id="+s+"]").addClass("active"),e=`
diff --git a/js/spbc-settings_tab--scanner.min.js.map b/js/spbc-settings_tab--scanner.min.js.map
index e899332a2..404ffa8fb 100644
--- a/js/spbc-settings_tab--scanner.min.js.map
+++ b/js/spbc-settings_tab--scanner.min.js.map
@@ -1 +1 @@
-{"version":3,"file":"spbc-settings_tab--scanner.min.js","sources":["spbc-settings_tab--scanner.js"],"sourcesContent":["function spbc_popup_tip___show(show_icon){\n\n\tvar tip_title = show_icon.attr('spbc_tip_title') || null;\n\tvar\ttip_text = show_icon.attr('spbc_tip_text') || null;\n\tvar remove_desc_func = function(e){\n\n\t\tif(\n\t\t\ttypeof e === 'undefined' ||\n\t\t\t(\n\t\t\t\t(jQuery(e.target).parent('.spbc_popup_tip--wrapper').length == 0 || jQuery(e.target).hasClass('spbc_popup_tip--icon---cancel')) &&\n\t\t\t\t!jQuery(e.target).hasClass('spbc_popup_tip--icon---show')\n\t\t\t)\n\t\t){\n\t\t\tjQuery('.spbc_popup_tip--wrapper').hide();\n\t\t\tjQuery(document).off('click', remove_desc_func);\n\t\t}\n\t};\n\n\tremove_desc_func();\n\n\tshow_icon.after(\"\");\n\n\tvar obj = jQuery('.spbc_popup_tip--wrapper');\n\n\tobj.empty()\n\t\t.append(\"\")\n\t\t.css({\n\t\t\ttop: show_icon.position().top - 2,\n\t\t\tleft: show_icon.position().left + 25\n\t\t});\n\tobj.append(\"\")\n\t\t.append(\"\")\n\t\t.append(\"\");\n\n\tjQuery(document).on('click', remove_desc_func);\n\tshow_icon.parents('tr').on('mouseout', remove_desc_func);\n}\n\nfunction spbc_scanner_button_file_view_event(obj){\n\tvar self = jQuery(obj);\n\tvar data = {\n\t\taction: 'spbc_scanner_file_view',\n\t\tfile_id: self.parents('.row-actions').attr('uid'),\n\t};\n\tvar params = {\n\t\tspinner: self.parent().siblings('.tbl-preloader--tiny'),\n\t\tcallback: spbc_scannerButtonView_callback,\n\t\terrorOutput: function(msg){ spbcModal.open().putError( msg ); },\n\t};\n\tspbc_sendAJAXRequest(data, params);\n}\n\n/**\n * Delete file from analysis log\n */\nfunction spbc_scanner_analysis_log_delete_from_log(obj) {\n\tconst self = jQuery(obj);\n\tconst data = {\n\t\taction: 'spbc_scanner_analysis_log_delete_from_log',\n\t\tfile_id: self.parents('.row-actions').attr('uid'),\n\t};\n\tvar params = {\n\t\tspinner: self.parent().siblings('.tbl-preloader--tiny'),\n\t\tcallback: window.location.reload(),\n\t\terrorOutput: function(msg){ spbcModal.open().putError( msg ); },\n\t};\n\tspbc_sendAJAXRequest(data, params);\n}\n\nfunction spbc_scanner_button_page_view_event(obj){\n\tvar self = jQuery(obj);\n\tvar data = {\n\t\taction: 'spbc_scanner_page_view',\n\t\tpage_url: self.parents('.row-actions').attr('uid'),\n\t};\n\tvar params = {\n\t\tspinner: self.parent().siblings('.tbl-preloader--tiny'),\n\t\tcallback: spbc_scannerButtonView_callback,\n\t\terrorOutput: function(msg){ spbcModal.open().putError( msg ); },\n\t};\n\n\tlet wp_wrap = jQuery('#wpwrap')\n\tlet dialog_window = jQuery('#spbc_dialog')\n\n\tdialog_window.dialog({\n\t\tmodal:true,\n\t\ttitle: 'Loading..',\n\t\tposition: { my: \"center top\", at: \"center top+100px\" , of: window },\n\t\twidth: +(wp_wrap.width() / 100 * 90),\n\t\tshow: { effect: \"blind\", duration: 500 },\n\t\tdraggable: false,\n\t\tresizable: false,\n\t\tcloseText: \"X\",\n\t\tclasses: {\"ui-dialog\": 'spbc---top'},\n\t\topen: function(event, ui) {\n\t\t\tevent.target.style.overflow = 'auto';\n\t\t\tjQuery('#spbc_dialog').height((document.documentElement.clientHeight) / 100 * 25);\n\t\t},\n\t\tbeforeClose: function(event, ui) {\n\t\t\tdocument.body.style.overflow = 'auto';\n\t\t\tjQuery('#spbc_dialog').empty();\n\t\t},\n\t})\n\n\tdialog_window.append(' ')\n\n\tlet spinner = jQuery('#spbc_file_view_preloader')\n\tlet size_multiplier = (wp_wrap.width() * 0.0004)\n\n\tspinner.height(128 * size_multiplier)\n\tspinner.width(128 * size_multiplier)\n\tspinner.css({left: dialog_window.width()/2 - (128 * size_multiplier / 2)})\n\tspinner.css({top: dialog_window.height()/2 - (128 * size_multiplier / 2)})\n\n\tspbc_sendAJAXRequest(data, params);\n}\n\nfunction spbc_scannerButtonView_callback(result){\n\n\tlet dialog_window = jQuery('#spbc_dialog')\n\tdialog_window.empty();\n\n\tjQuery('#spbc_file_view_preloader').css({display:'none'})\n\n\tlet row_template = '';\n\n\tfor(let row in result.file){\n\t\tdialog_window.append(row_template.printf(row, result.file[row]));\n\t}\n\n\tlet content_height = Object.keys(result.file).length * 19 < 76 ? 76 : Object.keys(result.file).length * 19,\n\t\tvisible_height = (document.documentElement.clientHeight) / 100 * 75,\n\t\toverflow = content_height < visible_height ? 'hidden' : 'scroll',\n\t\theight = overflow === 'scroll' ? visible_height : content_height;\n\n\tdialog_window.css({\n\t\theight: height,\n\t\toverflow: overflow\n\t})\n\n\tdialog_window.dialog({\n\t\tmodal:true,\n\t\ttitle: ('Loaded: ' + result.file_path),\n\t\tposition: { my: \"center top\", at: \"center top+100px\" , of: window },\n\t\twidth: +(jQuery('#wpwrap').width() / 100 * 90),\n\t\tshow: { effect: \"blind\", duration: 500 },\n\t\tdraggable: true,\n\t\tresizable: false,\n\t\tcloseText: \"X\",\n\t\tclasses: {\"ui-dialog\": 'spbc---top'},\n\t\topen: function(event, ui) {\n\t\t\tevent.target.style.overflow = overflow;\n\t\t\tjQuery('#spbc_dialog').height(height);\n\t\t\tjQuery('.ui-widget-overlay').on('click', function() { \n\t\t\t\tjQuery(\"#spbc_dialog\").dialog('close'); \n\t\t\t}); \n\t\t},\n\t\tbeforeClose: function(event, ui) {\n\t\t\tdocument.body.style.overflow = 'auto';\n\t\t\tjQuery('#spbc_dialog').empty();\n\t\t},\n\t});\n\n\tconsole.log('FILE_VIEWED');\n\n}\n\nfunction spbc_scanner_button_file_view_bad_event(obj){\n\tvar self = jQuery(obj);\n\tvar data = {\n\t\taction: 'spbc_scanner_file_view',\n\t\tfile_id: self.parents('.row-actions').attr('uid'),\n\t};\n\tvar params = {\n\t\tspinner: self.parent().siblings('.tbl-preloader--tiny'),\n\t\tcallback: spbc_scannerButtonViewBadFile_callback,\n\t\terrorOutput: function(msg){ spbcModal.open().putError( msg ); },\n\t};\n\tspbc_sendAJAXRequest(data, params);\n}\n\nfunction spbc_scanner_button_page_view_bad_event(obj){\n\tvar self = jQuery(obj);\n\tvar data = {\n\t\taction: 'spbc_scanner_page_view',\n\t\tpage_url: self.parent().attr('uid'),\n\t};\n\tvar params = {\n\t\tspinner: self.parent().siblings('.tbl-preloader--tiny'),\n\t\tcallback: spbc_scannerButtonViewBad_callback,\n\t\terrorOutput: function(msg){ spbcModal.open().putError( msg ); },\n\t};\n\tspbc_sendAJAXRequest(data, params);\n}\n\nfunction spbc_scannerButtonViewBadFile_callback(result, data, params){\n\n\tconsole.log('FILE_VIEWED_BAD_CODE_FILE');\n\tconsole.log(arguments);\n\tjQuery('#spbc_dialog').empty();\n\n\tvar row_template = '',\n\t\trow_template_bad = '',\n\t\tstr_nums = [];\n\n\tresult.weak_spots = JSON.parse(result.weak_spots);\n\tfor(let severity in result.weak_spots){\n\t\tstr_nums = str_nums.concat(Object.keys(result.weak_spots[severity]));\n\t}\n\tstr_nums = [...new Set(str_nums)].sort(); // Sort bad line\n\n\tfor(let str_num in str_nums){\n\n\t\tlet row = +str_nums[str_num],\n\t\t\tdisplay_depth = 2;\n\n\t\t// Display only existing lines of file\n\t\tfor(let curr_row = row - display_depth; curr_row <= row + display_depth; curr_row++ ){\n\t\t\tif( typeof result.file[curr_row] !== 'undefined' ){\n\t\t\t\tjQuery('#spbc_dialog').append((row === curr_row ? row_template_bad : row_template).printf(curr_row, result.file[curr_row]));\n\t\t\t}\n\t\t}\n\n\t\t// Placing an empty string between results\n\t\tjQuery('#spbc_dialog').append(row_template. printf('', ''));\n\n\t}\n\n\t// Removing last empty string\n\tjQuery('#spbc_dialog div').last().remove();\n\n\tlet content_height = jQuery('#spbc_dialog div').length * 19 < 76 ? 76 : jQuery('#spbc_dialog div').length * 19,\n\t\tvisible_height = (document.documentElement.clientHeight) / 100 * 75,\n\t\toverflow = content_height < visible_height ? 'no_scroll' : 'scroll',\n\t\theight = overflow === 'scroll' ? visible_height : content_height;\n\n\tjQuery('#spbc_dialog').dialog({\n\t\tmodal:true,\n\t\ttitle: result.file_path,\n\t\tposition: { my: \"center top\", at: \"center top+100px\" , of: window },\n\t\twidth: +(jQuery('#wpwrap').width() / 100 * 90),\n\t\tshow: { effect: \"blind\", duration: 500 },\n\t\tdraggable: true,\n\t\tresizable: false,\n\t\tcloseText: \"X\",\n\t\tclasses: {\"ui-dialog\": 'spbc---top'},\n\t\topen: function(event, ui) {\n\t\t\tevent.target.style.overflow = overflow;\n\t\t\tjQuery('#spbc_dialog').height(height);\n\t\t\tjQuery('.ui-widget-overlay').on('click', function() { \n\t\t\t\tjQuery(\"#spbc_dialog\").dialog('close'); \n\t\t\t}); \n\t\t},\n\t\tbeforeClose: function(event, ui) {\n\t\t\tdocument.body.style.overflow = 'auto';\n\t\t\tjQuery('#spbc_dialog').empty();\n\t\t},\n\t});\n}\n\nfunction spbc_scannerButtonViewBad_callback(result, data, params){\n\n\tconsole.log('FILE_VIEWED_BAD_CODE');\n\n\tconsole.log(arguments);\n\n\tlet afterClose = () => {};\n\n\tif ( result.success == true ) {\n\t\tconsole.log(result);\n\t\tvar row_template = '' +\n\t\t\t\t'
%s ' +\n\t\t\t\t'
%s
' +\n\t\t\t\t'
',\n\t\t\trow_template_bad = '' +\n\t\t\t\t'
%s ' +\n\t\t\t\t'
%s
' +\n\t\t\t\t'
',\n\t\t\tstr_nums = [];\n\n\t\tresult.weak_spots = JSON.parse(result.weak_spots);\n\t\tfor(let severity in result.weak_spots){\n\t\t\tstr_nums = str_nums.concat(Object.keys(result.weak_spots[severity]));\n\t\t}\n\n\t\tstr_nums = [...new Set(str_nums)].sort(); // Sort bad line\n\t\t//get a map of bad strings\n\t\tlet bad_strings_map = new Map(Object.entries(result.weak_spots.CRITICAL)) //TODO: Probably there can get something else except CRITICAL in the future\n\t\tfor(let str_num in str_nums){\n\n\t\t\tlet row = +str_nums[str_num],\n\t\t\t\tdisplay_depth = 2;\n\n\t\t\t// Display only existing lines of file\n\t\t\tfor(let curr_row = row - display_depth; curr_row <= row + display_depth; curr_row++ ){\n\t\t\t\tif( typeof result.file[curr_row] !== 'undefined' ){\n\t\t\t\t\tlet is_bad_string = (row === curr_row)\n\t\t\t\t\tlet unformatted_row\n\t\t\t\t\tlet highlited_row\n\t\t\t\t\tif (is_bad_string){\n\t\t\t\t\t\tunformatted_row = row_template_bad\n\t\t\t\t\t} else {\n\t\t\t\t\t\tunformatted_row = row_template\n\t\t\t\t\t}\n\t\t\t\t\tif (is_bad_string && !result.file[curr_row].includes('iframe')){\n\t\t\t\t\t\thighlited_row = unformatted_row.printf(curr_row, bad_strings_map.get(str_nums[str_num]));\n\t\t\t\t\t} else {\n\t\t\t\t\t\thighlited_row = unformatted_row.printf(curr_row, result.file[curr_row]);\n\t\t\t\t\t}\n\t\t\t\t\tjQuery('#spbc_dialog').append(highlited_row);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Placing an empty string between results\n\t\t\tjQuery('#spbc_dialog').append(row_template. printf('', ''));\n\n\t\t\t// Removing last empty string\n\t\t\tjQuery('#spbc_dialog div').last().remove();\n\t\t}\n\t} else {\n\t\tlet wrapperElement = '%s
'\n\t\tjQuery('#spbc_dialog').append(wrapperElement.printf(result.content));\n\t\tafterClose = () => {document.location.reload();};\n\t}\n\n\tlet content_height = jQuery('#spbc_dialog div').length * 19 < 76 ? 76 : jQuery('#spbc_dialog div').length * 19,\n\t\tvisible_height = (document.documentElement.clientHeight) / 100 * 75,\n\t\theight = 'auto',\n\t\toverflow = content_height < visible_height ? 'no_scroll' : 'scroll';\n\n\tjQuery('#spbc_dialog').dialog({\n\t\tmodal:true,\n\t\ttitle: result.file_path,\n\t\tposition: { my: \"center top\", at: \"center top+100px\" , of: window },\n\t\twidth: +(jQuery('#wpwrap').width() / 100 * 90),\n\t\tshow: { effect: \"blind\", duration: 500 },\n\t\tdraggable: true,\n\t\tresizable: false,\n\t\tcloseText: \"X\",\n\t\tclasses: {\"ui-dialog\": 'spbc---top'},\n\t\topen: function(event, ui) {\n\t\t\tevent.target.style.overflow = overflow;\n\t\t\tjQuery('#spbc_dialog').height(height);\n\t\t\tjQuery('.ui-widget-overlay').on('click', function() { \n\t\t\t\tjQuery(\"#spbc_dialog\").dialog('close'); \n\t\t\t}); \n\t\t},\n\t\tbeforeClose: function(event, ui) {\n\t\t\tdocument.body.style.overflow = 'auto';\n\t\t\tjQuery('#spbc_dialog').empty();\n\t\t},\n\t\tclose: afterClose,\n\t});\n}\n\nfunction spbc_scanner_button_file_compare_event(obj){\n\tvar self = jQuery(obj);\n\tvar data = {\n\t\taction: 'spbc_scanner_file_compare',\n\t\tfile_id: self.parents('.row-actions').attr('uid'),\n\t};\n\tvar params = {\n\t\tspinner: self.parent().siblings('.tbl-preloader--tiny'),\n\t\tcallback: spbc_scannerButtonFileCompare_callback,\n\t\terrorOutput: function(msg){ spbcModal.open().putError( msg ); },\n\t};\n\tspbc_sendAJAXRequest(data, params);\n}\n\nfunction spbc_scannerButtonFileCompare_callback(result, data, params){\n\n\tconsole.log('FILE_COMPARED');\n\n\tlet row_template = '';\n\tlet row_template_bad = '';\n\n\tjQuery('#spbc_dialog').append(row_template.printf('Modified ', 'Line', 'Original '));\n\n\tfor(var row=1, prev = false, next = false; typeof result.file[row] != 'undefined' || typeof result.file_original[row] != 'undefined'; row++){\n\n\t\tif(typeof result.file[row] == 'undefined') result.file[row] = '';\n\t\tif(typeof result.file_original[row] == 'undefined') result.file_original[row] = '';\n\n\t\t// Display only existing lines of file\n\t\tif(result.difference.indexOf(row) != -1){\n\t\t\tfor(let display_depth = 2, curr_row = row - display_depth; curr_row <= row + display_depth; curr_row++ ){\n\t\t\t\tif( typeof result.file[curr_row] !== 'undefined' && typeof result.file_original[row] !== 'undefined') {\n\t\t\t\t\tjQuery('#spbc_dialog').append(\n\t\t\t\t\t\t(row === curr_row ? row_template_bad : row_template).printf(\n\t\t\t\t\t\t\tresult.file[curr_row] ? result.file[curr_row] : '',\n\t\t\t\t\t\t\tcurr_row,\n\t\t\t\t\t\t\tresult.file_original[curr_row] ? result.file_original[curr_row] : ''\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tjQuery('#spbc_dialog').append(row_template. printf('', '', ''));\n\t\t}\n\t}\n\n\tvar content_height = jQuery('#spbc_dialog div').length * 19 + 19,\n\t\tvisible_height = (document.documentElement.clientHeight) / 100 * 75,\n\t\toverflow = content_height < visible_height ? 'no_scroll' : 'scroll',\n\t\theight = overflow === 'scroll' ? visible_height : content_height;\n\n\tjQuery('#spbc_dialog').dialog({\n\t\tmodal:true,\n\t\ttitle: result.file_path,\n\t\tposition: { my: \"center top\", at: \"center top+100px\" , of: window },\n\t\twidth: +(jQuery('#wpwrap').width() / 100 * 90),\n\t\theight: height,\n\t\tshow: { effect: \"blind\", duration: 500 },\n\t\tdraggable: true,\n\t\tresizable: true,\n\t\tcloseText: \"X\",\n\t\tclasses: {\"ui-dialog\": 'spbc---top'},\n\t\topen: function(event, ui) {\n\t\t\tdocument.body.style.overflow = 'hidden';\n\t\t\tevent.target.style.overflow = overflow;\n\t\t\tjQuery('#spbc_dialog').height(height);\n\t\t},\n\t\tbeforeClose: function(event, ui) {\n\t\t\tdocument.body.style.overflow = 'auto';\n\t\t\tjQuery('#spbc_dialog').empty();\n\t\t}\n\t});\n}\n\nfunction spbc_scanner__reload_scan_info() {\n\tjQuery('.spbc_hint__last_scan_title').text(spbcScaner.look_below_for_scan_res);\n\tconst data = {\n\t\taction: 'spbc_scanner__last_scan_info'\n\t};\n\tconst params = {\n\t\tcallback: (result) => {\n\t\t\tdocument.getElementById('spbc_scanner__last_scan_info').innerText = result.data;\n\t\t}\n\t};\n\tspbc_sendAJAXRequest(data, params);\n}\n\n/**\n * Show snapshots of file\n * @param obj\n */\nfunction spbc_scanner_file_monitoring_show_current_snapshot(obj)\n{\n\tconst self = jQuery(obj);\n\tconst fileId = self.parents('.row-actions').attr('uid');\n\tconst file_name = self.closest('.column-path').find('.title').text();\n\n\t// Init and open remodal\n\tconst remodal = jQuery('[data-remodal-id=spbc-file-monitoring-modal]');\n\tconst remodalObject = remodal.remodal();\n\tremodalObject.open();\n\n\t// Ajax request to get data for slider\n\tlet data = {\n\t\taction: 'spbc_file_monitoring_show_snapshots',\n\t\tfile_id: fileId,\n\t\tsecurity: spbcSettings.ajax_nonce\n\t};\n\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\tasync: true,\n\t\turl: spbcSettings.ajaxurl,\n\t\tdata: data,\n\t\tsuccess: function(result) {\n\t\t\tif (result.success) {\n\t\t\t\tremodal.find('#spbc-fm-snapshot-list ul').remove();\n\t\t\t\tremodal.find('#spbc-fm-snapshot-file-name').text(file_name);\n\t\t\t\tdrawSnapshotList(result.data, remodal);\n\t\t\t\tdrawCurrentSnapshot(result.data[0].id, remodal);\n\t\t\t} else {\n\t\t\t\t// TODO: show errors\n\t\t\t}\n\t\t},\n\t});\n}\n\n/**\n *\n * @param data\n * @param remodal\n */\nfunction drawSnapshotList(data, remodal)\n{\n\tlet list = '';\n\n\tfor (let item of data) {\n\t\tlist += ` ${item.created_at} `;\n\t}\n\n\tlet html =\n\t\t`
`;\n\n\tremodal.find('#spbc-fm-snapshot-list').append(html);\n}\n\nfunction drawCurrentSnapshot(snapshot_id, remodal)\n{\n\t// Ajax request to get data for slider\n\tlet data = {\n\t\taction: 'spbc_file_monitoring_show_current_snapshot',\n\t\tsnapshot_id,\n\t\tsecurity: spbcSettings.ajax_nonce\n\t};\n\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\tasync: true,\n\t\turl: spbcSettings.ajaxurl,\n\t\tdata: data,\n\t\tbeforeSend: function() {\n\t\t\tjQuery('#spbc-file-monitoring-modal-preloader').show();\n\t\t},\n\t\tsuccess: function(result) {\n\t\t\tif (result.success) {\n\t\t\t\tremodal.find('#spbc-fm-snapshot-view .wrap').remove();\n\t\t\t\tremodal.find('[data-spanshot-id').removeClass('active');\n\t\t\t\tremodal.find('[data-spanshot-id=' + snapshot_id + ']').addClass('active');\n\n\t\t\t\tlet html =\n\t\t\t\t\t`
\n
\n \n ${result.data.content}\n
\n \n
`;\n\n\t\t\t\tjQuery('#spbc-file-monitoring-modal-preloader').hide();\n\t\t\t\tremodal.find('#spbc-fm-snapshot-view').append(html);\n\t\t\t\tdocument.querySelectorAll('pre code').forEach((el) => {\n\t\t\t\t\thljs.highlightElement(el);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// TODO: show errors\n\t\t\t}\n\t\t},\n\t});\n}\n\n/**\n * Cure file\n * @param obj\n */\nfunction spbc_scanner_button_cure_file_ajax_handler(obj)\n{\n\tconst self = jQuery(obj);\n\tconst fileFastHash = self.parents('.row-actions').attr('uid');\n\n\tlet data = {\n\t\taction: 'spbc_file_cure_ajax_action',\n\t\tfile_fast_hash: fileFastHash,\n\t\tsecurity: spbcSettings.ajax_nonce\n\t};\n\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\tasync: true,\n\t\turl: spbcSettings.ajaxurl,\n\t\tdata: data,\n\t\tsuccess: function(result) {\n\t\t\tif (result.success) {\n\t\t\t\tspbcModal.open().put(result.data);\n\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\tdocument.location.reload();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tspbcModal.open().putError(result.data);\n\t\t\t}\n\t\t},\n\t});\n}\n\n/**\n * Restore file from backup\n * @param obj\n */\nfunction spbc_scanner_button_restore_from_backup_ajax_handler(obj)\n{\n\tconst self = jQuery(obj);\n\tconst fileFastHash = self.parents('.row-actions').attr('uid');\n\n\tlet data = {\n\t\taction: 'spbc_restore_file_from_backup_ajax_action',\n\t\tfile_fast_hash: fileFastHash,\n\t\tsecurity: spbcSettings.ajax_nonce\n\t};\n\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\tasync: true,\n\t\turl: spbcSettings.ajaxurl,\n\t\tdata: data,\n\t\tsuccess: function(result) {\n\t\t\tif (result.success) {\n\t\t\t\tspbcModal.open().put(result.data);\n\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\tdocument.location.reload();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tspbcModal.open().putError(result.data);\n\t\t\t}\n\t\t},\n\t});\n}\n\n/**\n * Clear scan results\n */\nfunction spbc_scanner_button_clear_scan_results()\n{\n\tif( ! confirm('Do you confirm to clear the scan results?') )\n\t\treturn;\n\n\tconsole.log('CLEAR');\n\n\tspbc_sendAJAXRequest(\n\t\t{ action: 'spbc_scanner_clear', },\n\t\t{\n\t\t\ttype: 'GET',\n\t\t\tsuccessCallback: function(){ document.location = document.location },\n\t\t\tcomplete: null,\n\t\t\terrorOutput: null,\n\t\t\tcontext: this,\n\t\t\ttimeout: 40000,\n\t\t\tsuccess: function() {\n\t\t\t\tdocument.location.reload();\n\t\t\t},\n\t\t},\n\t);\n}\n\njQuery(document).ready(function(){\n\n\t// EVENT HADLING\n\tspbc_tbl__bulk_actions__listen(); // Table. Row bulk handler\n\tspbc_tbl__row_actions__listen(); // Table. Row actions handler\n\tspbc_tbl__pagination__listen(); // Table. Pagination handler\n\tspbc_tbl__sort__listen(); // Table. Sort handler\n\n\tspbcStartShowHide();\n\n\t// Preparing progressbar\n\tjQuery('#spbc_scaner_progress_bar').progressbar({\n\t\tvalue: 0,\n\t\tcreate: function( event, ui ) {\n\t\t\tevent.target.style.position = 'relative';\n\t\t\tevent.target.style.marginBottom = '12px';\n\t\t},\n\t\tchange: function(event, ui){\n\t\t\tjQuery('.spbc_progressbar_counter span').text(jQuery(event.target).progressbar('option', 'value') + ' %');\n\t\t},\n\t});\n\n\t// Preparing accordion\n\tjQuery('#spbc_scan_accordion').accordion({\n\t\theader: \"h3\",\n\t\theightStyle: 'content',\n\t\tcollapsible: true,\n\t\tactive: false,\n\t\tactivate: function( event, ui ) {\n\t\t\tif( ui.oldPanel.length === 0 && ui.oldHeader.length === 0 )\n\t\t\t\tjQuery(\"#spbc_scan_accordion\").accordion(\"option\", \"classes.ui-accordion-content\", \"ui-corner-bottom spbc-overflow--visible\");\n\t\t},\n\t\tbeforeActivate: function( event, ui ) {\n\t\t\tif( ui.oldPanel.length === 1 && ui.oldHeader.length === 1 )\n\t\t\t\tjQuery(\"#spbc_scan_accordion\").accordion(\"option\", \"classes.ui-accordion-content\", \"ui-corner-bottom\");\n\t\t}\n\t});\n\n\t// Init scanner plugin\n\twindow.spbc_scanner = new spbcMalwareScanner({\n\t\tsettings: spbcScaner.settings,\n\t\tstates: spbcScaner.states,\n\t\tbutton: jQuery('#spbc_perform_scan'),\n\t\tspinner: jQuery('#spbc_perform_scan').next(),\n\t\tcallback: null,\n\t\tprogress_overall: jQuery('#spbc_scaner_progress_overall'),\n\t\tprogressbar: jQuery('#spbc_scaner_progress_bar'),\n\t\tprogressbar_text: jQuery('.spbc_progressbar_counter span'),\n\t\twrapper: document.getElementsByClassName('spbc_unchecked_file_list'),\n\t\twarnings: {\n\t\t\tlong_scan: jQuery('.spbc_hint_warning__long_scan'),\n\t\t\toutdated: jQuery('.spbc_hint_warning__outdated')\n\t\t}\n\t});\n\n\tjQuery(document).on('click', '.spbc_popup_tip--icon---show', function(){\n\t\tspbc_popup_tip___show( jQuery( this ) );\n\t});\n\n\tjQuery('#spbc_perform_scan').on('click', function(){\n\t\tjQuery('#spbcscan-results-log-module').remove();\n\t\tspbc_scanner.actionControl();\n\n\t\tif (!jQuery(\".spbc_log-wrapper .panel-body\").length) {\n\t\t\tjQuery(\".spbc_log-wrapper\").append('
');\n\t\t}\n\n\t\tjQuery(\".spbc_log-wrapper\").resizable({\n\t\t\thandles: 'n, s',\n\t\t\tcontainment: 'document',\n\t\t});\n\t});\n\n\tjQuery(\"#spbcscan-results-log-module\").resizable({\n\t\thandles: 'n, s',\n\t\tcontainment: 'document',\n\t});\n\n\t// Clear scanner's tables\n\tjQuery('#spbc_scanner_clear').on('click', function(){\n\n\t\tif( ! confirm('Do you confirm to clear the scan results?') )\n\t\t\treturn;\n\n\t\tconsole.log('CLEAR');\n\n\t\tspbc_sendAJAXRequest(\n\t\t\t{ action: 'spbc_scanner_clear', },\n\t\t\t{\n\t\t\t\ttype: 'GET',\n\t\t\t\tsuccessCallback: function(){ document.location = document.location },\n\t\t\t\tcomplete: null,\n\t\t\t\terrorOutput: null,\n\t\t\t\tcontext: this,\n\t\t\t\ttimeout: 40000,\n\t\t\t\tsuccess: function() {\n\t\t\t\t\tdocument.location.reload();\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t});\n\n\tjQuery('#spbc_scanner_save_to_pdf').on('click', function(){\n\t\tjQuery.ajax({\n\t\t\turl: spbcSettings.ajaxurl,\n\t\t\ttype: 'POST',\n\t\t\tdata: {\n\t\t\t\taction: 'spbc_scanner_save_to_pdf',\n\t\t\t\tsecurity: spbcSettings.ajax_nonce,\n\t\t\t\tno_cache: Math.random()\n\t\t\t},\n\t\t\txhrFields: {\n\t\t\t\tresponseType: 'blob'\n\t\t\t},\n\t\t\tsuccess: function(data) {\n\t\t\t\tjQuery.ajax({\n\t\t\t\t\t\turl: spbcSettings.ajaxurl,\n\t\t\t\t\t\ttype: 'POST',\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\taction: 'spbc_scanner_get_pdf_file_name',\n\t\t\t\t\t\t\tsecurity: spbcSettings.ajax_nonce,\n\t\t\t\t\t\t\tno_cache: Math.random()\n\t\t\t\t\t\t},\n\t\t\t\t\t\txhrFields: {\n\t\t\t\t\t\t\tresponseType: 'text'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsuccess: function(filename) {\n\t\t\t\t\t\t\tlet blob=new Blob([data]);\n\t\t\t\t\t\t\tlet link=document.createElement('a');\n\t\t\t\t\t\t\tlink.href=window.URL.createObjectURL(blob);\n\t\t\t\t\t\t\tlink.download=filename.data;\n\t\t\t\t\t\t\tlink.click();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t});\n\t});\n\n\t// Select snapshot\n\tjQuery(document).on('click', '.spbc-fm-snapshot-list [data-spanshot-id]', function() {\n\t\tconst currentSnapshotId = jQuery(this).data('spanshot-id');\n\t\tconst activeSnapshotId = jQuery('.spbc-fm-snapshot-list [data-spanshot-id].active').data('spanshot-id');\n\n\t\tif (currentSnapshotId === activeSnapshotId) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst remodal = jQuery('[data-remodal-id=spbc-file-monitoring-modal]');\n\t\tdrawCurrentSnapshot(currentSnapshotId, remodal)\n\t});\n});"],"names":["spbc_popup_tip___show","show_icon","remove_desc_func","e","jQuery","target","parent","length","hasClass","hide","document","off","tip_title","attr","tip_text","obj","after","empty","append","css","top","position","left","on","parents","spbc_scanner_button_file_view_event","self","data","action","file_id","params","spinner","siblings","callback","spbc_scannerButtonView_callback","errorOutput","msg","spbcModal","open","putError","spbc_sendAJAXRequest","spbc_scanner_analysis_log_delete_from_log","window","location","reload","spbc_scanner_button_page_view_event","page_url","wp_wrap","dialog_window","dialog","modal","title","my","at","of","width","show","effect","duration","draggable","resizable","closeText","classes","ui-dialog","event","ui","style","overflow","height","documentElement","beforeClose","body","size_multiplier","result","let","row","display","file","printf","content_height","Object","keys","visible_height","file_path","console","log","spbc_scanner_button_file_view_bad_event","spbc_scannerButtonViewBadFile_callback","spbc_scanner_button_page_view_bad_event","spbc_scannerButtonViewBad_callback","arguments","severity","str_num","row_template","str_nums","weak_spots","JSON","parse","concat","Set","sort","curr_row","last","remove","afterClose","success","bad_strings_map","Map","entries","CRITICAL","is_bad_string","unformatted_row","highlited_row","includes","get","content","close","spbc_scanner_button_file_compare_event","spbc_scannerButtonFileCompare_callback","file_original","difference","indexOf","spbc_scanner__reload_scan_info","text","spbcScaner","look_below_for_scan_res","getElementById","innerText","spbc_scanner_file_monitoring_show_current_snapshot","fileId","file_name","closest","find","remodal","security","spbcSettings","ajax_nonce","ajax","type","async","url","ajaxurl","drawSnapshotList","drawCurrentSnapshot","id","list","item","created_at","html","snapshot_id","beforeSend","removeClass","addClass","querySelectorAll","forEach","hljs","highlightElement","el","spbc_scanner_button_cure_file_ajax_handler","file_fast_hash","put","addEventListener","spbc_scanner_button_restore_from_backup_ajax_handler","spbc_scanner_button_clear_scan_results","confirm","successCallback","complete","context","this","timeout","ready","spbc_tbl__bulk_actions__listen","spbc_tbl__row_actions__listen","spbc_tbl__pagination__listen","spbc_tbl__sort__listen","spbcStartShowHide","progressbar","value","create","marginBottom","change","accordion","header","heightStyle","collapsible","active","activate","oldPanel","oldHeader","beforeActivate","spbc_scanner","spbcMalwareScanner","settings","states","button","next","progress_overall","progressbar_text","wrapper","getElementsByClassName","warnings","long_scan","outdated","actionControl","handles","containment","no_cache","Math","random","xhrFields","responseType","filename","blob","Blob","link","createElement","href","URL","createObjectURL","download","click","currentSnapshotId"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"spbc-settings_tab--scanner.min.js","sources":["spbc-settings_tab--scanner.js"],"sourcesContent":["function spbc_popup_tip___show(show_icon){\n\n\tvar tip_title = show_icon.attr('spbc_tip_title') || null;\n\tvar\ttip_text = show_icon.attr('spbc_tip_text') || null;\n\tvar remove_desc_func = function(e){\n\n\t\tif(\n\t\t\ttypeof e === 'undefined' ||\n\t\t\t(\n\t\t\t\t(jQuery(e.target).parent('.spbc_popup_tip--wrapper').length == 0 || jQuery(e.target).hasClass('spbc_popup_tip--icon---cancel')) &&\n\t\t\t\t!jQuery(e.target).hasClass('spbc_popup_tip--icon---show')\n\t\t\t)\n\t\t){\n\t\t\tjQuery('.spbc_popup_tip--wrapper').hide();\n\t\t\tjQuery(document).off('click', remove_desc_func);\n\t\t}\n\t};\n\n\tremove_desc_func();\n\n\tshow_icon.after(\"\");\n\n\tvar obj = jQuery('.spbc_popup_tip--wrapper');\n\n\tobj.empty()\n\t\t.append(\"\")\n\t\t.css({\n\t\t\ttop: show_icon.position().top - 2,\n\t\t\tleft: show_icon.position().left + 25\n\t\t});\n\tobj.append(\"\")\n\t\t.append(\"\")\n\t\t.append(\"\");\n\n\tjQuery(document).on('click', remove_desc_func);\n\tshow_icon.parents('tr').on('mouseout', remove_desc_func);\n}\n\nfunction spbc_scanner_button_file_view_event(obj){\n\tvar self = jQuery(obj);\n\tvar data = {\n\t\taction: 'spbc_scanner_file_view',\n\t\tfile_id: self.parents('.row-actions').attr('uid'),\n\t};\n\tvar params = {\n\t\tspinner: self.parent().siblings('.tbl-preloader--tiny'),\n\t\tcallback: spbc_scannerButtonView_callback,\n\t\terrorOutput: function(msg){ spbcModal.open().putError( msg ); },\n\t};\n\tspbc_sendAJAXRequest(data, params);\n}\n\n/**\n * Delete file from analysis log\n */\nfunction spbc_scanner_analysis_log_delete_from_log(obj) {\n\tconst self = jQuery(obj);\n\tconst data = {\n\t\taction: 'spbc_scanner_analysis_log_delete_from_log',\n\t\tfile_id: self.parents('.row-actions').attr('uid'),\n\t};\n\tvar params = {\n\t\tspinner: self.parent().siblings('.tbl-preloader--tiny'),\n\t\tcallback: window.location.reload(),\n\t\terrorOutput: function(msg){ spbcModal.open().putError( msg ); },\n\t};\n\tspbc_sendAJAXRequest(data, params);\n}\n\nfunction spbc_scanner_button_page_view_event(obj){\n\tvar self = jQuery(obj);\n\tvar data = {\n\t\taction: 'spbc_scanner_page_view',\n\t\tpage_url: self.parents('.row-actions').attr('uid'),\n\t};\n\tvar params = {\n\t\tspinner: self.parent().siblings('.tbl-preloader--tiny'),\n\t\tcallback: spbc_scannerButtonView_callback,\n\t\terrorOutput: function(msg){ spbcModal.open().putError( msg ); },\n\t};\n\n\tlet wp_wrap = jQuery('#wpwrap')\n\tlet dialog_window = jQuery('#spbc_dialog')\n\n\tdialog_window.dialog({\n\t\tmodal:true,\n\t\ttitle: 'Loading..',\n\t\tposition: { my: \"center top\", at: \"center top+100px\" , of: window },\n\t\twidth: +(wp_wrap.width() / 100 * 90),\n\t\tshow: { effect: \"blind\", duration: 500 },\n\t\tdraggable: false,\n\t\tresizable: false,\n\t\tcloseText: \"X\",\n\t\tclasses: {\"ui-dialog\": 'spbc---top'},\n\t\topen: function(event, ui) {\n\t\t\tevent.target.style.overflow = 'auto';\n\t\t\tjQuery('#spbc_dialog').height((document.documentElement.clientHeight) / 100 * 25);\n\t\t},\n\t\tbeforeClose: function(event, ui) {\n\t\t\tdocument.body.style.overflow = 'auto';\n\t\t\tjQuery('#spbc_dialog').empty();\n\t\t},\n\t})\n\n\tdialog_window.append('
')\n\n\tlet spinner = jQuery('#spbc_file_view_preloader')\n\tlet size_multiplier = (wp_wrap.width() * 0.0004)\n\n\tspinner.height(128 * size_multiplier)\n\tspinner.width(128 * size_multiplier)\n\tspinner.css({left: dialog_window.width()/2 - (128 * size_multiplier / 2)})\n\tspinner.css({top: dialog_window.height()/2 - (128 * size_multiplier / 2)})\n\n\tspbc_sendAJAXRequest(data, params);\n}\n\nfunction spbc_scannerButtonView_callback(result){\n\n\tlet dialog_window = jQuery('#spbc_dialog')\n\tdialog_window.empty();\n\n\tjQuery('#spbc_file_view_preloader').css({display:'none'})\n\n\tlet row_template = '
';\n\n\tfor(let row in result.file){\n\t\tdialog_window.append(row_template.printf(row, result.file[row]));\n\t}\n\n\tlet content_height = Object.keys(result.file).length * 19 < 76 ? 76 : Object.keys(result.file).length * 19,\n\t\tvisible_height = (document.documentElement.clientHeight) / 100 * 75,\n\t\toverflow = content_height < visible_height ? 'hidden' : 'scroll',\n\t\theight = overflow === 'scroll' ? visible_height : content_height;\n\n\tdialog_window.css({\n\t\theight: height,\n\t\toverflow: overflow\n\t})\n\n\tdialog_window.dialog({\n\t\tmodal:true,\n\t\ttitle: ('Loaded: ' + result.file_path),\n\t\tposition: { my: \"center top\", at: \"center top+100px\" , of: window },\n\t\twidth: +(jQuery('#wpwrap').width() / 100 * 90),\n\t\tshow: { effect: \"blind\", duration: 500 },\n\t\tdraggable: true,\n\t\tresizable: false,\n\t\tcloseText: \"X\",\n\t\tclasses: {\"ui-dialog\": 'spbc---top'},\n\t\topen: function(event, ui) {\n\t\t\tevent.target.style.overflow = overflow;\n\t\t\tjQuery('#spbc_dialog').height(height);\n\t\t\tjQuery('.ui-widget-overlay').on('click', function() {\n\t\t\t\tjQuery(\"#spbc_dialog\").dialog('close');\n\t\t\t});\n\t\t},\n\t\tbeforeClose: function(event, ui) {\n\t\t\tdocument.body.style.overflow = 'auto';\n\t\t\tjQuery('#spbc_dialog').empty();\n\t\t},\n\t});\n\n\tconsole.log('FILE_VIEWED');\n\n}\n\nfunction spbc_scanner_button_file_view_bad_event(obj){\n\tvar self = jQuery(obj);\n\tvar data = {\n\t\taction: 'spbc_scanner_file_view',\n\t\tfile_id: self.parents('.row-actions').attr('uid'),\n\t};\n\tvar params = {\n\t\tspinner: self.parent().siblings('.tbl-preloader--tiny'),\n\t\tcallback: spbc_scannerButtonViewBadFile_callback,\n\t\terrorOutput: function(msg){ spbcModal.open().putError( msg ); },\n\t};\n\tspbc_sendAJAXRequest(data, params);\n}\n\nfunction spbc_scanner_button_page_view_bad_event(obj){\n\tvar self = jQuery(obj);\n\tvar data = {\n\t\taction: 'spbc_scanner_page_view',\n\t\tpage_url: self.parent().attr('uid'),\n\t};\n\tvar params = {\n\t\tspinner: self.parent().siblings('.tbl-preloader--tiny'),\n\t\tcallback: spbc_scannerButtonViewBad_callback,\n\t\terrorOutput: function(msg){ spbcModal.open().putError( msg ); },\n\t};\n\tspbc_sendAJAXRequest(data, params);\n}\n\nfunction spbc_scannerButtonViewBadFile_callback(result, data, params){\n\n\tconsole.log('FILE_VIEWED_BAD_CODE_FILE');\n\tconsole.log(arguments);\n\tjQuery('#spbc_dialog').empty();\n\n\tvar row_template = '
',\n\t\trow_template_bad = '
',\n\t\tseverity_parts = [],\n\t\tseverity_parts_sorted = [],\n\t\tseverity_keys_sorted = [];\n\n\tresult.weak_spots = JSON.parse(result.weak_spots)\n\tfor(let severity in result.weak_spots){\n\t\tseverity_parts[severity] = Object.keys(result.weak_spots[severity])\n\t}\n\n\tseverity_keys_sorted = Object.keys(severity_parts).sort();\n\n\tfor(key in severity_keys_sorted){\n\t\tseverity_parts_sorted[severity_keys_sorted[key]] = severity_parts[severity_keys_sorted[key]]\n\t}\n\n\tfor (let severity_part in severity_parts_sorted) {\n\t\tlet header_name = 'spbc-dialog-row-header-' + severity_part.toLowerCase();\n\t\tlet header_html = '
' + severity_part + ' weakspots: ';\n\t\tconst dialog = jQuery('#spbc_dialog');\n\n\t\tdialog.append(row_template.printf('',header_html));\n\t\tdialog.append(row_template. printf('
... ','
... '));\n\n\t\tlet header = dialog.find('#' + header_name);\n\t\theader.parent().parent().css('text-align', 'center');\n\t\theader.parent().parent().css('border', '1px dotted');\n\t\theader.parent().parent().css('background', 'darkgrey');\n\n\t\tfor(let str_num in severity_parts[severity_part]){\n\t\t\t// Sort bad line\n\t\t\tstr_num = [...new Set(str_num)].sort()\n\n\t\t\tlet row = +severity_parts[severity_part][str_num],\n\t\t\t\tdisplay_depth = 2;\n\n\t\t\t// Display only existing lines of file\n\t\t\tfor(let curr_row = row - display_depth; curr_row <= row + display_depth; curr_row++ ){\n\t\t\t\tif( typeof result.file[curr_row] !== 'undefined' ){\n\t\t\t\t\tdialog.append((row === curr_row ? row_template_bad : row_template).printf(curr_row, result.file[curr_row]));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Placing an empty string between results\n\t\t\tdialog.append(row_template. printf('
... ','
... '));\n\t\t}\n\t}\n\n\t// Removing last empty string\n\tjQuery('#spbc_dialog div').last().remove();\n\n\tlet content_height = jQuery('#spbc_dialog div').length * 19 < 76 ? 76 : jQuery('#spbc_dialog div').length * 19,\n\t\tvisible_height = (document.documentElement.clientHeight) / 100 * 75,\n\t\toverflow = content_height < visible_height ? 'no_scroll' : 'scroll',\n\t\theight = overflow === 'scroll' ? visible_height : content_height;\n\n\tjQuery('#spbc_dialog').dialog({\n\t\tmodal:true,\n\t\ttitle: result.file_path,\n\t\tposition: { my: \"center top\", at: \"center top+100px\" , of: window },\n\t\twidth: +(jQuery('#wpwrap').width() / 100 * 90),\n\t\tshow: { effect: \"blind\", duration: 500 },\n\t\tdraggable: true,\n\t\tresizable: false,\n\t\tcloseText: \"X\",\n\t\tclasses: {\"ui-dialog\": 'spbc---top'},\n\t\topen: function(event, ui) {\n\t\t\tevent.target.style.overflow = overflow;\n\t\t\tjQuery('#spbc_dialog').height(height);\n\t\t\tjQuery('.ui-widget-overlay').on('click', function() {\n\t\t\t\tjQuery(\"#spbc_dialog\").dialog('close');\n\t\t\t});\n\t\t},\n\t\tbeforeClose: function(event, ui) {\n\t\t\tdocument.body.style.overflow = 'auto';\n\t\t\tjQuery('#spbc_dialog').empty();\n\t\t},\n\t});\n}\n\nfunction spbc_scannerButtonViewBad_callback(result, data, params){\n\n\tconsole.log('FILE_VIEWED_BAD_CODE');\n\n\tconsole.log(arguments);\n\n\tlet afterClose = () => {};\n\n\tif ( result.success == true ) {\n\t\tconsole.log(result);\n\t\tvar row_template = '
' +\n\t\t\t\t'
%s ' +\n\t\t\t\t'
%s
' +\n\t\t\t\t'
',\n\t\t\trow_template_bad = '
' +\n\t\t\t\t'
%s ' +\n\t\t\t\t'
%s
' +\n\t\t\t\t'
',\n\t\t\tstr_nums = [];\n\n\t\tresult.weak_spots = JSON.parse(result.weak_spots);\n\t\tfor(let severity in result.weak_spots){\n\t\t\tstr_nums = str_nums.concat(Object.keys(result.weak_spots[severity]));\n\t\t}\n\n\t\tstr_nums = [...new Set(str_nums)].sort(); // Sort bad line\n\t\t//get a map of bad strings\n\t\tlet bad_strings_map = new Map(Object.entries(result.weak_spots.CRITICAL)) //TODO: Probably there can get something else except CRITICAL in the future\n\t\tfor(let str_num in str_nums){\n\n\t\t\tlet row = +str_nums[str_num],\n\t\t\t\tdisplay_depth = 2;\n\n\t\t\t// Display only existing lines of file\n\t\t\tfor(let curr_row = row - display_depth; curr_row <= row + display_depth; curr_row++ ){\n\t\t\t\tif( typeof result.file[curr_row] !== 'undefined' ){\n\t\t\t\t\tlet is_bad_string = (row === curr_row)\n\t\t\t\t\tlet unformatted_row\n\t\t\t\t\tlet highlited_row\n\t\t\t\t\tif (is_bad_string){\n\t\t\t\t\t\tunformatted_row = row_template_bad\n\t\t\t\t\t} else {\n\t\t\t\t\t\tunformatted_row = row_template\n\t\t\t\t\t}\n\t\t\t\t\tif (is_bad_string && !result.file[curr_row].includes('iframe')){\n\t\t\t\t\t\thighlited_row = unformatted_row.printf(curr_row, bad_strings_map.get(str_nums[str_num]));\n\t\t\t\t\t} else {\n\t\t\t\t\t\thighlited_row = unformatted_row.printf(curr_row, result.file[curr_row]);\n\t\t\t\t\t}\n\t\t\t\t\tjQuery('#spbc_dialog').append(highlited_row);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Placing an empty string between results\n\t\t\tjQuery('#spbc_dialog').append(row_template. printf('', ''));\n\n\t\t\t// Removing last empty string\n\t\t\tjQuery('#spbc_dialog div').last().remove();\n\t\t}\n\t} else {\n\t\tlet wrapperElement = '
%s
'\n\t\tjQuery('#spbc_dialog').append(wrapperElement.printf(result.content));\n\t\tafterClose = () => {document.location.reload();};\n\t}\n\n\tlet content_height = jQuery('#spbc_dialog div').length * 19 < 76 ? 76 : jQuery('#spbc_dialog div').length * 19,\n\t\tvisible_height = (document.documentElement.clientHeight) / 100 * 75,\n\t\theight = 'auto',\n\t\toverflow = content_height < visible_height ? 'no_scroll' : 'scroll';\n\n\tjQuery('#spbc_dialog').dialog({\n\t\tmodal:true,\n\t\ttitle: result.file_path,\n\t\tposition: { my: \"center top\", at: \"center top+100px\" , of: window },\n\t\twidth: +(jQuery('#wpwrap').width() / 100 * 90),\n\t\tshow: { effect: \"blind\", duration: 500 },\n\t\tdraggable: true,\n\t\tresizable: false,\n\t\tcloseText: \"X\",\n\t\tclasses: {\"ui-dialog\": 'spbc---top'},\n\t\topen: function(event, ui) {\n\t\t\tevent.target.style.overflow = overflow;\n\t\t\tjQuery('#spbc_dialog').height(height);\n\t\t\tjQuery('.ui-widget-overlay').on('click', function() {\n\t\t\t\tjQuery(\"#spbc_dialog\").dialog('close');\n\t\t\t});\n\t\t},\n\t\tbeforeClose: function(event, ui) {\n\t\t\tdocument.body.style.overflow = 'auto';\n\t\t\tjQuery('#spbc_dialog').empty();\n\t\t},\n\t\tclose: afterClose,\n\t});\n}\n\nfunction spbc_scanner_button_file_compare_event(obj){\n\tvar self = jQuery(obj);\n\tvar data = {\n\t\taction: 'spbc_scanner_file_compare',\n\t\tfile_id: self.parents('.row-actions').attr('uid'),\n\t};\n\tvar params = {\n\t\tspinner: self.parent().siblings('.tbl-preloader--tiny'),\n\t\tcallback: spbc_scannerButtonFileCompare_callback,\n\t\terrorOutput: function(msg){ spbcModal.open().putError( msg ); },\n\t};\n\tspbc_sendAJAXRequest(data, params);\n}\n\nfunction spbc_scannerButtonFileCompare_callback(result, data, params){\n\n\tconsole.log('FILE_COMPARED');\n\n\tlet row_template = '
';\n\tlet row_template_bad = '
';\n\n\tjQuery('#spbc_dialog').append(row_template.printf('
Modified ', 'Line', '
Original '));\n\n\tfor(var row=1, prev = false, next = false; typeof result.file[row] != 'undefined' || typeof result.file_original[row] != 'undefined'; row++){\n\n\t\tif(typeof result.file[row] == 'undefined') result.file[row] = '';\n\t\tif(typeof result.file_original[row] == 'undefined') result.file_original[row] = '';\n\n\t\t// Display only existing lines of file\n\t\tif(result.difference.indexOf(row) != -1){\n\t\t\tfor(let display_depth = 2, curr_row = row - display_depth; curr_row <= row + display_depth; curr_row++ ){\n\t\t\t\tif( typeof result.file[curr_row] !== 'undefined' && typeof result.file_original[row] !== 'undefined') {\n\t\t\t\t\tjQuery('#spbc_dialog').append(\n\t\t\t\t\t\t(row === curr_row ? row_template_bad : row_template).printf(\n\t\t\t\t\t\t\tresult.file[curr_row] ? result.file[curr_row] : '',\n\t\t\t\t\t\t\tcurr_row,\n\t\t\t\t\t\t\tresult.file_original[curr_row] ? result.file_original[curr_row] : ''\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tjQuery('#spbc_dialog').append(row_template. printf('', '', ''));\n\t\t}\n\t}\n\n\tvar content_height = jQuery('#spbc_dialog div').length * 19 + 19,\n\t\tvisible_height = (document.documentElement.clientHeight) / 100 * 75,\n\t\toverflow = content_height < visible_height ? 'no_scroll' : 'scroll',\n\t\theight = overflow === 'scroll' ? visible_height : content_height;\n\n\tjQuery('#spbc_dialog').dialog({\n\t\tmodal:true,\n\t\ttitle: result.file_path,\n\t\tposition: { my: \"center top\", at: \"center top+100px\" , of: window },\n\t\twidth: +(jQuery('#wpwrap').width() / 100 * 90),\n\t\theight: height,\n\t\tshow: { effect: \"blind\", duration: 500 },\n\t\tdraggable: true,\n\t\tresizable: true,\n\t\tcloseText: \"X\",\n\t\tclasses: {\"ui-dialog\": 'spbc---top'},\n\t\topen: function(event, ui) {\n\t\t\tdocument.body.style.overflow = 'hidden';\n\t\t\tevent.target.style.overflow = overflow;\n\t\t\tjQuery('#spbc_dialog').height(height);\n\t\t},\n\t\tbeforeClose: function(event, ui) {\n\t\t\tdocument.body.style.overflow = 'auto';\n\t\t\tjQuery('#spbc_dialog').empty();\n\t\t}\n\t});\n}\n\nfunction spbc_scanner__reload_scan_info() {\n\tjQuery('.spbc_hint__last_scan_title').text(spbcScaner.look_below_for_scan_res);\n\tconst data = {\n\t\taction: 'spbc_scanner__last_scan_info'\n\t};\n\tconst params = {\n\t\tcallback: (result) => {\n\t\t\tdocument.getElementById('spbc_scanner__last_scan_info').innerText = result.data;\n\t\t}\n\t};\n\tspbc_sendAJAXRequest(data, params);\n}\n\n/**\n * Show snapshots of file\n * @param obj\n */\nfunction spbc_scanner_file_monitoring_show_current_snapshot(obj)\n{\n\tconst self = jQuery(obj);\n\tconst fileId = self.parents('.row-actions').attr('uid');\n\tconst file_name = self.closest('.column-path').find('.title').text();\n\n\t// Init and open remodal\n\tconst remodal = jQuery('[data-remodal-id=spbc-file-monitoring-modal]');\n\tconst remodalObject = remodal.remodal();\n\tremodalObject.open();\n\n\t// Ajax request to get data for slider\n\tlet data = {\n\t\taction: 'spbc_file_monitoring_show_snapshots',\n\t\tfile_id: fileId,\n\t\tsecurity: spbcSettings.ajax_nonce\n\t};\n\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\tasync: true,\n\t\turl: spbcSettings.ajaxurl,\n\t\tdata: data,\n\t\tsuccess: function(result) {\n\t\t\tif (result.success) {\n\t\t\t\tremodal.find('#spbc-fm-snapshot-list ul').remove();\n\t\t\t\tremodal.find('#spbc-fm-snapshot-file-name').text(file_name);\n\t\t\t\tdrawSnapshotList(result.data, remodal);\n\t\t\t\tdrawCurrentSnapshot(result.data[0].id, remodal);\n\t\t\t} else {\n\t\t\t\t// TODO: show errors\n\t\t\t}\n\t\t},\n\t});\n}\n\n/**\n *\n * @param data\n * @param remodal\n */\nfunction drawSnapshotList(data, remodal)\n{\n\tlet list = '';\n\n\tfor (let item of data) {\n\t\tlist += `
${item.created_at} `;\n\t}\n\n\tlet html =\n\t\t`
`;\n\n\tremodal.find('#spbc-fm-snapshot-list').append(html);\n}\n\nfunction drawCurrentSnapshot(snapshot_id, remodal)\n{\n\t// Ajax request to get data for slider\n\tlet data = {\n\t\taction: 'spbc_file_monitoring_show_current_snapshot',\n\t\tsnapshot_id,\n\t\tsecurity: spbcSettings.ajax_nonce\n\t};\n\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\tasync: true,\n\t\turl: spbcSettings.ajaxurl,\n\t\tdata: data,\n\t\tbeforeSend: function() {\n\t\t\tjQuery('#spbc-file-monitoring-modal-preloader').show();\n\t\t},\n\t\tsuccess: function(result) {\n\t\t\tif (result.success) {\n\t\t\t\tremodal.find('#spbc-fm-snapshot-view .wrap').remove();\n\t\t\t\tremodal.find('[data-spanshot-id').removeClass('active');\n\t\t\t\tremodal.find('[data-spanshot-id=' + snapshot_id + ']').addClass('active');\n\n\t\t\t\tlet html =\n\t\t\t\t\t`
\n
\n \n ${result.data.content}\n
\n \n
`;\n\n\t\t\t\tjQuery('#spbc-file-monitoring-modal-preloader').hide();\n\t\t\t\tremodal.find('#spbc-fm-snapshot-view').append(html);\n\t\t\t\tdocument.querySelectorAll('pre code').forEach((el) => {\n\t\t\t\t\thljs.highlightElement(el);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// TODO: show errors\n\t\t\t}\n\t\t},\n\t});\n}\n\n/**\n * Cure file\n * @param obj\n */\nfunction spbc_scanner_button_cure_file_ajax_handler(obj)\n{\n\tconst self = jQuery(obj);\n\tconst fileFastHash = self.parents('.row-actions').attr('uid');\n\n\tlet data = {\n\t\taction: 'spbc_file_cure_ajax_action',\n\t\tfile_fast_hash: fileFastHash,\n\t\tsecurity: spbcSettings.ajax_nonce\n\t};\n\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\tasync: true,\n\t\turl: spbcSettings.ajaxurl,\n\t\tdata: data,\n\t\tsuccess: function(result) {\n\t\t\tif (result.success) {\n\t\t\t\tspbcModal.open().put(result.data);\n\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\tdocument.location.reload();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tspbcModal.open().putError(result.data);\n\t\t\t}\n\t\t},\n\t});\n}\n\n/**\n * Restore file from backup\n * @param obj\n */\nfunction spbc_scanner_button_restore_from_backup_ajax_handler(obj)\n{\n\tconst self = jQuery(obj);\n\tconst fileFastHash = self.parents('.row-actions').attr('uid');\n\n\tlet data = {\n\t\taction: 'spbc_restore_file_from_backup_ajax_action',\n\t\tfile_fast_hash: fileFastHash,\n\t\tsecurity: spbcSettings.ajax_nonce\n\t};\n\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\tasync: true,\n\t\turl: spbcSettings.ajaxurl,\n\t\tdata: data,\n\t\tsuccess: function(result) {\n\t\t\tif (result.success) {\n\t\t\t\tspbcModal.open().put(result.data);\n\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\tdocument.location.reload();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tspbcModal.open().putError(result.data);\n\t\t\t}\n\t\t},\n\t});\n}\n\n/**\n * Clear scan results\n */\nfunction spbc_scanner_button_clear_scan_results()\n{\n\tif( ! confirm('Do you confirm to clear the scan results?') )\n\t\treturn;\n\n\tconsole.log('CLEAR');\n\n\tspbc_sendAJAXRequest(\n\t\t{ action: 'spbc_scanner_clear', },\n\t\t{\n\t\t\ttype: 'GET',\n\t\t\tsuccessCallback: function(){ document.location = document.location },\n\t\t\tcomplete: null,\n\t\t\terrorOutput: null,\n\t\t\tcontext: this,\n\t\t\ttimeout: 40000,\n\t\t\tsuccess: function() {\n\t\t\t\tdocument.location.reload();\n\t\t\t},\n\t\t},\n\t);\n}\n\njQuery(document).ready(function(){\n\n\t// EVENT HADLING\n\tspbc_tbl__bulk_actions__listen(); // Table. Row bulk handler\n\tspbc_tbl__row_actions__listen(); // Table. Row actions handler\n\tspbc_tbl__pagination__listen(); // Table. Pagination handler\n\tspbc_tbl__sort__listen(); // Table. Sort handler\n\n\tspbcStartShowHide();\n\n\t// Preparing progressbar\n\tjQuery('#spbc_scaner_progress_bar').progressbar({\n\t\tvalue: 0,\n\t\tcreate: function( event, ui ) {\n\t\t\tevent.target.style.position = 'relative';\n\t\t\tevent.target.style.marginBottom = '12px';\n\t\t},\n\t\tchange: function(event, ui){\n\t\t\tjQuery('.spbc_progressbar_counter span').text(jQuery(event.target).progressbar('option', 'value') + ' %');\n\t\t},\n\t});\n\n\t// Preparing accordion\n\tjQuery('#spbc_scan_accordion').accordion({\n\t\theader: \"h3\",\n\t\theightStyle: 'content',\n\t\tcollapsible: true,\n\t\tactive: false,\n\t\tactivate: function( event, ui ) {\n\t\t\tif( ui.oldPanel.length === 0 && ui.oldHeader.length === 0 )\n\t\t\t\tjQuery(\"#spbc_scan_accordion\").accordion(\"option\", \"classes.ui-accordion-content\", \"ui-corner-bottom spbc-overflow--visible\");\n\t\t},\n\t\tbeforeActivate: function( event, ui ) {\n\t\t\tif( ui.oldPanel.length === 1 && ui.oldHeader.length === 1 )\n\t\t\t\tjQuery(\"#spbc_scan_accordion\").accordion(\"option\", \"classes.ui-accordion-content\", \"ui-corner-bottom\");\n\t\t}\n\t});\n\n\t// Init scanner plugin\n\twindow.spbc_scanner = new spbcMalwareScanner({\n\t\tsettings: spbcScaner.settings,\n\t\tstates: spbcScaner.states,\n\t\tbutton: jQuery('#spbc_perform_scan'),\n\t\tspinner: jQuery('#spbc_perform_scan').next(),\n\t\tcallback: null,\n\t\tprogress_overall: jQuery('#spbc_scaner_progress_overall'),\n\t\tprogressbar: jQuery('#spbc_scaner_progress_bar'),\n\t\tprogressbar_text: jQuery('.spbc_progressbar_counter span'),\n\t\twrapper: document.getElementsByClassName('spbc_unchecked_file_list'),\n\t\twarnings: {\n\t\t\tlong_scan: jQuery('.spbc_hint_warning__long_scan'),\n\t\t\toutdated: jQuery('.spbc_hint_warning__outdated')\n\t\t}\n\t});\n\n\tjQuery(document).on('click', '.spbc_popup_tip--icon---show', function(){\n\t\tspbc_popup_tip___show( jQuery( this ) );\n\t});\n\n\tjQuery('#spbc_perform_scan').on('click', function(){\n\t\tjQuery('#spbcscan-results-log-module').remove();\n\t\tspbc_scanner.actionControl();\n\n\t\tif (!jQuery(\".spbc_log-wrapper .panel-body\").length) {\n\t\t\tjQuery(\".spbc_log-wrapper\").append('
');\n\t\t}\n\n\t\tjQuery(\".spbc_log-wrapper\").resizable({\n\t\t\thandles: 'n, s',\n\t\t\tcontainment: 'document',\n\t\t});\n\t});\n\n\tjQuery(\"#spbcscan-results-log-module\").resizable({\n\t\thandles: 'n, s',\n\t\tcontainment: 'document',\n\t});\n\n\t// Clear scanner's tables\n\tjQuery('#spbc_scanner_clear').on('click', function(){\n\n\t\tif( ! confirm('Do you confirm to clear the scan results?') )\n\t\t\treturn;\n\n\t\tconsole.log('CLEAR');\n\n\t\tspbc_sendAJAXRequest(\n\t\t\t{ action: 'spbc_scanner_clear', },\n\t\t\t{\n\t\t\t\ttype: 'GET',\n\t\t\t\tsuccessCallback: function(){ document.location = document.location },\n\t\t\t\tcomplete: null,\n\t\t\t\terrorOutput: null,\n\t\t\t\tcontext: this,\n\t\t\t\ttimeout: 40000,\n\t\t\t\tsuccess: function() {\n\t\t\t\t\tdocument.location.reload();\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t});\n\n\tjQuery('#spbc_scanner_save_to_pdf').on('click', function(){\n\t\tjQuery.ajax({\n\t\t\turl: spbcSettings.ajaxurl,\n\t\t\ttype: 'POST',\n\t\t\tdata: {\n\t\t\t\taction: 'spbc_scanner_save_to_pdf',\n\t\t\t\tsecurity: spbcSettings.ajax_nonce,\n\t\t\t\tno_cache: Math.random()\n\t\t\t},\n\t\t\txhrFields: {\n\t\t\t\tresponseType: 'blob'\n\t\t\t},\n\t\t\tsuccess: function(data) {\n\t\t\t\tjQuery.ajax({\n\t\t\t\t\t\turl: spbcSettings.ajaxurl,\n\t\t\t\t\t\ttype: 'POST',\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\taction: 'spbc_scanner_get_pdf_file_name',\n\t\t\t\t\t\t\tsecurity: spbcSettings.ajax_nonce,\n\t\t\t\t\t\t\tno_cache: Math.random()\n\t\t\t\t\t\t},\n\t\t\t\t\t\txhrFields: {\n\t\t\t\t\t\t\tresponseType: 'text'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsuccess: function(filename) {\n\t\t\t\t\t\t\tlet blob=new Blob([data]);\n\t\t\t\t\t\t\tlet link=document.createElement('a');\n\t\t\t\t\t\t\tlink.href=window.URL.createObjectURL(blob);\n\t\t\t\t\t\t\tlink.download=filename.data;\n\t\t\t\t\t\t\tlink.click();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t});\n\t});\n\n\t// Select snapshot\n\tjQuery(document).on('click', '.spbc-fm-snapshot-list [data-spanshot-id]', function() {\n\t\tconst currentSnapshotId = jQuery(this).data('spanshot-id');\n\t\tconst activeSnapshotId = jQuery('.spbc-fm-snapshot-list [data-spanshot-id].active').data('spanshot-id');\n\n\t\tif (currentSnapshotId === activeSnapshotId) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst remodal = jQuery('[data-remodal-id=spbc-file-monitoring-modal]');\n\t\tdrawCurrentSnapshot(currentSnapshotId, remodal)\n\t});\n});\n"],"names":["spbc_popup_tip___show","show_icon","remove_desc_func","e","jQuery","target","parent","length","hasClass","hide","document","off","tip_title","attr","tip_text","obj","after","empty","append","css","top","position","left","on","parents","spbc_scanner_button_file_view_event","self","data","action","file_id","params","spinner","siblings","callback","spbc_scannerButtonView_callback","errorOutput","msg","spbcModal","open","putError","spbc_sendAJAXRequest","spbc_scanner_analysis_log_delete_from_log","window","location","reload","spbc_scanner_button_page_view_event","page_url","wp_wrap","dialog_window","dialog","modal","title","my","at","of","width","show","effect","duration","draggable","resizable","closeText","classes","ui-dialog","event","ui","style","overflow","height","documentElement","beforeClose","body","size_multiplier","result","let","row","display","file","printf","content_height","Object","keys","visible_height","file_path","console","log","spbc_scanner_button_file_view_bad_event","spbc_scannerButtonViewBadFile_callback","spbc_scanner_button_page_view_bad_event","spbc_scannerButtonViewBad_callback","arguments","severity_keys_sorted","severity","severity_part","row_template","severity_parts","severity_parts_sorted","weak_spots","JSON","parse","key","sort","str_num","header_name","toLowerCase","header_html","header","find","Set","curr_row","last","remove","afterClose","success","str_nums","concat","bad_strings_map","Map","entries","CRITICAL","is_bad_string","unformatted_row","highlited_row","includes","get","content","close","spbc_scanner_button_file_compare_event","spbc_scannerButtonFileCompare_callback","file_original","difference","indexOf","spbc_scanner__reload_scan_info","text","spbcScaner","look_below_for_scan_res","getElementById","innerText","spbc_scanner_file_monitoring_show_current_snapshot","fileId","file_name","closest","remodal","security","spbcSettings","ajax_nonce","ajax","type","async","url","ajaxurl","drawSnapshotList","drawCurrentSnapshot","id","list","item","created_at","html","snapshot_id","beforeSend","removeClass","addClass","querySelectorAll","forEach","hljs","highlightElement","el","spbc_scanner_button_cure_file_ajax_handler","file_fast_hash","put","addEventListener","spbc_scanner_button_restore_from_backup_ajax_handler","spbc_scanner_button_clear_scan_results","confirm","successCallback","complete","context","this","timeout","ready","spbc_tbl__bulk_actions__listen","spbc_tbl__row_actions__listen","spbc_tbl__pagination__listen","spbc_tbl__sort__listen","spbcStartShowHide","progressbar","value","create","marginBottom","change","accordion","heightStyle","collapsible","active","activate","oldPanel","oldHeader","beforeActivate","spbc_scanner","spbcMalwareScanner","settings","states","button","next","progress_overall","progressbar_text","wrapper","getElementsByClassName","warnings","long_scan","outdated","actionControl","handles","containment","no_cache","Math","random","xhrFields","responseType","filename","blob","Blob","link","createElement","href","URL","createObjectURL","download","click","currentSnapshotId"],"mappings":"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"}
\ No newline at end of file
diff --git a/js/src/spbc-settings_tab--scanner.js b/js/src/spbc-settings_tab--scanner.js
index 4dac0a215..d106d9f51 100644
--- a/js/src/spbc-settings_tab--scanner.js
+++ b/js/src/spbc-settings_tab--scanner.js
@@ -157,9 +157,9 @@ function spbc_scannerButtonView_callback(result){
open: function(event, ui) {
event.target.style.overflow = overflow;
jQuery('#spbc_dialog').height(height);
- jQuery('.ui-widget-overlay').on('click', function() {
- jQuery("#spbc_dialog").dialog('close');
- });
+ jQuery('.ui-widget-overlay').on('click', function() {
+ jQuery("#spbc_dialog").dialog('close');
+ });
},
beforeClose: function(event, ui) {
document.body.style.overflow = 'auto';
@@ -207,29 +207,51 @@ function spbc_scannerButtonViewBadFile_callback(result, data, params){
var row_template = '
',
row_template_bad = '
',
- str_nums = [];
+ severity_parts = [],
+ severity_parts_sorted = [],
+ severity_keys_sorted = [];
- result.weak_spots = JSON.parse(result.weak_spots);
+ result.weak_spots = JSON.parse(result.weak_spots)
for(let severity in result.weak_spots){
- str_nums = str_nums.concat(Object.keys(result.weak_spots[severity]));
+ severity_parts[severity] = Object.keys(result.weak_spots[severity])
}
- str_nums = [...new Set(str_nums)].sort(); // Sort bad line
- for(let str_num in str_nums){
+ severity_keys_sorted = Object.keys(severity_parts).sort();
- let row = +str_nums[str_num],
- display_depth = 2;
+ for(key in severity_keys_sorted){
+ severity_parts_sorted[severity_keys_sorted[key]] = severity_parts[severity_keys_sorted[key]]
+ }
- // Display only existing lines of file
- for(let curr_row = row - display_depth; curr_row <= row + display_depth; curr_row++ ){
- if( typeof result.file[curr_row] !== 'undefined' ){
- jQuery('#spbc_dialog').append((row === curr_row ? row_template_bad : row_template).printf(curr_row, result.file[curr_row]));
- }
- }
+ for (let severity_part in severity_parts_sorted) {
+ let header_name = 'spbc-dialog-row-header-' + severity_part.toLowerCase();
+ let header_html = '';
+ const dialog = jQuery('#spbc_dialog');
+
+ dialog.append(row_template.printf('',header_html));
+ dialog.append(row_template. printf('
... ','
... '));
+
+ let header = dialog.find('#' + header_name);
+ header.parent().parent().css('text-align', 'center');
+ header.parent().parent().css('border', '1px dotted');
+ header.parent().parent().css('background', 'darkgrey');
+
+ for(let str_num in severity_parts[severity_part]){
+ // Sort bad line
+ str_num = [...new Set(str_num)].sort()
+
+ let row = +severity_parts[severity_part][str_num],
+ display_depth = 2;
- // Placing an empty string between results
- jQuery('#spbc_dialog').append(row_template. printf('', ''));
+ // Display only existing lines of file
+ for(let curr_row = row - display_depth; curr_row <= row + display_depth; curr_row++ ){
+ if( typeof result.file[curr_row] !== 'undefined' ){
+ dialog.append((row === curr_row ? row_template_bad : row_template).printf(curr_row, result.file[curr_row]));
+ }
+ }
+ // Placing an empty string between results
+ dialog.append(row_template. printf('
... ','
... '));
+ }
}
// Removing last empty string
@@ -253,9 +275,9 @@ function spbc_scannerButtonViewBadFile_callback(result, data, params){
open: function(event, ui) {
event.target.style.overflow = overflow;
jQuery('#spbc_dialog').height(height);
- jQuery('.ui-widget-overlay').on('click', function() {
- jQuery("#spbc_dialog").dialog('close');
- });
+ jQuery('.ui-widget-overlay').on('click', function() {
+ jQuery("#spbc_dialog").dialog('close');
+ });
},
beforeClose: function(event, ui) {
document.body.style.overflow = 'auto';
@@ -347,9 +369,9 @@ function spbc_scannerButtonViewBad_callback(result, data, params){
open: function(event, ui) {
event.target.style.overflow = overflow;
jQuery('#spbc_dialog').height(height);
- jQuery('.ui-widget-overlay').on('click', function() {
- jQuery("#spbc_dialog").dialog('close');
- });
+ jQuery('.ui-widget-overlay').on('click', function() {
+ jQuery("#spbc_dialog").dialog('close');
+ });
},
beforeClose: function(event, ui) {
document.body.style.overflow = 'auto';
@@ -793,4 +815,4 @@ jQuery(document).ready(function(){
const remodal = jQuery('[data-remodal-id=spbc-file-monitoring-modal]');
drawCurrentSnapshot(currentSnapshotId, remodal)
});
-});
\ No newline at end of file
+});
From 6187ffe5b425788afa51de4f3b7c38618249205e Mon Sep 17 00:00:00 2001
From: alexandergull
Date: Wed, 23 Aug 2023 11:49:30 +0500
Subject: [PATCH 068/109] New. Heuristics. Detect super variables in the system
commands.
---
.../HeuristicAnalyser/HeuristicAnalyser.php | 29 +++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/HeuristicAnalyser.php b/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/HeuristicAnalyser.php
index ee2dfb63e..cfbc1cfcd 100644
--- a/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/HeuristicAnalyser.php
+++ b/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/HeuristicAnalyser.php
@@ -105,6 +105,15 @@ class HeuristicAnalyser
),
);
+ private $super_globals = array(
+ '$_GET',
+ '$_POST',
+ '$_COOKIE',
+ '$_FILES',
+ '$_SERVER',
+ '$GLOBALS',
+ );
+
/**
* Contains a set of dangerous values that have been decoded
* @var string[]
@@ -417,6 +426,13 @@ public function makeVerdict()
$set_of_functions,
true
);
+
+ // If common bad structures found, then check containment for superglobals
+ if ($found_malware_key !== false && $this->checkingSuperGlobalsInTheSystemCommands($this->tokens->current)) {
+ $this->verdict['CRITICAL'][$this->tokens->current->line][] = 'Super variables in the system command found';
+ break;
+ }
+
$this->verdict[$severity][$this->tokens->current->line][] = $set_of_functions[$found_malware_key];
}
}
@@ -586,6 +602,19 @@ private function checkingDecryptedToken(DataStructures\Token $token)
return false;
}
+ private function checkingSuperGlobalsInTheSystemCommands(DataStructures\Token $token)
+ {
+ $next_semicolon = $this->tokens->searchForward($token->key, ';');
+ $depth = $next_semicolon ? $next_semicolon - $token->key : 0;
+ foreach ($this->super_globals as $super_global) {
+ $forward_look_super_globals = $this->tokens->searchForward($token->key, $super_global, $depth);
+ if (false !== $forward_look_super_globals) {
+ return true;
+ }
+ }
+ return false;
+ }
+
private function getResultCode()
{
$output = '';
From 07478a1fd818dae4c24413a6ac8f32c7a1a21161 Mon Sep 17 00:00:00 2001
From: Glomberg
Date: Wed, 23 Aug 2023 09:54:19 +0300
Subject: [PATCH 069/109] Fix. Tests. BFP test cases fixed.
---
lib/CleantalkSP/SpbctWP/Firewall/BFP.php | 4 ++--
tests/Standalone/TestBFP.php | 8 ++++++--
2 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/lib/CleantalkSP/SpbctWP/Firewall/BFP.php b/lib/CleantalkSP/SpbctWP/Firewall/BFP.php
index 1fc8a7a9a..b8b2bcfb7 100644
--- a/lib/CleantalkSP/SpbctWP/Firewall/BFP.php
+++ b/lib/CleantalkSP/SpbctWP/Firewall/BFP.php
@@ -15,8 +15,8 @@ class BFP extends FirewallModule
protected $block_period = 3600; // Default block period for $bf_limit wrong attempts
protected $count_period = 900; // Counting login attempts in this interval
- protected $chance_to_clean = 100; // Chance to clean log table from old entries. In percents.
- protected static $is_checked = false;
+ public $chance_to_clean = 100; // Chance to clean log table from old entries. In percents.
+ public static $is_checked = false;
/**
* @psalm-suppress PossiblyUnusedProperty
diff --git a/tests/Standalone/TestBFP.php b/tests/Standalone/TestBFP.php
index 16ca1204a..064cad7ff 100644
--- a/tests/Standalone/TestBFP.php
+++ b/tests/Standalone/TestBFP.php
@@ -27,11 +27,13 @@ protected function setUp()
'count_period' => $spbc->settings['bfp__count_interval'], // Counting login attempts in this interval
)
);
+ $this->bfp->chance_to_clean = 0;
}
public function testIpv4Block()
{
$ip = '127.0.0.1';
+ $this->bfp->setIpArray(array($ip));
$this->db->execute('
TRUNCATE TABLE
' . SPBC_TBL_BFP_BLOCKED);
@@ -41,8 +43,8 @@ public function testIpv4Block()
$this->bfp->setDb($this->db);
for ($i = 0; $i<=5; $i++){
- $this->bfp->setIpArray(array($ip));
$this->bfp->updateLogs();
+ $this->bfp::$is_checked = false;
}
$bfp_result = $this->bfp->check();
@@ -53,6 +55,7 @@ public function testIpv4Block()
public function testIpv6Block()
{
$ip = 'fddc:0002:aa98:00dd:0000:0000:0000:ffee';
+ $this->bfp->setIpArray(array($ip));
$this->db->execute('
TRUNCATE TABLE
' . SPBC_TBL_BFP_BLOCKED);
@@ -62,11 +65,12 @@ public function testIpv6Block()
$this->bfp->setDb($this->db);
for ($i = 0; $i<=5; $i++){
- $this->bfp->setIpArray(array($ip));
$this->bfp->updateLogs();
+ $this->bfp::$is_checked = false;
}
$bfp_result = $this->bfp->check();
+
$this->assertEquals($bfp_result[0]->ip, $ip);
$this->assertEquals($bfp_result[0]->status, 'DENY_BY_BFP');
}
From 38c26a5563279ddeaa699579042ee8c55bfc3a92 Mon Sep 17 00:00:00 2001
From: Glomberg
Date: Wed, 23 Aug 2023 10:00:31 +0300
Subject: [PATCH 070/109] Fix. Code. Psalm notices fixed.
---
lib/CleantalkSP/SpbctWP/Firewall/BFP.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/CleantalkSP/SpbctWP/Firewall/BFP.php b/lib/CleantalkSP/SpbctWP/Firewall/BFP.php
index b8b2bcfb7..d3cbbe107 100644
--- a/lib/CleantalkSP/SpbctWP/Firewall/BFP.php
+++ b/lib/CleantalkSP/SpbctWP/Firewall/BFP.php
@@ -79,7 +79,7 @@ public function check()
* @return void
* @psalm-suppress PossiblyUnusedMethod
*/
- public function middleAction($result = null)
+ public function middleAction()
{
add_action('spbc_log_wrong_auth', array($this, 'updateLogs'));
}
From 053587ceeb82e206c9baadbba1bee49b7e9066ff Mon Sep 17 00:00:00 2001
From: Glomberg
Date: Wed, 23 Aug 2023 11:03:03 +0300
Subject: [PATCH 071/109] Fix. Code. Dummy commit.
---
security-malware-firewall.php | 1 +
1 file changed, 1 insertion(+)
diff --git a/security-malware-firewall.php b/security-malware-firewall.php
index 106777a1b..3e790069d 100644
--- a/security-malware-firewall.php
+++ b/security-malware-firewall.php
@@ -493,6 +493,7 @@ function spbc_firewall__check()
if ( class_exists('Poppyz_Core') ) { //fix poppyz plugin early start conflict
$GLOBALS['wp_rewrite'] = new WP_Rewrite(); // Fix for early load WP_Rewrite
}
+
$login_url = wp_login_url();
if ( $spbc->settings['login_page_rename__enabled'] ) {
//todo This rewrite could break permalinks, need to implement new logic
From 8259dcc8aaee22ae0a9c72f9a247b24fcd698c60 Mon Sep 17 00:00:00 2001
From: svfcode
Date: Thu, 24 Aug 2023 09:17:08 +0300
Subject: [PATCH 072/109] Add. Settings. Add ability to change admin email.
---
css/spbc-settings.min.css | 2 +-
css/src/spbc-settings.css | 14 +++
inc/spbc-admin.php | 1 +
inc/spbc-settings.php | 154 +++++++++++++++++++++++++++---
js/spbc-settings.min.js | 2 +-
js/spbc-settings.min.js.map | 2 +-
js/src/spbc-settings.js | 69 ++++++++++++-
lib/CleantalkSP/SpbctWP/State.php | 1 +
security-malware-firewall.php | 2 +-
9 files changed, 229 insertions(+), 18 deletions(-)
diff --git a/css/spbc-settings.min.css b/css/spbc-settings.min.css
index 03ba3333b..afbb6c611 100644
--- a/css/spbc-settings.min.css
+++ b/css/spbc-settings.min.css
@@ -1 +1 @@
-.circle{border-radius:50%;align-items:center;justify-content:center;position:relative;background-color:#03A9F4;clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 0,50% 0,50% 50%,50% 50%)}.circle-inner{width:100%;height:100%;border-radius:50%;background:#f7f7f7;transform:scale(.7)}.circle--small{width:16px;height:16px}.circle--mid{width:30px;height:30px}.-animation--circle{animation:animation-circle 2s linear forwards}.-animation--30s{animation-duration:30s!important}.-animation--2min{animation-duration:120s!important}@keyframes animation-circle{12.5%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 0,0 0,50% 50%,50% 50%)}25%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 50%,0 50%,50% 50%,50% 50%)}37.5%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 100%,0 100%,50% 50%,50% 50%)}50%{clip-path:polygon(50% 0,100% 0,100% 100%,50% 100%,50% 100%,50% 100%,50% 100%,50% 50%,50% 50%)}62.5%{clip-path:polygon(50% 0,100% 0,100% 100%,100% 100%,100% 100%,100% 100%,100% 100%,50% 50%,50% 50%)}75%{clip-path:polygon(50% 0,100% 0,100% 50%,100% 50%,100% 50%,100% 50%,100% 50%,50% 50%,50% 50%)}87.5%{clip-path:polygon(50% 0,100% 0,100% 0,100% 0,100% 0,100% 0,100% 0,50% 50%,50% 50%)}100%{clip-path:polygon(50% 0,50% 0,50% 0,50% 0,50% 0,50% 0,50% 0,50% 50%,50% 50%)}}#confirmation-code--resend .circle{margin-left:5px;display:inline-block;vertical-align:text-bottom}.spbc---hidden,.spbc_waf_reason{display:none}#spbcTopWarning{margin-bottom:5px}#spbcTopWarning h3{margin:10px 0 5px}#spbcTopWarning h4{margin:10px}#spbcTopWarning h4 span{margin-top:5px}#spbc_gdpr_open_modal:hover{cursor:pointer}.spbc---gray{color:gray}.spbc---red{color:red}.spbc_bold{font-weight:800}.spbc---top{z-index:9999!important}.spbc_waf_reason_title{text-decoration:underline}.spbc_waf_reason_title:hover+.spbc_waf_reason{display:inline}.spbc_warning_counter{margin:0 5px;padding:0 7px;font-size:14px;height:23px;display:inline-block;text-align:center;border-radius:3px}.spbc_sub_setting{margin-left:30px!important}.spbc_sub2_setting{margin-left:60px!important}.spbc_affiliate_shortcode{width:inherit!important;min-width:inherit!important}.spbc_warning_counter--black{color:#fff;background-color:#000}.spbc_warning_counter--red{color:#000;background-color:red}.spbc_warning_counter--orange{color:#000;background-color:orange}.spbc_warning_counter--green{color:#000;background-color:green}.spbc_highlighted{outline-offset:5px;outline-color:red;outline-width:3px!important;outline-style:solid!important}.spbc_status_icon{vertical-align:text-bottom;margin:0 5px}.spbc_progressbar_counter{position:absolute;height:22px;width:100%;left:0;top:0;text-align:center}.spbc_progressbar_counter span{vertical-align:sub;line-height:22px;font-weight:600;font-size:18px}.spbc_preloader,.spbc_preloader_button{margin-left:5px;vertical-align:text-top;display:none}.spbc_compare_file_row_wrapper,.spbc_view_file_row,.spbc_view_file_row_wrapper{line-height:19px}.ui-progressbar-value{background-image:url(../images/pbar-ani.gif)!important}.spbc_preloader{width:20px}.spbc_preloader_button{height:15px}.spbc_spinner_big{display:block;margin:40px auto}.spbc_scan_result_row td{text-align:center}.spbc_scan_result_row td:nth-child(1){text-align:left}.spbc_scan_result_row td:nth-child(2){text-align:right}.spbc_scan_result_row td:last-child button{margin-left:3px}.spbc_view_file_row_wrapper:nth-child(odd){background:#ccc}.spbc_view_file_row_wrapper:nth-child(even){background:#ddd}.spbc_view_file_row_num{display:inline-block;width:30px;margin:0 0 0 5px;border-right:1px solid #000}.spbc_view_file_row{display:inline;margin:0 0 0 5px;font-size:1em}.spbc_compare_file_headings{text-align:center;width:100%;display:inline-block;font-weight:700}.spbc_compare_file_row_wrapper:nth-child(odd){background:#ccc}.spbc_compare_file_row_wrapper:nth-child(even){background:#ddd}.spbc_compare_file_row_num{display:inline-block;width:20px;box-shadow:-2px 0 0 0 #000,2px 0 0 0 #000;padding:0 1%}.spbc_compare_file_row{display:inline-block;width:45%;margin:0;padding:0 1%}table.spbc_table_general{width:100%;border:0;border-spacing:0;border-collapse:collapse}table.spbc_table_general td,table.spbc_table_general th{position:relative;border:1px solid #666;padding:2px 10px}.spbcShortText{display:inline-block;width:100%}.spbcFullText{display:none;position:absolute;top:0;background:rgba(150,150,150,.9);color:#fff;padding:7px;border:1px solid #333;border-radius:5px;z-index:20}div.pagination{margin:10px}ul.pagination{display:inline-block;margin:0}li.pagination{display:inline-block;margin-left:10px}span.current_page{font-size:1.3em;font-weight:600}.spbc_new{color:red;position:relative;font-size:10px;vertical-align:bottom;top:-8px}.spbc_wrapper_settings{margin:10px 0 0}.spbc_tabs_nav_wrapper{display:block;border-bottom:1px solid #ccc}.spbc_tab_nav{display:inline-block;margin:10px 0 0 .5em;padding:5px 10px;height:24px;border:1px solid #ccc;border-bottom:none;font-size:14px;line-height:24px;background:#e5e5e5;color:#555;cursor:pointer}.spbc_tab_nav:hover{background:#fff}.spbc_tab_nav--active{margin-bottom:-1px;border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}.spbc_tab_nav--active:hover{background:#f1f1f1}.spbc_tab{display:none;margin:15px 0}.spbc_tab--active{display:block}.spbc_tab_fields_group{position:relative;min-width:255px;margin:10px auto;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fdfdfd}.spbc_group_header{margin:0 0 10px;padding:10px;border-bottom:1px solid #eee}.spbc_group_header>h3{margin:0}.spbc_group_header>h3>a{color:#1d2327;text-decoration:none}.spbc_wrapper_field{margin:0 15px 15px}.spbc_long_description__show:hover{color:#aaa;cursor:pointer}.spbc_settings_description{font-size:9pt;color:#888}.spbc_settings_description select{display:inline;position:relative;transform:scale(.7);left:-50px}.spbc_tab-settings_general input[type=text]{min-width:255px;width:100%}.spbc_short_text_field input{min-width:70px!important;width:70px!important}.spbc_middle_text_field input{min-width:200px!important;width:200px!important}.spbc_long_text_field input[type=text]{min-width:200px;width:500px}.spbc_wrapper_field label{vertical-align:baseline}.spbc_wrapper_field h4{margin:10px 15px 5px}.spbc_wrapper_footer{margin:15px}#spbc_wrapper_error{margin:0;padding:5px}#spbc_wrapper_error h3,#spbc_wrapper_error h4{margin:5px}#showHideLink{display:inline-block;margin-top:5px;color:#777}.spbc__wrapper--center{margin:10px 0;text-align:center}.spbc__show_more_logs{display:none}.spbc_settings_banner{display:inline-block;margin:1em 0;vertical-align:top;text-align:center}#spbc_translate_plugin{margin-left:10px}.spbc_rate_block{border:1px dashed #666;width:400px;padding:.2em}#spbc_translate_plugin .spbc_button_rate{margin-bottom:10px}.spbc_button_rate{display:inline-block;text-align:center;vertical-align:middle;padding:12px 24px;border:1px solid #216298;border-radius:8px;background:#35a0f7;background:-webkit-gradient(linear,left top,left bottom,from(#35a0f7),to(#216298));background:-moz-linear-gradient(top,#35a0f7,#216298);background:linear-gradient(to bottom,#35a0f7,#216298);text-shadow:#153e5f 1px 1px 1px;font:normal normal bold 16px verdana;color:#fff;text-decoration:none}.spbc_button_rate:focus,.spbc_button_rate:hover{border:1px solid #297bbe;background:#40c0ff;background:-webkit-gradient(linear,left top,left bottom,from(#40c0ff),to(#2876b6));background:-moz-linear-gradient(top,#40c0ff,#2876b6);background:linear-gradient(to bottom,#40c0ff,#2876b6);color:#fff;text-decoration:none}.spbc_button_rate:active{background:#216298;background:-webkit-gradient(linear,left top,left bottom,from(#216298),to(#216298));background:-moz-linear-gradient(top,#216298,#216298);background:linear-gradient(to bottom,#216298,#216298)}#spbc_rate_plugin .spbc_button_rate:before{content:"\0000a0";display:inline-block;height:24px;width:24px;line-height:24px;margin:0 4px -6px -4px;position:relative;top:0;left:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACjElEQVRIie1UTWsTURQ9dzKpofQLobQFlxqENF1JG0GE6sKuRLDtTKaBkJUIRdwpba2g9ge48gMEUUyTbrUutFmk1X6Q7kxDgi1YUSmlpsGYiTXtuy7GCYnaSRu3PczAfe/dd8695z0ecIAKsFVK0DQNLpcL8Xi8KgHZalFRNWe7uyMs2+RtkBQIjQerU/k3uVceHhmdyed/8NbWFg8OXrlXDY+020JdXf2NQMB/yuE4hHw+j5yur1df7h9QvQMXpiKRHSEECyF4cvJlQVG149VwlZ1BX58fsn1H7e29+OhMd7cEAMyM6PTMNAgfFUWrJSIAQgCAYAKIAECABACABGFt7fPPaDRqjItVqyrqG5vGAn7/kMfTBYMIyGQyeD0VMZKYweYGM2ZjpnR+eWVl8V08fnYiNP6t1Jbzc3PzbNryP38stsiKqp0uWuTz+eBqd9/s6uo02vpdPTOXxZuZDB7cfwgQGa0TIEmS7nA4PhhDkgBgdXV1FkTzRYHCtjjS4XZ3mGQmSsdEhKbGRqhqPwRz0ZOlRKImGBy/FA4F31gd8tG2tjaZmf+VUybS2tpaNpfeTMsADu+2xxRw2O12ENFftpTG6XQat26PQZIIzEA2m/1SKBSGGXhhWZmiaifezs7yfhGdnmFF1TqtuM0OksvvlzMnPZ4mq+RkMoVsNlu83ImlxDqATxUFwqHg94aGhsc9PeeuNjc372pRMpnExsZX5HI5xBZjd3aEuBsOBTcs7TGherXaa9eHIqlUioUQltYIIXhkZPT5XnjL7qXi1Wpkm6w5nccGWlpanLJNlkGQyEw1Pui6rs8tLFx+9vTJq30JlKK/3ycRCQkSFZ8Dcwszi4lwUOylgwNUxC8cBKAS7hIWzwAAAABJRU5ErkJggg==) left center no-repeat;background-size:100% 100%}.spbc_rate_block_stars{margin:1em 0}.star-icon{color:#ddd;font-size:18px;position:relative}.star-icon.full:before{color:#FDE16D;content:'\2605';position:absolute;left:0;text-shadow:0 0 2px rgba(0,0,0,.7)}.spbc_hint{color:#666}.spbc_hint_warning{font-size:17px;font-weight:600;text-align:center;color:#eb8f00}.spbc_hint--link{color:#aaa;text-decoration:underline;cursor:pointer}.spbc_auto_link,.spbc_manual_link{text-decoration:none;font-size:13px;line-height:26px;height:28px;padding:0 10px 1px;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;margin:0;display:inline-block;cursor:pointer}.spbc_hint--top_right{position:relative;float:right;top:0;right:10px}.spbc_auto_link{background:#ccc;border-color:#999;-webkit-box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);color:#000;-webkit-border-radius:2px;border-radius:2px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.spbc_auto_link:hover{color:#fff}.spbc_manual_link{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;border-radius:3px;-webkit-border-radius:3px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.spbc_long_desc,.spbc_popup_tip--wrapper{min-height:80px;max-width:500px;padding:10px;z-index:10}.spbc_manual_link:hover{color:#000}.spbc_dismiss{width:20px;height:20px;border-radius:5px}.spbc-links:visited{color:#fff}.spbc_long_desc{position:absolute;background:#5a5a5a;min-width:80px;color:#fff}.spbc_long_desc p{color:#fff!important}i.animate-spin{-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;display:inline-block;font-size:25px;line-height:20px;color:rgba(120,200,230,1);margin:25px}@keyframes spin{to{transform:rotate(359deg)}}.spbc_long_desc__angle,.spbc_long_desc__angle_top_left{width:10px;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);position:absolute;height:10px;background:#5a5a5a}.spbc_long_desc__cancel{position:absolute;top:5px;right:5px;color:rgba(255,255,255,.5)}.spbc_long_desc__cancel:hover{color:#fff}.spbc_long_desc__link,.spbc_long_desc__title{color:rgba(120,200,230,1)}.spbc_long_desc__angle{top:5px;left:-17px;transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_long_desc__angle_top_left{top:-10px;left:-9px;transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_long_desc__title{margin:0}.spbc_long_desc__link:hover{color:rgba(140,220,250,1)}.spbc_long_desc h4{color:#50a0be;margin:10px 0 3px}.spbc_long_desc span{margin:0 0 0 10px;display:inline-block}.spbc_long_desc img{width:300px}.spbc_popup_tip--icon---show:hover{color:#aaa;cursor:pointer}.spbc_popup_tip--wrapper{position:absolute;background:#5a5a5a;min-width:80px;color:#fff}.spbc_popup_tip--icon---cancel{position:absolute;top:0;right:5px;color:rgba(255,255,255,.5)}.spbc_popup_tip--icon---cancel:hover{color:#fff}.spbc_popup_tip--angle{position:absolute;top:5px;left:-17px;width:10px;height:10px;background:#5a5a5a;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_popup_tip--title{color:rgba(120,200,230,1);margin:0}.spbc_popup_tip--text{color:#fff!important}tr:hover .spbc_hint--wrapper{display:none}.spbc_log-wrapper{padding:5px;border:1px solid #000;width:98%;min-height:300px;height:300px;border-bottom:5px dashed #5a5a5a}.spbc_log-wrapper .panel-body{height:100%;overflow-y:auto}.spbc_log-line{margin:0;padding:0 5px}.spbc_log-line:nth-child(odd){background:#d3d3d3}.spbc_log-block_header{margin:10px 0}.spbc_log-input--checkbox,.spbc_log-label--checkbox{width:auto}button.ct_support_link{border:none;background:0 0;color:#666;text-decoration:underline;cursor:pointer}#spbc-modal-content{text-align:center}#spbc-modal-content>*{display:block;width:100%}.spbc-popup-msg{width:98%;height:15px;text-align:center;padding:4px;border-radius:7px;position:relative;top:0;right:0;bottom:0;left:0;margin:auto}.popup--green{background:#DFD;color:#060;border:1px solid #060}.popup--red{background:#FDD;color:#600;border:1px solid #600}#spbcscan-results-log-module{min-height:300px;height:300px;border-bottom:5px dashed #5a5a5a}#spbcscan-results-log-module .panel-body{height:100%;overflow-y:auto}#spbcscan-scanner-caption h4{margin:10px 0;font-size:14px}#spbcscan-results-log-caption p{font-size:13px;margin:0 0 6px}#spbcscan-scanner-caption{display:flex;flex-wrap:wrap;flex-direction:row-reverse}#spbcscan-scanner-caption .column:first-child{width:75%;flex:0 0 75%}#spbcscan-scanner-caption .column:last-child{width:25%;flex:0 0 25%;padding-right:10px;box-sizing:border-box}.spbc-scan-log-title{color:#1d2327;font-size:1.3em;margin:0 0 15px!important;font-weight:600}.spbc--status{position:relative;padding-left:26px}.spbc--marker-green::before,.spbc--marker-red::before,.spbc--marker-yellow::before{content:'';position:absolute;width:10px;height:10px;border-radius:50%;left:10px;top:4px}.spbc--marker-green::before{background:#1dda23}.spbc--marker-yellow::before{background:#ffb000}.spbc--marker-red::before{background:#d63638}
\ No newline at end of file
+.circle{border-radius:50%;align-items:center;justify-content:center;position:relative;background-color:#03A9F4;clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 0,50% 0,50% 50%,50% 50%)}.circle-inner{width:100%;height:100%;border-radius:50%;background:#f7f7f7;transform:scale(.7)}.circle--small{width:16px;height:16px}.circle--mid{width:30px;height:30px}.-animation--circle{animation:animation-circle 2s linear forwards}.-animation--30s{animation-duration:30s!important}.-animation--2min{animation-duration:120s!important}@keyframes animation-circle{12.5%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 0,0 0,50% 50%,50% 50%)}25%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 50%,0 50%,50% 50%,50% 50%)}37.5%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 100%,0 100%,50% 50%,50% 50%)}50%{clip-path:polygon(50% 0,100% 0,100% 100%,50% 100%,50% 100%,50% 100%,50% 100%,50% 50%,50% 50%)}62.5%{clip-path:polygon(50% 0,100% 0,100% 100%,100% 100%,100% 100%,100% 100%,100% 100%,50% 50%,50% 50%)}75%{clip-path:polygon(50% 0,100% 0,100% 50%,100% 50%,100% 50%,100% 50%,100% 50%,50% 50%,50% 50%)}87.5%{clip-path:polygon(50% 0,100% 0,100% 0,100% 0,100% 0,100% 0,100% 0,50% 50%,50% 50%)}100%{clip-path:polygon(50% 0,50% 0,50% 0,50% 0,50% 0,50% 0,50% 0,50% 50%,50% 50%)}}#confirmation-code--resend .circle{margin-left:5px;display:inline-block;vertical-align:text-bottom}.spbc---hidden,.spbc_waf_reason{display:none}#spbcTopWarning{margin-bottom:5px}#spbcTopWarning h3{margin:10px 0 5px}#spbcTopWarning h4{margin:10px}#spbcTopWarning h4 span{margin-top:5px}#spbc_gdpr_open_modal:hover{cursor:pointer}.spbc---gray{color:gray}.spbc---red{color:red}.spbc_bold{font-weight:800}.spbc---top{z-index:9999!important}.spbc_waf_reason_title{text-decoration:underline}.spbc_waf_reason_title:hover+.spbc_waf_reason{display:inline}.spbc_warning_counter{margin:0 5px;padding:0 7px;font-size:14px;height:23px;display:inline-block;text-align:center;border-radius:3px}.spbc_sub_setting{margin-left:30px!important}.spbc_sub2_setting{margin-left:60px!important}.spbc_affiliate_shortcode{width:inherit!important;min-width:inherit!important}.spbc_warning_counter--black{color:#fff;background-color:#000}.spbc_warning_counter--red{color:#000;background-color:red}.spbc_warning_counter--orange{color:#000;background-color:orange}.spbc_warning_counter--green{color:#000;background-color:green}.spbc_highlighted{outline-offset:5px;outline-color:red;outline-width:3px!important;outline-style:solid!important}.spbc_status_icon{vertical-align:text-bottom;margin:0 5px}.spbc_progressbar_counter{position:absolute;height:22px;width:100%;left:0;top:0;text-align:center}.spbc_progressbar_counter span{vertical-align:sub;line-height:22px;font-weight:600;font-size:18px}.spbc_preloader,.spbc_preloader_button{margin-left:5px;vertical-align:text-top;display:none}.spbc_compare_file_row_wrapper,.spbc_view_file_row,.spbc_view_file_row_wrapper{line-height:19px}.ui-progressbar-value{background-image:url(../images/pbar-ani.gif)!important}.spbc_preloader{width:20px}.spbc_preloader_button{height:15px}.spbc_spinner_big{display:block;margin:40px auto}.spbc_scan_result_row td{text-align:center}.spbc_scan_result_row td:nth-child(1){text-align:left}.spbc_scan_result_row td:nth-child(2){text-align:right}.spbc_scan_result_row td:last-child button{margin-left:3px}.spbc_view_file_row_wrapper:nth-child(odd){background:#ccc}.spbc_view_file_row_wrapper:nth-child(even){background:#ddd}.spbc_auto_link,.spbc_compare_file_row_wrapper:nth-child(odd){background:#ccc}.spbc_view_file_row_num{display:inline-block;width:30px;margin:0 0 0 5px;border-right:1px solid #000}.spbc_view_file_row{display:inline;margin:0 0 0 5px;font-size:1em}.spbc_compare_file_headings{text-align:center;width:100%;display:inline-block;font-weight:700}.spbc_compare_file_row_wrapper:nth-child(even){background:#ddd}.spbc_compare_file_row_num{display:inline-block;width:20px;box-shadow:-2px 0 0 0 #000,2px 0 0 0 #000;padding:0 1%}.spbc_compare_file_row{display:inline-block;width:45%;margin:0;padding:0 1%}table.spbc_table_general{width:100%;border:0;border-spacing:0;border-collapse:collapse}table.spbc_table_general td,table.spbc_table_general th{position:relative;border:1px solid #666;padding:2px 10px}.spbcShortText{display:inline-block;width:100%}.spbcFullText{display:none;position:absolute;top:0;background:rgba(150,150,150,.9);color:#fff;padding:7px;border:1px solid #333;border-radius:5px;z-index:20}div.pagination{margin:10px}ul.pagination{display:inline-block;margin:0}li.pagination{display:inline-block;margin-left:10px}span.current_page{font-size:1.3em;font-weight:600}.spbc_new{color:red;position:relative;font-size:10px;vertical-align:bottom;top:-8px}.spbc_wrapper_settings{margin:10px 0 0}.spbc_tabs_nav_wrapper{display:block;border-bottom:1px solid #ccc}.spbc_tab_nav{display:inline-block;margin:10px 0 0 .5em;padding:5px 10px;height:24px;border:1px solid #ccc;border-bottom:none;font-size:14px;line-height:24px;background:#e5e5e5;color:#555;cursor:pointer}.spbc_tab_nav:hover{background:#fff}.spbc_tab_nav--active{margin-bottom:-1px;border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}.spbc_tab_nav--active:hover{background:#f1f1f1}.spbc_tab{display:none;margin:15px 0}.spbc_tab--active{display:block}.spbc_tab_fields_group{position:relative;min-width:255px;margin:10px auto;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fdfdfd}.spbc_group_header{margin:0 0 10px;padding:10px;border-bottom:1px solid #eee}.spbc_group_header>h3{margin:0}.spbc_group_header>h3>a{color:#1d2327;text-decoration:none}.spbc_wrapper_field{margin:0 15px 15px}.spbc_long_description__show:hover{color:#aaa;cursor:pointer}.spbc_settings_description{font-size:9pt;color:#888}.spbc_settings_description select{display:inline;position:relative;transform:scale(.7);left:-50px}.spbc_tab-settings_general input[type=text]{min-width:255px;width:100%}.spbc_short_text_field input{min-width:70px!important;width:70px!important}.spbc_middle_text_field input{min-width:200px!important;width:200px!important}.spbc_long_text_field input[type=text]{min-width:200px;width:500px}.spbc_wrapper_field label{vertical-align:baseline}.spbc_wrapper_field h4{margin:10px 15px 5px}.spbc_wrapper_footer{margin:15px}#spbc_wrapper_error{margin:0;padding:5px}#spbc_wrapper_error h3,#spbc_wrapper_error h4{margin:5px}#showHideLink{display:inline-block;margin-top:5px;color:#777}.spbc__wrapper--center{margin:10px 0;text-align:center}.spbc__show_more_logs{display:none}.spbc_settings_banner{display:inline-block;margin:1em 0;vertical-align:top;text-align:center}#spbc_translate_plugin{margin-left:10px}.spbc_rate_block{border:1px dashed #666;width:400px;padding:.2em}#spbc_translate_plugin .spbc_button_rate{margin-bottom:10px}.spbc_button_rate{display:inline-block;text-align:center;vertical-align:middle;padding:12px 24px;border:1px solid #216298;border-radius:8px;background:#35a0f7;background:-webkit-gradient(linear,left top,left bottom,from(#35a0f7),to(#216298));background:-moz-linear-gradient(top,#35a0f7,#216298);background:linear-gradient(to bottom,#35a0f7,#216298);text-shadow:#153e5f 1px 1px 1px;font:normal normal bold 16px verdana;color:#fff;text-decoration:none}.spbc_button_rate:focus,.spbc_button_rate:hover{border:1px solid #297bbe;background:#40c0ff;background:-webkit-gradient(linear,left top,left bottom,from(#40c0ff),to(#2876b6));background:-moz-linear-gradient(top,#40c0ff,#2876b6);background:linear-gradient(to bottom,#40c0ff,#2876b6);color:#fff;text-decoration:none}.spbc_button_rate:active{background:#216298;background:-webkit-gradient(linear,left top,left bottom,from(#216298),to(#216298));background:-moz-linear-gradient(top,#216298,#216298);background:linear-gradient(to bottom,#216298,#216298)}#spbc_rate_plugin .spbc_button_rate:before{content:"\0000a0";display:inline-block;height:24px;width:24px;line-height:24px;margin:0 4px -6px -4px;position:relative;top:0;left:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACjElEQVRIie1UTWsTURQ9dzKpofQLobQFlxqENF1JG0GE6sKuRLDtTKaBkJUIRdwpba2g9ge48gMEUUyTbrUutFmk1X6Q7kxDgi1YUSmlpsGYiTXtuy7GCYnaSRu3PczAfe/dd8695z0ecIAKsFVK0DQNLpcL8Xi8KgHZalFRNWe7uyMs2+RtkBQIjQerU/k3uVceHhmdyed/8NbWFg8OXrlXDY+020JdXf2NQMB/yuE4hHw+j5yur1df7h9QvQMXpiKRHSEECyF4cvJlQVG149VwlZ1BX58fsn1H7e29+OhMd7cEAMyM6PTMNAgfFUWrJSIAQgCAYAKIAECABACABGFt7fPPaDRqjItVqyrqG5vGAn7/kMfTBYMIyGQyeD0VMZKYweYGM2ZjpnR+eWVl8V08fnYiNP6t1Jbzc3PzbNryP38stsiKqp0uWuTz+eBqd9/s6uo02vpdPTOXxZuZDB7cfwgQGa0TIEmS7nA4PhhDkgBgdXV1FkTzRYHCtjjS4XZ3mGQmSsdEhKbGRqhqPwRz0ZOlRKImGBy/FA4F31gd8tG2tjaZmf+VUybS2tpaNpfeTMsADu+2xxRw2O12ENFftpTG6XQat26PQZIIzEA2m/1SKBSGGXhhWZmiaifezs7yfhGdnmFF1TqtuM0OksvvlzMnPZ4mq+RkMoVsNlu83ImlxDqATxUFwqHg94aGhsc9PeeuNjc372pRMpnExsZX5HI5xBZjd3aEuBsOBTcs7TGherXaa9eHIqlUioUQltYIIXhkZPT5XnjL7qXi1Wpkm6w5nccGWlpanLJNlkGQyEw1Pui6rs8tLFx+9vTJq30JlKK/3ycRCQkSFZ8Dcwszi4lwUOylgwNUxC8cBKAS7hIWzwAAAABJRU5ErkJggg==) left center no-repeat;background-size:100% 100%}.spbc_auto_link,.spbc_manual_link{height:28px;padding:0 10px 1px;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;display:inline-block;cursor:pointer}.spbc_rate_block_stars{margin:1em 0}.star-icon{color:#ddd;font-size:18px;position:relative}.star-icon.full:before{color:#FDE16D;content:'\2605';position:absolute;left:0;text-shadow:0 0 2px rgba(0,0,0,.7)}.spbc_hint{color:#666}.spbc_hint_warning{font-size:17px;font-weight:600;text-align:center;color:#eb8f00}.spbc_hint--link{color:#aaa;text-decoration:underline;cursor:pointer}.spbc_hint--top_right{position:relative;float:right;top:0;right:10px}.spbc_auto_link{border-color:#999;-webkit-box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);color:#000;text-decoration:none;font-size:13px;line-height:26px;margin:0;-webkit-border-radius:2px;border-radius:2px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.spbc_auto_link:hover{color:#fff}.spbc_manual_link{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration:none;font-size:13px;line-height:26px;margin:0;border-radius:3px;-webkit-border-radius:3px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.spbc_manual_link:hover{color:#000}.spbc-btn-as-link{padding:0;margin:0;vertical-align:baseline;color:gray;border:0;border-bottom:1px solid;cursor:pointer}#spbc-account-email[contenteditable=true]{padding:6px;background-color:#fff;border:1px solid #ccc}.spbc_long_desc,.spbc_popup_tip--wrapper{min-height:80px;max-width:500px;padding:10px;z-index:10}.spbc_dismiss{width:20px;height:20px;border-radius:5px}.spbc-links:visited{color:#fff}.spbc_long_desc{position:absolute;background:#5a5a5a;min-width:80px;color:#fff}.spbc_long_desc p{color:#fff!important}i.animate-spin{-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;display:inline-block;font-size:25px;line-height:20px;color:rgba(120,200,230,1);margin:25px}@keyframes spin{to{transform:rotate(359deg)}}.spbc_long_desc__angle,.spbc_long_desc__angle_top_left{width:10px;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);position:absolute;height:10px;background:#5a5a5a}.spbc_long_desc__cancel{position:absolute;top:5px;right:5px;color:rgba(255,255,255,.5)}.spbc_long_desc__cancel:hover{color:#fff}.spbc_long_desc__link,.spbc_long_desc__title{color:rgba(120,200,230,1)}.spbc_long_desc__angle{top:5px;left:-17px;transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_long_desc__angle_top_left{top:-10px;left:-9px;transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_long_desc__title{margin:0}.spbc_long_desc__link:hover{color:rgba(140,220,250,1)}.spbc_long_desc h4{color:#50a0be;margin:10px 0 3px}.spbc_long_desc span{margin:0 0 0 10px;display:inline-block}.spbc_long_desc img{width:300px}.spbc_popup_tip--icon---show:hover{color:#aaa;cursor:pointer}.spbc_popup_tip--wrapper{position:absolute;background:#5a5a5a;min-width:80px;color:#fff}.spbc_popup_tip--icon---cancel{position:absolute;top:0;right:5px;color:rgba(255,255,255,.5)}.spbc_popup_tip--icon---cancel:hover{color:#fff}.spbc_popup_tip--angle{position:absolute;top:5px;left:-17px;width:10px;height:10px;background:#5a5a5a;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_popup_tip--title{color:rgba(120,200,230,1);margin:0}.spbc_popup_tip--text{color:#fff!important}tr:hover .spbc_hint--wrapper{display:none}.spbc_log-wrapper{padding:5px;border:1px solid #000;width:98%;min-height:300px;height:300px;border-bottom:5px dashed #5a5a5a}.spbc_log-wrapper .panel-body{height:100%;overflow-y:auto}.spbc_log-line{margin:0;padding:0 5px}.spbc_log-line:nth-child(odd){background:#d3d3d3}.spbc_log-block_header{margin:10px 0}.spbc_log-input--checkbox,.spbc_log-label--checkbox{width:auto}button.ct_support_link{border:none;background:0 0;color:#666;text-decoration:underline;cursor:pointer}#spbc-modal-content{text-align:center}#spbc-modal-content>*{display:block;width:100%}.spbc-popup-msg{width:98%;height:15px;text-align:center;padding:4px;border-radius:7px;position:relative;top:0;right:0;bottom:0;left:0;margin:auto}.popup--green{background:#DFD;color:#060;border:1px solid #060}.popup--red{background:#FDD;color:#600;border:1px solid #600}#spbcscan-results-log-module{min-height:300px;height:300px;border-bottom:5px dashed #5a5a5a}#spbcscan-results-log-module .panel-body{height:100%;overflow-y:auto}#spbcscan-scanner-caption h4{margin:10px 0;font-size:14px}#spbcscan-results-log-caption p{font-size:13px;margin:0 0 6px}#spbcscan-scanner-caption{display:flex;flex-wrap:wrap;flex-direction:row-reverse}#spbcscan-scanner-caption .column:first-child{width:75%;flex:0 0 75%}#spbcscan-scanner-caption .column:last-child{width:25%;flex:0 0 25%;padding-right:10px;box-sizing:border-box}.spbc-scan-log-title{color:#1d2327;font-size:1.3em;margin:0 0 15px!important;font-weight:600}.spbc--status{position:relative;padding-left:26px}.spbc--marker-green::before,.spbc--marker-red::before,.spbc--marker-yellow::before{content:'';position:absolute;width:10px;height:10px;border-radius:50%;left:10px;top:4px}.spbc--marker-green::before{background:#1dda23}.spbc--marker-yellow::before{background:#ffb000}.spbc--marker-red::before{background:#d63638}
\ No newline at end of file
diff --git a/css/src/spbc-settings.css b/css/src/spbc-settings.css
index c8ca6f516..7bd6895f4 100644
--- a/css/src/spbc-settings.css
+++ b/css/src/spbc-settings.css
@@ -454,6 +454,20 @@ div.pagination{
{
color:black;
}
+.spbc-btn-as-link {
+ padding: 0;
+ margin: 0;
+ vertical-align: baseline;
+ color: gray;
+ border: 0 none;
+ border-bottom: 1px solid;
+ cursor: pointer;
+}
+#spbc-account-email[contenteditable="true"] {
+ padding: 6px;
+ background-color: #fff;
+ border: 1px solid #ccc;
+}
.spbc_dismiss{
width: 20px; height: 20px;
border-radius: 5px;
diff --git a/inc/spbc-admin.php b/inc/spbc-admin.php
index 3d7da390c..5093c083e 100644
--- a/inc/spbc-admin.php
+++ b/inc/spbc-admin.php
@@ -113,6 +113,7 @@ function spbc_admin_init()
add_action('wp_ajax_spbc_settings__check_renew_banner', 'spbc_settings__check_renew_banner');
add_action('wp_ajax_spbc_sync', 'spbc_sync');
add_action('wp_ajax_spbc_get_key_auto', 'spbc_get_key_auto');
+ add_action('wp_ajax_spbc_update_account_email', 'spbc_settings__update_account_email');
// Confirm the email to activate 2FA
add_action('wp_ajax_spbc_generate_confirmation_code', 'spbctGenerateAndSendConfirmationCode');
diff --git a/inc/spbc-settings.php b/inc/spbc-settings.php
index f00e522b4..308a92515 100644
--- a/inc/spbc-settings.php
+++ b/inc/spbc-settings.php
@@ -387,7 +387,7 @@ function spbc_settings__register()
'title_first' => true,
'title' => __('Send the notification with the new login page URL to the admin email address', 'security-malware-firewall'),
'description' => __('The email will be send to', 'security-malware-firewall')
- . ' (' . get_option('admin_email') . ')',
+ . ' (' . spbc_get_admin_email() . ')',
'long_description' => true,
'parent' => 'login_page_rename__enabled',
'disabled' => !current_user_can('activate_plugins')
@@ -1297,7 +1297,7 @@ function spbc_settings_page()
if (isset($user->ID) && $user->ID > 0) {
$email = $user->user_email;
} else {
- $email = get_option('admin_email');
+ $email = spbc_get_admin_email();
}
// Outputs errors if exists
@@ -1673,7 +1673,7 @@ function spbc_field_key()
} else {
echo ' ';
echo ' ';
- echo '
+ echo '
';
echo ' ' . __('or', 'security-malware-firewall') . ' ';
@@ -1683,12 +1683,20 @@ function spbc_field_key()
. ' '
. '';
echo ' ';
- echo ''
- . sprintf(
- __('Admin e-mail (%s) will be used for registration', 'security-malware-firewall'),
- get_option('admin_email')
- )
- . '
';
+
+ // admin email
+ printf(
+ __(
+ 'Admin e-mail %s %s will be used for registration.',
+ 'security-malware-firewall'
+ ),
+ ''
+// $spbc->data['account_email'] ? $spbc->data['account_email'] :
+ . spbc_get_admin_email()
+ . ' ',
+ spbc_settings__btn_change_account_email_html()
+ );
+
echo '';
echo ' ';
echo '';
@@ -1711,6 +1719,63 @@ function spbc_field_key()
echo '
';
}
+/**
+ * Current site admin e-mail
+ *
+ * @return string Admin e-mail
+ */
+function spbc_get_admin_email()
+{
+ global $spbc;
+
+ if ( ! is_multisite() ) {
+ // Not WPMS
+ $admin_email = get_option('admin_email');
+ } elseif ( is_main_site() || $spbc->network_settings['multisite__work_mode'] != 3) {
+ // WPMS - Main site, common account
+ $admin_email = get_site_option('admin_email');
+ } else {
+ // WPMS - Individual account, individual Access key
+ $admin_email = get_blog_option(get_current_blog_id(), 'admin_email');
+ }
+
+ if ( $spbc->data['account_email'] ) {
+ add_filter('spbc_get_api_key_email', function () {
+ global $spbc;
+ return $spbc->data['account_email'];
+ });
+ }
+
+ return $admin_email;
+}
+
+/**
+ * Show button for changed account email
+ */
+function spbc_settings__btn_change_account_email_html()
+{
+ global $spbc;
+
+ if (
+ ! is_main_site() &&
+ isset($spbc->network_settings['multisite__work_mode']) &&
+ $spbc->network_settings['multisite__work_mode'] == 1) {
+ return '';
+ }
+
+ return '('
+ . __('change email', 'security-malware-firewall') .
+ ' )';
+}
+
function spbc_field_service_utilization()
{
global $spbc;
@@ -1747,7 +1812,7 @@ function spbc_settings_2fa_description_callback()
if (isset($user->ID) && $user->ID > 0) {
$email = $user->user_email;
} else {
- $email = get_option('admin_email');
+ $email = spbc_get_admin_email();
}
echo ''
@@ -3798,7 +3863,7 @@ function spbc_sanitize_settings($settings)
($settings['login_page_rename__send_email_notification'] && current_user_can('activate_plugins'))
) {
$mail = wp_mail(
- get_option('admin_email'),
+ spbc_get_admin_email(),
$spbc->data["wl_brandname"] . esc_html__(': New login URL', 'security-malware-firewall'),
sprintf(
esc_html__('New login URL is: %s', 'security-malware-firewall'),
@@ -3951,7 +4016,7 @@ function spbc_get_key_auto($direct_call = false)
$wpms = SPBC_WPMS && defined('SUBDOMAIN_INSTALL') && ! SUBDOMAIN_INSTALL;
$white_label = false;
$hoster_api_key = $spbc->ms__hoster_api_key;
- $admin_email = get_option('admin_email');
+ $admin_email = spbc_get_admin_email();
/**
* Filters the email to get API key
@@ -4017,6 +4082,69 @@ function spbc_get_key_auto($direct_call = false)
die(json_encode($out));
}
+function spbc_settings__update_account_email($direct_call = false)
+{
+ if ( ! $direct_call) {
+ spbc_check_ajax_referer('spbc_secret_nonce', 'security');
+ }
+
+ global $spbc;
+
+ $account_email = Post::get('accountEmail');
+
+ // not valid email
+ if (!$account_email || !filter_var(Post::get('accountEmail'), FILTER_VALIDATE_EMAIL)) {
+ die(
+ json_encode(
+ array(
+ 'error' => 'Please, enter valid email.'
+ )
+ )
+ );
+ }
+
+ // protection against accidental request from a child site in the shared account mode
+ if (!is_main_site() && isset($spbc->network_settings['multisite__work_mode']) && $spbc->network_settings['multisite__work_mode'] != 3) {
+ die(
+ json_encode(
+ array(
+ 'error' => 'Please, enter valid email.'
+ )
+ )
+ );
+ }
+
+ // email not changed
+ if (isset($spbc->data['account_email']) && $account_email === $spbc->data['account_email']) {
+ die(
+ json_encode(
+ array(
+ 'success' => 'ok'
+ )
+ )
+ );
+ }
+
+ $spbc->data['account_email'] = $account_email;
+ $spbc->save('data');
+
+ // Link GET ACCESS KEY MANUALLY
+ $manually_link = sprintf(
+ 'https://cleantalk.org/register?platform=wordpress&email=%s&website=%s',
+ urlencode(spbc_get_admin_email()),
+ urlencode(get_bloginfo('url'))
+ );
+
+ die(
+ json_encode(
+ array(
+ 'success' => 'ok',
+ 'manuallyLink' => $manually_link
+ )
+ )
+ );
+}
+
function spbc_show_more_security_logs_callback()
{
spbc_check_ajax_referer('spbc_secret_nonce', 'security');
@@ -4416,7 +4544,7 @@ function spbctGenerateAndSendConfirmationCode()
if (isset($user->ID) && $user->ID > 0) {
$email = $user->user_email;
} else {
- $email = get_option('admin_email');
+ $email = spbc_get_admin_email();
}
spbc_check_ajax_referer('spbc_secret_nonce', 'security');
diff --git a/js/spbc-settings.min.js b/js/spbc-settings.min.js
index 3912541c8..00b3c637b 100644
--- a/js/spbc-settings.min.js
+++ b/js/spbc-settings.min.js
@@ -1,2 +1,2 @@
-function spbc_switchTab(e,t){var s=e.classList[1].replace("spbc_tab_nav-",""),c=new URLSearchParams(window.location.search),n=(c.set("spbc_tab",s),window.location.hash),n=window.location.pathname+"?"+c.toString()+n;if(history.replaceState(null,"",n),"backups"!==c.get("spbc_tab")&&jQuery(".spbc_tab_nav-backups").hide(),jQuery(".spbc_tab_nav").removeClass("spbc_tab_nav--active"),jQuery(".spbc_tab").removeClass("spbc_tab--active"),jQuery(e).addClass("spbc_tab_nav--active"),jQuery(".spbc_tab-"+s).addClass("spbc_tab--active"),jQuery(e).data("loaded")){if(t&&t.action)switch(t.action){case"highlight":spbcHighlightElement(t.target,t.times);break;case"click":setTimeout(function(){jQuery("#"+t.additional.target).click()},500)}}else{n={action:"spbc_settings__draw_elements",tab_name:s,security:spbcSettings.ajax_nonce},t={callback:spbc_draw_settings_callback,notJson:!0,additional:t||null};spbc_sendAJAXRequest(n,t,e)}}function spbc_draw_settings_callback(e,t,s,c){jQuery(c).data("loaded",!0),jQuery(".spbc_tab-"+t.tab_name).replaceWith(e);c=jQuery(".spbc_tab-"+t.tab_name);if(c.addClass("spbc_tab--active"),jQuery(document).off("click",".spbc_long_description__show"),jQuery(document).on("click",".spbc_long_description__show",function(){spbc_settings__show_description(self=jQuery(this),self.attr("setting"))}),jQuery(document).off("click",".spbc_long_recommendation__show"),jQuery(document).on("click",".spbc_long_recommendation__show",function(){spbc_settings__show_recommendation(self=jQuery(this),self.attr("setting"))}),s.additional)switch(s.additional.action){case"highlight":spbcHighlightElement(s.additional.target,s.additional.times);break;case"click":setTimeout(function(){jQuery("#"+s.additional.target).click()},500)}jQuery(c).on("click",".spbc_hint-send_"+t.tab_name,function(){jQuery(".spbc_hint-send_"+t.tab_name).hide(),spbc_sendAJAXRequest({action:"spbc_send_"+t.tab_name,tab_name:t.tab_name},{callback:spbc_send_logs_callback})}),window.location.hash&&document.getElementById(window.location.hash.substring(1)).scrollIntoView()}function spbc_send_logs_callback(e,t,s,c){jQuery(".spbc_tab_nav-"+t.tab_name).data("loaded",!1),spbc_switchTab(document.getElementsByClassName("spbc_tab_nav-"+t.tab_name)[0])}function spbcSettingsDependenciesbyId(e,o){"string"==typeof e&&((tmp=[]).push(e),e=tmp),o=void 0===o?null:+o,e.forEach(function(e,t,s){function c(){a.setAttribute("disabled","disabled")}function n(){a.removeAttribute("disabled")}var a=document.getElementById("spbc_setting_"+e);(null!==o?1===o?n:c:null===a.getAttribute("disabled")?c:n)()})}function spbcSettingsDependencies(e,o){e="string"==typeof e?e.split(","):e,o=void 0===o?+event.target.checked:+o,e.forEach(function(e,t,s){document.getElementsByName("spbc_settings["+e+"]").forEach(function(e,t,s){function c(){e.setAttribute("disabled","disabled")}function n(){e.removeAttribute("disabled")}(null!==o?1===o?n:c:null===e.getAttribute("disabled")?c:n)();var a=e.getAttribute("children");null!==a&&spbcSettingsDependencies(a,o&&e.checked)})})}function spbc_settings__show_description(e,t){function n(e){void 0!==e&&(0!=jQuery(e.target).parent(".spbc_long_desc").length&&!jQuery(e.target).hasClass("spbc_long_desc__cancel")||jQuery(e.target).hasClass("spbc_long_description__show"))||(jQuery(".spbc_long_desc").remove(),jQuery(document).off("click",n))}n(),e.after("
");var s=jQuery("#spbc_long_desc__"+t);s.append("
").append("
").css({top:e.position().top+25,left:e.position().left+5}),spbc_sendAJAXRequest({action:"spbc_settings__get_description",setting_id:t},{spinner:s.children("img"),callback:function(e,t,s,c){c.empty().append("
").append("
").append("
"+e.title+" ").append("
"+e.desc+"
"),jQuery(document).on("click",n)}},s)}function spbc_settings__show_recommendation(e,t){function n(e){void 0!==e&&(0!=jQuery(e.target).parent(".spbc_long_desc").length&&!jQuery(e.target).hasClass("spbc_long_desc__cancel")||jQuery(e.target).hasClass("spbc_long_recommendation__show"))||(jQuery(".spbc_long_desc").remove(),jQuery(document).off("click",n))}n(),e.after("
");var s=jQuery("#spbc_long_desc__"+t);s.append("
").append("
").css({top:e.position().top+25,left:e.position().left+5}),spbc_sendAJAXRequest({action:"spbc_settings__get_recommendation",setting_id:t},{spinner:s.children("img"),callback:function(e,t,s,c){c.empty().append("
").append("
").append("
"+e.title+" ").append("
"+e.desc+"
"),jQuery(document).on("click",n)}},s)}function spbcStartShowHide(){jQuery(".spbcShortText").off("mouseover").on("mouseover",function(){jQuery(this).next().show()}).off("mouseout").on("mouseout",function(){jQuery(this).next().hide()}),jQuery(".spbcFullText").off("mouseout").on("mouseout",function(){jQuery(this).hide()}).off("mouseover").on("mouseover",function(){jQuery(this).show()})}function spbctGenerateConfirmationCode(){var e={},t={success:!1};return e.security=spbcSettings.ajax_nonce,e.action="spbc_generate_confirmation_code",jQuery.ajax({type:"POST",async:!1,url:spbcSettings.ajaxurl,data:e,success:function(e){e.success?t.success=!0:t.text=e.data}}),t}function spbctCheckConfirmationCode(e,t,s){var c=e,e={};e.security=spbcSettings.ajax_nonce,e.action="spbc_check_confirmation_code",e.code=jQuery("#confirmation-code input").val(),jQuery.ajax({type:"POST",async:!1,url:spbcSettings.ajaxurl,data:e,success:function(e){e.success?(jQuery("[name *= 2fa__enable]").attr("checked",""),c.checked=!0,jQuery("#spbc_setting_2fa__roles").removeAttr("disabled"),jQuery("#spbc_setting_2fa__roles > option:first").attr("selected","selected"),clearTimeout(t),s.remove(),jQuery("#confirmation-code").dialog("close")):alert("Code verification failed!")}})}function spbc_banner_check(){var n=setInterval(function(){spbc_sendAJAXRequest({action:"spbc_settings__check_renew_banner"},{callback:function(e,t,s,c){e.close_renew_banner&&(jQuery("#spbc_renew_notice").length&&jQuery("#spbc_renew_notice").hide("slow"),jQuery("#spbc_trial_notice").length&&jQuery("#spbc_trial_notice").hide("slow"),clearInterval(n))}})},6e4)}String.prototype.printf=function(){var e,t=this;for(e in arguments)var s=t.substring(0,t.indexOf("%s",0)),c=t.substring(t.indexOf("%s",0)+2,t.length),t=s+arguments[e]+c;return t},jQuery(document).ready(function(){jQuery("#spbc_gdpr_open_modal").on("click",function(){jQuery("#gdpr_dialog").dialog({modal:!0,show:!0,position:{my:"center",at:"center",of:window},width:jQuery("#wpbody").width()/100*70,height:"auto",title:"GDPR compliance",draggable:!1,resizable:!1,closeText:"Close"})}),jQuery(document).on("click","[name*=fa__enable]:not([value=0]),#confirmation-code--resend",function(e){e.preventDefault(),jQuery("#confirmation-code--resend").attr("disabled","disabled").append('
');var t=setTimeout(function(){jQuery("#confirmation-code--resend").removeAttr("disabled"),jQuery("#confirmation-code--resend>.circle").remove()},3e4),s=spbctGenerateConfirmationCode();s.success?(jQuery("#confirmation-code input").val(""),jQuery("#confirmation-code").dialog({modal:!0,title:"Confirmation code",width:310,buttons:{Cancel:function(){jQuery(this).dialog("close"),clearTimeout(t),jQuery("#confirmation-code--resend>.circle").remove()},Ok:function(){spbctCheckConfirmationCode(e.target,t,jQuery("#confirmation-code--resend>.circle"))}},draggable:!1,resizable:!1})):alert(s.text)}),(jQuery("#spbc_renew_notice").length||jQuery("#spbc_trial_notice").length)&&spbc_banner_check(),jQuery("#spbc_button__sync").on("click",function(){spbc_sendAJAXRequest({action:"spbc_sync"},{timeout:25e3,button:document.getElementById("spbc_button__sync"),spinner:jQuery("#spbc_button__sync .spbc_preloader_button"),callback:function(e,t,s,c){jQuery("#spbc_button__sync .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_button__sync .spbc_success").hide(300)},2e3),e.reload&&document.location.reload()}})}),spbcSettings.key_changed&&jQuery("#spbc_button__sync").click(),jQuery(document).on("click","#spbc_setting_get_key_auto",function(){spbc_sendAJAXRequest({action:"spbc_get_key_auto"},{timeout:25e3,button:document.getElementById("spbc_setting_get_key_auto"),spinner:jQuery("#spbc_setting_get_key_auto .spbc_preloader_button"),callback:function(e,t,s,c){jQuery("#spbc_setting_get_key_auto .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_setting_get_key_auto .spbc_success").hide(300)},2e3),e.reload&&document.location.reload(),e.getTemplates&&(spbcModal.loaded=e.getTemplates,spbcModal.open(),document.addEventListener("spbcModalClosed",function(e){document.location.reload()}))}})}),jQuery(document).on("click","#spbc_settings_templates_import_button",function(){jQuery("#spbc-ajax-result").remove();var n,e=jQuery("option:selected",jQuery("#spbc_settings_templates_import"));jQuery("#spbc_settings_templates_import_name").css("border-color","inherit"),void 0===e.data("id")?console.log('Attribute "data-id" not set for the option.'):(e={template_id:e.data("id"),template_name:e.data("name"),settings:e.data("settings")},n=this,spbc_sendAJAXRequest({action:"spbc_settings_templates_import",data:e},{timeout:25e3,button:n,spinner:jQuery("#spbc_settings_templates_import_button .spbc_preloader_button"),callback:function(e,t,s,c){e.success?(jQuery("
"+e.data+"
").insertAfter(jQuery(n)),jQuery("#spbc_settings_templates_import_button .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_settings_templates_import_button .spbc_success").hide(300)},2e3),document.addEventListener("spbcModalClosed",function(e){document.location.reload()}),setTimeout(function(){spbcModal.close()},2e3)):jQuery("
"+e.data+"
").insertAfter(jQuery(n))}}))}),jQuery(document).on("click","#spbc_settings_templates_export_button",function(){jQuery("#spbc-ajax-result").remove();var e=jQuery("option:selected",jQuery("#spbc_settings_templates_export")),t=jQuery("#spbc_settings_templates_export_name");if(t.css("border-color","inherit"),void 0===e.data("id"))console.log('Attribute "data-id" not set for the option.');else{if("new_template"===e.data("id")){var s=t.val();if(""===s)return void t.css("border-color","red");s={template_name:s}}else s={template_id:e.data("id")};var n=this;spbc_sendAJAXRequest({action:"spbc_settings_templates_export",data:s},{timeout:25e3,button:n,spinner:jQuery("#spbc_settings_templates_export_button .spbc_preloader_button"),callback:function(e,t,s,c){e.success?(jQuery("
"+e.data+"
").insertAfter(jQuery(n)),jQuery("#spbc_settings_templates_export_button .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_settings_templates_export_button .spbc_success").hide(300)},2e3),document.addEventListener("spbcModalClosed",function(e){document.location.reload()}),setTimeout(function(){spbcModal.close()},2e3)):jQuery("
"+e.data+"
").insertAfter(jQuery(n))}})}}),jQuery(document).on("click","#spbc_settings_templates_reset_button",function(){var n=this;spbc_sendAJAXRequest({action:"spbc_settings_templates_reset"},{timeout:25e3,button:n,spinner:jQuery("#spbc_settings_templates_reset_button .spbc_preloader_button"),callback:function(e,t,s,c){e.success?(jQuery("
"+e.data+"
").insertAfter(jQuery(n)),jQuery("#spbc_settings_templates_reset_button .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_settings_templates_reset_button .spbc_success").hide(300)},2e3),document.addEventListener("spbcModalClosed",function(e){document.location.reload()}),setTimeout(function(){spbcModal.close()},2e3)):jQuery("
"+e.data+"
").insertAfter(jQuery(n))}})}),jQuery(document).on("change","#spbc_settings_templates_export",function(){"new_template"===jQuery("option:selected",this).data("id")?jQuery(this).parent().parent().find("#spbc_settings_templates_export_name").show():jQuery(this).parent().parent().find("#spbc_settings_templates_export_name").hide()}),jQuery(".spbc_tab_nav-summary").data("loaded",!0),jQuery(".spbc_tabs_nav_wrapper").on("click",".spbc_tab_nav",function(e){spbc_switchTab(e.currentTarget)});var e={target:location.search.match(/spbc_target=(\S*?)(&|$)/)?location.search.match(/spbc_target=(\S*?)(&|$)/)[1]:null,action:location.search.match(/spbc_action=(\S*?)(&|$)/)?location.search.match(/spbc_action=(\S*?)(&|$)/)[1]:null,times:location.search.match(/spbc_times=(\S*?)(&|$)/)?location.search.match(/spbc_times=(\S*?)(&|$)/)[1]:3},t=(e.target=location.search.match(/spbc_highlight=(\S*?)(&|$)/)?location.search.match(/spbc_highlight=(\S*?)(&|$)/)[1]:e.target,e.action=-1!=location.search.search(/spbc_highlight=(\S*?)(&|$)/)?"highlight":e.action,document.getElementsByClassName("spbc_tab_nav-"+(location.search.match(/spbc_tab=(\S*?)(&|$)/)?location.search.match(/spbc_tab=(\S*?)(&|$)/)[1]:""))[0]||null),s=(t||(+spbcSettings.debug?t=document.getElementsByClassName("spbc_tab_nav-debug")[0]:+spbcSettings.wpms&&!+spbcSettings.is_main_site?t=document.getElementsByClassName("spbc_tab_nav-security_log")[0]:+spbcSettings.key_is_ok&&+spbcSettings.secfw_enabled?t=document.getElementsByClassName("spbc_tab_nav-traffic_control")[0]:+spbcSettings.key_is_ok?t=document.getElementsByClassName("spbc_tab_nav-scanner")[0]:(t=document.getElementsByClassName("spbc_tab_nav-settings_general")[0],e={target:"spbc_key",action:"highlight",times:3})),t&&spbc_switchTab(t,e),!1);jQuery(document).on("keyup",function(e){17==(e.which||e.keyCode)&&(s=!1)}),jQuery(document).on("keydown",function(e){var t;116==(e.which||e.keyCode)&&s?(e.preventDefault(),"scanner"!==(t=jQuery(".spbc_tab_nav--active")[0]).classList[1].replace("spbc_tab_nav-","")&&(jQuery(t).data("loaded",!1),spbc_switchTab(t))):17==(e.which||e.keyCode)&&(s=!0)})});
+function spbc_switchTab(e,t){var s=e.classList[1].replace("spbc_tab_nav-",""),c=new URLSearchParams(window.location.search),n=(c.set("spbc_tab",s),window.location.hash),n=window.location.pathname+"?"+c.toString()+n;if(history.replaceState(null,"",n),"backups"!==c.get("spbc_tab")&&jQuery(".spbc_tab_nav-backups").hide(),jQuery(".spbc_tab_nav").removeClass("spbc_tab_nav--active"),jQuery(".spbc_tab").removeClass("spbc_tab--active"),jQuery(e).addClass("spbc_tab_nav--active"),jQuery(".spbc_tab-"+s).addClass("spbc_tab--active"),jQuery(e).data("loaded")){if(t&&t.action)switch(t.action){case"highlight":spbcHighlightElement(t.target,t.times);break;case"click":setTimeout(function(){jQuery("#"+t.additional.target).click()},500)}}else{n={action:"spbc_settings__draw_elements",tab_name:s,security:spbcSettings.ajax_nonce},t={callback:spbc_draw_settings_callback,notJson:!0,additional:t||null};spbc_sendAJAXRequest(n,t,e)}}function spbc_draw_settings_callback(e,t,s,c){jQuery(c).data("loaded",!0),jQuery(".spbc_tab-"+t.tab_name).replaceWith(e);c=jQuery(".spbc_tab-"+t.tab_name);if(c.addClass("spbc_tab--active"),jQuery(document).off("click",".spbc_long_description__show"),jQuery(document).on("click",".spbc_long_description__show",function(){spbc_settings__show_description(self=jQuery(this),self.attr("setting"))}),jQuery(document).off("click",".spbc_long_recommendation__show"),jQuery(document).on("click",".spbc_long_recommendation__show",function(){spbc_settings__show_recommendation(self=jQuery(this),self.attr("setting"))}),s.additional)switch(s.additional.action){case"highlight":spbcHighlightElement(s.additional.target,s.additional.times);break;case"click":setTimeout(function(){jQuery("#"+s.additional.target).click()},500)}jQuery(c).on("click",".spbc_hint-send_"+t.tab_name,function(){jQuery(".spbc_hint-send_"+t.tab_name).hide(),spbc_sendAJAXRequest({action:"spbc_send_"+t.tab_name,tab_name:t.tab_name},{callback:spbc_send_logs_callback})}),window.location.hash&&document.getElementById(window.location.hash.substring(1)).scrollIntoView()}function spbc_send_logs_callback(e,t,s,c){jQuery(".spbc_tab_nav-"+t.tab_name).data("loaded",!1),spbc_switchTab(document.getElementsByClassName("spbc_tab_nav-"+t.tab_name)[0])}function spbcSettingsDependenciesbyId(e,o){"string"==typeof e&&((tmp=[]).push(e),e=tmp),o=void 0===o?null:+o,e.forEach(function(e,t,s){function c(){a.setAttribute("disabled","disabled")}function n(){a.removeAttribute("disabled")}var a=document.getElementById("spbc_setting_"+e);(null!==o?1===o?n:c:null===a.getAttribute("disabled")?c:n)()})}function spbcSettingsDependencies(e,o){e="string"==typeof e?e.split(","):e,o=void 0===o?+event.target.checked:+o,e.forEach(function(e,t,s){document.getElementsByName("spbc_settings["+e+"]").forEach(function(e,t,s){function c(){e.setAttribute("disabled","disabled")}function n(){e.removeAttribute("disabled")}(null!==o?1===o?n:c:null===e.getAttribute("disabled")?c:n)();var a=e.getAttribute("children");null!==a&&spbcSettingsDependencies(a,o&&e.checked)})})}function spbc_settings__show_description(e,t){function n(e){void 0!==e&&(0!=jQuery(e.target).parent(".spbc_long_desc").length&&!jQuery(e.target).hasClass("spbc_long_desc__cancel")||jQuery(e.target).hasClass("spbc_long_description__show"))||(jQuery(".spbc_long_desc").remove(),jQuery(document).off("click",n))}n(),e.after("
");var s=jQuery("#spbc_long_desc__"+t);s.append("
").append("
").css({top:e.position().top+25,left:e.position().left+5}),spbc_sendAJAXRequest({action:"spbc_settings__get_description",setting_id:t},{spinner:s.children("img"),callback:function(e,t,s,c){c.empty().append("
").append("
").append("
"+e.title+" ").append("
"+e.desc+"
"),jQuery(document).on("click",n)}},s)}function spbc_settings__show_recommendation(e,t){function n(e){void 0!==e&&(0!=jQuery(e.target).parent(".spbc_long_desc").length&&!jQuery(e.target).hasClass("spbc_long_desc__cancel")||jQuery(e.target).hasClass("spbc_long_recommendation__show"))||(jQuery(".spbc_long_desc").remove(),jQuery(document).off("click",n))}n(),e.after("
");var s=jQuery("#spbc_long_desc__"+t);s.append("
").append("
").css({top:e.position().top+25,left:e.position().left+5}),spbc_sendAJAXRequest({action:"spbc_settings__get_recommendation",setting_id:t},{spinner:s.children("img"),callback:function(e,t,s,c){c.empty().append("
").append("
").append("
"+e.title+" ").append("
"+e.desc+"
"),jQuery(document).on("click",n)}},s)}function spbcStartShowHide(){jQuery(".spbcShortText").off("mouseover").on("mouseover",function(){jQuery(this).next().show()}).off("mouseout").on("mouseout",function(){jQuery(this).next().hide()}),jQuery(".spbcFullText").off("mouseout").on("mouseout",function(){jQuery(this).hide()}).off("mouseover").on("mouseover",function(){jQuery(this).show()})}function spbctGenerateConfirmationCode(){var e={},t={success:!1};return e.security=spbcSettings.ajax_nonce,e.action="spbc_generate_confirmation_code",jQuery.ajax({type:"POST",async:!1,url:spbcSettings.ajaxurl,data:e,success:function(e){e.success?t.success=!0:t.text=e.data}}),t}function spbctCheckConfirmationCode(e,t,s){var c=e,e={};e.security=spbcSettings.ajax_nonce,e.action="spbc_check_confirmation_code",e.code=jQuery("#confirmation-code input").val(),jQuery.ajax({type:"POST",async:!1,url:spbcSettings.ajaxurl,data:e,success:function(e){e.success?(jQuery("[name *= 2fa__enable]").attr("checked",""),c.checked=!0,jQuery("#spbc_setting_2fa__roles").removeAttr("disabled"),jQuery("#spbc_setting_2fa__roles > option:first").attr("selected","selected"),clearTimeout(t),s.remove(),jQuery("#confirmation-code").dialog("close")):alert("Code verification failed!")}})}function spbc_banner_check(){var n=setInterval(function(){spbc_sendAJAXRequest({action:"spbc_settings__check_renew_banner"},{callback:function(e,t,s,c){e.close_renew_banner&&(jQuery("#spbc_renew_notice").length&&jQuery("#spbc_renew_notice").hide("slow"),jQuery("#spbc_trial_notice").length&&jQuery("#spbc_trial_notice").hide("slow"),clearInterval(n))}})},6e4)}function spbcToggleClass(t,s){for(let e=0;e
');var t=setTimeout(function(){jQuery("#confirmation-code--resend").removeAttr("disabled"),jQuery("#confirmation-code--resend>.circle").remove()},3e4),s=spbctGenerateConfirmationCode();s.success?(jQuery("#confirmation-code input").val(""),jQuery("#confirmation-code").dialog({modal:!0,title:"Confirmation code",width:310,buttons:{Cancel:function(){jQuery(this).dialog("close"),clearTimeout(t),jQuery("#confirmation-code--resend>.circle").remove()},Ok:function(){spbctCheckConfirmationCode(e.target,t,jQuery("#confirmation-code--resend>.circle"))}},draggable:!1,resizable:!1})):alert(s.text)}),(jQuery("#spbc_renew_notice").length||jQuery("#spbc_trial_notice").length)&&spbc_banner_check(),jQuery("#spbc_button__sync").on("click",function(){spbc_sendAJAXRequest({action:"spbc_sync"},{timeout:25e3,button:document.getElementById("spbc_button__sync"),spinner:jQuery("#spbc_button__sync .spbc_preloader_button"),callback:function(e,t,s,c){jQuery("#spbc_button__sync .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_button__sync .spbc_success").hide(300)},2e3),e.reload&&document.location.reload()}})}),spbcSettings.key_changed&&jQuery("#spbc_button__sync").click(),jQuery(document).on("click","#spbc_setting_get_key_auto",function(){spbc_sendAJAXRequest({action:"spbc_get_key_auto"},{timeout:25e3,button:document.getElementById("spbc_setting_get_key_auto"),spinner:jQuery("#spbc_setting_get_key_auto .spbc_preloader_button"),callback:function(e,t,s,c){jQuery("#spbc_setting_get_key_auto .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_setting_get_key_auto .spbc_success").hide(300)},2e3),e.reload&&document.location.reload(),e.getTemplates&&(spbcModal.loaded=e.getTemplates,spbcModal.open(),document.addEventListener("spbcModalClosed",function(e){document.location.reload()}))}})}),jQuery(document).on("click","#spbc_settings_templates_import_button",function(){jQuery("#spbc-ajax-result").remove();var n,e=jQuery("option:selected",jQuery("#spbc_settings_templates_import"));jQuery("#spbc_settings_templates_import_name").css("border-color","inherit"),void 0===e.data("id")?console.log('Attribute "data-id" not set for the option.'):(e={template_id:e.data("id"),template_name:e.data("name"),settings:e.data("settings")},n=this,spbc_sendAJAXRequest({action:"spbc_settings_templates_import",data:e},{timeout:25e3,button:n,spinner:jQuery("#spbc_settings_templates_import_button .spbc_preloader_button"),callback:function(e,t,s,c){e.success?(jQuery(""+e.data+"
").insertAfter(jQuery(n)),jQuery("#spbc_settings_templates_import_button .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_settings_templates_import_button .spbc_success").hide(300)},2e3),document.addEventListener("spbcModalClosed",function(e){document.location.reload()}),setTimeout(function(){spbcModal.close()},2e3)):jQuery(""+e.data+"
").insertAfter(jQuery(n))}}))}),jQuery(document).on("click","#spbc_settings_templates_export_button",function(){jQuery("#spbc-ajax-result").remove();var e=jQuery("option:selected",jQuery("#spbc_settings_templates_export")),t=jQuery("#spbc_settings_templates_export_name");if(t.css("border-color","inherit"),void 0===e.data("id"))console.log('Attribute "data-id" not set for the option.');else{if("new_template"===e.data("id")){var s=t.val();if(""===s)return void t.css("border-color","red");s={template_name:s}}else s={template_id:e.data("id")};var n=this;spbc_sendAJAXRequest({action:"spbc_settings_templates_export",data:s},{timeout:25e3,button:n,spinner:jQuery("#spbc_settings_templates_export_button .spbc_preloader_button"),callback:function(e,t,s,c){e.success?(jQuery(""+e.data+"
").insertAfter(jQuery(n)),jQuery("#spbc_settings_templates_export_button .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_settings_templates_export_button .spbc_success").hide(300)},2e3),document.addEventListener("spbcModalClosed",function(e){document.location.reload()}),setTimeout(function(){spbcModal.close()},2e3)):jQuery(""+e.data+"
").insertAfter(jQuery(n))}})}}),jQuery(document).on("click","#spbc_settings_templates_reset_button",function(){var n=this;spbc_sendAJAXRequest({action:"spbc_settings_templates_reset"},{timeout:25e3,button:n,spinner:jQuery("#spbc_settings_templates_reset_button .spbc_preloader_button"),callback:function(e,t,s,c){e.success?(jQuery(""+e.data+"
").insertAfter(jQuery(n)),jQuery("#spbc_settings_templates_reset_button .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_settings_templates_reset_button .spbc_success").hide(300)},2e3),document.addEventListener("spbcModalClosed",function(e){document.location.reload()}),setTimeout(function(){spbcModal.close()},2e3)):jQuery(""+e.data+"
").insertAfter(jQuery(n))}})}),jQuery(document).on("change","#spbc_settings_templates_export",function(){"new_template"===jQuery("option:selected",this).data("id")?jQuery(this).parent().parent().find("#spbc_settings_templates_export_name").show():jQuery(this).parent().parent().find("#spbc_settings_templates_export_name").hide()}),jQuery(".spbc_tab_nav-summary").data("loaded",!0),jQuery(".spbc_tabs_nav_wrapper").on("click",".spbc_tab_nav",function(e){spbc_switchTab(e.currentTarget)});var e={target:location.search.match(/spbc_target=(\S*?)(&|$)/)?location.search.match(/spbc_target=(\S*?)(&|$)/)[1]:null,action:location.search.match(/spbc_action=(\S*?)(&|$)/)?location.search.match(/spbc_action=(\S*?)(&|$)/)[1]:null,times:location.search.match(/spbc_times=(\S*?)(&|$)/)?location.search.match(/spbc_times=(\S*?)(&|$)/)[1]:3},t=(e.target=location.search.match(/spbc_highlight=(\S*?)(&|$)/)?location.search.match(/spbc_highlight=(\S*?)(&|$)/)[1]:e.target,e.action=-1!=location.search.search(/spbc_highlight=(\S*?)(&|$)/)?"highlight":e.action,document.getElementsByClassName("spbc_tab_nav-"+(location.search.match(/spbc_tab=(\S*?)(&|$)/)?location.search.match(/spbc_tab=(\S*?)(&|$)/)[1]:""))[0]||null),s=(t||(+spbcSettings.debug?t=document.getElementsByClassName("spbc_tab_nav-debug")[0]:+spbcSettings.wpms&&!+spbcSettings.is_main_site?t=document.getElementsByClassName("spbc_tab_nav-security_log")[0]:+spbcSettings.key_is_ok&&+spbcSettings.secfw_enabled?t=document.getElementsByClassName("spbc_tab_nav-traffic_control")[0]:+spbcSettings.key_is_ok?t=document.getElementsByClassName("spbc_tab_nav-scanner")[0]:(t=document.getElementsByClassName("spbc_tab_nav-settings_general")[0],e={target:"spbc_key",action:"highlight",times:3})),t&&spbc_switchTab(t,e),!1);jQuery(document).on("keyup",function(e){17==(e.which||e.keyCode)&&(s=!1)}),jQuery(document).on("keydown",function(e){var t;116==(e.which||e.keyCode)&&s?(e.preventDefault(),"scanner"!==(t=jQuery(".spbc_tab_nav--active")[0]).classList[1].replace("spbc_tab_nav-","")&&(jQuery(t).data("loaded",!1),spbc_switchTab(t))):17==(e.which||e.keyCode)&&(s=!0)}),jQuery(document).on("click","#spbc-change-account-email",function(e){e.preventDefault();var e=jQuery(this),t=jQuery("#spbc-account-email"),s=t.text();spbcToggleClass(e,"active"),e.hasClass("active")?(e.text(e.data("save-text")),t.attr("contenteditable","true"),t.focus(),t.on("keydown",function(e){"Enter"===e.code&&e.preventDefault()}),t.on("input",function(e){"insertParagraph"===e.inputType&&e.preventDefault()})):(spbc_sendAJAXRequest({action:"spbc_update_account_email",accountEmail:s},{timeout:5e3,callback:function(e,t,s,c){void 0!==e.success&&"ok"===e.success&&void 0!==e.manuallyLink&&jQuery("#spbc-key-manually-link").attr("href",e.manuallyLink),void 0!==e.error&&jQuery("#spbc-account-email").css("border-color","red")},errorOutput:function(e){spbcModal.loaded=e,spbcModal.open()}}),t.attr("contenteditable","false"),e.text(e.data("default-text")))})});
//# sourceMappingURL=spbc-settings.min.js.map
diff --git a/js/spbc-settings.min.js.map b/js/spbc-settings.min.js.map
index 3aff6c443..12a53ca5f 100644
--- a/js/spbc-settings.min.js.map
+++ b/js/spbc-settings.min.js.map
@@ -1 +1 @@
-{"version":3,"file":"spbc-settings.min.js","sources":["spbc-settings.js"],"sourcesContent":["// Printf for JS\nString.prototype.printf = function(){\n var formatted = this;\n for( var arg in arguments ) {\n var before_formatted = formatted.substring(0, formatted.indexOf(\"%s\", 0));\n var after_formatted = formatted.substring(formatted.indexOf(\"%s\", 0)+2, formatted.length);\n formatted = before_formatted + arguments[arg] + after_formatted;\n }\n return formatted;\n};\n\n// Switching tabs\nfunction spbc_switchTab(tab, params){\n\n\tvar tab_name = tab.classList[1].replace('spbc_tab_nav-', '');\n\n\t// update url \n\tvar searchParams = new URLSearchParams(window.location.search)\n searchParams.set(\"spbc_tab\", tab_name);\n\tvar hashParam = window.location.hash;\n var newRelativePathQuery = window.location.pathname + '?' + searchParams.toString() + hashParam;\n\n history.replaceState(null, '', newRelativePathQuery);\n\n\t// Hiding a tab 'Backups' if exist\n if(searchParams.get('spbc_tab') !== 'backups') {\n \tjQuery('.spbc_tab_nav-backups').hide();\n }\n\n // update active tab\n\tjQuery('.spbc_tab_nav').removeClass('spbc_tab_nav--active');\n\tjQuery('.spbc_tab').removeClass('spbc_tab--active');\n\tjQuery(tab).addClass('spbc_tab_nav--active');\n\tjQuery('.spbc_tab-'+tab_name).addClass('spbc_tab--active');\n\n\tif(!jQuery(tab).data('loaded')){\n\t\tvar data = {\n\t\t\taction: 'spbc_settings__draw_elements',\n\t\t\ttab_name: tab_name,\n\t\t\tsecurity: spbcSettings.ajax_nonce\n\t\t};\n\t\tvar params = {\n\t\t\tcallback: spbc_draw_settings_callback,\n\t\t\tnotJson: true,\n additional: params || null,\n\t\t};\n\t\tspbc_sendAJAXRequest( data, params, tab );\n\t}else if(params && params.action){\n switch (params.action){\n case 'highlight':\n spbcHighlightElement(params.target, params.times);\n break;\n case 'click':\n setTimeout(function(){\n jQuery('#'+params.additional.target).click();\n }, 500);\n break;\n }\n\t}\n}\n\nfunction spbc_draw_settings_callback(result, data, params, obj){\n\n\tjQuery(obj).data('loaded', true);\n\tjQuery('.spbc_tab-'+data.tab_name).replaceWith(result);\n\tvar tab = jQuery('.spbc_tab-'+data.tab_name);\n\ttab.addClass('spbc_tab--active');\n\n\tjQuery(document).off( 'click', '.spbc_long_description__show');\n\tjQuery(document).on('click', '.spbc_long_description__show', function(){\n\t\tself = jQuery(this);\n\t\tspbc_settings__show_description(self, self.attr('setting'));\n\t});\n\n\tjQuery(document).off( 'click', '.spbc_long_recommendation__show');\n\tjQuery(document).on('click', '.spbc_long_recommendation__show', function(){\n\t\tself = jQuery(this);\n\t\tspbc_settings__show_recommendation(self, self.attr('setting'));\n\t});\n\n\tif(params.additional){\n\t switch (params.additional.action) {\n case 'highlight':\n\t\t spbcHighlightElement(params.additional.target, params.additional.times);\n break;\n case 'click':\n setTimeout(function(){\n\t\t jQuery('#'+params.additional.target).click();\n }, 500);\n break;\n }\n }\n\n\tjQuery(tab).on('click', '.spbc_hint-send_'+data.tab_name, function(){\n\t\t\tjQuery('.spbc_hint-send_'+data.tab_name).hide();\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_send_'+data.tab_name, tab_name: data.tab_name},\n\t\t\t{callback: spbc_send_logs_callback}\n\t\t);\n\t});\n\n\t// scroll to anchor\n\tif (window.location.hash) {\n\t\tdocument.getElementById(window.location.hash.substring(1)).scrollIntoView();\n\t}\n}\n\nfunction spbc_send_logs_callback(result, data, params, obj){\n\tjQuery('.spbc_tab_nav-'+data.tab_name).data('loaded', false);\n\tspbc_switchTab(document.getElementsByClassName('spbc_tab_nav-'+data.tab_name)[0]);\n}\n\n// Settings dependences\nfunction spbcSettingsDependenciesbyId(settingsIDs, enable){\n\n\tif(typeof settingsIDs === 'string'){\n\t\ttmp = [];\n\t\ttmp.push(settingsIDs);\n\t\tsettingsIDs = tmp;\n\t}\n\n\tenable = typeof enable === 'undefined' ? null : +enable;\n\n\tsettingsIDs.forEach(function(settingID, i, arr){\n\n\t\tvar elem = document.getElementById('spbc_setting_'+settingID),\n do_disable = function(){elem.setAttribute('disabled', 'disabled');},\n do_enable = function(){elem.removeAttribute('disabled');};\n\n if(enable !== null) // Set\n enable === 1 ? do_enable() : do_disable();\n else // Switch\n elem.getAttribute('disabled') === null ? do_disable() : do_enable();\n\n\t});\n}\n\n/**\n * Recursive in case children found!\n *\n * Settings dependencies\n *\n */\nfunction spbcSettingsDependencies(settingNames, enable){\n\n\t// Cast settingNames to array\n\tsettingNames = typeof settingNames === 'string' ? settingNames.split(',') : settingNames;\n\tenable = typeof enable === 'undefined' ? +event.target.checked : +enable;\n\n\tsettingNames.forEach(function(settingName, i, arr){\n\n\t\tdocument.getElementsByName('spbc_settings['+settingName+']')\n\t\t\t.forEach(function( elem, i, arr ){\n\n\t\t\t\tvar\tdo_disable = function(){elem.setAttribute('disabled', 'disabled');},\n\t\t\t\t\tdo_enable = function(){elem.removeAttribute('disabled');};\n\t\t\t\tif(enable !== null) // Set\n\t\t\t\t\tenable === 1 ? do_enable() : do_disable();\n\t\t\t\telse // Switch\n\t\t\t\t\telem.getAttribute('disabled') === null ? do_disable() : do_enable();\n\n\t\t\t\tvar children = elem.getAttribute('children');\n\t\t\t\tif( children !== null ){\n\t\t\t\t\tspbcSettingsDependencies(children, enable && elem.checked);\n\t\t\t\t}\n\t\t\t});\n\t});\n}\n\nfunction spbc_settings__show_description(label, setting_id){\n\t\n\tvar remove_desc_func = function(e){\n\t\tif(typeof e === 'undefined' || ((jQuery(e.target).parent('.spbc_long_desc').length == 0 || jQuery(e.target).hasClass('spbc_long_desc__cancel')) && !jQuery(e.target).hasClass('spbc_long_description__show'))){\n\t\t\tjQuery('.spbc_long_desc').remove();\n\t\t\tjQuery(document).off('click', remove_desc_func);\n\t\t}\n\t};\n\t\n\tremove_desc_func();\n\t\n\tlabel.after(\"
\");\n\tvar obj = jQuery('#spbc_long_desc__'+setting_id);\n\tobj.append(\" \")\n\t\t.append(\"
\")\n\t\t.css({\n\t\t\ttop: label.position().top + 25,\n\t\t\tleft: label.position().left + 5\n\t\t});\n\n\t\n\tspbc_sendAJAXRequest(\n\t\t{action: 'spbc_settings__get_description', setting_id: setting_id},\n\t\t{\n\t\t\tspinner: obj.children('img'),\n\t\t\tcallback: function(result, data, params, obj){\n\n\t\t\t\tobj.empty()\n\t\t\t\t\t.append(\"
\")\n\t\t\t\t\t.append(\" \")\n\t\t\t\t\t.append(\"\"+result.title+\" \")\n\t\t\t\t\t.append(\"\"+result.desc+\"
\");\n\n\t\t\t\tjQuery(document).on('click', remove_desc_func);\n\t\t\t}\n\t\t},\n\t\tobj\n\t);\n}\n\nfunction spbc_settings__show_recommendation(label, setting_id){\n\t\n\tvar remove_recommendation_func = function(e){\n\t\tif(typeof e === 'undefined' || ((jQuery(e.target).parent('.spbc_long_desc').length == 0 || jQuery(e.target).hasClass('spbc_long_desc__cancel')) && !jQuery(e.target).hasClass('spbc_long_recommendation__show'))){\n\t\t\tjQuery('.spbc_long_desc').remove();\n\t\t\tjQuery(document).off('click', remove_recommendation_func);\n\t\t}\n\t};\n\t\n\tremove_recommendation_func();\n\t\n\tlabel.after(\"
\");\n\tvar obj = jQuery('#spbc_long_desc__'+setting_id);\n\tobj.append(\" \")\n\t\t.append(\"
\")\n\t\t.css({\n\t\t\ttop: label.position().top + 25,\n\t\t\tleft: label.position().left + 5\n\t\t});\n\n\t\n\tspbc_sendAJAXRequest(\n\t\t{action: 'spbc_settings__get_recommendation', setting_id: setting_id},\n\t\t{\n\t\t\tspinner: obj.children('img'),\n\t\t\tcallback: function(result, data, params, obj){\n\n\t\t\t\tobj.empty()\n\t\t\t\t\t.append(\"
\")\n\t\t\t\t\t.append(\" \")\n\t\t\t\t\t.append(\"\"+result.title+\" \")\n\t\t\t\t\t.append(\"\"+result.desc+\"
\");\n\n\t\t\t\tjQuery(document).on('click', remove_recommendation_func);\n\t\t\t}\n\t\t},\n\t\tobj\n\t);\n}\n\n// Shows/hides full text\nfunction spbcStartShowHide(){\n\tjQuery('.spbcShortText')\n\t\t.off('mouseover' )\n\t\t.on('mouseover', function(){ jQuery(this).next().show(); })\n\t\t.off('mouseout' )\n\t\t.on('mouseout', function(){ jQuery(this).next().hide(); });\n\tjQuery('.spbcFullText')\n\t\t.off('mouseout' )\n\t\t.on('mouseout', function(){ jQuery(this).hide(); })\n\t\t.off('mouseover' )\n\t\t.on('mouseover', function(){ jQuery(this).show(); })\n}\n\n// Generate and save confirmation code\nfunction spbctGenerateConfirmationCode() {\n\n\tvar data = {};\n\tvar res = {};\n\tres.success = false;\n\tdata.security = spbcSettings.ajax_nonce;\n\tdata.action = 'spbc_generate_confirmation_code';\n\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\tasync: false,\n\t\turl: spbcSettings.ajaxurl,\n\t\tdata: data,\n\t\tsuccess: function(result){\n\t\t\tif(result.success) {\n\t\t\t\tres.success = true;\n\t\t\t} else {\n\t\t\t\tres.text = result.data;\n\t\t\t}\n\t\t},\n\t});\n\treturn res;\n}\n// Check confirmation code\nfunction spbctCheckConfirmationCode( radioButton, timeout, timer ) {\n\n\tvar element = radioButton;\n\tvar data = {};\n\tdata.security = spbcSettings.ajax_nonce;\n\tdata.action = 'spbc_check_confirmation_code';\n\tdata.code = jQuery('#confirmation-code input').val();\n\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\tasync: false,\n\t\turl: spbcSettings.ajaxurl,\n\t\tdata: data,\n\t\tsuccess: function(result){\n\t\t\tif(result.success) {\n\t\t\t\tjQuery('[name *= 2fa__enable]').attr(\"checked\", \"\");\n\t\t\t\telement.checked = true;\n\t\t\t\tjQuery('#spbc_setting_2fa__roles').removeAttr('disabled');\n\t\t\t\tjQuery('#spbc_setting_2fa__roles > option:first').attr('selected','selected');\n\t\t\t\tclearTimeout( timeout );\n\t\t\t\ttimer.remove();\n\t\t\t\tjQuery('#confirmation-code').dialog( \"close\" );\n\t\t\t} else {\n\t\t\t\talert('Code verification failed!');\n\t\t\t}\n\t\t},\n\t});\n\n}\n\n/**\n * Checking current account status for renew notice\n */\nfunction spbc_banner_check() {\n\tvar bannerChecker = setInterval( function() {\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_settings__check_renew_banner'},\n\t\t\t{\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tif (result.close_renew_banner) {\n\t\t\t\t\t\tif (jQuery('#spbc_renew_notice').length)\n\t\t\t\t\t\t\tjQuery('#spbc_renew_notice').hide('slow');\n\t\t\t\t\t\tif (jQuery('#spbc_trial_notice').length)\n\t\t\t\t\t\t\tjQuery('#spbc_trial_notice').hide('slow');\n\t\t\t\t\t\tclearInterval(bannerChecker);\n\t\t\t\t\t}\t\t\t\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}, 60000);\n}\n\njQuery(document).ready(function(){\n\t\n\tjQuery('#spbc_gdpr_open_modal').on('click', function(){\n\t\tjQuery('#gdpr_dialog').dialog({\n\t\t\tmodal:true, \n\t\t\tshow: true,\n\t\t\tposition: { my: \"center\", at: \"center\", of: window },\n\t\t\twidth: +(jQuery('#wpbody').width() / 100 * 70), // 70% of #wpbody\n\t\t\theight: 'auto',\n\t\t\ttitle: 'GDPR compliance',\n\t\t\tdraggable: false,\n\t\t\tresizable: false,\n\t\t\tcloseText: \"Close\",\n\t\t});\n\t});\n\n\t// Checking email receiving possibility for activation 2FA\n\tjQuery(document).on('click', '[name*=fa__enable]:not([value=0]),#confirmation-code--resend', function(e){\n\n\t\te.preventDefault();\n\n\t\tjQuery('#confirmation-code--resend').attr('disabled', 'disabled')\n\t\t\t.append('');\n\t\tvar enableResend = setTimeout(function(){\n\t\t\tjQuery('#confirmation-code--resend').removeAttr('disabled');\n\t\t\tjQuery('#confirmation-code--resend>.circle').remove();\n\t\t}, 30000);\n\n\t\tvar res = spbctGenerateConfirmationCode();\n\t\tif( res.success ) {\n\t\t\tjQuery('#confirmation-code input').val('');\n\t\t\tjQuery('#confirmation-code').dialog({\n\t\t\t\tmodal: true,\n\t\t\t\ttitle: 'Confirmation code',\n\t\t\t\twidth: 310,\n\t\t\t\tbuttons: {\n\t\t\t\t\tCancel: function() {\n\t\t\t\t\t\tjQuery( this ).dialog( \"close\" );\n\t\t\t\t\t\tclearTimeout( enableResend );\n\t\t\t\t\t\tjQuery('#confirmation-code--resend>.circle').remove();\n\t\t\t\t\t},\n\t\t\t\t\tOk: function() {\n\t\t\t\t\t\tspbctCheckConfirmationCode(e.target, enableResend, jQuery('#confirmation-code--resend>.circle'));\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tdraggable: false,\n\t\t\t\tresizable: false,\n\t\t\t});\n\t\t} else {\n\t\t\talert(res.text);\n\t\t}\n\t});\n\t\n\tif (jQuery('#spbc_renew_notice').length || jQuery('#spbc_trial_notice').length) {\n\t\tspbc_banner_check();\n\t}\n\n\t// Sync button\n\tjQuery('#spbc_button__sync').on('click', function(){\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_sync'},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: document.getElementById('spbc_button__sync' ),\n\t\t\t\tspinner: jQuery('#spbc_button__sync .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tjQuery('#spbc_button__sync .spbc_success').show(300);\n\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_button__sync .spbc_success').hide(300);}, 2000);\n\t\t\t\t\tif(result.reload)\n\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\tif( spbcSettings.key_changed ){\n\t\tjQuery('#spbc_button__sync').click();\n\t}\n\n\t// Get Key Auto button\n\tjQuery(document).on('click', '#spbc_setting_get_key_auto', function(){\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_get_key_auto'},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: document.getElementById('spbc_setting_get_key_auto' ),\n\t\t\t\tspinner: jQuery('#spbc_setting_get_key_auto .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tjQuery('#spbc_setting_get_key_auto .spbc_success').show(300);\n\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_setting_get_key_auto .spbc_success').hide(300);}, 2000);\n\t\t\t\t\tif(result.reload)\n\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\tif(result.getTemplates) {\n\t\t\t\t\t\tspbcModal.loaded = result.getTemplates;\n\t\t\t\t\t\tspbcModal.open();\n\t\t\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\t// Import settings\n\tjQuery( document ).on('click', '#spbc_settings_templates_import_button', function(){\n\t\tjQuery('#spbc-ajax-result').remove();\n\t\tvar optionSelected = jQuery('option:selected', jQuery('#spbc_settings_templates_import'));\n\t\tvar templateNameInput = jQuery('#spbc_settings_templates_import_name');\n\t\ttemplateNameInput.css('border-color', 'inherit');\n\t\tif( typeof optionSelected.data('id') === \"undefined\" ) {\n\t\t\tconsole.log( 'Attribute \"data-id\" not set for the option.' );\n\t\t\treturn;\n\t\t}\n\t\tvar data = {\n\t\t\t'template_id' : optionSelected.data('id'),\n\t\t\t'template_name' : optionSelected.data('name'),\n\t\t\t'settings' : optionSelected.data('settings')\n\t\t};\n\t\tvar button = this;\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_settings_templates_import', data: data},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: button,\n\t\t\t\tspinner: jQuery('#spbc_settings_templates_import_button .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tif(result.success) {\n\t\t\t\t\t\tjQuery( \"\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t\tjQuery('#spbc_settings_templates_import_button .spbc_success').show(300);\n\t\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_settings_templates_import_button .spbc_success').hide(300);}, 2000);\n\t\t\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsetTimeout(function(){spbcModal.close()}, 2000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery( \"\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\t// Export settings\n\tjQuery( document ).on('click', '#spbc_settings_templates_export_button', function(){\n\t\tjQuery('#spbc-ajax-result').remove();\n\t\tvar optionSelected = jQuery('option:selected', jQuery('#spbc_settings_templates_export'));\n\t\tvar templateNameInput = jQuery('#spbc_settings_templates_export_name');\n\t\ttemplateNameInput.css('border-color', 'inherit');\n\t\tif( typeof optionSelected.data('id') === \"undefined\" ) {\n\t\t\tconsole.log( 'Attribute \"data-id\" not set for the option.' );\n\t\t\treturn;\n\t\t}\n\t\tif( optionSelected.data('id') === 'new_template' ) {\n\t\t\tvar templateName = templateNameInput.val();\n\t\t\tif( templateName === '' ) {\n\t\t\t\ttemplateNameInput.css('border-color', 'red');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\t'template_name' : templateName\n\t\t\t}\n\t\t} else {\n\t\t\tvar data = {\n\t\t\t\t'template_id' : optionSelected.data('id')\n\t\t\t}\n\t\t}\n\t\tvar button = this;\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_settings_templates_export', data: data},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: button,\n\t\t\t\tspinner: jQuery('#spbc_settings_templates_export_button .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tif(result.success) {\n\t\t\t\t\t\tjQuery( \"\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t\tjQuery('#spbc_settings_templates_export_button .spbc_success').show(300);\n\t\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_settings_templates_export_button .spbc_success').hide(300);}, 2000);\n\t\t\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsetTimeout(function(){spbcModal.close()}, 2000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery( \"\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\t// Reset settings\n\tjQuery( document ).on('click', '#spbc_settings_templates_reset_button', function(){\n\t\tvar button = this;\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_settings_templates_reset'},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: button,\n\t\t\t\tspinner: jQuery('#spbc_settings_templates_reset_button .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tif(result.success) {\n\t\t\t\t\t\tjQuery( \"\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t\tjQuery('#spbc_settings_templates_reset_button .spbc_success').show(300);\n\t\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_settings_templates_reset_button .spbc_success').hide(300);}, 2000);\n\t\t\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsetTimeout(function(){spbcModal.close()}, 2000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery( \"\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\tjQuery(document).on('change', '#spbc_settings_templates_export',function(){\n\t\tvar optionSelected = jQuery(\"option:selected\", this);\n\t\tif ( optionSelected.data(\"id\") === 'new_template' ) {\n\t\t\tjQuery(this).parent().parent().find('#spbc_settings_templates_export_name').show();\n\t\t} else {\n\t\t\tjQuery(this).parent().parent().find('#spbc_settings_templates_export_name').hide();\n\t\t}\n\t});\n\n\t//* TAB_CONTROL\n\t\n\t\tjQuery('.spbc_tab_nav-summary').data('loaded', true); // Summary tab loaded by default\n\t\tjQuery('.spbc_tabs_nav_wrapper').on('click', '.spbc_tab_nav', function(event){\n\t\t\tspbc_switchTab(event.currentTarget);\n\t\t});\n\t\t\n\t\t// Get additional params\n var params = {\n target: location.search.match(/spbc_target=(\\S*?)(&|$)/) ? location.search.match(/spbc_target=(\\S*?)(&|$)/)[1] : null,\n action: location.search.match(/spbc_action=(\\S*?)(&|$)/) ? location.search.match(/spbc_action=(\\S*?)(&|$)/)[1] : null,\n times: location.search.match(/spbc_times=(\\S*?)(&|$)/) ? location.search.match(/spbc_times=(\\S*?)(&|$)/)[1] : 3,\n };\n // Legacy support\n params.target = location.search.match(/spbc_highlight=(\\S*?)(&|$)/) ? location.search.match(/spbc_highlight=(\\S*?)(&|$)/)[1] : params.target;\n params.action = location.search.search(/spbc_highlight=(\\S*?)(&|$)/) != -1\n ? 'highlight'\n : params.action;\n\n\t\t// Get open tab form query\n\t\tvar spbc_tab = document.getElementsByClassName('spbc_tab_nav-' + (location.search.match(/spbc_tab=(\\S*?)(&|$)/) ? location.search.match(/spbc_tab=(\\S*?)(&|$)/)[1] : ''))[0] || null;\n\n\t\t// TAB SWITCHING\n\t\t// Switch by URL\n\t\tif(spbc_tab){\n\n\t\t// Switch to DEBUG\n\t\t}else if( +spbcSettings.debug ){\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-debug')[0];\n\t\t// Switch by DEFAULT\n\t\t}else if( +spbcSettings.wpms && !+spbcSettings.is_main_site){\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-security_log')[0];\n\t\t// Switch if Key is OK and SFW is ON\n\t\t}else if( +spbcSettings.key_is_ok && +spbcSettings.secfw_enabled ){\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-traffic_control')[0];\n\t\t// Switch if Key is OK\n\t\t}else if( +spbcSettings.key_is_ok ){\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-scanner')[0];\n\t\t// Switch if KEY IS BAD\n\t\t}else{\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-settings_general')[0];\n\t\t\tparams = {\n\t\t\t target: 'spbc_key',\n action: 'highlight',\n times: 3,\n };\n\t\t}\n\t\t\n\t\t// Switch tab\n\t\tif(spbc_tab) spbc_switchTab(spbc_tab, params);\n\t\t\n\t//*/ TAB_CONROL END\n\t\n\t//* REFRESH TAB IF ctrl+F5\n\tvar ctrlKeyDown = false;\n\n\tjQuery(document).on(\"keyup\", function(e) {\n\t\tif ((e.which || e.keyCode) == 17) ctrlKeyDown = false;\n\t});\n\n\tjQuery(document).on(\"keydown\", function(e) {\n\t\tif (((e.which || e.keyCode) == 116) && ctrlKeyDown) {\n\t\t\te.preventDefault();\n\n\t\t\tvar active_tab = jQuery('.spbc_tab_nav--active')[0];\n\t\t\tvar tab_name = active_tab.classList[1].replace('spbc_tab_nav-', '');\n\n\t\t\tif (tab_name === 'scanner') return; \n\n\t\t\tjQuery(active_tab).data('loaded', false);\n\n\t\t\tspbc_switchTab(active_tab);\n\n\t\t} else if ((e.which || e.keyCode) == 17) {\n\t ctrlKeyDown = true;\n\t }\n\t});\n\t//*/ REFRESH TAB IF ctrl+F5 END\n});"],"names":["spbc_switchTab","tab","params","tab_name","classList","replace","searchParams","URLSearchParams","window","location","search","hashParam","set","hash","newRelativePathQuery","pathname","toString","history","replaceState","get","jQuery","hide","removeClass","addClass","data","action","spbcHighlightElement","target","times","setTimeout","additional","click","security","spbcSettings","ajax_nonce","callback","spbc_draw_settings_callback","notJson","spbc_sendAJAXRequest","result","obj","replaceWith","document","off","on","spbc_settings__show_description","self","this","attr","spbc_settings__show_recommendation","spbc_send_logs_callback","getElementById","substring","scrollIntoView","getElementsByClassName","spbcSettingsDependenciesbyId","settingsIDs","enable","tmp","push","forEach","settingID","i","arr","do_disable","elem","setAttribute","do_enable","removeAttribute","getAttribute","spbcSettingsDependencies","settingNames","split","event","checked","settingName","getElementsByName","children","label","setting_id","remove_desc_func","e","parent","length","hasClass","remove","after","append","css","top","position","left","spinner","empty","title","desc","remove_recommendation_func","spbcStartShowHide","next","show","spbctGenerateConfirmationCode","res","success","ajax","type","async","url","ajaxurl","text","spbctCheckConfirmationCode","radioButton","timeout","timer","element","code","val","removeAttr","clearTimeout","dialog","alert","spbc_banner_check","bannerChecker","setInterval","close_renew_banner","clearInterval","String","prototype","printf","arg","formatted","arguments","before_formatted","indexOf","after_formatted","ready","modal","my","at","of","width","height","draggable","resizable","closeText","preventDefault","enableResend","buttons","Cancel","Ok","button","reload","key_changed","getTemplates","spbcModal","loaded","open","addEventListener","optionSelected","console","log","template_id","template_name","settings","insertAfter","close","templateNameInput","templateName","find","currentTarget","match","spbc_tab","ctrlKeyDown","debug","wpms","is_main_site","key_is_ok","secfw_enabled","which","keyCode","active_tab"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"spbc-settings.min.js","sources":["spbc-settings.js"],"sourcesContent":["// Printf for JS\nString.prototype.printf = function(){\n var formatted = this;\n for( var arg in arguments ) {\n var before_formatted = formatted.substring(0, formatted.indexOf(\"%s\", 0));\n var after_formatted = formatted.substring(formatted.indexOf(\"%s\", 0)+2, formatted.length);\n formatted = before_formatted + arguments[arg] + after_formatted;\n }\n return formatted;\n};\n\n// Switching tabs\nfunction spbc_switchTab(tab, params){\n\n\tvar tab_name = tab.classList[1].replace('spbc_tab_nav-', '');\n\n\t// update url \n\tvar searchParams = new URLSearchParams(window.location.search)\n searchParams.set(\"spbc_tab\", tab_name);\n\tvar hashParam = window.location.hash;\n var newRelativePathQuery = window.location.pathname + '?' + searchParams.toString() + hashParam;\n\n history.replaceState(null, '', newRelativePathQuery);\n\n\t// Hiding a tab 'Backups' if exist\n if(searchParams.get('spbc_tab') !== 'backups') {\n \tjQuery('.spbc_tab_nav-backups').hide();\n }\n\n // update active tab\n\tjQuery('.spbc_tab_nav').removeClass('spbc_tab_nav--active');\n\tjQuery('.spbc_tab').removeClass('spbc_tab--active');\n\tjQuery(tab).addClass('spbc_tab_nav--active');\n\tjQuery('.spbc_tab-'+tab_name).addClass('spbc_tab--active');\n\n\tif(!jQuery(tab).data('loaded')){\n\t\tvar data = {\n\t\t\taction: 'spbc_settings__draw_elements',\n\t\t\ttab_name: tab_name,\n\t\t\tsecurity: spbcSettings.ajax_nonce\n\t\t};\n\t\tvar params = {\n\t\t\tcallback: spbc_draw_settings_callback,\n\t\t\tnotJson: true,\n additional: params || null,\n\t\t};\n\t\tspbc_sendAJAXRequest( data, params, tab );\n\t}else if(params && params.action){\n switch (params.action){\n case 'highlight':\n spbcHighlightElement(params.target, params.times);\n break;\n case 'click':\n setTimeout(function(){\n jQuery('#'+params.additional.target).click();\n }, 500);\n break;\n }\n\t}\n}\n\nfunction spbc_draw_settings_callback(result, data, params, obj){\n\n\tjQuery(obj).data('loaded', true);\n\tjQuery('.spbc_tab-'+data.tab_name).replaceWith(result);\n\tvar tab = jQuery('.spbc_tab-'+data.tab_name);\n\ttab.addClass('spbc_tab--active');\n\n\tjQuery(document).off( 'click', '.spbc_long_description__show');\n\tjQuery(document).on('click', '.spbc_long_description__show', function(){\n\t\tself = jQuery(this);\n\t\tspbc_settings__show_description(self, self.attr('setting'));\n\t});\n\n\tjQuery(document).off( 'click', '.spbc_long_recommendation__show');\n\tjQuery(document).on('click', '.spbc_long_recommendation__show', function(){\n\t\tself = jQuery(this);\n\t\tspbc_settings__show_recommendation(self, self.attr('setting'));\n\t});\n\n\tif(params.additional){\n\t switch (params.additional.action) {\n case 'highlight':\n\t\t spbcHighlightElement(params.additional.target, params.additional.times);\n break;\n case 'click':\n setTimeout(function(){\n\t\t jQuery('#'+params.additional.target).click();\n }, 500);\n break;\n }\n }\n\n\tjQuery(tab).on('click', '.spbc_hint-send_'+data.tab_name, function(){\n\t\t\tjQuery('.spbc_hint-send_'+data.tab_name).hide();\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_send_'+data.tab_name, tab_name: data.tab_name},\n\t\t\t{callback: spbc_send_logs_callback}\n\t\t);\n\t});\n\n\t// scroll to anchor\n\tif (window.location.hash) {\n\t\tdocument.getElementById(window.location.hash.substring(1)).scrollIntoView();\n\t}\n}\n\nfunction spbc_send_logs_callback(result, data, params, obj){\n\tjQuery('.spbc_tab_nav-'+data.tab_name).data('loaded', false);\n\tspbc_switchTab(document.getElementsByClassName('spbc_tab_nav-'+data.tab_name)[0]);\n}\n\n// Settings dependences\nfunction spbcSettingsDependenciesbyId(settingsIDs, enable){\n\n\tif(typeof settingsIDs === 'string'){\n\t\ttmp = [];\n\t\ttmp.push(settingsIDs);\n\t\tsettingsIDs = tmp;\n\t}\n\n\tenable = typeof enable === 'undefined' ? null : +enable;\n\n\tsettingsIDs.forEach(function(settingID, i, arr){\n\n\t\tvar elem = document.getElementById('spbc_setting_'+settingID),\n do_disable = function(){elem.setAttribute('disabled', 'disabled');},\n do_enable = function(){elem.removeAttribute('disabled');};\n\n if(enable !== null) // Set\n enable === 1 ? do_enable() : do_disable();\n else // Switch\n elem.getAttribute('disabled') === null ? do_disable() : do_enable();\n\n\t});\n}\n\n/**\n * Recursive in case children found!\n *\n * Settings dependencies\n *\n */\nfunction spbcSettingsDependencies(settingNames, enable){\n\n\t// Cast settingNames to array\n\tsettingNames = typeof settingNames === 'string' ? settingNames.split(',') : settingNames;\n\tenable = typeof enable === 'undefined' ? +event.target.checked : +enable;\n\n\tsettingNames.forEach(function(settingName, i, arr){\n\n\t\tdocument.getElementsByName('spbc_settings['+settingName+']')\n\t\t\t.forEach(function( elem, i, arr ){\n\n\t\t\t\tvar\tdo_disable = function(){elem.setAttribute('disabled', 'disabled');},\n\t\t\t\t\tdo_enable = function(){elem.removeAttribute('disabled');};\n\t\t\t\tif(enable !== null) // Set\n\t\t\t\t\tenable === 1 ? do_enable() : do_disable();\n\t\t\t\telse // Switch\n\t\t\t\t\telem.getAttribute('disabled') === null ? do_disable() : do_enable();\n\n\t\t\t\tvar children = elem.getAttribute('children');\n\t\t\t\tif( children !== null ){\n\t\t\t\t\tspbcSettingsDependencies(children, enable && elem.checked);\n\t\t\t\t}\n\t\t\t});\n\t});\n}\n\nfunction spbc_settings__show_description(label, setting_id){\n\t\n\tvar remove_desc_func = function(e){\n\t\tif(typeof e === 'undefined' || ((jQuery(e.target).parent('.spbc_long_desc').length == 0 || jQuery(e.target).hasClass('spbc_long_desc__cancel')) && !jQuery(e.target).hasClass('spbc_long_description__show'))){\n\t\t\tjQuery('.spbc_long_desc').remove();\n\t\t\tjQuery(document).off('click', remove_desc_func);\n\t\t}\n\t};\n\t\n\tremove_desc_func();\n\t\n\tlabel.after(\"
\");\n\tvar obj = jQuery('#spbc_long_desc__'+setting_id);\n\tobj.append(\" \")\n\t\t.append(\"
\")\n\t\t.css({\n\t\t\ttop: label.position().top + 25,\n\t\t\tleft: label.position().left + 5\n\t\t});\n\n\t\n\tspbc_sendAJAXRequest(\n\t\t{action: 'spbc_settings__get_description', setting_id: setting_id},\n\t\t{\n\t\t\tspinner: obj.children('img'),\n\t\t\tcallback: function(result, data, params, obj){\n\n\t\t\t\tobj.empty()\n\t\t\t\t\t.append(\"
\")\n\t\t\t\t\t.append(\" \")\n\t\t\t\t\t.append(\"\"+result.title+\" \")\n\t\t\t\t\t.append(\"\"+result.desc+\"
\");\n\n\t\t\t\tjQuery(document).on('click', remove_desc_func);\n\t\t\t}\n\t\t},\n\t\tobj\n\t);\n}\n\nfunction spbc_settings__show_recommendation(label, setting_id){\n\t\n\tvar remove_recommendation_func = function(e){\n\t\tif(typeof e === 'undefined' || ((jQuery(e.target).parent('.spbc_long_desc').length == 0 || jQuery(e.target).hasClass('spbc_long_desc__cancel')) && !jQuery(e.target).hasClass('spbc_long_recommendation__show'))){\n\t\t\tjQuery('.spbc_long_desc').remove();\n\t\t\tjQuery(document).off('click', remove_recommendation_func);\n\t\t}\n\t};\n\t\n\tremove_recommendation_func();\n\t\n\tlabel.after(\"
\");\n\tvar obj = jQuery('#spbc_long_desc__'+setting_id);\n\tobj.append(\" \")\n\t\t.append(\"
\")\n\t\t.css({\n\t\t\ttop: label.position().top + 25,\n\t\t\tleft: label.position().left + 5\n\t\t});\n\n\t\n\tspbc_sendAJAXRequest(\n\t\t{action: 'spbc_settings__get_recommendation', setting_id: setting_id},\n\t\t{\n\t\t\tspinner: obj.children('img'),\n\t\t\tcallback: function(result, data, params, obj){\n\n\t\t\t\tobj.empty()\n\t\t\t\t\t.append(\"
\")\n\t\t\t\t\t.append(\" \")\n\t\t\t\t\t.append(\"\"+result.title+\" \")\n\t\t\t\t\t.append(\"\"+result.desc+\"
\");\n\n\t\t\t\tjQuery(document).on('click', remove_recommendation_func);\n\t\t\t}\n\t\t},\n\t\tobj\n\t);\n}\n\n// Shows/hides full text\nfunction spbcStartShowHide(){\n\tjQuery('.spbcShortText')\n\t\t.off('mouseover' )\n\t\t.on('mouseover', function(){ jQuery(this).next().show(); })\n\t\t.off('mouseout' )\n\t\t.on('mouseout', function(){ jQuery(this).next().hide(); });\n\tjQuery('.spbcFullText')\n\t\t.off('mouseout' )\n\t\t.on('mouseout', function(){ jQuery(this).hide(); })\n\t\t.off('mouseover' )\n\t\t.on('mouseover', function(){ jQuery(this).show(); })\n}\n\n// Generate and save confirmation code\nfunction spbctGenerateConfirmationCode() {\n\n\tvar data = {};\n\tvar res = {};\n\tres.success = false;\n\tdata.security = spbcSettings.ajax_nonce;\n\tdata.action = 'spbc_generate_confirmation_code';\n\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\tasync: false,\n\t\turl: spbcSettings.ajaxurl,\n\t\tdata: data,\n\t\tsuccess: function(result){\n\t\t\tif(result.success) {\n\t\t\t\tres.success = true;\n\t\t\t} else {\n\t\t\t\tres.text = result.data;\n\t\t\t}\n\t\t},\n\t});\n\treturn res;\n}\n// Check confirmation code\nfunction spbctCheckConfirmationCode( radioButton, timeout, timer ) {\n\n\tvar element = radioButton;\n\tvar data = {};\n\tdata.security = spbcSettings.ajax_nonce;\n\tdata.action = 'spbc_check_confirmation_code';\n\tdata.code = jQuery('#confirmation-code input').val();\n\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\tasync: false,\n\t\turl: spbcSettings.ajaxurl,\n\t\tdata: data,\n\t\tsuccess: function(result){\n\t\t\tif(result.success) {\n\t\t\t\tjQuery('[name *= 2fa__enable]').attr(\"checked\", \"\");\n\t\t\t\telement.checked = true;\n\t\t\t\tjQuery('#spbc_setting_2fa__roles').removeAttr('disabled');\n\t\t\t\tjQuery('#spbc_setting_2fa__roles > option:first').attr('selected','selected');\n\t\t\t\tclearTimeout( timeout );\n\t\t\t\ttimer.remove();\n\t\t\t\tjQuery('#confirmation-code').dialog( \"close\" );\n\t\t\t} else {\n\t\t\t\talert('Code verification failed!');\n\t\t\t}\n\t\t},\n\t});\n\n}\n\n/**\n * Checking current account status for renew notice\n */\nfunction spbc_banner_check() {\n\tvar bannerChecker = setInterval( function() {\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_settings__check_renew_banner'},\n\t\t\t{\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tif (result.close_renew_banner) {\n\t\t\t\t\t\tif (jQuery('#spbc_renew_notice').length)\n\t\t\t\t\t\t\tjQuery('#spbc_renew_notice').hide('slow');\n\t\t\t\t\t\tif (jQuery('#spbc_trial_notice').length)\n\t\t\t\t\t\t\tjQuery('#spbc_trial_notice').hide('slow');\n\t\t\t\t\t\tclearInterval(bannerChecker);\n\t\t\t\t\t}\t\t\t\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}, 60000);\n}\n\njQuery(document).ready(function(){\n\t\n\tjQuery('#spbc_gdpr_open_modal').on('click', function(){\n\t\tjQuery('#gdpr_dialog').dialog({\n\t\t\tmodal:true, \n\t\t\tshow: true,\n\t\t\tposition: { my: \"center\", at: \"center\", of: window },\n\t\t\twidth: +(jQuery('#wpbody').width() / 100 * 70), // 70% of #wpbody\n\t\t\theight: 'auto',\n\t\t\ttitle: 'GDPR compliance',\n\t\t\tdraggable: false,\n\t\t\tresizable: false,\n\t\t\tcloseText: \"Close\",\n\t\t});\n\t});\n\n\t// Checking email receiving possibility for activation 2FA\n\tjQuery(document).on('click', '[name*=fa__enable]:not([value=0]),#confirmation-code--resend', function(e){\n\n\t\te.preventDefault();\n\n\t\tjQuery('#confirmation-code--resend').attr('disabled', 'disabled')\n\t\t\t.append('');\n\t\tvar enableResend = setTimeout(function(){\n\t\t\tjQuery('#confirmation-code--resend').removeAttr('disabled');\n\t\t\tjQuery('#confirmation-code--resend>.circle').remove();\n\t\t}, 30000);\n\n\t\tvar res = spbctGenerateConfirmationCode();\n\t\tif( res.success ) {\n\t\t\tjQuery('#confirmation-code input').val('');\n\t\t\tjQuery('#confirmation-code').dialog({\n\t\t\t\tmodal: true,\n\t\t\t\ttitle: 'Confirmation code',\n\t\t\t\twidth: 310,\n\t\t\t\tbuttons: {\n\t\t\t\t\tCancel: function() {\n\t\t\t\t\t\tjQuery( this ).dialog( \"close\" );\n\t\t\t\t\t\tclearTimeout( enableResend );\n\t\t\t\t\t\tjQuery('#confirmation-code--resend>.circle').remove();\n\t\t\t\t\t},\n\t\t\t\t\tOk: function() {\n\t\t\t\t\t\tspbctCheckConfirmationCode(e.target, enableResend, jQuery('#confirmation-code--resend>.circle'));\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tdraggable: false,\n\t\t\t\tresizable: false,\n\t\t\t});\n\t\t} else {\n\t\t\talert(res.text);\n\t\t}\n\t});\n\t\n\tif (jQuery('#spbc_renew_notice').length || jQuery('#spbc_trial_notice').length) {\n\t\tspbc_banner_check();\n\t}\n\n\t// Sync button\n\tjQuery('#spbc_button__sync').on('click', function(){\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_sync'},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: document.getElementById('spbc_button__sync' ),\n\t\t\t\tspinner: jQuery('#spbc_button__sync .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tjQuery('#spbc_button__sync .spbc_success').show(300);\n\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_button__sync .spbc_success').hide(300);}, 2000);\n\t\t\t\t\tif(result.reload)\n\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\tif( spbcSettings.key_changed ){\n\t\tjQuery('#spbc_button__sync').click();\n\t}\n\n\t// Get Key Auto button\n\tjQuery(document).on('click', '#spbc_setting_get_key_auto', function(){\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_get_key_auto'},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: document.getElementById('spbc_setting_get_key_auto' ),\n\t\t\t\tspinner: jQuery('#spbc_setting_get_key_auto .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tjQuery('#spbc_setting_get_key_auto .spbc_success').show(300);\n\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_setting_get_key_auto .spbc_success').hide(300);}, 2000);\n\t\t\t\t\tif(result.reload)\n\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\tif(result.getTemplates) {\n\t\t\t\t\t\tspbcModal.loaded = result.getTemplates;\n\t\t\t\t\t\tspbcModal.open();\n\t\t\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\t// Import settings\n\tjQuery( document ).on('click', '#spbc_settings_templates_import_button', function(){\n\t\tjQuery('#spbc-ajax-result').remove();\n\t\tvar optionSelected = jQuery('option:selected', jQuery('#spbc_settings_templates_import'));\n\t\tvar templateNameInput = jQuery('#spbc_settings_templates_import_name');\n\t\ttemplateNameInput.css('border-color', 'inherit');\n\t\tif( typeof optionSelected.data('id') === \"undefined\" ) {\n\t\t\tconsole.log( 'Attribute \"data-id\" not set for the option.' );\n\t\t\treturn;\n\t\t}\n\t\tvar data = {\n\t\t\t'template_id' : optionSelected.data('id'),\n\t\t\t'template_name' : optionSelected.data('name'),\n\t\t\t'settings' : optionSelected.data('settings')\n\t\t};\n\t\tvar button = this;\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_settings_templates_import', data: data},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: button,\n\t\t\t\tspinner: jQuery('#spbc_settings_templates_import_button .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tif(result.success) {\n\t\t\t\t\t\tjQuery( \"\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t\tjQuery('#spbc_settings_templates_import_button .spbc_success').show(300);\n\t\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_settings_templates_import_button .spbc_success').hide(300);}, 2000);\n\t\t\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsetTimeout(function(){spbcModal.close()}, 2000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery( \"\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\t// Export settings\n\tjQuery( document ).on('click', '#spbc_settings_templates_export_button', function(){\n\t\tjQuery('#spbc-ajax-result').remove();\n\t\tvar optionSelected = jQuery('option:selected', jQuery('#spbc_settings_templates_export'));\n\t\tvar templateNameInput = jQuery('#spbc_settings_templates_export_name');\n\t\ttemplateNameInput.css('border-color', 'inherit');\n\t\tif( typeof optionSelected.data('id') === \"undefined\" ) {\n\t\t\tconsole.log( 'Attribute \"data-id\" not set for the option.' );\n\t\t\treturn;\n\t\t}\n\t\tif( optionSelected.data('id') === 'new_template' ) {\n\t\t\tvar templateName = templateNameInput.val();\n\t\t\tif( templateName === '' ) {\n\t\t\t\ttemplateNameInput.css('border-color', 'red');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\t'template_name' : templateName\n\t\t\t}\n\t\t} else {\n\t\t\tvar data = {\n\t\t\t\t'template_id' : optionSelected.data('id')\n\t\t\t}\n\t\t}\n\t\tvar button = this;\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_settings_templates_export', data: data},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: button,\n\t\t\t\tspinner: jQuery('#spbc_settings_templates_export_button .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tif(result.success) {\n\t\t\t\t\t\tjQuery( \"\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t\tjQuery('#spbc_settings_templates_export_button .spbc_success').show(300);\n\t\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_settings_templates_export_button .spbc_success').hide(300);}, 2000);\n\t\t\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsetTimeout(function(){spbcModal.close()}, 2000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery( \"\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\t// Reset settings\n\tjQuery( document ).on('click', '#spbc_settings_templates_reset_button', function(){\n\t\tvar button = this;\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_settings_templates_reset'},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: button,\n\t\t\t\tspinner: jQuery('#spbc_settings_templates_reset_button .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tif(result.success) {\n\t\t\t\t\t\tjQuery( \"\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t\tjQuery('#spbc_settings_templates_reset_button .spbc_success').show(300);\n\t\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_settings_templates_reset_button .spbc_success').hide(300);}, 2000);\n\t\t\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsetTimeout(function(){spbcModal.close()}, 2000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery( \"\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\tjQuery(document).on('change', '#spbc_settings_templates_export',function(){\n\t\tvar optionSelected = jQuery(\"option:selected\", this);\n\t\tif ( optionSelected.data(\"id\") === 'new_template' ) {\n\t\t\tjQuery(this).parent().parent().find('#spbc_settings_templates_export_name').show();\n\t\t} else {\n\t\t\tjQuery(this).parent().parent().find('#spbc_settings_templates_export_name').hide();\n\t\t}\n\t});\n\n\t//* TAB_CONTROL\n\t\n\t\tjQuery('.spbc_tab_nav-summary').data('loaded', true); // Summary tab loaded by default\n\t\tjQuery('.spbc_tabs_nav_wrapper').on('click', '.spbc_tab_nav', function(event){\n\t\t\tspbc_switchTab(event.currentTarget);\n\t\t});\n\t\t\n\t\t// Get additional params\n var params = {\n target: location.search.match(/spbc_target=(\\S*?)(&|$)/) ? location.search.match(/spbc_target=(\\S*?)(&|$)/)[1] : null,\n action: location.search.match(/spbc_action=(\\S*?)(&|$)/) ? location.search.match(/spbc_action=(\\S*?)(&|$)/)[1] : null,\n times: location.search.match(/spbc_times=(\\S*?)(&|$)/) ? location.search.match(/spbc_times=(\\S*?)(&|$)/)[1] : 3,\n };\n // Legacy support\n params.target = location.search.match(/spbc_highlight=(\\S*?)(&|$)/) ? location.search.match(/spbc_highlight=(\\S*?)(&|$)/)[1] : params.target;\n params.action = location.search.search(/spbc_highlight=(\\S*?)(&|$)/) != -1\n ? 'highlight'\n : params.action;\n\n\t\t// Get open tab form query\n\t\tvar spbc_tab = document.getElementsByClassName('spbc_tab_nav-' + (location.search.match(/spbc_tab=(\\S*?)(&|$)/) ? location.search.match(/spbc_tab=(\\S*?)(&|$)/)[1] : ''))[0] || null;\n\n\t\t// TAB SWITCHING\n\t\t// Switch by URL\n\t\tif(spbc_tab){\n\n\t\t// Switch to DEBUG\n\t\t}else if( +spbcSettings.debug ){\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-debug')[0];\n\t\t// Switch by DEFAULT\n\t\t}else if( +spbcSettings.wpms && !+spbcSettings.is_main_site){\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-security_log')[0];\n\t\t// Switch if Key is OK and SFW is ON\n\t\t}else if( +spbcSettings.key_is_ok && +spbcSettings.secfw_enabled ){\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-traffic_control')[0];\n\t\t// Switch if Key is OK\n\t\t}else if( +spbcSettings.key_is_ok ){\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-scanner')[0];\n\t\t// Switch if KEY IS BAD\n\t\t}else{\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-settings_general')[0];\n\t\t\tparams = {\n\t\t\t target: 'spbc_key',\n action: 'highlight',\n times: 3,\n };\n\t\t}\n\t\t\n\t\t// Switch tab\n\t\tif(spbc_tab) spbc_switchTab(spbc_tab, params);\n\t\t\n\t//*/ TAB_CONROL END\n\t\n\t//* REFRESH TAB IF ctrl+F5\n\tvar ctrlKeyDown = false;\n\n\tjQuery(document).on(\"keyup\", function(e) {\n\t\tif ((e.which || e.keyCode) == 17) ctrlKeyDown = false;\n\t});\n\n\tjQuery(document).on(\"keydown\", function(e) {\n\t\tif (((e.which || e.keyCode) == 116) && ctrlKeyDown) {\n\t\t\te.preventDefault();\n\n\t\t\tvar active_tab = jQuery('.spbc_tab_nav--active')[0];\n\t\t\tvar tab_name = active_tab.classList[1].replace('spbc_tab_nav-', '');\n\n\t\t\tif (tab_name === 'scanner') return; \n\n\t\t\tjQuery(active_tab).data('loaded', false);\n\n\t\t\tspbc_switchTab(active_tab);\n\n\t\t} else if ((e.which || e.keyCode) == 17) {\n\t ctrlKeyDown = true;\n\t }\n\t});\n\t//*/ REFRESH TAB IF ctrl+F5 END\n\n\t/**\n * Change cleantalk account email\n */\n jQuery(document).on('click', '#spbc-change-account-email', function(e) {\n e.preventDefault();\n\n let $this = jQuery(this);\n let accountEmailField = jQuery('#spbc-account-email');\n let accountEmail = accountEmailField.text();\n\n\t\tspbcToggleClass($this, 'active');\n\n if ($this.hasClass('active')) {\n $this.text($this.data('save-text'));\n accountEmailField.attr('contenteditable', 'true');\n\t\t\taccountEmailField.focus();\n accountEmailField.on('keydown', function(e) {\n if (e.code === 'Enter') {\n e.preventDefault();\n }\n });\n accountEmailField.on('input', function(e) {\n if (e.inputType === 'insertParagraph') {\n e.preventDefault();\n }\n });\n } else {\n spbc_sendAJAXRequest(\n {\n action: 'spbc_update_account_email',\n accountEmail: accountEmail,\n },\n {\n timeout: 5000,\n callback: function(result, data, params, obj) {\n if (result.success !== undefined && result.success === 'ok') {\n if (result.manuallyLink !== undefined) {\n jQuery('#spbc-key-manually-link').attr('href', result.manuallyLink);\n }\n }\n\n if (result.error !== undefined) {\n\t\t\t\t\t\t\n jQuery('#spbc-account-email').css('border-color', 'red');\n }\n },\n\t\t\t\t\terrorOutput: function(msg) {\n\t\t\t\t\t\tspbcModal.loaded = msg;\n\t\t\t\t\t\tspbcModal.open();\n\t\t\t\t\t}\n },\n );\n\n accountEmailField.attr('contenteditable', 'false');\n $this.text($this.data('default-text'));\n }\n });\n});\n\n/**\n * @param {string} className\n */\nfunction spbcToggleClass(arr, className) {\n\tfor (let i=0; i false,
'notice_review' => false,
'service_id' => '',
+ 'account_email' => '',
'license_trial' => 0,
'account_name_ob' => '',
'salt' => '',
diff --git a/security-malware-firewall.php b/security-malware-firewall.php
index 3a924f9f3..e635bb4dc 100644
--- a/security-malware-firewall.php
+++ b/security-malware-firewall.php
@@ -2416,7 +2416,7 @@ function spbc_send_daily_report($skip_data_rotation = false)
// Hours
$report_interval = 24 * 7;
- $admin_email = get_option('admin_email');
+ $admin_email = spbc_get_admin_email();
if ( ! $admin_email ) {
error_log(
sprintf(
From 96d3f7579fddd557b75763ce5ea0afc3aa356693 Mon Sep 17 00:00:00 2001
From: svfcode
Date: Thu, 24 Aug 2023 09:24:37 +0300
Subject: [PATCH 073/109] fix phpcs
---
inc/spbc-settings.php | 2 --
1 file changed, 2 deletions(-)
diff --git a/inc/spbc-settings.php b/inc/spbc-settings.php
index 308a92515..8a84ad216 100644
--- a/inc/spbc-settings.php
+++ b/inc/spbc-settings.php
@@ -1691,7 +1691,6 @@ function spbc_field_key()
'security-malware-firewall'
),
''
-// $spbc->data['account_email'] ? $spbc->data['account_email'] :
. spbc_get_admin_email()
. ' ',
spbc_settings__btn_change_account_email_html()
@@ -1721,7 +1720,6 @@ function spbc_field_key()
/**
* Current site admin e-mail
- *
* @return string Admin e-mail
*/
function spbc_get_admin_email()
From 54f1dedaaea0ea1fa1a695f871aa22b2396fe167 Mon Sep 17 00:00:00 2001
From: alexandergull
Date: Wed, 23 Aug 2023 12:12:10 +0500
Subject: [PATCH 074/109] Fix. More superglobals.
---
.../Common/Scanner/HeuristicAnalyser/HeuristicAnalyser.php | 2 ++
1 file changed, 2 insertions(+)
diff --git a/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/HeuristicAnalyser.php b/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/HeuristicAnalyser.php
index cfbc1cfcd..83c6ab9a9 100644
--- a/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/HeuristicAnalyser.php
+++ b/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/HeuristicAnalyser.php
@@ -112,6 +112,8 @@ class HeuristicAnalyser
'$_FILES',
'$_SERVER',
'$GLOBALS',
+ '$_SESSION',
+ '$_REQUEST',
);
/**
From 9c578e861d67d630aa20f56e0d080ee1048b160d Mon Sep 17 00:00:00 2001
From: alexandergull
Date: Wed, 23 Aug 2023 17:19:11 +0500
Subject: [PATCH 075/109] Fix. Some heuristic descriptions added.
---
inc/spbc-settings.php | 22 +++++++++++++++----
.../HeuristicAnalyser/HeuristicAnalyser.php | 2 +-
2 files changed, 19 insertions(+), 5 deletions(-)
diff --git a/inc/spbc-settings.php b/inc/spbc-settings.php
index f00e522b4..77d55d05c 100644
--- a/inc/spbc-settings.php
+++ b/inc/spbc-settings.php
@@ -4271,6 +4271,10 @@ function spbc_settings__get_description()
'title' => 'Suspicious',
'desc' => __('The code looks suspicious. Make sure it is safe.', 'security-malware-firewall')
),
+ 'signatures_MALWARE' => array(
+ 'title' => 'Malware',
+ 'desc' => __('Malware has been found during the signature analysis.', 'security-malware-firewall')
+ ),
'heuristic_assert' => array(
'title' => 'assert()',
'desc' => __('Using the function in production is not recommended', 'security-malware-firewall')
@@ -4319,6 +4323,14 @@ function spbc_settings__get_description()
'title' => 'syslog()',
'desc' => __('Generate a system log message', 'security-malware-firewall')
),
+ 'heuristic_global_variables_in_a_sys_command' => array(
+ 'title' => 'Super global in system command',
+ 'desc' => __('Found direct request to super global variables in the system commands functions.', 'security-malware-firewall')
+ ),
+ 'heuristic_base64_decode' => array(
+ 'title' => 'base64_decode()',
+ 'desc' => __('Suspicious base64_decode usage.', 'security-malware-firewall')
+ ),
'heuristic_the_function_contains_suspicious_arguments' => array(
'title' => '',
'desc' => __('The function contains suspicious arguments', 'security-malware-firewall')
@@ -4334,13 +4346,15 @@ function spbc_settings__get_description()
Disable this option if you have mail connection issues or SMTP service is not configured on this WordPress instance.
Please note that only user that has permissions to activate plugins can disable this option.', 'security-malware-firewall'),
),
+ 'no_description' => array(
+ 'title' => esc_html($setting_id),
+ 'desc' => __('No description provided yet for this item. We are sorry about this. Please, contact support@cleantalk.org for further help.', 'security-malware-firewall'),
+ ),
);
- if (!isset($descriptions[ $setting_id ])) {
- return;
- }
+ $out = isset($descriptions[ $setting_id ]) ? $descriptions[ $setting_id ] : $descriptions['no_description'];
- wp_send_json($descriptions[ $setting_id ]);
+ wp_send_json($out);
}
/**
diff --git a/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/HeuristicAnalyser.php b/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/HeuristicAnalyser.php
index 83c6ab9a9..f83f47645 100644
--- a/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/HeuristicAnalyser.php
+++ b/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/HeuristicAnalyser.php
@@ -431,7 +431,7 @@ public function makeVerdict()
// If common bad structures found, then check containment for superglobals
if ($found_malware_key !== false && $this->checkingSuperGlobalsInTheSystemCommands($this->tokens->current)) {
- $this->verdict['CRITICAL'][$this->tokens->current->line][] = 'Super variables in the system command found';
+ $this->verdict['CRITICAL'][$this->tokens->current->line][] = 'global variables in a sys command';
break;
}
From 5a1757b6d97100312261b0176f6c1ac9a836261c Mon Sep 17 00:00:00 2001
From: alexandergull
Date: Wed, 23 Aug 2023 17:27:19 +0500
Subject: [PATCH 076/109] Docs added.
---
.../Scanner/HeuristicAnalyser/HeuristicAnalyser.php | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/HeuristicAnalyser.php b/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/HeuristicAnalyser.php
index f83f47645..c97fe3df7 100644
--- a/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/HeuristicAnalyser.php
+++ b/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/HeuristicAnalyser.php
@@ -3,6 +3,7 @@
namespace CleantalkSP\Common\Scanner\HeuristicAnalyser;
use CleantalkSP\Common\Scanner\HeuristicAnalyser\DataStructures\ExtendedSplFixedArray;
+use CleantalkSP\Common\Scanner\HeuristicAnalyser\DataStructures\Token;
use CleantalkSP\Common\Scanner\HeuristicAnalyser\Modules\CodeStyle;
use CleantalkSP\Common\Scanner\HeuristicAnalyser\Modules\Entropy;
use CleantalkSP\Common\Scanner\HeuristicAnalyser\Modules\Evaluations;
@@ -604,11 +605,18 @@ private function checkingDecryptedToken(DataStructures\Token $token)
return false;
}
+ /**
+ * Check if super global variables found in the token applications.
+ * @param Token $token
+ * @return bool
+ */
private function checkingSuperGlobalsInTheSystemCommands(DataStructures\Token $token)
{
+ //search for next semicolon to find depth of seek
$next_semicolon = $this->tokens->searchForward($token->key, ';');
$depth = $next_semicolon ? $next_semicolon - $token->key : 0;
foreach ($this->super_globals as $super_global) {
+ //search for superglobs usage
$forward_look_super_globals = $this->tokens->searchForward($token->key, $super_global, $depth);
if (false !== $forward_look_super_globals) {
return true;
From 9639d84485d3ba595a2a1aaf06c603cf7dc757c9 Mon Sep 17 00:00:00 2001
From: alexandergull
Date: Thu, 24 Aug 2023 12:43:44 +0500
Subject: [PATCH 077/109] Fix. Psalm fixes from entropy class of composer
heurisitc package.
---
.../Common/Scanner/HeuristicAnalyser/Modules/Entropy.php | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/Modules/Entropy.php b/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/Modules/Entropy.php
index 8db64f8f8..aa90f723d 100644
--- a/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/Modules/Entropy.php
+++ b/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/Modules/Entropy.php
@@ -30,7 +30,6 @@ public function __construct($path)
*
* @param Variables $variables
* @return void
- * @psalm-suppress UndefinedClass
*/
public function analyse(Variables $variables)
{
@@ -48,7 +47,7 @@ public function analyse(Variables $variables)
$encoder = new Encoder();
$detected_unreadable_variables = [];
foreach ( $variable_names as $variable ) {
- if ( ! isset($variables_obj[$variable][0]) ) {
+ if ( empty($variables_obj[$variable]) ) {
continue;
}
if ( strpos($variable, '_') === 0 || strlen($variable) < 5 ) {
@@ -74,7 +73,6 @@ public function analyse(Variables $variables)
*
* @param $path
* @return bool
- * @psalm-suppress UndefinedClass
*/
private function analyseFile($path)
{
From 40dcd02aa4a3c68a3ee813b2d957562648cf60ca Mon Sep 17 00:00:00 2001
From: Glomberg
Date: Thu, 24 Aug 2023 17:25:11 +0300
Subject: [PATCH 078/109] Fix. Scanner. Background frontend scanner counting
pages fixed.
---
lib/CleantalkSP/SpbctWP/Scanner/Frontend.php | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/lib/CleantalkSP/SpbctWP/Scanner/Frontend.php b/lib/CleantalkSP/SpbctWP/Scanner/Frontend.php
index b11b3b553..a72ddc558 100644
--- a/lib/CleantalkSP/SpbctWP/Scanner/Frontend.php
+++ b/lib/CleantalkSP/SpbctWP/Scanner/Frontend.php
@@ -264,7 +264,9 @@ static function ($response) {
public static function getTotalPages()
{
- return wp_count_posts()->publish + wp_count_posts('page')->publish;
+ global $wpdb;
+ $query = "SELECT COUNT(*) FROM $wpdb->posts WHERE post_type IN ( 'post', 'page' ) AND post_status = 'publish'";
+ return $wpdb->get_var($query);
}
/**
From 42e44267e514858331f018fbdcf80ca5d553bf84 Mon Sep 17 00:00:00 2001
From: svfcode
Date: Thu, 24 Aug 2023 19:30:17 +0300
Subject: [PATCH 079/109] Upd. Security. Improve security logs view.
---
css/spbc-settings.min.css | 2 +-
css/src/spbc-settings.css | 18 ++++++++++++++
inc/spbc-settings.php | 50 +++++++++++++++++++++++++++++++++------
3 files changed, 62 insertions(+), 8 deletions(-)
diff --git a/css/spbc-settings.min.css b/css/spbc-settings.min.css
index 03ba3333b..2384a053f 100644
--- a/css/spbc-settings.min.css
+++ b/css/spbc-settings.min.css
@@ -1 +1 @@
-.circle{border-radius:50%;align-items:center;justify-content:center;position:relative;background-color:#03A9F4;clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 0,50% 0,50% 50%,50% 50%)}.circle-inner{width:100%;height:100%;border-radius:50%;background:#f7f7f7;transform:scale(.7)}.circle--small{width:16px;height:16px}.circle--mid{width:30px;height:30px}.-animation--circle{animation:animation-circle 2s linear forwards}.-animation--30s{animation-duration:30s!important}.-animation--2min{animation-duration:120s!important}@keyframes animation-circle{12.5%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 0,0 0,50% 50%,50% 50%)}25%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 50%,0 50%,50% 50%,50% 50%)}37.5%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 100%,0 100%,50% 50%,50% 50%)}50%{clip-path:polygon(50% 0,100% 0,100% 100%,50% 100%,50% 100%,50% 100%,50% 100%,50% 50%,50% 50%)}62.5%{clip-path:polygon(50% 0,100% 0,100% 100%,100% 100%,100% 100%,100% 100%,100% 100%,50% 50%,50% 50%)}75%{clip-path:polygon(50% 0,100% 0,100% 50%,100% 50%,100% 50%,100% 50%,100% 50%,50% 50%,50% 50%)}87.5%{clip-path:polygon(50% 0,100% 0,100% 0,100% 0,100% 0,100% 0,100% 0,50% 50%,50% 50%)}100%{clip-path:polygon(50% 0,50% 0,50% 0,50% 0,50% 0,50% 0,50% 0,50% 50%,50% 50%)}}#confirmation-code--resend .circle{margin-left:5px;display:inline-block;vertical-align:text-bottom}.spbc---hidden,.spbc_waf_reason{display:none}#spbcTopWarning{margin-bottom:5px}#spbcTopWarning h3{margin:10px 0 5px}#spbcTopWarning h4{margin:10px}#spbcTopWarning h4 span{margin-top:5px}#spbc_gdpr_open_modal:hover{cursor:pointer}.spbc---gray{color:gray}.spbc---red{color:red}.spbc_bold{font-weight:800}.spbc---top{z-index:9999!important}.spbc_waf_reason_title{text-decoration:underline}.spbc_waf_reason_title:hover+.spbc_waf_reason{display:inline}.spbc_warning_counter{margin:0 5px;padding:0 7px;font-size:14px;height:23px;display:inline-block;text-align:center;border-radius:3px}.spbc_sub_setting{margin-left:30px!important}.spbc_sub2_setting{margin-left:60px!important}.spbc_affiliate_shortcode{width:inherit!important;min-width:inherit!important}.spbc_warning_counter--black{color:#fff;background-color:#000}.spbc_warning_counter--red{color:#000;background-color:red}.spbc_warning_counter--orange{color:#000;background-color:orange}.spbc_warning_counter--green{color:#000;background-color:green}.spbc_highlighted{outline-offset:5px;outline-color:red;outline-width:3px!important;outline-style:solid!important}.spbc_status_icon{vertical-align:text-bottom;margin:0 5px}.spbc_progressbar_counter{position:absolute;height:22px;width:100%;left:0;top:0;text-align:center}.spbc_progressbar_counter span{vertical-align:sub;line-height:22px;font-weight:600;font-size:18px}.spbc_preloader,.spbc_preloader_button{margin-left:5px;vertical-align:text-top;display:none}.spbc_compare_file_row_wrapper,.spbc_view_file_row,.spbc_view_file_row_wrapper{line-height:19px}.ui-progressbar-value{background-image:url(../images/pbar-ani.gif)!important}.spbc_preloader{width:20px}.spbc_preloader_button{height:15px}.spbc_spinner_big{display:block;margin:40px auto}.spbc_scan_result_row td{text-align:center}.spbc_scan_result_row td:nth-child(1){text-align:left}.spbc_scan_result_row td:nth-child(2){text-align:right}.spbc_scan_result_row td:last-child button{margin-left:3px}.spbc_view_file_row_wrapper:nth-child(odd){background:#ccc}.spbc_view_file_row_wrapper:nth-child(even){background:#ddd}.spbc_view_file_row_num{display:inline-block;width:30px;margin:0 0 0 5px;border-right:1px solid #000}.spbc_view_file_row{display:inline;margin:0 0 0 5px;font-size:1em}.spbc_compare_file_headings{text-align:center;width:100%;display:inline-block;font-weight:700}.spbc_compare_file_row_wrapper:nth-child(odd){background:#ccc}.spbc_compare_file_row_wrapper:nth-child(even){background:#ddd}.spbc_compare_file_row_num{display:inline-block;width:20px;box-shadow:-2px 0 0 0 #000,2px 0 0 0 #000;padding:0 1%}.spbc_compare_file_row{display:inline-block;width:45%;margin:0;padding:0 1%}table.spbc_table_general{width:100%;border:0;border-spacing:0;border-collapse:collapse}table.spbc_table_general td,table.spbc_table_general th{position:relative;border:1px solid #666;padding:2px 10px}.spbcShortText{display:inline-block;width:100%}.spbcFullText{display:none;position:absolute;top:0;background:rgba(150,150,150,.9);color:#fff;padding:7px;border:1px solid #333;border-radius:5px;z-index:20}div.pagination{margin:10px}ul.pagination{display:inline-block;margin:0}li.pagination{display:inline-block;margin-left:10px}span.current_page{font-size:1.3em;font-weight:600}.spbc_new{color:red;position:relative;font-size:10px;vertical-align:bottom;top:-8px}.spbc_wrapper_settings{margin:10px 0 0}.spbc_tabs_nav_wrapper{display:block;border-bottom:1px solid #ccc}.spbc_tab_nav{display:inline-block;margin:10px 0 0 .5em;padding:5px 10px;height:24px;border:1px solid #ccc;border-bottom:none;font-size:14px;line-height:24px;background:#e5e5e5;color:#555;cursor:pointer}.spbc_tab_nav:hover{background:#fff}.spbc_tab_nav--active{margin-bottom:-1px;border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}.spbc_tab_nav--active:hover{background:#f1f1f1}.spbc_tab{display:none;margin:15px 0}.spbc_tab--active{display:block}.spbc_tab_fields_group{position:relative;min-width:255px;margin:10px auto;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fdfdfd}.spbc_group_header{margin:0 0 10px;padding:10px;border-bottom:1px solid #eee}.spbc_group_header>h3{margin:0}.spbc_group_header>h3>a{color:#1d2327;text-decoration:none}.spbc_wrapper_field{margin:0 15px 15px}.spbc_long_description__show:hover{color:#aaa;cursor:pointer}.spbc_settings_description{font-size:9pt;color:#888}.spbc_settings_description select{display:inline;position:relative;transform:scale(.7);left:-50px}.spbc_tab-settings_general input[type=text]{min-width:255px;width:100%}.spbc_short_text_field input{min-width:70px!important;width:70px!important}.spbc_middle_text_field input{min-width:200px!important;width:200px!important}.spbc_long_text_field input[type=text]{min-width:200px;width:500px}.spbc_wrapper_field label{vertical-align:baseline}.spbc_wrapper_field h4{margin:10px 15px 5px}.spbc_wrapper_footer{margin:15px}#spbc_wrapper_error{margin:0;padding:5px}#spbc_wrapper_error h3,#spbc_wrapper_error h4{margin:5px}#showHideLink{display:inline-block;margin-top:5px;color:#777}.spbc__wrapper--center{margin:10px 0;text-align:center}.spbc__show_more_logs{display:none}.spbc_settings_banner{display:inline-block;margin:1em 0;vertical-align:top;text-align:center}#spbc_translate_plugin{margin-left:10px}.spbc_rate_block{border:1px dashed #666;width:400px;padding:.2em}#spbc_translate_plugin .spbc_button_rate{margin-bottom:10px}.spbc_button_rate{display:inline-block;text-align:center;vertical-align:middle;padding:12px 24px;border:1px solid #216298;border-radius:8px;background:#35a0f7;background:-webkit-gradient(linear,left top,left bottom,from(#35a0f7),to(#216298));background:-moz-linear-gradient(top,#35a0f7,#216298);background:linear-gradient(to bottom,#35a0f7,#216298);text-shadow:#153e5f 1px 1px 1px;font:normal normal bold 16px verdana;color:#fff;text-decoration:none}.spbc_button_rate:focus,.spbc_button_rate:hover{border:1px solid #297bbe;background:#40c0ff;background:-webkit-gradient(linear,left top,left bottom,from(#40c0ff),to(#2876b6));background:-moz-linear-gradient(top,#40c0ff,#2876b6);background:linear-gradient(to bottom,#40c0ff,#2876b6);color:#fff;text-decoration:none}.spbc_button_rate:active{background:#216298;background:-webkit-gradient(linear,left top,left bottom,from(#216298),to(#216298));background:-moz-linear-gradient(top,#216298,#216298);background:linear-gradient(to bottom,#216298,#216298)}#spbc_rate_plugin .spbc_button_rate:before{content:"\0000a0";display:inline-block;height:24px;width:24px;line-height:24px;margin:0 4px -6px -4px;position:relative;top:0;left:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACjElEQVRIie1UTWsTURQ9dzKpofQLobQFlxqENF1JG0GE6sKuRLDtTKaBkJUIRdwpba2g9ge48gMEUUyTbrUutFmk1X6Q7kxDgi1YUSmlpsGYiTXtuy7GCYnaSRu3PczAfe/dd8695z0ecIAKsFVK0DQNLpcL8Xi8KgHZalFRNWe7uyMs2+RtkBQIjQerU/k3uVceHhmdyed/8NbWFg8OXrlXDY+020JdXf2NQMB/yuE4hHw+j5yur1df7h9QvQMXpiKRHSEECyF4cvJlQVG149VwlZ1BX58fsn1H7e29+OhMd7cEAMyM6PTMNAgfFUWrJSIAQgCAYAKIAECABACABGFt7fPPaDRqjItVqyrqG5vGAn7/kMfTBYMIyGQyeD0VMZKYweYGM2ZjpnR+eWVl8V08fnYiNP6t1Jbzc3PzbNryP38stsiKqp0uWuTz+eBqd9/s6uo02vpdPTOXxZuZDB7cfwgQGa0TIEmS7nA4PhhDkgBgdXV1FkTzRYHCtjjS4XZ3mGQmSsdEhKbGRqhqPwRz0ZOlRKImGBy/FA4F31gd8tG2tjaZmf+VUybS2tpaNpfeTMsADu+2xxRw2O12ENFftpTG6XQat26PQZIIzEA2m/1SKBSGGXhhWZmiaifezs7yfhGdnmFF1TqtuM0OksvvlzMnPZ4mq+RkMoVsNlu83ImlxDqATxUFwqHg94aGhsc9PeeuNjc372pRMpnExsZX5HI5xBZjd3aEuBsOBTcs7TGherXaa9eHIqlUioUQltYIIXhkZPT5XnjL7qXi1Wpkm6w5nccGWlpanLJNlkGQyEw1Pui6rs8tLFx+9vTJq30JlKK/3ycRCQkSFZ8Dcwszi4lwUOylgwNUxC8cBKAS7hIWzwAAAABJRU5ErkJggg==) left center no-repeat;background-size:100% 100%}.spbc_rate_block_stars{margin:1em 0}.star-icon{color:#ddd;font-size:18px;position:relative}.star-icon.full:before{color:#FDE16D;content:'\2605';position:absolute;left:0;text-shadow:0 0 2px rgba(0,0,0,.7)}.spbc_hint{color:#666}.spbc_hint_warning{font-size:17px;font-weight:600;text-align:center;color:#eb8f00}.spbc_hint--link{color:#aaa;text-decoration:underline;cursor:pointer}.spbc_auto_link,.spbc_manual_link{text-decoration:none;font-size:13px;line-height:26px;height:28px;padding:0 10px 1px;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;margin:0;display:inline-block;cursor:pointer}.spbc_hint--top_right{position:relative;float:right;top:0;right:10px}.spbc_auto_link{background:#ccc;border-color:#999;-webkit-box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);color:#000;-webkit-border-radius:2px;border-radius:2px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.spbc_auto_link:hover{color:#fff}.spbc_manual_link{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;border-radius:3px;-webkit-border-radius:3px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.spbc_long_desc,.spbc_popup_tip--wrapper{min-height:80px;max-width:500px;padding:10px;z-index:10}.spbc_manual_link:hover{color:#000}.spbc_dismiss{width:20px;height:20px;border-radius:5px}.spbc-links:visited{color:#fff}.spbc_long_desc{position:absolute;background:#5a5a5a;min-width:80px;color:#fff}.spbc_long_desc p{color:#fff!important}i.animate-spin{-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;display:inline-block;font-size:25px;line-height:20px;color:rgba(120,200,230,1);margin:25px}@keyframes spin{to{transform:rotate(359deg)}}.spbc_long_desc__angle,.spbc_long_desc__angle_top_left{width:10px;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);position:absolute;height:10px;background:#5a5a5a}.spbc_long_desc__cancel{position:absolute;top:5px;right:5px;color:rgba(255,255,255,.5)}.spbc_long_desc__cancel:hover{color:#fff}.spbc_long_desc__link,.spbc_long_desc__title{color:rgba(120,200,230,1)}.spbc_long_desc__angle{top:5px;left:-17px;transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_long_desc__angle_top_left{top:-10px;left:-9px;transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_long_desc__title{margin:0}.spbc_long_desc__link:hover{color:rgba(140,220,250,1)}.spbc_long_desc h4{color:#50a0be;margin:10px 0 3px}.spbc_long_desc span{margin:0 0 0 10px;display:inline-block}.spbc_long_desc img{width:300px}.spbc_popup_tip--icon---show:hover{color:#aaa;cursor:pointer}.spbc_popup_tip--wrapper{position:absolute;background:#5a5a5a;min-width:80px;color:#fff}.spbc_popup_tip--icon---cancel{position:absolute;top:0;right:5px;color:rgba(255,255,255,.5)}.spbc_popup_tip--icon---cancel:hover{color:#fff}.spbc_popup_tip--angle{position:absolute;top:5px;left:-17px;width:10px;height:10px;background:#5a5a5a;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_popup_tip--title{color:rgba(120,200,230,1);margin:0}.spbc_popup_tip--text{color:#fff!important}tr:hover .spbc_hint--wrapper{display:none}.spbc_log-wrapper{padding:5px;border:1px solid #000;width:98%;min-height:300px;height:300px;border-bottom:5px dashed #5a5a5a}.spbc_log-wrapper .panel-body{height:100%;overflow-y:auto}.spbc_log-line{margin:0;padding:0 5px}.spbc_log-line:nth-child(odd){background:#d3d3d3}.spbc_log-block_header{margin:10px 0}.spbc_log-input--checkbox,.spbc_log-label--checkbox{width:auto}button.ct_support_link{border:none;background:0 0;color:#666;text-decoration:underline;cursor:pointer}#spbc-modal-content{text-align:center}#spbc-modal-content>*{display:block;width:100%}.spbc-popup-msg{width:98%;height:15px;text-align:center;padding:4px;border-radius:7px;position:relative;top:0;right:0;bottom:0;left:0;margin:auto}.popup--green{background:#DFD;color:#060;border:1px solid #060}.popup--red{background:#FDD;color:#600;border:1px solid #600}#spbcscan-results-log-module{min-height:300px;height:300px;border-bottom:5px dashed #5a5a5a}#spbcscan-results-log-module .panel-body{height:100%;overflow-y:auto}#spbcscan-scanner-caption h4{margin:10px 0;font-size:14px}#spbcscan-results-log-caption p{font-size:13px;margin:0 0 6px}#spbcscan-scanner-caption{display:flex;flex-wrap:wrap;flex-direction:row-reverse}#spbcscan-scanner-caption .column:first-child{width:75%;flex:0 0 75%}#spbcscan-scanner-caption .column:last-child{width:25%;flex:0 0 25%;padding-right:10px;box-sizing:border-box}.spbc-scan-log-title{color:#1d2327;font-size:1.3em;margin:0 0 15px!important;font-weight:600}.spbc--status{position:relative;padding-left:26px}.spbc--marker-green::before,.spbc--marker-red::before,.spbc--marker-yellow::before{content:'';position:absolute;width:10px;height:10px;border-radius:50%;left:10px;top:4px}.spbc--marker-green::before{background:#1dda23}.spbc--marker-yellow::before{background:#ffb000}.spbc--marker-red::before{background:#d63638}
\ No newline at end of file
+.circle{border-radius:50%;align-items:center;justify-content:center;position:relative;background-color:#03A9F4;clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 0,50% 0,50% 50%,50% 50%)}.circle-inner{width:100%;height:100%;border-radius:50%;background:#f7f7f7;transform:scale(.7)}.circle--small{width:16px;height:16px}.circle--mid{width:30px;height:30px}.-animation--circle{animation:animation-circle 2s linear forwards}.-animation--30s{animation-duration:30s!important}.-animation--2min{animation-duration:120s!important}@keyframes animation-circle{12.5%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 0,0 0,50% 50%,50% 50%)}25%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 50%,0 50%,50% 50%,50% 50%)}37.5%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 100%,0 100%,50% 50%,50% 50%)}50%{clip-path:polygon(50% 0,100% 0,100% 100%,50% 100%,50% 100%,50% 100%,50% 100%,50% 50%,50% 50%)}62.5%{clip-path:polygon(50% 0,100% 0,100% 100%,100% 100%,100% 100%,100% 100%,100% 100%,50% 50%,50% 50%)}75%{clip-path:polygon(50% 0,100% 0,100% 50%,100% 50%,100% 50%,100% 50%,100% 50%,50% 50%,50% 50%)}87.5%{clip-path:polygon(50% 0,100% 0,100% 0,100% 0,100% 0,100% 0,100% 0,50% 50%,50% 50%)}100%{clip-path:polygon(50% 0,50% 0,50% 0,50% 0,50% 0,50% 0,50% 0,50% 50%,50% 50%)}}#confirmation-code--resend .circle{margin-left:5px;display:inline-block;vertical-align:text-bottom}.spbc---hidden,.spbc_waf_reason{display:none}#spbcTopWarning{margin-bottom:5px}#spbcTopWarning h3{margin:10px 0 5px}#spbcTopWarning h4{margin:10px}#spbcTopWarning h4 span{margin-top:5px}#spbc_gdpr_open_modal:hover{cursor:pointer}.spbc---gray{color:gray}.spbc---red{color:red}.spbc_bold{font-weight:800}.spbc---top{z-index:9999!important}.spbc_waf_reason_title{text-decoration:underline}.spbc_waf_reason_title:hover+.spbc_waf_reason{display:inline}.spbc_warning_counter{margin:0 5px;padding:0 7px;font-size:14px;height:23px;display:inline-block;text-align:center;border-radius:3px}.spbc_sub_setting{margin-left:30px!important}.spbc_sub2_setting{margin-left:60px!important}.spbc_affiliate_shortcode{width:inherit!important;min-width:inherit!important}.spbc_warning_counter--black{color:#fff;background-color:#000}.spbc_warning_counter--red{color:#000;background-color:red}.spbc_warning_counter--orange{color:#000;background-color:orange}.spbc_warning_counter--green{color:#000;background-color:green}.spbc_highlighted{outline-offset:5px;outline-color:red;outline-width:3px!important;outline-style:solid!important}.spbc_status_icon{vertical-align:text-bottom;margin:0 5px}.spbc_progressbar_counter{position:absolute;height:22px;width:100%;left:0;top:0;text-align:center}.spbc_progressbar_counter span{vertical-align:sub;line-height:22px;font-weight:600;font-size:18px}.spbc_preloader,.spbc_preloader_button{margin-left:5px;vertical-align:text-top;display:none}.spbc_compare_file_row_wrapper,.spbc_view_file_row,.spbc_view_file_row_wrapper{line-height:19px}.ui-progressbar-value{background-image:url(../images/pbar-ani.gif)!important}.spbc_preloader{width:20px}.spbc_preloader_button{height:15px}.spbc_spinner_big{display:block;margin:40px auto}.spbc_scan_result_row td{text-align:center}.spbc_scan_result_row td:nth-child(1){text-align:left}.spbc_scan_result_row td:nth-child(2){text-align:right}.spbc_scan_result_row td:last-child button{margin-left:3px}.spbc_view_file_row_wrapper:nth-child(odd){background:#ccc}.spbc_view_file_row_wrapper:nth-child(even){background:#ddd}.spbc_view_file_row_num{display:inline-block;width:30px;margin:0 0 0 5px;border-right:1px solid #000}.spbc_view_file_row{display:inline;margin:0 0 0 5px;font-size:1em}.spbc_compare_file_headings{text-align:center;width:100%;display:inline-block;font-weight:700}.spbc_compare_file_row_wrapper:nth-child(odd){background:#ccc}.spbc_compare_file_row_wrapper:nth-child(even){background:#ddd}.spbc_compare_file_row_num{display:inline-block;width:20px;box-shadow:-2px 0 0 0 #000,2px 0 0 0 #000;padding:0 1%}.spbc_compare_file_row{display:inline-block;width:45%;margin:0;padding:0 1%}table.spbc_table_general{width:100%;border:0;border-spacing:0;border-collapse:collapse}table.spbc_table_general td,table.spbc_table_general th{position:relative;border:1px solid #666;padding:2px 10px}.spbcShortText{display:inline-block;width:100%}.spbcFullText,.spbcFullText-right{display:none;position:absolute;top:0;background:rgba(150,150,150,.9);padding:7px;z-index:20;color:#fff}.spbcFullText{border:1px solid #333;border-radius:5px}.spbcFullText-right{right:0;border:1px solid #333;border-radius:5px}.spbcFullText a{color:#fff}.spbcFullText a:hover{color:#ddd}div.pagination{margin:10px}ul.pagination{display:inline-block;margin:0}li.pagination{display:inline-block;margin-left:10px}span.current_page{font-size:1.3em;font-weight:600}.spbc_new{color:red;position:relative;font-size:10px;vertical-align:bottom;top:-8px}.spbc_wrapper_settings{margin:10px 0 0}.spbc_tabs_nav_wrapper{display:block;border-bottom:1px solid #ccc}.spbc_tab_nav{display:inline-block;margin:10px 0 0 .5em;padding:5px 10px;height:24px;border:1px solid #ccc;border-bottom:none;font-size:14px;line-height:24px;background:#e5e5e5;color:#555;cursor:pointer}.spbc_tab_nav:hover{background:#fff}.spbc_tab_nav--active{margin-bottom:-1px;border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}.spbc_tab_nav--active:hover{background:#f1f1f1}.spbc_tab{display:none;margin:15px 0}.spbc_tab--active{display:block}.spbc_tab_fields_group{position:relative;min-width:255px;margin:10px auto;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fdfdfd}.spbc_group_header{margin:0 0 10px;padding:10px;border-bottom:1px solid #eee}.spbc_group_header>h3{margin:0}.spbc_group_header>h3>a{color:#1d2327;text-decoration:none}.spbc_wrapper_field{margin:0 15px 15px}.spbc_long_description__show:hover{color:#aaa;cursor:pointer}.spbc_settings_description{font-size:9pt;color:#888}.spbc_settings_description select{display:inline;position:relative;transform:scale(.7);left:-50px}.spbc_tab-settings_general input[type=text]{min-width:255px;width:100%}.spbc_short_text_field input{min-width:70px!important;width:70px!important}.spbc_middle_text_field input{min-width:200px!important;width:200px!important}.spbc_long_text_field input[type=text]{min-width:200px;width:500px}.spbc_wrapper_field label{vertical-align:baseline}.spbc_wrapper_field h4{margin:10px 15px 5px}.spbc_wrapper_footer{margin:15px}#spbc_wrapper_error{margin:0;padding:5px}#spbc_wrapper_error h3,#spbc_wrapper_error h4{margin:5px}#showHideLink{display:inline-block;margin-top:5px;color:#777}.spbc__wrapper--center{margin:10px 0;text-align:center}.spbc__show_more_logs{display:none}.spbc_settings_banner{display:inline-block;margin:1em 0;vertical-align:top;text-align:center}#spbc_translate_plugin{margin-left:10px}.spbc_rate_block{border:1px dashed #666;width:400px;padding:.2em}#spbc_translate_plugin .spbc_button_rate{margin-bottom:10px}.spbc_button_rate{display:inline-block;text-align:center;vertical-align:middle;padding:12px 24px;border:1px solid #216298;border-radius:8px;background:#35a0f7;background:-webkit-gradient(linear,left top,left bottom,from(#35a0f7),to(#216298));background:-moz-linear-gradient(top,#35a0f7,#216298);background:linear-gradient(to bottom,#35a0f7,#216298);text-shadow:#153e5f 1px 1px 1px;font:normal normal bold 16px verdana;color:#fff;text-decoration:none}.spbc_button_rate:focus,.spbc_button_rate:hover{border:1px solid #297bbe;background:#40c0ff;background:-webkit-gradient(linear,left top,left bottom,from(#40c0ff),to(#2876b6));background:-moz-linear-gradient(top,#40c0ff,#2876b6);background:linear-gradient(to bottom,#40c0ff,#2876b6);color:#fff;text-decoration:none}.spbc_button_rate:active{background:#216298;background:-webkit-gradient(linear,left top,left bottom,from(#216298),to(#216298));background:-moz-linear-gradient(top,#216298,#216298);background:linear-gradient(to bottom,#216298,#216298)}#spbc_rate_plugin .spbc_button_rate:before{content:"\0000a0";display:inline-block;height:24px;width:24px;line-height:24px;margin:0 4px -6px -4px;position:relative;top:0;left:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACjElEQVRIie1UTWsTURQ9dzKpofQLobQFlxqENF1JG0GE6sKuRLDtTKaBkJUIRdwpba2g9ge48gMEUUyTbrUutFmk1X6Q7kxDgi1YUSmlpsGYiTXtuy7GCYnaSRu3PczAfe/dd8695z0ecIAKsFVK0DQNLpcL8Xi8KgHZalFRNWe7uyMs2+RtkBQIjQerU/k3uVceHhmdyed/8NbWFg8OXrlXDY+020JdXf2NQMB/yuE4hHw+j5yur1df7h9QvQMXpiKRHSEECyF4cvJlQVG149VwlZ1BX58fsn1H7e29+OhMd7cEAMyM6PTMNAgfFUWrJSIAQgCAYAKIAECABACABGFt7fPPaDRqjItVqyrqG5vGAn7/kMfTBYMIyGQyeD0VMZKYweYGM2ZjpnR+eWVl8V08fnYiNP6t1Jbzc3PzbNryP38stsiKqp0uWuTz+eBqd9/s6uo02vpdPTOXxZuZDB7cfwgQGa0TIEmS7nA4PhhDkgBgdXV1FkTzRYHCtjjS4XZ3mGQmSsdEhKbGRqhqPwRz0ZOlRKImGBy/FA4F31gd8tG2tjaZmf+VUybS2tpaNpfeTMsADu+2xxRw2O12ENFftpTG6XQat26PQZIIzEA2m/1SKBSGGXhhWZmiaifezs7yfhGdnmFF1TqtuM0OksvvlzMnPZ4mq+RkMoVsNlu83ImlxDqATxUFwqHg94aGhsc9PeeuNjc372pRMpnExsZX5HI5xBZjd3aEuBsOBTcs7TGherXaa9eHIqlUioUQltYIIXhkZPT5XnjL7qXi1Wpkm6w5nccGWlpanLJNlkGQyEw1Pui6rs8tLFx+9vTJq30JlKK/3ycRCQkSFZ8Dcwszi4lwUOylgwNUxC8cBKAS7hIWzwAAAABJRU5ErkJggg==) left center no-repeat;background-size:100% 100%}.spbc_rate_block_stars{margin:1em 0}.star-icon{color:#ddd;font-size:18px;position:relative}.star-icon.full:before{color:#FDE16D;content:'\2605';position:absolute;left:0;text-shadow:0 0 2px rgba(0,0,0,.7)}.spbc_hint{color:#666}.spbc_hint_warning{font-size:17px;font-weight:600;text-align:center;color:#eb8f00}.spbc_hint--link{color:#aaa;text-decoration:underline;cursor:pointer}.spbc_auto_link,.spbc_manual_link{text-decoration:none;font-size:13px;line-height:26px;height:28px;padding:0 10px 1px;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;margin:0;display:inline-block;cursor:pointer}.spbc_hint--top_right{position:relative;float:right;top:0;right:10px}.spbc_auto_link{background:#ccc;border-color:#999;-webkit-box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);color:#000;-webkit-border-radius:2px;border-radius:2px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.spbc_auto_link:hover{color:#fff}.spbc_manual_link{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;border-radius:3px;-webkit-border-radius:3px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.spbc_long_desc,.spbc_popup_tip--wrapper{min-height:80px;max-width:500px;padding:10px;z-index:10}.spbc_manual_link:hover{color:#000}.spbc_dismiss{width:20px;height:20px;border-radius:5px}.spbc-links:visited{color:#fff}.spbc_long_desc{position:absolute;background:#5a5a5a;min-width:80px;color:#fff}.spbc_long_desc p{color:#fff!important}i.animate-spin{-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;display:inline-block;font-size:25px;line-height:20px;color:rgba(120,200,230,1);margin:25px}@keyframes spin{to{transform:rotate(359deg)}}.spbc_long_desc__angle,.spbc_long_desc__angle_top_left{width:10px;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);position:absolute;height:10px;background:#5a5a5a}.spbc_long_desc__cancel{position:absolute;top:5px;right:5px;color:rgba(255,255,255,.5)}.spbc_long_desc__cancel:hover{color:#fff}.spbc_long_desc__link,.spbc_long_desc__title{color:rgba(120,200,230,1)}.spbc_long_desc__angle{top:5px;left:-17px;transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_long_desc__angle_top_left{top:-10px;left:-9px;transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_long_desc__title{margin:0}.spbc_long_desc__link:hover{color:rgba(140,220,250,1)}.spbc_long_desc h4{color:#50a0be;margin:10px 0 3px}.spbc_long_desc span{margin:0 0 0 10px;display:inline-block}.spbc_long_desc img{width:300px}.spbc_popup_tip--icon---show:hover{color:#aaa;cursor:pointer}.spbc_popup_tip--wrapper{position:absolute;background:#5a5a5a;min-width:80px;color:#fff}.spbc_popup_tip--icon---cancel{position:absolute;top:0;right:5px;color:rgba(255,255,255,.5)}.spbc_popup_tip--icon---cancel:hover{color:#fff}.spbc_popup_tip--angle{position:absolute;top:5px;left:-17px;width:10px;height:10px;background:#5a5a5a;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_popup_tip--title{color:rgba(120,200,230,1);margin:0}.spbc_popup_tip--text{color:#fff!important}tr:hover .spbc_hint--wrapper{display:none}.spbc_log-wrapper{padding:5px;border:1px solid #000;width:98%;min-height:300px;height:300px;border-bottom:5px dashed #5a5a5a}.spbc_log-wrapper .panel-body{height:100%;overflow-y:auto}.spbc_log-line{margin:0;padding:0 5px}.spbc_log-line:nth-child(odd){background:#d3d3d3}.spbc_log-block_header{margin:10px 0}.spbc_log-input--checkbox,.spbc_log-label--checkbox{width:auto}button.ct_support_link{border:none;background:0 0;color:#666;text-decoration:underline;cursor:pointer}#spbc-modal-content{text-align:center}#spbc-modal-content>*{display:block;width:100%}.spbc-popup-msg{width:98%;height:15px;text-align:center;padding:4px;border-radius:7px;position:relative;top:0;right:0;bottom:0;left:0;margin:auto}.popup--green{background:#DFD;color:#060;border:1px solid #060}.popup--red{background:#FDD;color:#600;border:1px solid #600}#spbcscan-results-log-module{min-height:300px;height:300px;border-bottom:5px dashed #5a5a5a}#spbcscan-results-log-module .panel-body{height:100%;overflow-y:auto}#spbcscan-scanner-caption h4{margin:10px 0;font-size:14px}#spbcscan-results-log-caption p{font-size:13px;margin:0 0 6px}#spbcscan-scanner-caption{display:flex;flex-wrap:wrap;flex-direction:row-reverse}#spbcscan-scanner-caption .column:first-child{width:75%;flex:0 0 75%}#spbcscan-scanner-caption .column:last-child{width:25%;flex:0 0 25%;padding-right:10px;box-sizing:border-box}.spbc-scan-log-title{color:#1d2327;font-size:1.3em;margin:0 0 15px!important;font-weight:600}.spbc--status{position:relative;padding-left:26px}.spbc--marker-green::before,.spbc--marker-red::before,.spbc--marker-yellow::before{content:'';position:absolute;width:10px;height:10px;border-radius:50%;left:10px;top:4px}.spbc--marker-green::before{background:#1dda23}.spbc--marker-yellow::before{background:#ffb000}.spbc--marker-red::before{background:#d63638}
\ No newline at end of file
diff --git a/css/src/spbc-settings.css b/css/src/spbc-settings.css
index c8ca6f516..9b18a38be 100644
--- a/css/src/spbc-settings.css
+++ b/css/src/spbc-settings.css
@@ -154,6 +154,24 @@ table.spbc_table_general th, table.spbc_table_general td {position: relative; bo
border-radius: 5px;
z-index: 20;
}
+.spbcFullText-right{
+ display: none;
+ position: absolute;
+ top: 0;
+ right: 0;
+ background: rgba(150,150,150,.9);
+ color: white;
+ padding: 7px;
+ border: 1px solid rgb(51, 51, 51);
+ border-radius: 5px;
+ z-index: 20;
+}
+.spbcFullText a {
+ color: white;
+}
+.spbcFullText a:hover {
+ color: #ddd;
+}
/* Pagination */
div.pagination{
diff --git a/inc/spbc-settings.php b/inc/spbc-settings.php
index 43c8ce0c7..94ba073a9 100644
--- a/inc/spbc-settings.php
+++ b/inc/spbc-settings.php
@@ -1852,16 +1852,52 @@ function spbc_field_security_logs__prepare_data(&$table)
$row->user_login
);
- $page = $row->page === null ? '-' : "" . $row->page . " ";
+ $url = $row->page;
+ if ($url === null) {
+ $page = '-';
+ } elseif (strlen($url) >= 60) {
+ $page = ''
+ . ''
+ . '
' . $url . ' '
+ . '
';
+ } else {
+ $page = "" . $url . " ";
+ }
+
+ $action = '';
+ $is_add_time = true;
+ if (!is_null($url)) {
+ switch ($url) {
+ case '/wp-admin/edit.php':
+ $action = __('Viewing the posts list', 'security-malware-firewall');
+ break;
+ case '/wp-admin/edit.php':
+ $action = __('Viewing the posts list', 'security-malware-firewall');
+ break;
+ case '/wp-admin/edit.php?post_type=page':
+ $action = __('Viewing the pages list', 'security-malware-firewall');
+ break;
+ case (preg_match('#/wp-admin/post.php\?post=[\d\w]+&action=edit#', $url) ? true : false):
+ $action = __('Editing post', 'security-malware-firewall');
+ break;
+ case (preg_match('#/wp-admin/plugins.php\?action=activate#', $url) ? true : false):
+ $action = __('Activate plugin', 'security-malware-firewall');
+ $is_add_time = false;
+ break;
+ case (preg_match('#/wp-admin/plugins.php\?action=deactivate#', $url) ? true : false):
+ $action = __('Deactivate plugin', 'security-malware-firewall');
+ $is_add_time = false;
+ break;
+ }
+ }
switch ($row->event) {
case 'view':
- $event = sprintf(
- __('Viewing admin page (%s)', 'security-malware-firewall'),
- $row->page_time === null
- ? 'Calculating'
- : strval($row->page_time) . ' seconds'
- );
+ $time = $row->page_time === null ? '(Calculating)' : '(' . strval($row->page_time) . ' seconds)';
+ $event = $action !== '' ? $action . ' ' : __('Viewing admin page ', 'security-malware-firewall');
+ $event .= $is_add_time ? $time : '';
break;
case 'auth_failed':
$event = __('Failed authentication', 'security-malware-firewall');
From 04d3283c1c35c065af9fca62b44aa7f21bcf8447 Mon Sep 17 00:00:00 2001
From: svfcode
Date: Fri, 25 Aug 2023 09:42:46 +0300
Subject: [PATCH 080/109] Fix. Remove duplicated case.
---
inc/spbc-settings.php | 3 ---
1 file changed, 3 deletions(-)
diff --git a/inc/spbc-settings.php b/inc/spbc-settings.php
index 94ba073a9..a4f084dd8 100644
--- a/inc/spbc-settings.php
+++ b/inc/spbc-settings.php
@@ -1870,9 +1870,6 @@ function spbc_field_security_logs__prepare_data(&$table)
$is_add_time = true;
if (!is_null($url)) {
switch ($url) {
- case '/wp-admin/edit.php':
- $action = __('Viewing the posts list', 'security-malware-firewall');
- break;
case '/wp-admin/edit.php':
$action = __('Viewing the posts list', 'security-malware-firewall');
break;
From cb713895981eeb32897af9f38209d95e3ab79e0e Mon Sep 17 00:00:00 2001
From: svfcode
Date: Fri, 25 Aug 2023 10:59:11 +0300
Subject: [PATCH 081/109] Fix. Removed useless conditions.
---
inc/spbc-settings.php | 16 ----------------
1 file changed, 16 deletions(-)
diff --git a/inc/spbc-settings.php b/inc/spbc-settings.php
index 8a84ad216..05fe65073 100644
--- a/inc/spbc-settings.php
+++ b/inc/spbc-settings.php
@@ -1727,13 +1727,8 @@ function spbc_get_admin_email()
global $spbc;
if ( ! is_multisite() ) {
- // Not WPMS
$admin_email = get_option('admin_email');
- } elseif ( is_main_site() || $spbc->network_settings['multisite__work_mode'] != 3) {
- // WPMS - Main site, common account
- $admin_email = get_site_option('admin_email');
} else {
- // WPMS - Individual account, individual Access key
$admin_email = get_blog_option(get_current_blog_id(), 'admin_email');
}
@@ -4101,17 +4096,6 @@ function spbc_settings__update_account_email($direct_call = false)
);
}
- // protection against accidental request from a child site in the shared account mode
- if (!is_main_site() && isset($spbc->network_settings['multisite__work_mode']) && $spbc->network_settings['multisite__work_mode'] != 3) {
- die(
- json_encode(
- array(
- 'error' => 'Please, enter valid email.'
- )
- )
- );
- }
-
// email not changed
if (isset($spbc->data['account_email']) && $account_email === $spbc->data['account_email']) {
die(
From e631f8f8138ff7f96c35098d056a7f832ecd2680 Mon Sep 17 00:00:00 2001
From: svfcode
Date: Fri, 25 Aug 2023 12:47:42 +0300
Subject: [PATCH 082/109] Fix. Change admin email only on main site.
---
inc/spbc-settings.php | 11 +----------
1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/inc/spbc-settings.php b/inc/spbc-settings.php
index 05fe65073..600257f02 100644
--- a/inc/spbc-settings.php
+++ b/inc/spbc-settings.php
@@ -1693,7 +1693,7 @@ function spbc_field_key()
''
. spbc_get_admin_email()
. ' ',
- spbc_settings__btn_change_account_email_html()
+ is_main_site() ? spbc_settings__btn_change_account_email_html() : ''
);
echo '';
@@ -1747,15 +1747,6 @@ function spbc_get_admin_email()
*/
function spbc_settings__btn_change_account_email_html()
{
- global $spbc;
-
- if (
- ! is_main_site() &&
- isset($spbc->network_settings['multisite__work_mode']) &&
- $spbc->network_settings['multisite__work_mode'] == 1) {
- return '';
- }
-
return '(
Date: Fri, 25 Aug 2023 13:10:55 +0300
Subject: [PATCH 083/109] merge fix into dev
---
lib/CleantalkSP/SpbctWP/Scanner/Frontend.php | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/lib/CleantalkSP/SpbctWP/Scanner/Frontend.php b/lib/CleantalkSP/SpbctWP/Scanner/Frontend.php
index 6ced1b4c6..60a613fc9 100644
--- a/lib/CleantalkSP/SpbctWP/Scanner/Frontend.php
+++ b/lib/CleantalkSP/SpbctWP/Scanner/Frontend.php
@@ -264,7 +264,9 @@ static function ($response) {
public static function getTotalPages()
{
- return wp_count_posts()->publish + wp_count_posts('page')->publish;
+ global $wpdb;
+ $query = "SELECT COUNT(*) FROM $wpdb->posts WHERE post_type IN ( 'post', 'page' ) AND post_status = 'publish'";
+ return $wpdb->get_var($query);
}
/**
From e644f7f6d449b3bc13cea2d4b448d5f1409a9a11 Mon Sep 17 00:00:00 2001
From: svfcode
Date: Fri, 25 Aug 2023 13:30:17 +0300
Subject: [PATCH 084/109] Merge branch 'change-admin-email' into dev Add.
Settings. Add ability to change admin email.
---
css/spbc-settings.min.css | 2 +-
css/src/spbc-settings.css | 14 ++++
inc/spbc-admin.php | 1 +
inc/spbc-settings.php | 127 +++++++++++++++++++++++++++---
js/spbc-settings.min.js | 2 +-
js/spbc-settings.min.js.map | 2 +-
js/src/spbc-settings.js | 69 +++++++++++++++-
lib/CleantalkSP/SpbctWP/State.php | 1 +
security-malware-firewall.php | 2 +-
9 files changed, 202 insertions(+), 18 deletions(-)
diff --git a/css/spbc-settings.min.css b/css/spbc-settings.min.css
index 2384a053f..afbb6c611 100644
--- a/css/spbc-settings.min.css
+++ b/css/spbc-settings.min.css
@@ -1 +1 @@
-.circle{border-radius:50%;align-items:center;justify-content:center;position:relative;background-color:#03A9F4;clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 0,50% 0,50% 50%,50% 50%)}.circle-inner{width:100%;height:100%;border-radius:50%;background:#f7f7f7;transform:scale(.7)}.circle--small{width:16px;height:16px}.circle--mid{width:30px;height:30px}.-animation--circle{animation:animation-circle 2s linear forwards}.-animation--30s{animation-duration:30s!important}.-animation--2min{animation-duration:120s!important}@keyframes animation-circle{12.5%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 0,0 0,50% 50%,50% 50%)}25%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 50%,0 50%,50% 50%,50% 50%)}37.5%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 100%,0 100%,50% 50%,50% 50%)}50%{clip-path:polygon(50% 0,100% 0,100% 100%,50% 100%,50% 100%,50% 100%,50% 100%,50% 50%,50% 50%)}62.5%{clip-path:polygon(50% 0,100% 0,100% 100%,100% 100%,100% 100%,100% 100%,100% 100%,50% 50%,50% 50%)}75%{clip-path:polygon(50% 0,100% 0,100% 50%,100% 50%,100% 50%,100% 50%,100% 50%,50% 50%,50% 50%)}87.5%{clip-path:polygon(50% 0,100% 0,100% 0,100% 0,100% 0,100% 0,100% 0,50% 50%,50% 50%)}100%{clip-path:polygon(50% 0,50% 0,50% 0,50% 0,50% 0,50% 0,50% 0,50% 50%,50% 50%)}}#confirmation-code--resend .circle{margin-left:5px;display:inline-block;vertical-align:text-bottom}.spbc---hidden,.spbc_waf_reason{display:none}#spbcTopWarning{margin-bottom:5px}#spbcTopWarning h3{margin:10px 0 5px}#spbcTopWarning h4{margin:10px}#spbcTopWarning h4 span{margin-top:5px}#spbc_gdpr_open_modal:hover{cursor:pointer}.spbc---gray{color:gray}.spbc---red{color:red}.spbc_bold{font-weight:800}.spbc---top{z-index:9999!important}.spbc_waf_reason_title{text-decoration:underline}.spbc_waf_reason_title:hover+.spbc_waf_reason{display:inline}.spbc_warning_counter{margin:0 5px;padding:0 7px;font-size:14px;height:23px;display:inline-block;text-align:center;border-radius:3px}.spbc_sub_setting{margin-left:30px!important}.spbc_sub2_setting{margin-left:60px!important}.spbc_affiliate_shortcode{width:inherit!important;min-width:inherit!important}.spbc_warning_counter--black{color:#fff;background-color:#000}.spbc_warning_counter--red{color:#000;background-color:red}.spbc_warning_counter--orange{color:#000;background-color:orange}.spbc_warning_counter--green{color:#000;background-color:green}.spbc_highlighted{outline-offset:5px;outline-color:red;outline-width:3px!important;outline-style:solid!important}.spbc_status_icon{vertical-align:text-bottom;margin:0 5px}.spbc_progressbar_counter{position:absolute;height:22px;width:100%;left:0;top:0;text-align:center}.spbc_progressbar_counter span{vertical-align:sub;line-height:22px;font-weight:600;font-size:18px}.spbc_preloader,.spbc_preloader_button{margin-left:5px;vertical-align:text-top;display:none}.spbc_compare_file_row_wrapper,.spbc_view_file_row,.spbc_view_file_row_wrapper{line-height:19px}.ui-progressbar-value{background-image:url(../images/pbar-ani.gif)!important}.spbc_preloader{width:20px}.spbc_preloader_button{height:15px}.spbc_spinner_big{display:block;margin:40px auto}.spbc_scan_result_row td{text-align:center}.spbc_scan_result_row td:nth-child(1){text-align:left}.spbc_scan_result_row td:nth-child(2){text-align:right}.spbc_scan_result_row td:last-child button{margin-left:3px}.spbc_view_file_row_wrapper:nth-child(odd){background:#ccc}.spbc_view_file_row_wrapper:nth-child(even){background:#ddd}.spbc_view_file_row_num{display:inline-block;width:30px;margin:0 0 0 5px;border-right:1px solid #000}.spbc_view_file_row{display:inline;margin:0 0 0 5px;font-size:1em}.spbc_compare_file_headings{text-align:center;width:100%;display:inline-block;font-weight:700}.spbc_compare_file_row_wrapper:nth-child(odd){background:#ccc}.spbc_compare_file_row_wrapper:nth-child(even){background:#ddd}.spbc_compare_file_row_num{display:inline-block;width:20px;box-shadow:-2px 0 0 0 #000,2px 0 0 0 #000;padding:0 1%}.spbc_compare_file_row{display:inline-block;width:45%;margin:0;padding:0 1%}table.spbc_table_general{width:100%;border:0;border-spacing:0;border-collapse:collapse}table.spbc_table_general td,table.spbc_table_general th{position:relative;border:1px solid #666;padding:2px 10px}.spbcShortText{display:inline-block;width:100%}.spbcFullText,.spbcFullText-right{display:none;position:absolute;top:0;background:rgba(150,150,150,.9);padding:7px;z-index:20;color:#fff}.spbcFullText{border:1px solid #333;border-radius:5px}.spbcFullText-right{right:0;border:1px solid #333;border-radius:5px}.spbcFullText a{color:#fff}.spbcFullText a:hover{color:#ddd}div.pagination{margin:10px}ul.pagination{display:inline-block;margin:0}li.pagination{display:inline-block;margin-left:10px}span.current_page{font-size:1.3em;font-weight:600}.spbc_new{color:red;position:relative;font-size:10px;vertical-align:bottom;top:-8px}.spbc_wrapper_settings{margin:10px 0 0}.spbc_tabs_nav_wrapper{display:block;border-bottom:1px solid #ccc}.spbc_tab_nav{display:inline-block;margin:10px 0 0 .5em;padding:5px 10px;height:24px;border:1px solid #ccc;border-bottom:none;font-size:14px;line-height:24px;background:#e5e5e5;color:#555;cursor:pointer}.spbc_tab_nav:hover{background:#fff}.spbc_tab_nav--active{margin-bottom:-1px;border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}.spbc_tab_nav--active:hover{background:#f1f1f1}.spbc_tab{display:none;margin:15px 0}.spbc_tab--active{display:block}.spbc_tab_fields_group{position:relative;min-width:255px;margin:10px auto;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fdfdfd}.spbc_group_header{margin:0 0 10px;padding:10px;border-bottom:1px solid #eee}.spbc_group_header>h3{margin:0}.spbc_group_header>h3>a{color:#1d2327;text-decoration:none}.spbc_wrapper_field{margin:0 15px 15px}.spbc_long_description__show:hover{color:#aaa;cursor:pointer}.spbc_settings_description{font-size:9pt;color:#888}.spbc_settings_description select{display:inline;position:relative;transform:scale(.7);left:-50px}.spbc_tab-settings_general input[type=text]{min-width:255px;width:100%}.spbc_short_text_field input{min-width:70px!important;width:70px!important}.spbc_middle_text_field input{min-width:200px!important;width:200px!important}.spbc_long_text_field input[type=text]{min-width:200px;width:500px}.spbc_wrapper_field label{vertical-align:baseline}.spbc_wrapper_field h4{margin:10px 15px 5px}.spbc_wrapper_footer{margin:15px}#spbc_wrapper_error{margin:0;padding:5px}#spbc_wrapper_error h3,#spbc_wrapper_error h4{margin:5px}#showHideLink{display:inline-block;margin-top:5px;color:#777}.spbc__wrapper--center{margin:10px 0;text-align:center}.spbc__show_more_logs{display:none}.spbc_settings_banner{display:inline-block;margin:1em 0;vertical-align:top;text-align:center}#spbc_translate_plugin{margin-left:10px}.spbc_rate_block{border:1px dashed #666;width:400px;padding:.2em}#spbc_translate_plugin .spbc_button_rate{margin-bottom:10px}.spbc_button_rate{display:inline-block;text-align:center;vertical-align:middle;padding:12px 24px;border:1px solid #216298;border-radius:8px;background:#35a0f7;background:-webkit-gradient(linear,left top,left bottom,from(#35a0f7),to(#216298));background:-moz-linear-gradient(top,#35a0f7,#216298);background:linear-gradient(to bottom,#35a0f7,#216298);text-shadow:#153e5f 1px 1px 1px;font:normal normal bold 16px verdana;color:#fff;text-decoration:none}.spbc_button_rate:focus,.spbc_button_rate:hover{border:1px solid #297bbe;background:#40c0ff;background:-webkit-gradient(linear,left top,left bottom,from(#40c0ff),to(#2876b6));background:-moz-linear-gradient(top,#40c0ff,#2876b6);background:linear-gradient(to bottom,#40c0ff,#2876b6);color:#fff;text-decoration:none}.spbc_button_rate:active{background:#216298;background:-webkit-gradient(linear,left top,left bottom,from(#216298),to(#216298));background:-moz-linear-gradient(top,#216298,#216298);background:linear-gradient(to bottom,#216298,#216298)}#spbc_rate_plugin .spbc_button_rate:before{content:"\0000a0";display:inline-block;height:24px;width:24px;line-height:24px;margin:0 4px -6px -4px;position:relative;top:0;left:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACjElEQVRIie1UTWsTURQ9dzKpofQLobQFlxqENF1JG0GE6sKuRLDtTKaBkJUIRdwpba2g9ge48gMEUUyTbrUutFmk1X6Q7kxDgi1YUSmlpsGYiTXtuy7GCYnaSRu3PczAfe/dd8695z0ecIAKsFVK0DQNLpcL8Xi8KgHZalFRNWe7uyMs2+RtkBQIjQerU/k3uVceHhmdyed/8NbWFg8OXrlXDY+020JdXf2NQMB/yuE4hHw+j5yur1df7h9QvQMXpiKRHSEECyF4cvJlQVG149VwlZ1BX58fsn1H7e29+OhMd7cEAMyM6PTMNAgfFUWrJSIAQgCAYAKIAECABACABGFt7fPPaDRqjItVqyrqG5vGAn7/kMfTBYMIyGQyeD0VMZKYweYGM2ZjpnR+eWVl8V08fnYiNP6t1Jbzc3PzbNryP38stsiKqp0uWuTz+eBqd9/s6uo02vpdPTOXxZuZDB7cfwgQGa0TIEmS7nA4PhhDkgBgdXV1FkTzRYHCtjjS4XZ3mGQmSsdEhKbGRqhqPwRz0ZOlRKImGBy/FA4F31gd8tG2tjaZmf+VUybS2tpaNpfeTMsADu+2xxRw2O12ENFftpTG6XQat26PQZIIzEA2m/1SKBSGGXhhWZmiaifezs7yfhGdnmFF1TqtuM0OksvvlzMnPZ4mq+RkMoVsNlu83ImlxDqATxUFwqHg94aGhsc9PeeuNjc372pRMpnExsZX5HI5xBZjd3aEuBsOBTcs7TGherXaa9eHIqlUioUQltYIIXhkZPT5XnjL7qXi1Wpkm6w5nccGWlpanLJNlkGQyEw1Pui6rs8tLFx+9vTJq30JlKK/3ycRCQkSFZ8Dcwszi4lwUOylgwNUxC8cBKAS7hIWzwAAAABJRU5ErkJggg==) left center no-repeat;background-size:100% 100%}.spbc_rate_block_stars{margin:1em 0}.star-icon{color:#ddd;font-size:18px;position:relative}.star-icon.full:before{color:#FDE16D;content:'\2605';position:absolute;left:0;text-shadow:0 0 2px rgba(0,0,0,.7)}.spbc_hint{color:#666}.spbc_hint_warning{font-size:17px;font-weight:600;text-align:center;color:#eb8f00}.spbc_hint--link{color:#aaa;text-decoration:underline;cursor:pointer}.spbc_auto_link,.spbc_manual_link{text-decoration:none;font-size:13px;line-height:26px;height:28px;padding:0 10px 1px;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;margin:0;display:inline-block;cursor:pointer}.spbc_hint--top_right{position:relative;float:right;top:0;right:10px}.spbc_auto_link{background:#ccc;border-color:#999;-webkit-box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);color:#000;-webkit-border-radius:2px;border-radius:2px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.spbc_auto_link:hover{color:#fff}.spbc_manual_link{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;border-radius:3px;-webkit-border-radius:3px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.spbc_long_desc,.spbc_popup_tip--wrapper{min-height:80px;max-width:500px;padding:10px;z-index:10}.spbc_manual_link:hover{color:#000}.spbc_dismiss{width:20px;height:20px;border-radius:5px}.spbc-links:visited{color:#fff}.spbc_long_desc{position:absolute;background:#5a5a5a;min-width:80px;color:#fff}.spbc_long_desc p{color:#fff!important}i.animate-spin{-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;display:inline-block;font-size:25px;line-height:20px;color:rgba(120,200,230,1);margin:25px}@keyframes spin{to{transform:rotate(359deg)}}.spbc_long_desc__angle,.spbc_long_desc__angle_top_left{width:10px;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);position:absolute;height:10px;background:#5a5a5a}.spbc_long_desc__cancel{position:absolute;top:5px;right:5px;color:rgba(255,255,255,.5)}.spbc_long_desc__cancel:hover{color:#fff}.spbc_long_desc__link,.spbc_long_desc__title{color:rgba(120,200,230,1)}.spbc_long_desc__angle{top:5px;left:-17px;transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_long_desc__angle_top_left{top:-10px;left:-9px;transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_long_desc__title{margin:0}.spbc_long_desc__link:hover{color:rgba(140,220,250,1)}.spbc_long_desc h4{color:#50a0be;margin:10px 0 3px}.spbc_long_desc span{margin:0 0 0 10px;display:inline-block}.spbc_long_desc img{width:300px}.spbc_popup_tip--icon---show:hover{color:#aaa;cursor:pointer}.spbc_popup_tip--wrapper{position:absolute;background:#5a5a5a;min-width:80px;color:#fff}.spbc_popup_tip--icon---cancel{position:absolute;top:0;right:5px;color:rgba(255,255,255,.5)}.spbc_popup_tip--icon---cancel:hover{color:#fff}.spbc_popup_tip--angle{position:absolute;top:5px;left:-17px;width:10px;height:10px;background:#5a5a5a;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_popup_tip--title{color:rgba(120,200,230,1);margin:0}.spbc_popup_tip--text{color:#fff!important}tr:hover .spbc_hint--wrapper{display:none}.spbc_log-wrapper{padding:5px;border:1px solid #000;width:98%;min-height:300px;height:300px;border-bottom:5px dashed #5a5a5a}.spbc_log-wrapper .panel-body{height:100%;overflow-y:auto}.spbc_log-line{margin:0;padding:0 5px}.spbc_log-line:nth-child(odd){background:#d3d3d3}.spbc_log-block_header{margin:10px 0}.spbc_log-input--checkbox,.spbc_log-label--checkbox{width:auto}button.ct_support_link{border:none;background:0 0;color:#666;text-decoration:underline;cursor:pointer}#spbc-modal-content{text-align:center}#spbc-modal-content>*{display:block;width:100%}.spbc-popup-msg{width:98%;height:15px;text-align:center;padding:4px;border-radius:7px;position:relative;top:0;right:0;bottom:0;left:0;margin:auto}.popup--green{background:#DFD;color:#060;border:1px solid #060}.popup--red{background:#FDD;color:#600;border:1px solid #600}#spbcscan-results-log-module{min-height:300px;height:300px;border-bottom:5px dashed #5a5a5a}#spbcscan-results-log-module .panel-body{height:100%;overflow-y:auto}#spbcscan-scanner-caption h4{margin:10px 0;font-size:14px}#spbcscan-results-log-caption p{font-size:13px;margin:0 0 6px}#spbcscan-scanner-caption{display:flex;flex-wrap:wrap;flex-direction:row-reverse}#spbcscan-scanner-caption .column:first-child{width:75%;flex:0 0 75%}#spbcscan-scanner-caption .column:last-child{width:25%;flex:0 0 25%;padding-right:10px;box-sizing:border-box}.spbc-scan-log-title{color:#1d2327;font-size:1.3em;margin:0 0 15px!important;font-weight:600}.spbc--status{position:relative;padding-left:26px}.spbc--marker-green::before,.spbc--marker-red::before,.spbc--marker-yellow::before{content:'';position:absolute;width:10px;height:10px;border-radius:50%;left:10px;top:4px}.spbc--marker-green::before{background:#1dda23}.spbc--marker-yellow::before{background:#ffb000}.spbc--marker-red::before{background:#d63638}
\ No newline at end of file
+.circle{border-radius:50%;align-items:center;justify-content:center;position:relative;background-color:#03A9F4;clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 0,50% 0,50% 50%,50% 50%)}.circle-inner{width:100%;height:100%;border-radius:50%;background:#f7f7f7;transform:scale(.7)}.circle--small{width:16px;height:16px}.circle--mid{width:30px;height:30px}.-animation--circle{animation:animation-circle 2s linear forwards}.-animation--30s{animation-duration:30s!important}.-animation--2min{animation-duration:120s!important}@keyframes animation-circle{12.5%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 0,0 0,50% 50%,50% 50%)}25%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 50%,0 50%,50% 50%,50% 50%)}37.5%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 100%,0 100%,50% 50%,50% 50%)}50%{clip-path:polygon(50% 0,100% 0,100% 100%,50% 100%,50% 100%,50% 100%,50% 100%,50% 50%,50% 50%)}62.5%{clip-path:polygon(50% 0,100% 0,100% 100%,100% 100%,100% 100%,100% 100%,100% 100%,50% 50%,50% 50%)}75%{clip-path:polygon(50% 0,100% 0,100% 50%,100% 50%,100% 50%,100% 50%,100% 50%,50% 50%,50% 50%)}87.5%{clip-path:polygon(50% 0,100% 0,100% 0,100% 0,100% 0,100% 0,100% 0,50% 50%,50% 50%)}100%{clip-path:polygon(50% 0,50% 0,50% 0,50% 0,50% 0,50% 0,50% 0,50% 50%,50% 50%)}}#confirmation-code--resend .circle{margin-left:5px;display:inline-block;vertical-align:text-bottom}.spbc---hidden,.spbc_waf_reason{display:none}#spbcTopWarning{margin-bottom:5px}#spbcTopWarning h3{margin:10px 0 5px}#spbcTopWarning h4{margin:10px}#spbcTopWarning h4 span{margin-top:5px}#spbc_gdpr_open_modal:hover{cursor:pointer}.spbc---gray{color:gray}.spbc---red{color:red}.spbc_bold{font-weight:800}.spbc---top{z-index:9999!important}.spbc_waf_reason_title{text-decoration:underline}.spbc_waf_reason_title:hover+.spbc_waf_reason{display:inline}.spbc_warning_counter{margin:0 5px;padding:0 7px;font-size:14px;height:23px;display:inline-block;text-align:center;border-radius:3px}.spbc_sub_setting{margin-left:30px!important}.spbc_sub2_setting{margin-left:60px!important}.spbc_affiliate_shortcode{width:inherit!important;min-width:inherit!important}.spbc_warning_counter--black{color:#fff;background-color:#000}.spbc_warning_counter--red{color:#000;background-color:red}.spbc_warning_counter--orange{color:#000;background-color:orange}.spbc_warning_counter--green{color:#000;background-color:green}.spbc_highlighted{outline-offset:5px;outline-color:red;outline-width:3px!important;outline-style:solid!important}.spbc_status_icon{vertical-align:text-bottom;margin:0 5px}.spbc_progressbar_counter{position:absolute;height:22px;width:100%;left:0;top:0;text-align:center}.spbc_progressbar_counter span{vertical-align:sub;line-height:22px;font-weight:600;font-size:18px}.spbc_preloader,.spbc_preloader_button{margin-left:5px;vertical-align:text-top;display:none}.spbc_compare_file_row_wrapper,.spbc_view_file_row,.spbc_view_file_row_wrapper{line-height:19px}.ui-progressbar-value{background-image:url(../images/pbar-ani.gif)!important}.spbc_preloader{width:20px}.spbc_preloader_button{height:15px}.spbc_spinner_big{display:block;margin:40px auto}.spbc_scan_result_row td{text-align:center}.spbc_scan_result_row td:nth-child(1){text-align:left}.spbc_scan_result_row td:nth-child(2){text-align:right}.spbc_scan_result_row td:last-child button{margin-left:3px}.spbc_view_file_row_wrapper:nth-child(odd){background:#ccc}.spbc_view_file_row_wrapper:nth-child(even){background:#ddd}.spbc_auto_link,.spbc_compare_file_row_wrapper:nth-child(odd){background:#ccc}.spbc_view_file_row_num{display:inline-block;width:30px;margin:0 0 0 5px;border-right:1px solid #000}.spbc_view_file_row{display:inline;margin:0 0 0 5px;font-size:1em}.spbc_compare_file_headings{text-align:center;width:100%;display:inline-block;font-weight:700}.spbc_compare_file_row_wrapper:nth-child(even){background:#ddd}.spbc_compare_file_row_num{display:inline-block;width:20px;box-shadow:-2px 0 0 0 #000,2px 0 0 0 #000;padding:0 1%}.spbc_compare_file_row{display:inline-block;width:45%;margin:0;padding:0 1%}table.spbc_table_general{width:100%;border:0;border-spacing:0;border-collapse:collapse}table.spbc_table_general td,table.spbc_table_general th{position:relative;border:1px solid #666;padding:2px 10px}.spbcShortText{display:inline-block;width:100%}.spbcFullText{display:none;position:absolute;top:0;background:rgba(150,150,150,.9);color:#fff;padding:7px;border:1px solid #333;border-radius:5px;z-index:20}div.pagination{margin:10px}ul.pagination{display:inline-block;margin:0}li.pagination{display:inline-block;margin-left:10px}span.current_page{font-size:1.3em;font-weight:600}.spbc_new{color:red;position:relative;font-size:10px;vertical-align:bottom;top:-8px}.spbc_wrapper_settings{margin:10px 0 0}.spbc_tabs_nav_wrapper{display:block;border-bottom:1px solid #ccc}.spbc_tab_nav{display:inline-block;margin:10px 0 0 .5em;padding:5px 10px;height:24px;border:1px solid #ccc;border-bottom:none;font-size:14px;line-height:24px;background:#e5e5e5;color:#555;cursor:pointer}.spbc_tab_nav:hover{background:#fff}.spbc_tab_nav--active{margin-bottom:-1px;border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}.spbc_tab_nav--active:hover{background:#f1f1f1}.spbc_tab{display:none;margin:15px 0}.spbc_tab--active{display:block}.spbc_tab_fields_group{position:relative;min-width:255px;margin:10px auto;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fdfdfd}.spbc_group_header{margin:0 0 10px;padding:10px;border-bottom:1px solid #eee}.spbc_group_header>h3{margin:0}.spbc_group_header>h3>a{color:#1d2327;text-decoration:none}.spbc_wrapper_field{margin:0 15px 15px}.spbc_long_description__show:hover{color:#aaa;cursor:pointer}.spbc_settings_description{font-size:9pt;color:#888}.spbc_settings_description select{display:inline;position:relative;transform:scale(.7);left:-50px}.spbc_tab-settings_general input[type=text]{min-width:255px;width:100%}.spbc_short_text_field input{min-width:70px!important;width:70px!important}.spbc_middle_text_field input{min-width:200px!important;width:200px!important}.spbc_long_text_field input[type=text]{min-width:200px;width:500px}.spbc_wrapper_field label{vertical-align:baseline}.spbc_wrapper_field h4{margin:10px 15px 5px}.spbc_wrapper_footer{margin:15px}#spbc_wrapper_error{margin:0;padding:5px}#spbc_wrapper_error h3,#spbc_wrapper_error h4{margin:5px}#showHideLink{display:inline-block;margin-top:5px;color:#777}.spbc__wrapper--center{margin:10px 0;text-align:center}.spbc__show_more_logs{display:none}.spbc_settings_banner{display:inline-block;margin:1em 0;vertical-align:top;text-align:center}#spbc_translate_plugin{margin-left:10px}.spbc_rate_block{border:1px dashed #666;width:400px;padding:.2em}#spbc_translate_plugin .spbc_button_rate{margin-bottom:10px}.spbc_button_rate{display:inline-block;text-align:center;vertical-align:middle;padding:12px 24px;border:1px solid #216298;border-radius:8px;background:#35a0f7;background:-webkit-gradient(linear,left top,left bottom,from(#35a0f7),to(#216298));background:-moz-linear-gradient(top,#35a0f7,#216298);background:linear-gradient(to bottom,#35a0f7,#216298);text-shadow:#153e5f 1px 1px 1px;font:normal normal bold 16px verdana;color:#fff;text-decoration:none}.spbc_button_rate:focus,.spbc_button_rate:hover{border:1px solid #297bbe;background:#40c0ff;background:-webkit-gradient(linear,left top,left bottom,from(#40c0ff),to(#2876b6));background:-moz-linear-gradient(top,#40c0ff,#2876b6);background:linear-gradient(to bottom,#40c0ff,#2876b6);color:#fff;text-decoration:none}.spbc_button_rate:active{background:#216298;background:-webkit-gradient(linear,left top,left bottom,from(#216298),to(#216298));background:-moz-linear-gradient(top,#216298,#216298);background:linear-gradient(to bottom,#216298,#216298)}#spbc_rate_plugin .spbc_button_rate:before{content:"\0000a0";display:inline-block;height:24px;width:24px;line-height:24px;margin:0 4px -6px -4px;position:relative;top:0;left:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACjElEQVRIie1UTWsTURQ9dzKpofQLobQFlxqENF1JG0GE6sKuRLDtTKaBkJUIRdwpba2g9ge48gMEUUyTbrUutFmk1X6Q7kxDgi1YUSmlpsGYiTXtuy7GCYnaSRu3PczAfe/dd8695z0ecIAKsFVK0DQNLpcL8Xi8KgHZalFRNWe7uyMs2+RtkBQIjQerU/k3uVceHhmdyed/8NbWFg8OXrlXDY+020JdXf2NQMB/yuE4hHw+j5yur1df7h9QvQMXpiKRHSEECyF4cvJlQVG149VwlZ1BX58fsn1H7e29+OhMd7cEAMyM6PTMNAgfFUWrJSIAQgCAYAKIAECABACABGFt7fPPaDRqjItVqyrqG5vGAn7/kMfTBYMIyGQyeD0VMZKYweYGM2ZjpnR+eWVl8V08fnYiNP6t1Jbzc3PzbNryP38stsiKqp0uWuTz+eBqd9/s6uo02vpdPTOXxZuZDB7cfwgQGa0TIEmS7nA4PhhDkgBgdXV1FkTzRYHCtjjS4XZ3mGQmSsdEhKbGRqhqPwRz0ZOlRKImGBy/FA4F31gd8tG2tjaZmf+VUybS2tpaNpfeTMsADu+2xxRw2O12ENFftpTG6XQat26PQZIIzEA2m/1SKBSGGXhhWZmiaifezs7yfhGdnmFF1TqtuM0OksvvlzMnPZ4mq+RkMoVsNlu83ImlxDqATxUFwqHg94aGhsc9PeeuNjc372pRMpnExsZX5HI5xBZjd3aEuBsOBTcs7TGherXaa9eHIqlUioUQltYIIXhkZPT5XnjL7qXi1Wpkm6w5nccGWlpanLJNlkGQyEw1Pui6rs8tLFx+9vTJq30JlKK/3ycRCQkSFZ8Dcwszi4lwUOylgwNUxC8cBKAS7hIWzwAAAABJRU5ErkJggg==) left center no-repeat;background-size:100% 100%}.spbc_auto_link,.spbc_manual_link{height:28px;padding:0 10px 1px;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;display:inline-block;cursor:pointer}.spbc_rate_block_stars{margin:1em 0}.star-icon{color:#ddd;font-size:18px;position:relative}.star-icon.full:before{color:#FDE16D;content:'\2605';position:absolute;left:0;text-shadow:0 0 2px rgba(0,0,0,.7)}.spbc_hint{color:#666}.spbc_hint_warning{font-size:17px;font-weight:600;text-align:center;color:#eb8f00}.spbc_hint--link{color:#aaa;text-decoration:underline;cursor:pointer}.spbc_hint--top_right{position:relative;float:right;top:0;right:10px}.spbc_auto_link{border-color:#999;-webkit-box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);color:#000;text-decoration:none;font-size:13px;line-height:26px;margin:0;-webkit-border-radius:2px;border-radius:2px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.spbc_auto_link:hover{color:#fff}.spbc_manual_link{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration:none;font-size:13px;line-height:26px;margin:0;border-radius:3px;-webkit-border-radius:3px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.spbc_manual_link:hover{color:#000}.spbc-btn-as-link{padding:0;margin:0;vertical-align:baseline;color:gray;border:0;border-bottom:1px solid;cursor:pointer}#spbc-account-email[contenteditable=true]{padding:6px;background-color:#fff;border:1px solid #ccc}.spbc_long_desc,.spbc_popup_tip--wrapper{min-height:80px;max-width:500px;padding:10px;z-index:10}.spbc_dismiss{width:20px;height:20px;border-radius:5px}.spbc-links:visited{color:#fff}.spbc_long_desc{position:absolute;background:#5a5a5a;min-width:80px;color:#fff}.spbc_long_desc p{color:#fff!important}i.animate-spin{-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;display:inline-block;font-size:25px;line-height:20px;color:rgba(120,200,230,1);margin:25px}@keyframes spin{to{transform:rotate(359deg)}}.spbc_long_desc__angle,.spbc_long_desc__angle_top_left{width:10px;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);position:absolute;height:10px;background:#5a5a5a}.spbc_long_desc__cancel{position:absolute;top:5px;right:5px;color:rgba(255,255,255,.5)}.spbc_long_desc__cancel:hover{color:#fff}.spbc_long_desc__link,.spbc_long_desc__title{color:rgba(120,200,230,1)}.spbc_long_desc__angle{top:5px;left:-17px;transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_long_desc__angle_top_left{top:-10px;left:-9px;transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_long_desc__title{margin:0}.spbc_long_desc__link:hover{color:rgba(140,220,250,1)}.spbc_long_desc h4{color:#50a0be;margin:10px 0 3px}.spbc_long_desc span{margin:0 0 0 10px;display:inline-block}.spbc_long_desc img{width:300px}.spbc_popup_tip--icon---show:hover{color:#aaa;cursor:pointer}.spbc_popup_tip--wrapper{position:absolute;background:#5a5a5a;min-width:80px;color:#fff}.spbc_popup_tip--icon---cancel{position:absolute;top:0;right:5px;color:rgba(255,255,255,.5)}.spbc_popup_tip--icon---cancel:hover{color:#fff}.spbc_popup_tip--angle{position:absolute;top:5px;left:-17px;width:10px;height:10px;background:#5a5a5a;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_popup_tip--title{color:rgba(120,200,230,1);margin:0}.spbc_popup_tip--text{color:#fff!important}tr:hover .spbc_hint--wrapper{display:none}.spbc_log-wrapper{padding:5px;border:1px solid #000;width:98%;min-height:300px;height:300px;border-bottom:5px dashed #5a5a5a}.spbc_log-wrapper .panel-body{height:100%;overflow-y:auto}.spbc_log-line{margin:0;padding:0 5px}.spbc_log-line:nth-child(odd){background:#d3d3d3}.spbc_log-block_header{margin:10px 0}.spbc_log-input--checkbox,.spbc_log-label--checkbox{width:auto}button.ct_support_link{border:none;background:0 0;color:#666;text-decoration:underline;cursor:pointer}#spbc-modal-content{text-align:center}#spbc-modal-content>*{display:block;width:100%}.spbc-popup-msg{width:98%;height:15px;text-align:center;padding:4px;border-radius:7px;position:relative;top:0;right:0;bottom:0;left:0;margin:auto}.popup--green{background:#DFD;color:#060;border:1px solid #060}.popup--red{background:#FDD;color:#600;border:1px solid #600}#spbcscan-results-log-module{min-height:300px;height:300px;border-bottom:5px dashed #5a5a5a}#spbcscan-results-log-module .panel-body{height:100%;overflow-y:auto}#spbcscan-scanner-caption h4{margin:10px 0;font-size:14px}#spbcscan-results-log-caption p{font-size:13px;margin:0 0 6px}#spbcscan-scanner-caption{display:flex;flex-wrap:wrap;flex-direction:row-reverse}#spbcscan-scanner-caption .column:first-child{width:75%;flex:0 0 75%}#spbcscan-scanner-caption .column:last-child{width:25%;flex:0 0 25%;padding-right:10px;box-sizing:border-box}.spbc-scan-log-title{color:#1d2327;font-size:1.3em;margin:0 0 15px!important;font-weight:600}.spbc--status{position:relative;padding-left:26px}.spbc--marker-green::before,.spbc--marker-red::before,.spbc--marker-yellow::before{content:'';position:absolute;width:10px;height:10px;border-radius:50%;left:10px;top:4px}.spbc--marker-green::before{background:#1dda23}.spbc--marker-yellow::before{background:#ffb000}.spbc--marker-red::before{background:#d63638}
\ No newline at end of file
diff --git a/css/src/spbc-settings.css b/css/src/spbc-settings.css
index 9b18a38be..4298e6d03 100644
--- a/css/src/spbc-settings.css
+++ b/css/src/spbc-settings.css
@@ -472,6 +472,20 @@ div.pagination{
{
color:black;
}
+.spbc-btn-as-link {
+ padding: 0;
+ margin: 0;
+ vertical-align: baseline;
+ color: gray;
+ border: 0 none;
+ border-bottom: 1px solid;
+ cursor: pointer;
+}
+#spbc-account-email[contenteditable="true"] {
+ padding: 6px;
+ background-color: #fff;
+ border: 1px solid #ccc;
+}
.spbc_dismiss{
width: 20px; height: 20px;
border-radius: 5px;
diff --git a/inc/spbc-admin.php b/inc/spbc-admin.php
index 3d7da390c..5093c083e 100644
--- a/inc/spbc-admin.php
+++ b/inc/spbc-admin.php
@@ -113,6 +113,7 @@ function spbc_admin_init()
add_action('wp_ajax_spbc_settings__check_renew_banner', 'spbc_settings__check_renew_banner');
add_action('wp_ajax_spbc_sync', 'spbc_sync');
add_action('wp_ajax_spbc_get_key_auto', 'spbc_get_key_auto');
+ add_action('wp_ajax_spbc_update_account_email', 'spbc_settings__update_account_email');
// Confirm the email to activate 2FA
add_action('wp_ajax_spbc_generate_confirmation_code', 'spbctGenerateAndSendConfirmationCode');
diff --git a/inc/spbc-settings.php b/inc/spbc-settings.php
index a4f084dd8..1c1a3bca9 100644
--- a/inc/spbc-settings.php
+++ b/inc/spbc-settings.php
@@ -387,7 +387,7 @@ function spbc_settings__register()
'title_first' => true,
'title' => __('Send the notification with the new login page URL to the admin email address', 'security-malware-firewall'),
'description' => __('The email will be send to', 'security-malware-firewall')
- . ' (' . get_option('admin_email') . ')',
+ . ' (' . spbc_get_admin_email() . ')',
'long_description' => true,
'parent' => 'login_page_rename__enabled',
'disabled' => !current_user_can('activate_plugins')
@@ -1309,7 +1309,7 @@ function spbc_settings_page()
if (isset($user->ID) && $user->ID > 0) {
$email = $user->user_email;
} else {
- $email = get_option('admin_email');
+ $email = spbc_get_admin_email();
}
// Outputs errors if exists
@@ -1685,7 +1685,7 @@ function spbc_field_key()
} else {
echo ' ';
echo ' ';
- echo '
+ echo '
';
echo ' ' . __('or', 'security-malware-firewall') . ' ';
@@ -1695,12 +1695,19 @@ function spbc_field_key()
. ' '
. ' ';
echo '
';
- echo '
'
- . sprintf(
- __('Admin e-mail (%s) will be used for registration', 'security-malware-firewall'),
- get_option('admin_email')
- )
- . '
';
+
+ // admin email
+ printf(
+ __(
+ 'Admin e-mail %s %s will be used for registration.',
+ 'security-malware-firewall'
+ ),
+ '
'
+ . spbc_get_admin_email()
+ . ' ',
+ is_main_site() ? spbc_settings__btn_change_account_email_html() : ''
+ );
+
echo '
';
echo ' ';
echo '';
@@ -1723,6 +1730,48 @@ function spbc_field_key()
echo '
';
}
+/**
+ * Current site admin e-mail
+ * @return string Admin e-mail
+ */
+function spbc_get_admin_email()
+{
+ global $spbc;
+
+ if ( ! is_multisite() ) {
+ $admin_email = get_option('admin_email');
+ } else {
+ $admin_email = get_blog_option(get_current_blog_id(), 'admin_email');
+ }
+
+ if ( $spbc->data['account_email'] ) {
+ add_filter('spbc_get_api_key_email', function () {
+ global $spbc;
+ return $spbc->data['account_email'];
+ });
+ }
+
+ return $admin_email;
+}
+
+/**
+ * Show button for changed account email
+ */
+function spbc_settings__btn_change_account_email_html()
+{
+ return '(
'
+ . __('change email', 'security-malware-firewall') .
+ ' )';
+}
+
function spbc_field_service_utilization()
{
global $spbc;
@@ -1759,7 +1808,7 @@ function spbc_settings_2fa_description_callback()
if (isset($user->ID) && $user->ID > 0) {
$email = $user->user_email;
} else {
- $email = get_option('admin_email');
+ $email = spbc_get_admin_email();
}
echo '
'
@@ -3853,7 +3902,7 @@ function spbc_sanitize_settings($settings)
($settings['login_page_rename__send_email_notification'] && current_user_can('activate_plugins'))
) {
$mail = wp_mail(
- get_option('admin_email'),
+ spbc_get_admin_email(),
$spbc->data["wl_brandname"] . esc_html__(': New login URL', 'security-malware-firewall'),
sprintf(
esc_html__('New login URL is: %s', 'security-malware-firewall'),
@@ -4006,7 +4055,7 @@ function spbc_get_key_auto($direct_call = false)
$wpms = SPBC_WPMS && defined('SUBDOMAIN_INSTALL') && ! SUBDOMAIN_INSTALL;
$white_label = false;
$hoster_api_key = $spbc->ms__hoster_api_key;
- $admin_email = get_option('admin_email');
+ $admin_email = spbc_get_admin_email();
/**
* Filters the email to get API key
@@ -4072,6 +4121,58 @@ function spbc_get_key_auto($direct_call = false)
die(json_encode($out));
}
+function spbc_settings__update_account_email($direct_call = false)
+{
+ if ( ! $direct_call) {
+ spbc_check_ajax_referer('spbc_secret_nonce', 'security');
+ }
+
+ global $spbc;
+
+ $account_email = Post::get('accountEmail');
+
+ // not valid email
+ if (!$account_email || !filter_var(Post::get('accountEmail'), FILTER_VALIDATE_EMAIL)) {
+ die(
+ json_encode(
+ array(
+ 'error' => 'Please, enter valid email.'
+ )
+ )
+ );
+ }
+
+ // email not changed
+ if (isset($spbc->data['account_email']) && $account_email === $spbc->data['account_email']) {
+ die(
+ json_encode(
+ array(
+ 'success' => 'ok'
+ )
+ )
+ );
+ }
+
+ $spbc->data['account_email'] = $account_email;
+ $spbc->save('data');
+
+ // Link GET ACCESS KEY MANUALLY
+ $manually_link = sprintf(
+ 'https://cleantalk.org/register?platform=wordpress&email=%s&website=%s',
+ urlencode(spbc_get_admin_email()),
+ urlencode(get_bloginfo('url'))
+ );
+
+ die(
+ json_encode(
+ array(
+ 'success' => 'ok',
+ 'manuallyLink' => $manually_link
+ )
+ )
+ );
+}
+
function spbc_show_more_security_logs_callback()
{
spbc_check_ajax_referer('spbc_secret_nonce', 'security');
@@ -4485,7 +4586,7 @@ function spbctGenerateAndSendConfirmationCode()
if (isset($user->ID) && $user->ID > 0) {
$email = $user->user_email;
} else {
- $email = get_option('admin_email');
+ $email = spbc_get_admin_email();
}
spbc_check_ajax_referer('spbc_secret_nonce', 'security');
diff --git a/js/spbc-settings.min.js b/js/spbc-settings.min.js
index 3912541c8..00b3c637b 100644
--- a/js/spbc-settings.min.js
+++ b/js/spbc-settings.min.js
@@ -1,2 +1,2 @@
-function spbc_switchTab(e,t){var s=e.classList[1].replace("spbc_tab_nav-",""),c=new URLSearchParams(window.location.search),n=(c.set("spbc_tab",s),window.location.hash),n=window.location.pathname+"?"+c.toString()+n;if(history.replaceState(null,"",n),"backups"!==c.get("spbc_tab")&&jQuery(".spbc_tab_nav-backups").hide(),jQuery(".spbc_tab_nav").removeClass("spbc_tab_nav--active"),jQuery(".spbc_tab").removeClass("spbc_tab--active"),jQuery(e).addClass("spbc_tab_nav--active"),jQuery(".spbc_tab-"+s).addClass("spbc_tab--active"),jQuery(e).data("loaded")){if(t&&t.action)switch(t.action){case"highlight":spbcHighlightElement(t.target,t.times);break;case"click":setTimeout(function(){jQuery("#"+t.additional.target).click()},500)}}else{n={action:"spbc_settings__draw_elements",tab_name:s,security:spbcSettings.ajax_nonce},t={callback:spbc_draw_settings_callback,notJson:!0,additional:t||null};spbc_sendAJAXRequest(n,t,e)}}function spbc_draw_settings_callback(e,t,s,c){jQuery(c).data("loaded",!0),jQuery(".spbc_tab-"+t.tab_name).replaceWith(e);c=jQuery(".spbc_tab-"+t.tab_name);if(c.addClass("spbc_tab--active"),jQuery(document).off("click",".spbc_long_description__show"),jQuery(document).on("click",".spbc_long_description__show",function(){spbc_settings__show_description(self=jQuery(this),self.attr("setting"))}),jQuery(document).off("click",".spbc_long_recommendation__show"),jQuery(document).on("click",".spbc_long_recommendation__show",function(){spbc_settings__show_recommendation(self=jQuery(this),self.attr("setting"))}),s.additional)switch(s.additional.action){case"highlight":spbcHighlightElement(s.additional.target,s.additional.times);break;case"click":setTimeout(function(){jQuery("#"+s.additional.target).click()},500)}jQuery(c).on("click",".spbc_hint-send_"+t.tab_name,function(){jQuery(".spbc_hint-send_"+t.tab_name).hide(),spbc_sendAJAXRequest({action:"spbc_send_"+t.tab_name,tab_name:t.tab_name},{callback:spbc_send_logs_callback})}),window.location.hash&&document.getElementById(window.location.hash.substring(1)).scrollIntoView()}function spbc_send_logs_callback(e,t,s,c){jQuery(".spbc_tab_nav-"+t.tab_name).data("loaded",!1),spbc_switchTab(document.getElementsByClassName("spbc_tab_nav-"+t.tab_name)[0])}function spbcSettingsDependenciesbyId(e,o){"string"==typeof e&&((tmp=[]).push(e),e=tmp),o=void 0===o?null:+o,e.forEach(function(e,t,s){function c(){a.setAttribute("disabled","disabled")}function n(){a.removeAttribute("disabled")}var a=document.getElementById("spbc_setting_"+e);(null!==o?1===o?n:c:null===a.getAttribute("disabled")?c:n)()})}function spbcSettingsDependencies(e,o){e="string"==typeof e?e.split(","):e,o=void 0===o?+event.target.checked:+o,e.forEach(function(e,t,s){document.getElementsByName("spbc_settings["+e+"]").forEach(function(e,t,s){function c(){e.setAttribute("disabled","disabled")}function n(){e.removeAttribute("disabled")}(null!==o?1===o?n:c:null===e.getAttribute("disabled")?c:n)();var a=e.getAttribute("children");null!==a&&spbcSettingsDependencies(a,o&&e.checked)})})}function spbc_settings__show_description(e,t){function n(e){void 0!==e&&(0!=jQuery(e.target).parent(".spbc_long_desc").length&&!jQuery(e.target).hasClass("spbc_long_desc__cancel")||jQuery(e.target).hasClass("spbc_long_description__show"))||(jQuery(".spbc_long_desc").remove(),jQuery(document).off("click",n))}n(),e.after("
");var s=jQuery("#spbc_long_desc__"+t);s.append("
").append("
").css({top:e.position().top+25,left:e.position().left+5}),spbc_sendAJAXRequest({action:"spbc_settings__get_description",setting_id:t},{spinner:s.children("img"),callback:function(e,t,s,c){c.empty().append("
").append("
").append("
"+e.title+" ").append("
"+e.desc+"
"),jQuery(document).on("click",n)}},s)}function spbc_settings__show_recommendation(e,t){function n(e){void 0!==e&&(0!=jQuery(e.target).parent(".spbc_long_desc").length&&!jQuery(e.target).hasClass("spbc_long_desc__cancel")||jQuery(e.target).hasClass("spbc_long_recommendation__show"))||(jQuery(".spbc_long_desc").remove(),jQuery(document).off("click",n))}n(),e.after("
");var s=jQuery("#spbc_long_desc__"+t);s.append("
").append("
").css({top:e.position().top+25,left:e.position().left+5}),spbc_sendAJAXRequest({action:"spbc_settings__get_recommendation",setting_id:t},{spinner:s.children("img"),callback:function(e,t,s,c){c.empty().append("
").append("
").append("
"+e.title+" ").append("
"+e.desc+"
"),jQuery(document).on("click",n)}},s)}function spbcStartShowHide(){jQuery(".spbcShortText").off("mouseover").on("mouseover",function(){jQuery(this).next().show()}).off("mouseout").on("mouseout",function(){jQuery(this).next().hide()}),jQuery(".spbcFullText").off("mouseout").on("mouseout",function(){jQuery(this).hide()}).off("mouseover").on("mouseover",function(){jQuery(this).show()})}function spbctGenerateConfirmationCode(){var e={},t={success:!1};return e.security=spbcSettings.ajax_nonce,e.action="spbc_generate_confirmation_code",jQuery.ajax({type:"POST",async:!1,url:spbcSettings.ajaxurl,data:e,success:function(e){e.success?t.success=!0:t.text=e.data}}),t}function spbctCheckConfirmationCode(e,t,s){var c=e,e={};e.security=spbcSettings.ajax_nonce,e.action="spbc_check_confirmation_code",e.code=jQuery("#confirmation-code input").val(),jQuery.ajax({type:"POST",async:!1,url:spbcSettings.ajaxurl,data:e,success:function(e){e.success?(jQuery("[name *= 2fa__enable]").attr("checked",""),c.checked=!0,jQuery("#spbc_setting_2fa__roles").removeAttr("disabled"),jQuery("#spbc_setting_2fa__roles > option:first").attr("selected","selected"),clearTimeout(t),s.remove(),jQuery("#confirmation-code").dialog("close")):alert("Code verification failed!")}})}function spbc_banner_check(){var n=setInterval(function(){spbc_sendAJAXRequest({action:"spbc_settings__check_renew_banner"},{callback:function(e,t,s,c){e.close_renew_banner&&(jQuery("#spbc_renew_notice").length&&jQuery("#spbc_renew_notice").hide("slow"),jQuery("#spbc_trial_notice").length&&jQuery("#spbc_trial_notice").hide("slow"),clearInterval(n))}})},6e4)}String.prototype.printf=function(){var e,t=this;for(e in arguments)var s=t.substring(0,t.indexOf("%s",0)),c=t.substring(t.indexOf("%s",0)+2,t.length),t=s+arguments[e]+c;return t},jQuery(document).ready(function(){jQuery("#spbc_gdpr_open_modal").on("click",function(){jQuery("#gdpr_dialog").dialog({modal:!0,show:!0,position:{my:"center",at:"center",of:window},width:jQuery("#wpbody").width()/100*70,height:"auto",title:"GDPR compliance",draggable:!1,resizable:!1,closeText:"Close"})}),jQuery(document).on("click","[name*=fa__enable]:not([value=0]),#confirmation-code--resend",function(e){e.preventDefault(),jQuery("#confirmation-code--resend").attr("disabled","disabled").append('
');var t=setTimeout(function(){jQuery("#confirmation-code--resend").removeAttr("disabled"),jQuery("#confirmation-code--resend>.circle").remove()},3e4),s=spbctGenerateConfirmationCode();s.success?(jQuery("#confirmation-code input").val(""),jQuery("#confirmation-code").dialog({modal:!0,title:"Confirmation code",width:310,buttons:{Cancel:function(){jQuery(this).dialog("close"),clearTimeout(t),jQuery("#confirmation-code--resend>.circle").remove()},Ok:function(){spbctCheckConfirmationCode(e.target,t,jQuery("#confirmation-code--resend>.circle"))}},draggable:!1,resizable:!1})):alert(s.text)}),(jQuery("#spbc_renew_notice").length||jQuery("#spbc_trial_notice").length)&&spbc_banner_check(),jQuery("#spbc_button__sync").on("click",function(){spbc_sendAJAXRequest({action:"spbc_sync"},{timeout:25e3,button:document.getElementById("spbc_button__sync"),spinner:jQuery("#spbc_button__sync .spbc_preloader_button"),callback:function(e,t,s,c){jQuery("#spbc_button__sync .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_button__sync .spbc_success").hide(300)},2e3),e.reload&&document.location.reload()}})}),spbcSettings.key_changed&&jQuery("#spbc_button__sync").click(),jQuery(document).on("click","#spbc_setting_get_key_auto",function(){spbc_sendAJAXRequest({action:"spbc_get_key_auto"},{timeout:25e3,button:document.getElementById("spbc_setting_get_key_auto"),spinner:jQuery("#spbc_setting_get_key_auto .spbc_preloader_button"),callback:function(e,t,s,c){jQuery("#spbc_setting_get_key_auto .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_setting_get_key_auto .spbc_success").hide(300)},2e3),e.reload&&document.location.reload(),e.getTemplates&&(spbcModal.loaded=e.getTemplates,spbcModal.open(),document.addEventListener("spbcModalClosed",function(e){document.location.reload()}))}})}),jQuery(document).on("click","#spbc_settings_templates_import_button",function(){jQuery("#spbc-ajax-result").remove();var n,e=jQuery("option:selected",jQuery("#spbc_settings_templates_import"));jQuery("#spbc_settings_templates_import_name").css("border-color","inherit"),void 0===e.data("id")?console.log('Attribute "data-id" not set for the option.'):(e={template_id:e.data("id"),template_name:e.data("name"),settings:e.data("settings")},n=this,spbc_sendAJAXRequest({action:"spbc_settings_templates_import",data:e},{timeout:25e3,button:n,spinner:jQuery("#spbc_settings_templates_import_button .spbc_preloader_button"),callback:function(e,t,s,c){e.success?(jQuery("
"+e.data+"
").insertAfter(jQuery(n)),jQuery("#spbc_settings_templates_import_button .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_settings_templates_import_button .spbc_success").hide(300)},2e3),document.addEventListener("spbcModalClosed",function(e){document.location.reload()}),setTimeout(function(){spbcModal.close()},2e3)):jQuery("
"+e.data+"
").insertAfter(jQuery(n))}}))}),jQuery(document).on("click","#spbc_settings_templates_export_button",function(){jQuery("#spbc-ajax-result").remove();var e=jQuery("option:selected",jQuery("#spbc_settings_templates_export")),t=jQuery("#spbc_settings_templates_export_name");if(t.css("border-color","inherit"),void 0===e.data("id"))console.log('Attribute "data-id" not set for the option.');else{if("new_template"===e.data("id")){var s=t.val();if(""===s)return void t.css("border-color","red");s={template_name:s}}else s={template_id:e.data("id")};var n=this;spbc_sendAJAXRequest({action:"spbc_settings_templates_export",data:s},{timeout:25e3,button:n,spinner:jQuery("#spbc_settings_templates_export_button .spbc_preloader_button"),callback:function(e,t,s,c){e.success?(jQuery("
"+e.data+"
").insertAfter(jQuery(n)),jQuery("#spbc_settings_templates_export_button .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_settings_templates_export_button .spbc_success").hide(300)},2e3),document.addEventListener("spbcModalClosed",function(e){document.location.reload()}),setTimeout(function(){spbcModal.close()},2e3)):jQuery("
"+e.data+"
").insertAfter(jQuery(n))}})}}),jQuery(document).on("click","#spbc_settings_templates_reset_button",function(){var n=this;spbc_sendAJAXRequest({action:"spbc_settings_templates_reset"},{timeout:25e3,button:n,spinner:jQuery("#spbc_settings_templates_reset_button .spbc_preloader_button"),callback:function(e,t,s,c){e.success?(jQuery("
"+e.data+"
").insertAfter(jQuery(n)),jQuery("#spbc_settings_templates_reset_button .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_settings_templates_reset_button .spbc_success").hide(300)},2e3),document.addEventListener("spbcModalClosed",function(e){document.location.reload()}),setTimeout(function(){spbcModal.close()},2e3)):jQuery("
"+e.data+"
").insertAfter(jQuery(n))}})}),jQuery(document).on("change","#spbc_settings_templates_export",function(){"new_template"===jQuery("option:selected",this).data("id")?jQuery(this).parent().parent().find("#spbc_settings_templates_export_name").show():jQuery(this).parent().parent().find("#spbc_settings_templates_export_name").hide()}),jQuery(".spbc_tab_nav-summary").data("loaded",!0),jQuery(".spbc_tabs_nav_wrapper").on("click",".spbc_tab_nav",function(e){spbc_switchTab(e.currentTarget)});var e={target:location.search.match(/spbc_target=(\S*?)(&|$)/)?location.search.match(/spbc_target=(\S*?)(&|$)/)[1]:null,action:location.search.match(/spbc_action=(\S*?)(&|$)/)?location.search.match(/spbc_action=(\S*?)(&|$)/)[1]:null,times:location.search.match(/spbc_times=(\S*?)(&|$)/)?location.search.match(/spbc_times=(\S*?)(&|$)/)[1]:3},t=(e.target=location.search.match(/spbc_highlight=(\S*?)(&|$)/)?location.search.match(/spbc_highlight=(\S*?)(&|$)/)[1]:e.target,e.action=-1!=location.search.search(/spbc_highlight=(\S*?)(&|$)/)?"highlight":e.action,document.getElementsByClassName("spbc_tab_nav-"+(location.search.match(/spbc_tab=(\S*?)(&|$)/)?location.search.match(/spbc_tab=(\S*?)(&|$)/)[1]:""))[0]||null),s=(t||(+spbcSettings.debug?t=document.getElementsByClassName("spbc_tab_nav-debug")[0]:+spbcSettings.wpms&&!+spbcSettings.is_main_site?t=document.getElementsByClassName("spbc_tab_nav-security_log")[0]:+spbcSettings.key_is_ok&&+spbcSettings.secfw_enabled?t=document.getElementsByClassName("spbc_tab_nav-traffic_control")[0]:+spbcSettings.key_is_ok?t=document.getElementsByClassName("spbc_tab_nav-scanner")[0]:(t=document.getElementsByClassName("spbc_tab_nav-settings_general")[0],e={target:"spbc_key",action:"highlight",times:3})),t&&spbc_switchTab(t,e),!1);jQuery(document).on("keyup",function(e){17==(e.which||e.keyCode)&&(s=!1)}),jQuery(document).on("keydown",function(e){var t;116==(e.which||e.keyCode)&&s?(e.preventDefault(),"scanner"!==(t=jQuery(".spbc_tab_nav--active")[0]).classList[1].replace("spbc_tab_nav-","")&&(jQuery(t).data("loaded",!1),spbc_switchTab(t))):17==(e.which||e.keyCode)&&(s=!0)})});
+function spbc_switchTab(e,t){var s=e.classList[1].replace("spbc_tab_nav-",""),c=new URLSearchParams(window.location.search),n=(c.set("spbc_tab",s),window.location.hash),n=window.location.pathname+"?"+c.toString()+n;if(history.replaceState(null,"",n),"backups"!==c.get("spbc_tab")&&jQuery(".spbc_tab_nav-backups").hide(),jQuery(".spbc_tab_nav").removeClass("spbc_tab_nav--active"),jQuery(".spbc_tab").removeClass("spbc_tab--active"),jQuery(e).addClass("spbc_tab_nav--active"),jQuery(".spbc_tab-"+s).addClass("spbc_tab--active"),jQuery(e).data("loaded")){if(t&&t.action)switch(t.action){case"highlight":spbcHighlightElement(t.target,t.times);break;case"click":setTimeout(function(){jQuery("#"+t.additional.target).click()},500)}}else{n={action:"spbc_settings__draw_elements",tab_name:s,security:spbcSettings.ajax_nonce},t={callback:spbc_draw_settings_callback,notJson:!0,additional:t||null};spbc_sendAJAXRequest(n,t,e)}}function spbc_draw_settings_callback(e,t,s,c){jQuery(c).data("loaded",!0),jQuery(".spbc_tab-"+t.tab_name).replaceWith(e);c=jQuery(".spbc_tab-"+t.tab_name);if(c.addClass("spbc_tab--active"),jQuery(document).off("click",".spbc_long_description__show"),jQuery(document).on("click",".spbc_long_description__show",function(){spbc_settings__show_description(self=jQuery(this),self.attr("setting"))}),jQuery(document).off("click",".spbc_long_recommendation__show"),jQuery(document).on("click",".spbc_long_recommendation__show",function(){spbc_settings__show_recommendation(self=jQuery(this),self.attr("setting"))}),s.additional)switch(s.additional.action){case"highlight":spbcHighlightElement(s.additional.target,s.additional.times);break;case"click":setTimeout(function(){jQuery("#"+s.additional.target).click()},500)}jQuery(c).on("click",".spbc_hint-send_"+t.tab_name,function(){jQuery(".spbc_hint-send_"+t.tab_name).hide(),spbc_sendAJAXRequest({action:"spbc_send_"+t.tab_name,tab_name:t.tab_name},{callback:spbc_send_logs_callback})}),window.location.hash&&document.getElementById(window.location.hash.substring(1)).scrollIntoView()}function spbc_send_logs_callback(e,t,s,c){jQuery(".spbc_tab_nav-"+t.tab_name).data("loaded",!1),spbc_switchTab(document.getElementsByClassName("spbc_tab_nav-"+t.tab_name)[0])}function spbcSettingsDependenciesbyId(e,o){"string"==typeof e&&((tmp=[]).push(e),e=tmp),o=void 0===o?null:+o,e.forEach(function(e,t,s){function c(){a.setAttribute("disabled","disabled")}function n(){a.removeAttribute("disabled")}var a=document.getElementById("spbc_setting_"+e);(null!==o?1===o?n:c:null===a.getAttribute("disabled")?c:n)()})}function spbcSettingsDependencies(e,o){e="string"==typeof e?e.split(","):e,o=void 0===o?+event.target.checked:+o,e.forEach(function(e,t,s){document.getElementsByName("spbc_settings["+e+"]").forEach(function(e,t,s){function c(){e.setAttribute("disabled","disabled")}function n(){e.removeAttribute("disabled")}(null!==o?1===o?n:c:null===e.getAttribute("disabled")?c:n)();var a=e.getAttribute("children");null!==a&&spbcSettingsDependencies(a,o&&e.checked)})})}function spbc_settings__show_description(e,t){function n(e){void 0!==e&&(0!=jQuery(e.target).parent(".spbc_long_desc").length&&!jQuery(e.target).hasClass("spbc_long_desc__cancel")||jQuery(e.target).hasClass("spbc_long_description__show"))||(jQuery(".spbc_long_desc").remove(),jQuery(document).off("click",n))}n(),e.after("
");var s=jQuery("#spbc_long_desc__"+t);s.append("
").append("
").css({top:e.position().top+25,left:e.position().left+5}),spbc_sendAJAXRequest({action:"spbc_settings__get_description",setting_id:t},{spinner:s.children("img"),callback:function(e,t,s,c){c.empty().append("
").append("
").append("
"+e.title+" ").append("
"+e.desc+"
"),jQuery(document).on("click",n)}},s)}function spbc_settings__show_recommendation(e,t){function n(e){void 0!==e&&(0!=jQuery(e.target).parent(".spbc_long_desc").length&&!jQuery(e.target).hasClass("spbc_long_desc__cancel")||jQuery(e.target).hasClass("spbc_long_recommendation__show"))||(jQuery(".spbc_long_desc").remove(),jQuery(document).off("click",n))}n(),e.after("
");var s=jQuery("#spbc_long_desc__"+t);s.append("
").append("
").css({top:e.position().top+25,left:e.position().left+5}),spbc_sendAJAXRequest({action:"spbc_settings__get_recommendation",setting_id:t},{spinner:s.children("img"),callback:function(e,t,s,c){c.empty().append("
").append("
").append("
"+e.title+" ").append("
"+e.desc+"
"),jQuery(document).on("click",n)}},s)}function spbcStartShowHide(){jQuery(".spbcShortText").off("mouseover").on("mouseover",function(){jQuery(this).next().show()}).off("mouseout").on("mouseout",function(){jQuery(this).next().hide()}),jQuery(".spbcFullText").off("mouseout").on("mouseout",function(){jQuery(this).hide()}).off("mouseover").on("mouseover",function(){jQuery(this).show()})}function spbctGenerateConfirmationCode(){var e={},t={success:!1};return e.security=spbcSettings.ajax_nonce,e.action="spbc_generate_confirmation_code",jQuery.ajax({type:"POST",async:!1,url:spbcSettings.ajaxurl,data:e,success:function(e){e.success?t.success=!0:t.text=e.data}}),t}function spbctCheckConfirmationCode(e,t,s){var c=e,e={};e.security=spbcSettings.ajax_nonce,e.action="spbc_check_confirmation_code",e.code=jQuery("#confirmation-code input").val(),jQuery.ajax({type:"POST",async:!1,url:spbcSettings.ajaxurl,data:e,success:function(e){e.success?(jQuery("[name *= 2fa__enable]").attr("checked",""),c.checked=!0,jQuery("#spbc_setting_2fa__roles").removeAttr("disabled"),jQuery("#spbc_setting_2fa__roles > option:first").attr("selected","selected"),clearTimeout(t),s.remove(),jQuery("#confirmation-code").dialog("close")):alert("Code verification failed!")}})}function spbc_banner_check(){var n=setInterval(function(){spbc_sendAJAXRequest({action:"spbc_settings__check_renew_banner"},{callback:function(e,t,s,c){e.close_renew_banner&&(jQuery("#spbc_renew_notice").length&&jQuery("#spbc_renew_notice").hide("slow"),jQuery("#spbc_trial_notice").length&&jQuery("#spbc_trial_notice").hide("slow"),clearInterval(n))}})},6e4)}function spbcToggleClass(t,s){for(let e=0;e
');var t=setTimeout(function(){jQuery("#confirmation-code--resend").removeAttr("disabled"),jQuery("#confirmation-code--resend>.circle").remove()},3e4),s=spbctGenerateConfirmationCode();s.success?(jQuery("#confirmation-code input").val(""),jQuery("#confirmation-code").dialog({modal:!0,title:"Confirmation code",width:310,buttons:{Cancel:function(){jQuery(this).dialog("close"),clearTimeout(t),jQuery("#confirmation-code--resend>.circle").remove()},Ok:function(){spbctCheckConfirmationCode(e.target,t,jQuery("#confirmation-code--resend>.circle"))}},draggable:!1,resizable:!1})):alert(s.text)}),(jQuery("#spbc_renew_notice").length||jQuery("#spbc_trial_notice").length)&&spbc_banner_check(),jQuery("#spbc_button__sync").on("click",function(){spbc_sendAJAXRequest({action:"spbc_sync"},{timeout:25e3,button:document.getElementById("spbc_button__sync"),spinner:jQuery("#spbc_button__sync .spbc_preloader_button"),callback:function(e,t,s,c){jQuery("#spbc_button__sync .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_button__sync .spbc_success").hide(300)},2e3),e.reload&&document.location.reload()}})}),spbcSettings.key_changed&&jQuery("#spbc_button__sync").click(),jQuery(document).on("click","#spbc_setting_get_key_auto",function(){spbc_sendAJAXRequest({action:"spbc_get_key_auto"},{timeout:25e3,button:document.getElementById("spbc_setting_get_key_auto"),spinner:jQuery("#spbc_setting_get_key_auto .spbc_preloader_button"),callback:function(e,t,s,c){jQuery("#spbc_setting_get_key_auto .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_setting_get_key_auto .spbc_success").hide(300)},2e3),e.reload&&document.location.reload(),e.getTemplates&&(spbcModal.loaded=e.getTemplates,spbcModal.open(),document.addEventListener("spbcModalClosed",function(e){document.location.reload()}))}})}),jQuery(document).on("click","#spbc_settings_templates_import_button",function(){jQuery("#spbc-ajax-result").remove();var n,e=jQuery("option:selected",jQuery("#spbc_settings_templates_import"));jQuery("#spbc_settings_templates_import_name").css("border-color","inherit"),void 0===e.data("id")?console.log('Attribute "data-id" not set for the option.'):(e={template_id:e.data("id"),template_name:e.data("name"),settings:e.data("settings")},n=this,spbc_sendAJAXRequest({action:"spbc_settings_templates_import",data:e},{timeout:25e3,button:n,spinner:jQuery("#spbc_settings_templates_import_button .spbc_preloader_button"),callback:function(e,t,s,c){e.success?(jQuery("
"+e.data+"
").insertAfter(jQuery(n)),jQuery("#spbc_settings_templates_import_button .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_settings_templates_import_button .spbc_success").hide(300)},2e3),document.addEventListener("spbcModalClosed",function(e){document.location.reload()}),setTimeout(function(){spbcModal.close()},2e3)):jQuery("
"+e.data+"
").insertAfter(jQuery(n))}}))}),jQuery(document).on("click","#spbc_settings_templates_export_button",function(){jQuery("#spbc-ajax-result").remove();var e=jQuery("option:selected",jQuery("#spbc_settings_templates_export")),t=jQuery("#spbc_settings_templates_export_name");if(t.css("border-color","inherit"),void 0===e.data("id"))console.log('Attribute "data-id" not set for the option.');else{if("new_template"===e.data("id")){var s=t.val();if(""===s)return void t.css("border-color","red");s={template_name:s}}else s={template_id:e.data("id")};var n=this;spbc_sendAJAXRequest({action:"spbc_settings_templates_export",data:s},{timeout:25e3,button:n,spinner:jQuery("#spbc_settings_templates_export_button .spbc_preloader_button"),callback:function(e,t,s,c){e.success?(jQuery("
"+e.data+"
").insertAfter(jQuery(n)),jQuery("#spbc_settings_templates_export_button .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_settings_templates_export_button .spbc_success").hide(300)},2e3),document.addEventListener("spbcModalClosed",function(e){document.location.reload()}),setTimeout(function(){spbcModal.close()},2e3)):jQuery("
"+e.data+"
").insertAfter(jQuery(n))}})}}),jQuery(document).on("click","#spbc_settings_templates_reset_button",function(){var n=this;spbc_sendAJAXRequest({action:"spbc_settings_templates_reset"},{timeout:25e3,button:n,spinner:jQuery("#spbc_settings_templates_reset_button .spbc_preloader_button"),callback:function(e,t,s,c){e.success?(jQuery("
"+e.data+"
").insertAfter(jQuery(n)),jQuery("#spbc_settings_templates_reset_button .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_settings_templates_reset_button .spbc_success").hide(300)},2e3),document.addEventListener("spbcModalClosed",function(e){document.location.reload()}),setTimeout(function(){spbcModal.close()},2e3)):jQuery("
"+e.data+"
").insertAfter(jQuery(n))}})}),jQuery(document).on("change","#spbc_settings_templates_export",function(){"new_template"===jQuery("option:selected",this).data("id")?jQuery(this).parent().parent().find("#spbc_settings_templates_export_name").show():jQuery(this).parent().parent().find("#spbc_settings_templates_export_name").hide()}),jQuery(".spbc_tab_nav-summary").data("loaded",!0),jQuery(".spbc_tabs_nav_wrapper").on("click",".spbc_tab_nav",function(e){spbc_switchTab(e.currentTarget)});var e={target:location.search.match(/spbc_target=(\S*?)(&|$)/)?location.search.match(/spbc_target=(\S*?)(&|$)/)[1]:null,action:location.search.match(/spbc_action=(\S*?)(&|$)/)?location.search.match(/spbc_action=(\S*?)(&|$)/)[1]:null,times:location.search.match(/spbc_times=(\S*?)(&|$)/)?location.search.match(/spbc_times=(\S*?)(&|$)/)[1]:3},t=(e.target=location.search.match(/spbc_highlight=(\S*?)(&|$)/)?location.search.match(/spbc_highlight=(\S*?)(&|$)/)[1]:e.target,e.action=-1!=location.search.search(/spbc_highlight=(\S*?)(&|$)/)?"highlight":e.action,document.getElementsByClassName("spbc_tab_nav-"+(location.search.match(/spbc_tab=(\S*?)(&|$)/)?location.search.match(/spbc_tab=(\S*?)(&|$)/)[1]:""))[0]||null),s=(t||(+spbcSettings.debug?t=document.getElementsByClassName("spbc_tab_nav-debug")[0]:+spbcSettings.wpms&&!+spbcSettings.is_main_site?t=document.getElementsByClassName("spbc_tab_nav-security_log")[0]:+spbcSettings.key_is_ok&&+spbcSettings.secfw_enabled?t=document.getElementsByClassName("spbc_tab_nav-traffic_control")[0]:+spbcSettings.key_is_ok?t=document.getElementsByClassName("spbc_tab_nav-scanner")[0]:(t=document.getElementsByClassName("spbc_tab_nav-settings_general")[0],e={target:"spbc_key",action:"highlight",times:3})),t&&spbc_switchTab(t,e),!1);jQuery(document).on("keyup",function(e){17==(e.which||e.keyCode)&&(s=!1)}),jQuery(document).on("keydown",function(e){var t;116==(e.which||e.keyCode)&&s?(e.preventDefault(),"scanner"!==(t=jQuery(".spbc_tab_nav--active")[0]).classList[1].replace("spbc_tab_nav-","")&&(jQuery(t).data("loaded",!1),spbc_switchTab(t))):17==(e.which||e.keyCode)&&(s=!0)}),jQuery(document).on("click","#spbc-change-account-email",function(e){e.preventDefault();var e=jQuery(this),t=jQuery("#spbc-account-email"),s=t.text();spbcToggleClass(e,"active"),e.hasClass("active")?(e.text(e.data("save-text")),t.attr("contenteditable","true"),t.focus(),t.on("keydown",function(e){"Enter"===e.code&&e.preventDefault()}),t.on("input",function(e){"insertParagraph"===e.inputType&&e.preventDefault()})):(spbc_sendAJAXRequest({action:"spbc_update_account_email",accountEmail:s},{timeout:5e3,callback:function(e,t,s,c){void 0!==e.success&&"ok"===e.success&&void 0!==e.manuallyLink&&jQuery("#spbc-key-manually-link").attr("href",e.manuallyLink),void 0!==e.error&&jQuery("#spbc-account-email").css("border-color","red")},errorOutput:function(e){spbcModal.loaded=e,spbcModal.open()}}),t.attr("contenteditable","false"),e.text(e.data("default-text")))})});
//# sourceMappingURL=spbc-settings.min.js.map
diff --git a/js/spbc-settings.min.js.map b/js/spbc-settings.min.js.map
index 3aff6c443..12a53ca5f 100644
--- a/js/spbc-settings.min.js.map
+++ b/js/spbc-settings.min.js.map
@@ -1 +1 @@
-{"version":3,"file":"spbc-settings.min.js","sources":["spbc-settings.js"],"sourcesContent":["// Printf for JS\nString.prototype.printf = function(){\n var formatted = this;\n for( var arg in arguments ) {\n var before_formatted = formatted.substring(0, formatted.indexOf(\"%s\", 0));\n var after_formatted = formatted.substring(formatted.indexOf(\"%s\", 0)+2, formatted.length);\n formatted = before_formatted + arguments[arg] + after_formatted;\n }\n return formatted;\n};\n\n// Switching tabs\nfunction spbc_switchTab(tab, params){\n\n\tvar tab_name = tab.classList[1].replace('spbc_tab_nav-', '');\n\n\t// update url \n\tvar searchParams = new URLSearchParams(window.location.search)\n searchParams.set(\"spbc_tab\", tab_name);\n\tvar hashParam = window.location.hash;\n var newRelativePathQuery = window.location.pathname + '?' + searchParams.toString() + hashParam;\n\n history.replaceState(null, '', newRelativePathQuery);\n\n\t// Hiding a tab 'Backups' if exist\n if(searchParams.get('spbc_tab') !== 'backups') {\n \tjQuery('.spbc_tab_nav-backups').hide();\n }\n\n // update active tab\n\tjQuery('.spbc_tab_nav').removeClass('spbc_tab_nav--active');\n\tjQuery('.spbc_tab').removeClass('spbc_tab--active');\n\tjQuery(tab).addClass('spbc_tab_nav--active');\n\tjQuery('.spbc_tab-'+tab_name).addClass('spbc_tab--active');\n\n\tif(!jQuery(tab).data('loaded')){\n\t\tvar data = {\n\t\t\taction: 'spbc_settings__draw_elements',\n\t\t\ttab_name: tab_name,\n\t\t\tsecurity: spbcSettings.ajax_nonce\n\t\t};\n\t\tvar params = {\n\t\t\tcallback: spbc_draw_settings_callback,\n\t\t\tnotJson: true,\n additional: params || null,\n\t\t};\n\t\tspbc_sendAJAXRequest( data, params, tab );\n\t}else if(params && params.action){\n switch (params.action){\n case 'highlight':\n spbcHighlightElement(params.target, params.times);\n break;\n case 'click':\n setTimeout(function(){\n jQuery('#'+params.additional.target).click();\n }, 500);\n break;\n }\n\t}\n}\n\nfunction spbc_draw_settings_callback(result, data, params, obj){\n\n\tjQuery(obj).data('loaded', true);\n\tjQuery('.spbc_tab-'+data.tab_name).replaceWith(result);\n\tvar tab = jQuery('.spbc_tab-'+data.tab_name);\n\ttab.addClass('spbc_tab--active');\n\n\tjQuery(document).off( 'click', '.spbc_long_description__show');\n\tjQuery(document).on('click', '.spbc_long_description__show', function(){\n\t\tself = jQuery(this);\n\t\tspbc_settings__show_description(self, self.attr('setting'));\n\t});\n\n\tjQuery(document).off( 'click', '.spbc_long_recommendation__show');\n\tjQuery(document).on('click', '.spbc_long_recommendation__show', function(){\n\t\tself = jQuery(this);\n\t\tspbc_settings__show_recommendation(self, self.attr('setting'));\n\t});\n\n\tif(params.additional){\n\t switch (params.additional.action) {\n case 'highlight':\n\t\t spbcHighlightElement(params.additional.target, params.additional.times);\n break;\n case 'click':\n setTimeout(function(){\n\t\t jQuery('#'+params.additional.target).click();\n }, 500);\n break;\n }\n }\n\n\tjQuery(tab).on('click', '.spbc_hint-send_'+data.tab_name, function(){\n\t\t\tjQuery('.spbc_hint-send_'+data.tab_name).hide();\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_send_'+data.tab_name, tab_name: data.tab_name},\n\t\t\t{callback: spbc_send_logs_callback}\n\t\t);\n\t});\n\n\t// scroll to anchor\n\tif (window.location.hash) {\n\t\tdocument.getElementById(window.location.hash.substring(1)).scrollIntoView();\n\t}\n}\n\nfunction spbc_send_logs_callback(result, data, params, obj){\n\tjQuery('.spbc_tab_nav-'+data.tab_name).data('loaded', false);\n\tspbc_switchTab(document.getElementsByClassName('spbc_tab_nav-'+data.tab_name)[0]);\n}\n\n// Settings dependences\nfunction spbcSettingsDependenciesbyId(settingsIDs, enable){\n\n\tif(typeof settingsIDs === 'string'){\n\t\ttmp = [];\n\t\ttmp.push(settingsIDs);\n\t\tsettingsIDs = tmp;\n\t}\n\n\tenable = typeof enable === 'undefined' ? null : +enable;\n\n\tsettingsIDs.forEach(function(settingID, i, arr){\n\n\t\tvar elem = document.getElementById('spbc_setting_'+settingID),\n do_disable = function(){elem.setAttribute('disabled', 'disabled');},\n do_enable = function(){elem.removeAttribute('disabled');};\n\n if(enable !== null) // Set\n enable === 1 ? do_enable() : do_disable();\n else // Switch\n elem.getAttribute('disabled') === null ? do_disable() : do_enable();\n\n\t});\n}\n\n/**\n * Recursive in case children found!\n *\n * Settings dependencies\n *\n */\nfunction spbcSettingsDependencies(settingNames, enable){\n\n\t// Cast settingNames to array\n\tsettingNames = typeof settingNames === 'string' ? settingNames.split(',') : settingNames;\n\tenable = typeof enable === 'undefined' ? +event.target.checked : +enable;\n\n\tsettingNames.forEach(function(settingName, i, arr){\n\n\t\tdocument.getElementsByName('spbc_settings['+settingName+']')\n\t\t\t.forEach(function( elem, i, arr ){\n\n\t\t\t\tvar\tdo_disable = function(){elem.setAttribute('disabled', 'disabled');},\n\t\t\t\t\tdo_enable = function(){elem.removeAttribute('disabled');};\n\t\t\t\tif(enable !== null) // Set\n\t\t\t\t\tenable === 1 ? do_enable() : do_disable();\n\t\t\t\telse // Switch\n\t\t\t\t\telem.getAttribute('disabled') === null ? do_disable() : do_enable();\n\n\t\t\t\tvar children = elem.getAttribute('children');\n\t\t\t\tif( children !== null ){\n\t\t\t\t\tspbcSettingsDependencies(children, enable && elem.checked);\n\t\t\t\t}\n\t\t\t});\n\t});\n}\n\nfunction spbc_settings__show_description(label, setting_id){\n\t\n\tvar remove_desc_func = function(e){\n\t\tif(typeof e === 'undefined' || ((jQuery(e.target).parent('.spbc_long_desc').length == 0 || jQuery(e.target).hasClass('spbc_long_desc__cancel')) && !jQuery(e.target).hasClass('spbc_long_description__show'))){\n\t\t\tjQuery('.spbc_long_desc').remove();\n\t\t\tjQuery(document).off('click', remove_desc_func);\n\t\t}\n\t};\n\t\n\tremove_desc_func();\n\t\n\tlabel.after(\"
\");\n\tvar obj = jQuery('#spbc_long_desc__'+setting_id);\n\tobj.append(\"
\")\n\t\t.append(\"
\")\n\t\t.css({\n\t\t\ttop: label.position().top + 25,\n\t\t\tleft: label.position().left + 5\n\t\t});\n\n\t\n\tspbc_sendAJAXRequest(\n\t\t{action: 'spbc_settings__get_description', setting_id: setting_id},\n\t\t{\n\t\t\tspinner: obj.children('img'),\n\t\t\tcallback: function(result, data, params, obj){\n\n\t\t\t\tobj.empty()\n\t\t\t\t\t.append(\"
\")\n\t\t\t\t\t.append(\"
\")\n\t\t\t\t\t.append(\"
\"+result.title+\" \")\n\t\t\t\t\t.append(\"
\"+result.desc+\"
\");\n\n\t\t\t\tjQuery(document).on('click', remove_desc_func);\n\t\t\t}\n\t\t},\n\t\tobj\n\t);\n}\n\nfunction spbc_settings__show_recommendation(label, setting_id){\n\t\n\tvar remove_recommendation_func = function(e){\n\t\tif(typeof e === 'undefined' || ((jQuery(e.target).parent('.spbc_long_desc').length == 0 || jQuery(e.target).hasClass('spbc_long_desc__cancel')) && !jQuery(e.target).hasClass('spbc_long_recommendation__show'))){\n\t\t\tjQuery('.spbc_long_desc').remove();\n\t\t\tjQuery(document).off('click', remove_recommendation_func);\n\t\t}\n\t};\n\t\n\tremove_recommendation_func();\n\t\n\tlabel.after(\"
\");\n\tvar obj = jQuery('#spbc_long_desc__'+setting_id);\n\tobj.append(\"
\")\n\t\t.append(\"
\")\n\t\t.css({\n\t\t\ttop: label.position().top + 25,\n\t\t\tleft: label.position().left + 5\n\t\t});\n\n\t\n\tspbc_sendAJAXRequest(\n\t\t{action: 'spbc_settings__get_recommendation', setting_id: setting_id},\n\t\t{\n\t\t\tspinner: obj.children('img'),\n\t\t\tcallback: function(result, data, params, obj){\n\n\t\t\t\tobj.empty()\n\t\t\t\t\t.append(\"
\")\n\t\t\t\t\t.append(\"
\")\n\t\t\t\t\t.append(\"
\"+result.title+\" \")\n\t\t\t\t\t.append(\"
\"+result.desc+\"
\");\n\n\t\t\t\tjQuery(document).on('click', remove_recommendation_func);\n\t\t\t}\n\t\t},\n\t\tobj\n\t);\n}\n\n// Shows/hides full text\nfunction spbcStartShowHide(){\n\tjQuery('.spbcShortText')\n\t\t.off('mouseover' )\n\t\t.on('mouseover', function(){ jQuery(this).next().show(); })\n\t\t.off('mouseout' )\n\t\t.on('mouseout', function(){ jQuery(this).next().hide(); });\n\tjQuery('.spbcFullText')\n\t\t.off('mouseout' )\n\t\t.on('mouseout', function(){ jQuery(this).hide(); })\n\t\t.off('mouseover' )\n\t\t.on('mouseover', function(){ jQuery(this).show(); })\n}\n\n// Generate and save confirmation code\nfunction spbctGenerateConfirmationCode() {\n\n\tvar data = {};\n\tvar res = {};\n\tres.success = false;\n\tdata.security = spbcSettings.ajax_nonce;\n\tdata.action = 'spbc_generate_confirmation_code';\n\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\tasync: false,\n\t\turl: spbcSettings.ajaxurl,\n\t\tdata: data,\n\t\tsuccess: function(result){\n\t\t\tif(result.success) {\n\t\t\t\tres.success = true;\n\t\t\t} else {\n\t\t\t\tres.text = result.data;\n\t\t\t}\n\t\t},\n\t});\n\treturn res;\n}\n// Check confirmation code\nfunction spbctCheckConfirmationCode( radioButton, timeout, timer ) {\n\n\tvar element = radioButton;\n\tvar data = {};\n\tdata.security = spbcSettings.ajax_nonce;\n\tdata.action = 'spbc_check_confirmation_code';\n\tdata.code = jQuery('#confirmation-code input').val();\n\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\tasync: false,\n\t\turl: spbcSettings.ajaxurl,\n\t\tdata: data,\n\t\tsuccess: function(result){\n\t\t\tif(result.success) {\n\t\t\t\tjQuery('[name *= 2fa__enable]').attr(\"checked\", \"\");\n\t\t\t\telement.checked = true;\n\t\t\t\tjQuery('#spbc_setting_2fa__roles').removeAttr('disabled');\n\t\t\t\tjQuery('#spbc_setting_2fa__roles > option:first').attr('selected','selected');\n\t\t\t\tclearTimeout( timeout );\n\t\t\t\ttimer.remove();\n\t\t\t\tjQuery('#confirmation-code').dialog( \"close\" );\n\t\t\t} else {\n\t\t\t\talert('Code verification failed!');\n\t\t\t}\n\t\t},\n\t});\n\n}\n\n/**\n * Checking current account status for renew notice\n */\nfunction spbc_banner_check() {\n\tvar bannerChecker = setInterval( function() {\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_settings__check_renew_banner'},\n\t\t\t{\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tif (result.close_renew_banner) {\n\t\t\t\t\t\tif (jQuery('#spbc_renew_notice').length)\n\t\t\t\t\t\t\tjQuery('#spbc_renew_notice').hide('slow');\n\t\t\t\t\t\tif (jQuery('#spbc_trial_notice').length)\n\t\t\t\t\t\t\tjQuery('#spbc_trial_notice').hide('slow');\n\t\t\t\t\t\tclearInterval(bannerChecker);\n\t\t\t\t\t}\t\t\t\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}, 60000);\n}\n\njQuery(document).ready(function(){\n\t\n\tjQuery('#spbc_gdpr_open_modal').on('click', function(){\n\t\tjQuery('#gdpr_dialog').dialog({\n\t\t\tmodal:true, \n\t\t\tshow: true,\n\t\t\tposition: { my: \"center\", at: \"center\", of: window },\n\t\t\twidth: +(jQuery('#wpbody').width() / 100 * 70), // 70% of #wpbody\n\t\t\theight: 'auto',\n\t\t\ttitle: 'GDPR compliance',\n\t\t\tdraggable: false,\n\t\t\tresizable: false,\n\t\t\tcloseText: \"Close\",\n\t\t});\n\t});\n\n\t// Checking email receiving possibility for activation 2FA\n\tjQuery(document).on('click', '[name*=fa__enable]:not([value=0]),#confirmation-code--resend', function(e){\n\n\t\te.preventDefault();\n\n\t\tjQuery('#confirmation-code--resend').attr('disabled', 'disabled')\n\t\t\t.append('
');\n\t\tvar enableResend = setTimeout(function(){\n\t\t\tjQuery('#confirmation-code--resend').removeAttr('disabled');\n\t\t\tjQuery('#confirmation-code--resend>.circle').remove();\n\t\t}, 30000);\n\n\t\tvar res = spbctGenerateConfirmationCode();\n\t\tif( res.success ) {\n\t\t\tjQuery('#confirmation-code input').val('');\n\t\t\tjQuery('#confirmation-code').dialog({\n\t\t\t\tmodal: true,\n\t\t\t\ttitle: 'Confirmation code',\n\t\t\t\twidth: 310,\n\t\t\t\tbuttons: {\n\t\t\t\t\tCancel: function() {\n\t\t\t\t\t\tjQuery( this ).dialog( \"close\" );\n\t\t\t\t\t\tclearTimeout( enableResend );\n\t\t\t\t\t\tjQuery('#confirmation-code--resend>.circle').remove();\n\t\t\t\t\t},\n\t\t\t\t\tOk: function() {\n\t\t\t\t\t\tspbctCheckConfirmationCode(e.target, enableResend, jQuery('#confirmation-code--resend>.circle'));\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tdraggable: false,\n\t\t\t\tresizable: false,\n\t\t\t});\n\t\t} else {\n\t\t\talert(res.text);\n\t\t}\n\t});\n\t\n\tif (jQuery('#spbc_renew_notice').length || jQuery('#spbc_trial_notice').length) {\n\t\tspbc_banner_check();\n\t}\n\n\t// Sync button\n\tjQuery('#spbc_button__sync').on('click', function(){\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_sync'},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: document.getElementById('spbc_button__sync' ),\n\t\t\t\tspinner: jQuery('#spbc_button__sync .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tjQuery('#spbc_button__sync .spbc_success').show(300);\n\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_button__sync .spbc_success').hide(300);}, 2000);\n\t\t\t\t\tif(result.reload)\n\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\tif( spbcSettings.key_changed ){\n\t\tjQuery('#spbc_button__sync').click();\n\t}\n\n\t// Get Key Auto button\n\tjQuery(document).on('click', '#spbc_setting_get_key_auto', function(){\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_get_key_auto'},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: document.getElementById('spbc_setting_get_key_auto' ),\n\t\t\t\tspinner: jQuery('#spbc_setting_get_key_auto .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tjQuery('#spbc_setting_get_key_auto .spbc_success').show(300);\n\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_setting_get_key_auto .spbc_success').hide(300);}, 2000);\n\t\t\t\t\tif(result.reload)\n\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\tif(result.getTemplates) {\n\t\t\t\t\t\tspbcModal.loaded = result.getTemplates;\n\t\t\t\t\t\tspbcModal.open();\n\t\t\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\t// Import settings\n\tjQuery( document ).on('click', '#spbc_settings_templates_import_button', function(){\n\t\tjQuery('#spbc-ajax-result').remove();\n\t\tvar optionSelected = jQuery('option:selected', jQuery('#spbc_settings_templates_import'));\n\t\tvar templateNameInput = jQuery('#spbc_settings_templates_import_name');\n\t\ttemplateNameInput.css('border-color', 'inherit');\n\t\tif( typeof optionSelected.data('id') === \"undefined\" ) {\n\t\t\tconsole.log( 'Attribute \"data-id\" not set for the option.' );\n\t\t\treturn;\n\t\t}\n\t\tvar data = {\n\t\t\t'template_id' : optionSelected.data('id'),\n\t\t\t'template_name' : optionSelected.data('name'),\n\t\t\t'settings' : optionSelected.data('settings')\n\t\t};\n\t\tvar button = this;\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_settings_templates_import', data: data},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: button,\n\t\t\t\tspinner: jQuery('#spbc_settings_templates_import_button .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tif(result.success) {\n\t\t\t\t\t\tjQuery( \"
\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t\tjQuery('#spbc_settings_templates_import_button .spbc_success').show(300);\n\t\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_settings_templates_import_button .spbc_success').hide(300);}, 2000);\n\t\t\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsetTimeout(function(){spbcModal.close()}, 2000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery( \"
\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\t// Export settings\n\tjQuery( document ).on('click', '#spbc_settings_templates_export_button', function(){\n\t\tjQuery('#spbc-ajax-result').remove();\n\t\tvar optionSelected = jQuery('option:selected', jQuery('#spbc_settings_templates_export'));\n\t\tvar templateNameInput = jQuery('#spbc_settings_templates_export_name');\n\t\ttemplateNameInput.css('border-color', 'inherit');\n\t\tif( typeof optionSelected.data('id') === \"undefined\" ) {\n\t\t\tconsole.log( 'Attribute \"data-id\" not set for the option.' );\n\t\t\treturn;\n\t\t}\n\t\tif( optionSelected.data('id') === 'new_template' ) {\n\t\t\tvar templateName = templateNameInput.val();\n\t\t\tif( templateName === '' ) {\n\t\t\t\ttemplateNameInput.css('border-color', 'red');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\t'template_name' : templateName\n\t\t\t}\n\t\t} else {\n\t\t\tvar data = {\n\t\t\t\t'template_id' : optionSelected.data('id')\n\t\t\t}\n\t\t}\n\t\tvar button = this;\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_settings_templates_export', data: data},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: button,\n\t\t\t\tspinner: jQuery('#spbc_settings_templates_export_button .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tif(result.success) {\n\t\t\t\t\t\tjQuery( \"
\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t\tjQuery('#spbc_settings_templates_export_button .spbc_success').show(300);\n\t\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_settings_templates_export_button .spbc_success').hide(300);}, 2000);\n\t\t\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsetTimeout(function(){spbcModal.close()}, 2000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery( \"
\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\t// Reset settings\n\tjQuery( document ).on('click', '#spbc_settings_templates_reset_button', function(){\n\t\tvar button = this;\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_settings_templates_reset'},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: button,\n\t\t\t\tspinner: jQuery('#spbc_settings_templates_reset_button .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tif(result.success) {\n\t\t\t\t\t\tjQuery( \"
\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t\tjQuery('#spbc_settings_templates_reset_button .spbc_success').show(300);\n\t\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_settings_templates_reset_button .spbc_success').hide(300);}, 2000);\n\t\t\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsetTimeout(function(){spbcModal.close()}, 2000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery( \"
\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\tjQuery(document).on('change', '#spbc_settings_templates_export',function(){\n\t\tvar optionSelected = jQuery(\"option:selected\", this);\n\t\tif ( optionSelected.data(\"id\") === 'new_template' ) {\n\t\t\tjQuery(this).parent().parent().find('#spbc_settings_templates_export_name').show();\n\t\t} else {\n\t\t\tjQuery(this).parent().parent().find('#spbc_settings_templates_export_name').hide();\n\t\t}\n\t});\n\n\t//* TAB_CONTROL\n\t\n\t\tjQuery('.spbc_tab_nav-summary').data('loaded', true); // Summary tab loaded by default\n\t\tjQuery('.spbc_tabs_nav_wrapper').on('click', '.spbc_tab_nav', function(event){\n\t\t\tspbc_switchTab(event.currentTarget);\n\t\t});\n\t\t\n\t\t// Get additional params\n var params = {\n target: location.search.match(/spbc_target=(\\S*?)(&|$)/) ? location.search.match(/spbc_target=(\\S*?)(&|$)/)[1] : null,\n action: location.search.match(/spbc_action=(\\S*?)(&|$)/) ? location.search.match(/spbc_action=(\\S*?)(&|$)/)[1] : null,\n times: location.search.match(/spbc_times=(\\S*?)(&|$)/) ? location.search.match(/spbc_times=(\\S*?)(&|$)/)[1] : 3,\n };\n // Legacy support\n params.target = location.search.match(/spbc_highlight=(\\S*?)(&|$)/) ? location.search.match(/spbc_highlight=(\\S*?)(&|$)/)[1] : params.target;\n params.action = location.search.search(/spbc_highlight=(\\S*?)(&|$)/) != -1\n ? 'highlight'\n : params.action;\n\n\t\t// Get open tab form query\n\t\tvar spbc_tab = document.getElementsByClassName('spbc_tab_nav-' + (location.search.match(/spbc_tab=(\\S*?)(&|$)/) ? location.search.match(/spbc_tab=(\\S*?)(&|$)/)[1] : ''))[0] || null;\n\n\t\t// TAB SWITCHING\n\t\t// Switch by URL\n\t\tif(spbc_tab){\n\n\t\t// Switch to DEBUG\n\t\t}else if( +spbcSettings.debug ){\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-debug')[0];\n\t\t// Switch by DEFAULT\n\t\t}else if( +spbcSettings.wpms && !+spbcSettings.is_main_site){\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-security_log')[0];\n\t\t// Switch if Key is OK and SFW is ON\n\t\t}else if( +spbcSettings.key_is_ok && +spbcSettings.secfw_enabled ){\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-traffic_control')[0];\n\t\t// Switch if Key is OK\n\t\t}else if( +spbcSettings.key_is_ok ){\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-scanner')[0];\n\t\t// Switch if KEY IS BAD\n\t\t}else{\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-settings_general')[0];\n\t\t\tparams = {\n\t\t\t target: 'spbc_key',\n action: 'highlight',\n times: 3,\n };\n\t\t}\n\t\t\n\t\t// Switch tab\n\t\tif(spbc_tab) spbc_switchTab(spbc_tab, params);\n\t\t\n\t//*/ TAB_CONROL END\n\t\n\t//* REFRESH TAB IF ctrl+F5\n\tvar ctrlKeyDown = false;\n\n\tjQuery(document).on(\"keyup\", function(e) {\n\t\tif ((e.which || e.keyCode) == 17) ctrlKeyDown = false;\n\t});\n\n\tjQuery(document).on(\"keydown\", function(e) {\n\t\tif (((e.which || e.keyCode) == 116) && ctrlKeyDown) {\n\t\t\te.preventDefault();\n\n\t\t\tvar active_tab = jQuery('.spbc_tab_nav--active')[0];\n\t\t\tvar tab_name = active_tab.classList[1].replace('spbc_tab_nav-', '');\n\n\t\t\tif (tab_name === 'scanner') return; \n\n\t\t\tjQuery(active_tab).data('loaded', false);\n\n\t\t\tspbc_switchTab(active_tab);\n\n\t\t} else if ((e.which || e.keyCode) == 17) {\n\t ctrlKeyDown = true;\n\t }\n\t});\n\t//*/ REFRESH TAB IF ctrl+F5 END\n});"],"names":["spbc_switchTab","tab","params","tab_name","classList","replace","searchParams","URLSearchParams","window","location","search","hashParam","set","hash","newRelativePathQuery","pathname","toString","history","replaceState","get","jQuery","hide","removeClass","addClass","data","action","spbcHighlightElement","target","times","setTimeout","additional","click","security","spbcSettings","ajax_nonce","callback","spbc_draw_settings_callback","notJson","spbc_sendAJAXRequest","result","obj","replaceWith","document","off","on","spbc_settings__show_description","self","this","attr","spbc_settings__show_recommendation","spbc_send_logs_callback","getElementById","substring","scrollIntoView","getElementsByClassName","spbcSettingsDependenciesbyId","settingsIDs","enable","tmp","push","forEach","settingID","i","arr","do_disable","elem","setAttribute","do_enable","removeAttribute","getAttribute","spbcSettingsDependencies","settingNames","split","event","checked","settingName","getElementsByName","children","label","setting_id","remove_desc_func","e","parent","length","hasClass","remove","after","append","css","top","position","left","spinner","empty","title","desc","remove_recommendation_func","spbcStartShowHide","next","show","spbctGenerateConfirmationCode","res","success","ajax","type","async","url","ajaxurl","text","spbctCheckConfirmationCode","radioButton","timeout","timer","element","code","val","removeAttr","clearTimeout","dialog","alert","spbc_banner_check","bannerChecker","setInterval","close_renew_banner","clearInterval","String","prototype","printf","arg","formatted","arguments","before_formatted","indexOf","after_formatted","ready","modal","my","at","of","width","height","draggable","resizable","closeText","preventDefault","enableResend","buttons","Cancel","Ok","button","reload","key_changed","getTemplates","spbcModal","loaded","open","addEventListener","optionSelected","console","log","template_id","template_name","settings","insertAfter","close","templateNameInput","templateName","find","currentTarget","match","spbc_tab","ctrlKeyDown","debug","wpms","is_main_site","key_is_ok","secfw_enabled","which","keyCode","active_tab"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"spbc-settings.min.js","sources":["spbc-settings.js"],"sourcesContent":["// Printf for JS\nString.prototype.printf = function(){\n var formatted = this;\n for( var arg in arguments ) {\n var before_formatted = formatted.substring(0, formatted.indexOf(\"%s\", 0));\n var after_formatted = formatted.substring(formatted.indexOf(\"%s\", 0)+2, formatted.length);\n formatted = before_formatted + arguments[arg] + after_formatted;\n }\n return formatted;\n};\n\n// Switching tabs\nfunction spbc_switchTab(tab, params){\n\n\tvar tab_name = tab.classList[1].replace('spbc_tab_nav-', '');\n\n\t// update url \n\tvar searchParams = new URLSearchParams(window.location.search)\n searchParams.set(\"spbc_tab\", tab_name);\n\tvar hashParam = window.location.hash;\n var newRelativePathQuery = window.location.pathname + '?' + searchParams.toString() + hashParam;\n\n history.replaceState(null, '', newRelativePathQuery);\n\n\t// Hiding a tab 'Backups' if exist\n if(searchParams.get('spbc_tab') !== 'backups') {\n \tjQuery('.spbc_tab_nav-backups').hide();\n }\n\n // update active tab\n\tjQuery('.spbc_tab_nav').removeClass('spbc_tab_nav--active');\n\tjQuery('.spbc_tab').removeClass('spbc_tab--active');\n\tjQuery(tab).addClass('spbc_tab_nav--active');\n\tjQuery('.spbc_tab-'+tab_name).addClass('spbc_tab--active');\n\n\tif(!jQuery(tab).data('loaded')){\n\t\tvar data = {\n\t\t\taction: 'spbc_settings__draw_elements',\n\t\t\ttab_name: tab_name,\n\t\t\tsecurity: spbcSettings.ajax_nonce\n\t\t};\n\t\tvar params = {\n\t\t\tcallback: spbc_draw_settings_callback,\n\t\t\tnotJson: true,\n additional: params || null,\n\t\t};\n\t\tspbc_sendAJAXRequest( data, params, tab );\n\t}else if(params && params.action){\n switch (params.action){\n case 'highlight':\n spbcHighlightElement(params.target, params.times);\n break;\n case 'click':\n setTimeout(function(){\n jQuery('#'+params.additional.target).click();\n }, 500);\n break;\n }\n\t}\n}\n\nfunction spbc_draw_settings_callback(result, data, params, obj){\n\n\tjQuery(obj).data('loaded', true);\n\tjQuery('.spbc_tab-'+data.tab_name).replaceWith(result);\n\tvar tab = jQuery('.spbc_tab-'+data.tab_name);\n\ttab.addClass('spbc_tab--active');\n\n\tjQuery(document).off( 'click', '.spbc_long_description__show');\n\tjQuery(document).on('click', '.spbc_long_description__show', function(){\n\t\tself = jQuery(this);\n\t\tspbc_settings__show_description(self, self.attr('setting'));\n\t});\n\n\tjQuery(document).off( 'click', '.spbc_long_recommendation__show');\n\tjQuery(document).on('click', '.spbc_long_recommendation__show', function(){\n\t\tself = jQuery(this);\n\t\tspbc_settings__show_recommendation(self, self.attr('setting'));\n\t});\n\n\tif(params.additional){\n\t switch (params.additional.action) {\n case 'highlight':\n\t\t spbcHighlightElement(params.additional.target, params.additional.times);\n break;\n case 'click':\n setTimeout(function(){\n\t\t jQuery('#'+params.additional.target).click();\n }, 500);\n break;\n }\n }\n\n\tjQuery(tab).on('click', '.spbc_hint-send_'+data.tab_name, function(){\n\t\t\tjQuery('.spbc_hint-send_'+data.tab_name).hide();\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_send_'+data.tab_name, tab_name: data.tab_name},\n\t\t\t{callback: spbc_send_logs_callback}\n\t\t);\n\t});\n\n\t// scroll to anchor\n\tif (window.location.hash) {\n\t\tdocument.getElementById(window.location.hash.substring(1)).scrollIntoView();\n\t}\n}\n\nfunction spbc_send_logs_callback(result, data, params, obj){\n\tjQuery('.spbc_tab_nav-'+data.tab_name).data('loaded', false);\n\tspbc_switchTab(document.getElementsByClassName('spbc_tab_nav-'+data.tab_name)[0]);\n}\n\n// Settings dependences\nfunction spbcSettingsDependenciesbyId(settingsIDs, enable){\n\n\tif(typeof settingsIDs === 'string'){\n\t\ttmp = [];\n\t\ttmp.push(settingsIDs);\n\t\tsettingsIDs = tmp;\n\t}\n\n\tenable = typeof enable === 'undefined' ? null : +enable;\n\n\tsettingsIDs.forEach(function(settingID, i, arr){\n\n\t\tvar elem = document.getElementById('spbc_setting_'+settingID),\n do_disable = function(){elem.setAttribute('disabled', 'disabled');},\n do_enable = function(){elem.removeAttribute('disabled');};\n\n if(enable !== null) // Set\n enable === 1 ? do_enable() : do_disable();\n else // Switch\n elem.getAttribute('disabled') === null ? do_disable() : do_enable();\n\n\t});\n}\n\n/**\n * Recursive in case children found!\n *\n * Settings dependencies\n *\n */\nfunction spbcSettingsDependencies(settingNames, enable){\n\n\t// Cast settingNames to array\n\tsettingNames = typeof settingNames === 'string' ? settingNames.split(',') : settingNames;\n\tenable = typeof enable === 'undefined' ? +event.target.checked : +enable;\n\n\tsettingNames.forEach(function(settingName, i, arr){\n\n\t\tdocument.getElementsByName('spbc_settings['+settingName+']')\n\t\t\t.forEach(function( elem, i, arr ){\n\n\t\t\t\tvar\tdo_disable = function(){elem.setAttribute('disabled', 'disabled');},\n\t\t\t\t\tdo_enable = function(){elem.removeAttribute('disabled');};\n\t\t\t\tif(enable !== null) // Set\n\t\t\t\t\tenable === 1 ? do_enable() : do_disable();\n\t\t\t\telse // Switch\n\t\t\t\t\telem.getAttribute('disabled') === null ? do_disable() : do_enable();\n\n\t\t\t\tvar children = elem.getAttribute('children');\n\t\t\t\tif( children !== null ){\n\t\t\t\t\tspbcSettingsDependencies(children, enable && elem.checked);\n\t\t\t\t}\n\t\t\t});\n\t});\n}\n\nfunction spbc_settings__show_description(label, setting_id){\n\t\n\tvar remove_desc_func = function(e){\n\t\tif(typeof e === 'undefined' || ((jQuery(e.target).parent('.spbc_long_desc').length == 0 || jQuery(e.target).hasClass('spbc_long_desc__cancel')) && !jQuery(e.target).hasClass('spbc_long_description__show'))){\n\t\t\tjQuery('.spbc_long_desc').remove();\n\t\t\tjQuery(document).off('click', remove_desc_func);\n\t\t}\n\t};\n\t\n\tremove_desc_func();\n\t\n\tlabel.after(\"
\");\n\tvar obj = jQuery('#spbc_long_desc__'+setting_id);\n\tobj.append(\"
\")\n\t\t.append(\"
\")\n\t\t.css({\n\t\t\ttop: label.position().top + 25,\n\t\t\tleft: label.position().left + 5\n\t\t});\n\n\t\n\tspbc_sendAJAXRequest(\n\t\t{action: 'spbc_settings__get_description', setting_id: setting_id},\n\t\t{\n\t\t\tspinner: obj.children('img'),\n\t\t\tcallback: function(result, data, params, obj){\n\n\t\t\t\tobj.empty()\n\t\t\t\t\t.append(\"
\")\n\t\t\t\t\t.append(\"
\")\n\t\t\t\t\t.append(\"
\"+result.title+\" \")\n\t\t\t\t\t.append(\"
\"+result.desc+\"
\");\n\n\t\t\t\tjQuery(document).on('click', remove_desc_func);\n\t\t\t}\n\t\t},\n\t\tobj\n\t);\n}\n\nfunction spbc_settings__show_recommendation(label, setting_id){\n\t\n\tvar remove_recommendation_func = function(e){\n\t\tif(typeof e === 'undefined' || ((jQuery(e.target).parent('.spbc_long_desc').length == 0 || jQuery(e.target).hasClass('spbc_long_desc__cancel')) && !jQuery(e.target).hasClass('spbc_long_recommendation__show'))){\n\t\t\tjQuery('.spbc_long_desc').remove();\n\t\t\tjQuery(document).off('click', remove_recommendation_func);\n\t\t}\n\t};\n\t\n\tremove_recommendation_func();\n\t\n\tlabel.after(\"
\");\n\tvar obj = jQuery('#spbc_long_desc__'+setting_id);\n\tobj.append(\"
\")\n\t\t.append(\"
\")\n\t\t.css({\n\t\t\ttop: label.position().top + 25,\n\t\t\tleft: label.position().left + 5\n\t\t});\n\n\t\n\tspbc_sendAJAXRequest(\n\t\t{action: 'spbc_settings__get_recommendation', setting_id: setting_id},\n\t\t{\n\t\t\tspinner: obj.children('img'),\n\t\t\tcallback: function(result, data, params, obj){\n\n\t\t\t\tobj.empty()\n\t\t\t\t\t.append(\"
\")\n\t\t\t\t\t.append(\"
\")\n\t\t\t\t\t.append(\"
\"+result.title+\" \")\n\t\t\t\t\t.append(\"
\"+result.desc+\"
\");\n\n\t\t\t\tjQuery(document).on('click', remove_recommendation_func);\n\t\t\t}\n\t\t},\n\t\tobj\n\t);\n}\n\n// Shows/hides full text\nfunction spbcStartShowHide(){\n\tjQuery('.spbcShortText')\n\t\t.off('mouseover' )\n\t\t.on('mouseover', function(){ jQuery(this).next().show(); })\n\t\t.off('mouseout' )\n\t\t.on('mouseout', function(){ jQuery(this).next().hide(); });\n\tjQuery('.spbcFullText')\n\t\t.off('mouseout' )\n\t\t.on('mouseout', function(){ jQuery(this).hide(); })\n\t\t.off('mouseover' )\n\t\t.on('mouseover', function(){ jQuery(this).show(); })\n}\n\n// Generate and save confirmation code\nfunction spbctGenerateConfirmationCode() {\n\n\tvar data = {};\n\tvar res = {};\n\tres.success = false;\n\tdata.security = spbcSettings.ajax_nonce;\n\tdata.action = 'spbc_generate_confirmation_code';\n\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\tasync: false,\n\t\turl: spbcSettings.ajaxurl,\n\t\tdata: data,\n\t\tsuccess: function(result){\n\t\t\tif(result.success) {\n\t\t\t\tres.success = true;\n\t\t\t} else {\n\t\t\t\tres.text = result.data;\n\t\t\t}\n\t\t},\n\t});\n\treturn res;\n}\n// Check confirmation code\nfunction spbctCheckConfirmationCode( radioButton, timeout, timer ) {\n\n\tvar element = radioButton;\n\tvar data = {};\n\tdata.security = spbcSettings.ajax_nonce;\n\tdata.action = 'spbc_check_confirmation_code';\n\tdata.code = jQuery('#confirmation-code input').val();\n\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\tasync: false,\n\t\turl: spbcSettings.ajaxurl,\n\t\tdata: data,\n\t\tsuccess: function(result){\n\t\t\tif(result.success) {\n\t\t\t\tjQuery('[name *= 2fa__enable]').attr(\"checked\", \"\");\n\t\t\t\telement.checked = true;\n\t\t\t\tjQuery('#spbc_setting_2fa__roles').removeAttr('disabled');\n\t\t\t\tjQuery('#spbc_setting_2fa__roles > option:first').attr('selected','selected');\n\t\t\t\tclearTimeout( timeout );\n\t\t\t\ttimer.remove();\n\t\t\t\tjQuery('#confirmation-code').dialog( \"close\" );\n\t\t\t} else {\n\t\t\t\talert('Code verification failed!');\n\t\t\t}\n\t\t},\n\t});\n\n}\n\n/**\n * Checking current account status for renew notice\n */\nfunction spbc_banner_check() {\n\tvar bannerChecker = setInterval( function() {\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_settings__check_renew_banner'},\n\t\t\t{\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tif (result.close_renew_banner) {\n\t\t\t\t\t\tif (jQuery('#spbc_renew_notice').length)\n\t\t\t\t\t\t\tjQuery('#spbc_renew_notice').hide('slow');\n\t\t\t\t\t\tif (jQuery('#spbc_trial_notice').length)\n\t\t\t\t\t\t\tjQuery('#spbc_trial_notice').hide('slow');\n\t\t\t\t\t\tclearInterval(bannerChecker);\n\t\t\t\t\t}\t\t\t\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}, 60000);\n}\n\njQuery(document).ready(function(){\n\t\n\tjQuery('#spbc_gdpr_open_modal').on('click', function(){\n\t\tjQuery('#gdpr_dialog').dialog({\n\t\t\tmodal:true, \n\t\t\tshow: true,\n\t\t\tposition: { my: \"center\", at: \"center\", of: window },\n\t\t\twidth: +(jQuery('#wpbody').width() / 100 * 70), // 70% of #wpbody\n\t\t\theight: 'auto',\n\t\t\ttitle: 'GDPR compliance',\n\t\t\tdraggable: false,\n\t\t\tresizable: false,\n\t\t\tcloseText: \"Close\",\n\t\t});\n\t});\n\n\t// Checking email receiving possibility for activation 2FA\n\tjQuery(document).on('click', '[name*=fa__enable]:not([value=0]),#confirmation-code--resend', function(e){\n\n\t\te.preventDefault();\n\n\t\tjQuery('#confirmation-code--resend').attr('disabled', 'disabled')\n\t\t\t.append('
');\n\t\tvar enableResend = setTimeout(function(){\n\t\t\tjQuery('#confirmation-code--resend').removeAttr('disabled');\n\t\t\tjQuery('#confirmation-code--resend>.circle').remove();\n\t\t}, 30000);\n\n\t\tvar res = spbctGenerateConfirmationCode();\n\t\tif( res.success ) {\n\t\t\tjQuery('#confirmation-code input').val('');\n\t\t\tjQuery('#confirmation-code').dialog({\n\t\t\t\tmodal: true,\n\t\t\t\ttitle: 'Confirmation code',\n\t\t\t\twidth: 310,\n\t\t\t\tbuttons: {\n\t\t\t\t\tCancel: function() {\n\t\t\t\t\t\tjQuery( this ).dialog( \"close\" );\n\t\t\t\t\t\tclearTimeout( enableResend );\n\t\t\t\t\t\tjQuery('#confirmation-code--resend>.circle').remove();\n\t\t\t\t\t},\n\t\t\t\t\tOk: function() {\n\t\t\t\t\t\tspbctCheckConfirmationCode(e.target, enableResend, jQuery('#confirmation-code--resend>.circle'));\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tdraggable: false,\n\t\t\t\tresizable: false,\n\t\t\t});\n\t\t} else {\n\t\t\talert(res.text);\n\t\t}\n\t});\n\t\n\tif (jQuery('#spbc_renew_notice').length || jQuery('#spbc_trial_notice').length) {\n\t\tspbc_banner_check();\n\t}\n\n\t// Sync button\n\tjQuery('#spbc_button__sync').on('click', function(){\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_sync'},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: document.getElementById('spbc_button__sync' ),\n\t\t\t\tspinner: jQuery('#spbc_button__sync .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tjQuery('#spbc_button__sync .spbc_success').show(300);\n\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_button__sync .spbc_success').hide(300);}, 2000);\n\t\t\t\t\tif(result.reload)\n\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\tif( spbcSettings.key_changed ){\n\t\tjQuery('#spbc_button__sync').click();\n\t}\n\n\t// Get Key Auto button\n\tjQuery(document).on('click', '#spbc_setting_get_key_auto', function(){\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_get_key_auto'},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: document.getElementById('spbc_setting_get_key_auto' ),\n\t\t\t\tspinner: jQuery('#spbc_setting_get_key_auto .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tjQuery('#spbc_setting_get_key_auto .spbc_success').show(300);\n\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_setting_get_key_auto .spbc_success').hide(300);}, 2000);\n\t\t\t\t\tif(result.reload)\n\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\tif(result.getTemplates) {\n\t\t\t\t\t\tspbcModal.loaded = result.getTemplates;\n\t\t\t\t\t\tspbcModal.open();\n\t\t\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\t// Import settings\n\tjQuery( document ).on('click', '#spbc_settings_templates_import_button', function(){\n\t\tjQuery('#spbc-ajax-result').remove();\n\t\tvar optionSelected = jQuery('option:selected', jQuery('#spbc_settings_templates_import'));\n\t\tvar templateNameInput = jQuery('#spbc_settings_templates_import_name');\n\t\ttemplateNameInput.css('border-color', 'inherit');\n\t\tif( typeof optionSelected.data('id') === \"undefined\" ) {\n\t\t\tconsole.log( 'Attribute \"data-id\" not set for the option.' );\n\t\t\treturn;\n\t\t}\n\t\tvar data = {\n\t\t\t'template_id' : optionSelected.data('id'),\n\t\t\t'template_name' : optionSelected.data('name'),\n\t\t\t'settings' : optionSelected.data('settings')\n\t\t};\n\t\tvar button = this;\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_settings_templates_import', data: data},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: button,\n\t\t\t\tspinner: jQuery('#spbc_settings_templates_import_button .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tif(result.success) {\n\t\t\t\t\t\tjQuery( \"
\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t\tjQuery('#spbc_settings_templates_import_button .spbc_success').show(300);\n\t\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_settings_templates_import_button .spbc_success').hide(300);}, 2000);\n\t\t\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsetTimeout(function(){spbcModal.close()}, 2000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery( \"
\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\t// Export settings\n\tjQuery( document ).on('click', '#spbc_settings_templates_export_button', function(){\n\t\tjQuery('#spbc-ajax-result').remove();\n\t\tvar optionSelected = jQuery('option:selected', jQuery('#spbc_settings_templates_export'));\n\t\tvar templateNameInput = jQuery('#spbc_settings_templates_export_name');\n\t\ttemplateNameInput.css('border-color', 'inherit');\n\t\tif( typeof optionSelected.data('id') === \"undefined\" ) {\n\t\t\tconsole.log( 'Attribute \"data-id\" not set for the option.' );\n\t\t\treturn;\n\t\t}\n\t\tif( optionSelected.data('id') === 'new_template' ) {\n\t\t\tvar templateName = templateNameInput.val();\n\t\t\tif( templateName === '' ) {\n\t\t\t\ttemplateNameInput.css('border-color', 'red');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\t'template_name' : templateName\n\t\t\t}\n\t\t} else {\n\t\t\tvar data = {\n\t\t\t\t'template_id' : optionSelected.data('id')\n\t\t\t}\n\t\t}\n\t\tvar button = this;\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_settings_templates_export', data: data},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: button,\n\t\t\t\tspinner: jQuery('#spbc_settings_templates_export_button .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tif(result.success) {\n\t\t\t\t\t\tjQuery( \"
\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t\tjQuery('#spbc_settings_templates_export_button .spbc_success').show(300);\n\t\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_settings_templates_export_button .spbc_success').hide(300);}, 2000);\n\t\t\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsetTimeout(function(){spbcModal.close()}, 2000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery( \"
\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\t// Reset settings\n\tjQuery( document ).on('click', '#spbc_settings_templates_reset_button', function(){\n\t\tvar button = this;\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_settings_templates_reset'},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: button,\n\t\t\t\tspinner: jQuery('#spbc_settings_templates_reset_button .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tif(result.success) {\n\t\t\t\t\t\tjQuery( \"
\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t\tjQuery('#spbc_settings_templates_reset_button .spbc_success').show(300);\n\t\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_settings_templates_reset_button .spbc_success').hide(300);}, 2000);\n\t\t\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsetTimeout(function(){spbcModal.close()}, 2000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery( \"
\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\tjQuery(document).on('change', '#spbc_settings_templates_export',function(){\n\t\tvar optionSelected = jQuery(\"option:selected\", this);\n\t\tif ( optionSelected.data(\"id\") === 'new_template' ) {\n\t\t\tjQuery(this).parent().parent().find('#spbc_settings_templates_export_name').show();\n\t\t} else {\n\t\t\tjQuery(this).parent().parent().find('#spbc_settings_templates_export_name').hide();\n\t\t}\n\t});\n\n\t//* TAB_CONTROL\n\t\n\t\tjQuery('.spbc_tab_nav-summary').data('loaded', true); // Summary tab loaded by default\n\t\tjQuery('.spbc_tabs_nav_wrapper').on('click', '.spbc_tab_nav', function(event){\n\t\t\tspbc_switchTab(event.currentTarget);\n\t\t});\n\t\t\n\t\t// Get additional params\n var params = {\n target: location.search.match(/spbc_target=(\\S*?)(&|$)/) ? location.search.match(/spbc_target=(\\S*?)(&|$)/)[1] : null,\n action: location.search.match(/spbc_action=(\\S*?)(&|$)/) ? location.search.match(/spbc_action=(\\S*?)(&|$)/)[1] : null,\n times: location.search.match(/spbc_times=(\\S*?)(&|$)/) ? location.search.match(/spbc_times=(\\S*?)(&|$)/)[1] : 3,\n };\n // Legacy support\n params.target = location.search.match(/spbc_highlight=(\\S*?)(&|$)/) ? location.search.match(/spbc_highlight=(\\S*?)(&|$)/)[1] : params.target;\n params.action = location.search.search(/spbc_highlight=(\\S*?)(&|$)/) != -1\n ? 'highlight'\n : params.action;\n\n\t\t// Get open tab form query\n\t\tvar spbc_tab = document.getElementsByClassName('spbc_tab_nav-' + (location.search.match(/spbc_tab=(\\S*?)(&|$)/) ? location.search.match(/spbc_tab=(\\S*?)(&|$)/)[1] : ''))[0] || null;\n\n\t\t// TAB SWITCHING\n\t\t// Switch by URL\n\t\tif(spbc_tab){\n\n\t\t// Switch to DEBUG\n\t\t}else if( +spbcSettings.debug ){\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-debug')[0];\n\t\t// Switch by DEFAULT\n\t\t}else if( +spbcSettings.wpms && !+spbcSettings.is_main_site){\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-security_log')[0];\n\t\t// Switch if Key is OK and SFW is ON\n\t\t}else if( +spbcSettings.key_is_ok && +spbcSettings.secfw_enabled ){\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-traffic_control')[0];\n\t\t// Switch if Key is OK\n\t\t}else if( +spbcSettings.key_is_ok ){\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-scanner')[0];\n\t\t// Switch if KEY IS BAD\n\t\t}else{\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-settings_general')[0];\n\t\t\tparams = {\n\t\t\t target: 'spbc_key',\n action: 'highlight',\n times: 3,\n };\n\t\t}\n\t\t\n\t\t// Switch tab\n\t\tif(spbc_tab) spbc_switchTab(spbc_tab, params);\n\t\t\n\t//*/ TAB_CONROL END\n\t\n\t//* REFRESH TAB IF ctrl+F5\n\tvar ctrlKeyDown = false;\n\n\tjQuery(document).on(\"keyup\", function(e) {\n\t\tif ((e.which || e.keyCode) == 17) ctrlKeyDown = false;\n\t});\n\n\tjQuery(document).on(\"keydown\", function(e) {\n\t\tif (((e.which || e.keyCode) == 116) && ctrlKeyDown) {\n\t\t\te.preventDefault();\n\n\t\t\tvar active_tab = jQuery('.spbc_tab_nav--active')[0];\n\t\t\tvar tab_name = active_tab.classList[1].replace('spbc_tab_nav-', '');\n\n\t\t\tif (tab_name === 'scanner') return; \n\n\t\t\tjQuery(active_tab).data('loaded', false);\n\n\t\t\tspbc_switchTab(active_tab);\n\n\t\t} else if ((e.which || e.keyCode) == 17) {\n\t ctrlKeyDown = true;\n\t }\n\t});\n\t//*/ REFRESH TAB IF ctrl+F5 END\n\n\t/**\n * Change cleantalk account email\n */\n jQuery(document).on('click', '#spbc-change-account-email', function(e) {\n e.preventDefault();\n\n let $this = jQuery(this);\n let accountEmailField = jQuery('#spbc-account-email');\n let accountEmail = accountEmailField.text();\n\n\t\tspbcToggleClass($this, 'active');\n\n if ($this.hasClass('active')) {\n $this.text($this.data('save-text'));\n accountEmailField.attr('contenteditable', 'true');\n\t\t\taccountEmailField.focus();\n accountEmailField.on('keydown', function(e) {\n if (e.code === 'Enter') {\n e.preventDefault();\n }\n });\n accountEmailField.on('input', function(e) {\n if (e.inputType === 'insertParagraph') {\n e.preventDefault();\n }\n });\n } else {\n spbc_sendAJAXRequest(\n {\n action: 'spbc_update_account_email',\n accountEmail: accountEmail,\n },\n {\n timeout: 5000,\n callback: function(result, data, params, obj) {\n if (result.success !== undefined && result.success === 'ok') {\n if (result.manuallyLink !== undefined) {\n jQuery('#spbc-key-manually-link').attr('href', result.manuallyLink);\n }\n }\n\n if (result.error !== undefined) {\n\t\t\t\t\t\t\n jQuery('#spbc-account-email').css('border-color', 'red');\n }\n },\n\t\t\t\t\terrorOutput: function(msg) {\n\t\t\t\t\t\tspbcModal.loaded = msg;\n\t\t\t\t\t\tspbcModal.open();\n\t\t\t\t\t}\n },\n );\n\n accountEmailField.attr('contenteditable', 'false');\n $this.text($this.data('default-text'));\n }\n });\n});\n\n/**\n * @param {string} className\n */\nfunction spbcToggleClass(arr, className) {\n\tfor (let i=0; i
false,
'notice_review' => false,
'service_id' => '',
+ 'account_email' => '',
'license_trial' => 0,
'account_name_ob' => '',
'salt' => '',
diff --git a/security-malware-firewall.php b/security-malware-firewall.php
index f7a038751..47f8b1444 100644
--- a/security-malware-firewall.php
+++ b/security-malware-firewall.php
@@ -2417,7 +2417,7 @@ function spbc_send_daily_report($skip_data_rotation = false)
// Hours
$report_interval = 24 * 7;
- $admin_email = get_option('admin_email');
+ $admin_email = spbc_get_admin_email();
if ( ! $admin_email ) {
error_log(
sprintf(
From dbbcbfdd4df1197e15fd64eeabebd1b45ee1a4f5 Mon Sep 17 00:00:00 2001
From: svfcode
Date: Fri, 25 Aug 2023 13:39:17 +0300
Subject: [PATCH 085/109] Compress js and css.
---
css/spbc-settings.min.css | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/css/spbc-settings.min.css b/css/spbc-settings.min.css
index afbb6c611..ddebbb5a1 100644
--- a/css/spbc-settings.min.css
+++ b/css/spbc-settings.min.css
@@ -1 +1 @@
-.circle{border-radius:50%;align-items:center;justify-content:center;position:relative;background-color:#03A9F4;clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 0,50% 0,50% 50%,50% 50%)}.circle-inner{width:100%;height:100%;border-radius:50%;background:#f7f7f7;transform:scale(.7)}.circle--small{width:16px;height:16px}.circle--mid{width:30px;height:30px}.-animation--circle{animation:animation-circle 2s linear forwards}.-animation--30s{animation-duration:30s!important}.-animation--2min{animation-duration:120s!important}@keyframes animation-circle{12.5%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 0,0 0,50% 50%,50% 50%)}25%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 50%,0 50%,50% 50%,50% 50%)}37.5%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 100%,0 100%,50% 50%,50% 50%)}50%{clip-path:polygon(50% 0,100% 0,100% 100%,50% 100%,50% 100%,50% 100%,50% 100%,50% 50%,50% 50%)}62.5%{clip-path:polygon(50% 0,100% 0,100% 100%,100% 100%,100% 100%,100% 100%,100% 100%,50% 50%,50% 50%)}75%{clip-path:polygon(50% 0,100% 0,100% 50%,100% 50%,100% 50%,100% 50%,100% 50%,50% 50%,50% 50%)}87.5%{clip-path:polygon(50% 0,100% 0,100% 0,100% 0,100% 0,100% 0,100% 0,50% 50%,50% 50%)}100%{clip-path:polygon(50% 0,50% 0,50% 0,50% 0,50% 0,50% 0,50% 0,50% 50%,50% 50%)}}#confirmation-code--resend .circle{margin-left:5px;display:inline-block;vertical-align:text-bottom}.spbc---hidden,.spbc_waf_reason{display:none}#spbcTopWarning{margin-bottom:5px}#spbcTopWarning h3{margin:10px 0 5px}#spbcTopWarning h4{margin:10px}#spbcTopWarning h4 span{margin-top:5px}#spbc_gdpr_open_modal:hover{cursor:pointer}.spbc---gray{color:gray}.spbc---red{color:red}.spbc_bold{font-weight:800}.spbc---top{z-index:9999!important}.spbc_waf_reason_title{text-decoration:underline}.spbc_waf_reason_title:hover+.spbc_waf_reason{display:inline}.spbc_warning_counter{margin:0 5px;padding:0 7px;font-size:14px;height:23px;display:inline-block;text-align:center;border-radius:3px}.spbc_sub_setting{margin-left:30px!important}.spbc_sub2_setting{margin-left:60px!important}.spbc_affiliate_shortcode{width:inherit!important;min-width:inherit!important}.spbc_warning_counter--black{color:#fff;background-color:#000}.spbc_warning_counter--red{color:#000;background-color:red}.spbc_warning_counter--orange{color:#000;background-color:orange}.spbc_warning_counter--green{color:#000;background-color:green}.spbc_highlighted{outline-offset:5px;outline-color:red;outline-width:3px!important;outline-style:solid!important}.spbc_status_icon{vertical-align:text-bottom;margin:0 5px}.spbc_progressbar_counter{position:absolute;height:22px;width:100%;left:0;top:0;text-align:center}.spbc_progressbar_counter span{vertical-align:sub;line-height:22px;font-weight:600;font-size:18px}.spbc_preloader,.spbc_preloader_button{margin-left:5px;vertical-align:text-top;display:none}.spbc_compare_file_row_wrapper,.spbc_view_file_row,.spbc_view_file_row_wrapper{line-height:19px}.ui-progressbar-value{background-image:url(../images/pbar-ani.gif)!important}.spbc_preloader{width:20px}.spbc_preloader_button{height:15px}.spbc_spinner_big{display:block;margin:40px auto}.spbc_scan_result_row td{text-align:center}.spbc_scan_result_row td:nth-child(1){text-align:left}.spbc_scan_result_row td:nth-child(2){text-align:right}.spbc_scan_result_row td:last-child button{margin-left:3px}.spbc_view_file_row_wrapper:nth-child(odd){background:#ccc}.spbc_view_file_row_wrapper:nth-child(even){background:#ddd}.spbc_auto_link,.spbc_compare_file_row_wrapper:nth-child(odd){background:#ccc}.spbc_view_file_row_num{display:inline-block;width:30px;margin:0 0 0 5px;border-right:1px solid #000}.spbc_view_file_row{display:inline;margin:0 0 0 5px;font-size:1em}.spbc_compare_file_headings{text-align:center;width:100%;display:inline-block;font-weight:700}.spbc_compare_file_row_wrapper:nth-child(even){background:#ddd}.spbc_compare_file_row_num{display:inline-block;width:20px;box-shadow:-2px 0 0 0 #000,2px 0 0 0 #000;padding:0 1%}.spbc_compare_file_row{display:inline-block;width:45%;margin:0;padding:0 1%}table.spbc_table_general{width:100%;border:0;border-spacing:0;border-collapse:collapse}table.spbc_table_general td,table.spbc_table_general th{position:relative;border:1px solid #666;padding:2px 10px}.spbcShortText{display:inline-block;width:100%}.spbcFullText{display:none;position:absolute;top:0;background:rgba(150,150,150,.9);color:#fff;padding:7px;border:1px solid #333;border-radius:5px;z-index:20}div.pagination{margin:10px}ul.pagination{display:inline-block;margin:0}li.pagination{display:inline-block;margin-left:10px}span.current_page{font-size:1.3em;font-weight:600}.spbc_new{color:red;position:relative;font-size:10px;vertical-align:bottom;top:-8px}.spbc_wrapper_settings{margin:10px 0 0}.spbc_tabs_nav_wrapper{display:block;border-bottom:1px solid #ccc}.spbc_tab_nav{display:inline-block;margin:10px 0 0 .5em;padding:5px 10px;height:24px;border:1px solid #ccc;border-bottom:none;font-size:14px;line-height:24px;background:#e5e5e5;color:#555;cursor:pointer}.spbc_tab_nav:hover{background:#fff}.spbc_tab_nav--active{margin-bottom:-1px;border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}.spbc_tab_nav--active:hover{background:#f1f1f1}.spbc_tab{display:none;margin:15px 0}.spbc_tab--active{display:block}.spbc_tab_fields_group{position:relative;min-width:255px;margin:10px auto;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fdfdfd}.spbc_group_header{margin:0 0 10px;padding:10px;border-bottom:1px solid #eee}.spbc_group_header>h3{margin:0}.spbc_group_header>h3>a{color:#1d2327;text-decoration:none}.spbc_wrapper_field{margin:0 15px 15px}.spbc_long_description__show:hover{color:#aaa;cursor:pointer}.spbc_settings_description{font-size:9pt;color:#888}.spbc_settings_description select{display:inline;position:relative;transform:scale(.7);left:-50px}.spbc_tab-settings_general input[type=text]{min-width:255px;width:100%}.spbc_short_text_field input{min-width:70px!important;width:70px!important}.spbc_middle_text_field input{min-width:200px!important;width:200px!important}.spbc_long_text_field input[type=text]{min-width:200px;width:500px}.spbc_wrapper_field label{vertical-align:baseline}.spbc_wrapper_field h4{margin:10px 15px 5px}.spbc_wrapper_footer{margin:15px}#spbc_wrapper_error{margin:0;padding:5px}#spbc_wrapper_error h3,#spbc_wrapper_error h4{margin:5px}#showHideLink{display:inline-block;margin-top:5px;color:#777}.spbc__wrapper--center{margin:10px 0;text-align:center}.spbc__show_more_logs{display:none}.spbc_settings_banner{display:inline-block;margin:1em 0;vertical-align:top;text-align:center}#spbc_translate_plugin{margin-left:10px}.spbc_rate_block{border:1px dashed #666;width:400px;padding:.2em}#spbc_translate_plugin .spbc_button_rate{margin-bottom:10px}.spbc_button_rate{display:inline-block;text-align:center;vertical-align:middle;padding:12px 24px;border:1px solid #216298;border-radius:8px;background:#35a0f7;background:-webkit-gradient(linear,left top,left bottom,from(#35a0f7),to(#216298));background:-moz-linear-gradient(top,#35a0f7,#216298);background:linear-gradient(to bottom,#35a0f7,#216298);text-shadow:#153e5f 1px 1px 1px;font:normal normal bold 16px verdana;color:#fff;text-decoration:none}.spbc_button_rate:focus,.spbc_button_rate:hover{border:1px solid #297bbe;background:#40c0ff;background:-webkit-gradient(linear,left top,left bottom,from(#40c0ff),to(#2876b6));background:-moz-linear-gradient(top,#40c0ff,#2876b6);background:linear-gradient(to bottom,#40c0ff,#2876b6);color:#fff;text-decoration:none}.spbc_button_rate:active{background:#216298;background:-webkit-gradient(linear,left top,left bottom,from(#216298),to(#216298));background:-moz-linear-gradient(top,#216298,#216298);background:linear-gradient(to bottom,#216298,#216298)}#spbc_rate_plugin .spbc_button_rate:before{content:"\0000a0";display:inline-block;height:24px;width:24px;line-height:24px;margin:0 4px -6px -4px;position:relative;top:0;left:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACjElEQVRIie1UTWsTURQ9dzKpofQLobQFlxqENF1JG0GE6sKuRLDtTKaBkJUIRdwpba2g9ge48gMEUUyTbrUutFmk1X6Q7kxDgi1YUSmlpsGYiTXtuy7GCYnaSRu3PczAfe/dd8695z0ecIAKsFVK0DQNLpcL8Xi8KgHZalFRNWe7uyMs2+RtkBQIjQerU/k3uVceHhmdyed/8NbWFg8OXrlXDY+020JdXf2NQMB/yuE4hHw+j5yur1df7h9QvQMXpiKRHSEECyF4cvJlQVG149VwlZ1BX58fsn1H7e29+OhMd7cEAMyM6PTMNAgfFUWrJSIAQgCAYAKIAECABACABGFt7fPPaDRqjItVqyrqG5vGAn7/kMfTBYMIyGQyeD0VMZKYweYGM2ZjpnR+eWVl8V08fnYiNP6t1Jbzc3PzbNryP38stsiKqp0uWuTz+eBqd9/s6uo02vpdPTOXxZuZDB7cfwgQGa0TIEmS7nA4PhhDkgBgdXV1FkTzRYHCtjjS4XZ3mGQmSsdEhKbGRqhqPwRz0ZOlRKImGBy/FA4F31gd8tG2tjaZmf+VUybS2tpaNpfeTMsADu+2xxRw2O12ENFftpTG6XQat26PQZIIzEA2m/1SKBSGGXhhWZmiaifezs7yfhGdnmFF1TqtuM0OksvvlzMnPZ4mq+RkMoVsNlu83ImlxDqATxUFwqHg94aGhsc9PeeuNjc372pRMpnExsZX5HI5xBZjd3aEuBsOBTcs7TGherXaa9eHIqlUioUQltYIIXhkZPT5XnjL7qXi1Wpkm6w5nccGWlpanLJNlkGQyEw1Pui6rs8tLFx+9vTJq30JlKK/3ycRCQkSFZ8Dcwszi4lwUOylgwNUxC8cBKAS7hIWzwAAAABJRU5ErkJggg==) left center no-repeat;background-size:100% 100%}.spbc_auto_link,.spbc_manual_link{height:28px;padding:0 10px 1px;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;display:inline-block;cursor:pointer}.spbc_rate_block_stars{margin:1em 0}.star-icon{color:#ddd;font-size:18px;position:relative}.star-icon.full:before{color:#FDE16D;content:'\2605';position:absolute;left:0;text-shadow:0 0 2px rgba(0,0,0,.7)}.spbc_hint{color:#666}.spbc_hint_warning{font-size:17px;font-weight:600;text-align:center;color:#eb8f00}.spbc_hint--link{color:#aaa;text-decoration:underline;cursor:pointer}.spbc_hint--top_right{position:relative;float:right;top:0;right:10px}.spbc_auto_link{border-color:#999;-webkit-box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);color:#000;text-decoration:none;font-size:13px;line-height:26px;margin:0;-webkit-border-radius:2px;border-radius:2px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.spbc_auto_link:hover{color:#fff}.spbc_manual_link{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration:none;font-size:13px;line-height:26px;margin:0;border-radius:3px;-webkit-border-radius:3px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.spbc_manual_link:hover{color:#000}.spbc-btn-as-link{padding:0;margin:0;vertical-align:baseline;color:gray;border:0;border-bottom:1px solid;cursor:pointer}#spbc-account-email[contenteditable=true]{padding:6px;background-color:#fff;border:1px solid #ccc}.spbc_long_desc,.spbc_popup_tip--wrapper{min-height:80px;max-width:500px;padding:10px;z-index:10}.spbc_dismiss{width:20px;height:20px;border-radius:5px}.spbc-links:visited{color:#fff}.spbc_long_desc{position:absolute;background:#5a5a5a;min-width:80px;color:#fff}.spbc_long_desc p{color:#fff!important}i.animate-spin{-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;display:inline-block;font-size:25px;line-height:20px;color:rgba(120,200,230,1);margin:25px}@keyframes spin{to{transform:rotate(359deg)}}.spbc_long_desc__angle,.spbc_long_desc__angle_top_left{width:10px;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);position:absolute;height:10px;background:#5a5a5a}.spbc_long_desc__cancel{position:absolute;top:5px;right:5px;color:rgba(255,255,255,.5)}.spbc_long_desc__cancel:hover{color:#fff}.spbc_long_desc__link,.spbc_long_desc__title{color:rgba(120,200,230,1)}.spbc_long_desc__angle{top:5px;left:-17px;transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_long_desc__angle_top_left{top:-10px;left:-9px;transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_long_desc__title{margin:0}.spbc_long_desc__link:hover{color:rgba(140,220,250,1)}.spbc_long_desc h4{color:#50a0be;margin:10px 0 3px}.spbc_long_desc span{margin:0 0 0 10px;display:inline-block}.spbc_long_desc img{width:300px}.spbc_popup_tip--icon---show:hover{color:#aaa;cursor:pointer}.spbc_popup_tip--wrapper{position:absolute;background:#5a5a5a;min-width:80px;color:#fff}.spbc_popup_tip--icon---cancel{position:absolute;top:0;right:5px;color:rgba(255,255,255,.5)}.spbc_popup_tip--icon---cancel:hover{color:#fff}.spbc_popup_tip--angle{position:absolute;top:5px;left:-17px;width:10px;height:10px;background:#5a5a5a;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_popup_tip--title{color:rgba(120,200,230,1);margin:0}.spbc_popup_tip--text{color:#fff!important}tr:hover .spbc_hint--wrapper{display:none}.spbc_log-wrapper{padding:5px;border:1px solid #000;width:98%;min-height:300px;height:300px;border-bottom:5px dashed #5a5a5a}.spbc_log-wrapper .panel-body{height:100%;overflow-y:auto}.spbc_log-line{margin:0;padding:0 5px}.spbc_log-line:nth-child(odd){background:#d3d3d3}.spbc_log-block_header{margin:10px 0}.spbc_log-input--checkbox,.spbc_log-label--checkbox{width:auto}button.ct_support_link{border:none;background:0 0;color:#666;text-decoration:underline;cursor:pointer}#spbc-modal-content{text-align:center}#spbc-modal-content>*{display:block;width:100%}.spbc-popup-msg{width:98%;height:15px;text-align:center;padding:4px;border-radius:7px;position:relative;top:0;right:0;bottom:0;left:0;margin:auto}.popup--green{background:#DFD;color:#060;border:1px solid #060}.popup--red{background:#FDD;color:#600;border:1px solid #600}#spbcscan-results-log-module{min-height:300px;height:300px;border-bottom:5px dashed #5a5a5a}#spbcscan-results-log-module .panel-body{height:100%;overflow-y:auto}#spbcscan-scanner-caption h4{margin:10px 0;font-size:14px}#spbcscan-results-log-caption p{font-size:13px;margin:0 0 6px}#spbcscan-scanner-caption{display:flex;flex-wrap:wrap;flex-direction:row-reverse}#spbcscan-scanner-caption .column:first-child{width:75%;flex:0 0 75%}#spbcscan-scanner-caption .column:last-child{width:25%;flex:0 0 25%;padding-right:10px;box-sizing:border-box}.spbc-scan-log-title{color:#1d2327;font-size:1.3em;margin:0 0 15px!important;font-weight:600}.spbc--status{position:relative;padding-left:26px}.spbc--marker-green::before,.spbc--marker-red::before,.spbc--marker-yellow::before{content:'';position:absolute;width:10px;height:10px;border-radius:50%;left:10px;top:4px}.spbc--marker-green::before{background:#1dda23}.spbc--marker-yellow::before{background:#ffb000}.spbc--marker-red::before{background:#d63638}
\ No newline at end of file
+.circle{border-radius:50%;align-items:center;justify-content:center;position:relative;background-color:#03A9F4;clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 0,50% 0,50% 50%,50% 50%)}.circle-inner{width:100%;height:100%;border-radius:50%;background:#f7f7f7;transform:scale(.7)}.circle--small{width:16px;height:16px}.circle--mid{width:30px;height:30px}.-animation--circle{animation:animation-circle 2s linear forwards}.-animation--30s{animation-duration:30s!important}.-animation--2min{animation-duration:120s!important}@keyframes animation-circle{12.5%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 0,0 0,50% 50%,50% 50%)}25%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 50%,0 50%,50% 50%,50% 50%)}37.5%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 100%,0 100%,50% 50%,50% 50%)}50%{clip-path:polygon(50% 0,100% 0,100% 100%,50% 100%,50% 100%,50% 100%,50% 100%,50% 50%,50% 50%)}62.5%{clip-path:polygon(50% 0,100% 0,100% 100%,100% 100%,100% 100%,100% 100%,100% 100%,50% 50%,50% 50%)}75%{clip-path:polygon(50% 0,100% 0,100% 50%,100% 50%,100% 50%,100% 50%,100% 50%,50% 50%,50% 50%)}87.5%{clip-path:polygon(50% 0,100% 0,100% 0,100% 0,100% 0,100% 0,100% 0,50% 50%,50% 50%)}100%{clip-path:polygon(50% 0,50% 0,50% 0,50% 0,50% 0,50% 0,50% 0,50% 50%,50% 50%)}}#confirmation-code--resend .circle{margin-left:5px;display:inline-block;vertical-align:text-bottom}#spbcTopWarning h4,div.pagination{margin:10px}.spbc---hidden,.spbc_waf_reason{display:none}#spbcTopWarning{margin-bottom:5px}#spbcTopWarning h3{margin:10px 0 5px}#spbcTopWarning h4 span{margin-top:5px}#spbc_gdpr_open_modal:hover{cursor:pointer}.spbc---gray{color:gray}.spbc---red{color:red}.spbc_bold{font-weight:800}.spbc---top{z-index:9999!important}.spbc_waf_reason_title{text-decoration:underline}.spbc_waf_reason_title:hover+.spbc_waf_reason{display:inline}.spbc_warning_counter{margin:0 5px;padding:0 7px;font-size:14px;height:23px;display:inline-block;text-align:center;border-radius:3px}.spbc_sub_setting{margin-left:30px!important}.spbc_sub2_setting{margin-left:60px!important}.spbc_affiliate_shortcode{width:inherit!important;min-width:inherit!important}.spbc_warning_counter--black{color:#fff;background-color:#000}.spbc_warning_counter--red{color:#000;background-color:red}.spbc_warning_counter--orange{color:#000;background-color:orange}.spbc_warning_counter--green{color:#000;background-color:green}.spbc_highlighted{outline-offset:5px;outline-color:red;outline-width:3px!important;outline-style:solid!important}.spbc_status_icon{vertical-align:text-bottom;margin:0 5px}.spbc_progressbar_counter{position:absolute;height:22px;width:100%;left:0;top:0;text-align:center}.spbc_progressbar_counter span{vertical-align:sub;line-height:22px;font-weight:600;font-size:18px}.spbc_preloader,.spbc_preloader_button{margin-left:5px;vertical-align:text-top;display:none}.spbc_compare_file_row_wrapper,.spbc_view_file_row,.spbc_view_file_row_wrapper{line-height:19px}.ui-progressbar-value{background-image:url(../images/pbar-ani.gif)!important}.spbc_preloader{width:20px}.spbc_preloader_button{height:15px}.spbc_spinner_big{display:block;margin:40px auto}.spbc_scan_result_row td{text-align:center}.spbc_scan_result_row td:nth-child(1){text-align:left}.spbc_scan_result_row td:nth-child(2){text-align:right}.spbc_scan_result_row td:last-child button{margin-left:3px}.spbc_view_file_row_wrapper:nth-child(odd){background:#ccc}.spbc_view_file_row_wrapper:nth-child(even){background:#ddd}.spbc_auto_link,.spbc_compare_file_row_wrapper:nth-child(odd){background:#ccc}.spbc_view_file_row_num{display:inline-block;width:30px;margin:0 0 0 5px;border-right:1px solid #000}.spbc_view_file_row{display:inline;margin:0 0 0 5px;font-size:1em}.spbc_compare_file_headings{text-align:center;width:100%;display:inline-block;font-weight:700}.spbc_compare_file_row_wrapper:nth-child(even){background:#ddd}.spbc_compare_file_row_num{display:inline-block;width:20px;box-shadow:-2px 0 0 0 #000,2px 0 0 0 #000;padding:0 1%}.spbc_compare_file_row{display:inline-block;width:45%;margin:0;padding:0 1%}table.spbc_table_general{width:100%;border:0;border-spacing:0;border-collapse:collapse}table.spbc_table_general td,table.spbc_table_general th{position:relative;border:1px solid #666;padding:2px 10px}.spbcShortText{display:inline-block;width:100%}.spbcFullText,.spbcFullText-right{display:none;position:absolute;background:rgba(150,150,150,.9);padding:7px;z-index:20;color:#fff;top:0}.spbcFullText{border:1px solid #333;border-radius:5px}.spbcFullText-right{right:0;border:1px solid #333;border-radius:5px}.spbcFullText a{color:#fff}.spbcFullText a:hover,.star-icon{color:#ddd}ul.pagination{display:inline-block;margin:0}li.pagination{display:inline-block;margin-left:10px}span.current_page{font-size:1.3em;font-weight:600}.spbc_new{color:red;position:relative;font-size:10px;vertical-align:bottom;top:-8px}.spbc_wrapper_settings{margin:10px 0 0}.spbc_tabs_nav_wrapper{display:block;border-bottom:1px solid #ccc}.spbc_tab_nav{display:inline-block;margin:10px 0 0 .5em;padding:5px 10px;height:24px;border:1px solid #ccc;border-bottom:none;font-size:14px;line-height:24px;background:#e5e5e5;color:#555;cursor:pointer}.spbc_tab_nav:hover{background:#fff}.spbc_tab_nav--active{margin-bottom:-1px;border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}.spbc_tab_nav--active:hover{background:#f1f1f1}.spbc_tab{display:none;margin:15px 0}.spbc_tab--active{display:block}.spbc_tab_fields_group{position:relative;min-width:255px;margin:10px auto;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fdfdfd}.spbc_group_header{margin:0 0 10px;padding:10px;border-bottom:1px solid #eee}.spbc_group_header>h3{margin:0}.spbc_group_header>h3>a{color:#1d2327;text-decoration:none}.spbc_wrapper_field{margin:0 15px 15px}.spbc_long_description__show:hover{color:#aaa;cursor:pointer}.spbc_settings_description{font-size:9pt;color:#888}.spbc_settings_description select{display:inline;position:relative;transform:scale(.7);left:-50px}.spbc_tab-settings_general input[type=text]{min-width:255px;width:100%}.spbc_short_text_field input{min-width:70px!important;width:70px!important}.spbc_middle_text_field input{min-width:200px!important;width:200px!important}.spbc_long_text_field input[type=text]{min-width:200px;width:500px}.spbc_wrapper_field label{vertical-align:baseline}.spbc_wrapper_field h4{margin:10px 15px 5px}.spbc_wrapper_footer{margin:15px}#spbc_wrapper_error{margin:0;padding:5px}#spbc_wrapper_error h3,#spbc_wrapper_error h4{margin:5px}#showHideLink{display:inline-block;margin-top:5px;color:#777}.spbc__wrapper--center{margin:10px 0;text-align:center}.spbc__show_more_logs{display:none}.spbc_settings_banner{display:inline-block;margin:1em 0;vertical-align:top;text-align:center}#spbc_translate_plugin{margin-left:10px}.spbc_rate_block{border:1px dashed #666;width:400px;padding:.2em}#spbc_translate_plugin .spbc_button_rate{margin-bottom:10px}.spbc_button_rate{display:inline-block;text-align:center;vertical-align:middle;padding:12px 24px;border:1px solid #216298;border-radius:8px;background:#35a0f7;background:-webkit-gradient(linear,left top,left bottom,from(#35a0f7),to(#216298));background:-moz-linear-gradient(top,#35a0f7,#216298);background:linear-gradient(to bottom,#35a0f7,#216298);text-shadow:#153e5f 1px 1px 1px;font:normal normal bold 16px verdana;color:#fff;text-decoration:none}.spbc_button_rate:focus,.spbc_button_rate:hover{border:1px solid #297bbe;background:#40c0ff;background:-webkit-gradient(linear,left top,left bottom,from(#40c0ff),to(#2876b6));background:-moz-linear-gradient(top,#40c0ff,#2876b6);background:linear-gradient(to bottom,#40c0ff,#2876b6);color:#fff;text-decoration:none}.spbc_button_rate:active{background:#216298;background:-webkit-gradient(linear,left top,left bottom,from(#216298),to(#216298));background:-moz-linear-gradient(top,#216298,#216298);background:linear-gradient(to bottom,#216298,#216298)}#spbc_rate_plugin .spbc_button_rate:before{content:"\0000a0";display:inline-block;height:24px;width:24px;line-height:24px;margin:0 4px -6px -4px;position:relative;top:0;left:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACjElEQVRIie1UTWsTURQ9dzKpofQLobQFlxqENF1JG0GE6sKuRLDtTKaBkJUIRdwpba2g9ge48gMEUUyTbrUutFmk1X6Q7kxDgi1YUSmlpsGYiTXtuy7GCYnaSRu3PczAfe/dd8695z0ecIAKsFVK0DQNLpcL8Xi8KgHZalFRNWe7uyMs2+RtkBQIjQerU/k3uVceHhmdyed/8NbWFg8OXrlXDY+020JdXf2NQMB/yuE4hHw+j5yur1df7h9QvQMXpiKRHSEECyF4cvJlQVG149VwlZ1BX58fsn1H7e29+OhMd7cEAMyM6PTMNAgfFUWrJSIAQgCAYAKIAECABACABGFt7fPPaDRqjItVqyrqG5vGAn7/kMfTBYMIyGQyeD0VMZKYweYGM2ZjpnR+eWVl8V08fnYiNP6t1Jbzc3PzbNryP38stsiKqp0uWuTz+eBqd9/s6uo02vpdPTOXxZuZDB7cfwgQGa0TIEmS7nA4PhhDkgBgdXV1FkTzRYHCtjjS4XZ3mGQmSsdEhKbGRqhqPwRz0ZOlRKImGBy/FA4F31gd8tG2tjaZmf+VUybS2tpaNpfeTMsADu+2xxRw2O12ENFftpTG6XQat26PQZIIzEA2m/1SKBSGGXhhWZmiaifezs7yfhGdnmFF1TqtuM0OksvvlzMnPZ4mq+RkMoVsNlu83ImlxDqATxUFwqHg94aGhsc9PeeuNjc372pRMpnExsZX5HI5xBZjd3aEuBsOBTcs7TGherXaa9eHIqlUioUQltYIIXhkZPT5XnjL7qXi1Wpkm6w5nccGWlpanLJNlkGQyEw1Pui6rs8tLFx+9vTJq30JlKK/3ycRCQkSFZ8Dcwszi4lwUOylgwNUxC8cBKAS7hIWzwAAAABJRU5ErkJggg==) left center no-repeat;background-size:100% 100%}.spbc_auto_link,.spbc_manual_link{height:28px;padding:0 10px 1px;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;display:inline-block;cursor:pointer}.spbc_rate_block_stars{margin:1em 0}.star-icon{font-size:18px;position:relative}.star-icon.full:before{color:#FDE16D;content:'\2605';position:absolute;left:0;text-shadow:0 0 2px rgba(0,0,0,.7)}.spbc_hint{color:#666}.spbc_hint_warning{font-size:17px;font-weight:600;text-align:center;color:#eb8f00}.spbc_hint--link{color:#aaa;text-decoration:underline;cursor:pointer}.spbc_hint--top_right{position:relative;float:right;top:0;right:10px}.spbc_auto_link{border-color:#999;-webkit-box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);color:#000;text-decoration:none;font-size:13px;line-height:26px;margin:0;-webkit-border-radius:2px;border-radius:2px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.spbc_auto_link:hover{color:#fff}.spbc_manual_link{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration:none;font-size:13px;line-height:26px;margin:0;border-radius:3px;-webkit-border-radius:3px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.spbc_manual_link:hover{color:#000}.spbc-btn-as-link{padding:0;margin:0;vertical-align:baseline;color:gray;border:0;border-bottom:1px solid;cursor:pointer}#spbc-account-email[contenteditable=true]{padding:6px;background-color:#fff;border:1px solid #ccc}.spbc_long_desc,.spbc_popup_tip--wrapper{min-height:80px;max-width:500px;padding:10px;z-index:10}.spbc_dismiss{width:20px;height:20px;border-radius:5px}.spbc-links:visited{color:#fff}.spbc_long_desc{position:absolute;background:#5a5a5a;min-width:80px;color:#fff}.spbc_long_desc p{color:#fff!important}i.animate-spin{-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;display:inline-block;font-size:25px;line-height:20px;color:rgba(120,200,230,1);margin:25px}@keyframes spin{to{transform:rotate(359deg)}}.spbc_long_desc__angle,.spbc_long_desc__angle_top_left{width:10px;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);position:absolute;height:10px;background:#5a5a5a}.spbc_long_desc__cancel{position:absolute;top:5px;right:5px;color:rgba(255,255,255,.5)}.spbc_long_desc__cancel:hover{color:#fff}.spbc_long_desc__link,.spbc_long_desc__title{color:rgba(120,200,230,1)}.spbc_long_desc__angle{top:5px;left:-17px;transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_long_desc__angle_top_left{top:-10px;left:-9px;transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_long_desc__title{margin:0}.spbc_long_desc__link:hover{color:rgba(140,220,250,1)}.spbc_long_desc h4{color:#50a0be;margin:10px 0 3px}.spbc_long_desc span{margin:0 0 0 10px;display:inline-block}.spbc_long_desc img{width:300px}.spbc_popup_tip--icon---show:hover{color:#aaa;cursor:pointer}.spbc_popup_tip--wrapper{position:absolute;background:#5a5a5a;min-width:80px;color:#fff}.spbc_popup_tip--icon---cancel{position:absolute;top:0;right:5px;color:rgba(255,255,255,.5)}.spbc_popup_tip--icon---cancel:hover{color:#fff}.spbc_popup_tip--angle{position:absolute;top:5px;left:-17px;width:10px;height:10px;background:#5a5a5a;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_popup_tip--title{color:rgba(120,200,230,1);margin:0}.spbc_popup_tip--text{color:#fff!important}tr:hover .spbc_hint--wrapper{display:none}.spbc_log-wrapper{padding:5px;border:1px solid #000;width:98%;min-height:300px;height:300px;border-bottom:5px dashed #5a5a5a}.spbc_log-wrapper .panel-body{height:100%;overflow-y:auto}.spbc_log-line{margin:0;padding:0 5px}.spbc_log-line:nth-child(odd){background:#d3d3d3}.spbc_log-block_header{margin:10px 0}.spbc_log-input--checkbox,.spbc_log-label--checkbox{width:auto}button.ct_support_link{border:none;background:0 0;color:#666;text-decoration:underline;cursor:pointer}#spbc-modal-content{text-align:center}#spbc-modal-content>*{display:block;width:100%}.spbc-popup-msg{width:98%;height:15px;text-align:center;padding:4px;border-radius:7px;position:relative;top:0;right:0;bottom:0;left:0;margin:auto}.popup--green{background:#DFD;color:#060;border:1px solid #060}.popup--red{background:#FDD;color:#600;border:1px solid #600}#spbcscan-results-log-module{min-height:300px;height:300px;border-bottom:5px dashed #5a5a5a}#spbcscan-results-log-module .panel-body{height:100%;overflow-y:auto}#spbcscan-scanner-caption h4{margin:10px 0;font-size:14px}#spbcscan-results-log-caption p{font-size:13px;margin:0 0 6px}#spbcscan-scanner-caption{display:flex;flex-wrap:wrap;flex-direction:row-reverse}#spbcscan-scanner-caption .column:first-child{width:75%;flex:0 0 75%}#spbcscan-scanner-caption .column:last-child{width:25%;flex:0 0 25%;padding-right:10px;box-sizing:border-box}.spbc-scan-log-title{color:#1d2327;font-size:1.3em;margin:0 0 15px!important;font-weight:600}.spbc--status{position:relative;padding-left:26px}.spbc--marker-green::before,.spbc--marker-red::before,.spbc--marker-yellow::before{content:'';position:absolute;width:10px;height:10px;border-radius:50%;left:10px;top:4px}.spbc--marker-green::before{background:#1dda23}.spbc--marker-yellow::before{background:#ffb000}.spbc--marker-red::before{background:#d63638}
\ No newline at end of file
From 2d20f0c6205fcfc53b51b744be68c205aadb263b Mon Sep 17 00:00:00 2001
From: svfcode
Date: Fri, 25 Aug 2023 13:39:50 +0300
Subject: [PATCH 086/109] Up version and upd changelog.
---
readme.txt | 11 ++++++++++-
security-malware-firewall.php | 2 +-
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/readme.txt b/readme.txt
index b98b04f57..0d9bf3245 100644
--- a/readme.txt
+++ b/readme.txt
@@ -4,7 +4,7 @@ Tags: security, firewall, malware, wordpress security, brute force
Requires at least: 3.0
Tested up to: 6.3
Requires PHP: 5.6
-Stable tag: 2.116
+Stable tag: 2.117
License: GPLv2
License URI: https://www.gnu.org/licenses/gpl-2.0.html
@@ -301,6 +301,15 @@ This is required for the Security FireWall to function properly. Plugins that ar
== Changelog ==
+= 2.117 Aug 28 2023 =
+* New: Settings. Add ability to change admin email.
+* New: Heuristics. Detect super variables in the system commands.
+* New: Show different types of weakspots in severity order.
+* Upd: Scan. Find and show all malwares in Frontend Malware accordion.
+* Upd: Security. Improve security logs view.
+* Upd: Scan. Unset approved by ct status if no hash in list.
+* Upd: Scan. Added .otc files for scanning.
+
= 2.116 Aug 14 2023 =
* New: WL. Added constants for custom description and FAQ link.
* Fix: FW. Delete all lines after send fw logs.
diff --git a/security-malware-firewall.php b/security-malware-firewall.php
index 47f8b1444..edd1bc882 100644
--- a/security-malware-firewall.php
+++ b/security-malware-firewall.php
@@ -5,7 +5,7 @@
Plugin URI: https://wordpress.org/plugins/security-malware-firewall/
Description: Security & Malware scan by CleanTalk to protect your website from online threats and viruses. IP/Country FireWall, Web application FireWall. Detailed stats and logs to have full control.
Author: CleanTalk Security
-Version: 2.116.1-dev
+Version: 2.117.1-dev
Author URI: https://cleantalk.org
Text Domain: security-malware-firewall
Domain Path: /i18n
From 632dd8fc95670181e4b76f7d744ea5b0410271c2 Mon Sep 17 00:00:00 2001
From: svfcode
Date: Mon, 28 Aug 2023 10:53:27 +0300
Subject: [PATCH 087/109] Fix. spbct_js_after and plugin default description
---
inc/spbc-settings.php | 5 ++++-
security-malware-firewall.php | 6 +++---
2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/inc/spbc-settings.php b/inc/spbc-settings.php
index 1c1a3bca9..764b164cb 100644
--- a/inc/spbc-settings.php
+++ b/inc/spbc-settings.php
@@ -1117,7 +1117,10 @@ function spbc_settings__draw_elements($elems_to_draw = null, $direct_call = fals
}
$target = 'spbc_tab-' . $elem_name;
echo ""; // JS after tab
diff --git a/security-malware-firewall.php b/security-malware-firewall.php
index edd1bc882..cb07b75f4 100644
--- a/security-malware-firewall.php
+++ b/security-malware-firewall.php
@@ -42,7 +42,7 @@
}
// Getting version form main file (look above)
-$plugin_info = get_file_data(__FILE__, array('Version' => 'Version', 'Name' => 'Plugin Name',));
+$plugin_info = get_file_data(__FILE__, array('Version' => 'Version', 'Name' => 'Plugin Name', 'Description' => 'Description'));
$plugin_version__agent = $plugin_info['Version'];
// Converts xxx.xxx.xx-dev to xxx.xxx.2xx
// And xxx.xxx.xx-fix to xxx.xxx.1xx
@@ -2733,7 +2733,7 @@ function spbc_scanner_resend_pscan_files()
function spbc_check_account_status($api_key)
{
- global $spbc;
+ global $spbc, $plugin_info;
// Checking account status
$result = SpbcAPI::method__notice_paid_till(
@@ -2818,7 +2818,7 @@ function spbc_check_account_status($api_key)
: $spbc->default_data['wl_support_email'];
$spbc->data['wl_plugin_description'] = isset($result['wl_plugin_description'])
? Sanitize::cleanTextField($result['wl_plugin_description'])
- : get_plugin_data('security-malware-firewall/security-malware-firewall.php')['Description'];
+ : $plugin_info['Description'];
} else {
$spbc->data['wl_mode_enabled'] = false;
$spbc->data['wl_brandname'] = $spbc->default_data['wl_brandname'];
From 06b3c10b5855af0afda751c9ed7d20aedaedf840 Mon Sep 17 00:00:00 2001
From: svfcode
Date: Wed, 30 Aug 2023 11:58:32 +0300
Subject: [PATCH 088/109] Fix. Scan. Check total site pages.
---
lib/CleantalkSP/SpbctWP/Scanner/Frontend.php | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/lib/CleantalkSP/SpbctWP/Scanner/Frontend.php b/lib/CleantalkSP/SpbctWP/Scanner/Frontend.php
index 60a613fc9..3ada27985 100644
--- a/lib/CleantalkSP/SpbctWP/Scanner/Frontend.php
+++ b/lib/CleantalkSP/SpbctWP/Scanner/Frontend.php
@@ -456,10 +456,12 @@ public static function sendFmsLogs()
? $spbc->data['scanner']['scanner_start_local_date']
: current_time('Y-m-d H:i:s');
+ $total_site_pages = isset($spbc->data['scanner']['total_site_pages']) ? $spbc->data['scanner']['total_site_pages'] : self::getTotalPages();
+
if (count($fms_logs_data_prepare) > 0) {
$result_fms = API::method__security_fms_logs(
$spbc->settings['spbc_key'], // API key
- $spbc->data['scanner']['total_site_pages'], // Total pages
+ $total_site_pages, // Total pages
count($fms_logs_data_prepare), // Total infected pages
$scanner_start_local_date, // Scanner start date
json_encode($fms_logs_data_prepare) // Logs data
From d70325ed7e5b1a20b4c6fb937a317c813a397e8c Mon Sep 17 00:00:00 2001
From: svfcode
Date: Wed, 30 Aug 2023 12:29:55 +0300
Subject: [PATCH 089/109] merge master to dev
---
.../Common/Scanner/HeuristicAnalyser/Modules/Entropy.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/Modules/Entropy.php b/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/Modules/Entropy.php
index aa90f723d..3a2800c82 100644
--- a/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/Modules/Entropy.php
+++ b/lib/CleantalkSP/Common/Scanner/HeuristicAnalyser/Modules/Entropy.php
@@ -47,7 +47,7 @@ public function analyse(Variables $variables)
$encoder = new Encoder();
$detected_unreadable_variables = [];
foreach ( $variable_names as $variable ) {
- if ( empty($variables_obj[$variable]) ) {
+ if ( ! isset($variables_obj[$variable][0]) ) {
continue;
}
if ( strpos($variable, '_') === 0 || strlen($variable) < 5 ) {
From 7a55187115ffa8882b9aae3b3621fbb25deda71a Mon Sep 17 00:00:00 2001
From: svfcode
Date: Wed, 30 Aug 2023 12:40:14 +0300
Subject: [PATCH 090/109] merge master to fix
---
composer.json | 3 +
css/spbc-settings.min.css | 2 +-
css/src/spbc-settings.css | 32 ++
inc/spbc-admin.php | 1 +
inc/spbc-scanner.php | 22 +-
inc/spbc-settings.php | 284 +++++++++++++++---
js/spbc-settings.min.js | 2 +-
js/spbc-settings.min.js.map | 2 +-
js/spbc-settings_tab--scanner.min.js | 2 +-
js/spbc-settings_tab--scanner.min.js.map | 2 +-
js/src/spbc-settings.js | 69 ++++-
js/src/spbc-settings_tab--scanner.js | 72 +++--
.../HeuristicAnalyser/HeuristicAnalyser.php | 39 +++
.../HeuristicAnalyser/Modules/Entropy.php | 2 -
.../Scanner/SignaturesAnalyser/Controller.php | 2 +-
lib/CleantalkSP/SpbctWP/Firewall/BFP.php | 2 +-
lib/CleantalkSP/SpbctWP/Scanner/Frontend.php | 27 +-
.../SpbctWP/Scanner/ScannerQueue.php | 23 +-
lib/CleantalkSP/SpbctWP/State.php | 1 +
readme.txt | 11 +-
security-malware-firewall.php | 10 +-
tests/Standalone/TestBFP.php | 12 +-
22 files changed, 524 insertions(+), 98 deletions(-)
diff --git a/composer.json b/composer.json
index e05a11ed7..88a8e85d8 100644
--- a/composer.json
+++ b/composer.json
@@ -28,6 +28,9 @@
],
"just_phpunit": [
"vendor/bin/phpunit --configuration tests/phpunit.xml --debug"
+ ],
+ "just_psalm": [
+ "vendor/bin/psalm --no-cache --config=psalm.xml --debug"
]
},
"config": {
diff --git a/css/spbc-settings.min.css b/css/spbc-settings.min.css
index 03ba3333b..ddebbb5a1 100644
--- a/css/spbc-settings.min.css
+++ b/css/spbc-settings.min.css
@@ -1 +1 @@
-.circle{border-radius:50%;align-items:center;justify-content:center;position:relative;background-color:#03A9F4;clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 0,50% 0,50% 50%,50% 50%)}.circle-inner{width:100%;height:100%;border-radius:50%;background:#f7f7f7;transform:scale(.7)}.circle--small{width:16px;height:16px}.circle--mid{width:30px;height:30px}.-animation--circle{animation:animation-circle 2s linear forwards}.-animation--30s{animation-duration:30s!important}.-animation--2min{animation-duration:120s!important}@keyframes animation-circle{12.5%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 0,0 0,50% 50%,50% 50%)}25%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 50%,0 50%,50% 50%,50% 50%)}37.5%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 100%,0 100%,50% 50%,50% 50%)}50%{clip-path:polygon(50% 0,100% 0,100% 100%,50% 100%,50% 100%,50% 100%,50% 100%,50% 50%,50% 50%)}62.5%{clip-path:polygon(50% 0,100% 0,100% 100%,100% 100%,100% 100%,100% 100%,100% 100%,50% 50%,50% 50%)}75%{clip-path:polygon(50% 0,100% 0,100% 50%,100% 50%,100% 50%,100% 50%,100% 50%,50% 50%,50% 50%)}87.5%{clip-path:polygon(50% 0,100% 0,100% 0,100% 0,100% 0,100% 0,100% 0,50% 50%,50% 50%)}100%{clip-path:polygon(50% 0,50% 0,50% 0,50% 0,50% 0,50% 0,50% 0,50% 50%,50% 50%)}}#confirmation-code--resend .circle{margin-left:5px;display:inline-block;vertical-align:text-bottom}.spbc---hidden,.spbc_waf_reason{display:none}#spbcTopWarning{margin-bottom:5px}#spbcTopWarning h3{margin:10px 0 5px}#spbcTopWarning h4{margin:10px}#spbcTopWarning h4 span{margin-top:5px}#spbc_gdpr_open_modal:hover{cursor:pointer}.spbc---gray{color:gray}.spbc---red{color:red}.spbc_bold{font-weight:800}.spbc---top{z-index:9999!important}.spbc_waf_reason_title{text-decoration:underline}.spbc_waf_reason_title:hover+.spbc_waf_reason{display:inline}.spbc_warning_counter{margin:0 5px;padding:0 7px;font-size:14px;height:23px;display:inline-block;text-align:center;border-radius:3px}.spbc_sub_setting{margin-left:30px!important}.spbc_sub2_setting{margin-left:60px!important}.spbc_affiliate_shortcode{width:inherit!important;min-width:inherit!important}.spbc_warning_counter--black{color:#fff;background-color:#000}.spbc_warning_counter--red{color:#000;background-color:red}.spbc_warning_counter--orange{color:#000;background-color:orange}.spbc_warning_counter--green{color:#000;background-color:green}.spbc_highlighted{outline-offset:5px;outline-color:red;outline-width:3px!important;outline-style:solid!important}.spbc_status_icon{vertical-align:text-bottom;margin:0 5px}.spbc_progressbar_counter{position:absolute;height:22px;width:100%;left:0;top:0;text-align:center}.spbc_progressbar_counter span{vertical-align:sub;line-height:22px;font-weight:600;font-size:18px}.spbc_preloader,.spbc_preloader_button{margin-left:5px;vertical-align:text-top;display:none}.spbc_compare_file_row_wrapper,.spbc_view_file_row,.spbc_view_file_row_wrapper{line-height:19px}.ui-progressbar-value{background-image:url(../images/pbar-ani.gif)!important}.spbc_preloader{width:20px}.spbc_preloader_button{height:15px}.spbc_spinner_big{display:block;margin:40px auto}.spbc_scan_result_row td{text-align:center}.spbc_scan_result_row td:nth-child(1){text-align:left}.spbc_scan_result_row td:nth-child(2){text-align:right}.spbc_scan_result_row td:last-child button{margin-left:3px}.spbc_view_file_row_wrapper:nth-child(odd){background:#ccc}.spbc_view_file_row_wrapper:nth-child(even){background:#ddd}.spbc_view_file_row_num{display:inline-block;width:30px;margin:0 0 0 5px;border-right:1px solid #000}.spbc_view_file_row{display:inline;margin:0 0 0 5px;font-size:1em}.spbc_compare_file_headings{text-align:center;width:100%;display:inline-block;font-weight:700}.spbc_compare_file_row_wrapper:nth-child(odd){background:#ccc}.spbc_compare_file_row_wrapper:nth-child(even){background:#ddd}.spbc_compare_file_row_num{display:inline-block;width:20px;box-shadow:-2px 0 0 0 #000,2px 0 0 0 #000;padding:0 1%}.spbc_compare_file_row{display:inline-block;width:45%;margin:0;padding:0 1%}table.spbc_table_general{width:100%;border:0;border-spacing:0;border-collapse:collapse}table.spbc_table_general td,table.spbc_table_general th{position:relative;border:1px solid #666;padding:2px 10px}.spbcShortText{display:inline-block;width:100%}.spbcFullText{display:none;position:absolute;top:0;background:rgba(150,150,150,.9);color:#fff;padding:7px;border:1px solid #333;border-radius:5px;z-index:20}div.pagination{margin:10px}ul.pagination{display:inline-block;margin:0}li.pagination{display:inline-block;margin-left:10px}span.current_page{font-size:1.3em;font-weight:600}.spbc_new{color:red;position:relative;font-size:10px;vertical-align:bottom;top:-8px}.spbc_wrapper_settings{margin:10px 0 0}.spbc_tabs_nav_wrapper{display:block;border-bottom:1px solid #ccc}.spbc_tab_nav{display:inline-block;margin:10px 0 0 .5em;padding:5px 10px;height:24px;border:1px solid #ccc;border-bottom:none;font-size:14px;line-height:24px;background:#e5e5e5;color:#555;cursor:pointer}.spbc_tab_nav:hover{background:#fff}.spbc_tab_nav--active{margin-bottom:-1px;border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}.spbc_tab_nav--active:hover{background:#f1f1f1}.spbc_tab{display:none;margin:15px 0}.spbc_tab--active{display:block}.spbc_tab_fields_group{position:relative;min-width:255px;margin:10px auto;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fdfdfd}.spbc_group_header{margin:0 0 10px;padding:10px;border-bottom:1px solid #eee}.spbc_group_header>h3{margin:0}.spbc_group_header>h3>a{color:#1d2327;text-decoration:none}.spbc_wrapper_field{margin:0 15px 15px}.spbc_long_description__show:hover{color:#aaa;cursor:pointer}.spbc_settings_description{font-size:9pt;color:#888}.spbc_settings_description select{display:inline;position:relative;transform:scale(.7);left:-50px}.spbc_tab-settings_general input[type=text]{min-width:255px;width:100%}.spbc_short_text_field input{min-width:70px!important;width:70px!important}.spbc_middle_text_field input{min-width:200px!important;width:200px!important}.spbc_long_text_field input[type=text]{min-width:200px;width:500px}.spbc_wrapper_field label{vertical-align:baseline}.spbc_wrapper_field h4{margin:10px 15px 5px}.spbc_wrapper_footer{margin:15px}#spbc_wrapper_error{margin:0;padding:5px}#spbc_wrapper_error h3,#spbc_wrapper_error h4{margin:5px}#showHideLink{display:inline-block;margin-top:5px;color:#777}.spbc__wrapper--center{margin:10px 0;text-align:center}.spbc__show_more_logs{display:none}.spbc_settings_banner{display:inline-block;margin:1em 0;vertical-align:top;text-align:center}#spbc_translate_plugin{margin-left:10px}.spbc_rate_block{border:1px dashed #666;width:400px;padding:.2em}#spbc_translate_plugin .spbc_button_rate{margin-bottom:10px}.spbc_button_rate{display:inline-block;text-align:center;vertical-align:middle;padding:12px 24px;border:1px solid #216298;border-radius:8px;background:#35a0f7;background:-webkit-gradient(linear,left top,left bottom,from(#35a0f7),to(#216298));background:-moz-linear-gradient(top,#35a0f7,#216298);background:linear-gradient(to bottom,#35a0f7,#216298);text-shadow:#153e5f 1px 1px 1px;font:normal normal bold 16px verdana;color:#fff;text-decoration:none}.spbc_button_rate:focus,.spbc_button_rate:hover{border:1px solid #297bbe;background:#40c0ff;background:-webkit-gradient(linear,left top,left bottom,from(#40c0ff),to(#2876b6));background:-moz-linear-gradient(top,#40c0ff,#2876b6);background:linear-gradient(to bottom,#40c0ff,#2876b6);color:#fff;text-decoration:none}.spbc_button_rate:active{background:#216298;background:-webkit-gradient(linear,left top,left bottom,from(#216298),to(#216298));background:-moz-linear-gradient(top,#216298,#216298);background:linear-gradient(to bottom,#216298,#216298)}#spbc_rate_plugin .spbc_button_rate:before{content:"\0000a0";display:inline-block;height:24px;width:24px;line-height:24px;margin:0 4px -6px -4px;position:relative;top:0;left:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACjElEQVRIie1UTWsTURQ9dzKpofQLobQFlxqENF1JG0GE6sKuRLDtTKaBkJUIRdwpba2g9ge48gMEUUyTbrUutFmk1X6Q7kxDgi1YUSmlpsGYiTXtuy7GCYnaSRu3PczAfe/dd8695z0ecIAKsFVK0DQNLpcL8Xi8KgHZalFRNWe7uyMs2+RtkBQIjQerU/k3uVceHhmdyed/8NbWFg8OXrlXDY+020JdXf2NQMB/yuE4hHw+j5yur1df7h9QvQMXpiKRHSEECyF4cvJlQVG149VwlZ1BX58fsn1H7e29+OhMd7cEAMyM6PTMNAgfFUWrJSIAQgCAYAKIAECABACABGFt7fPPaDRqjItVqyrqG5vGAn7/kMfTBYMIyGQyeD0VMZKYweYGM2ZjpnR+eWVl8V08fnYiNP6t1Jbzc3PzbNryP38stsiKqp0uWuTz+eBqd9/s6uo02vpdPTOXxZuZDB7cfwgQGa0TIEmS7nA4PhhDkgBgdXV1FkTzRYHCtjjS4XZ3mGQmSsdEhKbGRqhqPwRz0ZOlRKImGBy/FA4F31gd8tG2tjaZmf+VUybS2tpaNpfeTMsADu+2xxRw2O12ENFftpTG6XQat26PQZIIzEA2m/1SKBSGGXhhWZmiaifezs7yfhGdnmFF1TqtuM0OksvvlzMnPZ4mq+RkMoVsNlu83ImlxDqATxUFwqHg94aGhsc9PeeuNjc372pRMpnExsZX5HI5xBZjd3aEuBsOBTcs7TGherXaa9eHIqlUioUQltYIIXhkZPT5XnjL7qXi1Wpkm6w5nccGWlpanLJNlkGQyEw1Pui6rs8tLFx+9vTJq30JlKK/3ycRCQkSFZ8Dcwszi4lwUOylgwNUxC8cBKAS7hIWzwAAAABJRU5ErkJggg==) left center no-repeat;background-size:100% 100%}.spbc_rate_block_stars{margin:1em 0}.star-icon{color:#ddd;font-size:18px;position:relative}.star-icon.full:before{color:#FDE16D;content:'\2605';position:absolute;left:0;text-shadow:0 0 2px rgba(0,0,0,.7)}.spbc_hint{color:#666}.spbc_hint_warning{font-size:17px;font-weight:600;text-align:center;color:#eb8f00}.spbc_hint--link{color:#aaa;text-decoration:underline;cursor:pointer}.spbc_auto_link,.spbc_manual_link{text-decoration:none;font-size:13px;line-height:26px;height:28px;padding:0 10px 1px;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;margin:0;display:inline-block;cursor:pointer}.spbc_hint--top_right{position:relative;float:right;top:0;right:10px}.spbc_auto_link{background:#ccc;border-color:#999;-webkit-box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);color:#000;-webkit-border-radius:2px;border-radius:2px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.spbc_auto_link:hover{color:#fff}.spbc_manual_link{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;border-radius:3px;-webkit-border-radius:3px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.spbc_long_desc,.spbc_popup_tip--wrapper{min-height:80px;max-width:500px;padding:10px;z-index:10}.spbc_manual_link:hover{color:#000}.spbc_dismiss{width:20px;height:20px;border-radius:5px}.spbc-links:visited{color:#fff}.spbc_long_desc{position:absolute;background:#5a5a5a;min-width:80px;color:#fff}.spbc_long_desc p{color:#fff!important}i.animate-spin{-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;display:inline-block;font-size:25px;line-height:20px;color:rgba(120,200,230,1);margin:25px}@keyframes spin{to{transform:rotate(359deg)}}.spbc_long_desc__angle,.spbc_long_desc__angle_top_left{width:10px;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);position:absolute;height:10px;background:#5a5a5a}.spbc_long_desc__cancel{position:absolute;top:5px;right:5px;color:rgba(255,255,255,.5)}.spbc_long_desc__cancel:hover{color:#fff}.spbc_long_desc__link,.spbc_long_desc__title{color:rgba(120,200,230,1)}.spbc_long_desc__angle{top:5px;left:-17px;transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_long_desc__angle_top_left{top:-10px;left:-9px;transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_long_desc__title{margin:0}.spbc_long_desc__link:hover{color:rgba(140,220,250,1)}.spbc_long_desc h4{color:#50a0be;margin:10px 0 3px}.spbc_long_desc span{margin:0 0 0 10px;display:inline-block}.spbc_long_desc img{width:300px}.spbc_popup_tip--icon---show:hover{color:#aaa;cursor:pointer}.spbc_popup_tip--wrapper{position:absolute;background:#5a5a5a;min-width:80px;color:#fff}.spbc_popup_tip--icon---cancel{position:absolute;top:0;right:5px;color:rgba(255,255,255,.5)}.spbc_popup_tip--icon---cancel:hover{color:#fff}.spbc_popup_tip--angle{position:absolute;top:5px;left:-17px;width:10px;height:10px;background:#5a5a5a;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_popup_tip--title{color:rgba(120,200,230,1);margin:0}.spbc_popup_tip--text{color:#fff!important}tr:hover .spbc_hint--wrapper{display:none}.spbc_log-wrapper{padding:5px;border:1px solid #000;width:98%;min-height:300px;height:300px;border-bottom:5px dashed #5a5a5a}.spbc_log-wrapper .panel-body{height:100%;overflow-y:auto}.spbc_log-line{margin:0;padding:0 5px}.spbc_log-line:nth-child(odd){background:#d3d3d3}.spbc_log-block_header{margin:10px 0}.spbc_log-input--checkbox,.spbc_log-label--checkbox{width:auto}button.ct_support_link{border:none;background:0 0;color:#666;text-decoration:underline;cursor:pointer}#spbc-modal-content{text-align:center}#spbc-modal-content>*{display:block;width:100%}.spbc-popup-msg{width:98%;height:15px;text-align:center;padding:4px;border-radius:7px;position:relative;top:0;right:0;bottom:0;left:0;margin:auto}.popup--green{background:#DFD;color:#060;border:1px solid #060}.popup--red{background:#FDD;color:#600;border:1px solid #600}#spbcscan-results-log-module{min-height:300px;height:300px;border-bottom:5px dashed #5a5a5a}#spbcscan-results-log-module .panel-body{height:100%;overflow-y:auto}#spbcscan-scanner-caption h4{margin:10px 0;font-size:14px}#spbcscan-results-log-caption p{font-size:13px;margin:0 0 6px}#spbcscan-scanner-caption{display:flex;flex-wrap:wrap;flex-direction:row-reverse}#spbcscan-scanner-caption .column:first-child{width:75%;flex:0 0 75%}#spbcscan-scanner-caption .column:last-child{width:25%;flex:0 0 25%;padding-right:10px;box-sizing:border-box}.spbc-scan-log-title{color:#1d2327;font-size:1.3em;margin:0 0 15px!important;font-weight:600}.spbc--status{position:relative;padding-left:26px}.spbc--marker-green::before,.spbc--marker-red::before,.spbc--marker-yellow::before{content:'';position:absolute;width:10px;height:10px;border-radius:50%;left:10px;top:4px}.spbc--marker-green::before{background:#1dda23}.spbc--marker-yellow::before{background:#ffb000}.spbc--marker-red::before{background:#d63638}
\ No newline at end of file
+.circle{border-radius:50%;align-items:center;justify-content:center;position:relative;background-color:#03A9F4;clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 0,50% 0,50% 50%,50% 50%)}.circle-inner{width:100%;height:100%;border-radius:50%;background:#f7f7f7;transform:scale(.7)}.circle--small{width:16px;height:16px}.circle--mid{width:30px;height:30px}.-animation--circle{animation:animation-circle 2s linear forwards}.-animation--30s{animation-duration:30s!important}.-animation--2min{animation-duration:120s!important}@keyframes animation-circle{12.5%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 0,0 0,50% 50%,50% 50%)}25%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 50%,0 50%,50% 50%,50% 50%)}37.5%{clip-path:polygon(50% 0,100% 0,100% 100%,0 100%,0 100%,0 100%,0 100%,50% 50%,50% 50%)}50%{clip-path:polygon(50% 0,100% 0,100% 100%,50% 100%,50% 100%,50% 100%,50% 100%,50% 50%,50% 50%)}62.5%{clip-path:polygon(50% 0,100% 0,100% 100%,100% 100%,100% 100%,100% 100%,100% 100%,50% 50%,50% 50%)}75%{clip-path:polygon(50% 0,100% 0,100% 50%,100% 50%,100% 50%,100% 50%,100% 50%,50% 50%,50% 50%)}87.5%{clip-path:polygon(50% 0,100% 0,100% 0,100% 0,100% 0,100% 0,100% 0,50% 50%,50% 50%)}100%{clip-path:polygon(50% 0,50% 0,50% 0,50% 0,50% 0,50% 0,50% 0,50% 50%,50% 50%)}}#confirmation-code--resend .circle{margin-left:5px;display:inline-block;vertical-align:text-bottom}#spbcTopWarning h4,div.pagination{margin:10px}.spbc---hidden,.spbc_waf_reason{display:none}#spbcTopWarning{margin-bottom:5px}#spbcTopWarning h3{margin:10px 0 5px}#spbcTopWarning h4 span{margin-top:5px}#spbc_gdpr_open_modal:hover{cursor:pointer}.spbc---gray{color:gray}.spbc---red{color:red}.spbc_bold{font-weight:800}.spbc---top{z-index:9999!important}.spbc_waf_reason_title{text-decoration:underline}.spbc_waf_reason_title:hover+.spbc_waf_reason{display:inline}.spbc_warning_counter{margin:0 5px;padding:0 7px;font-size:14px;height:23px;display:inline-block;text-align:center;border-radius:3px}.spbc_sub_setting{margin-left:30px!important}.spbc_sub2_setting{margin-left:60px!important}.spbc_affiliate_shortcode{width:inherit!important;min-width:inherit!important}.spbc_warning_counter--black{color:#fff;background-color:#000}.spbc_warning_counter--red{color:#000;background-color:red}.spbc_warning_counter--orange{color:#000;background-color:orange}.spbc_warning_counter--green{color:#000;background-color:green}.spbc_highlighted{outline-offset:5px;outline-color:red;outline-width:3px!important;outline-style:solid!important}.spbc_status_icon{vertical-align:text-bottom;margin:0 5px}.spbc_progressbar_counter{position:absolute;height:22px;width:100%;left:0;top:0;text-align:center}.spbc_progressbar_counter span{vertical-align:sub;line-height:22px;font-weight:600;font-size:18px}.spbc_preloader,.spbc_preloader_button{margin-left:5px;vertical-align:text-top;display:none}.spbc_compare_file_row_wrapper,.spbc_view_file_row,.spbc_view_file_row_wrapper{line-height:19px}.ui-progressbar-value{background-image:url(../images/pbar-ani.gif)!important}.spbc_preloader{width:20px}.spbc_preloader_button{height:15px}.spbc_spinner_big{display:block;margin:40px auto}.spbc_scan_result_row td{text-align:center}.spbc_scan_result_row td:nth-child(1){text-align:left}.spbc_scan_result_row td:nth-child(2){text-align:right}.spbc_scan_result_row td:last-child button{margin-left:3px}.spbc_view_file_row_wrapper:nth-child(odd){background:#ccc}.spbc_view_file_row_wrapper:nth-child(even){background:#ddd}.spbc_auto_link,.spbc_compare_file_row_wrapper:nth-child(odd){background:#ccc}.spbc_view_file_row_num{display:inline-block;width:30px;margin:0 0 0 5px;border-right:1px solid #000}.spbc_view_file_row{display:inline;margin:0 0 0 5px;font-size:1em}.spbc_compare_file_headings{text-align:center;width:100%;display:inline-block;font-weight:700}.spbc_compare_file_row_wrapper:nth-child(even){background:#ddd}.spbc_compare_file_row_num{display:inline-block;width:20px;box-shadow:-2px 0 0 0 #000,2px 0 0 0 #000;padding:0 1%}.spbc_compare_file_row{display:inline-block;width:45%;margin:0;padding:0 1%}table.spbc_table_general{width:100%;border:0;border-spacing:0;border-collapse:collapse}table.spbc_table_general td,table.spbc_table_general th{position:relative;border:1px solid #666;padding:2px 10px}.spbcShortText{display:inline-block;width:100%}.spbcFullText,.spbcFullText-right{display:none;position:absolute;background:rgba(150,150,150,.9);padding:7px;z-index:20;color:#fff;top:0}.spbcFullText{border:1px solid #333;border-radius:5px}.spbcFullText-right{right:0;border:1px solid #333;border-radius:5px}.spbcFullText a{color:#fff}.spbcFullText a:hover,.star-icon{color:#ddd}ul.pagination{display:inline-block;margin:0}li.pagination{display:inline-block;margin-left:10px}span.current_page{font-size:1.3em;font-weight:600}.spbc_new{color:red;position:relative;font-size:10px;vertical-align:bottom;top:-8px}.spbc_wrapper_settings{margin:10px 0 0}.spbc_tabs_nav_wrapper{display:block;border-bottom:1px solid #ccc}.spbc_tab_nav{display:inline-block;margin:10px 0 0 .5em;padding:5px 10px;height:24px;border:1px solid #ccc;border-bottom:none;font-size:14px;line-height:24px;background:#e5e5e5;color:#555;cursor:pointer}.spbc_tab_nav:hover{background:#fff}.spbc_tab_nav--active{margin-bottom:-1px;border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}.spbc_tab_nav--active:hover{background:#f1f1f1}.spbc_tab{display:none;margin:15px 0}.spbc_tab--active{display:block}.spbc_tab_fields_group{position:relative;min-width:255px;margin:10px auto;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fdfdfd}.spbc_group_header{margin:0 0 10px;padding:10px;border-bottom:1px solid #eee}.spbc_group_header>h3{margin:0}.spbc_group_header>h3>a{color:#1d2327;text-decoration:none}.spbc_wrapper_field{margin:0 15px 15px}.spbc_long_description__show:hover{color:#aaa;cursor:pointer}.spbc_settings_description{font-size:9pt;color:#888}.spbc_settings_description select{display:inline;position:relative;transform:scale(.7);left:-50px}.spbc_tab-settings_general input[type=text]{min-width:255px;width:100%}.spbc_short_text_field input{min-width:70px!important;width:70px!important}.spbc_middle_text_field input{min-width:200px!important;width:200px!important}.spbc_long_text_field input[type=text]{min-width:200px;width:500px}.spbc_wrapper_field label{vertical-align:baseline}.spbc_wrapper_field h4{margin:10px 15px 5px}.spbc_wrapper_footer{margin:15px}#spbc_wrapper_error{margin:0;padding:5px}#spbc_wrapper_error h3,#spbc_wrapper_error h4{margin:5px}#showHideLink{display:inline-block;margin-top:5px;color:#777}.spbc__wrapper--center{margin:10px 0;text-align:center}.spbc__show_more_logs{display:none}.spbc_settings_banner{display:inline-block;margin:1em 0;vertical-align:top;text-align:center}#spbc_translate_plugin{margin-left:10px}.spbc_rate_block{border:1px dashed #666;width:400px;padding:.2em}#spbc_translate_plugin .spbc_button_rate{margin-bottom:10px}.spbc_button_rate{display:inline-block;text-align:center;vertical-align:middle;padding:12px 24px;border:1px solid #216298;border-radius:8px;background:#35a0f7;background:-webkit-gradient(linear,left top,left bottom,from(#35a0f7),to(#216298));background:-moz-linear-gradient(top,#35a0f7,#216298);background:linear-gradient(to bottom,#35a0f7,#216298);text-shadow:#153e5f 1px 1px 1px;font:normal normal bold 16px verdana;color:#fff;text-decoration:none}.spbc_button_rate:focus,.spbc_button_rate:hover{border:1px solid #297bbe;background:#40c0ff;background:-webkit-gradient(linear,left top,left bottom,from(#40c0ff),to(#2876b6));background:-moz-linear-gradient(top,#40c0ff,#2876b6);background:linear-gradient(to bottom,#40c0ff,#2876b6);color:#fff;text-decoration:none}.spbc_button_rate:active{background:#216298;background:-webkit-gradient(linear,left top,left bottom,from(#216298),to(#216298));background:-moz-linear-gradient(top,#216298,#216298);background:linear-gradient(to bottom,#216298,#216298)}#spbc_rate_plugin .spbc_button_rate:before{content:"\0000a0";display:inline-block;height:24px;width:24px;line-height:24px;margin:0 4px -6px -4px;position:relative;top:0;left:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACjElEQVRIie1UTWsTURQ9dzKpofQLobQFlxqENF1JG0GE6sKuRLDtTKaBkJUIRdwpba2g9ge48gMEUUyTbrUutFmk1X6Q7kxDgi1YUSmlpsGYiTXtuy7GCYnaSRu3PczAfe/dd8695z0ecIAKsFVK0DQNLpcL8Xi8KgHZalFRNWe7uyMs2+RtkBQIjQerU/k3uVceHhmdyed/8NbWFg8OXrlXDY+020JdXf2NQMB/yuE4hHw+j5yur1df7h9QvQMXpiKRHSEECyF4cvJlQVG149VwlZ1BX58fsn1H7e29+OhMd7cEAMyM6PTMNAgfFUWrJSIAQgCAYAKIAECABACABGFt7fPPaDRqjItVqyrqG5vGAn7/kMfTBYMIyGQyeD0VMZKYweYGM2ZjpnR+eWVl8V08fnYiNP6t1Jbzc3PzbNryP38stsiKqp0uWuTz+eBqd9/s6uo02vpdPTOXxZuZDB7cfwgQGa0TIEmS7nA4PhhDkgBgdXV1FkTzRYHCtjjS4XZ3mGQmSsdEhKbGRqhqPwRz0ZOlRKImGBy/FA4F31gd8tG2tjaZmf+VUybS2tpaNpfeTMsADu+2xxRw2O12ENFftpTG6XQat26PQZIIzEA2m/1SKBSGGXhhWZmiaifezs7yfhGdnmFF1TqtuM0OksvvlzMnPZ4mq+RkMoVsNlu83ImlxDqATxUFwqHg94aGhsc9PeeuNjc372pRMpnExsZX5HI5xBZjd3aEuBsOBTcs7TGherXaa9eHIqlUioUQltYIIXhkZPT5XnjL7qXi1Wpkm6w5nccGWlpanLJNlkGQyEw1Pui6rs8tLFx+9vTJq30JlKK/3ycRCQkSFZ8Dcwszi4lwUOylgwNUxC8cBKAS7hIWzwAAAABJRU5ErkJggg==) left center no-repeat;background-size:100% 100%}.spbc_auto_link,.spbc_manual_link{height:28px;padding:0 10px 1px;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;display:inline-block;cursor:pointer}.spbc_rate_block_stars{margin:1em 0}.star-icon{font-size:18px;position:relative}.star-icon.full:before{color:#FDE16D;content:'\2605';position:absolute;left:0;text-shadow:0 0 2px rgba(0,0,0,.7)}.spbc_hint{color:#666}.spbc_hint_warning{font-size:17px;font-weight:600;text-align:center;color:#eb8f00}.spbc_hint--link{color:#aaa;text-decoration:underline;cursor:pointer}.spbc_hint--top_right{position:relative;float:right;top:0;right:10px}.spbc_auto_link{border-color:#999;-webkit-box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);color:#000;text-decoration:none;font-size:13px;line-height:26px;margin:0;-webkit-border-radius:2px;border-radius:2px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.spbc_auto_link:hover{color:#fff}.spbc_manual_link{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration:none;font-size:13px;line-height:26px;margin:0;border-radius:3px;-webkit-border-radius:3px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.spbc_manual_link:hover{color:#000}.spbc-btn-as-link{padding:0;margin:0;vertical-align:baseline;color:gray;border:0;border-bottom:1px solid;cursor:pointer}#spbc-account-email[contenteditable=true]{padding:6px;background-color:#fff;border:1px solid #ccc}.spbc_long_desc,.spbc_popup_tip--wrapper{min-height:80px;max-width:500px;padding:10px;z-index:10}.spbc_dismiss{width:20px;height:20px;border-radius:5px}.spbc-links:visited{color:#fff}.spbc_long_desc{position:absolute;background:#5a5a5a;min-width:80px;color:#fff}.spbc_long_desc p{color:#fff!important}i.animate-spin{-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;display:inline-block;font-size:25px;line-height:20px;color:rgba(120,200,230,1);margin:25px}@keyframes spin{to{transform:rotate(359deg)}}.spbc_long_desc__angle,.spbc_long_desc__angle_top_left{width:10px;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);position:absolute;height:10px;background:#5a5a5a}.spbc_long_desc__cancel{position:absolute;top:5px;right:5px;color:rgba(255,255,255,.5)}.spbc_long_desc__cancel:hover{color:#fff}.spbc_long_desc__link,.spbc_long_desc__title{color:rgba(120,200,230,1)}.spbc_long_desc__angle{top:5px;left:-17px;transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_long_desc__angle_top_left{top:-10px;left:-9px;transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_long_desc__title{margin:0}.spbc_long_desc__link:hover{color:rgba(140,220,250,1)}.spbc_long_desc h4{color:#50a0be;margin:10px 0 3px}.spbc_long_desc span{margin:0 0 0 10px;display:inline-block}.spbc_long_desc img{width:300px}.spbc_popup_tip--icon---show:hover{color:#aaa;cursor:pointer}.spbc_popup_tip--wrapper{position:absolute;background:#5a5a5a;min-width:80px;color:#fff}.spbc_popup_tip--icon---cancel{position:absolute;top:0;right:5px;color:rgba(255,255,255,.5)}.spbc_popup_tip--icon---cancel:hover{color:#fff}.spbc_popup_tip--angle{position:absolute;top:5px;left:-17px;width:10px;height:10px;background:#5a5a5a;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.spbc_popup_tip--title{color:rgba(120,200,230,1);margin:0}.spbc_popup_tip--text{color:#fff!important}tr:hover .spbc_hint--wrapper{display:none}.spbc_log-wrapper{padding:5px;border:1px solid #000;width:98%;min-height:300px;height:300px;border-bottom:5px dashed #5a5a5a}.spbc_log-wrapper .panel-body{height:100%;overflow-y:auto}.spbc_log-line{margin:0;padding:0 5px}.spbc_log-line:nth-child(odd){background:#d3d3d3}.spbc_log-block_header{margin:10px 0}.spbc_log-input--checkbox,.spbc_log-label--checkbox{width:auto}button.ct_support_link{border:none;background:0 0;color:#666;text-decoration:underline;cursor:pointer}#spbc-modal-content{text-align:center}#spbc-modal-content>*{display:block;width:100%}.spbc-popup-msg{width:98%;height:15px;text-align:center;padding:4px;border-radius:7px;position:relative;top:0;right:0;bottom:0;left:0;margin:auto}.popup--green{background:#DFD;color:#060;border:1px solid #060}.popup--red{background:#FDD;color:#600;border:1px solid #600}#spbcscan-results-log-module{min-height:300px;height:300px;border-bottom:5px dashed #5a5a5a}#spbcscan-results-log-module .panel-body{height:100%;overflow-y:auto}#spbcscan-scanner-caption h4{margin:10px 0;font-size:14px}#spbcscan-results-log-caption p{font-size:13px;margin:0 0 6px}#spbcscan-scanner-caption{display:flex;flex-wrap:wrap;flex-direction:row-reverse}#spbcscan-scanner-caption .column:first-child{width:75%;flex:0 0 75%}#spbcscan-scanner-caption .column:last-child{width:25%;flex:0 0 25%;padding-right:10px;box-sizing:border-box}.spbc-scan-log-title{color:#1d2327;font-size:1.3em;margin:0 0 15px!important;font-weight:600}.spbc--status{position:relative;padding-left:26px}.spbc--marker-green::before,.spbc--marker-red::before,.spbc--marker-yellow::before{content:'';position:absolute;width:10px;height:10px;border-radius:50%;left:10px;top:4px}.spbc--marker-green::before{background:#1dda23}.spbc--marker-yellow::before{background:#ffb000}.spbc--marker-red::before{background:#d63638}
\ No newline at end of file
diff --git a/css/src/spbc-settings.css b/css/src/spbc-settings.css
index c8ca6f516..4298e6d03 100644
--- a/css/src/spbc-settings.css
+++ b/css/src/spbc-settings.css
@@ -154,6 +154,24 @@ table.spbc_table_general th, table.spbc_table_general td {position: relative; bo
border-radius: 5px;
z-index: 20;
}
+.spbcFullText-right{
+ display: none;
+ position: absolute;
+ top: 0;
+ right: 0;
+ background: rgba(150,150,150,.9);
+ color: white;
+ padding: 7px;
+ border: 1px solid rgb(51, 51, 51);
+ border-radius: 5px;
+ z-index: 20;
+}
+.spbcFullText a {
+ color: white;
+}
+.spbcFullText a:hover {
+ color: #ddd;
+}
/* Pagination */
div.pagination{
@@ -454,6 +472,20 @@ div.pagination{
{
color:black;
}
+.spbc-btn-as-link {
+ padding: 0;
+ margin: 0;
+ vertical-align: baseline;
+ color: gray;
+ border: 0 none;
+ border-bottom: 1px solid;
+ cursor: pointer;
+}
+#spbc-account-email[contenteditable="true"] {
+ padding: 6px;
+ background-color: #fff;
+ border: 1px solid #ccc;
+}
.spbc_dismiss{
width: 20px; height: 20px;
border-radius: 5px;
diff --git a/inc/spbc-admin.php b/inc/spbc-admin.php
index 3d7da390c..5093c083e 100644
--- a/inc/spbc-admin.php
+++ b/inc/spbc-admin.php
@@ -113,6 +113,7 @@ function spbc_admin_init()
add_action('wp_ajax_spbc_settings__check_renew_banner', 'spbc_settings__check_renew_banner');
add_action('wp_ajax_spbc_sync', 'spbc_sync');
add_action('wp_ajax_spbc_get_key_auto', 'spbc_get_key_auto');
+ add_action('wp_ajax_spbc_update_account_email', 'spbc_settings__update_account_email');
// Confirm the email to activate 2FA
add_action('wp_ajax_spbc_generate_confirmation_code', 'spbctGenerateAndSendConfirmationCode');
diff --git a/inc/spbc-scanner.php b/inc/spbc-scanner.php
index 778c3f15d..74436aec5 100644
--- a/inc/spbc-scanner.php
+++ b/inc/spbc-scanner.php
@@ -1045,14 +1045,20 @@ function spbc_get_sql_where_addiction_for_table_of_category($category)
global $spbc;
switch ($category) {
case 'critical':
- $res = ' WHERE severity IN("CRITICAL") AND
- (status <> "QUARANTINED" AND
- status <> "APROVED" AND
- status <> "APPROVED_BY_CT")
- AND
- (last_sent IS NULL OR
- pscan_status = "DANGEROUS" OR
- analysis_status = "DANGEROUS")';
+ $res = ' WHERE status = "DENIED_BY_CLOUD"
+ OR (
+ severity IN("CRITICAL")
+ AND (
+ status <> "QUARANTINED" AND
+ status <> "APROVED" AND
+ status <> "APPROVED_BY_CT"
+ )
+ AND (
+ last_sent IS NULL OR
+ pscan_status = "DANGEROUS" OR
+ analysis_status = "DANGEROUS"
+ )
+ )';
break;
case 'suspicious':
$res = ' WHERE severity <> "CRITICAL" AND
diff --git a/inc/spbc-settings.php b/inc/spbc-settings.php
index 0a4c99ca2..764b164cb 100644
--- a/inc/spbc-settings.php
+++ b/inc/spbc-settings.php
@@ -387,7 +387,7 @@ function spbc_settings__register()
'title_first' => true,
'title' => __('Send the notification with the new login page URL to the admin email address', 'security-malware-firewall'),
'description' => __('The email will be send to', 'security-malware-firewall')
- . ' (' . get_option('admin_email') . ')',
+ . ' (' . spbc_get_admin_email() . ')',
'long_description' => true,
'parent' => 'login_page_rename__enabled',
'disabled' => !current_user_can('activate_plugins')
@@ -1117,7 +1117,10 @@ function spbc_settings__draw_elements($elems_to_draw = null, $direct_call = fals
}
$target = 'spbc_tab-' . $elem_name;
echo ""; // JS after tab
@@ -1309,7 +1312,7 @@ function spbc_settings_page()
if (isset($user->ID) && $user->ID > 0) {
$email = $user->user_email;
} else {
- $email = get_option('admin_email');
+ $email = spbc_get_admin_email();
}
// Outputs errors if exists
@@ -1685,7 +1688,7 @@ function spbc_field_key()
} else {
echo ' ';
echo ' ';
- echo '
+ echo '
';
echo ' ' . __('or', 'security-malware-firewall') . ' ';
@@ -1695,12 +1698,19 @@ function spbc_field_key()
. ' '
. '';
echo ' ';
- echo ''
- . sprintf(
- __('Admin e-mail (%s) will be used for registration', 'security-malware-firewall'),
- get_option('admin_email')
- )
- . '
';
+
+ // admin email
+ printf(
+ __(
+ 'Admin e-mail %s %s will be used for registration.',
+ 'security-malware-firewall'
+ ),
+ ''
+ . spbc_get_admin_email()
+ . ' ',
+ is_main_site() ? spbc_settings__btn_change_account_email_html() : ''
+ );
+
echo '';
echo ' ';
echo '';
@@ -1723,6 +1733,48 @@ function spbc_field_key()
echo '
';
}
+/**
+ * Current site admin e-mail
+ * @return string Admin e-mail
+ */
+function spbc_get_admin_email()
+{
+ global $spbc;
+
+ if ( ! is_multisite() ) {
+ $admin_email = get_option('admin_email');
+ } else {
+ $admin_email = get_blog_option(get_current_blog_id(), 'admin_email');
+ }
+
+ if ( $spbc->data['account_email'] ) {
+ add_filter('spbc_get_api_key_email', function () {
+ global $spbc;
+ return $spbc->data['account_email'];
+ });
+ }
+
+ return $admin_email;
+}
+
+/**
+ * Show button for changed account email
+ */
+function spbc_settings__btn_change_account_email_html()
+{
+ return '('
+ . __('change email', 'security-malware-firewall') .
+ ' )';
+}
+
function spbc_field_service_utilization()
{
global $spbc;
@@ -1759,7 +1811,7 @@ function spbc_settings_2fa_description_callback()
if (isset($user->ID) && $user->ID > 0) {
$email = $user->user_email;
} else {
- $email = get_option('admin_email');
+ $email = spbc_get_admin_email();
}
echo ''
@@ -1852,16 +1904,49 @@ function spbc_field_security_logs__prepare_data(&$table)
$row->user_login
);
- $page = $row->page === null ? '-' : "
" . $row->page . " ";
+ $url = $row->page;
+ if ($url === null) {
+ $page = '-';
+ } elseif (strlen($url) >= 60) {
+ $page = '
'
+ . '
'
+ . '
' . $url . ' '
+ . '
';
+ } else {
+ $page = "
" . $url . " ";
+ }
+
+ $action = '';
+ $is_add_time = true;
+ if (!is_null($url)) {
+ switch ($url) {
+ case '/wp-admin/edit.php':
+ $action = __('Viewing the posts list', 'security-malware-firewall');
+ break;
+ case '/wp-admin/edit.php?post_type=page':
+ $action = __('Viewing the pages list', 'security-malware-firewall');
+ break;
+ case (preg_match('#/wp-admin/post.php\?post=[\d\w]+&action=edit#', $url) ? true : false):
+ $action = __('Editing post', 'security-malware-firewall');
+ break;
+ case (preg_match('#/wp-admin/plugins.php\?action=activate#', $url) ? true : false):
+ $action = __('Activate plugin', 'security-malware-firewall');
+ $is_add_time = false;
+ break;
+ case (preg_match('#/wp-admin/plugins.php\?action=deactivate#', $url) ? true : false):
+ $action = __('Deactivate plugin', 'security-malware-firewall');
+ $is_add_time = false;
+ break;
+ }
+ }
switch ($row->event) {
case 'view':
- $event = sprintf(
- __('Viewing admin page (%s)', 'security-malware-firewall'),
- $row->page_time === null
- ? 'Calculating'
- : strval($row->page_time) . ' seconds'
- );
+ $time = $row->page_time === null ? '(Calculating)' : '(' . strval($row->page_time) . ' seconds)';
+ $event = $action !== '' ? $action . ' ' : __('Viewing admin page ', 'security-malware-firewall');
+ $event .= $is_add_time ? $time : '';
break;
case 'auth_failed':
$event = __('Failed authentication', 'security-malware-firewall');
@@ -2798,6 +2883,24 @@ function spbc_field_scanner__show_accordion($direct_call = false)
'
' .
' ';
+ //critical description
+ $critical_description = __('These files may not contain malicious code but they use very dangerous PHP functions and constructions! PHP developers don\'t recommend to use it and it looks very suspicious.', 'security-malware-firewall');
+ if ($spbc->data['display_scanner_warnings']['analysis'] && !$spbc->data['wl_mode_enabled']) {
+ $critical_description .= spbc__manual_cure_service_suggest_html('critical');
+ }
+
+ //unknown files description
+ $unknown_files_description = __('These files do not include known malware signatures or dangerous code. In same time these files do not belong to the WordPress core or any plugin, theme which are hosted on wordpress.org.', 'security-malware-firewall')
+ . ' '
+ . __('To disable this list deactivate the', 'security-malware-firewall')
+ . ' '
+ . __('List unknown files', 'security-malware-firewall')
+ . ' '
+ . __('option', 'security-malware-firewall')
+ . ' '
+ . '' . __('here', 'security-malware-firewall') . ' .';
+ $unknown_files_description .= $spbc->data['wl_mode_enabled'] ? '' : spbc__manual_cure_service_suggest_html('unknown');
+
//cure log description
$cure_log_description = '' .
__('These files were automatically cured. ', 'security-malware-firewall') .
@@ -2811,7 +2914,7 @@ function spbc_field_scanner__show_accordion($direct_call = false)
//set descritpions
$tables_files = array(
- 'critical' => __('These files may not contain malicious code but they use very dangerous PHP functions and constructions! PHP developers don\'t recommend to use it and it looks very suspicious.', 'security-malware-firewall'),
+ 'critical' => $critical_description,
'suspicious' => __('Found modified executable files', 'security-malware-firewall'),
'approved' => __('Approved files. When an approved file is added to the CleanTalk cloud, it will be removed from this list.', 'security-malware-firewall'),
'quarantined' => __('Punished files.', 'security-malware-firewall'),
@@ -2820,15 +2923,7 @@ function spbc_field_scanner__show_accordion($direct_call = false)
);
if ($spbc->settings['scanner__list_unknown']) {
- $tables_files['unknown'] = __('These files do not include known malware signatures or dangerous code. In same time these files do not belong to the WordPress core or any plugin, theme which are hosted on wordpress.org.', 'security-malware-firewall')
- . '
'
- . __('To disable this list deactivate the', 'security-malware-firewall')
- . '
'
- . __('List unknown files', 'security-malware-firewall')
- . ' '
- . __('option', 'security-malware-firewall')
- . ' '
- . '
' . __('here', 'security-malware-firewall') . ' .';
+ $tables_files['unknown'] = $unknown_files_description;
}
if ($spbc->settings['scanner__outbound_links']) {
@@ -3810,7 +3905,7 @@ function spbc_sanitize_settings($settings)
($settings['login_page_rename__send_email_notification'] && current_user_can('activate_plugins'))
) {
$mail = wp_mail(
- get_option('admin_email'),
+ spbc_get_admin_email(),
$spbc->data["wl_brandname"] . esc_html__(': New login URL', 'security-malware-firewall'),
sprintf(
esc_html__('New login URL is: %s', 'security-malware-firewall'),
@@ -3963,7 +4058,7 @@ function spbc_get_key_auto($direct_call = false)
$wpms = SPBC_WPMS && defined('SUBDOMAIN_INSTALL') && ! SUBDOMAIN_INSTALL;
$white_label = false;
$hoster_api_key = $spbc->ms__hoster_api_key;
- $admin_email = get_option('admin_email');
+ $admin_email = spbc_get_admin_email();
/**
* Filters the email to get API key
@@ -4029,6 +4124,58 @@ function spbc_get_key_auto($direct_call = false)
die(json_encode($out));
}
+function spbc_settings__update_account_email($direct_call = false)
+{
+ if ( ! $direct_call) {
+ spbc_check_ajax_referer('spbc_secret_nonce', 'security');
+ }
+
+ global $spbc;
+
+ $account_email = Post::get('accountEmail');
+
+ // not valid email
+ if (!$account_email || !filter_var(Post::get('accountEmail'), FILTER_VALIDATE_EMAIL)) {
+ die(
+ json_encode(
+ array(
+ 'error' => 'Please, enter valid email.'
+ )
+ )
+ );
+ }
+
+ // email not changed
+ if (isset($spbc->data['account_email']) && $account_email === $spbc->data['account_email']) {
+ die(
+ json_encode(
+ array(
+ 'success' => 'ok'
+ )
+ )
+ );
+ }
+
+ $spbc->data['account_email'] = $account_email;
+ $spbc->save('data');
+
+ // Link GET ACCESS KEY MANUALLY
+ $manually_link = sprintf(
+ 'https://cleantalk.org/register?platform=wordpress&email=%s&website=%s',
+ urlencode(spbc_get_admin_email()),
+ urlencode(get_bloginfo('url'))
+ );
+
+ die(
+ json_encode(
+ array(
+ 'success' => 'ok',
+ 'manuallyLink' => $manually_link
+ )
+ )
+ );
+}
+
function spbc_show_more_security_logs_callback()
{
spbc_check_ajax_referer('spbc_secret_nonce', 'security');
@@ -4283,6 +4430,10 @@ function spbc_settings__get_description()
'title' => 'Suspicious',
'desc' => __('The code looks suspicious. Make sure it is safe.', 'security-malware-firewall')
),
+ 'signatures_MALWARE' => array(
+ 'title' => 'Malware',
+ 'desc' => __('Malware has been found during the signature analysis.', 'security-malware-firewall')
+ ),
'heuristic_assert' => array(
'title' => 'assert()',
'desc' => __('Using the function in production is not recommended', 'security-malware-firewall')
@@ -4331,6 +4482,14 @@ function spbc_settings__get_description()
'title' => 'syslog()',
'desc' => __('Generate a system log message', 'security-malware-firewall')
),
+ 'heuristic_global_variables_in_a_sys_command' => array(
+ 'title' => 'Super global in system command',
+ 'desc' => __('Found direct request to super global variables in the system commands functions.', 'security-malware-firewall')
+ ),
+ 'heuristic_base64_decode' => array(
+ 'title' => 'base64_decode()',
+ 'desc' => __('Suspicious base64_decode usage.', 'security-malware-firewall')
+ ),
'heuristic_the_function_contains_suspicious_arguments' => array(
'title' => '',
'desc' => __('The function contains suspicious arguments', 'security-malware-firewall')
@@ -4346,13 +4505,15 @@ function spbc_settings__get_description()
Disable this option if you have mail connection issues or SMTP service is not configured on this WordPress instance.
Please note that only user that has permissions to activate plugins can disable this option.', 'security-malware-firewall'),
),
+ 'no_description' => array(
+ 'title' => esc_html($setting_id),
+ 'desc' => __('No description provided yet for this item. We are sorry about this. Please, contact support@cleantalk.org for further help.', 'security-malware-firewall'),
+ ),
);
- if (!isset($descriptions[ $setting_id ])) {
- return;
- }
+ $out = isset($descriptions[ $setting_id ]) ? $descriptions[ $setting_id ] : $descriptions['no_description'];
- wp_send_json($descriptions[ $setting_id ]);
+ wp_send_json($out);
}
/**
@@ -4428,7 +4589,7 @@ function spbctGenerateAndSendConfirmationCode()
if (isset($user->ID) && $user->ID > 0) {
$email = $user->user_email;
} else {
- $email = get_option('admin_email');
+ $email = spbc_get_admin_email();
}
spbc_check_ajax_referer('spbc_secret_nonce', 'security');
@@ -4827,6 +4988,59 @@ function spbc__key_not_valid_tab_html()
. '.
';
}
+/**
+ * Generate HTML code for accordions to suggest user manual audit services.
+ * @param $for string destination accordion name
+ * @return string html
+ */
+function spbc__manual_cure_service_suggest_html($for)
+{
+ if ($for === 'critical') {
+ $text = __('With a high degree of probability, your site has been infected. If you need professional help
+ from security specialists, feel free to order', 'security-malware-firewall');
+ $button_id = 'spbct_request_cure';
+ $classes = 'notice notice-warning';
+ $show_exclaim_triangle = true;
+ } elseif ($for === 'unknown') {
+ $text = __('If you are not sure about the results or looking for professional help from security specialists,
+ feel free to order', 'security-malware-firewall');
+ $button_id = 'spbct_request_audit';
+ $classes = 'notice notice-info';
+ $show_exclaim_triangle = false;
+ } else {
+ return '';
+ }
+
+ $cure_request_url = 'https://cleantalk.org/my/support/open';
+ $help_href_text = __('the Professional Security Audit service', 'security-malware-firewall');
+ $button_text = __('Request Professional Security Audit', 'security-malware-firewall');
+ $href = '' . $help_href_text . ' ';
+
+ $out = '';
+ $out .= '
';
+ // show triangle
+ $out .= $show_exclaim_triangle
+ ? '  '
+ : '';
+ // complete the suggestion text
+ $out .= $text . ' ' . $href . '.';
+ $out .= '
';
+ // generate button
+ $out .= '
';
+ $out .= '
+
+ '
+ . $button_text
+ . ' ';
+ $out .= '
';
+ $out .= '
';
+
+ return $out;
+}
+
/**
* @return int|void
*/
diff --git a/js/spbc-settings.min.js b/js/spbc-settings.min.js
index 3912541c8..00b3c637b 100644
--- a/js/spbc-settings.min.js
+++ b/js/spbc-settings.min.js
@@ -1,2 +1,2 @@
-function spbc_switchTab(e,t){var s=e.classList[1].replace("spbc_tab_nav-",""),c=new URLSearchParams(window.location.search),n=(c.set("spbc_tab",s),window.location.hash),n=window.location.pathname+"?"+c.toString()+n;if(history.replaceState(null,"",n),"backups"!==c.get("spbc_tab")&&jQuery(".spbc_tab_nav-backups").hide(),jQuery(".spbc_tab_nav").removeClass("spbc_tab_nav--active"),jQuery(".spbc_tab").removeClass("spbc_tab--active"),jQuery(e).addClass("spbc_tab_nav--active"),jQuery(".spbc_tab-"+s).addClass("spbc_tab--active"),jQuery(e).data("loaded")){if(t&&t.action)switch(t.action){case"highlight":spbcHighlightElement(t.target,t.times);break;case"click":setTimeout(function(){jQuery("#"+t.additional.target).click()},500)}}else{n={action:"spbc_settings__draw_elements",tab_name:s,security:spbcSettings.ajax_nonce},t={callback:spbc_draw_settings_callback,notJson:!0,additional:t||null};spbc_sendAJAXRequest(n,t,e)}}function spbc_draw_settings_callback(e,t,s,c){jQuery(c).data("loaded",!0),jQuery(".spbc_tab-"+t.tab_name).replaceWith(e);c=jQuery(".spbc_tab-"+t.tab_name);if(c.addClass("spbc_tab--active"),jQuery(document).off("click",".spbc_long_description__show"),jQuery(document).on("click",".spbc_long_description__show",function(){spbc_settings__show_description(self=jQuery(this),self.attr("setting"))}),jQuery(document).off("click",".spbc_long_recommendation__show"),jQuery(document).on("click",".spbc_long_recommendation__show",function(){spbc_settings__show_recommendation(self=jQuery(this),self.attr("setting"))}),s.additional)switch(s.additional.action){case"highlight":spbcHighlightElement(s.additional.target,s.additional.times);break;case"click":setTimeout(function(){jQuery("#"+s.additional.target).click()},500)}jQuery(c).on("click",".spbc_hint-send_"+t.tab_name,function(){jQuery(".spbc_hint-send_"+t.tab_name).hide(),spbc_sendAJAXRequest({action:"spbc_send_"+t.tab_name,tab_name:t.tab_name},{callback:spbc_send_logs_callback})}),window.location.hash&&document.getElementById(window.location.hash.substring(1)).scrollIntoView()}function spbc_send_logs_callback(e,t,s,c){jQuery(".spbc_tab_nav-"+t.tab_name).data("loaded",!1),spbc_switchTab(document.getElementsByClassName("spbc_tab_nav-"+t.tab_name)[0])}function spbcSettingsDependenciesbyId(e,o){"string"==typeof e&&((tmp=[]).push(e),e=tmp),o=void 0===o?null:+o,e.forEach(function(e,t,s){function c(){a.setAttribute("disabled","disabled")}function n(){a.removeAttribute("disabled")}var a=document.getElementById("spbc_setting_"+e);(null!==o?1===o?n:c:null===a.getAttribute("disabled")?c:n)()})}function spbcSettingsDependencies(e,o){e="string"==typeof e?e.split(","):e,o=void 0===o?+event.target.checked:+o,e.forEach(function(e,t,s){document.getElementsByName("spbc_settings["+e+"]").forEach(function(e,t,s){function c(){e.setAttribute("disabled","disabled")}function n(){e.removeAttribute("disabled")}(null!==o?1===o?n:c:null===e.getAttribute("disabled")?c:n)();var a=e.getAttribute("children");null!==a&&spbcSettingsDependencies(a,o&&e.checked)})})}function spbc_settings__show_description(e,t){function n(e){void 0!==e&&(0!=jQuery(e.target).parent(".spbc_long_desc").length&&!jQuery(e.target).hasClass("spbc_long_desc__cancel")||jQuery(e.target).hasClass("spbc_long_description__show"))||(jQuery(".spbc_long_desc").remove(),jQuery(document).off("click",n))}n(),e.after("
");var s=jQuery("#spbc_long_desc__"+t);s.append(" ").append("
").css({top:e.position().top+25,left:e.position().left+5}),spbc_sendAJAXRequest({action:"spbc_settings__get_description",setting_id:t},{spinner:s.children("img"),callback:function(e,t,s,c){c.empty().append("
").append(" ").append(""+e.title+" ").append(""+e.desc+"
"),jQuery(document).on("click",n)}},s)}function spbc_settings__show_recommendation(e,t){function n(e){void 0!==e&&(0!=jQuery(e.target).parent(".spbc_long_desc").length&&!jQuery(e.target).hasClass("spbc_long_desc__cancel")||jQuery(e.target).hasClass("spbc_long_recommendation__show"))||(jQuery(".spbc_long_desc").remove(),jQuery(document).off("click",n))}n(),e.after("
");var s=jQuery("#spbc_long_desc__"+t);s.append(" ").append("
").css({top:e.position().top+25,left:e.position().left+5}),spbc_sendAJAXRequest({action:"spbc_settings__get_recommendation",setting_id:t},{spinner:s.children("img"),callback:function(e,t,s,c){c.empty().append("
").append(" ").append(""+e.title+" ").append(""+e.desc+"
"),jQuery(document).on("click",n)}},s)}function spbcStartShowHide(){jQuery(".spbcShortText").off("mouseover").on("mouseover",function(){jQuery(this).next().show()}).off("mouseout").on("mouseout",function(){jQuery(this).next().hide()}),jQuery(".spbcFullText").off("mouseout").on("mouseout",function(){jQuery(this).hide()}).off("mouseover").on("mouseover",function(){jQuery(this).show()})}function spbctGenerateConfirmationCode(){var e={},t={success:!1};return e.security=spbcSettings.ajax_nonce,e.action="spbc_generate_confirmation_code",jQuery.ajax({type:"POST",async:!1,url:spbcSettings.ajaxurl,data:e,success:function(e){e.success?t.success=!0:t.text=e.data}}),t}function spbctCheckConfirmationCode(e,t,s){var c=e,e={};e.security=spbcSettings.ajax_nonce,e.action="spbc_check_confirmation_code",e.code=jQuery("#confirmation-code input").val(),jQuery.ajax({type:"POST",async:!1,url:spbcSettings.ajaxurl,data:e,success:function(e){e.success?(jQuery("[name *= 2fa__enable]").attr("checked",""),c.checked=!0,jQuery("#spbc_setting_2fa__roles").removeAttr("disabled"),jQuery("#spbc_setting_2fa__roles > option:first").attr("selected","selected"),clearTimeout(t),s.remove(),jQuery("#confirmation-code").dialog("close")):alert("Code verification failed!")}})}function spbc_banner_check(){var n=setInterval(function(){spbc_sendAJAXRequest({action:"spbc_settings__check_renew_banner"},{callback:function(e,t,s,c){e.close_renew_banner&&(jQuery("#spbc_renew_notice").length&&jQuery("#spbc_renew_notice").hide("slow"),jQuery("#spbc_trial_notice").length&&jQuery("#spbc_trial_notice").hide("slow"),clearInterval(n))}})},6e4)}String.prototype.printf=function(){var e,t=this;for(e in arguments)var s=t.substring(0,t.indexOf("%s",0)),c=t.substring(t.indexOf("%s",0)+2,t.length),t=s+arguments[e]+c;return t},jQuery(document).ready(function(){jQuery("#spbc_gdpr_open_modal").on("click",function(){jQuery("#gdpr_dialog").dialog({modal:!0,show:!0,position:{my:"center",at:"center",of:window},width:jQuery("#wpbody").width()/100*70,height:"auto",title:"GDPR compliance",draggable:!1,resizable:!1,closeText:"Close"})}),jQuery(document).on("click","[name*=fa__enable]:not([value=0]),#confirmation-code--resend",function(e){e.preventDefault(),jQuery("#confirmation-code--resend").attr("disabled","disabled").append('');var t=setTimeout(function(){jQuery("#confirmation-code--resend").removeAttr("disabled"),jQuery("#confirmation-code--resend>.circle").remove()},3e4),s=spbctGenerateConfirmationCode();s.success?(jQuery("#confirmation-code input").val(""),jQuery("#confirmation-code").dialog({modal:!0,title:"Confirmation code",width:310,buttons:{Cancel:function(){jQuery(this).dialog("close"),clearTimeout(t),jQuery("#confirmation-code--resend>.circle").remove()},Ok:function(){spbctCheckConfirmationCode(e.target,t,jQuery("#confirmation-code--resend>.circle"))}},draggable:!1,resizable:!1})):alert(s.text)}),(jQuery("#spbc_renew_notice").length||jQuery("#spbc_trial_notice").length)&&spbc_banner_check(),jQuery("#spbc_button__sync").on("click",function(){spbc_sendAJAXRequest({action:"spbc_sync"},{timeout:25e3,button:document.getElementById("spbc_button__sync"),spinner:jQuery("#spbc_button__sync .spbc_preloader_button"),callback:function(e,t,s,c){jQuery("#spbc_button__sync .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_button__sync .spbc_success").hide(300)},2e3),e.reload&&document.location.reload()}})}),spbcSettings.key_changed&&jQuery("#spbc_button__sync").click(),jQuery(document).on("click","#spbc_setting_get_key_auto",function(){spbc_sendAJAXRequest({action:"spbc_get_key_auto"},{timeout:25e3,button:document.getElementById("spbc_setting_get_key_auto"),spinner:jQuery("#spbc_setting_get_key_auto .spbc_preloader_button"),callback:function(e,t,s,c){jQuery("#spbc_setting_get_key_auto .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_setting_get_key_auto .spbc_success").hide(300)},2e3),e.reload&&document.location.reload(),e.getTemplates&&(spbcModal.loaded=e.getTemplates,spbcModal.open(),document.addEventListener("spbcModalClosed",function(e){document.location.reload()}))}})}),jQuery(document).on("click","#spbc_settings_templates_import_button",function(){jQuery("#spbc-ajax-result").remove();var n,e=jQuery("option:selected",jQuery("#spbc_settings_templates_import"));jQuery("#spbc_settings_templates_import_name").css("border-color","inherit"),void 0===e.data("id")?console.log('Attribute "data-id" not set for the option.'):(e={template_id:e.data("id"),template_name:e.data("name"),settings:e.data("settings")},n=this,spbc_sendAJAXRequest({action:"spbc_settings_templates_import",data:e},{timeout:25e3,button:n,spinner:jQuery("#spbc_settings_templates_import_button .spbc_preloader_button"),callback:function(e,t,s,c){e.success?(jQuery(""+e.data+"
").insertAfter(jQuery(n)),jQuery("#spbc_settings_templates_import_button .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_settings_templates_import_button .spbc_success").hide(300)},2e3),document.addEventListener("spbcModalClosed",function(e){document.location.reload()}),setTimeout(function(){spbcModal.close()},2e3)):jQuery(""+e.data+"
").insertAfter(jQuery(n))}}))}),jQuery(document).on("click","#spbc_settings_templates_export_button",function(){jQuery("#spbc-ajax-result").remove();var e=jQuery("option:selected",jQuery("#spbc_settings_templates_export")),t=jQuery("#spbc_settings_templates_export_name");if(t.css("border-color","inherit"),void 0===e.data("id"))console.log('Attribute "data-id" not set for the option.');else{if("new_template"===e.data("id")){var s=t.val();if(""===s)return void t.css("border-color","red");s={template_name:s}}else s={template_id:e.data("id")};var n=this;spbc_sendAJAXRequest({action:"spbc_settings_templates_export",data:s},{timeout:25e3,button:n,spinner:jQuery("#spbc_settings_templates_export_button .spbc_preloader_button"),callback:function(e,t,s,c){e.success?(jQuery(""+e.data+"
").insertAfter(jQuery(n)),jQuery("#spbc_settings_templates_export_button .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_settings_templates_export_button .spbc_success").hide(300)},2e3),document.addEventListener("spbcModalClosed",function(e){document.location.reload()}),setTimeout(function(){spbcModal.close()},2e3)):jQuery(""+e.data+"
").insertAfter(jQuery(n))}})}}),jQuery(document).on("click","#spbc_settings_templates_reset_button",function(){var n=this;spbc_sendAJAXRequest({action:"spbc_settings_templates_reset"},{timeout:25e3,button:n,spinner:jQuery("#spbc_settings_templates_reset_button .spbc_preloader_button"),callback:function(e,t,s,c){e.success?(jQuery(""+e.data+"
").insertAfter(jQuery(n)),jQuery("#spbc_settings_templates_reset_button .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_settings_templates_reset_button .spbc_success").hide(300)},2e3),document.addEventListener("spbcModalClosed",function(e){document.location.reload()}),setTimeout(function(){spbcModal.close()},2e3)):jQuery(""+e.data+"
").insertAfter(jQuery(n))}})}),jQuery(document).on("change","#spbc_settings_templates_export",function(){"new_template"===jQuery("option:selected",this).data("id")?jQuery(this).parent().parent().find("#spbc_settings_templates_export_name").show():jQuery(this).parent().parent().find("#spbc_settings_templates_export_name").hide()}),jQuery(".spbc_tab_nav-summary").data("loaded",!0),jQuery(".spbc_tabs_nav_wrapper").on("click",".spbc_tab_nav",function(e){spbc_switchTab(e.currentTarget)});var e={target:location.search.match(/spbc_target=(\S*?)(&|$)/)?location.search.match(/spbc_target=(\S*?)(&|$)/)[1]:null,action:location.search.match(/spbc_action=(\S*?)(&|$)/)?location.search.match(/spbc_action=(\S*?)(&|$)/)[1]:null,times:location.search.match(/spbc_times=(\S*?)(&|$)/)?location.search.match(/spbc_times=(\S*?)(&|$)/)[1]:3},t=(e.target=location.search.match(/spbc_highlight=(\S*?)(&|$)/)?location.search.match(/spbc_highlight=(\S*?)(&|$)/)[1]:e.target,e.action=-1!=location.search.search(/spbc_highlight=(\S*?)(&|$)/)?"highlight":e.action,document.getElementsByClassName("spbc_tab_nav-"+(location.search.match(/spbc_tab=(\S*?)(&|$)/)?location.search.match(/spbc_tab=(\S*?)(&|$)/)[1]:""))[0]||null),s=(t||(+spbcSettings.debug?t=document.getElementsByClassName("spbc_tab_nav-debug")[0]:+spbcSettings.wpms&&!+spbcSettings.is_main_site?t=document.getElementsByClassName("spbc_tab_nav-security_log")[0]:+spbcSettings.key_is_ok&&+spbcSettings.secfw_enabled?t=document.getElementsByClassName("spbc_tab_nav-traffic_control")[0]:+spbcSettings.key_is_ok?t=document.getElementsByClassName("spbc_tab_nav-scanner")[0]:(t=document.getElementsByClassName("spbc_tab_nav-settings_general")[0],e={target:"spbc_key",action:"highlight",times:3})),t&&spbc_switchTab(t,e),!1);jQuery(document).on("keyup",function(e){17==(e.which||e.keyCode)&&(s=!1)}),jQuery(document).on("keydown",function(e){var t;116==(e.which||e.keyCode)&&s?(e.preventDefault(),"scanner"!==(t=jQuery(".spbc_tab_nav--active")[0]).classList[1].replace("spbc_tab_nav-","")&&(jQuery(t).data("loaded",!1),spbc_switchTab(t))):17==(e.which||e.keyCode)&&(s=!0)})});
+function spbc_switchTab(e,t){var s=e.classList[1].replace("spbc_tab_nav-",""),c=new URLSearchParams(window.location.search),n=(c.set("spbc_tab",s),window.location.hash),n=window.location.pathname+"?"+c.toString()+n;if(history.replaceState(null,"",n),"backups"!==c.get("spbc_tab")&&jQuery(".spbc_tab_nav-backups").hide(),jQuery(".spbc_tab_nav").removeClass("spbc_tab_nav--active"),jQuery(".spbc_tab").removeClass("spbc_tab--active"),jQuery(e).addClass("spbc_tab_nav--active"),jQuery(".spbc_tab-"+s).addClass("spbc_tab--active"),jQuery(e).data("loaded")){if(t&&t.action)switch(t.action){case"highlight":spbcHighlightElement(t.target,t.times);break;case"click":setTimeout(function(){jQuery("#"+t.additional.target).click()},500)}}else{n={action:"spbc_settings__draw_elements",tab_name:s,security:spbcSettings.ajax_nonce},t={callback:spbc_draw_settings_callback,notJson:!0,additional:t||null};spbc_sendAJAXRequest(n,t,e)}}function spbc_draw_settings_callback(e,t,s,c){jQuery(c).data("loaded",!0),jQuery(".spbc_tab-"+t.tab_name).replaceWith(e);c=jQuery(".spbc_tab-"+t.tab_name);if(c.addClass("spbc_tab--active"),jQuery(document).off("click",".spbc_long_description__show"),jQuery(document).on("click",".spbc_long_description__show",function(){spbc_settings__show_description(self=jQuery(this),self.attr("setting"))}),jQuery(document).off("click",".spbc_long_recommendation__show"),jQuery(document).on("click",".spbc_long_recommendation__show",function(){spbc_settings__show_recommendation(self=jQuery(this),self.attr("setting"))}),s.additional)switch(s.additional.action){case"highlight":spbcHighlightElement(s.additional.target,s.additional.times);break;case"click":setTimeout(function(){jQuery("#"+s.additional.target).click()},500)}jQuery(c).on("click",".spbc_hint-send_"+t.tab_name,function(){jQuery(".spbc_hint-send_"+t.tab_name).hide(),spbc_sendAJAXRequest({action:"spbc_send_"+t.tab_name,tab_name:t.tab_name},{callback:spbc_send_logs_callback})}),window.location.hash&&document.getElementById(window.location.hash.substring(1)).scrollIntoView()}function spbc_send_logs_callback(e,t,s,c){jQuery(".spbc_tab_nav-"+t.tab_name).data("loaded",!1),spbc_switchTab(document.getElementsByClassName("spbc_tab_nav-"+t.tab_name)[0])}function spbcSettingsDependenciesbyId(e,o){"string"==typeof e&&((tmp=[]).push(e),e=tmp),o=void 0===o?null:+o,e.forEach(function(e,t,s){function c(){a.setAttribute("disabled","disabled")}function n(){a.removeAttribute("disabled")}var a=document.getElementById("spbc_setting_"+e);(null!==o?1===o?n:c:null===a.getAttribute("disabled")?c:n)()})}function spbcSettingsDependencies(e,o){e="string"==typeof e?e.split(","):e,o=void 0===o?+event.target.checked:+o,e.forEach(function(e,t,s){document.getElementsByName("spbc_settings["+e+"]").forEach(function(e,t,s){function c(){e.setAttribute("disabled","disabled")}function n(){e.removeAttribute("disabled")}(null!==o?1===o?n:c:null===e.getAttribute("disabled")?c:n)();var a=e.getAttribute("children");null!==a&&spbcSettingsDependencies(a,o&&e.checked)})})}function spbc_settings__show_description(e,t){function n(e){void 0!==e&&(0!=jQuery(e.target).parent(".spbc_long_desc").length&&!jQuery(e.target).hasClass("spbc_long_desc__cancel")||jQuery(e.target).hasClass("spbc_long_description__show"))||(jQuery(".spbc_long_desc").remove(),jQuery(document).off("click",n))}n(),e.after("
");var s=jQuery("#spbc_long_desc__"+t);s.append(" ").append("
").css({top:e.position().top+25,left:e.position().left+5}),spbc_sendAJAXRequest({action:"spbc_settings__get_description",setting_id:t},{spinner:s.children("img"),callback:function(e,t,s,c){c.empty().append("
").append(" ").append(""+e.title+" ").append(""+e.desc+"
"),jQuery(document).on("click",n)}},s)}function spbc_settings__show_recommendation(e,t){function n(e){void 0!==e&&(0!=jQuery(e.target).parent(".spbc_long_desc").length&&!jQuery(e.target).hasClass("spbc_long_desc__cancel")||jQuery(e.target).hasClass("spbc_long_recommendation__show"))||(jQuery(".spbc_long_desc").remove(),jQuery(document).off("click",n))}n(),e.after("
");var s=jQuery("#spbc_long_desc__"+t);s.append(" ").append("
").css({top:e.position().top+25,left:e.position().left+5}),spbc_sendAJAXRequest({action:"spbc_settings__get_recommendation",setting_id:t},{spinner:s.children("img"),callback:function(e,t,s,c){c.empty().append("
").append(" ").append(""+e.title+" ").append(""+e.desc+"
"),jQuery(document).on("click",n)}},s)}function spbcStartShowHide(){jQuery(".spbcShortText").off("mouseover").on("mouseover",function(){jQuery(this).next().show()}).off("mouseout").on("mouseout",function(){jQuery(this).next().hide()}),jQuery(".spbcFullText").off("mouseout").on("mouseout",function(){jQuery(this).hide()}).off("mouseover").on("mouseover",function(){jQuery(this).show()})}function spbctGenerateConfirmationCode(){var e={},t={success:!1};return e.security=spbcSettings.ajax_nonce,e.action="spbc_generate_confirmation_code",jQuery.ajax({type:"POST",async:!1,url:spbcSettings.ajaxurl,data:e,success:function(e){e.success?t.success=!0:t.text=e.data}}),t}function spbctCheckConfirmationCode(e,t,s){var c=e,e={};e.security=spbcSettings.ajax_nonce,e.action="spbc_check_confirmation_code",e.code=jQuery("#confirmation-code input").val(),jQuery.ajax({type:"POST",async:!1,url:spbcSettings.ajaxurl,data:e,success:function(e){e.success?(jQuery("[name *= 2fa__enable]").attr("checked",""),c.checked=!0,jQuery("#spbc_setting_2fa__roles").removeAttr("disabled"),jQuery("#spbc_setting_2fa__roles > option:first").attr("selected","selected"),clearTimeout(t),s.remove(),jQuery("#confirmation-code").dialog("close")):alert("Code verification failed!")}})}function spbc_banner_check(){var n=setInterval(function(){spbc_sendAJAXRequest({action:"spbc_settings__check_renew_banner"},{callback:function(e,t,s,c){e.close_renew_banner&&(jQuery("#spbc_renew_notice").length&&jQuery("#spbc_renew_notice").hide("slow"),jQuery("#spbc_trial_notice").length&&jQuery("#spbc_trial_notice").hide("slow"),clearInterval(n))}})},6e4)}function spbcToggleClass(t,s){for(let e=0;e
');var t=setTimeout(function(){jQuery("#confirmation-code--resend").removeAttr("disabled"),jQuery("#confirmation-code--resend>.circle").remove()},3e4),s=spbctGenerateConfirmationCode();s.success?(jQuery("#confirmation-code input").val(""),jQuery("#confirmation-code").dialog({modal:!0,title:"Confirmation code",width:310,buttons:{Cancel:function(){jQuery(this).dialog("close"),clearTimeout(t),jQuery("#confirmation-code--resend>.circle").remove()},Ok:function(){spbctCheckConfirmationCode(e.target,t,jQuery("#confirmation-code--resend>.circle"))}},draggable:!1,resizable:!1})):alert(s.text)}),(jQuery("#spbc_renew_notice").length||jQuery("#spbc_trial_notice").length)&&spbc_banner_check(),jQuery("#spbc_button__sync").on("click",function(){spbc_sendAJAXRequest({action:"spbc_sync"},{timeout:25e3,button:document.getElementById("spbc_button__sync"),spinner:jQuery("#spbc_button__sync .spbc_preloader_button"),callback:function(e,t,s,c){jQuery("#spbc_button__sync .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_button__sync .spbc_success").hide(300)},2e3),e.reload&&document.location.reload()}})}),spbcSettings.key_changed&&jQuery("#spbc_button__sync").click(),jQuery(document).on("click","#spbc_setting_get_key_auto",function(){spbc_sendAJAXRequest({action:"spbc_get_key_auto"},{timeout:25e3,button:document.getElementById("spbc_setting_get_key_auto"),spinner:jQuery("#spbc_setting_get_key_auto .spbc_preloader_button"),callback:function(e,t,s,c){jQuery("#spbc_setting_get_key_auto .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_setting_get_key_auto .spbc_success").hide(300)},2e3),e.reload&&document.location.reload(),e.getTemplates&&(spbcModal.loaded=e.getTemplates,spbcModal.open(),document.addEventListener("spbcModalClosed",function(e){document.location.reload()}))}})}),jQuery(document).on("click","#spbc_settings_templates_import_button",function(){jQuery("#spbc-ajax-result").remove();var n,e=jQuery("option:selected",jQuery("#spbc_settings_templates_import"));jQuery("#spbc_settings_templates_import_name").css("border-color","inherit"),void 0===e.data("id")?console.log('Attribute "data-id" not set for the option.'):(e={template_id:e.data("id"),template_name:e.data("name"),settings:e.data("settings")},n=this,spbc_sendAJAXRequest({action:"spbc_settings_templates_import",data:e},{timeout:25e3,button:n,spinner:jQuery("#spbc_settings_templates_import_button .spbc_preloader_button"),callback:function(e,t,s,c){e.success?(jQuery(""+e.data+"
").insertAfter(jQuery(n)),jQuery("#spbc_settings_templates_import_button .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_settings_templates_import_button .spbc_success").hide(300)},2e3),document.addEventListener("spbcModalClosed",function(e){document.location.reload()}),setTimeout(function(){spbcModal.close()},2e3)):jQuery(""+e.data+"
").insertAfter(jQuery(n))}}))}),jQuery(document).on("click","#spbc_settings_templates_export_button",function(){jQuery("#spbc-ajax-result").remove();var e=jQuery("option:selected",jQuery("#spbc_settings_templates_export")),t=jQuery("#spbc_settings_templates_export_name");if(t.css("border-color","inherit"),void 0===e.data("id"))console.log('Attribute "data-id" not set for the option.');else{if("new_template"===e.data("id")){var s=t.val();if(""===s)return void t.css("border-color","red");s={template_name:s}}else s={template_id:e.data("id")};var n=this;spbc_sendAJAXRequest({action:"spbc_settings_templates_export",data:s},{timeout:25e3,button:n,spinner:jQuery("#spbc_settings_templates_export_button .spbc_preloader_button"),callback:function(e,t,s,c){e.success?(jQuery(""+e.data+"
").insertAfter(jQuery(n)),jQuery("#spbc_settings_templates_export_button .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_settings_templates_export_button .spbc_success").hide(300)},2e3),document.addEventListener("spbcModalClosed",function(e){document.location.reload()}),setTimeout(function(){spbcModal.close()},2e3)):jQuery(""+e.data+"
").insertAfter(jQuery(n))}})}}),jQuery(document).on("click","#spbc_settings_templates_reset_button",function(){var n=this;spbc_sendAJAXRequest({action:"spbc_settings_templates_reset"},{timeout:25e3,button:n,spinner:jQuery("#spbc_settings_templates_reset_button .spbc_preloader_button"),callback:function(e,t,s,c){e.success?(jQuery(""+e.data+"
").insertAfter(jQuery(n)),jQuery("#spbc_settings_templates_reset_button .spbc_success").show(300),setTimeout(function(){jQuery("#spbc_settings_templates_reset_button .spbc_success").hide(300)},2e3),document.addEventListener("spbcModalClosed",function(e){document.location.reload()}),setTimeout(function(){spbcModal.close()},2e3)):jQuery(""+e.data+"
").insertAfter(jQuery(n))}})}),jQuery(document).on("change","#spbc_settings_templates_export",function(){"new_template"===jQuery("option:selected",this).data("id")?jQuery(this).parent().parent().find("#spbc_settings_templates_export_name").show():jQuery(this).parent().parent().find("#spbc_settings_templates_export_name").hide()}),jQuery(".spbc_tab_nav-summary").data("loaded",!0),jQuery(".spbc_tabs_nav_wrapper").on("click",".spbc_tab_nav",function(e){spbc_switchTab(e.currentTarget)});var e={target:location.search.match(/spbc_target=(\S*?)(&|$)/)?location.search.match(/spbc_target=(\S*?)(&|$)/)[1]:null,action:location.search.match(/spbc_action=(\S*?)(&|$)/)?location.search.match(/spbc_action=(\S*?)(&|$)/)[1]:null,times:location.search.match(/spbc_times=(\S*?)(&|$)/)?location.search.match(/spbc_times=(\S*?)(&|$)/)[1]:3},t=(e.target=location.search.match(/spbc_highlight=(\S*?)(&|$)/)?location.search.match(/spbc_highlight=(\S*?)(&|$)/)[1]:e.target,e.action=-1!=location.search.search(/spbc_highlight=(\S*?)(&|$)/)?"highlight":e.action,document.getElementsByClassName("spbc_tab_nav-"+(location.search.match(/spbc_tab=(\S*?)(&|$)/)?location.search.match(/spbc_tab=(\S*?)(&|$)/)[1]:""))[0]||null),s=(t||(+spbcSettings.debug?t=document.getElementsByClassName("spbc_tab_nav-debug")[0]:+spbcSettings.wpms&&!+spbcSettings.is_main_site?t=document.getElementsByClassName("spbc_tab_nav-security_log")[0]:+spbcSettings.key_is_ok&&+spbcSettings.secfw_enabled?t=document.getElementsByClassName("spbc_tab_nav-traffic_control")[0]:+spbcSettings.key_is_ok?t=document.getElementsByClassName("spbc_tab_nav-scanner")[0]:(t=document.getElementsByClassName("spbc_tab_nav-settings_general")[0],e={target:"spbc_key",action:"highlight",times:3})),t&&spbc_switchTab(t,e),!1);jQuery(document).on("keyup",function(e){17==(e.which||e.keyCode)&&(s=!1)}),jQuery(document).on("keydown",function(e){var t;116==(e.which||e.keyCode)&&s?(e.preventDefault(),"scanner"!==(t=jQuery(".spbc_tab_nav--active")[0]).classList[1].replace("spbc_tab_nav-","")&&(jQuery(t).data("loaded",!1),spbc_switchTab(t))):17==(e.which||e.keyCode)&&(s=!0)}),jQuery(document).on("click","#spbc-change-account-email",function(e){e.preventDefault();var e=jQuery(this),t=jQuery("#spbc-account-email"),s=t.text();spbcToggleClass(e,"active"),e.hasClass("active")?(e.text(e.data("save-text")),t.attr("contenteditable","true"),t.focus(),t.on("keydown",function(e){"Enter"===e.code&&e.preventDefault()}),t.on("input",function(e){"insertParagraph"===e.inputType&&e.preventDefault()})):(spbc_sendAJAXRequest({action:"spbc_update_account_email",accountEmail:s},{timeout:5e3,callback:function(e,t,s,c){void 0!==e.success&&"ok"===e.success&&void 0!==e.manuallyLink&&jQuery("#spbc-key-manually-link").attr("href",e.manuallyLink),void 0!==e.error&&jQuery("#spbc-account-email").css("border-color","red")},errorOutput:function(e){spbcModal.loaded=e,spbcModal.open()}}),t.attr("contenteditable","false"),e.text(e.data("default-text")))})});
//# sourceMappingURL=spbc-settings.min.js.map
diff --git a/js/spbc-settings.min.js.map b/js/spbc-settings.min.js.map
index 3aff6c443..12a53ca5f 100644
--- a/js/spbc-settings.min.js.map
+++ b/js/spbc-settings.min.js.map
@@ -1 +1 @@
-{"version":3,"file":"spbc-settings.min.js","sources":["spbc-settings.js"],"sourcesContent":["// Printf for JS\nString.prototype.printf = function(){\n var formatted = this;\n for( var arg in arguments ) {\n var before_formatted = formatted.substring(0, formatted.indexOf(\"%s\", 0));\n var after_formatted = formatted.substring(formatted.indexOf(\"%s\", 0)+2, formatted.length);\n formatted = before_formatted + arguments[arg] + after_formatted;\n }\n return formatted;\n};\n\n// Switching tabs\nfunction spbc_switchTab(tab, params){\n\n\tvar tab_name = tab.classList[1].replace('spbc_tab_nav-', '');\n\n\t// update url \n\tvar searchParams = new URLSearchParams(window.location.search)\n searchParams.set(\"spbc_tab\", tab_name);\n\tvar hashParam = window.location.hash;\n var newRelativePathQuery = window.location.pathname + '?' + searchParams.toString() + hashParam;\n\n history.replaceState(null, '', newRelativePathQuery);\n\n\t// Hiding a tab 'Backups' if exist\n if(searchParams.get('spbc_tab') !== 'backups') {\n \tjQuery('.spbc_tab_nav-backups').hide();\n }\n\n // update active tab\n\tjQuery('.spbc_tab_nav').removeClass('spbc_tab_nav--active');\n\tjQuery('.spbc_tab').removeClass('spbc_tab--active');\n\tjQuery(tab).addClass('spbc_tab_nav--active');\n\tjQuery('.spbc_tab-'+tab_name).addClass('spbc_tab--active');\n\n\tif(!jQuery(tab).data('loaded')){\n\t\tvar data = {\n\t\t\taction: 'spbc_settings__draw_elements',\n\t\t\ttab_name: tab_name,\n\t\t\tsecurity: spbcSettings.ajax_nonce\n\t\t};\n\t\tvar params = {\n\t\t\tcallback: spbc_draw_settings_callback,\n\t\t\tnotJson: true,\n additional: params || null,\n\t\t};\n\t\tspbc_sendAJAXRequest( data, params, tab );\n\t}else if(params && params.action){\n switch (params.action){\n case 'highlight':\n spbcHighlightElement(params.target, params.times);\n break;\n case 'click':\n setTimeout(function(){\n jQuery('#'+params.additional.target).click();\n }, 500);\n break;\n }\n\t}\n}\n\nfunction spbc_draw_settings_callback(result, data, params, obj){\n\n\tjQuery(obj).data('loaded', true);\n\tjQuery('.spbc_tab-'+data.tab_name).replaceWith(result);\n\tvar tab = jQuery('.spbc_tab-'+data.tab_name);\n\ttab.addClass('spbc_tab--active');\n\n\tjQuery(document).off( 'click', '.spbc_long_description__show');\n\tjQuery(document).on('click', '.spbc_long_description__show', function(){\n\t\tself = jQuery(this);\n\t\tspbc_settings__show_description(self, self.attr('setting'));\n\t});\n\n\tjQuery(document).off( 'click', '.spbc_long_recommendation__show');\n\tjQuery(document).on('click', '.spbc_long_recommendation__show', function(){\n\t\tself = jQuery(this);\n\t\tspbc_settings__show_recommendation(self, self.attr('setting'));\n\t});\n\n\tif(params.additional){\n\t switch (params.additional.action) {\n case 'highlight':\n\t\t spbcHighlightElement(params.additional.target, params.additional.times);\n break;\n case 'click':\n setTimeout(function(){\n\t\t jQuery('#'+params.additional.target).click();\n }, 500);\n break;\n }\n }\n\n\tjQuery(tab).on('click', '.spbc_hint-send_'+data.tab_name, function(){\n\t\t\tjQuery('.spbc_hint-send_'+data.tab_name).hide();\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_send_'+data.tab_name, tab_name: data.tab_name},\n\t\t\t{callback: spbc_send_logs_callback}\n\t\t);\n\t});\n\n\t// scroll to anchor\n\tif (window.location.hash) {\n\t\tdocument.getElementById(window.location.hash.substring(1)).scrollIntoView();\n\t}\n}\n\nfunction spbc_send_logs_callback(result, data, params, obj){\n\tjQuery('.spbc_tab_nav-'+data.tab_name).data('loaded', false);\n\tspbc_switchTab(document.getElementsByClassName('spbc_tab_nav-'+data.tab_name)[0]);\n}\n\n// Settings dependences\nfunction spbcSettingsDependenciesbyId(settingsIDs, enable){\n\n\tif(typeof settingsIDs === 'string'){\n\t\ttmp = [];\n\t\ttmp.push(settingsIDs);\n\t\tsettingsIDs = tmp;\n\t}\n\n\tenable = typeof enable === 'undefined' ? null : +enable;\n\n\tsettingsIDs.forEach(function(settingID, i, arr){\n\n\t\tvar elem = document.getElementById('spbc_setting_'+settingID),\n do_disable = function(){elem.setAttribute('disabled', 'disabled');},\n do_enable = function(){elem.removeAttribute('disabled');};\n\n if(enable !== null) // Set\n enable === 1 ? do_enable() : do_disable();\n else // Switch\n elem.getAttribute('disabled') === null ? do_disable() : do_enable();\n\n\t});\n}\n\n/**\n * Recursive in case children found!\n *\n * Settings dependencies\n *\n */\nfunction spbcSettingsDependencies(settingNames, enable){\n\n\t// Cast settingNames to array\n\tsettingNames = typeof settingNames === 'string' ? settingNames.split(',') : settingNames;\n\tenable = typeof enable === 'undefined' ? +event.target.checked : +enable;\n\n\tsettingNames.forEach(function(settingName, i, arr){\n\n\t\tdocument.getElementsByName('spbc_settings['+settingName+']')\n\t\t\t.forEach(function( elem, i, arr ){\n\n\t\t\t\tvar\tdo_disable = function(){elem.setAttribute('disabled', 'disabled');},\n\t\t\t\t\tdo_enable = function(){elem.removeAttribute('disabled');};\n\t\t\t\tif(enable !== null) // Set\n\t\t\t\t\tenable === 1 ? do_enable() : do_disable();\n\t\t\t\telse // Switch\n\t\t\t\t\telem.getAttribute('disabled') === null ? do_disable() : do_enable();\n\n\t\t\t\tvar children = elem.getAttribute('children');\n\t\t\t\tif( children !== null ){\n\t\t\t\t\tspbcSettingsDependencies(children, enable && elem.checked);\n\t\t\t\t}\n\t\t\t});\n\t});\n}\n\nfunction spbc_settings__show_description(label, setting_id){\n\t\n\tvar remove_desc_func = function(e){\n\t\tif(typeof e === 'undefined' || ((jQuery(e.target).parent('.spbc_long_desc').length == 0 || jQuery(e.target).hasClass('spbc_long_desc__cancel')) && !jQuery(e.target).hasClass('spbc_long_description__show'))){\n\t\t\tjQuery('.spbc_long_desc').remove();\n\t\t\tjQuery(document).off('click', remove_desc_func);\n\t\t}\n\t};\n\t\n\tremove_desc_func();\n\t\n\tlabel.after(\"
\");\n\tvar obj = jQuery('#spbc_long_desc__'+setting_id);\n\tobj.append(\" \")\n\t\t.append(\"
\")\n\t\t.css({\n\t\t\ttop: label.position().top + 25,\n\t\t\tleft: label.position().left + 5\n\t\t});\n\n\t\n\tspbc_sendAJAXRequest(\n\t\t{action: 'spbc_settings__get_description', setting_id: setting_id},\n\t\t{\n\t\t\tspinner: obj.children('img'),\n\t\t\tcallback: function(result, data, params, obj){\n\n\t\t\t\tobj.empty()\n\t\t\t\t\t.append(\"
\")\n\t\t\t\t\t.append(\" \")\n\t\t\t\t\t.append(\"\"+result.title+\" \")\n\t\t\t\t\t.append(\"\"+result.desc+\"
\");\n\n\t\t\t\tjQuery(document).on('click', remove_desc_func);\n\t\t\t}\n\t\t},\n\t\tobj\n\t);\n}\n\nfunction spbc_settings__show_recommendation(label, setting_id){\n\t\n\tvar remove_recommendation_func = function(e){\n\t\tif(typeof e === 'undefined' || ((jQuery(e.target).parent('.spbc_long_desc').length == 0 || jQuery(e.target).hasClass('spbc_long_desc__cancel')) && !jQuery(e.target).hasClass('spbc_long_recommendation__show'))){\n\t\t\tjQuery('.spbc_long_desc').remove();\n\t\t\tjQuery(document).off('click', remove_recommendation_func);\n\t\t}\n\t};\n\t\n\tremove_recommendation_func();\n\t\n\tlabel.after(\"
\");\n\tvar obj = jQuery('#spbc_long_desc__'+setting_id);\n\tobj.append(\" \")\n\t\t.append(\"
\")\n\t\t.css({\n\t\t\ttop: label.position().top + 25,\n\t\t\tleft: label.position().left + 5\n\t\t});\n\n\t\n\tspbc_sendAJAXRequest(\n\t\t{action: 'spbc_settings__get_recommendation', setting_id: setting_id},\n\t\t{\n\t\t\tspinner: obj.children('img'),\n\t\t\tcallback: function(result, data, params, obj){\n\n\t\t\t\tobj.empty()\n\t\t\t\t\t.append(\"
\")\n\t\t\t\t\t.append(\" \")\n\t\t\t\t\t.append(\"\"+result.title+\" \")\n\t\t\t\t\t.append(\"\"+result.desc+\"
\");\n\n\t\t\t\tjQuery(document).on('click', remove_recommendation_func);\n\t\t\t}\n\t\t},\n\t\tobj\n\t);\n}\n\n// Shows/hides full text\nfunction spbcStartShowHide(){\n\tjQuery('.spbcShortText')\n\t\t.off('mouseover' )\n\t\t.on('mouseover', function(){ jQuery(this).next().show(); })\n\t\t.off('mouseout' )\n\t\t.on('mouseout', function(){ jQuery(this).next().hide(); });\n\tjQuery('.spbcFullText')\n\t\t.off('mouseout' )\n\t\t.on('mouseout', function(){ jQuery(this).hide(); })\n\t\t.off('mouseover' )\n\t\t.on('mouseover', function(){ jQuery(this).show(); })\n}\n\n// Generate and save confirmation code\nfunction spbctGenerateConfirmationCode() {\n\n\tvar data = {};\n\tvar res = {};\n\tres.success = false;\n\tdata.security = spbcSettings.ajax_nonce;\n\tdata.action = 'spbc_generate_confirmation_code';\n\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\tasync: false,\n\t\turl: spbcSettings.ajaxurl,\n\t\tdata: data,\n\t\tsuccess: function(result){\n\t\t\tif(result.success) {\n\t\t\t\tres.success = true;\n\t\t\t} else {\n\t\t\t\tres.text = result.data;\n\t\t\t}\n\t\t},\n\t});\n\treturn res;\n}\n// Check confirmation code\nfunction spbctCheckConfirmationCode( radioButton, timeout, timer ) {\n\n\tvar element = radioButton;\n\tvar data = {};\n\tdata.security = spbcSettings.ajax_nonce;\n\tdata.action = 'spbc_check_confirmation_code';\n\tdata.code = jQuery('#confirmation-code input').val();\n\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\tasync: false,\n\t\turl: spbcSettings.ajaxurl,\n\t\tdata: data,\n\t\tsuccess: function(result){\n\t\t\tif(result.success) {\n\t\t\t\tjQuery('[name *= 2fa__enable]').attr(\"checked\", \"\");\n\t\t\t\telement.checked = true;\n\t\t\t\tjQuery('#spbc_setting_2fa__roles').removeAttr('disabled');\n\t\t\t\tjQuery('#spbc_setting_2fa__roles > option:first').attr('selected','selected');\n\t\t\t\tclearTimeout( timeout );\n\t\t\t\ttimer.remove();\n\t\t\t\tjQuery('#confirmation-code').dialog( \"close\" );\n\t\t\t} else {\n\t\t\t\talert('Code verification failed!');\n\t\t\t}\n\t\t},\n\t});\n\n}\n\n/**\n * Checking current account status for renew notice\n */\nfunction spbc_banner_check() {\n\tvar bannerChecker = setInterval( function() {\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_settings__check_renew_banner'},\n\t\t\t{\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tif (result.close_renew_banner) {\n\t\t\t\t\t\tif (jQuery('#spbc_renew_notice').length)\n\t\t\t\t\t\t\tjQuery('#spbc_renew_notice').hide('slow');\n\t\t\t\t\t\tif (jQuery('#spbc_trial_notice').length)\n\t\t\t\t\t\t\tjQuery('#spbc_trial_notice').hide('slow');\n\t\t\t\t\t\tclearInterval(bannerChecker);\n\t\t\t\t\t}\t\t\t\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}, 60000);\n}\n\njQuery(document).ready(function(){\n\t\n\tjQuery('#spbc_gdpr_open_modal').on('click', function(){\n\t\tjQuery('#gdpr_dialog').dialog({\n\t\t\tmodal:true, \n\t\t\tshow: true,\n\t\t\tposition: { my: \"center\", at: \"center\", of: window },\n\t\t\twidth: +(jQuery('#wpbody').width() / 100 * 70), // 70% of #wpbody\n\t\t\theight: 'auto',\n\t\t\ttitle: 'GDPR compliance',\n\t\t\tdraggable: false,\n\t\t\tresizable: false,\n\t\t\tcloseText: \"Close\",\n\t\t});\n\t});\n\n\t// Checking email receiving possibility for activation 2FA\n\tjQuery(document).on('click', '[name*=fa__enable]:not([value=0]),#confirmation-code--resend', function(e){\n\n\t\te.preventDefault();\n\n\t\tjQuery('#confirmation-code--resend').attr('disabled', 'disabled')\n\t\t\t.append('');\n\t\tvar enableResend = setTimeout(function(){\n\t\t\tjQuery('#confirmation-code--resend').removeAttr('disabled');\n\t\t\tjQuery('#confirmation-code--resend>.circle').remove();\n\t\t}, 30000);\n\n\t\tvar res = spbctGenerateConfirmationCode();\n\t\tif( res.success ) {\n\t\t\tjQuery('#confirmation-code input').val('');\n\t\t\tjQuery('#confirmation-code').dialog({\n\t\t\t\tmodal: true,\n\t\t\t\ttitle: 'Confirmation code',\n\t\t\t\twidth: 310,\n\t\t\t\tbuttons: {\n\t\t\t\t\tCancel: function() {\n\t\t\t\t\t\tjQuery( this ).dialog( \"close\" );\n\t\t\t\t\t\tclearTimeout( enableResend );\n\t\t\t\t\t\tjQuery('#confirmation-code--resend>.circle').remove();\n\t\t\t\t\t},\n\t\t\t\t\tOk: function() {\n\t\t\t\t\t\tspbctCheckConfirmationCode(e.target, enableResend, jQuery('#confirmation-code--resend>.circle'));\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tdraggable: false,\n\t\t\t\tresizable: false,\n\t\t\t});\n\t\t} else {\n\t\t\talert(res.text);\n\t\t}\n\t});\n\t\n\tif (jQuery('#spbc_renew_notice').length || jQuery('#spbc_trial_notice').length) {\n\t\tspbc_banner_check();\n\t}\n\n\t// Sync button\n\tjQuery('#spbc_button__sync').on('click', function(){\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_sync'},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: document.getElementById('spbc_button__sync' ),\n\t\t\t\tspinner: jQuery('#spbc_button__sync .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tjQuery('#spbc_button__sync .spbc_success').show(300);\n\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_button__sync .spbc_success').hide(300);}, 2000);\n\t\t\t\t\tif(result.reload)\n\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\tif( spbcSettings.key_changed ){\n\t\tjQuery('#spbc_button__sync').click();\n\t}\n\n\t// Get Key Auto button\n\tjQuery(document).on('click', '#spbc_setting_get_key_auto', function(){\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_get_key_auto'},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: document.getElementById('spbc_setting_get_key_auto' ),\n\t\t\t\tspinner: jQuery('#spbc_setting_get_key_auto .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tjQuery('#spbc_setting_get_key_auto .spbc_success').show(300);\n\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_setting_get_key_auto .spbc_success').hide(300);}, 2000);\n\t\t\t\t\tif(result.reload)\n\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\tif(result.getTemplates) {\n\t\t\t\t\t\tspbcModal.loaded = result.getTemplates;\n\t\t\t\t\t\tspbcModal.open();\n\t\t\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\t// Import settings\n\tjQuery( document ).on('click', '#spbc_settings_templates_import_button', function(){\n\t\tjQuery('#spbc-ajax-result').remove();\n\t\tvar optionSelected = jQuery('option:selected', jQuery('#spbc_settings_templates_import'));\n\t\tvar templateNameInput = jQuery('#spbc_settings_templates_import_name');\n\t\ttemplateNameInput.css('border-color', 'inherit');\n\t\tif( typeof optionSelected.data('id') === \"undefined\" ) {\n\t\t\tconsole.log( 'Attribute \"data-id\" not set for the option.' );\n\t\t\treturn;\n\t\t}\n\t\tvar data = {\n\t\t\t'template_id' : optionSelected.data('id'),\n\t\t\t'template_name' : optionSelected.data('name'),\n\t\t\t'settings' : optionSelected.data('settings')\n\t\t};\n\t\tvar button = this;\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_settings_templates_import', data: data},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: button,\n\t\t\t\tspinner: jQuery('#spbc_settings_templates_import_button .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tif(result.success) {\n\t\t\t\t\t\tjQuery( \"\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t\tjQuery('#spbc_settings_templates_import_button .spbc_success').show(300);\n\t\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_settings_templates_import_button .spbc_success').hide(300);}, 2000);\n\t\t\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsetTimeout(function(){spbcModal.close()}, 2000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery( \"\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\t// Export settings\n\tjQuery( document ).on('click', '#spbc_settings_templates_export_button', function(){\n\t\tjQuery('#spbc-ajax-result').remove();\n\t\tvar optionSelected = jQuery('option:selected', jQuery('#spbc_settings_templates_export'));\n\t\tvar templateNameInput = jQuery('#spbc_settings_templates_export_name');\n\t\ttemplateNameInput.css('border-color', 'inherit');\n\t\tif( typeof optionSelected.data('id') === \"undefined\" ) {\n\t\t\tconsole.log( 'Attribute \"data-id\" not set for the option.' );\n\t\t\treturn;\n\t\t}\n\t\tif( optionSelected.data('id') === 'new_template' ) {\n\t\t\tvar templateName = templateNameInput.val();\n\t\t\tif( templateName === '' ) {\n\t\t\t\ttemplateNameInput.css('border-color', 'red');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\t'template_name' : templateName\n\t\t\t}\n\t\t} else {\n\t\t\tvar data = {\n\t\t\t\t'template_id' : optionSelected.data('id')\n\t\t\t}\n\t\t}\n\t\tvar button = this;\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_settings_templates_export', data: data},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: button,\n\t\t\t\tspinner: jQuery('#spbc_settings_templates_export_button .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tif(result.success) {\n\t\t\t\t\t\tjQuery( \"\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t\tjQuery('#spbc_settings_templates_export_button .spbc_success').show(300);\n\t\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_settings_templates_export_button .spbc_success').hide(300);}, 2000);\n\t\t\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsetTimeout(function(){spbcModal.close()}, 2000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery( \"\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\t// Reset settings\n\tjQuery( document ).on('click', '#spbc_settings_templates_reset_button', function(){\n\t\tvar button = this;\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_settings_templates_reset'},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: button,\n\t\t\t\tspinner: jQuery('#spbc_settings_templates_reset_button .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tif(result.success) {\n\t\t\t\t\t\tjQuery( \"\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t\tjQuery('#spbc_settings_templates_reset_button .spbc_success').show(300);\n\t\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_settings_templates_reset_button .spbc_success').hide(300);}, 2000);\n\t\t\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsetTimeout(function(){spbcModal.close()}, 2000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery( \"\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\tjQuery(document).on('change', '#spbc_settings_templates_export',function(){\n\t\tvar optionSelected = jQuery(\"option:selected\", this);\n\t\tif ( optionSelected.data(\"id\") === 'new_template' ) {\n\t\t\tjQuery(this).parent().parent().find('#spbc_settings_templates_export_name').show();\n\t\t} else {\n\t\t\tjQuery(this).parent().parent().find('#spbc_settings_templates_export_name').hide();\n\t\t}\n\t});\n\n\t//* TAB_CONTROL\n\t\n\t\tjQuery('.spbc_tab_nav-summary').data('loaded', true); // Summary tab loaded by default\n\t\tjQuery('.spbc_tabs_nav_wrapper').on('click', '.spbc_tab_nav', function(event){\n\t\t\tspbc_switchTab(event.currentTarget);\n\t\t});\n\t\t\n\t\t// Get additional params\n var params = {\n target: location.search.match(/spbc_target=(\\S*?)(&|$)/) ? location.search.match(/spbc_target=(\\S*?)(&|$)/)[1] : null,\n action: location.search.match(/spbc_action=(\\S*?)(&|$)/) ? location.search.match(/spbc_action=(\\S*?)(&|$)/)[1] : null,\n times: location.search.match(/spbc_times=(\\S*?)(&|$)/) ? location.search.match(/spbc_times=(\\S*?)(&|$)/)[1] : 3,\n };\n // Legacy support\n params.target = location.search.match(/spbc_highlight=(\\S*?)(&|$)/) ? location.search.match(/spbc_highlight=(\\S*?)(&|$)/)[1] : params.target;\n params.action = location.search.search(/spbc_highlight=(\\S*?)(&|$)/) != -1\n ? 'highlight'\n : params.action;\n\n\t\t// Get open tab form query\n\t\tvar spbc_tab = document.getElementsByClassName('spbc_tab_nav-' + (location.search.match(/spbc_tab=(\\S*?)(&|$)/) ? location.search.match(/spbc_tab=(\\S*?)(&|$)/)[1] : ''))[0] || null;\n\n\t\t// TAB SWITCHING\n\t\t// Switch by URL\n\t\tif(spbc_tab){\n\n\t\t// Switch to DEBUG\n\t\t}else if( +spbcSettings.debug ){\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-debug')[0];\n\t\t// Switch by DEFAULT\n\t\t}else if( +spbcSettings.wpms && !+spbcSettings.is_main_site){\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-security_log')[0];\n\t\t// Switch if Key is OK and SFW is ON\n\t\t}else if( +spbcSettings.key_is_ok && +spbcSettings.secfw_enabled ){\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-traffic_control')[0];\n\t\t// Switch if Key is OK\n\t\t}else if( +spbcSettings.key_is_ok ){\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-scanner')[0];\n\t\t// Switch if KEY IS BAD\n\t\t}else{\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-settings_general')[0];\n\t\t\tparams = {\n\t\t\t target: 'spbc_key',\n action: 'highlight',\n times: 3,\n };\n\t\t}\n\t\t\n\t\t// Switch tab\n\t\tif(spbc_tab) spbc_switchTab(spbc_tab, params);\n\t\t\n\t//*/ TAB_CONROL END\n\t\n\t//* REFRESH TAB IF ctrl+F5\n\tvar ctrlKeyDown = false;\n\n\tjQuery(document).on(\"keyup\", function(e) {\n\t\tif ((e.which || e.keyCode) == 17) ctrlKeyDown = false;\n\t});\n\n\tjQuery(document).on(\"keydown\", function(e) {\n\t\tif (((e.which || e.keyCode) == 116) && ctrlKeyDown) {\n\t\t\te.preventDefault();\n\n\t\t\tvar active_tab = jQuery('.spbc_tab_nav--active')[0];\n\t\t\tvar tab_name = active_tab.classList[1].replace('spbc_tab_nav-', '');\n\n\t\t\tif (tab_name === 'scanner') return; \n\n\t\t\tjQuery(active_tab).data('loaded', false);\n\n\t\t\tspbc_switchTab(active_tab);\n\n\t\t} else if ((e.which || e.keyCode) == 17) {\n\t ctrlKeyDown = true;\n\t }\n\t});\n\t//*/ REFRESH TAB IF ctrl+F5 END\n});"],"names":["spbc_switchTab","tab","params","tab_name","classList","replace","searchParams","URLSearchParams","window","location","search","hashParam","set","hash","newRelativePathQuery","pathname","toString","history","replaceState","get","jQuery","hide","removeClass","addClass","data","action","spbcHighlightElement","target","times","setTimeout","additional","click","security","spbcSettings","ajax_nonce","callback","spbc_draw_settings_callback","notJson","spbc_sendAJAXRequest","result","obj","replaceWith","document","off","on","spbc_settings__show_description","self","this","attr","spbc_settings__show_recommendation","spbc_send_logs_callback","getElementById","substring","scrollIntoView","getElementsByClassName","spbcSettingsDependenciesbyId","settingsIDs","enable","tmp","push","forEach","settingID","i","arr","do_disable","elem","setAttribute","do_enable","removeAttribute","getAttribute","spbcSettingsDependencies","settingNames","split","event","checked","settingName","getElementsByName","children","label","setting_id","remove_desc_func","e","parent","length","hasClass","remove","after","append","css","top","position","left","spinner","empty","title","desc","remove_recommendation_func","spbcStartShowHide","next","show","spbctGenerateConfirmationCode","res","success","ajax","type","async","url","ajaxurl","text","spbctCheckConfirmationCode","radioButton","timeout","timer","element","code","val","removeAttr","clearTimeout","dialog","alert","spbc_banner_check","bannerChecker","setInterval","close_renew_banner","clearInterval","String","prototype","printf","arg","formatted","arguments","before_formatted","indexOf","after_formatted","ready","modal","my","at","of","width","height","draggable","resizable","closeText","preventDefault","enableResend","buttons","Cancel","Ok","button","reload","key_changed","getTemplates","spbcModal","loaded","open","addEventListener","optionSelected","console","log","template_id","template_name","settings","insertAfter","close","templateNameInput","templateName","find","currentTarget","match","spbc_tab","ctrlKeyDown","debug","wpms","is_main_site","key_is_ok","secfw_enabled","which","keyCode","active_tab"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"spbc-settings.min.js","sources":["spbc-settings.js"],"sourcesContent":["// Printf for JS\nString.prototype.printf = function(){\n var formatted = this;\n for( var arg in arguments ) {\n var before_formatted = formatted.substring(0, formatted.indexOf(\"%s\", 0));\n var after_formatted = formatted.substring(formatted.indexOf(\"%s\", 0)+2, formatted.length);\n formatted = before_formatted + arguments[arg] + after_formatted;\n }\n return formatted;\n};\n\n// Switching tabs\nfunction spbc_switchTab(tab, params){\n\n\tvar tab_name = tab.classList[1].replace('spbc_tab_nav-', '');\n\n\t// update url \n\tvar searchParams = new URLSearchParams(window.location.search)\n searchParams.set(\"spbc_tab\", tab_name);\n\tvar hashParam = window.location.hash;\n var newRelativePathQuery = window.location.pathname + '?' + searchParams.toString() + hashParam;\n\n history.replaceState(null, '', newRelativePathQuery);\n\n\t// Hiding a tab 'Backups' if exist\n if(searchParams.get('spbc_tab') !== 'backups') {\n \tjQuery('.spbc_tab_nav-backups').hide();\n }\n\n // update active tab\n\tjQuery('.spbc_tab_nav').removeClass('spbc_tab_nav--active');\n\tjQuery('.spbc_tab').removeClass('spbc_tab--active');\n\tjQuery(tab).addClass('spbc_tab_nav--active');\n\tjQuery('.spbc_tab-'+tab_name).addClass('spbc_tab--active');\n\n\tif(!jQuery(tab).data('loaded')){\n\t\tvar data = {\n\t\t\taction: 'spbc_settings__draw_elements',\n\t\t\ttab_name: tab_name,\n\t\t\tsecurity: spbcSettings.ajax_nonce\n\t\t};\n\t\tvar params = {\n\t\t\tcallback: spbc_draw_settings_callback,\n\t\t\tnotJson: true,\n additional: params || null,\n\t\t};\n\t\tspbc_sendAJAXRequest( data, params, tab );\n\t}else if(params && params.action){\n switch (params.action){\n case 'highlight':\n spbcHighlightElement(params.target, params.times);\n break;\n case 'click':\n setTimeout(function(){\n jQuery('#'+params.additional.target).click();\n }, 500);\n break;\n }\n\t}\n}\n\nfunction spbc_draw_settings_callback(result, data, params, obj){\n\n\tjQuery(obj).data('loaded', true);\n\tjQuery('.spbc_tab-'+data.tab_name).replaceWith(result);\n\tvar tab = jQuery('.spbc_tab-'+data.tab_name);\n\ttab.addClass('spbc_tab--active');\n\n\tjQuery(document).off( 'click', '.spbc_long_description__show');\n\tjQuery(document).on('click', '.spbc_long_description__show', function(){\n\t\tself = jQuery(this);\n\t\tspbc_settings__show_description(self, self.attr('setting'));\n\t});\n\n\tjQuery(document).off( 'click', '.spbc_long_recommendation__show');\n\tjQuery(document).on('click', '.spbc_long_recommendation__show', function(){\n\t\tself = jQuery(this);\n\t\tspbc_settings__show_recommendation(self, self.attr('setting'));\n\t});\n\n\tif(params.additional){\n\t switch (params.additional.action) {\n case 'highlight':\n\t\t spbcHighlightElement(params.additional.target, params.additional.times);\n break;\n case 'click':\n setTimeout(function(){\n\t\t jQuery('#'+params.additional.target).click();\n }, 500);\n break;\n }\n }\n\n\tjQuery(tab).on('click', '.spbc_hint-send_'+data.tab_name, function(){\n\t\t\tjQuery('.spbc_hint-send_'+data.tab_name).hide();\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_send_'+data.tab_name, tab_name: data.tab_name},\n\t\t\t{callback: spbc_send_logs_callback}\n\t\t);\n\t});\n\n\t// scroll to anchor\n\tif (window.location.hash) {\n\t\tdocument.getElementById(window.location.hash.substring(1)).scrollIntoView();\n\t}\n}\n\nfunction spbc_send_logs_callback(result, data, params, obj){\n\tjQuery('.spbc_tab_nav-'+data.tab_name).data('loaded', false);\n\tspbc_switchTab(document.getElementsByClassName('spbc_tab_nav-'+data.tab_name)[0]);\n}\n\n// Settings dependences\nfunction spbcSettingsDependenciesbyId(settingsIDs, enable){\n\n\tif(typeof settingsIDs === 'string'){\n\t\ttmp = [];\n\t\ttmp.push(settingsIDs);\n\t\tsettingsIDs = tmp;\n\t}\n\n\tenable = typeof enable === 'undefined' ? null : +enable;\n\n\tsettingsIDs.forEach(function(settingID, i, arr){\n\n\t\tvar elem = document.getElementById('spbc_setting_'+settingID),\n do_disable = function(){elem.setAttribute('disabled', 'disabled');},\n do_enable = function(){elem.removeAttribute('disabled');};\n\n if(enable !== null) // Set\n enable === 1 ? do_enable() : do_disable();\n else // Switch\n elem.getAttribute('disabled') === null ? do_disable() : do_enable();\n\n\t});\n}\n\n/**\n * Recursive in case children found!\n *\n * Settings dependencies\n *\n */\nfunction spbcSettingsDependencies(settingNames, enable){\n\n\t// Cast settingNames to array\n\tsettingNames = typeof settingNames === 'string' ? settingNames.split(',') : settingNames;\n\tenable = typeof enable === 'undefined' ? +event.target.checked : +enable;\n\n\tsettingNames.forEach(function(settingName, i, arr){\n\n\t\tdocument.getElementsByName('spbc_settings['+settingName+']')\n\t\t\t.forEach(function( elem, i, arr ){\n\n\t\t\t\tvar\tdo_disable = function(){elem.setAttribute('disabled', 'disabled');},\n\t\t\t\t\tdo_enable = function(){elem.removeAttribute('disabled');};\n\t\t\t\tif(enable !== null) // Set\n\t\t\t\t\tenable === 1 ? do_enable() : do_disable();\n\t\t\t\telse // Switch\n\t\t\t\t\telem.getAttribute('disabled') === null ? do_disable() : do_enable();\n\n\t\t\t\tvar children = elem.getAttribute('children');\n\t\t\t\tif( children !== null ){\n\t\t\t\t\tspbcSettingsDependencies(children, enable && elem.checked);\n\t\t\t\t}\n\t\t\t});\n\t});\n}\n\nfunction spbc_settings__show_description(label, setting_id){\n\t\n\tvar remove_desc_func = function(e){\n\t\tif(typeof e === 'undefined' || ((jQuery(e.target).parent('.spbc_long_desc').length == 0 || jQuery(e.target).hasClass('spbc_long_desc__cancel')) && !jQuery(e.target).hasClass('spbc_long_description__show'))){\n\t\t\tjQuery('.spbc_long_desc').remove();\n\t\t\tjQuery(document).off('click', remove_desc_func);\n\t\t}\n\t};\n\t\n\tremove_desc_func();\n\t\n\tlabel.after(\"
\");\n\tvar obj = jQuery('#spbc_long_desc__'+setting_id);\n\tobj.append(\" \")\n\t\t.append(\"
\")\n\t\t.css({\n\t\t\ttop: label.position().top + 25,\n\t\t\tleft: label.position().left + 5\n\t\t});\n\n\t\n\tspbc_sendAJAXRequest(\n\t\t{action: 'spbc_settings__get_description', setting_id: setting_id},\n\t\t{\n\t\t\tspinner: obj.children('img'),\n\t\t\tcallback: function(result, data, params, obj){\n\n\t\t\t\tobj.empty()\n\t\t\t\t\t.append(\"
\")\n\t\t\t\t\t.append(\" \")\n\t\t\t\t\t.append(\"\"+result.title+\" \")\n\t\t\t\t\t.append(\"\"+result.desc+\"
\");\n\n\t\t\t\tjQuery(document).on('click', remove_desc_func);\n\t\t\t}\n\t\t},\n\t\tobj\n\t);\n}\n\nfunction spbc_settings__show_recommendation(label, setting_id){\n\t\n\tvar remove_recommendation_func = function(e){\n\t\tif(typeof e === 'undefined' || ((jQuery(e.target).parent('.spbc_long_desc').length == 0 || jQuery(e.target).hasClass('spbc_long_desc__cancel')) && !jQuery(e.target).hasClass('spbc_long_recommendation__show'))){\n\t\t\tjQuery('.spbc_long_desc').remove();\n\t\t\tjQuery(document).off('click', remove_recommendation_func);\n\t\t}\n\t};\n\t\n\tremove_recommendation_func();\n\t\n\tlabel.after(\"
\");\n\tvar obj = jQuery('#spbc_long_desc__'+setting_id);\n\tobj.append(\" \")\n\t\t.append(\"
\")\n\t\t.css({\n\t\t\ttop: label.position().top + 25,\n\t\t\tleft: label.position().left + 5\n\t\t});\n\n\t\n\tspbc_sendAJAXRequest(\n\t\t{action: 'spbc_settings__get_recommendation', setting_id: setting_id},\n\t\t{\n\t\t\tspinner: obj.children('img'),\n\t\t\tcallback: function(result, data, params, obj){\n\n\t\t\t\tobj.empty()\n\t\t\t\t\t.append(\"
\")\n\t\t\t\t\t.append(\" \")\n\t\t\t\t\t.append(\"\"+result.title+\" \")\n\t\t\t\t\t.append(\"\"+result.desc+\"
\");\n\n\t\t\t\tjQuery(document).on('click', remove_recommendation_func);\n\t\t\t}\n\t\t},\n\t\tobj\n\t);\n}\n\n// Shows/hides full text\nfunction spbcStartShowHide(){\n\tjQuery('.spbcShortText')\n\t\t.off('mouseover' )\n\t\t.on('mouseover', function(){ jQuery(this).next().show(); })\n\t\t.off('mouseout' )\n\t\t.on('mouseout', function(){ jQuery(this).next().hide(); });\n\tjQuery('.spbcFullText')\n\t\t.off('mouseout' )\n\t\t.on('mouseout', function(){ jQuery(this).hide(); })\n\t\t.off('mouseover' )\n\t\t.on('mouseover', function(){ jQuery(this).show(); })\n}\n\n// Generate and save confirmation code\nfunction spbctGenerateConfirmationCode() {\n\n\tvar data = {};\n\tvar res = {};\n\tres.success = false;\n\tdata.security = spbcSettings.ajax_nonce;\n\tdata.action = 'spbc_generate_confirmation_code';\n\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\tasync: false,\n\t\turl: spbcSettings.ajaxurl,\n\t\tdata: data,\n\t\tsuccess: function(result){\n\t\t\tif(result.success) {\n\t\t\t\tres.success = true;\n\t\t\t} else {\n\t\t\t\tres.text = result.data;\n\t\t\t}\n\t\t},\n\t});\n\treturn res;\n}\n// Check confirmation code\nfunction spbctCheckConfirmationCode( radioButton, timeout, timer ) {\n\n\tvar element = radioButton;\n\tvar data = {};\n\tdata.security = spbcSettings.ajax_nonce;\n\tdata.action = 'spbc_check_confirmation_code';\n\tdata.code = jQuery('#confirmation-code input').val();\n\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\tasync: false,\n\t\turl: spbcSettings.ajaxurl,\n\t\tdata: data,\n\t\tsuccess: function(result){\n\t\t\tif(result.success) {\n\t\t\t\tjQuery('[name *= 2fa__enable]').attr(\"checked\", \"\");\n\t\t\t\telement.checked = true;\n\t\t\t\tjQuery('#spbc_setting_2fa__roles').removeAttr('disabled');\n\t\t\t\tjQuery('#spbc_setting_2fa__roles > option:first').attr('selected','selected');\n\t\t\t\tclearTimeout( timeout );\n\t\t\t\ttimer.remove();\n\t\t\t\tjQuery('#confirmation-code').dialog( \"close\" );\n\t\t\t} else {\n\t\t\t\talert('Code verification failed!');\n\t\t\t}\n\t\t},\n\t});\n\n}\n\n/**\n * Checking current account status for renew notice\n */\nfunction spbc_banner_check() {\n\tvar bannerChecker = setInterval( function() {\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_settings__check_renew_banner'},\n\t\t\t{\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tif (result.close_renew_banner) {\n\t\t\t\t\t\tif (jQuery('#spbc_renew_notice').length)\n\t\t\t\t\t\t\tjQuery('#spbc_renew_notice').hide('slow');\n\t\t\t\t\t\tif (jQuery('#spbc_trial_notice').length)\n\t\t\t\t\t\t\tjQuery('#spbc_trial_notice').hide('slow');\n\t\t\t\t\t\tclearInterval(bannerChecker);\n\t\t\t\t\t}\t\t\t\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}, 60000);\n}\n\njQuery(document).ready(function(){\n\t\n\tjQuery('#spbc_gdpr_open_modal').on('click', function(){\n\t\tjQuery('#gdpr_dialog').dialog({\n\t\t\tmodal:true, \n\t\t\tshow: true,\n\t\t\tposition: { my: \"center\", at: \"center\", of: window },\n\t\t\twidth: +(jQuery('#wpbody').width() / 100 * 70), // 70% of #wpbody\n\t\t\theight: 'auto',\n\t\t\ttitle: 'GDPR compliance',\n\t\t\tdraggable: false,\n\t\t\tresizable: false,\n\t\t\tcloseText: \"Close\",\n\t\t});\n\t});\n\n\t// Checking email receiving possibility for activation 2FA\n\tjQuery(document).on('click', '[name*=fa__enable]:not([value=0]),#confirmation-code--resend', function(e){\n\n\t\te.preventDefault();\n\n\t\tjQuery('#confirmation-code--resend').attr('disabled', 'disabled')\n\t\t\t.append('');\n\t\tvar enableResend = setTimeout(function(){\n\t\t\tjQuery('#confirmation-code--resend').removeAttr('disabled');\n\t\t\tjQuery('#confirmation-code--resend>.circle').remove();\n\t\t}, 30000);\n\n\t\tvar res = spbctGenerateConfirmationCode();\n\t\tif( res.success ) {\n\t\t\tjQuery('#confirmation-code input').val('');\n\t\t\tjQuery('#confirmation-code').dialog({\n\t\t\t\tmodal: true,\n\t\t\t\ttitle: 'Confirmation code',\n\t\t\t\twidth: 310,\n\t\t\t\tbuttons: {\n\t\t\t\t\tCancel: function() {\n\t\t\t\t\t\tjQuery( this ).dialog( \"close\" );\n\t\t\t\t\t\tclearTimeout( enableResend );\n\t\t\t\t\t\tjQuery('#confirmation-code--resend>.circle').remove();\n\t\t\t\t\t},\n\t\t\t\t\tOk: function() {\n\t\t\t\t\t\tspbctCheckConfirmationCode(e.target, enableResend, jQuery('#confirmation-code--resend>.circle'));\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tdraggable: false,\n\t\t\t\tresizable: false,\n\t\t\t});\n\t\t} else {\n\t\t\talert(res.text);\n\t\t}\n\t});\n\t\n\tif (jQuery('#spbc_renew_notice').length || jQuery('#spbc_trial_notice').length) {\n\t\tspbc_banner_check();\n\t}\n\n\t// Sync button\n\tjQuery('#spbc_button__sync').on('click', function(){\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_sync'},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: document.getElementById('spbc_button__sync' ),\n\t\t\t\tspinner: jQuery('#spbc_button__sync .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tjQuery('#spbc_button__sync .spbc_success').show(300);\n\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_button__sync .spbc_success').hide(300);}, 2000);\n\t\t\t\t\tif(result.reload)\n\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\tif( spbcSettings.key_changed ){\n\t\tjQuery('#spbc_button__sync').click();\n\t}\n\n\t// Get Key Auto button\n\tjQuery(document).on('click', '#spbc_setting_get_key_auto', function(){\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_get_key_auto'},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: document.getElementById('spbc_setting_get_key_auto' ),\n\t\t\t\tspinner: jQuery('#spbc_setting_get_key_auto .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tjQuery('#spbc_setting_get_key_auto .spbc_success').show(300);\n\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_setting_get_key_auto .spbc_success').hide(300);}, 2000);\n\t\t\t\t\tif(result.reload)\n\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\tif(result.getTemplates) {\n\t\t\t\t\t\tspbcModal.loaded = result.getTemplates;\n\t\t\t\t\t\tspbcModal.open();\n\t\t\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\t// Import settings\n\tjQuery( document ).on('click', '#spbc_settings_templates_import_button', function(){\n\t\tjQuery('#spbc-ajax-result').remove();\n\t\tvar optionSelected = jQuery('option:selected', jQuery('#spbc_settings_templates_import'));\n\t\tvar templateNameInput = jQuery('#spbc_settings_templates_import_name');\n\t\ttemplateNameInput.css('border-color', 'inherit');\n\t\tif( typeof optionSelected.data('id') === \"undefined\" ) {\n\t\t\tconsole.log( 'Attribute \"data-id\" not set for the option.' );\n\t\t\treturn;\n\t\t}\n\t\tvar data = {\n\t\t\t'template_id' : optionSelected.data('id'),\n\t\t\t'template_name' : optionSelected.data('name'),\n\t\t\t'settings' : optionSelected.data('settings')\n\t\t};\n\t\tvar button = this;\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_settings_templates_import', data: data},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: button,\n\t\t\t\tspinner: jQuery('#spbc_settings_templates_import_button .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tif(result.success) {\n\t\t\t\t\t\tjQuery( \"\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t\tjQuery('#spbc_settings_templates_import_button .spbc_success').show(300);\n\t\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_settings_templates_import_button .spbc_success').hide(300);}, 2000);\n\t\t\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsetTimeout(function(){spbcModal.close()}, 2000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery( \"\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\t// Export settings\n\tjQuery( document ).on('click', '#spbc_settings_templates_export_button', function(){\n\t\tjQuery('#spbc-ajax-result').remove();\n\t\tvar optionSelected = jQuery('option:selected', jQuery('#spbc_settings_templates_export'));\n\t\tvar templateNameInput = jQuery('#spbc_settings_templates_export_name');\n\t\ttemplateNameInput.css('border-color', 'inherit');\n\t\tif( typeof optionSelected.data('id') === \"undefined\" ) {\n\t\t\tconsole.log( 'Attribute \"data-id\" not set for the option.' );\n\t\t\treturn;\n\t\t}\n\t\tif( optionSelected.data('id') === 'new_template' ) {\n\t\t\tvar templateName = templateNameInput.val();\n\t\t\tif( templateName === '' ) {\n\t\t\t\ttemplateNameInput.css('border-color', 'red');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\t'template_name' : templateName\n\t\t\t}\n\t\t} else {\n\t\t\tvar data = {\n\t\t\t\t'template_id' : optionSelected.data('id')\n\t\t\t}\n\t\t}\n\t\tvar button = this;\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_settings_templates_export', data: data},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: button,\n\t\t\t\tspinner: jQuery('#spbc_settings_templates_export_button .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tif(result.success) {\n\t\t\t\t\t\tjQuery( \"\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t\tjQuery('#spbc_settings_templates_export_button .spbc_success').show(300);\n\t\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_settings_templates_export_button .spbc_success').hide(300);}, 2000);\n\t\t\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsetTimeout(function(){spbcModal.close()}, 2000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery( \"\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\t// Reset settings\n\tjQuery( document ).on('click', '#spbc_settings_templates_reset_button', function(){\n\t\tvar button = this;\n\t\tspbc_sendAJAXRequest(\n\t\t\t{action: 'spbc_settings_templates_reset'},\n\t\t\t{\n\t\t\t\ttimeout: 25000,\n\t\t\t\tbutton: button,\n\t\t\t\tspinner: jQuery('#spbc_settings_templates_reset_button .spbc_preloader_button' ),\n\t\t\t\tcallback: function(result, data, params, obj){\n\t\t\t\t\tif(result.success) {\n\t\t\t\t\t\tjQuery( \"\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t\tjQuery('#spbc_settings_templates_reset_button .spbc_success').show(300);\n\t\t\t\t\t\tsetTimeout(function(){jQuery('#spbc_settings_templates_reset_button .spbc_success').hide(300);}, 2000);\n\t\t\t\t\t\tdocument.addEventListener(\"spbcModalClosed\", function( e ) {\n\t\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsetTimeout(function(){spbcModal.close()}, 2000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery( \"\" + result.data + \"
\" ).insertAfter( jQuery(button) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t});\n\n\tjQuery(document).on('change', '#spbc_settings_templates_export',function(){\n\t\tvar optionSelected = jQuery(\"option:selected\", this);\n\t\tif ( optionSelected.data(\"id\") === 'new_template' ) {\n\t\t\tjQuery(this).parent().parent().find('#spbc_settings_templates_export_name').show();\n\t\t} else {\n\t\t\tjQuery(this).parent().parent().find('#spbc_settings_templates_export_name').hide();\n\t\t}\n\t});\n\n\t//* TAB_CONTROL\n\t\n\t\tjQuery('.spbc_tab_nav-summary').data('loaded', true); // Summary tab loaded by default\n\t\tjQuery('.spbc_tabs_nav_wrapper').on('click', '.spbc_tab_nav', function(event){\n\t\t\tspbc_switchTab(event.currentTarget);\n\t\t});\n\t\t\n\t\t// Get additional params\n var params = {\n target: location.search.match(/spbc_target=(\\S*?)(&|$)/) ? location.search.match(/spbc_target=(\\S*?)(&|$)/)[1] : null,\n action: location.search.match(/spbc_action=(\\S*?)(&|$)/) ? location.search.match(/spbc_action=(\\S*?)(&|$)/)[1] : null,\n times: location.search.match(/spbc_times=(\\S*?)(&|$)/) ? location.search.match(/spbc_times=(\\S*?)(&|$)/)[1] : 3,\n };\n // Legacy support\n params.target = location.search.match(/spbc_highlight=(\\S*?)(&|$)/) ? location.search.match(/spbc_highlight=(\\S*?)(&|$)/)[1] : params.target;\n params.action = location.search.search(/spbc_highlight=(\\S*?)(&|$)/) != -1\n ? 'highlight'\n : params.action;\n\n\t\t// Get open tab form query\n\t\tvar spbc_tab = document.getElementsByClassName('spbc_tab_nav-' + (location.search.match(/spbc_tab=(\\S*?)(&|$)/) ? location.search.match(/spbc_tab=(\\S*?)(&|$)/)[1] : ''))[0] || null;\n\n\t\t// TAB SWITCHING\n\t\t// Switch by URL\n\t\tif(spbc_tab){\n\n\t\t// Switch to DEBUG\n\t\t}else if( +spbcSettings.debug ){\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-debug')[0];\n\t\t// Switch by DEFAULT\n\t\t}else if( +spbcSettings.wpms && !+spbcSettings.is_main_site){\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-security_log')[0];\n\t\t// Switch if Key is OK and SFW is ON\n\t\t}else if( +spbcSettings.key_is_ok && +spbcSettings.secfw_enabled ){\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-traffic_control')[0];\n\t\t// Switch if Key is OK\n\t\t}else if( +spbcSettings.key_is_ok ){\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-scanner')[0];\n\t\t// Switch if KEY IS BAD\n\t\t}else{\n\t\t\tspbc_tab = document.getElementsByClassName('spbc_tab_nav-settings_general')[0];\n\t\t\tparams = {\n\t\t\t target: 'spbc_key',\n action: 'highlight',\n times: 3,\n };\n\t\t}\n\t\t\n\t\t// Switch tab\n\t\tif(spbc_tab) spbc_switchTab(spbc_tab, params);\n\t\t\n\t//*/ TAB_CONROL END\n\t\n\t//* REFRESH TAB IF ctrl+F5\n\tvar ctrlKeyDown = false;\n\n\tjQuery(document).on(\"keyup\", function(e) {\n\t\tif ((e.which || e.keyCode) == 17) ctrlKeyDown = false;\n\t});\n\n\tjQuery(document).on(\"keydown\", function(e) {\n\t\tif (((e.which || e.keyCode) == 116) && ctrlKeyDown) {\n\t\t\te.preventDefault();\n\n\t\t\tvar active_tab = jQuery('.spbc_tab_nav--active')[0];\n\t\t\tvar tab_name = active_tab.classList[1].replace('spbc_tab_nav-', '');\n\n\t\t\tif (tab_name === 'scanner') return; \n\n\t\t\tjQuery(active_tab).data('loaded', false);\n\n\t\t\tspbc_switchTab(active_tab);\n\n\t\t} else if ((e.which || e.keyCode) == 17) {\n\t ctrlKeyDown = true;\n\t }\n\t});\n\t//*/ REFRESH TAB IF ctrl+F5 END\n\n\t/**\n * Change cleantalk account email\n */\n jQuery(document).on('click', '#spbc-change-account-email', function(e) {\n e.preventDefault();\n\n let $this = jQuery(this);\n let accountEmailField = jQuery('#spbc-account-email');\n let accountEmail = accountEmailField.text();\n\n\t\tspbcToggleClass($this, 'active');\n\n if ($this.hasClass('active')) {\n $this.text($this.data('save-text'));\n accountEmailField.attr('contenteditable', 'true');\n\t\t\taccountEmailField.focus();\n accountEmailField.on('keydown', function(e) {\n if (e.code === 'Enter') {\n e.preventDefault();\n }\n });\n accountEmailField.on('input', function(e) {\n if (e.inputType === 'insertParagraph') {\n e.preventDefault();\n }\n });\n } else {\n spbc_sendAJAXRequest(\n {\n action: 'spbc_update_account_email',\n accountEmail: accountEmail,\n },\n {\n timeout: 5000,\n callback: function(result, data, params, obj) {\n if (result.success !== undefined && result.success === 'ok') {\n if (result.manuallyLink !== undefined) {\n jQuery('#spbc-key-manually-link').attr('href', result.manuallyLink);\n }\n }\n\n if (result.error !== undefined) {\n\t\t\t\t\t\t\n jQuery('#spbc-account-email').css('border-color', 'red');\n }\n },\n\t\t\t\t\terrorOutput: function(msg) {\n\t\t\t\t\t\tspbcModal.loaded = msg;\n\t\t\t\t\t\tspbcModal.open();\n\t\t\t\t\t}\n },\n );\n\n accountEmailField.attr('contenteditable', 'false');\n $this.text($this.data('default-text'));\n }\n });\n});\n\n/**\n * @param {string} className\n */\nfunction spbcToggleClass(arr, className) {\n\tfor (let i=0; i