Version Description
Download this release
Release Info
Developer | AITpro |
Plugin | BulletProof Security |
Version | 4.8 |
Comparing to | |
See all releases |
Code changes from version 4.7 to 4.8
- admin/core/core-forms.php +2 -2
- admin/core/core.php +1 -0
- admin/css/bps-black-ui-theme.css +10 -0
- admin/css/bps-blue-ui-theme.css +10 -0
- admin/css/bps-grey-ui-theme.css +10 -0
- admin/htaccess/mscan-pattern-match.php +5 -5
- admin/htaccess/secure.htaccess +1 -1
- admin/htaccess/wpadmin-secure.htaccess +1 -1
- admin/includes/admin.php +163 -15
- admin/js/bps-mscan-ajax.js +5 -3
- admin/mscan/mscan-help-text.php +76 -33
- admin/mscan/mscan-iframe.php +356 -0
- admin/mscan/mscan.php +2120 -614
- admin/wizard/wizard.php +1 -1
- bulletproof-security.php +27 -20
- includes/functions.php +1 -1
- includes/general-functions.php +174 -83
- includes/hud-dismiss-functions.php +47 -28
- includes/mscan-ajax-functions.php +846 -598
- includes/mscan-plugin-hash-maker.php +783 -0
- includes/mscan-theme-hash-maker.php +685 -0
- includes/mscan-wp-core-hash-maker.php +335 -0
- languages/bulletproof-security.pot +1654 -1166
- readme.txt +5 -4
admin/core/core-forms.php
CHANGED
@@ -641,7 +641,7 @@ if ( isset( $_POST['bpsResetDismissSubmit'] ) && current_user_can('manage_option
|
|
641 |
echo $text;
|
642 |
}
|
643 |
*/
|
644 |
-
|
645 |
if ( ! delete_user_meta($user_id, 'bps_ignore_mscan_notice') ) {
|
646 |
$text = __('The MScan First Run Notice is NOT set. Nothing to reset.', 'bulletproof-security').'<br>';
|
647 |
echo $text;
|
@@ -649,7 +649,7 @@ if ( isset( $_POST['bpsResetDismissSubmit'] ) && current_user_can('manage_option
|
|
649 |
$text = '<span style="color:#008000;">'.__('Success! The MScan First Run Notice is reset.', 'bulletproof-security').'</span><br>';
|
650 |
echo $text;
|
651 |
}
|
652 |
-
|
653 |
if ( ! delete_user_meta($user_id, 'bps_ignore_jtc_lite_notice') ) {
|
654 |
$text = __('The JTC-Lite New Feature Notice is NOT set. Nothing to reset.', 'bulletproof-security').'<br>';
|
655 |
echo $text;
|
641 |
echo $text;
|
642 |
}
|
643 |
*/
|
644 |
+
/*
|
645 |
if ( ! delete_user_meta($user_id, 'bps_ignore_mscan_notice') ) {
|
646 |
$text = __('The MScan First Run Notice is NOT set. Nothing to reset.', 'bulletproof-security').'<br>';
|
647 |
echo $text;
|
649 |
$text = '<span style="color:#008000;">'.__('Success! The MScan First Run Notice is reset.', 'bulletproof-security').'</span><br>';
|
650 |
echo $text;
|
651 |
}
|
652 |
+
*/
|
653 |
if ( ! delete_user_meta($user_id, 'bps_ignore_jtc_lite_notice') ) {
|
654 |
$text = __('The JTC-Lite New Feature Notice is NOT set. Nothing to reset.', 'bulletproof-security').'<br>';
|
655 |
echo $text;
|
admin/core/core.php
CHANGED
@@ -2191,6 +2191,7 @@ $text = '<h3><span class="blue-bold">'.__('The Complete Website Security Solutio
|
|
2191 |
|
2192 |
<div class="pro-links">
|
2193 |
<?php
|
|
|
2194 |
echo sprintf( __( '<a href="%2$s" target="_blank" title="Link Opens in New Browser Window">Whats New in BPS Pro %1$s</a>' ), '15.3', 'https://www.ait-pro.com/aitpro-blog/5678/bulletproof-security-pro/whats-new-in-bulletproof-security-pro-15-3/' ).'<br>';
|
2195 |
echo sprintf( __( '<a href="%2$s" target="_blank" title="Link Opens in New Browser Window">Whats New in BPS Pro %1$s</a>' ), '15.2', 'https://www.ait-pro.com/aitpro-blog/5674/bulletproof-security-pro/whats-new-in-bulletproof-security-pro-15-2/' ).'<br>';
|
2196 |
echo sprintf( __( '<a href="%2$s" target="_blank" title="Link Opens in New Browser Window">Whats New in BPS Pro %1$s</a>' ), '15.1', 'https://www.ait-pro.com/aitpro-blog/5671/bulletproof-security-pro/whats-new-in-bulletproof-security-pro-15-1/' ).'<br>';
|
2191 |
|
2192 |
<div class="pro-links">
|
2193 |
<?php
|
2194 |
+
echo sprintf( __( '<a href="%2$s" target="_blank" title="Link Opens in New Browser Window">Whats New in BPS Pro %1$s</a>' ), '15.4', 'https://www.ait-pro.com/aitpro-blog/5689/bulletproof-security-pro/whats-new-in-bulletproof-security-pro-15-4/' ).'<br>';
|
2195 |
echo sprintf( __( '<a href="%2$s" target="_blank" title="Link Opens in New Browser Window">Whats New in BPS Pro %1$s</a>' ), '15.3', 'https://www.ait-pro.com/aitpro-blog/5678/bulletproof-security-pro/whats-new-in-bulletproof-security-pro-15-3/' ).'<br>';
|
2196 |
echo sprintf( __( '<a href="%2$s" target="_blank" title="Link Opens in New Browser Window">Whats New in BPS Pro %1$s</a>' ), '15.2', 'https://www.ait-pro.com/aitpro-blog/5674/bulletproof-security-pro/whats-new-in-bulletproof-security-pro-15-2/' ).'<br>';
|
2197 |
echo sprintf( __( '<a href="%2$s" target="_blank" title="Link Opens in New Browser Window">Whats New in BPS Pro %1$s</a>' ), '15.1', 'https://www.ait-pro.com/aitpro-blog/5671/bulletproof-security-pro/whats-new-in-bulletproof-security-pro-15-1/' ).'<br>';
|
admin/css/bps-black-ui-theme.css
CHANGED
@@ -146,11 +146,21 @@ span.tooltip-250-80:hover {z-index:10;}
|
|
146 |
span.tooltip-250-80 img:hover {z-index:10;}
|
147 |
span.tooltip-250-80 span {display:none;position:absolute;bottom:0;left:0;right:0;}
|
148 |
span.tooltip-250-80:hover span {width:250px;height:80px;display:block;position:absolute;top:0px;left:30px;right:0;color:#000;background-color:#dfecf2;border:1px solid #999;font-size:1em;font-weight:600;padding:2px 5px;margin-top:2px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);}
|
|
|
|
|
|
|
|
|
|
|
149 |
span.tooltip-350-120 {display:inline-block;position:relative;}
|
150 |
span.tooltip-350-120:hover {z-index:10;}
|
151 |
span.tooltip-350-120 img:hover {z-index:10;}
|
152 |
span.tooltip-350-120 span {display:none;position:absolute;bottom:0;left:0;right:0;}
|
153 |
span.tooltip-350-120:hover span {width:350px;height:120px;display:block;position:absolute;top:0px;left:30px;right:0;color:#000;background-color:#dfecf2;border:1px solid #999;font-size:1em;font-weight:600;padding:2px 5px;margin-top:2px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);}
|
|
|
|
|
|
|
|
|
|
|
154 |
span.tooltip-350-225 {display:inline-block;position:relative;}
|
155 |
span.tooltip-350-225:hover {z-index:999;}
|
156 |
span.tooltip-350-225 img:hover {z-index:999;}
|
146 |
span.tooltip-250-80 img:hover {z-index:10;}
|
147 |
span.tooltip-250-80 span {display:none;position:absolute;bottom:0;left:0;right:0;}
|
148 |
span.tooltip-250-80:hover span {width:250px;height:80px;display:block;position:absolute;top:0px;left:30px;right:0;color:#000;background-color:#dfecf2;border:1px solid #999;font-size:1em;font-weight:600;padding:2px 5px;margin-top:2px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);}
|
149 |
+
span.tooltip-250-120 {display:inline-block;position:relative;}
|
150 |
+
span.tooltip-250-120:hover {z-index:10;}
|
151 |
+
span.tooltip-250-120 img:hover {z-index:10;}
|
152 |
+
span.tooltip-250-120 span {display:none;position:absolute;bottom:0;left:0;right:0;}
|
153 |
+
span.tooltip-250-120:hover span {width:250px;height:120px;display:block;position:absolute;top:0px;left:30px;right:0;color:#000;background-color:#dfecf2;border:1px solid #999;font-size:1em;font-weight:600;padding:2px 5px;margin-top:2px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);}
|
154 |
span.tooltip-350-120 {display:inline-block;position:relative;}
|
155 |
span.tooltip-350-120:hover {z-index:10;}
|
156 |
span.tooltip-350-120 img:hover {z-index:10;}
|
157 |
span.tooltip-350-120 span {display:none;position:absolute;bottom:0;left:0;right:0;}
|
158 |
span.tooltip-350-120:hover span {width:350px;height:120px;display:block;position:absolute;top:0px;left:30px;right:0;color:#000;background-color:#dfecf2;border:1px solid #999;font-size:1em;font-weight:600;padding:2px 5px;margin-top:2px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);}
|
159 |
+
span.tooltip-350-150 {display:inline-block;position:relative;}
|
160 |
+
span.tooltip-350-150:hover {z-index:10;}
|
161 |
+
span.tooltip-350-150 img:hover {z-index:10;}
|
162 |
+
span.tooltip-350-150 span {display:none;position:absolute;bottom:0;left:0;right:0;}
|
163 |
+
span.tooltip-350-150:hover span {width:350px;height:150px;display:block;position:absolute;top:0px;left:30px;right:0;color:#000;background-color:#dfecf2;border:1px solid #999;font-size:1em;font-weight:600;padding:2px 5px;margin-top:2px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);}
|
164 |
span.tooltip-350-225 {display:inline-block;position:relative;}
|
165 |
span.tooltip-350-225:hover {z-index:999;}
|
166 |
span.tooltip-350-225 img:hover {z-index:999;}
|
admin/css/bps-blue-ui-theme.css
CHANGED
@@ -141,11 +141,21 @@ span.tooltip-250-80:hover {z-index:10;}
|
|
141 |
span.tooltip-250-80 img:hover {z-index:10;}
|
142 |
span.tooltip-250-80 span {display:none;position:absolute;bottom:0;left:0;right:0;}
|
143 |
span.tooltip-250-80:hover span {width:250px;height:80px;display:block;position:absolute;top:0px;left:30px;right:0;color:#000;background-color:#dfecf2;border:1px solid #999;font-size:1em;font-weight:600;padding:2px 5px;margin-top:2px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);}
|
|
|
|
|
|
|
|
|
|
|
144 |
span.tooltip-350-120 {display:inline-block;position:relative;}
|
145 |
span.tooltip-350-120:hover {z-index:10;}
|
146 |
span.tooltip-350-120 img:hover {z-index:10;}
|
147 |
span.tooltip-350-120 span {display:none;position:absolute;bottom:0;left:0;right:0;}
|
148 |
span.tooltip-350-120:hover span {width:350px;height:120px;display:block;position:absolute;top:0px;left:30px;right:0;color:#000;background-color:#dfecf2;border:1px solid #999;font-size:1em;font-weight:600;padding:2px 5px;margin-top:2px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);}
|
|
|
|
|
|
|
|
|
|
|
149 |
span.tooltip-350-225 {display:inline-block;position:relative;}
|
150 |
span.tooltip-350-225:hover {z-index:999;}
|
151 |
span.tooltip-350-225 img:hover {z-index:999;}
|
141 |
span.tooltip-250-80 img:hover {z-index:10;}
|
142 |
span.tooltip-250-80 span {display:none;position:absolute;bottom:0;left:0;right:0;}
|
143 |
span.tooltip-250-80:hover span {width:250px;height:80px;display:block;position:absolute;top:0px;left:30px;right:0;color:#000;background-color:#dfecf2;border:1px solid #999;font-size:1em;font-weight:600;padding:2px 5px;margin-top:2px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);}
|
144 |
+
span.tooltip-250-120 {display:inline-block;position:relative;}
|
145 |
+
span.tooltip-250-120:hover {z-index:10;}
|
146 |
+
span.tooltip-250-120 img:hover {z-index:10;}
|
147 |
+
span.tooltip-250-120 span {display:none;position:absolute;bottom:0;left:0;right:0;}
|
148 |
+
span.tooltip-250-120:hover span {width:250px;height:120px;display:block;position:absolute;top:0px;left:30px;right:0;color:#000;background-color:#dfecf2;border:1px solid #999;font-size:1em;font-weight:600;padding:2px 5px;margin-top:2px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);}
|
149 |
span.tooltip-350-120 {display:inline-block;position:relative;}
|
150 |
span.tooltip-350-120:hover {z-index:10;}
|
151 |
span.tooltip-350-120 img:hover {z-index:10;}
|
152 |
span.tooltip-350-120 span {display:none;position:absolute;bottom:0;left:0;right:0;}
|
153 |
span.tooltip-350-120:hover span {width:350px;height:120px;display:block;position:absolute;top:0px;left:30px;right:0;color:#000;background-color:#dfecf2;border:1px solid #999;font-size:1em;font-weight:600;padding:2px 5px;margin-top:2px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);}
|
154 |
+
span.tooltip-350-150 {display:inline-block;position:relative;}
|
155 |
+
span.tooltip-350-150:hover {z-index:10;}
|
156 |
+
span.tooltip-350-150 img:hover {z-index:10;}
|
157 |
+
span.tooltip-350-150 span {display:none;position:absolute;bottom:0;left:0;right:0;}
|
158 |
+
span.tooltip-350-150:hover span {width:350px;height:150px;display:block;position:absolute;top:0px;left:30px;right:0;color:#000;background-color:#dfecf2;border:1px solid #999;font-size:1em;font-weight:600;padding:2px 5px;margin-top:2px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);}
|
159 |
span.tooltip-350-225 {display:inline-block;position:relative;}
|
160 |
span.tooltip-350-225:hover {z-index:999;}
|
161 |
span.tooltip-350-225 img:hover {z-index:999;}
|
admin/css/bps-grey-ui-theme.css
CHANGED
@@ -147,11 +147,21 @@ span.tooltip-250-80:hover {z-index:10;}
|
|
147 |
span.tooltip-250-80 img:hover {z-index:10;}
|
148 |
span.tooltip-250-80 span {display:none;position:absolute;bottom:0;left:0;right:0;}
|
149 |
span.tooltip-250-80:hover span {width:250px;height:80px;display:block;position:absolute;top:0px;left:30px;right:0;color:#000;background-color:#dfecf2;border:1px solid #999;font-size:1em;font-weight:600;padding:2px 5px;margin-top:2px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);}
|
|
|
|
|
|
|
|
|
|
|
150 |
span.tooltip-350-120 {display:inline-block;position:relative;}
|
151 |
span.tooltip-350-120:hover {z-index:10;}
|
152 |
span.tooltip-350-120 img:hover {z-index:10;}
|
153 |
span.tooltip-350-120 span {display:none;position:absolute;bottom:0;left:0;right:0;}
|
154 |
span.tooltip-350-120:hover span {width:350px;height:120px;display:block;position:absolute;top:0px;left:30px;right:0;color:#000;background-color:#dfecf2;border:1px solid #999;font-size:1em;font-weight:600;padding:2px 5px;margin-top:2px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);}
|
|
|
|
|
|
|
|
|
|
|
155 |
span.tooltip-350-225 {display:inline-block;position:relative;}
|
156 |
span.tooltip-350-225:hover {z-index:999;}
|
157 |
span.tooltip-350-225 img:hover {z-index:999;}
|
147 |
span.tooltip-250-80 img:hover {z-index:10;}
|
148 |
span.tooltip-250-80 span {display:none;position:absolute;bottom:0;left:0;right:0;}
|
149 |
span.tooltip-250-80:hover span {width:250px;height:80px;display:block;position:absolute;top:0px;left:30px;right:0;color:#000;background-color:#dfecf2;border:1px solid #999;font-size:1em;font-weight:600;padding:2px 5px;margin-top:2px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);}
|
150 |
+
span.tooltip-250-120 {display:inline-block;position:relative;}
|
151 |
+
span.tooltip-250-120:hover {z-index:10;}
|
152 |
+
span.tooltip-250-120 img:hover {z-index:10;}
|
153 |
+
span.tooltip-250-120 span {display:none;position:absolute;bottom:0;left:0;right:0;}
|
154 |
+
span.tooltip-250-120:hover span {width:250px;height:120px;display:block;position:absolute;top:0px;left:30px;right:0;color:#000;background-color:#dfecf2;border:1px solid #999;font-size:1em;font-weight:600;padding:2px 5px;margin-top:2px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);}
|
155 |
span.tooltip-350-120 {display:inline-block;position:relative;}
|
156 |
span.tooltip-350-120:hover {z-index:10;}
|
157 |
span.tooltip-350-120 img:hover {z-index:10;}
|
158 |
span.tooltip-350-120 span {display:none;position:absolute;bottom:0;left:0;right:0;}
|
159 |
span.tooltip-350-120:hover span {width:350px;height:120px;display:block;position:absolute;top:0px;left:30px;right:0;color:#000;background-color:#dfecf2;border:1px solid #999;font-size:1em;font-weight:600;padding:2px 5px;margin-top:2px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);}
|
160 |
+
span.tooltip-350-150 {display:inline-block;position:relative;}
|
161 |
+
span.tooltip-350-150:hover {z-index:10;}
|
162 |
+
span.tooltip-350-150 img:hover {z-index:10;}
|
163 |
+
span.tooltip-350-150 span {display:none;position:absolute;bottom:0;left:0;right:0;}
|
164 |
+
span.tooltip-350-150:hover span {width:350px;height:150px;display:block;position:absolute;top:0px;left:30px;right:0;color:#000;background-color:#dfecf2;border:1px solid #999;font-size:1em;font-weight:600;padding:2px 5px;margin-top:2px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow:3px 3px 5px -1px rgba(153,153,153,0.7);}
|
165 |
span.tooltip-350-225 {display:inline-block;position:relative;}
|
166 |
span.tooltip-350-225:hover {z-index:999;}
|
167 |
span.tooltip-350-225 img:hover {z-index:999;}
|
admin/htaccess/mscan-pattern-match.php
CHANGED
@@ -1,21 +1,21 @@
|
|
1 |
<?php
|
2 |
/******************************************************* */
|
3 |
/* MScan Pattern Matching code
|
4 |
-
/* Version:
|
5 |
/* This file is called once and deleted:
|
6 |
/* The MScan pattern matching code is saved to the WP DB
|
7 |
/* on BPS upgrades and new installations and then deleted.
|
8 |
/******************************************************* */
|
9 |
|
10 |
## MScan File Scan patterns
|
11 |
-
|
12 |
-
$js_pattern = '/(\|MakeFrameEx\||\|yahoo_api\||\|exec\||ww=window|ww\.document|visibility:hidden|rotatingtext\[\d\]=\"I\sMISS\sYOU\"|\(!l1l&&!ll1&&!lll\)|s(\W){2,6}c(\W){2,6}r|(\'|")i(\'|")(\.|\+|\s)(\+|\'|"|\.)(\s|f)(\'|")(f|\+|\.)|scr("|\')(|\s)\+(|\s)("|\')ipt|(\\\x(\d|\w[^a])(\d[^0]|\w))+|((%\d(\w|\d){1})+%)|%\d(\w|\d){3}|\(\'hideme\'\)|\["style"\]\["visibility"\]|useragent\.match\(\/(\^(\w|\d){1,}\.\*\|)+|xtrackPageview|document\.write\(\'<\'\+x\[\d\]\+\'>|\\\u00(\d|\w){5,}|(\\\x22(.*)\\\x22)+|(\$(\d){2}){2}|(0|1){8}|_0x(\d|\w){4}|lave(\(|\))|(\(|\))lave)/i';
|
13 |
|
14 |
$htaccess_pattern = '/(RewriteCond\s%\{HTTP_REFERER\}\s(.*)[^!](google|yahoo|aol|bing|ask|facebook|twitter|msn)|ErrorDocument\s(400|403|404)\s(http|https|):|(RewriteCond\s%\{HTTP_USER_AGENT\}(.*\]\s*)){4}|RewriteRule(.*)(\w|\d){1,8}\.php\?(\w|\d){1,6}=(\$|)(\s|\d){1,3}|RewriteRule(.*)\(htm\|pdf\|jar\)|RewriteRule(.*)\{QUERY_STRING\})/i';
|
15 |
|
16 |
-
//
|
17 |
-
$php_pattern = '/(base64_decode\(|edoced_46esab|base\'\.\(\d{1,3}(|\s)(\*|\/)(|\s)\d{1,3}\)\.\'_de\'\.\'code|("|\')base(.*)\.(.*)64(.*)(_|\.|)decode("|\')|gzinflate\(|O0|ev("|\')(.*)\.("|\')al\(|lave(\(|\))|(\(|\))lave|preg_replace\(("|\')(\/(\w{1,}|\.\*))\/e|(\\\x(\d|\w){2,3}\\\x(\d|\w){2,3})|__halt_compiler|k2ll33d|\(!l1l&&!ll1&&!lll\)|\|iframe\||\|MakeFrameEx\||\|yahoo_api\||ww=window|ww\.document|ekibastos|scr("|\')(|\s)\+(|\s)("|\')ipt|\(\'hideme\'\)|\["style"\]\["visibility"\]|useragent\.match\(\/(\^(\w|\d){1,}\.\*\|)+|xtrackPageview|\$_COOKIE(|\s)\[str_replace\(.*\$_SERVER\[\'HTTP_HOST\'\]\)\]|\$_\w___\w|\'Windows-1251\'|document\.write\(\'<\'\+x\[\d\]\+\'>|\+(|\s)(\'|")\w(\'|")(|\s)\+|(\\\x22(.*)\\\x22)+|(|\[)_0x(\w|\d){1,6}\[\d{1,3}\]{1,2}|\\\142\\\141\\\x73|\\\u00(\d|\w){5,}|(\'|")i(\'|")(\.|\+|\s)(\+|\'|"|\.)(\s|f)(\'|")(f|\+|\.)|s(\W){2,6}c(\W){2,6}r|(\$\w{1,3}\{\d{1,2}\}(|\s)\.(|\s)){3}|\$<(\d|\w){2}>|\$_(\/\*)|%3C%21|%3Cscript%3E|%253C|(%\d(\w|\d)){5}|\$(\d|\w){1,}\[\'(\d|\w){1,}\'\]\[(\d){1,3}\](\s\.|\.)(\$|\s\$)|(\$(\w){2}\[\d{1,2}\]\.)+|(0|1){8}|_0x(\d|\w){4}|\(64\)(\s|)\.(\s|)(\'|")_(\'|"))/i';
|
18 |
|
|
|
19 |
$image_pattern = '/(<\?php|eval\(|exec\(|popen\(|create_function\(|passthru\(|shell_exec\(|proc_open\(|pcntl_exec\(|fopen\(|fputs\(|file_put_contents\(|fwrite\(|gzinflate\(|base64_decode\(|isset|\$_REQUEST|\$_FILES|\$_GET|\$_POST|\$_SERVER|\$_SESSION|system\(|\'cmd\'|__halt_compiler|<script|javascript|function|createElement|<html>|visibility:|<textarea)/i';
|
20 |
|
21 |
## MScan Database Scan patterns
|
1 |
<?php
|
2 |
/******************************************************* */
|
3 |
/* MScan Pattern Matching code
|
4 |
+
/* Version: 2.0
|
5 |
/* This file is called once and deleted:
|
6 |
/* The MScan pattern matching code is saved to the WP DB
|
7 |
/* on BPS upgrades and new installations and then deleted.
|
8 |
/******************************************************* */
|
9 |
|
10 |
## MScan File Scan patterns
|
11 |
+
$js_pattern = '/(\|MakeFrameEx\||\|yahoo_api\||\|exec\||ww=window|ww\.document|visibility:hidden|rotatingtext\[\d\]=\"I\sMISS\sYOU\"|\(!l1l&&!ll1&&!lll\)|s(\W){2,6}c(\W){2,6}r|(\'|")i(\'|")(\.|\+|\s)(\+|\'|"|\.)(\s|f)(\'|")(f|\+|\.)|scr("|\')(|\s)\+(|\s)("|\')ipt|(\\\x(\d|\w[^a])(\d[^0]|\w))+|((%\d(\w|\d){1})+%)|%\d(\w|\d){3}|\(\'hideme\'\)|\["style"\]\["visibility"\]|useragent\.match\(\/(\^(\w|\d){1,}\.\*\|)+|xtrackPageview|document\.write\(\'<\'\+x\[\d\]\+\'>|\\\u00(\d|\w){5,}|(\\\x22(.*)\\\x22)+|(\$(\d){2}){2}|(0|1){8}|_0x(\d|\w){4}|lave(\(|\))|(\(|\))lave|\|iframe\|)/i';
|
|
|
12 |
|
13 |
$htaccess_pattern = '/(RewriteCond\s%\{HTTP_REFERER\}\s(.*)[^!](google|yahoo|aol|bing|ask|facebook|twitter|msn)|ErrorDocument\s(400|403|404)\s(http|https|):|(RewriteCond\s%\{HTTP_USER_AGENT\}(.*\]\s*)){4}|RewriteRule(.*)(\w|\d){1,8}\.php\?(\w|\d){1,6}=(\$|)(\s|\d){1,3}|RewriteRule(.*)\(htm\|pdf\|jar\)|RewriteRule(.*)\{QUERY_STRING\})/i';
|
14 |
|
15 |
+
// 4.8: New patterns added
|
16 |
+
$php_pattern = '/(base64_decode\(|edoced_46esab|base\'\.\(\d{1,3}(|\s)(\*|\/)(|\s)\d{1,3}\)\.\'_de\'\.\'code|("|\')base(.*)\.(.*)64(.*)(_|\.|)decode("|\')|gzinflate\(|O0|ev("|\')(.*)\.("|\')al\(|lave(\(|\))|(\(|\))lave|preg_replace\(("|\')(\/(\w{1,}|\.\*))\/e|(\\\x(\d|\w){2,3}\\\x(\d|\w){2,3})|__halt_compiler|k2ll33d|\(!l1l&&!ll1&&!lll\)|\|iframe\||\|MakeFrameEx\||\|yahoo_api\||ww=window|ww\.document|ekibastos|scr("|\')(|\s)\+(|\s)("|\')ipt|\(\'hideme\'\)|\["style"\]\["visibility"\]|useragent\.match\(\/(\^(\w|\d){1,}\.\*\|)+|xtrackPageview|\$_COOKIE(|\s)\[str_replace\(.*\$_SERVER\[\'HTTP_HOST\'\]\)\]|\$_\w___\w|\'Windows-1251\'|document\.write\(\'<\'\+x\[\d\]\+\'>|\+(|\s)(\'|")\w(\'|")(|\s)\+|(\\\x22(.*)\\\x22)+|(|\[)_0x(\w|\d){1,6}\[\d{1,3}\]{1,2}|\\\142\\\141\\\x73|\\\u00(\d|\w){5,}|(\'|")i(\'|")(\.|\+|\s)(\+|\'|"|\.)(\s|f)(\'|")(f|\+|\.)|s(\W){2,6}c(\W){2,6}r|(\$\w{1,3}\{\d{1,2}\}(|\s)\.(|\s)){3}|\$<(\d|\w){2}>|\$_(\/\*)|%3C%21|%3Cscript%3E|%253C|(%\d(\w|\d)){5}|\$(\d|\w){1,}\[\'(\d|\w){1,}\'\]\[(\d){1,3}\](\s\.|\.)(\$|\s\$)|(\$(\w){2}\[\d{1,2}\]\.)+|(0|1){8}|_0x(\d|\w){4}|\(64\)(\s|)\.(\s|)(\'|")_(\'|")|([a-z0-9]){40,}\+|\$_REQUEST\[\'cmd\'\]|\$_GET\[\'cmd\'\]|system\(|shell_exec\(|passthru\(|exec\(|eval\(|ALREADY_RUN_|hastebin|((chr\()\d+\)\.){1,}|((\\\\|\\\\\\\)\d+[a-z]+([0-9]|)){1,}|\$([a-z0-9])+\{\d+\}(\,|\.){1,})/i';
|
17 |
|
18 |
+
// 4.8: No longer scanning image files
|
19 |
$image_pattern = '/(<\?php|eval\(|exec\(|popen\(|create_function\(|passthru\(|shell_exec\(|proc_open\(|pcntl_exec\(|fopen\(|fputs\(|file_put_contents\(|fwrite\(|gzinflate\(|base64_decode\(|isset|\$_REQUEST|\$_FILES|\$_GET|\$_POST|\$_SERVER|\$_SESSION|system\(|\'cmd\'|__halt_compiler|<script|javascript|function|createElement|<html>|visibility:|<textarea)/i';
|
20 |
|
21 |
## MScan Database Scan patterns
|
admin/htaccess/secure.htaccess
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
# BULLETPROOF 4.
|
2 |
|
3 |
# PHP/PHP.INI HANDLER/CACHE CODE
|
4 |
# Use BPS Custom Code to add php/php.ini Handler and Cache htaccess code and to save it permanently.
|
1 |
+
# BULLETPROOF 4.8 SECURE .HTACCESS
|
2 |
|
3 |
# PHP/PHP.INI HANDLER/CACHE CODE
|
4 |
# Use BPS Custom Code to add php/php.ini Handler and Cache htaccess code and to save it permanently.
|
admin/htaccess/wpadmin-secure.htaccess
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
# BULLETPROOF 4.
|
2 |
|
3 |
# DO NOT ADD URL REWRITING IN THIS FILE OR WORDPRESS WILL BREAK
|
4 |
# RewriteRule ^(.*)$ - [F] works in /wp-admin without breaking WordPress
|
1 |
+
# BULLETPROOF 4.8 WP-ADMIN SECURE .HTACCESS
|
2 |
|
3 |
# DO NOT ADD URL REWRITING IN THIS FILE OR WORDPRESS WILL BREAK
|
4 |
# RewriteRule ^(.*)$ - [F] works in /wp-admin without breaking WordPress
|
admin/includes/admin.php
CHANGED
@@ -125,7 +125,7 @@ global $wpdb, $wp_version, $blog_id;
|
|
125 |
}
|
126 |
}
|
127 |
|
128 |
-
// Whitelist BPS DB options: Total:
|
129 |
register_setting('bulletproof_security_options', 'bulletproof_security_options', 'bulletproof_security_options_validate');
|
130 |
register_setting('bulletproof_security_options_SLF', 'bulletproof_security_options_SLF', 'bulletproof_security_options_validate_SLF');
|
131 |
register_setting('bulletproof_security_options_gdpr', 'bulletproof_security_options_gdpr', 'bulletproof_security_options_validate_gdpr');
|
@@ -138,17 +138,25 @@ register_setting('bulletproof_security_options_customcode', 'bulletproof_securit
|
|
138 |
register_setting('bulletproof_security_options_mu_sysinfo', 'bulletproof_security_options_mu_sysinfo', 'bulletproof_security_options_validate_mu_sysinfo');
|
139 |
register_setting('bulletproof_security_options_autoupdate', 'bulletproof_security_options_autoupdate', 'bulletproof_security_options_validate_autoupdate');
|
140 |
register_setting('bulletproof_security_options_wizard_free', 'bulletproof_security_options_wizard_free', 'bulletproof_security_options_validate_wizard_free');
|
|
|
141 |
register_setting('bulletproof_security_options_MScan_status', 'bulletproof_security_options_MScan_status', 'bulletproof_security_options_validate_MScan_status');
|
|
|
142 |
register_setting('bulletproof_security_options_mod_security', 'bulletproof_security_options_mod_security', 'bulletproof_security_options_validate_mod_security');
|
143 |
register_setting('bulletproof_security_options_pop_uninstall', 'bulletproof_security_options_pop_uninstall', 'bulletproof_security_options_validate_pop_uninstall');
|
144 |
register_setting('bulletproof_security_options_customcode_WPA', 'bulletproof_security_options_customcode_WPA', 'bulletproof_security_options_validate_customcode_WPA');
|
145 |
register_setting('bulletproof_security_options_apache_modules', 'bulletproof_security_options_apache_modules', 'bulletproof_security_options_validate_apache_modules');
|
146 |
register_setting('bulletproof_security_options_hidden_plugins', 'bulletproof_security_options_hidden_plugins', 'bulletproof_security_options_validate_hidden_plugins');
|
147 |
register_setting('bulletproof_security_options_mscan_patterns', 'bulletproof_security_options_mscan_patterns', 'bulletproof_security_options_validate_mscan_patterns');
|
148 |
-
register_setting('
|
|
|
|
|
|
|
|
|
149 |
register_setting('bulletproof_security_options_sec_log_post_limit', 'bulletproof_security_options_sec_log_post_limit', 'bulletproof_security_options_validate_sec_log_post_limit');
|
150 |
register_setting('bulletproof_security_options_login_security_jtc', 'bulletproof_security_options_login_security_jtc', 'bulletproof_security_options_validate_login_security_jtc');
|
151 |
register_setting('bulletproof_security_options_mu_wp_autoupdate', 'bulletproof_security_options_mu_wp_autoupdate', 'bulletproof_security_options_validate_mu_wp_autoupdate');
|
|
|
|
|
152 |
register_setting('bulletproof_security_options_wizard_autofix', 'bulletproof_security_options_wizard_autofix', 'bulletproof_security_options_validate_wizard_autofix');
|
153 |
register_setting('bulletproof_security_options_status_display', 'bulletproof_security_options_status_display', 'bulletproof_security_options_validate_status_display');
|
154 |
register_setting('bulletproof_security_options_login_security', 'bulletproof_security_options_login_security', 'bulletproof_security_options_validate_login_security');
|
@@ -210,6 +218,30 @@ register_setting('bulletproof_security_options_fsp', 'bulletproof_security_optio
|
|
210 |
copy($wp_hashes_file_master, $wp_hashes_file);
|
211 |
}
|
212 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
213 |
// Create the MScan log file in /logs
|
214 |
$bpsProMScanLog = WP_PLUGIN_DIR . '/bulletproof-security/admin/htaccess/mscan_log.txt';
|
215 |
$bpsProMScanLogARQ = WP_CONTENT_DIR . '/bps-backup/logs/mscan_log.txt';
|
@@ -262,16 +294,15 @@ register_setting('bulletproof_security_options_fsp', 'bulletproof_security_optio
|
|
262 |
'mscan_pattern_match_db' => $mscan_pattern_match_db
|
263 |
);
|
264 |
|
265 |
-
|
266 |
-
|
267 |
-
foreach( $mscan_pattern_match_options as $key => $value ) {
|
268 |
-
update_option('bulletproof_security_options_mscan_patterns', $mscan_pattern_match_options);
|
269 |
-
}
|
270 |
-
|
271 |
-
unlink($mscan_pattern_match_master);
|
272 |
-
} else {
|
273 |
-
unlink($mscan_pattern_match_master);
|
274 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
275 |
}
|
276 |
|
277 |
if ( file_exists($mscan_pattern_match_file) ) {
|
@@ -399,7 +430,9 @@ global $blog_id;
|
|
399 |
add_submenu_page('bulletproof-security/admin/core/core.php', __('Email|Log Settings', 'bulletproof-security'), __('Email|Log Settings', 'bulletproof-security'), 'manage_options', 'bulletproof-security/admin/email-log-settings/email-log-settings.php' );
|
400 |
add_submenu_page('bulletproof-security/admin/core/core.php', __('UI|UX Settings', 'bulletproof-security'), __('UI|UX Settings', 'bulletproof-security'), 'manage_options', 'bulletproof-security/admin/theme-skin/theme-skin.php' );
|
401 |
add_submenu_page('bulletproof-security/admin/core/core.php', __('Setup Wizard', 'bulletproof-security'), __('Setup Wizard', 'bulletproof-security'), 'manage_options', 'bulletproof-security/admin/wizard/wizard.php' );
|
402 |
-
|
|
|
|
|
403 |
// Do not display a submenu|link: jQuery UI Dialog Pop up Form Uninstaller Options for BPS free
|
404 |
add_submenu_page( null, __('BPS Plugin Uninstall Options', 'bulletproof-security'), __('BPS Plugin Uninstall Options', 'bulletproof-security'), 'manage_options', 'bulletproof-security/admin/includes/uninstall.php' );
|
405 |
|
@@ -558,7 +591,7 @@ global $wp_scripts, $wp_styles, $bulletproof_security, $wp_version, $bps_version
|
|
558 |
}
|
559 |
|
560 |
// Dequeue any other plugin or theme scripts that should not be loading on BPS plugin pages
|
561 |
-
$script_handles = array( 'bps-arq-ajax', 'bps-tabs', 'bps-dialog', 'bps-accordion', 'bps-encryption', 'bps-crypto-js', 'admin-bar', 'jquery', 'jquery-ui-core', 'jquery-ui-tabs', 'jquery-ui-dialog', 'jquery-ui-widget', 'jquery-ui-mouse', 'jquery-ui-resizable', 'jquery-ui-draggable', 'jquery-ui-button', 'jquery-ui-position', 'jquery-ui-accordion', 'jquery-effects-core', 'jquery-effects-blind', 'jquery-effects-explode', 'common', 'utils', 'svg-painter', 'wp-auth-check', 'heartbeat', 'debug-bar', 'wp-polyfill', 'wp-i18n', 'hoverintent-js', 'wp-hooks', 'query-monitor' );
|
562 |
|
563 |
$style_handles = array( 'bps-css', 'bps-css-38', 'admin-bar', 'colors', 'ie', 'wp-auth-check', 'debug-bar', 'query-monitor' );
|
564 |
|
@@ -891,6 +924,15 @@ require_once( ABSPATH . 'wp-admin/includes/plugin.php');
|
|
891 |
delete_option('bulletproof_security_options_php_memory_limit');
|
892 |
delete_option('bulletproof_security_options_fsp');
|
893 |
delete_option('bulletproof_security_options_mscan_patterns');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
894 |
// will be adding this new upgrade notice option later
|
895 |
// delete_option('bulletproof_security_options_upgrade_notice');
|
896 |
|
@@ -1374,7 +1416,10 @@ function bulletproof_security_options_validate_MScan_status($input) {
|
|
1374 |
@$options['bps_mscan_suspect_skipped_files'] = wp_filter_nohtml_kses($input['bps_mscan_suspect_skipped_files']);
|
1375 |
@$options['bps_mscan_total_suspect_db'] = wp_filter_nohtml_kses($input['bps_mscan_total_suspect_db']);
|
1376 |
$options['bps_mscan_total_ignored_files'] = wp_filter_nohtml_kses($input['bps_mscan_total_ignored_files']);
|
1377 |
-
|
|
|
|
|
|
|
1378 |
return $options;
|
1379 |
}
|
1380 |
|
@@ -1393,7 +1438,8 @@ function bulletproof_security_options_validate_MScan($input) {
|
|
1393 |
// keep this option last since I am using newlines
|
1394 |
@$options['mscan_exclude_dirs'] = wp_filter_nohtml_kses($input['mscan_exclude_dirs']);
|
1395 |
@$options['mscan_exclude_tmp_files'] = wp_filter_nohtml_kses($input['mscan_exclude_tmp_files']);
|
1396 |
-
|
|
|
1397 |
return $options;
|
1398 |
}
|
1399 |
|
@@ -1406,6 +1452,108 @@ function bulletproof_security_options_validate_mscan_patterns($input) {
|
|
1406 |
return $options;
|
1407 |
}
|
1408 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1409 |
// JTC-Lite a stripped down version of the BEAST > JTC Anti-Spam|Anti-Hacker
|
1410 |
function bulletproof_security_options_validate_login_security_jtc($input) {
|
1411 |
$BPSoptionsJTC = get_option('bulletproof_security_options_login_security_jtc');
|
125 |
}
|
126 |
}
|
127 |
|
128 |
+
// Whitelist BPS DB options: Total: 53
|
129 |
register_setting('bulletproof_security_options', 'bulletproof_security_options', 'bulletproof_security_options_validate');
|
130 |
register_setting('bulletproof_security_options_SLF', 'bulletproof_security_options_SLF', 'bulletproof_security_options_validate_SLF');
|
131 |
register_setting('bulletproof_security_options_gdpr', 'bulletproof_security_options_gdpr', 'bulletproof_security_options_validate_gdpr');
|
138 |
register_setting('bulletproof_security_options_mu_sysinfo', 'bulletproof_security_options_mu_sysinfo', 'bulletproof_security_options_validate_mu_sysinfo');
|
139 |
register_setting('bulletproof_security_options_autoupdate', 'bulletproof_security_options_autoupdate', 'bulletproof_security_options_validate_autoupdate');
|
140 |
register_setting('bulletproof_security_options_wizard_free', 'bulletproof_security_options_wizard_free', 'bulletproof_security_options_validate_wizard_free');
|
141 |
+
register_setting('bulletproof_security_options_new_feature', 'bulletproof_security_options_new_feature', 'bulletproof_security_options_validate_new_feature');
|
142 |
register_setting('bulletproof_security_options_MScan_status', 'bulletproof_security_options_MScan_status', 'bulletproof_security_options_validate_MScan_status');
|
143 |
+
register_setting('bulletproof_security_options_mscan_report', 'bulletproof_security_options_mscan_report', 'bulletproof_security_options_validate_mscan_report');
|
144 |
register_setting('bulletproof_security_options_mod_security', 'bulletproof_security_options_mod_security', 'bulletproof_security_options_validate_mod_security');
|
145 |
register_setting('bulletproof_security_options_pop_uninstall', 'bulletproof_security_options_pop_uninstall', 'bulletproof_security_options_validate_pop_uninstall');
|
146 |
register_setting('bulletproof_security_options_customcode_WPA', 'bulletproof_security_options_customcode_WPA', 'bulletproof_security_options_validate_customcode_WPA');
|
147 |
register_setting('bulletproof_security_options_apache_modules', 'bulletproof_security_options_apache_modules', 'bulletproof_security_options_validate_apache_modules');
|
148 |
register_setting('bulletproof_security_options_hidden_plugins', 'bulletproof_security_options_hidden_plugins', 'bulletproof_security_options_validate_hidden_plugins');
|
149 |
register_setting('bulletproof_security_options_mscan_patterns', 'bulletproof_security_options_mscan_patterns', 'bulletproof_security_options_validate_mscan_patterns');
|
150 |
+
register_setting('bulletproof_security_options_mscan_t_hash_new', 'bulletproof_security_options_mscan_t_hash_new', 'bulletproof_security_options_validate_mscan_t_hash_new');
|
151 |
+
register_setting('bulletproof_security_options_mscan_nodownload', 'bulletproof_security_options_mscan_nodownload', 'bulletproof_security_options_validate_mscan_nodownload');
|
152 |
+
register_setting('bulletproof_security_options_mscan_theme_hash', 'bulletproof_security_options_mscan_theme_hash', 'bulletproof_security_options_validate_mscan_theme_hash');
|
153 |
+
register_setting('bulletproof_security_options_mscan_p_hash_new', 'bulletproof_security_options_mscan_p_hash_new', 'bulletproof_security_options_validate_mscan_p_hash_new');
|
154 |
+
register_setting('bulletproof_security_options_mscan_plugin_hash', 'bulletproof_security_options_mscan_plugin_hash', 'bulletproof_security_options_validate_mscan_plugin_hash');
|
155 |
register_setting('bulletproof_security_options_sec_log_post_limit', 'bulletproof_security_options_sec_log_post_limit', 'bulletproof_security_options_validate_sec_log_post_limit');
|
156 |
register_setting('bulletproof_security_options_login_security_jtc', 'bulletproof_security_options_login_security_jtc', 'bulletproof_security_options_validate_login_security_jtc');
|
157 |
register_setting('bulletproof_security_options_mu_wp_autoupdate', 'bulletproof_security_options_mu_wp_autoupdate', 'bulletproof_security_options_validate_mu_wp_autoupdate');
|
158 |
+
register_setting('bulletproof_security_options_php_memory_limit', 'bulletproof_security_options_php_memory_limit', 'bulletproof_security_options_validate_php_memory_limit');
|
159 |
+
register_setting('bulletproof_security_options_mscan_zip_upload', 'bulletproof_security_options_mscan_zip_upload', 'bulletproof_security_options_validate_mscan_zip_upload');
|
160 |
register_setting('bulletproof_security_options_wizard_autofix', 'bulletproof_security_options_wizard_autofix', 'bulletproof_security_options_validate_wizard_autofix');
|
161 |
register_setting('bulletproof_security_options_status_display', 'bulletproof_security_options_status_display', 'bulletproof_security_options_validate_status_display');
|
162 |
register_setting('bulletproof_security_options_login_security', 'bulletproof_security_options_login_security', 'bulletproof_security_options_validate_login_security');
|
218 |
copy($wp_hashes_file_master, $wp_hashes_file);
|
219 |
}
|
220 |
|
221 |
+
if ( ! is_dir( WP_CONTENT_DIR . '/bps-backup/plugin-hashes' ) ) {
|
222 |
+
@mkdir( WP_CONTENT_DIR . '/bps-backup/plugin-hashes', 0755, true );
|
223 |
+
@chmod( WP_CONTENT_DIR . '/bps-backup/plugin-hashes/', 0755 );
|
224 |
+
}
|
225 |
+
|
226 |
+
$plugin_hash_file = WP_CONTENT_DIR . '/bps-backup/plugin-hashes/plugin-hashes.php';
|
227 |
+
$blank_hash_file = WP_PLUGIN_DIR . '/bulletproof-security/admin/htaccess/wp-hashes.php';
|
228 |
+
|
229 |
+
if ( ! file_exists($plugin_hash_file) ) {
|
230 |
+
copy($blank_hash_file, $plugin_hash_file);
|
231 |
+
}
|
232 |
+
|
233 |
+
if ( ! is_dir( WP_CONTENT_DIR . '/bps-backup/theme-hashes' ) ) {
|
234 |
+
@mkdir( WP_CONTENT_DIR . '/bps-backup/theme-hashes', 0755, true );
|
235 |
+
@chmod( WP_CONTENT_DIR . '/bps-backup/theme-hashes/', 0755 );
|
236 |
+
}
|
237 |
+
|
238 |
+
$theme_hash_file = WP_CONTENT_DIR . '/bps-backup/theme-hashes/theme-hashes.php';
|
239 |
+
$blank_hash_file = WP_PLUGIN_DIR . '/bulletproof-security/admin/htaccess/wp-hashes.php';
|
240 |
+
|
241 |
+
if ( ! file_exists($theme_hash_file) ) {
|
242 |
+
copy($blank_hash_file, $theme_hash_file);
|
243 |
+
}
|
244 |
+
|
245 |
// Create the MScan log file in /logs
|
246 |
$bpsProMScanLog = WP_PLUGIN_DIR . '/bulletproof-security/admin/htaccess/mscan_log.txt';
|
247 |
$bpsProMScanLogARQ = WP_CONTENT_DIR . '/bps-backup/logs/mscan_log.txt';
|
294 |
'mscan_pattern_match_db' => $mscan_pattern_match_db
|
295 |
);
|
296 |
|
297 |
+
foreach( $mscan_pattern_match_options as $key => $value ) {
|
298 |
+
update_option('bulletproof_security_options_mscan_patterns', $mscan_pattern_match_options);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
299 |
}
|
300 |
+
|
301 |
+
unlink($mscan_pattern_match_master);
|
302 |
+
}
|
303 |
+
|
304 |
+
if ( file_exists($mscan_pattern_match_file) ) {
|
305 |
+
unlink($mscan_pattern_match_file);
|
306 |
}
|
307 |
|
308 |
if ( file_exists($mscan_pattern_match_file) ) {
|
430 |
add_submenu_page('bulletproof-security/admin/core/core.php', __('Email|Log Settings', 'bulletproof-security'), __('Email|Log Settings', 'bulletproof-security'), 'manage_options', 'bulletproof-security/admin/email-log-settings/email-log-settings.php' );
|
431 |
add_submenu_page('bulletproof-security/admin/core/core.php', __('UI|UX Settings', 'bulletproof-security'), __('UI|UX Settings', 'bulletproof-security'), 'manage_options', 'bulletproof-security/admin/theme-skin/theme-skin.php' );
|
432 |
add_submenu_page('bulletproof-security/admin/core/core.php', __('Setup Wizard', 'bulletproof-security'), __('Setup Wizard', 'bulletproof-security'), 'manage_options', 'bulletproof-security/admin/wizard/wizard.php' );
|
433 |
+
// MScan Iframe Page: hidden submenu. Necessary to avoid the "you don't have permission to view this page" error message.
|
434 |
+
add_submenu_page( null, __('MScan Iframe', 'bulletproof-security'), __('MScan Iframe', 'bulletproof-security'), 'manage_options', 'bulletproof-security/admin/mscan/mscan-iframe.php' );
|
435 |
+
|
436 |
// Do not display a submenu|link: jQuery UI Dialog Pop up Form Uninstaller Options for BPS free
|
437 |
add_submenu_page( null, __('BPS Plugin Uninstall Options', 'bulletproof-security'), __('BPS Plugin Uninstall Options', 'bulletproof-security'), 'manage_options', 'bulletproof-security/admin/includes/uninstall.php' );
|
438 |
|
591 |
}
|
592 |
|
593 |
// Dequeue any other plugin or theme scripts that should not be loading on BPS plugin pages
|
594 |
+
$script_handles = array( 'bps-arq-ajax', 'bps-mscan-ajax', 'bps-tabs', 'bps-dialog', 'bps-accordion', 'bps-encryption', 'bps-crypto-js', 'admin-bar', 'jquery', 'jquery-ui-core', 'jquery-ui-tabs', 'jquery-ui-dialog', 'jquery-ui-widget', 'jquery-ui-mouse', 'jquery-ui-resizable', 'jquery-ui-draggable', 'jquery-ui-button', 'jquery-ui-position', 'jquery-ui-accordion', 'jquery-effects-core', 'jquery-effects-blind', 'jquery-effects-explode', 'common', 'utils', 'svg-painter', 'wp-auth-check', 'heartbeat', 'debug-bar', 'wp-polyfill', 'wp-i18n', 'hoverintent-js', 'wp-hooks', 'query-monitor' );
|
595 |
|
596 |
$style_handles = array( 'bps-css', 'bps-css-38', 'admin-bar', 'colors', 'ie', 'wp-auth-check', 'debug-bar', 'query-monitor' );
|
597 |
|
924 |
delete_option('bulletproof_security_options_php_memory_limit');
|
925 |
delete_option('bulletproof_security_options_fsp');
|
926 |
delete_option('bulletproof_security_options_mscan_patterns');
|
927 |
+
|
928 |
+
delete_option('bulletproof_security_options_mscan_plugin_hash');
|
929 |
+
delete_option('bulletproof_security_options_mscan_p_hash_new');
|
930 |
+
delete_option('bulletproof_security_options_mscan_theme_hash');
|
931 |
+
delete_option('bulletproof_security_options_mscan_t_hash_new');
|
932 |
+
delete_option('bulletproof_security_options_mscan_nodownload');
|
933 |
+
delete_option('bulletproof_security_options_new_feature');
|
934 |
+
delete_option('bulletproof_security_options_mscan_zip_upload');
|
935 |
+
delete_option('bulletproof_security_options_mscan_report');
|
936 |
// will be adding this new upgrade notice option later
|
937 |
// delete_option('bulletproof_security_options_upgrade_notice');
|
938 |
|
1416 |
@$options['bps_mscan_suspect_skipped_files'] = wp_filter_nohtml_kses($input['bps_mscan_suspect_skipped_files']);
|
1417 |
@$options['bps_mscan_total_suspect_db'] = wp_filter_nohtml_kses($input['bps_mscan_total_suspect_db']);
|
1418 |
$options['bps_mscan_total_ignored_files'] = wp_filter_nohtml_kses($input['bps_mscan_total_ignored_files']);
|
1419 |
+
// 4.7: 2 new options added
|
1420 |
+
$options['bps_mscan_total_plugin_files'] = wp_filter_nohtml_kses($input['bps_mscan_total_plugin_files']);
|
1421 |
+
$options['bps_mscan_total_theme_files'] = wp_filter_nohtml_kses($input['bps_mscan_total_theme_files']);
|
1422 |
+
|
1423 |
return $options;
|
1424 |
}
|
1425 |
|
1438 |
// keep this option last since I am using newlines
|
1439 |
@$options['mscan_exclude_dirs'] = wp_filter_nohtml_kses($input['mscan_exclude_dirs']);
|
1440 |
@$options['mscan_exclude_tmp_files'] = wp_filter_nohtml_kses($input['mscan_exclude_tmp_files']);
|
1441 |
+
$options['mscan_file_size_limit_hidden'] = wp_filter_nohtml_kses($input['mscan_file_size_limit_hidden']);
|
1442 |
+
|
1443 |
return $options;
|
1444 |
}
|
1445 |
|
1452 |
return $options;
|
1453 |
}
|
1454 |
|
1455 |
+
// MScan Scan plugin hashes options: 2-D arrays:
|
1456 |
+
// Note: You cannot use: wp_filter_nohtml_kses for multidimensional arrays - it will strip out the inner array code.
|
1457 |
+
function bulletproof_security_options_validate_mscan_plugin_hash($input) {
|
1458 |
+
$options = get_option('bulletproof_security_options_mscan_plugin_hash');
|
1459 |
+
$options['bps_mscan_plugin_hash_version_check'] = $input['bps_mscan_plugin_hash_version_check'];
|
1460 |
+
$options['bps_mscan_plugin_hash_paths'] = $input['bps_mscan_plugin_hash_paths'];
|
1461 |
+
$options['bps_mscan_plugin_hash_zip_file'] = $input['bps_mscan_plugin_hash_zip_file'];
|
1462 |
+
|
1463 |
+
return $options;
|
1464 |
+
}
|
1465 |
+
|
1466 |
+
// MScan Scan plugin hashes options: 2-D arrays:
|
1467 |
+
// Notes: You cannot use: wp_filter_nohtml_kses for multidimensional arrays - it will strip out the inner array code.
|
1468 |
+
// The WP delete_option() function only deletes strings due to trim(). So I need a separate DB option for the new arrays
|
1469 |
+
// in order to delete this option so that new arrays for comparison are created/updated each time. Simpler is always better anyways.
|
1470 |
+
function bulletproof_security_options_validate_mscan_p_hash_new($input) {
|
1471 |
+
$options = get_option('bulletproof_security_options_mscan_p_hash_new');
|
1472 |
+
$options['bps_mscan_plugin_hash_version_check_new'] = $input['bps_mscan_plugin_hash_version_check_new'];
|
1473 |
+
$options['bps_mscan_plugin_hash_paths_new'] = $input['bps_mscan_plugin_hash_paths_new'];
|
1474 |
+
$options['bps_mscan_plugin_hash_zip_file_new'] = $input['bps_mscan_plugin_hash_zip_file_new'];
|
1475 |
+
|
1476 |
+
return $options;
|
1477 |
+
}
|
1478 |
+
|
1479 |
+
// MScan Scan Theme hashes options: 2-D arrays:
|
1480 |
+
function bulletproof_security_options_validate_mscan_theme_hash($input) {
|
1481 |
+
$options = get_option('bulletproof_security_options_mscan_theme_hash');
|
1482 |
+
$options['bps_mscan_theme_hash_version_check'] = $input['bps_mscan_theme_hash_version_check'];
|
1483 |
+
$options['bps_mscan_theme_hash_paths'] = $input['bps_mscan_theme_hash_paths'];
|
1484 |
+
$options['bps_mscan_theme_hash_zip_file'] = $input['bps_mscan_theme_hash_zip_file'];
|
1485 |
+
|
1486 |
+
return $options;
|
1487 |
+
}
|
1488 |
+
|
1489 |
+
// MScan Scan Theme hashes options: 2-D arrays:
|
1490 |
+
function bulletproof_security_options_validate_mscan_t_hash_new($input) {
|
1491 |
+
$options = get_option('bulletproof_security_options_mscan_t_hash_new');
|
1492 |
+
$options['bps_mscan_theme_hash_version_check_new'] = $input['bps_mscan_theme_hash_version_check_new'];
|
1493 |
+
$options['bps_mscan_theme_hash_paths_new'] = $input['bps_mscan_theme_hash_paths_new'];
|
1494 |
+
$options['bps_mscan_theme_hash_zip_file_new'] = $input['bps_mscan_theme_hash_zip_file_new'];
|
1495 |
+
|
1496 |
+
return $options;
|
1497 |
+
}
|
1498 |
+
|
1499 |
+
// MScan: Plugins and Themes that are not downloadable from WP. ie premium/paid, custom plugins or no zip file version number.
|
1500 |
+
function bulletproof_security_options_validate_mscan_nodownload($input) {
|
1501 |
+
$options = get_option('bulletproof_security_options_mscan_nodownload');
|
1502 |
+
$options['bps_plugin_nodownload'] = $input['bps_plugin_nodownload'];
|
1503 |
+
$options['bps_theme_nodownload'] = $input['bps_theme_nodownload'];
|
1504 |
+
|
1505 |
+
return $options;
|
1506 |
+
}
|
1507 |
+
|
1508 |
+
// MScan Zip Upload Forms: Plugins and Themes that are not downloadable from WP. ie premium/paid, custom plugins or no zip file version number.
|
1509 |
+
// Used in the MScan Report to check if these plugins and themes have file hashes or not.
|
1510 |
+
function bulletproof_security_options_validate_mscan_zip_upload($input) {
|
1511 |
+
$options = get_option('bulletproof_security_options_mscan_zip_upload');
|
1512 |
+
$options['bps_mscan_plugin_zip_upload'] = $input['bps_mscan_plugin_zip_upload'];
|
1513 |
+
$options['bps_mscan_theme_zip_upload'] = $input['bps_mscan_theme_zip_upload'];
|
1514 |
+
|
1515 |
+
return $options;
|
1516 |
+
}
|
1517 |
+
|
1518 |
+
// MScan Report: Multidimensional arrays for saving each MScan Report
|
1519 |
+
// 20 saved scan reports max. Each report array needs to be a separate option so that it can be deleted easily.
|
1520 |
+
function bulletproof_security_options_validate_mscan_report($input) {
|
1521 |
+
$options = get_option('bulletproof_security_options_mscan_report');
|
1522 |
+
$options['bps_mscan_report_data_1'] = $input['bps_mscan_report_data_1'];
|
1523 |
+
$options['bps_mscan_report_data_2'] = $input['bps_mscan_report_data_2'];
|
1524 |
+
$options['bps_mscan_report_data_3'] = $input['bps_mscan_report_data_3'];
|
1525 |
+
$options['bps_mscan_report_data_4'] = $input['bps_mscan_report_data_4'];
|
1526 |
+
$options['bps_mscan_report_data_5'] = $input['bps_mscan_report_data_5'];
|
1527 |
+
$options['bps_mscan_report_data_6'] = $input['bps_mscan_report_data_6'];
|
1528 |
+
$options['bps_mscan_report_data_7'] = $input['bps_mscan_report_data_7'];
|
1529 |
+
$options['bps_mscan_report_data_8'] = $input['bps_mscan_report_data_8'];
|
1530 |
+
$options['bps_mscan_report_data_9'] = $input['bps_mscan_report_data_9'];
|
1531 |
+
$options['bps_mscan_report_data_10'] = $input['bps_mscan_report_data_10'];
|
1532 |
+
$options['bps_mscan_report_data_11'] = $input['bps_mscan_report_data_11'];
|
1533 |
+
$options['bps_mscan_report_data_12'] = $input['bps_mscan_report_data_12'];
|
1534 |
+
$options['bps_mscan_report_data_13'] = $input['bps_mscan_report_data_13'];
|
1535 |
+
$options['bps_mscan_report_data_14'] = $input['bps_mscan_report_data_14'];
|
1536 |
+
$options['bps_mscan_report_data_15'] = $input['bps_mscan_report_data_15'];
|
1537 |
+
$options['bps_mscan_report_data_16'] = $input['bps_mscan_report_data_16'];
|
1538 |
+
$options['bps_mscan_report_data_17'] = $input['bps_mscan_report_data_17'];
|
1539 |
+
$options['bps_mscan_report_data_18'] = $input['bps_mscan_report_data_18'];
|
1540 |
+
$options['bps_mscan_report_data_19'] = $input['bps_mscan_report_data_19'];
|
1541 |
+
$options['bps_mscan_report_data_20'] = $input['bps_mscan_report_data_20'];
|
1542 |
+
|
1543 |
+
return $options;
|
1544 |
+
}
|
1545 |
+
|
1546 |
+
// New feature Dismiss Notice: Value is set on BPS upgrades and in the Wizard - This is ONLY used rarely for very important new features or options.
|
1547 |
+
// If someone has upgraded BPS the value is: upgrade. If is a new BPS installation value is: new
|
1548 |
+
// The Dismiss Notice is ONLY displayed to people who have upgraded BPS.
|
1549 |
+
// I can add additional options later if needed.
|
1550 |
+
function bulletproof_security_options_validate_new_feature($input) {
|
1551 |
+
$options = get_option('bulletproof_security_options_new_feature');
|
1552 |
+
$options['bps_mscan_rebuild'] = wp_filter_nohtml_kses($input['bps_mscan_rebuild']);
|
1553 |
+
|
1554 |
+
return $options;
|
1555 |
+
}
|
1556 |
+
|
1557 |
// JTC-Lite a stripped down version of the BEAST > JTC Anti-Spam|Anti-Hacker
|
1558 |
function bulletproof_security_options_validate_login_security_jtc($input) {
|
1559 |
$BPSoptionsJTC = get_option('bulletproof_security_options_login_security_jtc');
|
admin/js/bps-mscan-ajax.js
CHANGED
@@ -1,8 +1,10 @@
|
|
1 |
// BPS MScan AJAX
|
2 |
-
// CAUTION: The AJAX post
|
|
|
3 |
jQuery(document).ready( function($) {
|
4 |
|
5 |
-
// MScan Malware Scanner: Start
|
|
|
6 |
$( "input#bps-mscan-start-button" ).on({ "click": function() {
|
7 |
|
8 |
var data = {
|
@@ -21,7 +23,7 @@ jQuery(document).ready( function($) {
|
|
21 |
}
|
22 |
});
|
23 |
|
24 |
-
// MScan Malware Scanner: Scan Time Estimate Tool
|
25 |
$( "input#bps-mscan-time-estimate-button" ).on({ "click": function() {
|
26 |
|
27 |
var data = {
|
1 |
// BPS MScan AJAX
|
2 |
+
// CAUTION: The AJAX post object/url: $.post(bps_mscan_ajax.ajaxurl... is different than BPS Pro.
|
3 |
+
// This simply means that the AJAX url is different in the BPS free (wp_localize_script call). All other actions/code is the same.
|
4 |
jQuery(document).ready( function($) {
|
5 |
|
6 |
+
// MScan Malware Scanner: Start. MScan Status: 1
|
7 |
+
// MScan Stop is handled in mscan-ajax-functions.php by using a PHP file contents check: /bps-backup/master-backups/mscan-stop.txt
|
8 |
$( "input#bps-mscan-start-button" ).on({ "click": function() {
|
9 |
|
10 |
var data = {
|
23 |
}
|
24 |
});
|
25 |
|
26 |
+
// MScan Malware Scanner: Scan Time Estimate Tool. MScan Status: 5
|
27 |
$( "input#bps-mscan-time-estimate-button" ).on({ "click": function() {
|
28 |
|
29 |
var data = {
|
admin/mscan/mscan-help-text.php
CHANGED
@@ -1,35 +1,4 @@
|
|
1 |
<?php
|
2 |
-
# ________ ____________ _____ ________ ________
|
3 |
-
# ___ __ )____ _____ /___ /_____ __ /____ __ \______________ ______ ___ __/
|
4 |
-
# __ __ |_ / / /__ / __ / _ _ \_ __/__ /_/ /__ ___/_ __ \_ __ \__ /_
|
5 |
-
# _ /_/ / / /_/ / _ / _ / / __// /_ _ ____/ _ / / /_/ // /_/ /_ __/
|
6 |
-
# /_____/ \__,_/ /_/ /_/ \___/ \__/ /_/ /_/ \____/ \____/ /_/
|
7 |
-
# ________ _____ _____ ________
|
8 |
-
# __ ___/_____ ___________ _____________(_)__ /______ __ ___ __ \______________
|
9 |
-
# _____ \ _ _ \_ ___/_ / / /__ ___/__ / _ __/__ / / / __ /_/ /__ ___/_ __ \
|
10 |
-
# ____/ / / __// /__ / /_/ / _ / _ / / /_ _ /_/ / _ ____/ _ / / /_/ /
|
11 |
-
# /____/ \___/ \___/ \__,_/ /_/ /_/ \__/ _\__, / /_/ /_/ \____/
|
12 |
-
# /____/
|
13 |
-
# 42756C6C657450726F6F66 5365637572697479 50726F
|
14 |
-
#
|
15 |
-
/* The Copyright, AITpro Software Products License Information must remain
|
16 |
-
intact or all BulletProof Security Pro warranties, guarantees, liabilities are void.
|
17 |
-
|
18 |
-
Copyright (C) 2011-2017 Edward Alexander, AIT-pro.com. All rights reserved.
|
19 |
-
|
20 |
-
AITpro Software Products License Information:
|
21 |
-
BY DOWNLOADING, INSTALLING, COPYING, ACCESSING, OR USING BulletProof Security Pro YOU AGREE TO THE TERMS OF THIS AGREEMENT.
|
22 |
-
IF YOU ARE ACCEPTING THESE TERMS ON BEHALF OF ANOTHER PERSON OR A COMPANY OR OTHER LEGAL ENTITY, YOU REPRESENT AND WARRANT
|
23 |
-
THAT YOU HAVE FULL AUTHORITY TO BIND THAT PERSON, COMPANY, OR LEGAL ENTITY TO THESE TERMS. IF YOU DO NOT AGREE TO THESE TERMS,
|
24 |
-
* DO NOT DOWNLOAD, INSTALL, COPY, ACCESS, OR USE BulletProof Security Pro; AND
|
25 |
-
* PROMPTLY RETURN BulletProof Security Pro TO THE PARTY FROM WHOM YOU ACQUIRED IT. IF YOU DOWNLOADED BulletProof Security Pro
|
26 |
-
FROM THE AITPRO WEBSITE, CONTACT AITPRO FOR A REFUND IF APPLICABLE.
|
27 |
-
|
28 |
-
AITpro Software Products License Information continued:
|
29 |
-
You agree to keep the AITpro Software Products License for BulletProof Security Pro, unmodified or altered in any way,
|
30 |
-
with the original copy of BulletProof Security Pro that you have and any and all copies or partial copies of BulletProof
|
31 |
-
Security Pro that You make.
|
32 |
-
*/
|
33 |
// Direct calls to this file are Forbidden when core files are not present
|
34 |
if ( ! current_user_can('manage_options') ) {
|
35 |
header('Status: 403 Forbidden');
|
@@ -38,9 +7,83 @@ if ( ! current_user_can('manage_options') ) {
|
|
38 |
}
|
39 |
|
40 |
/** MScan **/
|
41 |
-
$bps_modal_content1 = '<strong><font color="blue">'.__('For more extensive help info and answers to common issues or problems click the MScan Malware Scanner Guide link above. For troubleshooting help or to post suspicious code click the MScan Troubleshooting & Code Posting link above.', 'bulletproof-security').'</font></strong
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
|
43 |
/** MScan Log **/
|
44 |
-
$bps_modal_content2 = '<strong>'.__('This Read Me Help window is draggable (top) and resizable (bottom right corner)', 'bulletproof-security').'</strong><br><br><strong>'.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
|
46 |
?>
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
// Direct calls to this file are Forbidden when core files are not present
|
3 |
if ( ! current_user_can('manage_options') ) {
|
4 |
header('Status: 403 Forbidden');
|
7 |
}
|
8 |
|
9 |
/** MScan **/
|
10 |
+
$bps_modal_content1 = '<strong><font color="blue">'.__('For more extensive help info and answers to common issues or problems click the MScan Malware Scanner Guide link above. For troubleshooting help or to post suspicious code click the MScan Troubleshooting & Code Posting link above.', 'bulletproof-security').'</font></strong>
|
11 |
+
|
12 |
+
<br><br><strong>'.__('MScan 2.0 General Info', 'bulletproof-security').'</strong><br>'.__('MScan 2.0 scans WP Core, Plugin and Theme files using file hash comparisons, which is 100% accurate vs conventional pattern matching, which is typically around 75% - 85% accurate. MScan scans all other website files (non-WordPress files) using conventional pattern matching scanning. The pattern matching code is much more extensive in MScan 2.0 and will hopefully achieve a 95% or higher detection rate. False positives are inevitable when using conventional pattern matching scanning, but since MScan 2.0 uses file hash comparison scanning for all WP Core, Plugin and Theme files then there will not be any false positives detected for any/all WordPress files (WP Core, Plugins and Themes). MScan 2.0 automatically downloads WordPress, Plugin and Theme zip files, extracts the zip files, creates file hashes for all files and then deletes the zip files. WP Core, Plugin and Theme zip downloads only occur on the first MScan scan or when a new WordPress, Plugin or Theme version is installed/updated on a website.', 'bulletproof-security').
|
13 |
+
|
14 |
+
'<br><br><strong>'.__('Scanning Other WordPress Sites', 'bulletproof-security').'</strong><br>'.__('Website folder checkboxes cannot be checked for other WordPress sites under your hosting account. To scan other WordPress sites under your hosting account run MScan 2.0 from each site. There are several technical reasons for doing this: Each site may have a different version of WordPress installed and different Plugins and Themes installed. MScan 2.0 now uses file hash comparisons for each individual site based on the WordPress, Plugin and Theme versions installed on each individual website.', 'bulletproof-security').
|
15 |
+
|
16 |
+
'<br><br><strong>'.__('Estimated Scan Time Exceeded', 'bulletproof-security').'</strong><br>'.__('If you see "Estimated Scan Time Exceeded: Still scanning files" that means that the current scan that you are running is taking longer than the estimated scan time. The scan will complete successfully.', 'bulletproof-security').
|
17 |
+
|
18 |
+
'<br><br><strong>'.__('Processing Total File Count', 'bulletproof-security').'</strong><br>'.__('If you see "Processing Total File Count: Still scanning files" that means that the current scan that you are running has not yet processed the total number of files to scan yet. The scan will complete successfully.', 'bulletproof-security').
|
19 |
+
|
20 |
+
'<br><br><strong>'.__('New Hash Files Created: Run A New Scan', 'bulletproof-security').'</strong><br>'.__('If you see "Total Files Scanned: New Hash Files Created: Run A New Scan" that means that the current scan that you are running will create new Plugin or Theme Hash files and not scan any files. You will see this message instead of the total number of files scanned whenever new or updated Plugins or Themes need new Hash files created. Run another scan to scan the new/updated Plugin and Theme files. Note: This safety precaution ensures that Plugin and Theme hash files are not being created at the same time Plugin and Theme files are being scanned, which could result in false positive file hash comparison results for Plugin and Theme files.', 'bulletproof-security').
|
21 |
+
|
22 |
+
'<br><br><strong>'.__('Error: Files found in the plugin-hashes folder', 'bulletproof-security').'</strong><br>'.__('If you see "Total Files Scanned: Error: Files found in the plugin-hashes folder" that means that files (and probably folders too) were found in the /wp-content/bps-backup/plugin-hashes/ folder. This problem could be caused by uploading a plugin zip file that does not extract the entire plugin folder and instead extracts individual plugin folders and files. To fix this problem you will need to use FTP or your web host control panel file manager and delete all folders and files in the /plugin-hashes/ folder except for this file: plugin-hashes.php. To correctly make a plugin zip file that extracts the entire plugin folder you would right mouse click on the plugin folder, click "send to" and then click "Compressed (zipped) folder" on Windows.', 'bulletproof-security').
|
23 |
+
|
24 |
+
'<br><br><strong>'.__('Error: Files found in the theme-hashes folder', 'bulletproof-security').'</strong><br>'.__('If you see "Total Files Scanned: Error: Files found in the theme-hashes folder" that means that files (and probably folders too) were found in the /wp-content/bps-backup/theme-hashes/ folder. This problem could be caused by uploading a theme zip file that does not extract the entire theme folder and instead extracts individual theme folders and files. To fix this problem you will need to use FTP or your web host control panel file manager and delete all folders and files in the /theme-hashes/ folder except for this file: theme-hashes.php. To correctly make a theme zip file that extracts the entire theme folder you would right mouse click on the theme folder, click "send to" and then click "Compressed (zipped) folder" on Windows.', 'bulletproof-security').
|
25 |
+
|
26 |
+
'<br><br><strong>'.__('Start Scan', 'bulletproof-security').'</strong><br>'.__('Clicking the Start Scan button starts a scan.', 'bulletproof-security').
|
27 |
+
|
28 |
+
'<br><br><strong>'.__('Stop Scan', 'bulletproof-security').'</strong><br>'.__('Clicking the Stop Scan button stops a scan. You can also deactivate and activate the BPS Pro plugin on the WordPress Plugins page to stop a scan.', 'bulletproof-security').
|
29 |
+
|
30 |
+
'<br><br><strong>'.__('Reset MScan', 'bulletproof-security').'</strong><br>'.__('The Reset MScan button resets/deletes these things: MScan Status option values: The Scan Completed timestamp, Total Scan Time, Total Files Scanned, Skipped Files, Suspicious Files and Suspicious DB Entries status values will be deleted and will either display blank or 0. The scan data in the View|Ignore|Delete Suspicious Files and View|Ignore Suspicious DB Entries Forms will be deleted.', 'bulletproof-security').
|
31 |
+
|
32 |
+
'<br><br><strong>'.__('Website Folders & Files To Scan', 'bulletproof-security').'</strong><br>'.__('Checking a checkbox means scan that folder. Unchecking a checkbox means do not scan that folder. "Giving WordPress Its Own Directory" site types: All scannable parent folders will be listed along with your WP installation folders. Both parent folders and files and WP installation folders and files that you select/check will be scanned. All other site types: All folders in your WP installation folder will be listed. All folders and files in your WP installation folder that you select/check will be scanned.', 'bulletproof-security').
|
33 |
+
|
34 |
+
'<br><br><strong>'.__('Max File Size Limit to Scan', 'bulletproof-security').'</strong><br>'.__('Files that are larger than the default file size setting of 1000KB will be skipped by default in a regular scan and can be scanned using a Skipped File scan. You can change the max file size limit option setting to a larger max file size limit.', 'bulletproof-security').
|
35 |
+
|
36 |
+
'<br><br><strong>'.__('Max Time Limit to Scan', 'bulletproof-security').'</strong><br>'.__('The default time limit for script execution on most web hosts is 300 seconds. The default time limit setting for MScan scanning is also set to 300 seconds. It is not recommended that you increase the time limit higher than 300 seconds.', 'bulletproof-security').
|
37 |
+
|
38 |
+
'<br><br><strong>'.__('Exclude Individual Folders', 'bulletproof-security').'</strong><br>'.__('Enter relative folder paths one folder path per line. A relative folder path is this: /some-folder/some-subfolder. A literal path would be the full server path: /xxxxx/xxxxx/public_html/wordpress/some-folder/some-subfolder. Important Note: Add at least 2 folders in the path. The reason for that is if you just enter 1 folder name/path it could match other folder names somewhere else under your website folders. Example: If you only entered The folder path/name /cache/ it would match all folders named /cache/. If you add the folder name/path: /wp-content/cache/ it would only match this particular cache folder under the wp-content folder.', 'bulletproof-security').
|
39 |
+
|
40 |
+
'<br><br><strong>'.__('Scan Database', 'bulletproof-security').'</strong><br>'.__('When Database scan is turned on your WordPress database will be scanned for suspicious code.', 'bulletproof-security').
|
41 |
+
|
42 |
+
'<br><br><strong>'.__('Scan Skipped Files Only', 'bulletproof-security').'</strong><br>'.__('Skipped files are files that are larger than the "Max File Size Limit to Scan" option setting file size. The default file size setting is 400KB. When Skipped File Scan is On only skipped files will be scanned. Note: No other MScan option settings have any effect while Skipped File Scan is set to On.', 'bulletproof-security').
|
43 |
+
|
44 |
+
'<br><br><strong>'.__('Automatically Delete /tmp Files', 'bulletproof-security').'</strong><br>'.__('When Delete Tmp Files is On, all temporary files will be deleted. Hackers commonly hide hacker files in the /tmp folder.', 'bulletproof-security').
|
45 |
+
|
46 |
+
'<br><br><strong>'.__('Exclude /tmp Files', 'bulletproof-security').'</strong><br>'.__('Enter 1 file name per line. Some web hosts store files such as, mysql.sock, .s.PGSQL.5432 and .per-user in the /tmp folder. These files cannot be deleted by MScan, but attempting to delete these files will generate php errors. To prevent php errors from occurring you would exclude files such as these using the MScan Exclude /tmp files option setting. You will need to ask your web host for the names of those tmp files to exclude.', 'bulletproof-security').
|
47 |
+
|
48 |
+
'<br><br><strong>'.__('Scheduled Scan Frequency', 'bulletproof-security').'</strong><br>'.__('You can choose to schedule ongoing automated scans. Note: The BPS Pro ARQ IDPS scanner is far superior to any/all Malware scanners including BPS Pro MScan. You can of course use both ARQ IDPS and MScan scheduled scans together.', 'bulletproof-security').
|
49 |
+
|
50 |
+
/* This tool causes buggy problems on Live hosted sites. This tool is no longer needed anyway. Either fix the bugs or nuke it.
|
51 |
+
'<br><br><strong>'.__('Scan Time Estimate Tool', 'bulletproof-security').'</strong><br>'.__('You can stop the scan time estimate if it hangs or is taking too long by clicking the Stop Scan button. This tool allows you to check the estimated total scan time of a scan based on your MScan option settings without actually performing/running a scan. Note: This tool does not affect or change any previous scan results except for the Total Scan Time, which will be changed to the estimated scan time. Example Usage: You can check or uncheck Hosting Account Root Folders checkboxes and change any other MScan option settings, save your MScan option settings and then run the Scan Time Estimate Tool to get the total estimated time that the actual scan will take. Note: This tool fully simulates an actual scan.', 'bulletproof-security').
|
52 |
+
*/
|
53 |
+
|
54 |
+
'<br><br><strong>'.__('Delete File Hashes Tool', 'bulletproof-security').'</strong><br>'.__('This tool allows you to delete the Plugin and Theme file hashes. This tool should ONLY be used if there is a problem when scanning Plugin and Theme files. Usages: If you downgrade a plugin to an older version then use this tool to delete Plugin and Theme file hashes. If the MScan file hash comparison results display a large number of Plugin or Theme files as suspicious: Example: Suspicious|Modified|Unknown Plugin or Theme file then use this tool to delete all Plugin and Theme file hashes. After using this tool, the next MScan scan that you perform will download new Plugin and Theme zip files, extract them, make new Plugin and Theme file hashes and then delete the zip files. Important Note: You should also click the MScan Reset button after using this tool to remove any old/bad scan data.', 'bulletproof-security').
|
55 |
+
|
56 |
+
'<br><br><strong>'.__('Upload Plugin Zip Files', 'bulletproof-security').'</strong><br>'.__('You can upload multiple zip files at the same time by using your Ctrl or Shift keyboard keys on Windows. This upload form allows you to upload premium, paid and custom plugin zip files that are not in the WordPress Plugin Repository on wordpress.org. MScan will automatically extract any uploaded plugin zip files, create file hashes and delete the plugin zip files on the next MScan scan. If you do not choose to upload premium, paid and custom plugin zip files then those premium, paid and custom plugin files will not be scanned. Important Note: Plugin zip files MUST be named/renamed using the version number in this exact format: plugin-name.x.x.zip where x is the actual current plugin version number. The reason for that is MScan keeps track of the version numbers for plugins in order to create new plugin file hashes for newer versions of plugins when you update them. This process is completely automated for any/all free plugins that you have installed from the WordPress Plugin Repository on wordpress.org. Important Note: Some plugin zip files in the WP Plugin Repository are not named with a version number. If you would like to scan those plugins you will need to download the plugin zip file and rename it using this exact format: plugin-name.x.x.zip and then upload the renamed plugin zip file.', 'bulletproof-security').
|
57 |
+
|
58 |
+
'<br><br><strong>'.__('Upload Theme Zip Files', 'bulletproof-security').'</strong><br>'.__('You can upload multiple zip files at the same time by using your Ctrl or Shift keyboard keys on Windows. This upload form allows you to upload premium, paid and custom theme zip files that are not in the WordPress Theme Repository on wordpress.org. MScan will automatically extract any uploaded theme zip files, create file hashes and delete the theme zip files on the next MScan scan. If you do not choose to upload premium, paid and custom theme zip files then those premium, paid and custom theme files will not be scanned. Important Note: Theme zip files MUST be named/renamed using the version number in this exact format: theme-name.x.x.zip where x is the actual current theme version number. The reason for that is MScan keeps track of the version numbers for themes in order to create new theme file hashes for newer versions of themes when you update them. This process is completely automated for any/all free themes that you have installed from the WordPress Theme Repository on wordpress.org. Important Note: Some theme zip files in the WP Theme Repository are not named with a version number. If you would like to scan those themes you will need to download the theme zip file and rename it using this exact format: theme-name.x.x.zip and then upload the renamed theme zip file. Child Themes are a custom Theme. Zip a known good/clean copy of your Child Theme folder and upload it if you would like your Child Theme files scanned. Use the same zip file naming convention: tmeme-name-child.x.x.zip.', 'bulletproof-security').
|
59 |
+
|
60 |
+
'<br><br><strong>'.__('View|Ignore|Delete Suspicious Files', 'bulletproof-security').'</strong><br>'.__('This form allows you to view, ignore, unignore or delete suspicious and skipped files. If you are not sure if code is malicious or safe you can copy the code and post the code in the MScan Troubleshooting & Code Posting form topic. See the link above. If you are unsure if a file is a hacker file or not then download a copy of that file before deleting it. When you ignore a file it will no longer be scanned in any future scans. When you unignore an ignored file it will be scanned in future scans.', 'bulletproof-security').
|
61 |
+
|
62 |
+
'<br><br><strong>'.__('View|Ignore Suspicious DB Entries', 'bulletproof-security').'</strong><br>'.__('This form allows you to view, ignore or unignore suspicious DB Entries. Note: The view option displays the DB Table, Column, Row ID and the MScan Pattern Match that was detected by the MScan scan. Use phpMyAdmin or a similar tool to check your database Row where the suspicious code was found. When you ignore a DB Entry it will no longer be scanned in any future scans. When you unignore an ignored DB Entry it will be scanned in future scans.', 'bulletproof-security');
|
63 |
|
64 |
/** MScan Log **/
|
65 |
+
$bps_modal_content2 = '<strong>'.__('This Read Me Help window is draggable (top) and resizable (bottom right corner)', 'bulletproof-security').'</strong><br><br><strong>'.
|
66 |
+
|
67 |
+
__('MScan Log General Information', 'bulletproof-security').'</strong><br>'.__('Your MScan Log file is a plain text static file and not a dynamic file or dynamic display to keep your website resource usage at a bare minimum and keep your website performance at a maximum. Log entries are logged in descending order by Date and Time. You can copy, edit and delete this plain text file. You can choose S-Monitor Email Alerting & Log File Options to automatically email your MScan Log file to you and delete it when it reaches a certain size (256KB, 500KB or 1MB).', 'bulletproof-security').
|
68 |
+
|
69 |
+
'<strong><br><br>'.__('MScan Logging', 'bulletproof-security').'</strong><br>'.__('Logs extensive details about each scan that you run.', 'bulletproof-security').
|
70 |
+
|
71 |
+
'<strong><br><br>'.__('MScan Log File Size', 'bulletproof-security').'</strong><br>'.__('Displays the size of your MScan Log file. If your log file is larger than 2MB then you will see a Red warning message displayed: The S-Monitor Email Alerting & Log File Options will only send log files up to 2MB in size. Copy and paste the MScan Log file contents into a Notepad text file on your computer and save it. Then click the Delete Log button to delete the contents of this Log file.', 'bulletproof-security').'<br><br><strong>'.__('MScan Log Last Modified Time', 'bulletproof-security').
|
72 |
+
|
73 |
+
'</strong><br>'.__('The Reset Last Modified Time in DB option/feature is currently completely automated and does not require any manual steps performed by you.', 'bulletproof-security').
|
74 |
+
|
75 |
+
'<br><br><strong>'.__('Delete Log Button', 'bulletproof-security').'</strong><br>'.__('Clicking the Delete Log button will delete the entire contents of your MScan Log File. If you have setup S-Monitor Email Alerting & Log Options then the only time you would probably need to use the Delete Log button is if your MScan Log file exceeds 2MB in size.', 'bulletproof-security');
|
76 |
+
|
77 |
+
/** MScan Report **/
|
78 |
+
$bps_modal_content3 = '<strong>'.__('This Read Me Help window is draggable (top) and resizable (bottom right corner)', 'bulletproof-security').'</strong><br><br><strong>'.
|
79 |
+
|
80 |
+
__('MScan Report General Information', 'bulletproof-security').'</strong><br>'.__('After running a scan your extensive scan results data is displayed on this tab page. If you would like to save your scan results data click the Save MScan Report button. You can save up to 20 scan reports. You can view or delete scan reports on the MScan Saved Reports tab page using the MScan Saved Reports Form.', 'bulletproof-security').
|
81 |
+
|
82 |
+
'<br><br><strong>'.__('No File Hashes for This Plugin or No File Hashes for This Theme', 'bulletproof-security').'</strong><br>'.__('If you see either of these status messages under Plugin File Hashes or Theme File Hashes then go to the main MScan 2.0 tab page, click the MScan 2.0 Read Me help button and read the "Upload Plugin Zip Files" or "Upload Theme Zip Files" help section.', 'bulletproof-security');
|
83 |
+
|
84 |
+
/** MScan Saved Reports **/
|
85 |
+
$bps_modal_content4 = '<strong>'.__('This Read Me Help window is draggable (top) and resizable (bottom right corner)', 'bulletproof-security').'</strong><br><br><strong>'.
|
86 |
+
|
87 |
+
__('MScan Saved Reports General Information', 'bulletproof-security').'</strong><br>'.__('You can save up to 20 scan reports. You can view or delete scan reports. If you would like to view a saved scan report select the View Report checkbox for the scan report you would like to view and click the View|Delete Reports button. Scan report data is displayed below the MScan Saved Reports Form. If you would like to delete a saved scan report select the Delete Report checkbox for the scan report you would like to delete and click the View|Delete Reports button. Refresh/reload the MScan Saved Reports tab page when deleting scan reports to see the current MScan Saved Reports Form data.', 'bulletproof-security');
|
88 |
|
89 |
?>
|
admin/mscan/mscan-iframe.php
ADDED
@@ -0,0 +1,356 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<style>
|
2 |
+
body {background:white}
|
3 |
+
div#bps-inpage-message{display:none}
|
4 |
+
div.update-nag{display:none}
|
5 |
+
div.notice{display:none}
|
6 |
+
div#bps-status-display{display:none}
|
7 |
+
div#query-monitor-main{visibility:hidden}
|
8 |
+
div#MScan-Time-Container {z-index:999999999;position:relative;top:0px;left:0px;background-color:#fff}
|
9 |
+
div#mscantimer {z-index:999999999;color:#000;font-size:13px!important;font-weight:600!important;line-height:18px;padding:4px 0px 0px 0px;position:relative;top:0px;left:0px;}
|
10 |
+
#MscanProgressBar {z-index:999999999;position:relative;top:0px;left:0px;width:100%;height:25px;background-color:#e8e8e8;border-radius:2px;-webkit-box-shadow:inset 0 2px 3px rgba(0, 0, 0, 0.25);-moz-box-shadow:inset 0 2px 3px rgba(0, 0, 0, 0.25);box-shadow:inset 0 2px 3px rgba(0, 0, 0, 0.25);}
|
11 |
+
#MscanBar {z-index:999999999;width:0%;height:25px;font-size:12px!important;font-weight:600!important;text-align:center;line-height:25px;color:white;}
|
12 |
+
.mscan-progress-bar {z-index:999999999;width:0;height:100%;background:#0e8bcb;background:-moz-linear-gradient(top, #0e8bcb 0%, #08496b 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%,#0e8bcb), color-stop(100%,#08496b));background:-webkit-linear-gradient(top, #0e8bcb 0%,#08496b 100%);background:-o-linear-gradient(top, #0e8bcb 0%,#08496b 100%);background:-ms-linear-gradient(top, #0e8bcb 0%,#08496b 100%);background:linear-gradient(to bottom, #0e8bcb 0%,#08496b 100%);-webkit-transition:width 1s ease-in-out;-moz-transition:width 1s ease-in-out;-o-transition:width 1s ease-in-out;transition:width 1s ease-in-out;}
|
13 |
+
|
14 |
+
@media screen and (min-width: 280px) and (max-width: 1043px){
|
15 |
+
div#bps-status-display{display:none}
|
16 |
+
}
|
17 |
+
@media screen and (min-width: 280px) and (max-width: 960px){
|
18 |
+
div#wpadminbar{display:none}
|
19 |
+
div#adminmenu, div#adminmenu .wp-submenu, div#adminmenuback, div#adminmenuwrap{display:none}
|
20 |
+
}
|
21 |
+
</style>
|
22 |
+
|
23 |
+
<?php
|
24 |
+
// don't add any commented out CSS code in the CSS code above - The commented out code will still be processed.
|
25 |
+
// Note if someone is displaying the BPS Pro status display in BPS plugin pages only it throws off the iframe section Don't adjust for that and don't use any CSS
|
26 |
+
// because it causes other problems.
|
27 |
+
|
28 |
+
// A typical site will load wp-load.php using $wp_load_file6.
|
29 |
+
if ( ! function_exists( 'get_option' ) ) {
|
30 |
+
$wp_load_file12 = dirname(dirname(dirname(dirname(dirname(dirname(dirname(dirname(dirname(dirname(dirname(dirname(__FILE__)))))))))))) . '/wp-load.php';
|
31 |
+
$wp_load_file11 = dirname(dirname(dirname(dirname(dirname(dirname(dirname(dirname(dirname(dirname(dirname(__FILE__))))))))))) . '/wp-load.php';
|
32 |
+
$wp_load_file10 = dirname(dirname(dirname(dirname(dirname(dirname(dirname(dirname(dirname(dirname(__FILE__)))))))))) . '/wp-load.php';
|
33 |
+
$wp_load_file9 = dirname(dirname(dirname(dirname(dirname(dirname(dirname(dirname(dirname(__FILE__))))))))) . '/wp-load.php';
|
34 |
+
$wp_load_file8 = dirname(dirname(dirname(dirname(dirname(dirname(dirname(dirname(__FILE__)))))))) . '/wp-load.php';
|
35 |
+
$wp_load_file7 = dirname(dirname(dirname(dirname(dirname(dirname(dirname(__FILE__))))))) . '/wp-load.php';
|
36 |
+
$wp_load_file6 = dirname(dirname(dirname(dirname(dirname(dirname(__FILE__)))))) . '/wp-load.php';
|
37 |
+
$wp_load_file5 = dirname(dirname(dirname(dirname(dirname(__FILE__))))) . '/wp-load.php';
|
38 |
+
$wp_load_file4 = dirname(dirname(dirname(dirname(__FILE__)))) . '/wp-load.php';
|
39 |
+
$wp_load_file3 = dirname(dirname(dirname(__FILE__))) . '/wp-load.php';
|
40 |
+
$wp_load_file2 = dirname(dirname(__FILE__)) . '/wp-load.php';
|
41 |
+
$wp_load_file1 = dirname(__FILE__) . '/wp-load.php';
|
42 |
+
|
43 |
+
if ( file_exists( $wp_load_file12 ) ) {
|
44 |
+
require_once $wp_load_file12;
|
45 |
+
} elseif ( file_exists( $wp_load_file11 ) ) {
|
46 |
+
require_once $wp_load_file11;
|
47 |
+
} elseif ( file_exists( $wp_load_file10 ) ) {
|
48 |
+
require_once $wp_load_file10;
|
49 |
+
} elseif ( file_exists( $wp_load_file9 ) ) {
|
50 |
+
require_once $wp_load_file9;
|
51 |
+
} elseif ( file_exists( $wp_load_file8 ) ) {
|
52 |
+
require_once $wp_load_file8;
|
53 |
+
} elseif ( file_exists( $wp_load_file7 ) ) {
|
54 |
+
require_once $wp_load_file7;
|
55 |
+
} elseif ( file_exists( $wp_load_file6 ) ) {
|
56 |
+
require_once $wp_load_file6;
|
57 |
+
} elseif ( file_exists( $wp_load_file5 ) ) {
|
58 |
+
require_once $wp_load_file5;
|
59 |
+
} elseif ( file_exists( $wp_load_file4 ) ) {
|
60 |
+
require_once $wp_load_file4;
|
61 |
+
} elseif ( file_exists( $wp_load_file3 ) ) {
|
62 |
+
require_once $wp_load_file3;
|
63 |
+
} elseif ( file_exists( $wp_load_file2 ) ) {
|
64 |
+
require_once $wp_load_file2;
|
65 |
+
} elseif ( file_exists( $wp_load_file1 ) ) {
|
66 |
+
require_once $wp_load_file1;
|
67 |
+
} else {
|
68 |
+
echo '<strong><font color="#fb0101">BPS cannot find and load the WordPress wp-load.php file. MScan cannot be used on this website until that problem is fixed.</font></strong>';
|
69 |
+
exit();
|
70 |
+
}
|
71 |
+
}
|
72 |
+
|
73 |
+
// This function is executed in the js below after the actual scan has completed with MScan Status value: 3 or 5.
|
74 |
+
// IMPORTANT: Do not echo anything directly in this function. It will break the js timer.
|
75 |
+
function bpsPro_mscan_completed() {
|
76 |
+
|
77 |
+
$MScan_status = get_option('bulletproof_security_options_MScan_status');
|
78 |
+
$MScan_options = get_option('bulletproof_security_options_MScan');
|
79 |
+
$mstime = ! isset($MScan_options['mscan_max_time_limit']) ? '' : $MScan_options['mscan_max_time_limit'];
|
80 |
+
ini_set('max_execution_time', $mstime);
|
81 |
+
|
82 |
+
if ( isset($MScan_status['bps_mscan_status']) && $MScan_status['bps_mscan_status'] == '3' || isset($MScan_status['bps_mscan_status']) && $MScan_status['bps_mscan_status'] == '5' ) {
|
83 |
+
|
84 |
+
$MScan_status_db = array(
|
85 |
+
'bps_mscan_time_start' => $MScan_status['bps_mscan_time_start'],
|
86 |
+
'bps_mscan_time_stop' => $MScan_status['bps_mscan_time_stop'],
|
87 |
+
'bps_mscan_time_end' => $MScan_status['bps_mscan_time_end'],
|
88 |
+
'bps_mscan_time_remaining' => $MScan_status['bps_mscan_time_remaining'],
|
89 |
+
'bps_mscan_status' => '4',
|
90 |
+
'bps_mscan_last_scan_timestamp' => $MScan_status['bps_mscan_last_scan_timestamp'],
|
91 |
+
'bps_mscan_total_time' => $MScan_status['bps_mscan_total_time'],
|
92 |
+
'bps_mscan_total_website_files' => '',
|
93 |
+
'bps_mscan_total_wp_core_files' => $MScan_status['bps_mscan_total_wp_core_files'],
|
94 |
+
'bps_mscan_total_non_image_files' => $MScan_status['bps_mscan_total_non_image_files'],
|
95 |
+
'bps_mscan_total_image_files' => '',
|
96 |
+
'bps_mscan_total_all_scannable_files' => $MScan_status['bps_mscan_total_all_scannable_files'],
|
97 |
+
'bps_mscan_total_skipped_files' => $MScan_status['bps_mscan_total_skipped_files'],
|
98 |
+
'bps_mscan_total_suspect_files' => $MScan_status['bps_mscan_total_suspect_files'],
|
99 |
+
'bps_mscan_suspect_skipped_files' => $MScan_status['bps_mscan_suspect_skipped_files'],
|
100 |
+
'bps_mscan_total_suspect_db' => $MScan_status['bps_mscan_total_suspect_db'],
|
101 |
+
'bps_mscan_total_ignored_files' => $MScan_status['bps_mscan_total_ignored_files'],
|
102 |
+
'bps_mscan_total_plugin_files' => $MScan_status['bps_mscan_total_plugin_files'],
|
103 |
+
'bps_mscan_total_theme_files' => $MScan_status['bps_mscan_total_theme_files']
|
104 |
+
);
|
105 |
+
|
106 |
+
foreach( $MScan_status_db as $key => $value ) {
|
107 |
+
update_option('bulletproof_security_options_MScan_status', $MScan_status_db);
|
108 |
+
}
|
109 |
+
}
|
110 |
+
}
|
111 |
+
|
112 |
+
$MScan_status = get_option('bulletproof_security_options_MScan_status');
|
113 |
+
$MScan_options = get_option('bulletproof_security_options_MScan');
|
114 |
+
|
115 |
+
$mscan_start_time = ! isset($MScan_status['bps_mscan_time_start']) ? '' : $MScan_status['bps_mscan_time_start'];
|
116 |
+
$mscan_time_stop = ! isset($MScan_status['bps_mscan_time_stop']) ? '' : $MScan_status['bps_mscan_time_stop'];
|
117 |
+
$mscan_future_time = ! isset($MScan_status['bps_mscan_time_remaining']) ? '' : $MScan_status['bps_mscan_time_remaining'];
|
118 |
+
$mscan_status = ! isset($MScan_status['bps_mscan_status']) ? '' : $MScan_status['bps_mscan_status'];
|
119 |
+
$mscan_timestamp = ! isset($MScan_status['bps_mscan_last_scan_timestamp']) ? '' : $MScan_status['bps_mscan_last_scan_timestamp'];
|
120 |
+
$mscan_total_time = ! isset($MScan_status['bps_mscan_total_time']) ? '' : $MScan_status['bps_mscan_total_time'];
|
121 |
+
$mscan_suspect_files = ! isset($MScan_status['bps_mscan_total_suspect_files']) ? '' : $MScan_status['bps_mscan_total_suspect_files'];
|
122 |
+
$mscan_suspect_skipped_files = ! isset($MScan_status['bps_mscan_suspect_skipped_files']) ? '' : $MScan_status['bps_mscan_suspect_skipped_files'];
|
123 |
+
$mscan_suspect_db = ! isset($MScan_status['bps_mscan_total_suspect_db']) ? '' : $MScan_status['bps_mscan_total_suspect_db'];
|
124 |
+
$mscan_skipped_files = ! isset($MScan_status['bps_mscan_total_skipped_files']) ? '' : $MScan_status['bps_mscan_total_skipped_files'];
|
125 |
+
|
126 |
+
if ( isset($MScan_options['mscan_scan_skipped_files']) && $MScan_options['mscan_scan_skipped_files'] == 'On' ) {
|
127 |
+
$mscan_total_files = $MScan_status['bps_mscan_total_skipped_files'];
|
128 |
+
$skipped_scan = 1;
|
129 |
+
} else {
|
130 |
+
$mscan_total_files = ! isset($MScan_status['bps_mscan_total_all_scannable_files']) ? '' : $MScan_status['bps_mscan_total_all_scannable_files'];
|
131 |
+
$skipped_scan = 0;
|
132 |
+
}
|
133 |
+
|
134 |
+
if ( isset($MScan_options['mscan_scan_database']) && $MScan_options['mscan_scan_database'] == 'On' ) {
|
135 |
+
$mscan_db_scan = 1;
|
136 |
+
} else {
|
137 |
+
$mscan_db_scan = 0;
|
138 |
+
}
|
139 |
+
|
140 |
+
|
141 |
+
if ( isset($MScan_status['bps_mscan_status']) && $MScan_status['bps_mscan_status'] == '2' || isset($MScan_status['bps_mscan_status']) && $MScan_status['bps_mscan_status'] == '3' || isset($MScan_status['bps_mscan_status']) && $MScan_status['bps_mscan_status'] == '5' ) { ?>
|
142 |
+
|
143 |
+
<div id="MscanProgressBar">
|
144 |
+
<div id="MscanBar" class="mscan-progress-bar"></div>
|
145 |
+
</div>
|
146 |
+
|
147 |
+
<?php } ?>
|
148 |
+
|
149 |
+
<div id="MScan-Time-Container">
|
150 |
+
<div id="mscantimer"></div>
|
151 |
+
</div>
|
152 |
+
|
153 |
+
<script type="text/javascript">
|
154 |
+
/* <![CDATA[ */
|
155 |
+
var currentTimeI = new Date().getTime() / 1000;
|
156 |
+
var futureTimeI = <?php echo json_encode( $mscan_future_time, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
157 |
+
var scanStartI = <?php echo json_encode( $mscan_start_time, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
158 |
+
var mscanStatusI = <?php echo json_encode( $mscan_status, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
159 |
+
var timeStampI = <?php echo json_encode( $mscan_timestamp, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
160 |
+
var totalScanTimeI = <?php echo json_encode( $mscan_total_time, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
161 |
+
var totalFilesI = <?php echo json_encode( $mscan_total_files, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
162 |
+
var skippedFilesI = <?php echo json_encode( $mscan_skipped_files, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
163 |
+
var skippedScanI = <?php echo json_encode( $skipped_scan, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
164 |
+
var dbScanI = <?php echo json_encode( $mscan_db_scan, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
165 |
+
var suspectI = <?php echo json_encode( $mscan_suspect_files, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
166 |
+
var suspectSkipI = <?php echo json_encode( $mscan_suspect_skipped_files, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
167 |
+
var suspectDBI = <?php echo json_encode( $mscan_suspect_db, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
168 |
+
|
169 |
+
var timeRemainingI = futureTimeI - currentTimeI;
|
170 |
+
var minuteI = 60;
|
171 |
+
var hourI = 60 * 60;
|
172 |
+
var dayI = 60 * 60 * 24;
|
173 |
+
var dayFloorI = Math.floor(totalScanTimeI / dayI);
|
174 |
+
var hourFloorI = Math.floor((totalScanTimeI - dayFloorI * dayI) / hourI);
|
175 |
+
var minuteFloorI = Math.floor((totalScanTimeI - dayFloorI * dayI - hourFloorI * hourI) / minuteI);
|
176 |
+
var secondFloorI = Math.floor((totalScanTimeI - dayFloorI * dayI - hourFloorI * hourI - minuteFloorI * minuteI));
|
177 |
+
var hourFloorFI = ("0" + hourFloorI).slice(-2);
|
178 |
+
var minuteFloorFI = ("0" + minuteFloorI).slice(-2);
|
179 |
+
var secondFloorFI = ("0" + secondFloorI).slice(-2);
|
180 |
+
|
181 |
+
// 1 = On | 0 = Off or 0 in the case of Total Files or Suspect Files | blank value = 0|Off
|
182 |
+
|
183 |
+
if ( totalFilesI == "" ) {
|
184 |
+
totalFilesI = 0;
|
185 |
+
}
|
186 |
+
|
187 |
+
if ( skippedFilesI == "" ) {
|
188 |
+
skippedFilesI = 0;
|
189 |
+
}
|
190 |
+
|
191 |
+
if ( suspectI == "" ) {
|
192 |
+
suspectI = 0;
|
193 |
+
}
|
194 |
+
|
195 |
+
if ( suspectSkipI == "" ) {
|
196 |
+
suspectSkipI = 0;
|
197 |
+
}
|
198 |
+
|
199 |
+
if ( suspectDBI == "" ) {
|
200 |
+
suspectDBI = 0;
|
201 |
+
}
|
202 |
+
|
203 |
+
// This condition prevents displaying the previous scan results if the scan finishes very quickly.
|
204 |
+
if ( mscanStatusI == 4 && futureTimeI > currentTimeI ) {
|
205 |
+
document.getElementById("mscantimer").innerHTML = "The Scan Completed Before The Scan Estimate Time Finished. Reload/Refresh The MScan Page For Scan Results.<br />Note: For best scan results reload/refresh the MScan page before running a new scan.";
|
206 |
+
console.log( "Status: 4 : Future Time > Time : Scan Completed Before The Scan Estimate Time Finished" );
|
207 |
+
|
208 |
+
} else {
|
209 |
+
|
210 |
+
if ( mscanStatusI == 4 && skippedScanI == 0 ) {
|
211 |
+
|
212 |
+
if ( dbScanI == 1 ) {
|
213 |
+
document.getElementById("mscantimer").innerHTML = "Scan Completed [" + timeStampI + "] : Total Scan Time: " + hourFloorFI + ":" + minuteFloorFI + ":" + secondFloorFI + " : Total Files Scanned: " + totalFilesI + " : Skipped Files: " + skippedFilesI + " : Suspicious Files: " + suspectI + " : Suspicious DB Entries: " + suspectDBI + "<br />" + "To view the detailed Scan Report click the View Report button below. Please view the Scan Report before clicking the Suspicious Files and DB Entries accordion tabs below.";
|
214 |
+
console.log( "Status: 4 : Future Time < Time : Skipped Files: Off : DB Scan: On" );
|
215 |
+
|
216 |
+
} else {
|
217 |
+
|
218 |
+
document.getElementById("mscantimer").innerHTML = "Scan Completed [" + timeStampI + "] : Total Scan Time: " + hourFloorFI + ":" + minuteFloorFI + ":" + secondFloorFI + " : Total Files Scanned: " + totalFilesI + " : Skipped Files: " + skippedFilesI + " : Suspicious Files: " + suspectI + "<br />" + "To view the detailed Scan Report click the View Report button below. Please view the Scan Report before clicking the Suspicious Files and DB Entries accordion tabs below.";
|
219 |
+
console.log( "Status: 4 : Future Time < Time : Skipped Files: Off : DB Scan: Off" );
|
220 |
+
}
|
221 |
+
}
|
222 |
+
|
223 |
+
if ( mscanStatusI == 4 && skippedScanI == 1 ) {
|
224 |
+
document.getElementById("mscantimer").innerHTML = "Skipped File Scan Completed [" + timeStampI + "] : Total Scan Time: " + hourFloorFI + ":" + minuteFloorFI + ":" + secondFloorFI + " : Total Files Scanned: " + totalFilesI + " : Suspicious Files: " + suspectSkipI + "<br />" + "To view the detailed Scan Report click the View Report button below. Please view the Scan Report before clicking the Suspicious Files and DB Entries accordion tabs below.";
|
225 |
+
console.log( "Status: 4 : Future Time < Time : Skipped Files: On : DB Scan: NA" );
|
226 |
+
}
|
227 |
+
}
|
228 |
+
|
229 |
+
var MScan = setInterval(function(){ MScanTimer() }, 1000);
|
230 |
+
|
231 |
+
function MScanTimer() {
|
232 |
+
|
233 |
+
var currentTime = new Date().getTime() / 1000;
|
234 |
+
var futureTime = <?php echo json_encode( $mscan_future_time, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
235 |
+
var scanStart = <?php echo json_encode( $mscan_start_time, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
236 |
+
var scanStop = <?php echo json_encode( $mscan_time_stop, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
237 |
+
var totalFiles = <?php echo json_encode( $mscan_total_files, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
238 |
+
var mscanStatus = <?php echo json_encode( $mscan_status, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
239 |
+
|
240 |
+
var timeRemaining = futureTime - (currentTime - 10); // - 10 forces the scan time caculation to appear to end earlier. Just a visual gimmick.
|
241 |
+
var timeRemainingTE = futureTime - (currentTime + 30); // + 30 second countdown used in Estimated Scan Time Exceeded. Just a visual gimmick.
|
242 |
+
var timeRemainingPB = futureTime - currentTime;
|
243 |
+
|
244 |
+
var minute = 60;
|
245 |
+
var hour = 60 * 60;
|
246 |
+
var day = 60 * 60 * 24;
|
247 |
+
|
248 |
+
// Right to left direction decrease - 100% to 0% width and used in the pBarPercentWidthIncrease math below - don't comment this var out.
|
249 |
+
var pBarPercentWidthDecrease = Math.round(timeRemainingPB/(futureTime - scanStart) * 100);
|
250 |
+
// Left to right direction increase - 0% to 100% width
|
251 |
+
var pBarPercentWidthIncrease = 100 - pBarPercentWidthDecrease;
|
252 |
+
|
253 |
+
var dayFloor = Math.floor(timeRemaining / day);
|
254 |
+
var hourFloor = Math.floor((timeRemaining - dayFloor * day) / hour);
|
255 |
+
var minuteFloor = Math.floor((timeRemaining - dayFloor * day - hourFloor * hour) / minute);
|
256 |
+
var secondFloor = Math.floor((timeRemaining - dayFloor * day - hourFloor * hour - minuteFloor * minute));
|
257 |
+
var hourFloorF = ("0" + hourFloor).slice(-2);
|
258 |
+
var minuteFloorF = ("0" + minuteFloor).slice(-2);
|
259 |
+
var secondFloorF = ("0" + secondFloor).slice(-2);
|
260 |
+
|
261 |
+
var dayFloorPB = Math.floor(timeRemainingPB / day);
|
262 |
+
var hourFloorPB = Math.floor((timeRemainingPB - dayFloorPB * day) / hour);
|
263 |
+
var minuteFloorPB = Math.floor((timeRemainingPB - dayFloorPB * day - hourFloorPB * hour) / minute);
|
264 |
+
var secondFloorPB = Math.floor((timeRemainingPB - dayFloorPB * day - hourFloorPB * hour - minuteFloorPB * minute));
|
265 |
+
var hourFloorFPB = ("0" + hourFloorPB).slice(-2);
|
266 |
+
var minuteFloorFPB = ("0" + minuteFloorPB).slice(-2);
|
267 |
+
var secondFloorFPB = ("0" + secondFloorPB).slice(-2);
|
268 |
+
|
269 |
+
var dayFloorTE = Math.floor(timeRemainingTE / day);
|
270 |
+
var hourFloorTE = Math.floor((timeRemainingTE - dayFloorTE * day) / hour);
|
271 |
+
var minuteFloorTE = Math.floor((timeRemainingTE - dayFloorTE * day - hourFloorTE * hour) / minute);
|
272 |
+
var secondFloorTE = Math.floor((timeRemainingTE - dayFloorTE * day - hourFloorTE * hour - minuteFloorTE * minute));
|
273 |
+
var hourFloorFTE = ("0" + hourFloorTE).slice(-2);
|
274 |
+
var minuteFloorFTE = ("0" + minuteFloorTE).slice(-2);
|
275 |
+
var secondFloorFTE = ("0" + secondFloorTE).slice(-2);
|
276 |
+
|
277 |
+
var ScanCompleted = "<?php bpsPro_mscan_completed(); ?>";
|
278 |
+
|
279 |
+
// IMPORTANT: Reloading the page during any Progress bar conditions breaks the display of the Progress bar.
|
280 |
+
// Scan times can vary significantly depending on caching and other factors. The visual stuff is primarily for letting someone know things are still happening.
|
281 |
+
// The only time a scan will not complete successfully will be if the mscan-ajax-functions.php file functions fail for some reason. ie folder/Ownership, etc. problem.
|
282 |
+
// MScan Status 1 is set when the Start button is clicked and means the scan estimate function is being processed. Has an AJAX action.
|
283 |
+
// MScan Status 2 is set at the end of the scan estimate function and means the file scanning function and other functions are still being processed.
|
284 |
+
// MScan Status 3 is set at the end of the file scanning function and means all scanning is completed.
|
285 |
+
// MScan Status 3 Process the ScanCompleted var, which executes the PHP bpsPro_mscan_completed() function.
|
286 |
+
// MScan Status 4 is set when the MScan Stop button is clicked and on Scan Completion.
|
287 |
+
// MScan Status 4 is a "resting/completed" state that displays the scan results.
|
288 |
+
// MScan Status 5 is set when the Scan Time Estimate Tool button is clicked. Has an AJAX action. 1 > 5 > 4. No longer used.
|
289 |
+
// futureTime is the current time + the scan estimate time total (time remaining).
|
290 |
+
// A typical/average file scan range is: 3,000 to 8,000 files.
|
291 |
+
|
292 |
+
if ( futureTime > currentTime ) {
|
293 |
+
|
294 |
+
if ( mscanStatus == 1 && secondFloorF <= 10 ) {
|
295 |
+
window.location.reload(true);
|
296 |
+
console.log( "Status: 1 : Future Time > Time : secondFloor <= 10 : " + secondFloorF );
|
297 |
+
}
|
298 |
+
|
299 |
+
if ( mscanStatus == 1 && secondFloorF > 9 ) {
|
300 |
+
document.getElementById("mscantimer").innerHTML = "Calculating Scan Time: " + hourFloorF + ":" + minuteFloorF + ":" + secondFloorF + "<br />" + "You can leave the MScan page while a scan is in progress and the scan will continue until it is completed.";
|
301 |
+
console.log( "Status: 1 : Future Time > Time : Calculating Scan Time : secondFloorF > 9 : " + secondFloorF );
|
302 |
+
}
|
303 |
+
|
304 |
+
// Removing the status 5 condition: mscanStatus == 5 && totalFiles != "". Status 5 is no longer used.
|
305 |
+
if ( mscanStatus == 2 && totalFiles != "" || mscanStatus == 3 && totalFiles != "" ) {
|
306 |
+
document.getElementById("MscanBar").style.width = pBarPercentWidthIncrease + '%';
|
307 |
+
document.getElementById("MscanBar").innerHTML = pBarPercentWidthIncrease + '%';
|
308 |
+
document.getElementById("mscantimer").innerHTML = "Scan Completion Time Remaining: " + hourFloorFPB + ":" + minuteFloorFPB + ":" + secondFloorFPB + " : Scanning " + totalFiles + " Files";
|
309 |
+
console.log( "Status: 2 or 3: Future Time > Time : Total Files: not blank" );
|
310 |
+
}
|
311 |
+
|
312 |
+
// A blank value is set on MScan Start button click for the total scannable files DB option.
|
313 |
+
// Removing the status 5 condition: || mscanStatus == 5 && totalFiles == "". Status 5 is no longer used.
|
314 |
+
if ( mscanStatus == 2 && totalFiles == "" ) {
|
315 |
+
document.getElementById("MscanBar").style.width = pBarPercentWidthIncrease + '%';
|
316 |
+
document.getElementById("MscanBar").innerHTML = pBarPercentWidthIncrease + '%';
|
317 |
+
document.getElementById("mscantimer").innerHTML = "Processing Total File Count: Still scanning files: 00:00:" + secondFloorFTE;
|
318 |
+
console.log( "Status: 2: Future Time > Time : Total Files: blank" );
|
319 |
+
}
|
320 |
+
|
321 |
+
} else {
|
322 |
+
|
323 |
+
// Status 5 is no longer used
|
324 |
+
if ( mscanStatus == 5 && futureTime < currentTime ) {
|
325 |
+
window.location.reload(true);
|
326 |
+
//clearInterval(MScan); // for testing ONLY
|
327 |
+
console.log( "Status: 5 : Future Time < Time" );
|
328 |
+
}
|
329 |
+
|
330 |
+
// Clicking MScan Reset sets scanStart to a blank value. scanStop != "stop" prevents an endless reload loop from occurring.
|
331 |
+
if ( mscanStatus == 4 && futureTime < currentTime && totalFiles == "" && scanStart != "" && scanStop != "stop" ) {
|
332 |
+
window.location.reload(true);
|
333 |
+
console.log( "Status: 4 : Future Time < Time : Total Files: blank : Start: not blank : Stop: not stop" );
|
334 |
+
}
|
335 |
+
|
336 |
+
if ( mscanStatus == 3 && futureTime < currentTime ) {
|
337 |
+
window.location.reload(true);
|
338 |
+
document.getElementById("mscantimer").innerHTML = ScanCompleted;
|
339 |
+
console.log( "Status: 3 : Future Time < Time : Scan Completed" );
|
340 |
+
}
|
341 |
+
|
342 |
+
// Unfortunately, this condition goes over and under time. Not much I can do about that.
|
343 |
+
if ( mscanStatus == 2 && futureTime < currentTime ) {
|
344 |
+
window.location.reload(true);
|
345 |
+
document.getElementById("mscantimer").innerHTML = "Estimated Scan Time Exceeded: Still scanning files: 00:00:" + secondFloorFTE;
|
346 |
+
console.log( "Status: 2 : Future Time < Time : Scan Time Estimate Exceeded. Still Scanning Files." );
|
347 |
+
}
|
348 |
+
|
349 |
+
if ( mscanStatus == 1 && futureTime < currentTime || mscanStatus == 1 && secondFloorF <= 10 ) {
|
350 |
+
window.location.reload(true);
|
351 |
+
console.log( "Status: 1 : Future Time < Time : secondFloorF <= 10 : " + secondFloorF );
|
352 |
+
}
|
353 |
+
}
|
354 |
+
}
|
355 |
+
/* ]]> */
|
356 |
+
</script>
|
admin/mscan/mscan.php
CHANGED
@@ -1,25 +1,16 @@
|
|
1 |
-
<?php
|
2 |
-
// Direct calls to this file are Forbidden when core files are not present
|
3 |
-
if ( ! function_exists('add_action') ) {
|
4 |
-
header('Status: 403 Forbidden');
|
5 |
-
header('HTTP/1.1 403 Forbidden');
|
6 |
-
exit();
|
7 |
-
}
|
8 |
-
|
9 |
-
if ( ! current_user_can('manage_options') ) {
|
10 |
-
header('Status: 403 Forbidden');
|
11 |
-
header('HTTP/1.1 403 Forbidden');
|
12 |
-
exit();
|
13 |
-
}
|
14 |
-
?>
|
15 |
-
|
16 |
<!-- force the vertical scrollbar -->
|
17 |
<style>
|
18 |
#wpwrap{min-height:100.1%};
|
|
|
19 |
</style>
|
20 |
|
21 |
<div id="bps-container" class="wrap" style="margin:45px 20px 5px 0px;">
|
22 |
|
|
|
|
|
|
|
|
|
|
|
23 |
<noscript><div id="message" class="updated" style="font-weight:600;font-size:13px;padding:5px;background-color:#dfecf2;border:1px solid #999;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);"><span style="color:blue">BPS Warning: JavaScript is disabled in your Browser</span><br />BPS plugin pages will not display visually correct and all BPS JavaScript functionality will not work correctly.</div></noscript>
|
24 |
|
25 |
<?php
|
@@ -31,10 +22,13 @@ if ( ! current_user_can('manage_options') ) {
|
|
31 |
echo '</div>';
|
32 |
|
33 |
## 2.9: Created new file for mscan pattern matching code. If web host deletes or nulls that file or Dir then mscan will not work, but BPS Pro will still work.
|
|
|
|
|
|
|
34 |
function bpsPro_mscan_pattern_match_file_check() {
|
35 |
|
36 |
$mscan_db_pattern_match_options = get_option('bulletproof_security_options_mscan_patterns');
|
37 |
-
|
38 |
if ( ! empty($mscan_db_pattern_match_options['mscan_pattern_match_files']) ) {
|
39 |
|
40 |
foreach ( $mscan_db_pattern_match_options['mscan_pattern_match_files'] as $key => $value ) {
|
@@ -50,23 +44,18 @@ function bpsPro_mscan_pattern_match_file_check() {
|
|
50 |
if ( $inner_key == 'php_patterns' ) {
|
51 |
$php_pattern = $inner_value;
|
52 |
}
|
53 |
-
if ( $inner_key == 'image_patterns' ) {
|
54 |
-
$image_pattern = $inner_value;
|
55 |
-
}
|
56 |
}
|
57 |
}
|
58 |
}
|
59 |
-
|
60 |
if ( empty($js_pattern) ) {
|
61 |
-
$text = '<div style="background-color:#dfecf2;border:1px solid #999;font-size:1em;font-weight:600;padding:0px 5px;margin:-7px 0px 10px 0px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);"><font color="#fb0101">'.__('The MScan pattern matching code does not exist in your database.', 'bulletproof-security').'</font><br>'.__('Most likely your web host saw the pattern matching code in the MScan /bulletproof-security/admin/htaccess/mscan-pattern-match.php file as malicious and has either deleted the file or made the file or folder unreadable.', 'bulletproof-security').'<br>'.__('Unfortunately that means you will not be able to use MScan on your website/server/web host.', 'bulletproof-security').'</div>';
|
62 |
echo $text;
|
63 |
}
|
64 |
}
|
65 |
bpsPro_mscan_pattern_match_file_check();
|
66 |
?>
|
67 |
|
68 |
-
<h2 class="bps-tab-title"><?php _e('BulletProof Security ~ MScan Malware Scanner', 'bulletproof-security'); ?></h2>
|
69 |
-
|
70 |
<div id="message" class="updated" style="border:1px solid #999;background-color:#000;">
|
71 |
|
72 |
<?php
|
@@ -84,7 +73,7 @@ if ( isset( $_GET['settings-updated'] ) && @$_GET['settings-updated'] == true) {
|
|
84 |
|
85 |
$bpsSpacePop = '-------------------------------------------------------------';
|
86 |
|
87 |
-
require_once
|
88 |
|
89 |
// Replace ABSPATH = wp-content/plugins
|
90 |
$bps_plugin_dir = str_replace( ABSPATH, '', WP_PLUGIN_DIR );
|
@@ -94,47 +83,139 @@ $bps_wpcontent_dir = str_replace( ABSPATH, '', WP_CONTENT_DIR );
|
|
94 |
$wp_upload_dir = wp_upload_dir();
|
95 |
$bps_uploads_dir = str_replace( ABSPATH, '', $wp_upload_dir['basedir'] );
|
96 |
|
97 |
-
|
|
|
98 |
|
99 |
-
|
100 |
|
101 |
-
|
102 |
-
|
103 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
}
|
105 |
}
|
106 |
|
107 |
-
|
108 |
|
|
|
109 |
</div>
|
110 |
|
|
|
|
|
111 |
<!-- jQuery UI Tab Menu -->
|
112 |
<div id="bps-tabs" class="bps-menu">
|
113 |
<div id="bpsHead"><img src="<?php echo plugins_url('/bulletproof-security/admin/images/bps-free-logo.gif'); ?>" /></div>
|
114 |
<ul>
|
115 |
-
<li><a href="#bps-tabs-1"><?php _e('MScan', 'bulletproof-security'); ?></a></li>
|
116 |
<li><a href="#bps-tabs-2"><?php _e('MScan Log', 'bulletproof-security'); ?></a></li>
|
117 |
-
<li><a href="#bps-tabs-3"><?php _e('
|
|
|
|
|
118 |
</ul>
|
119 |
|
120 |
<div id="bps-tabs-1" class="bps-tab-page">
|
121 |
|
122 |
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="bps-help_faq_table">
|
123 |
<tr>
|
124 |
-
<td class="bps-table_title">
|
125 |
-
<?php $text = '<h2>'.__('MScan ~ ', 'bulletproof-security').'<span style="font-size:.75em;">'.__('Scans website files for hacker files or code ~ Scans the WP database for hacker code.', 'bulletproof-security').'</span></h2><div class="promo-text">'.__('Want even more security protection?', 'bulletproof-security').'<br>'.__('Get real-time automated security protection that is far superior to all malware scanners: ', 'bulletproof-security').'<a href="https://affiliates.ait-pro.com/po/" target="_blank" title="ARQ IDPS">'.__('Get BPS Pro ARQ IDPS', 'bulletproof-security').'</a></div>'; echo $text;
|
126 |
-
|
127 |
-
$text2 = '<div style="background-color:#dfecf2;border:1px solid #999;font-size:1em;font-weight:600;padding:0px 5px;margin:0px 10px 10px 0px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);"><font color="blue">'.__('MScan Disclaimer:', 'bulletproof-security').'</font><br>'.__('MScan is a very sensitive scanner that will detect hacker\'s code and files that other WordPress malware scanners will not detect, but unfortunately that also means that MScan will detect a lot of false-positives. The majority of things that MScan detects as suspicious are not going to be hacker\'s code or files and can be ignored using the Ignore File or Ignore DB Entry in the View|Ignore|Delete Suspicious Files and View|Ignore Suspicious DB Entries Forms below. For additional help information click this link: ', 'bulletproof-security').' <a href="https://forum.ait-pro.com/forums/topic/mscan-malware-scanner-guide/" target="_blank" title="MScan Malware Scanner Guide">'.__('MScan Malware Scanner Guide', 'bulletproof-security').'</a></div>';
|
128 |
-
echo $text2;
|
129 |
-
?>
|
130 |
</td>
|
131 |
</tr>
|
132 |
<tr>
|
133 |
<td class="bps-table_cell_help">
|
134 |
|
135 |
-
<h3 style="margin:0px 0px 10px 0px;"><?php _e('MScan', 'bulletproof-security'); ?> <button id="bps-open-modal1" class="button bps-modal-button"><?php _e('Read Me', 'bulletproof-security'); ?></button></h3>
|
136 |
|
137 |
-
<div id="bps-modal-content1" class="bps-dialog-hide" title="<?php _e('MScan', 'bulletproof-security'); ?>">
|
138 |
<p>
|
139 |
<?php
|
140 |
$text = '<strong>'.__('This Read Me Help window is draggable (top) and resizable (bottom right corner)', 'bulletproof-security').'</strong><br><br>';
|
@@ -144,18 +225,65 @@ function bpsPro_mscan_openbasedir_check() {
|
|
144 |
?>
|
145 |
<strong><a href="https://forum.ait-pro.com/forums/topic/mscan-malware-scanner-guide/" title="MScan Malware Scanner Guide" target="_blank"><?php _e('MScan Malware Scanner Guide', 'bulletproof-security'); ?></a></strong><br />
|
146 |
<strong><a href="https://forum.ait-pro.com/forums/topic/mscan-troubleshooting-questions-problems-and-code-posting/" title="MScan Troubleshooting & Code Posting" target="_blank"><?php _e('MScan Troubleshooting & Code Posting', 'bulletproof-security'); ?></a></strong><br />
|
147 |
-
<strong><a href="https://forum.ait-pro.com/forums/topic/read-me-first-
|
148 |
|
149 |
-
<?php echo $bps_modal_content1;
|
150 |
-
</p>
|
151 |
</div>
|
152 |
|
|
|
|
|
153 |
|
154 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
155 |
|
156 |
-
|
157 |
-
|
158 |
-
|
|
|
159 |
|
160 |
$MStable_name = $wpdb->prefix . "bpspro_mscan";
|
161 |
|
@@ -179,20 +307,10 @@ function bpsPro_mscan_openbasedir_check() {
|
|
179 |
UNIQUE KEY id (mscan_id)
|
180 |
);";
|
181 |
|
182 |
-
require_once
|
183 |
dbDelta($sql);
|
184 |
}
|
185 |
|
186 |
-
echo $bps_topDiv;
|
187 |
-
$text = '<font color="green"><strong>'.__('The MScan Database Table: ', 'bulletproof-security').$MStable_name.__(' data has been deleted.', 'bulletproof-security').'</strong></font>';
|
188 |
-
echo $text;
|
189 |
-
echo $bps_bottomDiv;
|
190 |
-
}
|
191 |
-
|
192 |
-
// Form Processing: Delete Scan Status Tool Form
|
193 |
-
if ( isset( $_POST['Submit-MScan-Delete-Status'] ) && current_user_can('manage_options') ) {
|
194 |
-
check_admin_referer('bulletproof_security_mscan_delete_status');
|
195 |
-
|
196 |
$MScan_status = get_option('bulletproof_security_options_MScan_status');
|
197 |
|
198 |
$MScan_status_db = array(
|
@@ -212,15 +330,34 @@ function bpsPro_mscan_openbasedir_check() {
|
|
212 |
'bps_mscan_total_suspect_files' => '',
|
213 |
'bps_mscan_suspect_skipped_files' => '',
|
214 |
'bps_mscan_total_suspect_db' => '',
|
215 |
-
'bps_mscan_total_ignored_files' => ''
|
|
|
|
|
216 |
);
|
217 |
|
218 |
foreach( $MScan_status_db as $key => $value ) {
|
219 |
update_option('bulletproof_security_options_MScan_status', $MScan_status_db);
|
220 |
}
|
221 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
222 |
echo $bps_topDiv;
|
223 |
-
$text = '<font color="green"><strong>'.__('MScan
|
224 |
echo $text;
|
225 |
echo $bps_bottomDiv;
|
226 |
}
|
@@ -243,14 +380,16 @@ function bpsPro_mscan_openbasedir_check() {
|
|
243 |
'bps_mscan_status' => '4',
|
244 |
'bps_mscan_last_scan_timestamp' => $MScan_status['bps_mscan_last_scan_timestamp'],
|
245 |
'bps_mscan_total_time' => $MScan_status['bps_mscan_total_time'],
|
246 |
-
'bps_mscan_total_website_files' =>
|
247 |
'bps_mscan_total_wp_core_files' => $MScan_status['bps_mscan_total_wp_core_files'],
|
248 |
'bps_mscan_total_non_image_files' => $MScan_status['bps_mscan_total_non_image_files'],
|
249 |
-
'bps_mscan_total_image_files' =>
|
250 |
'bps_mscan_total_all_scannable_files' => $MScan_status['bps_mscan_total_all_scannable_files'],
|
251 |
'bps_mscan_total_skipped_files' => $MScan_status['bps_mscan_total_skipped_files'],
|
252 |
'bps_mscan_total_suspect_files' => $MScan_status['bps_mscan_total_suspect_files'],
|
253 |
-
'bps_mscan_total_ignored_files' => $MScan_status['bps_mscan_total_ignored_files']
|
|
|
|
|
254 |
);
|
255 |
|
256 |
foreach( $MScan_status_db as $key => $value ) {
|
@@ -258,61 +397,17 @@ function bpsPro_mscan_openbasedir_check() {
|
|
258 |
}
|
259 |
|
260 |
$mscan_scan_skipped_files_message = '';
|
261 |
-
$mscan_image_files_message = '';
|
262 |
|
263 |
if ( $MScan_options['mscan_scan_skipped_files'] == 'On' ) {
|
264 |
$mscan_scan_skipped_files_message = '<br><font color="blue"><strong>'.__('Skipped file scanning is turned On. Only skipped files will be scanned.', 'bulletproof-security').'</strong></font>';
|
265 |
}
|
266 |
|
267 |
-
if ( $MScan_options['mscan_scan_images'] == 'On' ) {
|
268 |
-
$mscan_image_files_message = '<br><font color="blue"><strong>'.__('Image file scanning is turned On. On some web hosts scanning image files will cause the scan to stop/fail.', 'bulletproof-security').'</strong></font>';
|
269 |
-
}
|
270 |
-
|
271 |
echo $bps_topDiv;
|
272 |
-
$text = '<font color="green"><strong>'.__('MScan scanning has been stopped. Note: The Stop Scan button also stops the Scan Time Estimate Tool from calculating estimated scan time.', 'bulletproof-security').'</strong></font>'.$mscan_scan_skipped_files_message
|
273 |
echo $text;
|
274 |
echo $bps_bottomDiv;
|
275 |
}
|
276 |
|
277 |
-
// Creates a Time Loop scenario if bpsPro_mscan_calculate_scan_time() function does not complete in 30 seconds.
|
278 |
-
// This function serves 1 purpose only: Reset time calculation DB status value to 1 during scan time calculation to create a Time Loop/more time if needed.
|
279 |
-
// This function is only executed in js when the estimated scan time has completed & when actual scan time has completed.
|
280 |
-
// IMPORTANT: Do not echo anything directly in this function. It will break the js timer. Do not add any other status value conditions.
|
281 |
-
function bpsPro_mscan_completed() {
|
282 |
-
|
283 |
-
$MScan_status = get_option('bulletproof_security_options_MScan_status');
|
284 |
-
$MScan_options = get_option('bulletproof_security_options_MScan');
|
285 |
-
$mstime = $MScan_options['mscan_max_time_limit'];
|
286 |
-
ini_set('max_execution_time', $mstime);
|
287 |
-
|
288 |
-
if ( isset($MScan_status['bps_mscan_status']) && $MScan_status['bps_mscan_status'] == '1' ) {
|
289 |
-
|
290 |
-
$MScan_status_db = array(
|
291 |
-
'bps_mscan_time_start' => time(),
|
292 |
-
'bps_mscan_time_stop' => $MScan_status['bps_mscan_time_stop'],
|
293 |
-
'bps_mscan_time_end' => time() + 30,
|
294 |
-
'bps_mscan_time_remaining' => time() + 30,
|
295 |
-
'bps_mscan_status' => '1',
|
296 |
-
'bps_mscan_last_scan_timestamp' => $MScan_status['bps_mscan_last_scan_timestamp'],
|
297 |
-
'bps_mscan_total_time' => $MScan_status['bps_mscan_total_time'],
|
298 |
-
'bps_mscan_total_website_files' => $MScan_status['bps_mscan_total_website_files'],
|
299 |
-
'bps_mscan_total_wp_core_files' => $MScan_status['bps_mscan_total_wp_core_files'],
|
300 |
-
'bps_mscan_total_non_image_files' => $MScan_status['bps_mscan_total_non_image_files'],
|
301 |
-
'bps_mscan_total_image_files' => $MScan_status['bps_mscan_total_image_files'],
|
302 |
-
'bps_mscan_total_all_scannable_files' => $MScan_status['bps_mscan_total_all_scannable_files'],
|
303 |
-
'bps_mscan_total_skipped_files' => $MScan_status['bps_mscan_total_skipped_files'],
|
304 |
-
'bps_mscan_total_suspect_files' => $MScan_status['bps_mscan_total_suspect_files'],
|
305 |
-
'bps_mscan_suspect_skipped_files' => $MScan_status['bps_mscan_suspect_skipped_files'],
|
306 |
-
'bps_mscan_total_suspect_db' => $MScan_status['bps_mscan_total_suspect_db'],
|
307 |
-
'bps_mscan_total_ignored_files' => $MScan_status['bps_mscan_total_ignored_files']
|
308 |
-
);
|
309 |
-
|
310 |
-
foreach( $MScan_status_db as $key => $value ) {
|
311 |
-
update_option('bulletproof_security_options_MScan_status', $MScan_status_db);
|
312 |
-
}
|
313 |
-
}
|
314 |
-
}
|
315 |
-
|
316 |
function bpsPro_mscan_displayed_messages() {
|
317 |
global $bps_topDiv, $bps_bottomDiv;
|
318 |
|
@@ -320,147 +415,13 @@ global $bps_topDiv, $bps_bottomDiv;
|
|
320 |
$MScan_options = get_option('bulletproof_security_options_MScan');
|
321 |
|
322 |
$mscan_scan_skipped_files_message = '';
|
323 |
-
$mscan_image_files_message = '';
|
324 |
|
325 |
if ( isset($MScan_options['mscan_scan_skipped_files']) && $MScan_options['mscan_scan_skipped_files'] == 'On' ) {
|
326 |
-
$mscan_scan_skipped_files_message = '<br><font color="blue"><strong>'.__('Skipped file scanning is turned On. Only skipped files will be scanned.', 'bulletproof-security').'</strong></font>';
|
327 |
-
}
|
328 |
-
|
329 |
-
if ( isset($MScan_options['mscan_scan_images']) && $MScan_options['mscan_scan_images'] == 'On' ) {
|
330 |
-
$mscan_image_files_message = '<br><font color="blue"><strong>'.__('Image file scanning is turned On. On some web hosts scanning image files will cause the scan to stop/fail.', 'bulletproof-security').'</strong></font>';
|
331 |
-
}
|
332 |
-
|
333 |
-
// This message is only displayed if scan time calculation takes longer than 30 seconds. ie Time Loop.
|
334 |
-
// The bpsPro_mscan_completed() function is executed in js when the estimated time countdown has completed.
|
335 |
-
// IMPORTANT: The Refresh button is necessary here. Do not automate this refresh/reload with js. If excessive files are attempting to be scanned then this
|
336 |
-
// will be an important clue in troubleshooting problems. The User will hopefully understand that they are attempting to scan too many files at one time.
|
337 |
-
// On some Browsers the Time Loop misfires randomly. It must be related to Browser cache, but all attempts to make sense of this irratic and illogical random
|
338 |
-
// Browser behaviour have failed to conclusively isolate the Browser malfunction. Revisit this Twilight Zone Browser problem at a later time.
|
339 |
-
if ( isset($MScan_status['bps_mscan_status']) && $MScan_status['bps_mscan_status'] == '1' ) {
|
340 |
|
341 |
echo $bps_topDiv;
|
342 |
-
$
|
343 |
-
echo $
|
344 |
echo $bps_bottomDiv;
|
345 |
-
}
|
346 |
-
|
347 |
-
if ( isset($MScan_status['bps_mscan_status']) && $MScan_status['bps_mscan_status'] == '2' ) {
|
348 |
-
|
349 |
-
if ( isset($MScan_status['bps_mscan_total_time']) && isset($MScan_options['mscan_max_time_limit']) && $MScan_status['bps_mscan_total_time'] > $MScan_options['mscan_max_time_limit'] ) {
|
350 |
-
$mscan_over_time_limit = '<br><strong><font color="#fb0101">'.__('The estimated total scan time is more than the Max Time Limit to Scan option setting time limit.', 'bulletproof-security').'</font><br>'.__('The scan will automatically end/stop when the Max Time Limit to Scan option setting time limit is reached.', 'bulletproof-security').'<br>'.__('Estimated Total Scan Time: ', 'bulletproof-security').number_format_i18n($MScan_status['bps_mscan_total_time']).'<br>'.__('Max Time Limit to Scan: ', 'bulletproof-security').number_format_i18n($MScan_options['mscan_max_time_limit']).'<br>'.__('Click the MScan Read Me help button for a recommended solution.', 'bulletproof-security').'</strong>';
|
351 |
-
} else {
|
352 |
-
$mscan_over_time_limit = '';
|
353 |
-
}
|
354 |
-
|
355 |
-
echo $bps_topDiv;
|
356 |
-
$text = '<font color="green"><strong>'.__('MScan Scanning has started. You can leave the MScan page while a scan is in progress and the scan will continue until it is completed or you can open another Browser Tab/Window and leave this Browser Tab/Window open.', 'bulletproof-security').'</strong></font>'.$mscan_scan_skipped_files_message.$mscan_image_files_message.$mscan_over_time_limit;
|
357 |
-
echo $text;
|
358 |
-
echo $bps_bottomDiv;
|
359 |
-
}
|
360 |
-
|
361 |
-
if ( isset ( $_POST['Submit-MScan-Start'] ) ) {
|
362 |
-
$_POST['Submit-MScan-Start'] = true;
|
363 |
-
} else {
|
364 |
-
$_POST['Submit-MScan-Start'] = null;
|
365 |
-
}
|
366 |
-
|
367 |
-
if ( isset($_POST['Submit-MScan-Start']) && $_POST['Submit-MScan-Start'] != true && isset($MScan_status['bps_mscan_status']) && $MScan_status['bps_mscan_status'] == '3' ) {
|
368 |
-
|
369 |
-
$suspect_files_message = '';
|
370 |
-
$suspect_db_message = '';
|
371 |
-
|
372 |
-
if ( $MScan_options['mscan_scan_skipped_files'] == 'On' ) {
|
373 |
-
|
374 |
-
if ( $MScan_status['bps_mscan_suspect_skipped_files'] > 0 ) {
|
375 |
-
$suspect_files_message = '<br><strong><font color="blue">'.__('Suspicious code or files were detected.', 'bulletproof-security').'</font><br>'.__('Click the View|Ignore|Delete Suspicious Files accordion tab to View, Ignore or Delete suspicious files. For additional help information click the MScan Read Me help button.', 'bulletproof-security').'</strong>';
|
376 |
-
}
|
377 |
-
|
378 |
-
} else {
|
379 |
-
|
380 |
-
if ( $MScan_status['bps_mscan_total_suspect_files'] > 0 ) {
|
381 |
-
$suspect_files_message = '<br><strong><font color="blue">'.__('Suspicious code or files were detected.', 'bulletproof-security').'</font><br>'.__('Click the View|Ignore|Delete Suspicious Files accordion tab to View, Ignore or Delete suspicious files. For additional help information click the MScan Read Me help button.', 'bulletproof-security').'</strong>';
|
382 |
-
}
|
383 |
-
|
384 |
-
if ( $MScan_options['mscan_scan_database'] == 'On' && $MScan_status['bps_mscan_total_suspect_db'] > 0 ) {
|
385 |
-
$suspect_db_message = '<br><strong><font color="blue">'.__('Suspicious code was detected in your database.', 'bulletproof-security').'</font><br>'.__('Click the View|Ignore Suspicious DB Entries accordion tab to view and ignore suspicious db entries. For additional help information click the MScan Read Me help button.', 'bulletproof-security').'</strong>';
|
386 |
-
}
|
387 |
-
}
|
388 |
-
|
389 |
-
echo $bps_topDiv;
|
390 |
-
$text = '<font color="green"><strong>'.__('MScan Scan has completed. To view extensive details of all scanning phases view the MScan Log file.', 'bulletproof-security').'</strong></font>'.$mscan_scan_skipped_files_message.$suspect_files_message.$suspect_db_message;
|
391 |
-
echo $text;
|
392 |
-
echo $bps_bottomDiv;
|
393 |
-
|
394 |
-
$MScan_status = get_option('bulletproof_security_options_MScan_status');
|
395 |
-
|
396 |
-
$MScan_status_db = array(
|
397 |
-
'bps_mscan_time_start' => $MScan_status['bps_mscan_time_start'],
|
398 |
-
'bps_mscan_time_stop' => $MScan_status['bps_mscan_time_stop'],
|
399 |
-
'bps_mscan_time_end' => $MScan_status['bps_mscan_time_end'],
|
400 |
-
'bps_mscan_time_remaining' => $MScan_status['bps_mscan_time_remaining'],
|
401 |
-
'bps_mscan_status' => '4',
|
402 |
-
'bps_mscan_last_scan_timestamp' => $MScan_status['bps_mscan_last_scan_timestamp'],
|
403 |
-
'bps_mscan_total_time' => $MScan_status['bps_mscan_total_time'],
|
404 |
-
'bps_mscan_total_website_files' => $MScan_status['bps_mscan_total_website_files'],
|
405 |
-
'bps_mscan_total_wp_core_files' => $MScan_status['bps_mscan_total_wp_core_files'],
|
406 |
-
'bps_mscan_total_non_image_files' => $MScan_status['bps_mscan_total_non_image_files'],
|
407 |
-
'bps_mscan_total_image_files' => $MScan_status['bps_mscan_total_image_files'],
|
408 |
-
'bps_mscan_total_all_scannable_files' => $MScan_status['bps_mscan_total_all_scannable_files'],
|
409 |
-
'bps_mscan_total_skipped_files' => $MScan_status['bps_mscan_total_skipped_files'],
|
410 |
-
'bps_mscan_total_suspect_files' => $MScan_status['bps_mscan_total_suspect_files'],
|
411 |
-
'bps_mscan_suspect_skipped_files' => $MScan_status['bps_mscan_suspect_skipped_files'],
|
412 |
-
'bps_mscan_total_suspect_db' => $MScan_status['bps_mscan_total_suspect_db'],
|
413 |
-
'bps_mscan_total_ignored_files' => $MScan_status['bps_mscan_total_ignored_files']
|
414 |
-
);
|
415 |
-
|
416 |
-
foreach( $MScan_status_db as $key => $value ) {
|
417 |
-
update_option('bulletproof_security_options_MScan_status', $MScan_status_db);
|
418 |
-
}
|
419 |
-
}
|
420 |
-
|
421 |
-
if ( isset($MScan_status['bps_mscan_status']) && $MScan_status['bps_mscan_status'] == '5' ) {
|
422 |
-
|
423 |
-
$MScan_status = get_option('bulletproof_security_options_MScan_status');
|
424 |
-
|
425 |
-
$mscan_scan_skipped_files_message = '';
|
426 |
-
$mscan_image_files_message = '';
|
427 |
-
|
428 |
-
if ( isset($MScan_options['mscan_scan_skipped_files']) && $MScan_options['mscan_scan_skipped_files'] == 'On' ) {
|
429 |
-
$mscan_scan_skipped_files_message = '<br><font color="blue"><strong>'.__('Skipped file scanning is turned On. The scan time estimate is for scanning skipped files only.', 'bulletproof-security').'</strong></font>';
|
430 |
-
}
|
431 |
-
|
432 |
-
if ( isset($MScan_options['mscan_scan_images']) && $MScan_options['mscan_scan_images'] == 'On' ) {
|
433 |
-
$mscan_image_files_message = '<br><font color="blue"><strong>'.__('Image file scanning is turned On. On some web hosts scanning image files will cause the scan to stop/fail.', 'bulletproof-security').'</strong></font>';
|
434 |
-
}
|
435 |
-
|
436 |
-
echo $bps_topDiv;
|
437 |
-
$text = '<strong><font color="green">'.__('The total estimated time of an actual scan based on your MScan option settings is: ', 'bulletproof-security').'<span style="color:blue">'.number_format_i18n($MScan_status['bps_mscan_total_time']).'</span> '.__('Seconds. The MScan Log file contains extensive details about the estimated scan time. Note: The Scan Time Estimate Tool does not affect or change any previous scan results except for the Total Scan Time, which will be changed to the estimated scan time.', 'bulletproof-security').'</font></strong>'.$mscan_scan_skipped_files_message.$mscan_image_files_message;
|
438 |
-
echo $text;
|
439 |
-
echo $bps_bottomDiv;
|
440 |
-
|
441 |
-
$MScan_status_db = array(
|
442 |
-
'bps_mscan_time_start' => $MScan_status['bps_mscan_time_start'],
|
443 |
-
'bps_mscan_time_stop' => $MScan_status['bps_mscan_time_stop'],
|
444 |
-
'bps_mscan_time_end' => $MScan_status['bps_mscan_time_end'],
|
445 |
-
'bps_mscan_time_remaining' => $MScan_status['bps_mscan_time_remaining'],
|
446 |
-
'bps_mscan_status' => '4',
|
447 |
-
'bps_mscan_last_scan_timestamp' => $MScan_status['bps_mscan_last_scan_timestamp'],
|
448 |
-
'bps_mscan_total_time' => $MScan_status['bps_mscan_total_time'],
|
449 |
-
'bps_mscan_total_website_files' => $MScan_status['bps_mscan_total_website_files'],
|
450 |
-
'bps_mscan_total_wp_core_files' => $MScan_status['bps_mscan_total_wp_core_files'],
|
451 |
-
'bps_mscan_total_non_image_files' => $MScan_status['bps_mscan_total_non_image_files'],
|
452 |
-
'bps_mscan_total_image_files' => $MScan_status['bps_mscan_total_image_files'],
|
453 |
-
'bps_mscan_total_all_scannable_files' => $MScan_status['bps_mscan_total_all_scannable_files'],
|
454 |
-
'bps_mscan_total_skipped_files' => $MScan_status['bps_mscan_total_skipped_files'],
|
455 |
-
'bps_mscan_total_suspect_files' => $MScan_status['bps_mscan_total_suspect_files'],
|
456 |
-
'bps_mscan_suspect_skipped_files' => $MScan_status['bps_mscan_suspect_skipped_files'],
|
457 |
-
'bps_mscan_total_suspect_db' => $MScan_status['bps_mscan_total_suspect_db'],
|
458 |
-
'bps_mscan_total_ignored_files' => $MScan_status['bps_mscan_total_ignored_files']
|
459 |
-
);
|
460 |
-
|
461 |
-
foreach( $MScan_status_db as $key => $value ) {
|
462 |
-
update_option('bulletproof_security_options_MScan_status', $MScan_status_db);
|
463 |
-
}
|
464 |
}
|
465 |
}
|
466 |
|
@@ -477,57 +438,42 @@ bpsPro_mscan_displayed_messages();
|
|
477 |
|
478 |
$bps_mscan_last_scan_timestamp = ! isset($MScan_status['bps_mscan_last_scan_timestamp']) ? '' : $MScan_status['bps_mscan_last_scan_timestamp'];
|
479 |
$bps_mscan_total_time = ! isset($MScan_status['bps_mscan_total_time']) ? '' : $MScan_status['bps_mscan_total_time'];
|
480 |
-
$bps_mscan_total_website_files = ! isset($MScan_status['bps_mscan_total_website_files']) ? '' : $MScan_status['bps_mscan_total_website_files'];
|
481 |
$bps_mscan_total_wp_core_files = ! isset($MScan_status['bps_mscan_total_wp_core_files']) ? '' : $MScan_status['bps_mscan_total_wp_core_files'];
|
482 |
$bps_mscan_total_non_image_files = ! isset($MScan_status['bps_mscan_total_non_image_files']) ? '' : $MScan_status['bps_mscan_total_non_image_files'];
|
483 |
-
$bps_mscan_total_image_files = ! isset($MScan_status['bps_mscan_total_image_files']) ? '' : $MScan_status['bps_mscan_total_image_files'];
|
484 |
-
$bps_mscan_total_all_scannable_files = ! isset($MScan_status['bps_mscan_total_all_scannable_files']) ? '' : $MScan_status['bps_mscan_total_all_scannable_files'];
|
485 |
$bps_mscan_total_skipped_files = ! isset($MScan_status['bps_mscan_total_skipped_files']) ? '' : $MScan_status['bps_mscan_total_skipped_files'];
|
486 |
$bps_mscan_total_suspect_files = ! isset($MScan_status['bps_mscan_total_suspect_files']) ? '' : $MScan_status['bps_mscan_total_suspect_files'];
|
487 |
$bps_mscan_suspect_skipped_files = ! isset($MScan_status['bps_mscan_suspect_skipped_files']) ? '' : $MScan_status['bps_mscan_suspect_skipped_files'];
|
488 |
$bps_mscan_total_suspect_db = ! isset($MScan_status['bps_mscan_total_suspect_db']) ? '' : $MScan_status['bps_mscan_total_suspect_db'];
|
489 |
$bps_mscan_total_ignored_files = ! isset($MScan_status['bps_mscan_total_ignored_files']) ? '' : $MScan_status['bps_mscan_total_ignored_files'];
|
|
|
|
|
490 |
|
491 |
$MScan_status_db = array(
|
492 |
'bps_mscan_time_start' => time(),
|
493 |
'bps_mscan_time_stop' => '',
|
494 |
-
'bps_mscan_time_end' => time() +
|
495 |
-
'bps_mscan_time_remaining' => time() +
|
496 |
'bps_mscan_status' => '1',
|
497 |
'bps_mscan_last_scan_timestamp' => $bps_mscan_last_scan_timestamp,
|
498 |
'bps_mscan_total_time' => $bps_mscan_total_time,
|
499 |
-
'bps_mscan_total_website_files' =>
|
500 |
'bps_mscan_total_wp_core_files' => $bps_mscan_total_wp_core_files,
|
501 |
'bps_mscan_total_non_image_files' => $bps_mscan_total_non_image_files,
|
502 |
-
'bps_mscan_total_image_files' =>
|
503 |
-
'bps_mscan_total_all_scannable_files' =>
|
504 |
'bps_mscan_total_skipped_files' => $bps_mscan_total_skipped_files,
|
505 |
'bps_mscan_total_suspect_files' => $bps_mscan_total_suspect_files,
|
506 |
'bps_mscan_suspect_skipped_files' => $bps_mscan_suspect_skipped_files,
|
507 |
'bps_mscan_total_suspect_db' => $bps_mscan_total_suspect_db,
|
508 |
-
'bps_mscan_total_ignored_files' => $bps_mscan_total_ignored_files
|
|
|
|
|
509 |
);
|
510 |
|
511 |
foreach( $MScan_status_db as $key => $value ) {
|
512 |
update_option('bulletproof_security_options_MScan_status', $MScan_status_db);
|
513 |
}
|
514 |
-
|
515 |
-
$mscan_scan_skipped_files_message = '';
|
516 |
-
$mscan_image_files_message = '';
|
517 |
-
|
518 |
-
if ( $MScan_options['mscan_scan_skipped_files'] == 'On' ) {
|
519 |
-
$mscan_scan_skipped_files_message = '<br><font color="blue"><strong>'.__('Skipped file scanning is turned On. The scan time estimate will be for scanning skipped files only.', 'bulletproof-security').'</strong></font>';
|
520 |
-
}
|
521 |
-
|
522 |
-
if ( $MScan_options['mscan_scan_images'] == 'On' ) {
|
523 |
-
$mscan_image_files_message = '<br><font color="blue"><strong>'.__('Image file scanning is turned On. On some web hosts scanning image files will cause the scan to stop/fail.', 'bulletproof-security').'</strong></font>';
|
524 |
-
}
|
525 |
-
|
526 |
-
echo $bps_topDiv;
|
527 |
-
$text = '<font color="green"><strong>'.__('Calculating Estimated Scan Time. Notes: The Scan Time Estimate Tool does not affect or change any previous scan results except for the Total Scan Time, which will be changed to the estimated scan time. If the scan time estimate hangs or is taking too long click the Stop Scan button to stop calculating the estimated scan time.', 'bulletproof-security').'</strong></font>'.$mscan_scan_skipped_files_message.$mscan_image_files_message;
|
528 |
-
echo $text;
|
529 |
-
echo $bps_bottomDiv;
|
530 |
-
}
|
531 |
|
532 |
// Form Processing: MScan Start
|
533 |
if ( isset( $_POST['Submit-MScan-Start'] ) && current_user_can('manage_options') ) {
|
@@ -536,227 +482,100 @@ bpsPro_mscan_displayed_messages();
|
|
536 |
$MScan_status = get_option('bulletproof_security_options_MScan_status');
|
537 |
$MScan_options = get_option('bulletproof_security_options_MScan');
|
538 |
$mstime = $MScan_options['mscan_max_time_limit'];
|
539 |
-
ini_set('max_execution_time', $mstime);
|
540 |
|
|
|
541 |
$bps_mscan_last_scan_timestamp = ! isset($MScan_status['bps_mscan_last_scan_timestamp']) ? '' : $MScan_status['bps_mscan_last_scan_timestamp'];
|
542 |
$bps_mscan_total_time = ! isset($MScan_status['bps_mscan_total_time']) ? '' : $MScan_status['bps_mscan_total_time'];
|
543 |
-
$bps_mscan_total_website_files = ! isset($MScan_status['bps_mscan_total_website_files']) ? '' : $MScan_status['bps_mscan_total_website_files'];
|
544 |
$bps_mscan_total_wp_core_files = ! isset($MScan_status['bps_mscan_total_wp_core_files']) ? '' : $MScan_status['bps_mscan_total_wp_core_files'];
|
545 |
$bps_mscan_total_non_image_files = ! isset($MScan_status['bps_mscan_total_non_image_files']) ? '' : $MScan_status['bps_mscan_total_non_image_files'];
|
546 |
-
$bps_mscan_total_image_files = ! isset($MScan_status['bps_mscan_total_image_files']) ? '' : $MScan_status['bps_mscan_total_image_files'];
|
547 |
-
$bps_mscan_total_all_scannable_files = ! isset($MScan_status['bps_mscan_total_all_scannable_files']) ? '' : $MScan_status['bps_mscan_total_all_scannable_files'];
|
548 |
$bps_mscan_total_skipped_files = ! isset($MScan_status['bps_mscan_total_skipped_files']) ? '' : $MScan_status['bps_mscan_total_skipped_files'];
|
549 |
$bps_mscan_total_suspect_files = ! isset($MScan_status['bps_mscan_total_suspect_files']) ? '' : $MScan_status['bps_mscan_total_suspect_files'];
|
550 |
$bps_mscan_suspect_skipped_files = ! isset($MScan_status['bps_mscan_suspect_skipped_files']) ? '' : $MScan_status['bps_mscan_suspect_skipped_files'];
|
551 |
$bps_mscan_total_suspect_db = ! isset($MScan_status['bps_mscan_total_suspect_db']) ? '' : $MScan_status['bps_mscan_total_suspect_db'];
|
552 |
$bps_mscan_total_ignored_files = ! isset($MScan_status['bps_mscan_total_ignored_files']) ? '' : $MScan_status['bps_mscan_total_ignored_files'];
|
|
|
|
|
553 |
|
554 |
$MScan_status_db = array(
|
555 |
-
'bps_mscan_time_start' =>
|
556 |
'bps_mscan_time_stop' => '',
|
557 |
-
'bps_mscan_time_end' => time() +
|
558 |
-
'bps_mscan_time_remaining' => time() +
|
559 |
-
'bps_mscan_status' => '1',
|
560 |
'bps_mscan_last_scan_timestamp' => $bps_mscan_last_scan_timestamp,
|
561 |
'bps_mscan_total_time' => $bps_mscan_total_time,
|
562 |
-
'bps_mscan_total_website_files' =>
|
563 |
'bps_mscan_total_wp_core_files' => $bps_mscan_total_wp_core_files,
|
564 |
'bps_mscan_total_non_image_files' => $bps_mscan_total_non_image_files,
|
565 |
-
'bps_mscan_total_image_files' =>
|
566 |
-
'bps_mscan_total_all_scannable_files' =>
|
567 |
'bps_mscan_total_skipped_files' => $bps_mscan_total_skipped_files,
|
568 |
'bps_mscan_total_suspect_files' => $bps_mscan_total_suspect_files,
|
569 |
'bps_mscan_suspect_skipped_files' => $bps_mscan_suspect_skipped_files,
|
570 |
'bps_mscan_total_suspect_db' => $bps_mscan_total_suspect_db,
|
571 |
-
'bps_mscan_total_ignored_files' => $bps_mscan_total_ignored_files
|
|
|
|
|
572 |
);
|
573 |
|
574 |
foreach( $MScan_status_db as $key => $value ) {
|
575 |
update_option('bulletproof_security_options_MScan_status', $MScan_status_db);
|
576 |
}
|
577 |
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
$
|
|
|
582 |
}
|
583 |
-
|
584 |
-
echo $bps_topDiv;
|
585 |
-
$text = '<font color="green"><strong>'.__('Calculating Scan Time. You can leave the MScan page while a scan is in progress and the scan will continue until it is completed or you can open another Browser Tab/Window and leave this Browser Tab/Window open.', 'bulletproof-security').'</strong></font>'.$mscan_scan_skipped_files_message;
|
586 |
-
echo $text;
|
587 |
-
echo $bps_bottomDiv;
|
588 |
-
}
|
589 |
-
|
590 |
-
$MScan_status = get_option('bulletproof_security_options_MScan_status');
|
591 |
-
$MScan_options = get_option('bulletproof_security_options_MScan');
|
592 |
-
|
593 |
-
$mscan_start_time = ! isset($MScan_status['bps_mscan_time_start']) ? '' : $MScan_status['bps_mscan_time_start'];
|
594 |
-
$mscan_future_time = ! isset($MScan_status['bps_mscan_time_remaining']) ? '' : $MScan_status['bps_mscan_time_remaining'];
|
595 |
-
$mscan_status = ! isset($MScan_status['bps_mscan_status']) ? '' : $MScan_status['bps_mscan_status'];
|
596 |
-
$mscan_timestamp = ! isset($MScan_status['bps_mscan_last_scan_timestamp']) ? '' : $MScan_status['bps_mscan_last_scan_timestamp'];
|
597 |
-
$mscan_total_time = ! isset($MScan_status['bps_mscan_total_time']) ? '' : $MScan_status['bps_mscan_total_time'];
|
598 |
-
$mscan_suspect_files = ! isset($MScan_status['bps_mscan_total_suspect_files']) ? '' : $MScan_status['bps_mscan_total_suspect_files'];
|
599 |
-
$mscan_suspect_skipped_files = ! isset($MScan_status['bps_mscan_suspect_skipped_files']) ? '' : $MScan_status['bps_mscan_suspect_skipped_files'];
|
600 |
-
$mscan_suspect_db = ! isset($MScan_status['bps_mscan_total_suspect_db']) ? '' : $MScan_status['bps_mscan_total_suspect_db'];
|
601 |
-
$mscan_skipped_files = ! isset($MScan_status['bps_mscan_total_skipped_files']) ? '' : $MScan_status['bps_mscan_total_skipped_files'];
|
602 |
-
|
603 |
-
if ( isset($MScan_options['mscan_scan_skipped_files']) && $MScan_options['mscan_scan_skipped_files'] == 'On' ) {
|
604 |
-
$mscan_total_files = $MScan_status['bps_mscan_total_skipped_files'];
|
605 |
-
$skipped_scan = 1;
|
606 |
-
} else {
|
607 |
-
$mscan_total_files = ! isset($MScan_status['bps_mscan_total_all_scannable_files']) ? '' : $MScan_status['bps_mscan_total_all_scannable_files'];
|
608 |
-
$skipped_scan = 0;
|
609 |
}
|
610 |
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
|
|
615 |
}
|
|
|
616 |
|
617 |
-
|
618 |
-
|
619 |
-
<div id="MscanProgressBar">
|
620 |
-
<div id="MscanBar" class="mscan-progress-bar"></div>
|
621 |
-
</div>
|
622 |
-
|
623 |
-
<?php } ?>
|
624 |
-
|
625 |
-
<div id="MScan-Time-Container">
|
626 |
-
<div id="mscantimer"></div>
|
627 |
-
</div>
|
628 |
-
|
629 |
-
<script type="text/javascript">
|
630 |
-
/* <![CDATA[ */
|
631 |
-
var mscanStatusI = <?php echo json_encode( $mscan_status, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
632 |
-
var timeStampI = <?php echo json_encode( $mscan_timestamp, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
633 |
-
var totalScanTimeI = <?php echo json_encode( $mscan_total_time, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
634 |
-
var totalFilesI = <?php echo json_encode( $mscan_total_files, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
635 |
-
var skippedFilesI = <?php echo json_encode( $mscan_skipped_files, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
636 |
-
var skippedScanI = <?php echo json_encode( $skipped_scan, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
637 |
-
var dbScanI = <?php echo json_encode( $mscan_db_scan, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
638 |
-
var suspectI = <?php echo json_encode( $mscan_suspect_files, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
639 |
-
var suspectSkipI = <?php echo json_encode( $mscan_suspect_skipped_files, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
640 |
-
var suspectDBI = <?php echo json_encode( $mscan_suspect_db, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
641 |
-
|
642 |
-
var minuteI = 60;
|
643 |
-
var hourI = 60 * 60;
|
644 |
-
var dayI = 60 * 60 * 24;
|
645 |
-
var dayFloorI = Math.floor(totalScanTimeI / dayI);
|
646 |
-
var hourFloorI = Math.floor((totalScanTimeI - dayFloorI * dayI) / hourI);
|
647 |
-
var minuteFloorI = Math.floor((totalScanTimeI - dayFloorI * dayI - hourFloorI * hourI) / minuteI);
|
648 |
-
var secondFloorI = Math.floor((totalScanTimeI - dayFloorI * dayI - hourFloorI * hourI - minuteFloorI * minuteI));
|
649 |
-
var hourFloorFI = ("0" + hourFloorI).slice(-2);
|
650 |
-
var minuteFloorFI = ("0" + minuteFloorI).slice(-2);
|
651 |
-
var secondFloorFI = ("0" + secondFloorI).slice(-2);
|
652 |
-
|
653 |
-
if ( totalFilesI == "" ) {
|
654 |
-
totalFilesI = 0;
|
655 |
-
}
|
656 |
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
if ( suspectI == "" ) {
|
662 |
-
suspectI = 0;
|
663 |
-
}
|
664 |
-
|
665 |
-
if ( suspectSkipI == "" ) {
|
666 |
-
suspectSkipI = 0;
|
667 |
-
}
|
668 |
-
|
669 |
-
if ( suspectDBI == "" ) {
|
670 |
-
suspectDBI = 0;
|
671 |
-
}
|
672 |
-
|
673 |
-
if ( mscanStatusI == 4 && skippedScanI == 0 ) {
|
674 |
-
|
675 |
-
if ( dbScanI == 1 ) {
|
676 |
-
document.getElementById("mscantimer").innerHTML = "Scan Completed [" + timeStampI + "] : Total Scan Time: " + hourFloorFI + ":" + minuteFloorFI + ":" + secondFloorFI + " : Total Files Scanned: " + totalFilesI + " : Skipped Files: " + skippedFilesI + " : Suspicious Files: " + suspectI + " : Suspicious DB Entries: " + suspectDBI;
|
677 |
-
} else {
|
678 |
-
document.getElementById("mscantimer").innerHTML = "Scan Completed [" + timeStampI + "] : Total Scan Time: " + hourFloorFI + ":" + minuteFloorFI + ":" + secondFloorFI + " : Total Files Scanned: " + totalFilesI + " : Skipped Files: " + skippedFilesI + " : Suspicious Files: " + suspectI;
|
679 |
-
}
|
680 |
-
}
|
681 |
-
|
682 |
-
if ( mscanStatusI == 4 && skippedScanI == 1 ) {
|
683 |
-
document.getElementById("mscantimer").innerHTML = "Skipped File Scan Completed [" + timeStampI + "] : Total Scan Time: " + hourFloorFI + ":" + minuteFloorFI + ":" + secondFloorFI + " : Total Files Scanned: " + totalFilesI + " : Suspicious Files: " + suspectSkipI;
|
684 |
-
}
|
685 |
-
|
686 |
-
var MScan = setInterval(function(){ MScanTimer() }, 1000);
|
687 |
-
|
688 |
-
function MScanTimer() {
|
689 |
-
|
690 |
-
var currentTime = new Date().getTime() / 1000;
|
691 |
-
var futureTime = <?php echo json_encode( $mscan_future_time, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
692 |
-
var scanStart = <?php echo json_encode( $mscan_start_time, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
693 |
-
var mscanStatus = <?php echo json_encode( $mscan_status, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
694 |
-
var totalFiles = <?php echo json_encode( $mscan_total_files, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ); ?>;
|
695 |
-
var timeRemaining = futureTime - currentTime;
|
696 |
-
var minute = 60;
|
697 |
-
var hour = 60 * 60;
|
698 |
-
var day = 60 * 60 * 24;
|
699 |
-
// Right to left direction decrease - 100% to 0% width
|
700 |
-
var pBarPercentWidthDecrease = Math.round(timeRemaining/(futureTime - scanStart) * 100);
|
701 |
-
// Left to right direction increase - 0% to 100% width
|
702 |
-
var pBarPercentWidthIncrease = 100 - pBarPercentWidthDecrease;
|
703 |
-
var dayFloor = Math.floor(timeRemaining / day);
|
704 |
-
var hourFloor = Math.floor((timeRemaining - dayFloor * day) / hour);
|
705 |
-
var minuteFloor = Math.floor((timeRemaining - dayFloor * day - hourFloor * hour) / minute);
|
706 |
-
var secondFloor = Math.floor((timeRemaining - dayFloor * day - hourFloor * hour - minuteFloor * minute));
|
707 |
-
var hourFloorF = ("0" + hourFloor).slice(-2);
|
708 |
-
var minuteFloorF = ("0" + minuteFloor).slice(-2);
|
709 |
-
var secondFloorF = ("0" + secondFloor).slice(-2);
|
710 |
-
var ScanCompleted = "<?php bpsPro_mscan_completed(); ?>";
|
711 |
-
|
712 |
-
if (secondFloor <= 0 && minuteFloor <= 0 && hourFloor <= 0 ) {
|
713 |
-
window.location.reload(true);
|
714 |
-
document.getElementById("mscantimer").innerHTML = ScanCompleted;
|
715 |
-
clearInterval(MScan);
|
716 |
-
|
717 |
-
} else {
|
718 |
-
|
719 |
-
if (futureTime > currentTime) {
|
720 |
-
|
721 |
-
if ( mscanStatus == 1 ) {
|
722 |
-
document.getElementById("mscantimer").innerHTML = "Calculating Scan Time: " + hourFloorF + ":" + minuteFloorF + ":" + secondFloorF;
|
723 |
-
document.getElementById("MscanBar").style.width = pBarPercentWidthDecrease + '%';
|
724 |
-
document.getElementById("MscanBar").innerHTML = pBarPercentWidthDecrease + '%';
|
725 |
-
}
|
726 |
-
|
727 |
-
if ( mscanStatus == 2 || mscanStatus == 3 ) {
|
728 |
-
document.getElementById("mscantimer").innerHTML = "Scan Completion Time Remaining: " + hourFloorF + ":" + minuteFloorF + ":" + secondFloorF + " : Scanning " + totalFiles + " Files";
|
729 |
-
document.getElementById("MscanBar").style.width = pBarPercentWidthIncrease + '%';
|
730 |
-
document.getElementById("MscanBar").innerHTML = pBarPercentWidthIncrease + '%';
|
731 |
-
}
|
732 |
-
}
|
733 |
-
}
|
734 |
-
}
|
735 |
-
/* ]]> */
|
736 |
-
</script>
|
737 |
-
|
738 |
-
<div id="mscan-start" style="float:left;margin-right:20px">
|
739 |
<form name="MScanStart" action="<?php echo admin_url( 'admin.php?page=bulletproof-security/admin/mscan/mscan.php' ); ?>" method="post">
|
740 |
<?php wp_nonce_field('bulletproof_security_mscan_start'); ?>
|
741 |
-
<input type="submit" id="bps-mscan-start-button" name="Submit-MScan-Start" style="margin:
|
742 |
</form>
|
743 |
-
</
|
744 |
-
|
745 |
-
<div id="mscan-stop">
|
746 |
<form name="MScanStop" action="<?php echo admin_url( 'admin.php?page=bulletproof-security/admin/mscan/mscan.php' ); ?>" method="post">
|
747 |
<?php wp_nonce_field('bulletproof_security_mscan_stop'); ?>
|
748 |
-
<input type="submit" id="bps-mscan-stop-button" name="Submit-MScan-Stop" style="margin:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
749 |
</form>
|
|
|
|
|
|
|
750 |
</div>
|
751 |
|
752 |
-
<?php bpsPro_mscan_openbasedir_check(); ?>
|
753 |
-
|
754 |
<div id="bps-accordion-1" class="bps-accordion-main-2" style="margin:0px 0px 20px 0px;">
|
755 |
<h3 id="mscan-accordion-1"><?php _e('MScan Options & Tools', 'bulletproof-security'); ?></h3>
|
756 |
<div id="mscan-accordion-inner">
|
757 |
|
758 |
<?php
|
759 |
-
|
760 |
// Form Processing: MScan Options Form
|
761 |
// Important: This Form processing code MUST be above the Form & bpsPro_save_mscan_options() function so that new DB option values are current.
|
762 |
if ( isset( $_POST['Submit-MScan-Options'] ) && current_user_can('manage_options') ) {
|
@@ -779,14 +598,19 @@ if ( isset( $_POST['Submit-MScan-Options'] ) && current_user_can('manage_options
|
|
779 |
}
|
780 |
}
|
781 |
|
782 |
-
$
|
783 |
-
$
|
|
|
|
|
|
|
784 |
|
785 |
-
|
|
|
786 |
|
|
|
|
|
787 |
$iterator = new DirectoryIterator($source);
|
788 |
-
|
789 |
-
|
790 |
foreach ( $iterator as $files ) {
|
791 |
try {
|
792 |
if ( $files->isDir() && ! $files->isDot() ) {
|
@@ -796,46 +620,77 @@ if ( isset( $_POST['Submit-MScan-Options'] ) && current_user_can('manage_options
|
|
796 |
}
|
797 |
}
|
798 |
} catch (RuntimeException $e) {
|
799 |
-
|
800 |
}
|
801 |
}
|
|
|
802 |
|
803 |
-
|
|
|
804 |
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
810 |
}
|
811 |
-
|
812 |
-
// get dirs that do not exist in the bps_mscan_dirs db option. ie an unchecked form checkbox.
|
813 |
-
$mscan_diff_key_dir = array_diff_key( $mscan_actual_dirs, $mscan_dirs_checked );
|
814 |
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
819 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
820 |
break;
|
821 |
}
|
822 |
|
823 |
-
// Add an
|
824 |
// when using explode()
|
825 |
$mscan_exclude_tmp_files = $_POST['mscan_exclude_tmp_files'] . "\n";
|
826 |
$mscan_exclude_tmp_files = preg_replace("/(\n\n|\n\n\n|\n\n\n\n)/", "\n", $mscan_exclude_tmp_files);
|
827 |
-
|
828 |
$MS_Options = array(
|
829 |
'bps_mscan_dirs' => $mscan_array_merge,
|
830 |
'mscan_max_file_size' => esc_html($_POST['mscan_max_file_size']),
|
831 |
'mscan_max_time_limit' => esc_html($_POST['mscan_max_time_limit']),
|
832 |
'mscan_scan_database' => $_POST['mscan_scan_database_select'],
|
833 |
-
'mscan_scan_images' =>
|
834 |
'mscan_scan_skipped_files' => $_POST['mscan_scan_skipped_files_select'],
|
835 |
'mscan_scan_delete_tmp_files' => $_POST['mscan_scan_delete_tmp_files_select'],
|
836 |
'mscan_scan_frequency' => 'Off',
|
837 |
'mscan_exclude_dirs' => $_POST['mscan_exclude_dirs'],
|
838 |
-
'mscan_exclude_tmp_files' => $mscan_exclude_tmp_files
|
|
|
839 |
);
|
840 |
|
841 |
foreach( $MS_Options as $key => $value ) {
|
@@ -845,7 +700,6 @@ if ( isset( $_POST['Submit-MScan-Options'] ) && current_user_can('manage_options
|
|
845 |
$MScan_options = get_option('bulletproof_security_options_MScan');
|
846 |
$MScan_status = get_option('bulletproof_security_options_MScan_status');
|
847 |
$mscan_scan_skipped_files_message = '';
|
848 |
-
$mscan_image_files_message = '';
|
849 |
$mscan_scan_delete_tmp_files_message = '';
|
850 |
|
851 |
if ( $MScan_options['mscan_scan_skipped_files'] == 'On' && $MScan_status['bps_mscan_total_skipped_files'] > 0 ) {
|
@@ -856,32 +710,34 @@ if ( isset( $_POST['Submit-MScan-Options'] ) && current_user_can('manage_options
|
|
856 |
$mscan_scan_skipped_files_message = '<br><font color="blue"><strong>'.__('Skipped file scanning is turned On. There are no skipped files to be scanned. Either there really are not any skipped files to scan or you have not run a regular scan yet with the Skipped File Scan option turned Off.', 'bulletproof-security').'</strong></font>';
|
857 |
}
|
858 |
|
859 |
-
if ( $MScan_options['mscan_scan_images'] == 'On' ) {
|
860 |
-
$mscan_image_files_message = '<br><font color="blue"><strong>'.__('Image file scanning is turned On. On some web hosts scanning image files will cause the scan to stop/fail.', 'bulletproof-security').'</strong></font>';
|
861 |
-
}
|
862 |
-
|
863 |
if ( $MScan_options['mscan_scan_delete_tmp_files'] == 'On' ) {
|
864 |
-
$mscan_scan_delete_tmp_files_message = '<br><strong><font color="#fb0101">'.__('Warning: ', 'bulletproof-security').'</font>'.__('On some web hosts (Known host issues: SiteGround, Cyon) turning On the "Automatically Delete /tmp Files" option setting will cause your website/server to crash. If your website/server does crash contact your web host support folks, tell them that you deleted /tmp files and your website/server has crashed.', 'bulletproof-security').'</strong>';
|
865 |
}
|
866 |
|
867 |
echo $bps_topDiv;
|
868 |
-
$text = '<font color="green"><strong>'.__('MScan Options saved.', 'bulletproof-security').'</strong></font>'.$mscan_scan_skipped_files_message.$
|
869 |
echo $text;
|
870 |
echo $bps_bottomDiv;
|
871 |
}
|
872 |
|
873 |
// Get any new dirs that have been created and remove any old dirs from the bps_mscan_dirs db option.
|
874 |
// Update the bps_mscan_dirs db option for use in the MscanOptions Form.
|
|
|
875 |
function bpsPro_save_mscan_options() {
|
876 |
|
877 |
-
$
|
878 |
-
$
|
879 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
880 |
if ( is_dir($source) ) {
|
881 |
|
882 |
-
$MScan_options = get_option('bulletproof_security_options_MScan');
|
883 |
$iterator = new DirectoryIterator($source);
|
884 |
-
$dir_array = array();
|
885 |
|
886 |
foreach ( $iterator as $files ) {
|
887 |
try {
|
@@ -892,98 +748,154 @@ function bpsPro_save_mscan_options() {
|
|
892 |
}
|
893 |
}
|
894 |
} catch (RuntimeException $e) {
|
895 |
-
|
896 |
}
|
897 |
}
|
|
|
898 |
|
899 |
-
|
900 |
-
|
901 |
-
|
902 |
-
|
903 |
-
|
904 |
-
foreach ( $dir_flip as $key => $value ) {
|
905 |
-
$mscan_actual_dirs[$key] = preg_replace( '/\d+/', "1", $value );
|
906 |
-
}
|
907 |
-
|
908 |
-
// Only processed once on first MScan page load
|
909 |
-
if ( empty($MScan_options['bps_mscan_dirs']) ) {
|
910 |
-
|
911 |
-
$mscan_max_file_size = isset($MScan_options['mscan_max_file_size']) ? $MScan_options['mscan_max_file_size'] : '400';
|
912 |
-
$mscan_max_time_limit = isset($MScan_options['mscan_max_time_limit']) ? $MScan_options['mscan_max_time_limit'] : '300';
|
913 |
-
$mscan_scan_database = isset($MScan_options['mscan_scan_database']) ? $MScan_options['mscan_scan_database'] : 'On';
|
914 |
-
$mscan_scan_images = isset($MScan_options['mscan_scan_images']) ? $MScan_options['mscan_scan_images'] : 'Off';
|
915 |
-
$mscan_scan_skipped_files = isset($MScan_options['mscan_scan_skipped_files']) ? $MScan_options['mscan_scan_skipped_files'] : 'Off';
|
916 |
-
$mscan_scan_delete_tmp_files = isset($MScan_options['mscan_scan_delete_tmp_files']) ? $MScan_options['mscan_scan_delete_tmp_files'] : 'Off';
|
917 |
-
$mscan_scan_frequency = isset($MScan_options['mscan_scan_frequency']) ? $MScan_options['mscan_scan_frequency'] : 'Off';
|
918 |
-
$mscan_exclude_dirs = isset($MScan_options['mscan_exclude_dirs']) ? $MScan_options['mscan_exclude_dirs'] : '';
|
919 |
-
$mscan_exclude_tmp_files = isset($MScan_options['mscan_exclude_tmp_files']) ? $MScan_options['mscan_exclude_tmp_files'] : '';
|
920 |
-
|
921 |
-
$MS_Options = array(
|
922 |
-
'bps_mscan_dirs' => $mscan_actual_dirs,
|
923 |
-
'mscan_max_file_size' => $mscan_max_file_size,
|
924 |
-
'mscan_max_time_limit' => $mscan_max_time_limit,
|
925 |
-
'mscan_scan_database' => $mscan_scan_database,
|
926 |
-
'mscan_scan_images' => $mscan_scan_images,
|
927 |
-
'mscan_scan_skipped_files' => $mscan_scan_skipped_files,
|
928 |
-
'mscan_scan_delete_tmp_files' => $mscan_scan_delete_tmp_files,
|
929 |
-
'mscan_scan_frequency' => $mscan_scan_frequency,
|
930 |
-
'mscan_exclude_dirs' => $mscan_exclude_dirs,
|
931 |
-
'mscan_exclude_tmp_files' => $mscan_exclude_tmp_files
|
932 |
-
);
|
933 |
-
|
934 |
-
foreach( $MS_Options as $key => $value ) {
|
935 |
-
update_option('bulletproof_security_options_MScan', $MS_Options);
|
936 |
-
}
|
937 |
-
|
938 |
-
} else {
|
939 |
|
940 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
941 |
|
942 |
-
|
943 |
-
|
944 |
-
|
945 |
-
|
|
|
|
|
|
|
|
|
946 |
}
|
|
|
|
|
947 |
|
948 |
-
|
949 |
-
|
950 |
-
|
951 |
-
|
952 |
-
|
953 |
-
|
954 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
955 |
|
956 |
-
|
957 |
-
|
958 |
-
|
959 |
-
|
960 |
-
|
961 |
-
|
962 |
-
|
963 |
-
|
964 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
965 |
|
966 |
-
|
967 |
-
|
968 |
-
|
969 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
970 |
|
971 |
-
$
|
972 |
-
|
973 |
-
'mscan_max_file_size' => $MScan_options['mscan_max_file_size'],
|
974 |
-
'mscan_max_time_limit' => $MScan_options['mscan_max_time_limit'],
|
975 |
-
'mscan_scan_database' => $MScan_options['mscan_scan_database'],
|
976 |
-
'mscan_scan_images' => $MScan_options['mscan_scan_images'],
|
977 |
-
'mscan_scan_skipped_files' => $MScan_options['mscan_scan_skipped_files'],
|
978 |
-
'mscan_scan_delete_tmp_files' => $MScan_options['mscan_scan_delete_tmp_files'],
|
979 |
-
'mscan_scan_frequency' => 'Off',
|
980 |
-
'mscan_exclude_dirs' => $MScan_options['mscan_exclude_dirs'],
|
981 |
-
'mscan_exclude_tmp_files' => $MScan_options['mscan_exclude_tmp_files']
|
982 |
-
);
|
983 |
-
|
984 |
-
foreach( $MS_Options as $key => $value ) {
|
985 |
-
update_option('bulletproof_security_options_MScan', $MS_Options);
|
986 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
987 |
}
|
988 |
}
|
989 |
}
|
@@ -991,7 +903,7 @@ function bpsPro_save_mscan_options() {
|
|
991 |
bpsPro_save_mscan_options();
|
992 |
|
993 |
$scrolltoExcludeDirs = isset($_REQUEST['scrolltoExcludeDirs']) ? (int) $_REQUEST['scrolltoExcludeDirs'] : 0;
|
994 |
-
$scrolltoExcludeTmpFiles = isset($_REQUEST['scrolltoExcludeTmpFiles']) ? (int) $_REQUEST['scrolltoExcludeTmpFiles'] : 0;
|
995 |
|
996 |
// Form: MScan Options Form
|
997 |
echo '<form name="MscanOptions" action="'.admin_url( 'admin.php?page=bulletproof-security/admin/mscan/mscan.php' ).'" method="post">';
|
@@ -1001,7 +913,7 @@ bpsPro_save_mscan_options();
|
|
1001 |
echo '<table class="widefat" style="text-align:left;">';
|
1002 |
echo '<thead>';
|
1003 |
echo '<tr>';
|
1004 |
-
echo '<th scope="col" style="width:40%;font-size:1.13em;background-color:transparent;"><strong>'.__('
|
1005 |
echo '<th scope="col" style="width:30%;font-size:1.13em;background-color:transparent;"><strong>'.__('MScan Options', 'bulletproof-security').'</strong></th>';
|
1006 |
echo '<th scope="col" style="width:30%;font-size:1.13em;background-color:transparent;"><strong>'.__('MScan Tools', 'bulletproof-security').'</strong></th>';
|
1007 |
echo '</tr>';
|
@@ -1022,6 +934,9 @@ bpsPro_save_mscan_options();
|
|
1022 |
echo '<tbody>';
|
1023 |
echo '<tr>';
|
1024 |
|
|
|
|
|
|
|
1025 |
foreach ( $MScan_options['bps_mscan_dirs'] as $key => $value ) {
|
1026 |
|
1027 |
if ( $value == '1' ) {
|
@@ -1029,25 +944,43 @@ bpsPro_save_mscan_options();
|
|
1029 |
} else {
|
1030 |
$checked = ( isset( $_POST['mscan[$key]'] ) ) ? $_POST['mscan[$key]'] : '';
|
1031 |
}
|
1032 |
-
|
1033 |
-
if ( ! is_readable( $
|
1034 |
echo "<td></td>";
|
1035 |
echo '<td>'.$key.' <strong><font color="blue">'.__('Folder is not readable', 'bulletproof-security').'</font></strong></td>';
|
1036 |
echo '</tr>';
|
1037 |
|
1038 |
} else {
|
1039 |
|
1040 |
-
$wp_index_file = $
|
1041 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1042 |
if ( file_exists($wp_index_file) ) {
|
1043 |
$check_string = file_get_contents($wp_index_file);
|
1044 |
}
|
1045 |
|
1046 |
-
if ( file_exists($
|
|
|
|
|
1047 |
|
1048 |
-
|
|
|
|
|
1049 |
|
1050 |
-
echo "<td><input type=\"checkbox\" id=\"mscandirs\" name=\"mscan[$key]\" value=\"
|
1051 |
echo '<td>'.$key.$hover_icon.'</td>';
|
1052 |
echo '</tr>';
|
1053 |
|
@@ -1068,11 +1001,20 @@ bpsPro_save_mscan_options();
|
|
1068 |
echo '<td style="border:none">';
|
1069 |
echo '<div id="MScanOptions" style="margin:0px 0px 0px 0px;float:left;">';
|
1070 |
|
1071 |
-
$max_file_size = ( isset( $_POST['mscan_max_file_size'] ) ) ? $_POST['mscan_max_file_size'] : '
|
1072 |
$max_time_limit = ( isset( $_POST['mscan_max_time_limit'] ) ) ? $_POST['mscan_max_time_limit'] : '300';
|
1073 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1074 |
echo '<label for="bps-mscan-label" style="padding-right:5px">'.__('Max File Size Limit to Scan:', 'bulletproof-security').'</label>';
|
1075 |
echo '<input type="text" name="mscan_max_file_size" class="regular-text-50-fixed" style="margin-bottom:5px" value="'; if ( isset( $_POST['mscan_max_file_size'] ) && preg_match( '/\d/', $_POST['mscan_max_file_size'] ) ) { echo esc_html($max_file_size); } else { echo esc_html(trim(stripslashes($max_file_size))); } echo '" /> KB';
|
|
|
1076 |
echo '<br>';
|
1077 |
|
1078 |
echo '<label for="bps-mscan-label" style="padding-right:23px">'.__('Max Time Limit to Scan:', 'bulletproof-security').'</label>';
|
@@ -1081,48 +1023,42 @@ bpsPro_save_mscan_options();
|
|
1081 |
|
1082 |
echo '<label for="bps-mscan-label" style="">'.__('Exclude Individual Folders', 'bulletproof-security').'</label><strong><font color="black"><span class="tooltip-350-120"><img src="'.plugins_url('/bulletproof-security/admin/images/question-mark.png').'" style="position:relative;top:3px;left:10px;" /><span>'.__('Enter one folder path per line. Include folder slashes.', 'bulletproof-security').'<br>'.__('Example:', 'bulletproof-security').'<br>/parent-folder-1/child-folder-1/<br>/parent-folder-2/child-folder-2/<br><br>'.__('Click the MScan Read Me help button for more help info.', 'bulletproof-security').'</span></span></font></strong><br>';
|
1083 |
// trimming whitespace does not work because I am not trimming newlines or returns
|
1084 |
-
echo '<textarea class="text-area-340x60" name="mscan_exclude_dirs" style="width:340px;height:60px;margin-bottom:5px" tabindex="1">'.esc_html( trim(stripslashes($
|
1085 |
echo '<input type="hidden" name="scrolltoExcludeDirs" id="scrolltoExcludeDirs" value="'.esc_html( $scrolltoExcludeDirs ).'" />';
|
1086 |
echo '<br>';
|
1087 |
|
1088 |
echo '<label for="bps-mscan-label">'.__('Scan Database', 'bulletproof-security').'</label><br>';
|
1089 |
echo '<select name="mscan_scan_database_select" class="form-340" style="margin-bottom:10px">';
|
1090 |
-
echo '<option value="On"'. selected('On', $
|
1091 |
-
echo '<option value="Off"'. selected('Off', $
|
1092 |
-
echo '</select><br>';
|
1093 |
-
|
1094 |
-
echo '<label for="bps-mscan-label">'.__('Scan Image Files (Stegosploit|Exif Hack)', 'bulletproof-security').'</label><br>';
|
1095 |
-
echo '<select name="mscan_scan_images_select" class="form-340" style="margin-bottom:10px">';
|
1096 |
-
echo '<option value="Off"'. selected('Off', $MScan_options['mscan_scan_images']).'>'.__('Image File Scan Off', 'bulletproof-security').'</option>';
|
1097 |
-
echo '<option value="On"'. selected('On', $MScan_options['mscan_scan_images']).'>'.__('Image File Scan On', 'bulletproof-security').'</option>';
|
1098 |
echo '</select><br>';
|
1099 |
|
1100 |
-
echo '<label for="bps-mscan-label">'.__('Scan Skipped Files Only', 'bulletproof-security').'</label><strong><font color="black"><span class="tooltip-350-120"><img src="'.plugins_url('/bulletproof-security/admin/images/question-mark.png').'" style="position:relative;top:3px;left:10px;" /><span>'.__('When Skipped File Scan is On only skipped files will be scanned. Note:
|
1101 |
echo '<select name="mscan_scan_skipped_files_select" class="form-340" style="margin-bottom:10px">';
|
1102 |
-
echo '<option value="Off"'. selected('Off', $
|
1103 |
-
echo '<option value="On"'. selected('On', $
|
1104 |
echo '</select><br>';
|
1105 |
|
1106 |
echo '<label for="bps-mscan-label">'.__('Automatically Delete /tmp Files', 'bulletproof-security').'</label><br>';
|
1107 |
echo '<select name="mscan_scan_delete_tmp_files_select" class="form-340" style="margin-bottom:10px">';
|
1108 |
-
echo '<option value="Off"'. selected('Off', $
|
1109 |
-
echo '<option value="On"'. selected('On', $
|
1110 |
echo '</select><br>';
|
1111 |
|
1112 |
echo '<label for="bps-mscan-label" style="">'.__('Exclude /tmp Files', 'bulletproof-security').'</label><strong><font color="black"><span class="tooltip-350-120"><img src="'.plugins_url('/bulletproof-security/admin/images/question-mark.png').'" style="position:relative;top:3px;left:10px;" /><span>'.__('Enter one file name per line.', 'bulletproof-security').'<br>'.__('Example:', 'bulletproof-security').'<br>mysql.sock<br>.s.PGSQL.5432<br>.per-user<br>'.__('Click the MScan Read Me help button for more help info.', 'bulletproof-security').'</span></span></font></strong><br>';
|
1113 |
// trimming whitespace does not work because I am not trimming newlines or returns
|
1114 |
-
echo '<textarea class="text-area-340x60" name="mscan_exclude_tmp_files" style="width:340px;height:60px;margin-bottom:5px" tabindex="1">'.esc_html( trim(stripslashes($
|
1115 |
echo '<input type="hidden" name="scrolltoExcludeTmpFiles" id="scrolltoExcludeTmpFiles" value="'.esc_html( $scrolltoExcludeTmpFiles ).'" />';
|
1116 |
echo '<br>';
|
1117 |
|
1118 |
echo '<label for="bps-mscan-label">'.__('Scheduled Scan Frequency (BPS Pro only)', 'bulletproof-security').'</label><br>';
|
1119 |
echo '<select name="mscan_scan_frequency_select" class="form-340" style="margin-bottom:15px">';
|
1120 |
-
echo '<option value="Off"'. selected('Off', $
|
1121 |
-
echo '<option value="60"'. selected('60', $
|
1122 |
-
echo '<option value="180"'. selected('180', $
|
1123 |
-
echo '<option value="360"'. selected('360', $
|
1124 |
-
echo '<option value="720"'. selected('720', $
|
1125 |
-
echo '<option value="1440"'. selected('1440', $
|
1126 |
echo '</select><br>';
|
1127 |
|
1128 |
echo "<p><input type=\"submit\" name=\"Submit-MScan-Options\" value=\"".esc_attr__('Save MScan Options', 'bulletproof-security')."\" class=\"button bps-button\" onclick=\"return confirm('".__('Click OK to save MScan Options or click Cancel', 'bulletproof-security')."')\" /></p></form>";
|
@@ -1130,22 +1066,42 @@ bpsPro_save_mscan_options();
|
|
1130 |
echo '</div>';
|
1131 |
echo '</td>';
|
1132 |
echo '<td style="border:none">';
|
1133 |
-
echo '<div id="MScanOptions" style="margin:
|
1134 |
|
|
|
1135 |
echo '<form name="MScanTimeEstimate" action="'.admin_url( 'admin.php?page=bulletproof-security/admin/mscan/mscan.php' ).'" method="post">';
|
1136 |
wp_nonce_field('bulletproof_security_mscan_time_estimate');
|
1137 |
echo "<input type=\"submit\" id=\"bps-mscan-time-estimate-button\" name=\"Submit-MScan-Time-Estimate\" value=\"".esc_attr__('Scan Time Estimate Tool', 'bulletproof-security')."\" class=\"button bps-button\" style=\"width:175px;height:auto;white-space:normal\" onclick=\"return confirm('".__('IMPORTANT: You can stop the scan time estimate if it hangs or is taking too long by clicking the Stop Scan button.\n\n-------------------------------------------------------------\n\nThis tool allows you to check the estimated total scan time of a scan based on your MScan option settings without actually performing/running a scan. Note: This tool does not affect or change any previous scan results except for the Total Scan Time, which will be changed to the estimated scan time.\n\n-------------------------------------------------------------\n\nExample Usage: You can check or uncheck Hosting Account Root Folders checkboxes and change any other MScan option settings, save your MScan option settings and then run the Scan Time Estimate Tool to get the total estimated time that the actual scan will take. For additional help information click the MScan Read Me help button.\n\n-------------------------------------------------------------\n\nClick OK to get a scan time estimate or click Cancel', 'bulletproof-security')."')\" />";
|
1138 |
-
echo '</form><br>';
|
1139 |
-
|
1140 |
-
echo '<form name="MScanDeleteStatus" action="'.admin_url( 'admin.php?page=bulletproof-security/admin/mscan/mscan.php' ).'" method="post">';
|
1141 |
-
wp_nonce_field('bulletproof_security_mscan_delete_status');
|
1142 |
-
echo "<input type=\"submit\" name=\"Submit-MScan-Delete-Status\" value=\"".esc_attr__('Delete Scan Status Tool', 'bulletproof-security')."\" class=\"button bps-button\" style=\"width:175px;height:auto;white-space:normal\" onclick=\"return confirm('".__('This tool allows you to delete all of the MScan Status option values.\n\n-------------------------------------------------------------\n\nThe Scan Completed timestamp, Total Scan Time, Total Files Scanned, Skipped Files, Suspicious Files and Suspicious DB Entries status values will be deleted and will either display blank or 0. For additional help information click the MScan Read Me help button.\n\n-------------------------------------------------------------\n\nClick OK to delete scan status option values or click Cancel', 'bulletproof-security')."')\" />";
|
1143 |
-
echo '</form><br>';
|
1144 |
|
1145 |
-
echo '<form name="
|
1146 |
-
wp_nonce_field('
|
1147 |
-
echo "<input type=\"submit\" name=\"Submit-MScan-Delete-
|
1148 |
echo '</form>';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1149 |
|
1150 |
echo '</div>';
|
1151 |
echo '</td>';
|
@@ -1153,6 +1109,234 @@ bpsPro_save_mscan_options();
|
|
1153 |
echo '</tbody>';
|
1154 |
echo '</table>';
|
1155 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1156 |
$UIoptions = get_option('bulletproof_security_options_theme_skin');
|
1157 |
|
1158 |
if ( isset($UIoptions['bps_ui_theme_skin']) && $UIoptions['bps_ui_theme_skin'] == 'blue' ) { ?>
|
@@ -1380,6 +1564,9 @@ if ( isset( $_POST['Submit-MScan-Suspect-Form'] ) && current_user_can('manage_op
|
|
1380 |
}
|
1381 |
}
|
1382 |
|
|
|
|
|
|
|
1383 |
echo '<form name="MScanSuspiciousFiles" action="'.admin_url( 'admin.php?page=bulletproof-security/admin/mscan/mscan.php' ).'" method="post">';
|
1384 |
wp_nonce_field('bulletproof_security_mscan_suspicious_files');
|
1385 |
|
@@ -1399,7 +1586,7 @@ if ( isset( $_POST['Submit-MScan-Suspect-Form'] ) && current_user_can('manage_op
|
|
1399 |
echo '<th scope="col" style="width:7%;"><input type="checkbox" class="checkallUnignore" style="text-align:left;margin-left:2px;" /><br><strong>'.__('Unignore<br>File', 'bulletproof-security').'</strong></th>';
|
1400 |
echo '<th scope="col" style="width:7%;"><input type="checkbox" class="checkallDelete" style="text-align:left;margin-left:2px;" /><br><strong>'.__('Delete<br>File', 'bulletproof-security').'</strong></th>';
|
1401 |
echo '<th scope="col" style="width:42%;"><strong>'.__('File Path', 'bulletproof-security').'</strong></th>';
|
1402 |
-
echo '<th scope="col" style="width:10%;"><strong>'.__('
|
1403 |
echo '<th scope="col" style="width:10%;"><strong>'.__('Scan<br>Time', 'bulletproof-security').'</strong></th>';
|
1404 |
echo '</tr>';
|
1405 |
echo '</thead>';
|
@@ -1442,7 +1629,14 @@ if ( isset( $_POST['Submit-MScan-Suspect-Form'] ) && current_user_can('manage_op
|
|
1442 |
|
1443 |
echo "<td><input type=\"checkbox\" id=\"deletefile\" name=\"mscan[$row->mscan_path]\" value=\"deletefile\" class=\"deletefileALL\" /><br><span style=\"font-size:10px;\">".__('Delete', 'bulletproof-security')."</span></td>";
|
1444 |
echo '<td>'.$row->mscan_path.'</td>';
|
1445 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1446 |
echo '<td>'.$row->mscan_time.'</td>';
|
1447 |
echo '</tr>';
|
1448 |
}
|
@@ -1673,6 +1867,9 @@ if ( isset( $_POST['Submit-MScan-Suspect-DB-Form'] ) && current_user_can('manage
|
|
1673 |
}
|
1674 |
}
|
1675 |
|
|
|
|
|
|
|
1676 |
echo '<form name="MScanSuspiciousDBEntries" action="'.admin_url( 'admin.php?page=bulletproof-security/admin/mscan/mscan.php' ).'" method="post">';
|
1677 |
wp_nonce_field('bulletproof_security_mscan_suspicious_db_entries');
|
1678 |
|
@@ -1792,7 +1989,7 @@ jQuery(document).ready(function($){
|
|
1792 |
|
1793 |
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="bps-help_faq_table">
|
1794 |
<tr>
|
1795 |
-
<td class="bps-table_title"><h2><?php _e('MScan Log ~ ', 'bulletproof-security'); ?><span style="font-size:.75em;"><?php _e('Logs
|
1796 |
</tr>
|
1797 |
<tr>
|
1798 |
<td class="bps-table_cell_help">
|
@@ -1860,7 +2057,7 @@ bpsPro_MScan_LogSize();
|
|
1860 |
<form name="MScanLogModDate" action="options.php#bps-tabs-2" method="post">
|
1861 |
<?php settings_fields('bulletproof_security_options_MScan_log'); ?>
|
1862 |
<?php $MScanLogoptions = get_option('bulletproof_security_options_MScan_log');
|
1863 |
-
$bps_mscan_log_date_mod = ! isset($MScanLogoptions['bps_mscan_log_date_mod']) ? '' : $MScanLogoptions['bps_mscan_log_date_mod'];
|
1864 |
?>
|
1865 |
<label for="QLog"><strong><?php _e('MScan Log Last Modified Time:', 'bulletproof-security'); ?></strong></label><br />
|
1866 |
<label for="QLog"><strong><?php echo bpsPro_MScan_ModTimeDiff(); ?></strong><?php echo $bps_mscan_log_date_mod; ?></label><br />
|
@@ -1873,14 +2070,28 @@ bpsPro_MScan_LogSize();
|
|
1873 |
if ( isset( $_POST['Submit-Delete-MScan-Log'] ) && current_user_can('manage_options') ) {
|
1874 |
check_admin_referer( 'bulletproof_security_delete_mscan_log' );
|
1875 |
|
1876 |
-
|
1877 |
-
|
1878 |
-
|
1879 |
-
|
1880 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1881 |
|
1882 |
-
if ( copy($
|
1883 |
-
touch($
|
1884 |
|
1885 |
echo $bps_topDiv;
|
1886 |
$text = '<font color="green"><strong>'.__('Success! Your MScan Log has been deleted and replaced with a new blank MScan Log file.', 'bulletproof-security').'</strong></font>';
|
@@ -1986,6 +2197,7 @@ jQuery(document).ready(function($){
|
|
1986 |
});
|
1987 |
/* ]]> */
|
1988 |
</script>
|
|
|
1989 |
</div>
|
1990 |
|
1991 |
</td>
|
@@ -1996,6 +2208,1300 @@ jQuery(document).ready(function($){
|
|
1996 |
|
1997 |
<div id="bps-tabs-3" class="bps-tab-page">
|
1998 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1999 |
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="bps-help_faq_table">
|
2000 |
<tr>
|
2001 |
<td class="bps-table_title"><h2><?php _e('Help & FAQ', 'bulletproof-security'); ?></h2></td>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<!-- force the vertical scrollbar -->
|
2 |
<style>
|
3 |
#wpwrap{min-height:100.1%};
|
4 |
+
div.notice{display:none}
|
5 |
</style>
|
6 |
|
7 |
<div id="bps-container" class="wrap" style="margin:45px 20px 5px 0px;">
|
8 |
|
9 |
+
<!-- MUST be in my page container div. hide notices from other plugins so they don't break the MScan iFrame-->
|
10 |
+
<style>
|
11 |
+
div.notice{display:none}
|
12 |
+
</style>
|
13 |
+
|
14 |
<noscript><div id="message" class="updated" style="font-weight:600;font-size:13px;padding:5px;background-color:#dfecf2;border:1px solid #999;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);"><span style="color:blue">BPS Warning: JavaScript is disabled in your Browser</span><br />BPS plugin pages will not display visually correct and all BPS JavaScript functionality will not work correctly.</div></noscript>
|
15 |
|
16 |
<?php
|
22 |
echo '</div>';
|
23 |
|
24 |
## 2.9: Created new file for mscan pattern matching code. If web host deletes or nulls that file or Dir then mscan will not work, but BPS Pro will still work.
|
25 |
+
## 4.8: Major rebuild: Plugin and Theme files will be checked using MD5 file hash comparisons. Will still offer pattern matching, but am recommending
|
26 |
+
## Premium/custom plugin and theme zip uploads so that MD5 hashes can be made from those plugin and theme files.
|
27 |
+
## MScan pattern matching code is now saved in the DB.
|
28 |
function bpsPro_mscan_pattern_match_file_check() {
|
29 |
|
30 |
$mscan_db_pattern_match_options = get_option('bulletproof_security_options_mscan_patterns');
|
31 |
+
|
32 |
if ( ! empty($mscan_db_pattern_match_options['mscan_pattern_match_files']) ) {
|
33 |
|
34 |
foreach ( $mscan_db_pattern_match_options['mscan_pattern_match_files'] as $key => $value ) {
|
44 |
if ( $inner_key == 'php_patterns' ) {
|
45 |
$php_pattern = $inner_value;
|
46 |
}
|
|
|
|
|
|
|
47 |
}
|
48 |
}
|
49 |
}
|
50 |
+
|
51 |
if ( empty($js_pattern) ) {
|
52 |
+
$text = '<div id="bps-inpage-message" style="background-color:#dfecf2;border:1px solid #999;font-size:1em;font-weight:600;padding:0px 5px;margin:-7px 0px 10px 0px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);"><font color="#fb0101">'.__('The MScan pattern matching code does not exist in your database.', 'bulletproof-security').'</font><br>'.__('Most likely your web host saw the pattern matching code in the MScan /bulletproof-security/admin/htaccess/mscan-pattern-match.php file as malicious and has either deleted the file or made the file or folder unreadable.', 'bulletproof-security').'<br>'.__('Unfortunately that means you will not be able to use MScan on your website/server/web host.', 'bulletproof-security').'</div>';
|
53 |
echo $text;
|
54 |
}
|
55 |
}
|
56 |
bpsPro_mscan_pattern_match_file_check();
|
57 |
?>
|
58 |
|
|
|
|
|
59 |
<div id="message" class="updated" style="border:1px solid #999;background-color:#000;">
|
60 |
|
61 |
<?php
|
73 |
|
74 |
$bpsSpacePop = '-------------------------------------------------------------';
|
75 |
|
76 |
+
require_once WP_PLUGIN_DIR . '/bulletproof-security/admin/mscan/mscan-help-text.php';
|
77 |
|
78 |
// Replace ABSPATH = wp-content/plugins
|
79 |
$bps_plugin_dir = str_replace( ABSPATH, '', WP_PLUGIN_DIR );
|
83 |
$wp_upload_dir = wp_upload_dir();
|
84 |
$bps_uploads_dir = str_replace( ABSPATH, '', $wp_upload_dir['basedir'] );
|
85 |
|
86 |
+
// Get Real IP address - USE EXTREME CAUTION!!!
|
87 |
+
function bpsPro_get_real_ip_address_mscan() {
|
88 |
|
89 |
+
if ( is_admin() && current_user_can('manage_options') ) {
|
90 |
|
91 |
+
if ( isset( $_SERVER['HTTP_CLIENT_IP'] ) ) {
|
92 |
+
$ip = esc_html( $_SERVER['HTTP_CLIENT_IP'] );
|
93 |
+
|
94 |
+
if ( ! is_array($ip) ) {
|
95 |
+
|
96 |
+
if ( preg_match( '/(\d+\.){3}\d+/', $ip, $matches ) ) {
|
97 |
+
|
98 |
+
return $matches[0];
|
99 |
+
|
100 |
+
} elseif ( preg_match( '/([:\d\w]+\.(\d+\.){2}\d+|[:\d\w]+)/', $ip, $matches ) ) {
|
101 |
+
|
102 |
+
return $matches[0];
|
103 |
+
|
104 |
+
} else {
|
105 |
+
|
106 |
+
return $ip;
|
107 |
+
}
|
108 |
+
|
109 |
+
} else {
|
110 |
+
|
111 |
+
return current($ip);
|
112 |
+
}
|
113 |
+
|
114 |
+
} elseif ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
|
115 |
+
$ip = esc_html( $_SERVER['HTTP_X_FORWARDED_FOR'] );
|
116 |
+
|
117 |
+
if ( ! is_array($ip) ) {
|
118 |
+
|
119 |
+
if ( preg_match( '/(\d+\.){3}\d+/', $ip, $matches ) ) {
|
120 |
+
|
121 |
+
return $matches[0];
|
122 |
+
|
123 |
+
} elseif ( preg_match( '/([:\d\w]+\.(\d+\.){2}\d+|[:\d\w]+)/', $ip, $matches ) ) {
|
124 |
+
|
125 |
+
return $matches[0];
|
126 |
+
|
127 |
+
} else {
|
128 |
+
|
129 |
+
return $ip;
|
130 |
+
}
|
131 |
+
|
132 |
+
} else {
|
133 |
+
|
134 |
+
return current($ip);
|
135 |
+
}
|
136 |
+
|
137 |
+
} elseif ( isset( $_SERVER['REMOTE_ADDR'] ) ) {
|
138 |
+
$ip = esc_html( $_SERVER['REMOTE_ADDR'] );
|
139 |
+
return $ip;
|
140 |
+
}
|
141 |
+
}
|
142 |
+
}
|
143 |
+
|
144 |
+
// Create a new Deny All .htaccess file on first page load with users current IP address to allow the cc-master.zip file to be downloaded
|
145 |
+
// Create a new Deny All .htaccess file if IP address is not current
|
146 |
+
function bpsPro_Core_mscan_deny_all() {
|
147 |
+
|
148 |
+
if ( is_admin() && wp_script_is( 'bps-accordion', $list = 'queue' ) && current_user_can('manage_options') ) {
|
149 |
+
|
150 |
+
$HFiles_options = get_option('bulletproof_security_options_htaccess_files');
|
151 |
+
$Apache_Mod_options = get_option('bulletproof_security_options_apache_modules');
|
152 |
+
$Zip_download_Options = get_option('bulletproof_security_options_zip_fix');
|
153 |
+
|
154 |
+
if ( isset( $HFiles_options['bps_htaccess_files'] ) && $HFiles_options['bps_htaccess_files'] == 'disabled' || isset( $Zip_download_Options['bps_zip_download_fix'] ) && $Zip_download_Options['bps_zip_download_fix'] == 'On' ) {
|
155 |
+
return;
|
156 |
+
}
|
157 |
+
|
158 |
+
if ( $Apache_Mod_options['bps_apache_mod_ifmodule'] == 'Yes' ) {
|
159 |
+
|
160 |
+
$denyall_content = "# BPS mod_authz_core IfModule BC\n<IfModule mod_authz_core.c>\nRequire ip ". bpsPro_get_real_ip_address_mscan()."\n</IfModule>\n\n<IfModule !mod_authz_core.c>\n<IfModule mod_access_compat.c>\n<FilesMatch \"(.*)\$\">\nOrder Allow,Deny\nAllow from ". bpsPro_get_real_ip_address_mscan()."\n</FilesMatch>\n</IfModule>\n</IfModule>";
|
161 |
+
|
162 |
+
} else {
|
163 |
+
|
164 |
+
$denyall_content = "# BPS mod_access_compat\n<FilesMatch \"(.*)\$\">\nOrder Allow,Deny\nAllow from ". bpsPro_get_real_ip_address_mscan()."\n</FilesMatch>";
|
165 |
+
}
|
166 |
+
|
167 |
+
$create_denyall_htaccess_file = WP_PLUGIN_DIR . '/bulletproof-security/admin/mscan/.htaccess';
|
168 |
+
|
169 |
+
if ( file_exists($create_denyall_htaccess_file) ) {
|
170 |
+
$check_string = @file_get_contents($create_denyall_htaccess_file);
|
171 |
+
}
|
172 |
+
|
173 |
+
if ( ! file_exists($create_denyall_htaccess_file) ) {
|
174 |
+
|
175 |
+
$handle = fopen( $create_denyall_htaccess_file, 'w+b' );
|
176 |
+
fwrite( $handle, $denyall_content );
|
177 |
+
fclose( $handle );
|
178 |
+
}
|
179 |
+
|
180 |
+
if ( file_exists($create_denyall_htaccess_file) && ! strpos( $check_string, bpsPro_get_real_ip_address_mscan() ) ) {
|
181 |
+
$handle = fopen( $create_denyall_htaccess_file, 'w+b' );
|
182 |
+
fwrite( $handle, $denyall_content );
|
183 |
+
fclose( $handle );
|
184 |
+
}
|
185 |
}
|
186 |
}
|
187 |
|
188 |
+
bpsPro_Core_mscan_deny_all();
|
189 |
|
190 |
+
?>
|
191 |
</div>
|
192 |
|
193 |
+
<h2 class="bps-tab-title"><?php _e('BulletProof Security ~ MScan 2.0 Malware Scanner', 'bulletproof-security'); ?></h2>
|
194 |
+
|
195 |
<!-- jQuery UI Tab Menu -->
|
196 |
<div id="bps-tabs" class="bps-menu">
|
197 |
<div id="bpsHead"><img src="<?php echo plugins_url('/bulletproof-security/admin/images/bps-free-logo.gif'); ?>" /></div>
|
198 |
<ul>
|
199 |
+
<li><a href="#bps-tabs-1"><?php _e('MScan 2.0', 'bulletproof-security'); ?></a></li>
|
200 |
<li><a href="#bps-tabs-2"><?php _e('MScan Log', 'bulletproof-security'); ?></a></li>
|
201 |
+
<li><a href="#bps-tabs-3"><?php _e('MScan Report', 'bulletproof-security'); ?></a></li>
|
202 |
+
<li><a href="#bps-tabs-4"><?php _e('MScan Saved Reports', 'bulletproof-security'); ?></a></li>
|
203 |
+
<li><a href="#bps-tabs-5"><?php _e('Help & FAQ', 'bulletproof-security'); ?></a></li>
|
204 |
</ul>
|
205 |
|
206 |
<div id="bps-tabs-1" class="bps-tab-page">
|
207 |
|
208 |
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="bps-help_faq_table">
|
209 |
<tr>
|
210 |
+
<td class="bps-table_title"><h2><?php _e('MScan 2.0 ~ ', 'bulletproof-security'); ?><span style="font-size:.75em;"><?php _e('Scans website files & your database for hacker files or code', 'bulletproof-security'); ?></span></h2>
|
|
|
|
|
|
|
|
|
|
|
211 |
</td>
|
212 |
</tr>
|
213 |
<tr>
|
214 |
<td class="bps-table_cell_help">
|
215 |
|
216 |
+
<h3 style="margin:0px 0px 10px 0px;"><?php _e('MScan 2.0', 'bulletproof-security'); ?> <button id="bps-open-modal1" class="button bps-modal-button"><?php _e('Read Me', 'bulletproof-security'); ?></button></h3>
|
217 |
|
218 |
+
<div id="bps-modal-content1" class="bps-dialog-hide" title="<?php _e('MScan 2.0', 'bulletproof-security'); ?>">
|
219 |
<p>
|
220 |
<?php
|
221 |
$text = '<strong>'.__('This Read Me Help window is draggable (top) and resizable (bottom right corner)', 'bulletproof-security').'</strong><br><br>';
|
225 |
?>
|
226 |
<strong><a href="https://forum.ait-pro.com/forums/topic/mscan-malware-scanner-guide/" title="MScan Malware Scanner Guide" target="_blank"><?php _e('MScan Malware Scanner Guide', 'bulletproof-security'); ?></a></strong><br />
|
227 |
<strong><a href="https://forum.ait-pro.com/forums/topic/mscan-troubleshooting-questions-problems-and-code-posting/" title="MScan Troubleshooting & Code Posting" target="_blank"><?php _e('MScan Troubleshooting & Code Posting', 'bulletproof-security'); ?></a></strong><br />
|
228 |
+
<strong><a href="https://forum.ait-pro.com/forums/topic/read-me-first-pro/#bps-pro-general-troubleshooting" title="BPS Pro Troubleshooting Steps" target="_blank"><?php _e('BPS Pro Troubleshooting Steps', 'bulletproof-security'); ?></a></strong><br /><br />
|
229 |
|
230 |
+
<?php echo $bps_modal_content1; ?></p>
|
|
|
231 |
</div>
|
232 |
|
233 |
+
<style>
|
234 |
+
#bps-container div.mscan-report-row-small{font-size:1em;margin:0px 0px 10px 0px}
|
235 |
|
236 |
+
@media screen and (max-width: 495px){
|
237 |
+
div#bps-mscan-iframe-container{height:150px}
|
238 |
+
iframe#bps-mscan-iframe-contents{border:0px none;margin-left:0px;height:195px;margin-top:-47px;width:100%;}
|
239 |
+
}
|
240 |
+
@media screen and (min-width: 496px) and (max-width: 916px){
|
241 |
+
div#bps-mscan-iframe-container{height:80px}
|
242 |
+
iframe#bps-mscan-iframe-contents{border:0px none;margin-left:0px;height:125px;margin-top:-47px;width:100%;}
|
243 |
+
}
|
244 |
+
@media screen and (min-width: 917px) and (max-width: 960px){
|
245 |
+
div#bps-mscan-iframe-container{height:80px}
|
246 |
+
iframe#bps-mscan-iframe-contents{border:0px none;margin-left:-45px;height:125px;margin-top:-32px;width:100%;}
|
247 |
+
}
|
248 |
+
@media screen and (min-width: 961px) and (max-width: 1043px){
|
249 |
+
div#bps-mscan-iframe-container{height:80px}
|
250 |
+
iframe#bps-mscan-iframe-contents{border:0px none;margin-left:0px;height:140px;margin-top:-47px;width:100%;}
|
251 |
+
}
|
252 |
+
@media screen and (min-width: 1044px) and (max-width: 1185px){
|
253 |
+
div#bps-mscan-iframe-container{height:80px}
|
254 |
+
iframe#bps-mscan-iframe-contents{border:0px none;margin-left:-45px;height:140px;margin-top:-35px;width:100%;}
|
255 |
+
}
|
256 |
+
@media screen and (min-width: 1186px) and (max-width: 1221px){
|
257 |
+
div#bps-mscan-iframe-container{height:60px}
|
258 |
+
iframe#bps-mscan-iframe-contents{border:0px none;margin-left:-45px;height:125px;margin-top:-35px;width:100%;}
|
259 |
+
}
|
260 |
+
@media screen and (min-width: 1222px) and (max-width: 1304px){
|
261 |
+
div#bps-mscan-iframe-container{height:80px}
|
262 |
+
iframe#bps-mscan-iframe-contents{border:0px none;margin-left:-170px;height:140px;margin-top:-35px;width:100%;}
|
263 |
+
}
|
264 |
+
@media screen and (min-width: 1305px) and (max-width: 1370px){
|
265 |
+
div#bps-mscan-iframe-container{height:70px}
|
266 |
+
iframe#bps-mscan-iframe-contents{border:0px none;margin-left:-170px;height:130px;margin-top:-35px;width:100%;}
|
267 |
+
}
|
268 |
+
@media screen and (min-width: 1371px) and (max-width: 1599px){
|
269 |
+
iframe#bps-mscan-iframe-contents{border:0px none;margin-left:-170px;height:110px;margin-top:-35px;width:100%;}
|
270 |
+
}
|
271 |
+
@media screen and (min-width: 1600px){
|
272 |
+
iframe#bps-mscan-iframe-contents{border:0px none;margin-left:-170px;height:110px;margin-top:-32px;width:100%;}
|
273 |
+
}
|
274 |
+
</style>
|
275 |
+
|
276 |
+
<!-- Note if someone is displaying BPS Pro status display in BPS plugin pages only it throws off the iframe section Don't adjust for that and don't use any CSS -->
|
277 |
+
<!-- because it causes other problems. For BPS free I will probably need to change the position of the iframe since all BPS free stuff is displayed inpage -->
|
278 |
+
<div id="bps-mscan-iframe-container" style="border:none;overflow:hidden;margin:15px auto;max-width:1400px;">
|
279 |
+
<iframe id="bps-mscan-iframe-contents" scrolling="no" src="<?php echo get_site_url(null, '/wp-admin/admin.php?page=bulletproof-security%2Fadmin%2Fmscan%2Fmscan-iframe.php', null); ?>" style="">
|
280 |
+
</iframe>
|
281 |
+
</div>
|
282 |
|
283 |
+
<?php
|
284 |
+
// Form Processing: Reset MScan: Deletes the bpspro_mscan DB table, saves blank values for the MScan Status DB options.
|
285 |
+
if ( isset( $_POST['Submit-MScan-Reset'] ) && current_user_can('manage_options') ) {
|
286 |
+
check_admin_referer('bulletproof_security_mscan_reset');
|
287 |
|
288 |
$MStable_name = $wpdb->prefix . "bpspro_mscan";
|
289 |
|
307 |
UNIQUE KEY id (mscan_id)
|
308 |
);";
|
309 |
|
310 |
+
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
|
311 |
dbDelta($sql);
|
312 |
}
|
313 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
314 |
$MScan_status = get_option('bulletproof_security_options_MScan_status');
|
315 |
|
316 |
$MScan_status_db = array(
|
330 |
'bps_mscan_total_suspect_files' => '',
|
331 |
'bps_mscan_suspect_skipped_files' => '',
|
332 |
'bps_mscan_total_suspect_db' => '',
|
333 |
+
'bps_mscan_total_ignored_files' => '',
|
334 |
+
'bps_mscan_total_plugin_files' => '',
|
335 |
+
'bps_mscan_total_theme_files' => ''
|
336 |
);
|
337 |
|
338 |
foreach( $MScan_status_db as $key => $value ) {
|
339 |
update_option('bulletproof_security_options_MScan_status', $MScan_status_db);
|
340 |
}
|
341 |
+
|
342 |
+
echo $bps_topDiv;
|
343 |
+
$text = '<font color="green"><strong>'.__('MScan scan results and data has been deleted. Your MScan option settings have not been deleted.', 'bulletproof-security').'</strong></font>';
|
344 |
+
echo $text;
|
345 |
+
echo $bps_bottomDiv;
|
346 |
+
}
|
347 |
+
|
348 |
+
// Form Processing: Delete File Hashes Tool: Deletes the plugin and theme hash DB options
|
349 |
+
// and the no zip download DB option (premium/paid and custom plugins and themes or plugins and themes without a zip version #).
|
350 |
+
if ( isset( $_POST['Submit-MScan-Delete-Hashes'] ) && current_user_can('manage_options') ) {
|
351 |
+
check_admin_referer('bulletproof_security_mscan_delete_hashes');
|
352 |
+
|
353 |
+
delete_option('bulletproof_security_options_mscan_plugin_hash');
|
354 |
+
delete_option('bulletproof_security_options_mscan_p_hash_new');
|
355 |
+
delete_option('bulletproof_security_options_mscan_theme_hash');
|
356 |
+
delete_option('bulletproof_security_options_mscan_t_hash_new');
|
357 |
+
delete_option('bulletproof_security_options_mscan_nodownload');
|
358 |
+
|
359 |
echo $bps_topDiv;
|
360 |
+
$text = '<font color="green"><strong>'.__('MScan Plugin and Theme file hashes have been deleted. New Plugin and Theme file hashes will be created the next time you run a scan. You should also click the MScan Reset button after using this tool. Your MScan option settings have not been deleted.', 'bulletproof-security').'</strong></font>';
|
361 |
echo $text;
|
362 |
echo $bps_bottomDiv;
|
363 |
}
|
380 |
'bps_mscan_status' => '4',
|
381 |
'bps_mscan_last_scan_timestamp' => $MScan_status['bps_mscan_last_scan_timestamp'],
|
382 |
'bps_mscan_total_time' => $MScan_status['bps_mscan_total_time'],
|
383 |
+
'bps_mscan_total_website_files' => '',
|
384 |
'bps_mscan_total_wp_core_files' => $MScan_status['bps_mscan_total_wp_core_files'],
|
385 |
'bps_mscan_total_non_image_files' => $MScan_status['bps_mscan_total_non_image_files'],
|
386 |
+
'bps_mscan_total_image_files' => '',
|
387 |
'bps_mscan_total_all_scannable_files' => $MScan_status['bps_mscan_total_all_scannable_files'],
|
388 |
'bps_mscan_total_skipped_files' => $MScan_status['bps_mscan_total_skipped_files'],
|
389 |
'bps_mscan_total_suspect_files' => $MScan_status['bps_mscan_total_suspect_files'],
|
390 |
+
'bps_mscan_total_ignored_files' => $MScan_status['bps_mscan_total_ignored_files'],
|
391 |
+
'bps_mscan_total_plugin_files' => $MScan_status['bps_mscan_total_plugin_files'],
|
392 |
+
'bps_mscan_total_theme_files' => $MScan_status['bps_mscan_total_theme_files']
|
393 |
);
|
394 |
|
395 |
foreach( $MScan_status_db as $key => $value ) {
|
397 |
}
|
398 |
|
399 |
$mscan_scan_skipped_files_message = '';
|
|
|
400 |
|
401 |
if ( $MScan_options['mscan_scan_skipped_files'] == 'On' ) {
|
402 |
$mscan_scan_skipped_files_message = '<br><font color="blue"><strong>'.__('Skipped file scanning is turned On. Only skipped files will be scanned.', 'bulletproof-security').'</strong></font>';
|
403 |
}
|
404 |
|
|
|
|
|
|
|
|
|
405 |
echo $bps_topDiv;
|
406 |
+
$text = '<font color="green"><strong>'.__('MScan scanning has been stopped. Note: The Stop Scan button also stops the Scan Time Estimate Tool from calculating estimated scan time.', 'bulletproof-security').'</strong></font>'.$mscan_scan_skipped_files_message;
|
407 |
echo $text;
|
408 |
echo $bps_bottomDiv;
|
409 |
}
|
410 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
411 |
function bpsPro_mscan_displayed_messages() {
|
412 |
global $bps_topDiv, $bps_bottomDiv;
|
413 |
|
415 |
$MScan_options = get_option('bulletproof_security_options_MScan');
|
416 |
|
417 |
$mscan_scan_skipped_files_message = '';
|
|
|
418 |
|
419 |
if ( isset($MScan_options['mscan_scan_skipped_files']) && $MScan_options['mscan_scan_skipped_files'] == 'On' ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
420 |
|
421 |
echo $bps_topDiv;
|
422 |
+
$mscan_scan_skipped_files_message = '<br><font color="blue"><strong>'.__('Skipped file scanning is turned On. Only skipped files will be scanned.', 'bulletproof-security').'</strong></font>';
|
423 |
+
echo $mscan_scan_skipped_files_message;
|
424 |
echo $bps_bottomDiv;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
425 |
}
|
426 |
}
|
427 |
|
438 |
|
439 |
$bps_mscan_last_scan_timestamp = ! isset($MScan_status['bps_mscan_last_scan_timestamp']) ? '' : $MScan_status['bps_mscan_last_scan_timestamp'];
|
440 |
$bps_mscan_total_time = ! isset($MScan_status['bps_mscan_total_time']) ? '' : $MScan_status['bps_mscan_total_time'];
|
|
|
441 |
$bps_mscan_total_wp_core_files = ! isset($MScan_status['bps_mscan_total_wp_core_files']) ? '' : $MScan_status['bps_mscan_total_wp_core_files'];
|
442 |
$bps_mscan_total_non_image_files = ! isset($MScan_status['bps_mscan_total_non_image_files']) ? '' : $MScan_status['bps_mscan_total_non_image_files'];
|
|
|
|
|
443 |
$bps_mscan_total_skipped_files = ! isset($MScan_status['bps_mscan_total_skipped_files']) ? '' : $MScan_status['bps_mscan_total_skipped_files'];
|
444 |
$bps_mscan_total_suspect_files = ! isset($MScan_status['bps_mscan_total_suspect_files']) ? '' : $MScan_status['bps_mscan_total_suspect_files'];
|
445 |
$bps_mscan_suspect_skipped_files = ! isset($MScan_status['bps_mscan_suspect_skipped_files']) ? '' : $MScan_status['bps_mscan_suspect_skipped_files'];
|
446 |
$bps_mscan_total_suspect_db = ! isset($MScan_status['bps_mscan_total_suspect_db']) ? '' : $MScan_status['bps_mscan_total_suspect_db'];
|
447 |
$bps_mscan_total_ignored_files = ! isset($MScan_status['bps_mscan_total_ignored_files']) ? '' : $MScan_status['bps_mscan_total_ignored_files'];
|
448 |
+
$bps_mscan_total_plugin_files = ! isset($MScan_status['bps_mscan_total_plugin_files']) ? '' : $MScan_status['bps_mscan_total_plugin_files'];
|
449 |
+
$bps_mscan_total_theme_files = ! isset($MScan_status['bps_mscan_total_theme_files']) ? '' : $MScan_status['bps_mscan_total_theme_files'];
|
450 |
|
451 |
$MScan_status_db = array(
|
452 |
'bps_mscan_time_start' => time(),
|
453 |
'bps_mscan_time_stop' => '',
|
454 |
+
'bps_mscan_time_end' => time() + 15,
|
455 |
+
'bps_mscan_time_remaining' => time() + 15,
|
456 |
'bps_mscan_status' => '1',
|
457 |
'bps_mscan_last_scan_timestamp' => $bps_mscan_last_scan_timestamp,
|
458 |
'bps_mscan_total_time' => $bps_mscan_total_time,
|
459 |
+
'bps_mscan_total_website_files' => '',
|
460 |
'bps_mscan_total_wp_core_files' => $bps_mscan_total_wp_core_files,
|
461 |
'bps_mscan_total_non_image_files' => $bps_mscan_total_non_image_files,
|
462 |
+
'bps_mscan_total_image_files' => '',
|
463 |
+
'bps_mscan_total_all_scannable_files' => '', // this needs to be reset/blank on each new scan. extremely large or small file scans have whacky results.
|
464 |
'bps_mscan_total_skipped_files' => $bps_mscan_total_skipped_files,
|
465 |
'bps_mscan_total_suspect_files' => $bps_mscan_total_suspect_files,
|
466 |
'bps_mscan_suspect_skipped_files' => $bps_mscan_suspect_skipped_files,
|
467 |
'bps_mscan_total_suspect_db' => $bps_mscan_total_suspect_db,
|
468 |
+
'bps_mscan_total_ignored_files' => $bps_mscan_total_ignored_files,
|
469 |
+
'bps_mscan_total_plugin_files' => $bps_mscan_total_plugin_files,
|
470 |
+
'bps_mscan_total_theme_files' => $bps_mscan_total_theme_files
|
471 |
);
|
472 |
|
473 |
foreach( $MScan_status_db as $key => $value ) {
|
474 |
update_option('bulletproof_security_options_MScan_status', $MScan_status_db);
|
475 |
}
|
476 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
477 |
|
478 |
// Form Processing: MScan Start
|
479 |
if ( isset( $_POST['Submit-MScan-Start'] ) && current_user_can('manage_options') ) {
|
482 |
$MScan_status = get_option('bulletproof_security_options_MScan_status');
|
483 |
$MScan_options = get_option('bulletproof_security_options_MScan');
|
484 |
$mstime = $MScan_options['mscan_max_time_limit'];
|
485 |
+
ini_set('max_execution_time', $mstime);
|
486 |
|
487 |
+
$bps_mscan_time_start = ! isset($MScan_status['bps_mscan_time_start']) ? '' : $MScan_status['bps_mscan_time_start'];
|
488 |
$bps_mscan_last_scan_timestamp = ! isset($MScan_status['bps_mscan_last_scan_timestamp']) ? '' : $MScan_status['bps_mscan_last_scan_timestamp'];
|
489 |
$bps_mscan_total_time = ! isset($MScan_status['bps_mscan_total_time']) ? '' : $MScan_status['bps_mscan_total_time'];
|
|
|
490 |
$bps_mscan_total_wp_core_files = ! isset($MScan_status['bps_mscan_total_wp_core_files']) ? '' : $MScan_status['bps_mscan_total_wp_core_files'];
|
491 |
$bps_mscan_total_non_image_files = ! isset($MScan_status['bps_mscan_total_non_image_files']) ? '' : $MScan_status['bps_mscan_total_non_image_files'];
|
|
|
|
|
492 |
$bps_mscan_total_skipped_files = ! isset($MScan_status['bps_mscan_total_skipped_files']) ? '' : $MScan_status['bps_mscan_total_skipped_files'];
|
493 |
$bps_mscan_total_suspect_files = ! isset($MScan_status['bps_mscan_total_suspect_files']) ? '' : $MScan_status['bps_mscan_total_suspect_files'];
|
494 |
$bps_mscan_suspect_skipped_files = ! isset($MScan_status['bps_mscan_suspect_skipped_files']) ? '' : $MScan_status['bps_mscan_suspect_skipped_files'];
|
495 |
$bps_mscan_total_suspect_db = ! isset($MScan_status['bps_mscan_total_suspect_db']) ? '' : $MScan_status['bps_mscan_total_suspect_db'];
|
496 |
$bps_mscan_total_ignored_files = ! isset($MScan_status['bps_mscan_total_ignored_files']) ? '' : $MScan_status['bps_mscan_total_ignored_files'];
|
497 |
+
$bps_mscan_total_plugin_files = ! isset($MScan_status['bps_mscan_total_plugin_files']) ? '' : $MScan_status['bps_mscan_total_plugin_files'];
|
498 |
+
$bps_mscan_total_theme_files = ! isset($MScan_status['bps_mscan_total_theme_files']) ? '' : $MScan_status['bps_mscan_total_theme_files'];
|
499 |
|
500 |
$MScan_status_db = array(
|
501 |
+
'bps_mscan_time_start' => $bps_mscan_time_start, // note: time start does not occur here. It occurs in the scan time estimate function.
|
502 |
'bps_mscan_time_stop' => '',
|
503 |
+
'bps_mscan_time_end' => time() + 10,
|
504 |
+
'bps_mscan_time_remaining' => time() + 10, // +10 is the calculating scan time countdown. Don't go any lower than +10.
|
505 |
+
'bps_mscan_status' => '1', // Time Remaining is updated in the scan time estimate function with the estimated scan time.
|
506 |
'bps_mscan_last_scan_timestamp' => $bps_mscan_last_scan_timestamp,
|
507 |
'bps_mscan_total_time' => $bps_mscan_total_time,
|
508 |
+
'bps_mscan_total_website_files' => '',
|
509 |
'bps_mscan_total_wp_core_files' => $bps_mscan_total_wp_core_files,
|
510 |
'bps_mscan_total_non_image_files' => $bps_mscan_total_non_image_files,
|
511 |
+
'bps_mscan_total_image_files' => '',
|
512 |
+
'bps_mscan_total_all_scannable_files' => '', // this needs to be reset/blank on each new scan. extremely large or small file scans have whacky results.
|
513 |
'bps_mscan_total_skipped_files' => $bps_mscan_total_skipped_files,
|
514 |
'bps_mscan_total_suspect_files' => $bps_mscan_total_suspect_files,
|
515 |
'bps_mscan_suspect_skipped_files' => $bps_mscan_suspect_skipped_files,
|
516 |
'bps_mscan_total_suspect_db' => $bps_mscan_total_suspect_db,
|
517 |
+
'bps_mscan_total_ignored_files' => $bps_mscan_total_ignored_files,
|
518 |
+
'bps_mscan_total_plugin_files' => $bps_mscan_total_plugin_files,
|
519 |
+
'bps_mscan_total_theme_files' => $bps_mscan_total_theme_files
|
520 |
);
|
521 |
|
522 |
foreach( $MScan_status_db as $key => $value ) {
|
523 |
update_option('bulletproof_security_options_MScan_status', $MScan_status_db);
|
524 |
}
|
525 |
|
526 |
+
if ( ! get_option('bulletproof_security_options_mscan_theme_hash') || ! get_option('bulletproof_security_options_mscan_plugin_hash') ) {
|
527 |
+
echo $bps_topDiv;
|
528 |
+
$text = '<strong><font color="blue">'.__('First Time Scan or the Delete File Hashes Tool was used', 'bulletproof-security').'</font><br><font color="green">'.__('You will only see this message the first time you do a scan or if you use the Delete Files Hashes Tool. In order to make sure all Plugin and Theme hash files are created successfully no file scanning will occur during this scan. You can run a new scan after this scan has completed.', 'bulletproof-security').'</font></strong>';
|
529 |
+
echo $text;
|
530 |
+
echo $bps_bottomDiv;
|
531 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
532 |
}
|
533 |
|
534 |
+
// Form Processing: MScan Report. I want the page to refresh/reload with a POST instead of GET so that
|
535 |
+
// Scan Report scan data is current and the Suspicious Files/DB accordion tab forms scan data is current.
|
536 |
+
if ( isset( $_POST['Submit-MScan-Report'] ) && current_user_can('manage_options') ) {
|
537 |
+
check_admin_referer( 'bulletproof_security_mscan_report' );
|
538 |
+
// don't need to echo a message
|
539 |
}
|
540 |
+
?>
|
541 |
|
542 |
+
<div id="MscanStartStopResetTable" style="position:relative;top:0px;left:-2px;margin:0px;">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
543 |
|
544 |
+
<table width="400" border="0">
|
545 |
+
<tr>
|
546 |
+
<td>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
547 |
<form name="MScanStart" action="<?php echo admin_url( 'admin.php?page=bulletproof-security/admin/mscan/mscan.php' ); ?>" method="post">
|
548 |
<?php wp_nonce_field('bulletproof_security_mscan_start'); ?>
|
549 |
+
<input type="submit" id="bps-mscan-start-button" name="Submit-MScan-Start" style="margin:0px 5px 15px 0px;" value="<?php esc_attr_e('Start Scan', 'bulletproof-security') ?>" class="button bps-button" onclick="return confirm('<?php $text = __('Click OK to start scanning or click Cancel.', 'bulletproof-security'); echo $text; ?>')" />
|
550 |
</form>
|
551 |
+
</td>
|
552 |
+
<td>
|
|
|
553 |
<form name="MScanStop" action="<?php echo admin_url( 'admin.php?page=bulletproof-security/admin/mscan/mscan.php' ); ?>" method="post">
|
554 |
<?php wp_nonce_field('bulletproof_security_mscan_stop'); ?>
|
555 |
+
<input type="submit" id="bps-mscan-stop-button" name="Submit-MScan-Stop" style="margin:0px 5px 15px 0px;" value="<?php esc_attr_e('Stop Scan', 'bulletproof-security') ?>" class="button bps-button" onclick="return confirm('<?php $text = __('Click OK to stop scanning or click Cancel.', 'bulletproof-security'); echo $text; ?>')" />
|
556 |
+
</form>
|
557 |
+
</td>
|
558 |
+
<td>
|
559 |
+
<form name="MScanReport" action="<?php echo admin_url( 'admin.php?page=bulletproof-security/admin/mscan/mscan.php#bps-tabs-3' ); ?>" method="post">
|
560 |
+
<?php wp_nonce_field('bulletproof_security_mscan_report'); ?>
|
561 |
+
<input type="submit" id="bps-mscan-report-button" name="Submit-MScan-Report" style="margin:0px 5px 15px 0px;" value="<?php esc_attr_e('View Report', 'bulletproof-security') ?>" class="button bps-button" />
|
562 |
+
</form>
|
563 |
+
</td>
|
564 |
+
<td>
|
565 |
+
<form name="MScanReset" action="<?php echo admin_url( 'admin.php?page=bulletproof-security/admin/mscan/mscan.php' ); ?>" method="post">
|
566 |
+
<?php wp_nonce_field('bulletproof_security_mscan_reset'); ?>
|
567 |
+
<input type="submit" id="bps-mscan-reset-button" name="Submit-MScan-Reset" style="margin:0px 0px 15px 0px;" value="<?php esc_attr_e('Reset MScan', 'bulletproof-security') ?>" class="button bps-button" onclick="return confirm('<?php $text = __('Click OK to reset/delete all MScan scan results and data or click Cancel. Note: MScan option settings will not be reset/deleted.', 'bulletproof-security'); echo $text; ?>')" />
|
568 |
</form>
|
569 |
+
</td>
|
570 |
+
</tr>
|
571 |
+
</table>
|
572 |
</div>
|
573 |
|
|
|
|
|
574 |
<div id="bps-accordion-1" class="bps-accordion-main-2" style="margin:0px 0px 20px 0px;">
|
575 |
<h3 id="mscan-accordion-1"><?php _e('MScan Options & Tools', 'bulletproof-security'); ?></h3>
|
576 |
<div id="mscan-accordion-inner">
|
577 |
|
578 |
<?php
|
|
|
579 |
// Form Processing: MScan Options Form
|
580 |
// Important: This Form processing code MUST be above the Form & bpsPro_save_mscan_options() function so that new DB option values are current.
|
581 |
if ( isset( $_POST['Submit-MScan-Options'] ) && current_user_can('manage_options') ) {
|
598 |
}
|
599 |
}
|
600 |
|
601 |
+
$wp_abspath_forward_slashes = str_replace( '\\', '/', ABSPATH );
|
602 |
+
$wp_install_folder = str_replace( array( get_home_path(), '/', ), "", $wp_abspath_forward_slashes );
|
603 |
+
$wp_includes_forward_slashes = $wp_abspath_forward_slashes . WPINC;
|
604 |
+
$wp_includes_folder = str_replace( $wp_abspath_forward_slashes, "", $wp_includes_forward_slashes );
|
605 |
+
$wp_content_folder = str_replace( ABSPATH, '', WP_CONTENT_DIR );
|
606 |
|
607 |
+
$source = $wp_abspath_forward_slashes;
|
608 |
+
$dir_array = array();
|
609 |
|
610 |
+
if ( is_dir($source) ) {
|
611 |
+
|
612 |
$iterator = new DirectoryIterator($source);
|
613 |
+
|
|
|
614 |
foreach ( $iterator as $files ) {
|
615 |
try {
|
616 |
if ( $files->isDir() && ! $files->isDot() ) {
|
620 |
}
|
621 |
}
|
622 |
} catch (RuntimeException $e) {
|
623 |
+
|
624 |
}
|
625 |
}
|
626 |
+
}
|
627 |
|
628 |
+
$get_home_path = get_home_path();
|
629 |
+
$home_dir_array = array();
|
630 |
|
631 |
+
if ( $wp_abspath_forward_slashes != $get_home_path ) {
|
632 |
+
|
633 |
+
if ( is_dir($get_home_path) ) {
|
634 |
+
|
635 |
+
$iterator = new DirectoryIterator($get_home_path);
|
636 |
+
|
637 |
+
foreach ( $iterator as $files ) {
|
638 |
+
try {
|
639 |
+
if ( $files->isDir() && ! $files->isDot() ) {
|
640 |
+
|
641 |
+
if ( $wp_install_folder != $files->getFilename() && $wp_content_folder != $files->getFilename() && $wp_includes_folder != $files->getFilename() && 'wp-admin' != $files->getFilename()) {
|
642 |
+
|
643 |
+
if ( ! empty( $files ) ) {
|
644 |
+
$home_dir_array[] = $files->getFilename();
|
645 |
+
}
|
646 |
+
}
|
647 |
+
}
|
648 |
+
} catch (RuntimeException $e) {
|
649 |
+
|
650 |
+
}
|
651 |
+
}
|
652 |
}
|
653 |
+
}
|
|
|
|
|
654 |
|
655 |
+
$dir_array_merge = array_merge($dir_array, $home_dir_array);
|
656 |
+
$dir_flip = array_flip($dir_array_merge);
|
657 |
+
|
658 |
+
// replace values in the flipped array with blank values.
|
659 |
+
// This seems wrong, but it is not > The $mscan_dirs_checked array (actual checked form checkboxes) is merged below.
|
660 |
+
// I don't need to strip out any other WP sites since the form will not allow checking checkboxes for other WP sites.
|
661 |
+
$mscan_actual_dirs = array();
|
662 |
+
|
663 |
+
foreach ( $dir_flip as $key => $value ) {
|
664 |
+
$mscan_actual_dirs[$key] = preg_replace( '/\d/', "", $value );
|
665 |
}
|
666 |
+
|
667 |
+
// get dirs that do not exist in the bps_mscan_dirs db option. ie an unchecked form checkbox.
|
668 |
+
$mscan_diff_key_dir = array_diff_key( $mscan_actual_dirs, $mscan_dirs_checked );
|
669 |
+
|
670 |
+
// merge checked form checkboxes and dir array with blank values
|
671 |
+
$mscan_array_merge = array_merge( $mscan_diff_key_dir, $mscan_dirs_checked );
|
672 |
+
ksort($mscan_array_merge);
|
673 |
+
|
674 |
break;
|
675 |
}
|
676 |
|
677 |
+
// Add an additional newline for: mscan_exclude_tmp_files so the last file is included in the array
|
678 |
// when using explode()
|
679 |
$mscan_exclude_tmp_files = $_POST['mscan_exclude_tmp_files'] . "\n";
|
680 |
$mscan_exclude_tmp_files = preg_replace("/(\n\n|\n\n\n|\n\n\n\n)/", "\n", $mscan_exclude_tmp_files);
|
681 |
+
|
682 |
$MS_Options = array(
|
683 |
'bps_mscan_dirs' => $mscan_array_merge,
|
684 |
'mscan_max_file_size' => esc_html($_POST['mscan_max_file_size']),
|
685 |
'mscan_max_time_limit' => esc_html($_POST['mscan_max_time_limit']),
|
686 |
'mscan_scan_database' => $_POST['mscan_scan_database_select'],
|
687 |
+
'mscan_scan_images' => 'Off',
|
688 |
'mscan_scan_skipped_files' => $_POST['mscan_scan_skipped_files_select'],
|
689 |
'mscan_scan_delete_tmp_files' => $_POST['mscan_scan_delete_tmp_files_select'],
|
690 |
'mscan_scan_frequency' => 'Off',
|
691 |
'mscan_exclude_dirs' => $_POST['mscan_exclude_dirs'],
|
692 |
+
'mscan_exclude_tmp_files' => $mscan_exclude_tmp_files,
|
693 |
+
'mscan_file_size_limit_hidden' => '14'
|
694 |
);
|
695 |
|
696 |
foreach( $MS_Options as $key => $value ) {
|
700 |
$MScan_options = get_option('bulletproof_security_options_MScan');
|
701 |
$MScan_status = get_option('bulletproof_security_options_MScan_status');
|
702 |
$mscan_scan_skipped_files_message = '';
|
|
|
703 |
$mscan_scan_delete_tmp_files_message = '';
|
704 |
|
705 |
if ( $MScan_options['mscan_scan_skipped_files'] == 'On' && $MScan_status['bps_mscan_total_skipped_files'] > 0 ) {
|
710 |
$mscan_scan_skipped_files_message = '<br><font color="blue"><strong>'.__('Skipped file scanning is turned On. There are no skipped files to be scanned. Either there really are not any skipped files to scan or you have not run a regular scan yet with the Skipped File Scan option turned Off.', 'bulletproof-security').'</strong></font>';
|
711 |
}
|
712 |
|
|
|
|
|
|
|
|
|
713 |
if ( $MScan_options['mscan_scan_delete_tmp_files'] == 'On' ) {
|
714 |
+
$mscan_scan_delete_tmp_files_message = '<br><strong><font color="#fb0101">'.__('Warning: ', 'bulletproof-security').'</font>'.__('On some web hosts (Known host issues: SiteGround, Cyon) turning On the "Automatically Delete /tmp Files" option setting will cause your website/server to crash. If your website/server does crash contact your web host support folks, tell them that you deleted /tmp files and your website/server has crashed. You can use the MScan Exclude /tmp Files option to exclude certain tmp files from being deleted. You will need to ask your web host for the names of those tmp files to exclude.', 'bulletproof-security').'</strong>';
|
715 |
}
|
716 |
|
717 |
echo $bps_topDiv;
|
718 |
+
$text = '<font color="green"><strong>'.__('MScan Options saved.', 'bulletproof-security').'</strong></font>'.$mscan_scan_skipped_files_message.$mscan_scan_delete_tmp_files_message;
|
719 |
echo $text;
|
720 |
echo $bps_bottomDiv;
|
721 |
}
|
722 |
|
723 |
// Get any new dirs that have been created and remove any old dirs from the bps_mscan_dirs db option.
|
724 |
// Update the bps_mscan_dirs db option for use in the MscanOptions Form.
|
725 |
+
// 15.4: MScan now does 2 dir iterations: ABSPATH and Home directory and merges the results.
|
726 |
function bpsPro_save_mscan_options() {
|
727 |
|
728 |
+
$MScan_options = get_option('bulletproof_security_options_MScan');
|
729 |
+
$wp_abspath_forward_slashes = str_replace( '\\', '/', ABSPATH );
|
730 |
+
$wp_install_folder = str_replace( array( get_home_path(), '/', ), "", $wp_abspath_forward_slashes );
|
731 |
+
$wp_includes_forward_slashes = $wp_abspath_forward_slashes . WPINC;
|
732 |
+
$wp_includes_folder = str_replace( $wp_abspath_forward_slashes, "", $wp_includes_forward_slashes );
|
733 |
+
$wp_content_folder = str_replace( ABSPATH, '', WP_CONTENT_DIR );
|
734 |
+
|
735 |
+
$source = $wp_abspath_forward_slashes;
|
736 |
+
$dir_array = array();
|
737 |
+
|
738 |
if ( is_dir($source) ) {
|
739 |
|
|
|
740 |
$iterator = new DirectoryIterator($source);
|
|
|
741 |
|
742 |
foreach ( $iterator as $files ) {
|
743 |
try {
|
748 |
}
|
749 |
}
|
750 |
} catch (RuntimeException $e) {
|
751 |
+
|
752 |
}
|
753 |
}
|
754 |
+
}
|
755 |
|
756 |
+
$get_home_path = get_home_path();
|
757 |
+
$home_dir_array = array();
|
758 |
+
|
759 |
+
if ( $wp_abspath_forward_slashes != $get_home_path ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
760 |
|
761 |
+
if ( is_dir($get_home_path) ) {
|
762 |
+
|
763 |
+
$iterator = new DirectoryIterator($get_home_path);
|
764 |
+
|
765 |
+
foreach ( $iterator as $files ) {
|
766 |
+
try {
|
767 |
+
if ( $files->isDir() && ! $files->isDot() ) {
|
768 |
+
|
769 |
+
if ( $wp_install_folder != $files->getFilename() && $wp_content_folder != $files->getFilename() && $wp_includes_folder != $files->getFilename() && 'wp-admin' != $files->getFilename()) {
|
770 |
|
771 |
+
if ( ! empty( $files ) ) {
|
772 |
+
$home_dir_array[] = $files->getFilename();
|
773 |
+
}
|
774 |
+
}
|
775 |
+
}
|
776 |
+
} catch (RuntimeException $e) {
|
777 |
+
|
778 |
+
}
|
779 |
}
|
780 |
+
}
|
781 |
+
}
|
782 |
|
783 |
+
$dir_array_merge = array_merge($dir_array, $home_dir_array);
|
784 |
+
$dir_flip = array_flip($dir_array_merge);
|
785 |
+
|
786 |
+
// replace values in the flipped array, good for bulk replacing all values. ie all dirs found.
|
787 |
+
$mscan_actual_dirs = array();
|
788 |
+
$pattern = '/define\((\s|)\'WP_USE_THEMES/';
|
789 |
+
|
790 |
+
foreach ( $dir_flip as $key => $value ) {
|
791 |
+
|
792 |
+
$wp_index_file = $source . $key . '/index.php';
|
793 |
+
$wp_blog_header_file = $source . $key . '/wp-blog-header.php';
|
794 |
+
$wp_cron_file = $source . $key . '/wp-cron.php';
|
795 |
+
$wp_load_file = $source . $key . '/wp-load.php';
|
796 |
+
$wp_login_file = $source . $key . '/wp-login.php';
|
797 |
+
$wp_settings_file = $source . $key . '/wp-settings.php';
|
798 |
+
|
799 |
+
$home_wp_index_file = $get_home_path . $key . '/index.php';
|
800 |
+
$home_wp_blog_header_file = $get_home_path . $key . '/wp-blog-header.php';
|
801 |
+
$home_wp_cron_file = $get_home_path . $key . '/wp-cron.php';
|
802 |
+
$home_wp_load_file = $get_home_path . $key . '/wp-load.php';
|
803 |
+
$home_wp_login_file = $get_home_path . $key . '/wp-login.php';
|
804 |
+
$home_wp_settings_file = $get_home_path . $key . '/wp-settings.php';
|
805 |
|
806 |
+
if ( file_exists($wp_index_file) ) {
|
807 |
+
$check_string = file_get_contents($wp_index_file);
|
808 |
+
}
|
809 |
+
|
810 |
+
if ( file_exists($home_wp_index_file) ) {
|
811 |
+
$home_check_string = file_get_contents($home_wp_index_file);
|
812 |
+
}
|
813 |
+
|
814 |
+
if ( file_exists($wp_index_file) && preg_match( $pattern, $check_string ) && file_exists($wp_blog_header_file) && file_exists($wp_cron_file) && file_exists($wp_load_file) && file_exists($wp_login_file) && file_exists($wp_settings_file) || file_exists($home_wp_index_file) && preg_match( $pattern, $home_check_string ) && file_exists($home_wp_blog_header_file) && file_exists($home_wp_cron_file) && file_exists($home_wp_load_file) && file_exists($home_wp_login_file) && file_exists($home_wp_settings_file) ) {
|
815 |
+
$mscan_actual_dirs[$key] = preg_replace( '/\d+/', "", $value );
|
816 |
+
} else {
|
817 |
+
$mscan_actual_dirs[$key] = preg_replace( '/\d+/', "1", $value );
|
818 |
+
}
|
819 |
+
}
|
820 |
+
|
821 |
+
// Only processed once on first MScan page load
|
822 |
+
if ( empty($MScan_options['bps_mscan_dirs']) ) {
|
823 |
+
|
824 |
+
$mscan_max_file_size = isset($MScan_options['mscan_max_file_size']) ? $MScan_options['mscan_max_file_size'] : '400';
|
825 |
+
$mscan_max_time_limit = isset($MScan_options['mscan_max_time_limit']) ? $MScan_options['mscan_max_time_limit'] : '300';
|
826 |
+
$mscan_scan_database = isset($MScan_options['mscan_scan_database']) ? $MScan_options['mscan_scan_database'] : 'On';
|
827 |
+
$mscan_scan_skipped_files = isset($MScan_options['mscan_scan_skipped_files']) ? $MScan_options['mscan_scan_skipped_files'] : 'Off';
|
828 |
+
$mscan_scan_delete_tmp_files = isset($MScan_options['mscan_scan_delete_tmp_files']) ? $MScan_options['mscan_scan_delete_tmp_files'] : 'Off';
|
829 |
+
$mscan_scan_frequency = isset($MScan_options['mscan_scan_frequency']) ? $MScan_options['mscan_scan_frequency'] : 'Off';
|
830 |
+
$mscan_exclude_dirs = isset($MScan_options['mscan_exclude_dirs']) ? $MScan_options['mscan_exclude_dirs'] : '';
|
831 |
+
$mscan_exclude_tmp_files = isset($MScan_options['mscan_exclude_tmp_files']) ? $MScan_options['mscan_exclude_tmp_files'] : '';
|
832 |
+
$mscan_file_size_limit_hidden = ! isset($MScan_options['mscan_file_size_limit_hidden']) ? '14' : $MScan_options['mscan_file_size_limit_hidden'];
|
833 |
+
|
834 |
+
$MS_Options = array(
|
835 |
+
'bps_mscan_dirs' => $mscan_actual_dirs,
|
836 |
+
'mscan_max_file_size' => $mscan_max_file_size,
|
837 |
+
'mscan_max_time_limit' => $mscan_max_time_limit,
|
838 |
+
'mscan_scan_database' => $mscan_scan_database,
|
839 |
+
'mscan_scan_images' => 'Off',
|
840 |
+
'mscan_scan_skipped_files' => $mscan_scan_skipped_files,
|
841 |
+
'mscan_scan_delete_tmp_files' => $mscan_scan_delete_tmp_files,
|
842 |
+
'mscan_scan_frequency' => $mscan_scan_frequency,
|
843 |
+
'mscan_exclude_dirs' => $mscan_exclude_dirs,
|
844 |
+
'mscan_exclude_tmp_files' => $mscan_exclude_tmp_files,
|
845 |
+
'mscan_file_size_limit_hidden' => $mscan_file_size_limit_hidden
|
846 |
+
);
|
847 |
+
|
848 |
+
foreach( $MS_Options as $key => $value ) {
|
849 |
+
update_option('bulletproof_security_options_MScan', $MS_Options);
|
850 |
+
}
|
851 |
+
|
852 |
+
} else {
|
853 |
+
|
854 |
+
$mscan_dirs_options_inner_array = array();
|
855 |
|
856 |
+
foreach ( $MScan_options['bps_mscan_dirs'] as $key => $value ) {
|
857 |
+
$mscan_dirs_options_inner_array[$key] = $value;
|
858 |
+
}
|
859 |
+
|
860 |
+
// get new dirs found that do not exist in the bps_mscan_dirs db option. ie a new dir has been created.
|
861 |
+
$mscan_diff_key_dir = array_diff_key($mscan_actual_dirs, $mscan_dirs_options_inner_array);
|
862 |
+
|
863 |
+
// get old dirs that still exist in the bps_mscan_dirs db option. ie a dir has been deleted.
|
864 |
+
$mscan_diff_key_options = array_diff_key($mscan_dirs_options_inner_array, $dir_flip);
|
865 |
+
|
866 |
+
if ( ! empty($mscan_diff_key_options) ) {
|
867 |
|
868 |
+
foreach ( $mscan_diff_key_options as $key => $value ) {
|
869 |
+
unset($mscan_dirs_options_inner_array[$key]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
870 |
}
|
871 |
+
|
872 |
+
// merge any new dirs found
|
873 |
+
$mscan_array_merge = array_merge( $mscan_diff_key_dir, $mscan_dirs_options_inner_array );
|
874 |
+
ksort($mscan_array_merge);
|
875 |
+
|
876 |
+
} else {
|
877 |
+
|
878 |
+
// merge any new dirs found
|
879 |
+
$mscan_array_merge = array_merge( $mscan_diff_key_dir, $mscan_dirs_options_inner_array );
|
880 |
+
ksort($mscan_array_merge);
|
881 |
+
}
|
882 |
+
|
883 |
+
$MS_Options = array(
|
884 |
+
'bps_mscan_dirs' => $mscan_array_merge,
|
885 |
+
'mscan_max_file_size' => $MScan_options['mscan_max_file_size'],
|
886 |
+
'mscan_max_time_limit' => $MScan_options['mscan_max_time_limit'],
|
887 |
+
'mscan_scan_database' => $MScan_options['mscan_scan_database'],
|
888 |
+
'mscan_scan_images' => 'Off',
|
889 |
+
'mscan_scan_skipped_files' => $MScan_options['mscan_scan_skipped_files'],
|
890 |
+
'mscan_scan_delete_tmp_files' => $MScan_options['mscan_scan_delete_tmp_files'],
|
891 |
+
'mscan_scan_frequency' => 'Off',
|
892 |
+
'mscan_exclude_dirs' => $MScan_options['mscan_exclude_dirs'],
|
893 |
+
'mscan_exclude_tmp_files' => $MScan_options['mscan_exclude_tmp_files'],
|
894 |
+
'mscan_file_size_limit_hidden' => '14'
|
895 |
+
);
|
896 |
+
|
897 |
+
foreach( $MS_Options as $key => $value ) {
|
898 |
+
update_option('bulletproof_security_options_MScan', $MS_Options);
|
899 |
}
|
900 |
}
|
901 |
}
|
903 |
bpsPro_save_mscan_options();
|
904 |
|
905 |
$scrolltoExcludeDirs = isset($_REQUEST['scrolltoExcludeDirs']) ? (int) $_REQUEST['scrolltoExcludeDirs'] : 0;
|
906 |
+
$scrolltoExcludeTmpFiles = isset($_REQUEST['scrolltoExcludeTmpFiles']) ? (int) $_REQUEST['scrolltoExcludeTmpFiles'] : 0;
|
907 |
|
908 |
// Form: MScan Options Form
|
909 |
echo '<form name="MscanOptions" action="'.admin_url( 'admin.php?page=bulletproof-security/admin/mscan/mscan.php' ).'" method="post">';
|
913 |
echo '<table class="widefat" style="text-align:left;">';
|
914 |
echo '<thead>';
|
915 |
echo '<tr>';
|
916 |
+
echo '<th scope="col" style="width:40%;font-size:1.13em;background-color:transparent;"><strong>'.__('Website Folders & Files To Scan', 'bulletproof-security').'<br>'.__('Files are not displayed, but will be scanned', 'bulletproof-security').'</strong></th>';
|
917 |
echo '<th scope="col" style="width:30%;font-size:1.13em;background-color:transparent;"><strong>'.__('MScan Options', 'bulletproof-security').'</strong></th>';
|
918 |
echo '<th scope="col" style="width:30%;font-size:1.13em;background-color:transparent;"><strong>'.__('MScan Tools', 'bulletproof-security').'</strong></th>';
|
919 |
echo '</tr>';
|
934 |
echo '<tbody>';
|
935 |
echo '<tr>';
|
936 |
|
937 |
+
$source = str_replace( '\\', '/', ABSPATH );
|
938 |
+
$get_home_path = get_home_path();
|
939 |
+
|
940 |
foreach ( $MScan_options['bps_mscan_dirs'] as $key => $value ) {
|
941 |
|
942 |
if ( $value == '1' ) {
|
944 |
} else {
|
945 |
$checked = ( isset( $_POST['mscan[$key]'] ) ) ? $_POST['mscan[$key]'] : '';
|
946 |
}
|
947 |
+
|
948 |
+
if ( ! is_readable( $source . $key ) && ! is_readable( $get_home_path . $key ) ) {
|
949 |
echo "<td></td>";
|
950 |
echo '<td>'.$key.' <strong><font color="blue">'.__('Folder is not readable', 'bulletproof-security').'</font></strong></td>';
|
951 |
echo '</tr>';
|
952 |
|
953 |
} else {
|
954 |
|
955 |
+
$wp_index_file = $source . $key . '/index.php';
|
956 |
+
$wp_blog_header_file = $source . $key . '/wp-blog-header.php';
|
957 |
+
$wp_cron_file = $source . $key . '/wp-cron.php';
|
958 |
+
$wp_load_file = $source . $key . '/wp-load.php';
|
959 |
+
$wp_login_file = $source . $key . '/wp-login.php';
|
960 |
+
$wp_settings_file = $source . $key . '/wp-settings.php';
|
961 |
+
|
962 |
+
$home_wp_index_file = $get_home_path . $key . '/index.php';
|
963 |
+
$home_wp_blog_header_file = $get_home_path . $key . '/wp-blog-header.php';
|
964 |
+
$home_wp_cron_file = $get_home_path . $key . '/wp-cron.php';
|
965 |
+
$home_wp_load_file = $get_home_path . $key . '/wp-load.php';
|
966 |
+
$home_wp_login_file = $get_home_path . $key . '/wp-login.php';
|
967 |
+
$home_wp_settings_file = $get_home_path . $key . '/wp-settings.php';
|
968 |
+
|
969 |
+
$pattern = '/define\((\s|)\'WP_USE_THEMES/';
|
970 |
+
|
971 |
if ( file_exists($wp_index_file) ) {
|
972 |
$check_string = file_get_contents($wp_index_file);
|
973 |
}
|
974 |
|
975 |
+
if ( file_exists($home_wp_index_file) ) {
|
976 |
+
$home_check_string = file_get_contents($home_wp_index_file);
|
977 |
+
}
|
978 |
|
979 |
+
if ( file_exists($wp_index_file) && preg_match( $pattern, $check_string ) && file_exists($wp_blog_header_file) && file_exists($wp_cron_file) && file_exists($wp_load_file) && file_exists($wp_login_file) && file_exists($wp_settings_file) || file_exists($home_wp_index_file) && preg_match( $pattern, $home_check_string ) && file_exists($home_wp_blog_header_file) && file_exists($home_wp_cron_file) && file_exists($home_wp_load_file) && file_exists($home_wp_login_file) && file_exists($home_wp_settings_file) ) {
|
980 |
+
|
981 |
+
$hover_icon = '<strong><font color="black"><span class="tooltip-250-120"><img src="'.plugins_url('/bulletproof-security/admin/images/question-mark.png').'" style="position:relative;top:3px;left:10px;" /><span>'.__('This folder contains another WordPress website. This checkbox cannot be checked. To scan that site run MScan from that site. Click the MScan Read Me help button above and read the "Scanning Other WordPress Sites" help section.', 'bulletproof-security').'</span></span></font></strong><br>';
|
982 |
|
983 |
+
echo "<td><input type=\"checkbox\" id=\"mscandirs\" name=\"mscan[$key]\" value=\"\" class=\"MScanALL\" $checked /></td>";
|
984 |
echo '<td>'.$key.$hover_icon.'</td>';
|
985 |
echo '</tr>';
|
986 |
|
1001 |
echo '<td style="border:none">';
|
1002 |
echo '<div id="MScanOptions" style="margin:0px 0px 0px 0px;float:left;">';
|
1003 |
|
1004 |
+
$max_file_size = ( isset( $_POST['mscan_max_file_size'] ) ) ? $_POST['mscan_max_file_size'] : '1000';
|
1005 |
$max_time_limit = ( isset( $_POST['mscan_max_time_limit'] ) ) ? $_POST['mscan_max_time_limit'] : '300';
|
1006 |
|
1007 |
+
$mscan_exclude_dirs = ! isset($MScan_options['mscan_exclude_dirs']) ? '' : $MScan_options['mscan_exclude_dirs'];
|
1008 |
+
$mscan_scan_database = ! isset($MScan_options['mscan_scan_database']) ? '' : $MScan_options['mscan_scan_database'];
|
1009 |
+
$mscan_scan_skipped_files = ! isset($MScan_options['mscan_scan_skipped_files']) ? '' : $MScan_options['mscan_scan_skipped_files'];
|
1010 |
+
$mscan_scan_delete_tmp_files = ! isset($MScan_options['mscan_scan_delete_tmp_files']) ? '' : $MScan_options['mscan_scan_delete_tmp_files'];
|
1011 |
+
$mscan_exclude_tmp_files = ! isset($MScan_options['mscan_exclude_tmp_files']) ? '' : $MScan_options['mscan_exclude_tmp_files'];
|
1012 |
+
$mscan_scan_frequency = ! isset($MScan_options['mscan_scan_frequency']) ? 'Off' : $MScan_options['mscan_scan_frequency'];
|
1013 |
+
$mscan_file_size_limit_hidden = ! isset($MScan_options['mscan_file_size_limit_hidden']) ? '14' : $MScan_options['mscan_file_size_limit_hidden'];
|
1014 |
+
|
1015 |
echo '<label for="bps-mscan-label" style="padding-right:5px">'.__('Max File Size Limit to Scan:', 'bulletproof-security').'</label>';
|
1016 |
echo '<input type="text" name="mscan_max_file_size" class="regular-text-50-fixed" style="margin-bottom:5px" value="'; if ( isset( $_POST['mscan_max_file_size'] ) && preg_match( '/\d/', $_POST['mscan_max_file_size'] ) ) { echo esc_html($max_file_size); } else { echo esc_html(trim(stripslashes($max_file_size))); } echo '" /> KB';
|
1017 |
+
echo '<input type="hidden" name="mscan_file_size_limit_hidden" value="14" />';
|
1018 |
echo '<br>';
|
1019 |
|
1020 |
echo '<label for="bps-mscan-label" style="padding-right:23px">'.__('Max Time Limit to Scan:', 'bulletproof-security').'</label>';
|
1023 |
|
1024 |
echo '<label for="bps-mscan-label" style="">'.__('Exclude Individual Folders', 'bulletproof-security').'</label><strong><font color="black"><span class="tooltip-350-120"><img src="'.plugins_url('/bulletproof-security/admin/images/question-mark.png').'" style="position:relative;top:3px;left:10px;" /><span>'.__('Enter one folder path per line. Include folder slashes.', 'bulletproof-security').'<br>'.__('Example:', 'bulletproof-security').'<br>/parent-folder-1/child-folder-1/<br>/parent-folder-2/child-folder-2/<br><br>'.__('Click the MScan Read Me help button for more help info.', 'bulletproof-security').'</span></span></font></strong><br>';
|
1025 |
// trimming whitespace does not work because I am not trimming newlines or returns
|
1026 |
+
echo '<textarea class="text-area-340x60" name="mscan_exclude_dirs" style="width:340px;height:60px;margin-bottom:5px" tabindex="1">'.esc_html( trim(stripslashes($mscan_exclude_dirs), " \t\0\x0B") ).'</textarea>';
|
1027 |
echo '<input type="hidden" name="scrolltoExcludeDirs" id="scrolltoExcludeDirs" value="'.esc_html( $scrolltoExcludeDirs ).'" />';
|
1028 |
echo '<br>';
|
1029 |
|
1030 |
echo '<label for="bps-mscan-label">'.__('Scan Database', 'bulletproof-security').'</label><br>';
|
1031 |
echo '<select name="mscan_scan_database_select" class="form-340" style="margin-bottom:10px">';
|
1032 |
+
echo '<option value="On"'. selected('On', $mscan_scan_database).'>'.__('Database Scan On', 'bulletproof-security').'</option>';
|
1033 |
+
echo '<option value="Off"'. selected('Off', $mscan_scan_database).'>'.__('Database Scan Off', 'bulletproof-security').'</option>';
|
|
|
|
|
|
|
|
|
|
|
|
|
1034 |
echo '</select><br>';
|
1035 |
|
1036 |
+
echo '<label for="bps-mscan-label">'.__('Scan Skipped Files Only', 'bulletproof-security').'</label><strong><font color="black"><span class="tooltip-350-120"><img src="'.plugins_url('/bulletproof-security/admin/images/question-mark.png').'" style="position:relative;top:3px;left:10px;" /><span>'.__('When Skipped File Scan is On only skipped files will be scanned. Note: No other MScan option settings have any effect while Skipped File Scan is set to On.', 'bulletproof-security').'<br><br>'.__('Click the MScan Read Me help button for more help info.', 'bulletproof-security').'</span></span></font></strong><br>';
|
1037 |
echo '<select name="mscan_scan_skipped_files_select" class="form-340" style="margin-bottom:10px">';
|
1038 |
+
echo '<option value="Off"'. selected('Off', $mscan_scan_skipped_files).'>'.__('Skipped File Scan Off', 'bulletproof-security').'</option>';
|
1039 |
+
echo '<option value="On"'. selected('On', $mscan_scan_skipped_files).'>'.__('Skipped File Scan On', 'bulletproof-security').'</option>';
|
1040 |
echo '</select><br>';
|
1041 |
|
1042 |
echo '<label for="bps-mscan-label">'.__('Automatically Delete /tmp Files', 'bulletproof-security').'</label><br>';
|
1043 |
echo '<select name="mscan_scan_delete_tmp_files_select" class="form-340" style="margin-bottom:10px">';
|
1044 |
+
echo '<option value="Off"'. selected('Off', $mscan_scan_delete_tmp_files).'>'.__('Delete Tmp Files Off', 'bulletproof-security').'</option>';
|
1045 |
+
echo '<option value="On"'. selected('On', $mscan_scan_delete_tmp_files).'>'.__('Delete Tmp Files On', 'bulletproof-security').'</option>';
|
1046 |
echo '</select><br>';
|
1047 |
|
1048 |
echo '<label for="bps-mscan-label" style="">'.__('Exclude /tmp Files', 'bulletproof-security').'</label><strong><font color="black"><span class="tooltip-350-120"><img src="'.plugins_url('/bulletproof-security/admin/images/question-mark.png').'" style="position:relative;top:3px;left:10px;" /><span>'.__('Enter one file name per line.', 'bulletproof-security').'<br>'.__('Example:', 'bulletproof-security').'<br>mysql.sock<br>.s.PGSQL.5432<br>.per-user<br>'.__('Click the MScan Read Me help button for more help info.', 'bulletproof-security').'</span></span></font></strong><br>';
|
1049 |
// trimming whitespace does not work because I am not trimming newlines or returns
|
1050 |
+
echo '<textarea class="text-area-340x60" name="mscan_exclude_tmp_files" style="width:340px;height:60px;margin-bottom:5px" tabindex="1">'.esc_html( trim(stripslashes($mscan_exclude_tmp_files), " \t\0\x0B") ).'</textarea>';
|
1051 |
echo '<input type="hidden" name="scrolltoExcludeTmpFiles" id="scrolltoExcludeTmpFiles" value="'.esc_html( $scrolltoExcludeTmpFiles ).'" />';
|
1052 |
echo '<br>';
|
1053 |
|
1054 |
echo '<label for="bps-mscan-label">'.__('Scheduled Scan Frequency (BPS Pro only)', 'bulletproof-security').'</label><br>';
|
1055 |
echo '<select name="mscan_scan_frequency_select" class="form-340" style="margin-bottom:15px">';
|
1056 |
+
echo '<option value="Off"'. selected('Off', $mscan_scan_frequency).'>'.__('Scheduled Scan Off', 'bulletproof-security').'</option>';
|
1057 |
+
echo '<option value="60"'. selected('60', $mscan_scan_frequency).'>'.__('Run Scan Every 60 Minutes', 'bulletproof-security').'</option>';
|
1058 |
+
echo '<option value="180"'. selected('180', $mscan_scan_frequency).'>'.__('Run Scan Every 3 Hours', 'bulletproof-security').'</option>';
|
1059 |
+
echo '<option value="360"'. selected('360', $mscan_scan_frequency).'>'.__('Run Scan Every 6 Hours', 'bulletproof-security').'</option>';
|
1060 |
+
echo '<option value="720"'. selected('720', $mscan_scan_frequency).'>'.__('Run Scan Every 12 Hours', 'bulletproof-security').'</option>';
|
1061 |
+
echo '<option value="1440"'. selected('1440', $mscan_scan_frequency).'>'.__('Run Scan Every 24 Hours', 'bulletproof-security').'</option>';
|
1062 |
echo '</select><br>';
|
1063 |
|
1064 |
echo "<p><input type=\"submit\" name=\"Submit-MScan-Options\" value=\"".esc_attr__('Save MScan Options', 'bulletproof-security')."\" class=\"button bps-button\" onclick=\"return confirm('".__('Click OK to save MScan Options or click Cancel', 'bulletproof-security')."')\" /></p></form>";
|
1066 |
echo '</div>';
|
1067 |
echo '</td>';
|
1068 |
echo '<td style="border:none">';
|
1069 |
+
echo '<div id="MScanOptions" style="margin:19px 0px 0px 0px;float:left;">';
|
1070 |
|
1071 |
+
/*
|
1072 |
echo '<form name="MScanTimeEstimate" action="'.admin_url( 'admin.php?page=bulletproof-security/admin/mscan/mscan.php' ).'" method="post">';
|
1073 |
wp_nonce_field('bulletproof_security_mscan_time_estimate');
|
1074 |
echo "<input type=\"submit\" id=\"bps-mscan-time-estimate-button\" name=\"Submit-MScan-Time-Estimate\" value=\"".esc_attr__('Scan Time Estimate Tool', 'bulletproof-security')."\" class=\"button bps-button\" style=\"width:175px;height:auto;white-space:normal\" onclick=\"return confirm('".__('IMPORTANT: You can stop the scan time estimate if it hangs or is taking too long by clicking the Stop Scan button.\n\n-------------------------------------------------------------\n\nThis tool allows you to check the estimated total scan time of a scan based on your MScan option settings without actually performing/running a scan. Note: This tool does not affect or change any previous scan results except for the Total Scan Time, which will be changed to the estimated scan time.\n\n-------------------------------------------------------------\n\nExample Usage: You can check or uncheck Hosting Account Root Folders checkboxes and change any other MScan option settings, save your MScan option settings and then run the Scan Time Estimate Tool to get the total estimated time that the actual scan will take. For additional help information click the MScan Read Me help button.\n\n-------------------------------------------------------------\n\nClick OK to get a scan time estimate or click Cancel', 'bulletproof-security')."')\" />";
|
1075 |
+
echo '</form><br>';
|
1076 |
+
*/
|
|
|
|
|
|
|
|
|
1077 |
|
1078 |
+
echo '<form name="MScanDeleteHashes" action="'.admin_url( 'admin.php?page=bulletproof-security/admin/mscan/mscan.php' ).'" method="post">';
|
1079 |
+
wp_nonce_field('bulletproof_security_mscan_delete_hashes');
|
1080 |
+
echo "<input type=\"submit\" name=\"Submit-MScan-Delete-Hashes\" value=\"".esc_attr__('Delete File Hashes Tool', 'bulletproof-security')."\" class=\"button bps-button\" style=\"width:175px;height:auto;white-space:normal\" onclick=\"return confirm('".__('CAUTION: Please click the MScan Read Me help button before using this tool. This tool allows you to delete the Plugin and Theme file hashes.\n\n-------------------------------------------------------------\n\nThis tool should ONLY be used if there is a problem when scanning Plugin and Theme files.\n\n-------------------------------------------------------------\n\nClick OK to delete Plugin and Theme file hashes or click Cancel', 'bulletproof-security')."')\" />";
|
1081 |
echo '</form>';
|
1082 |
+
?>
|
1083 |
+
|
1084 |
+
<div id="CC-Import" style="margin:24px 0px 20px 0px">
|
1085 |
+
<form name="MScanPluginZipUpload" action="<?php echo admin_url( 'admin.php?page=bulletproof-security/admin/mscan/mscan.php' ); ?>" method="post" enctype="multipart/form-data">
|
1086 |
+
<?php wp_nonce_field('bulletproof_security_plugin_zip_upload');
|
1087 |
+
bpsPro_mscan_plugin_zip_upload();
|
1088 |
+
?>
|
1089 |
+
<input type="file" name="bps_plugin_zip_upload[]" id="bps_plugin_zip_upload" multiple="multiple" />
|
1090 |
+
<input type="submit" name="Submit-Plugin-Zip-Upload" class="button bps-button" style="margin-top:1px;" value="<?php esc_attr_e('Upload Plugin Zip Files', 'bulletproof-security') ?>" onclick="return confirm('<?php $text = __('Clicking OK will upload Plugin Zip files to the /wp-content/bps-backup/plugin-hashes/ folder. The zip files will be extracted, MD5 file hashes will be created and the zip files will be deleted.', 'bulletproof-security').'\n\n'.$bpsSpacePop.'\n\n'.__('Zip files MUST be named using this exact format: plugin-name.x.x.zip where x is the actual current version number of the plugin in the zip file.', 'bulletproof-security').'\n\n'.$bpsSpacePop.'\n\n'.__('Click OK to upload Plugin Zip files or click Cancel.', 'bulletproof-security'); echo $text; ?>')" />
|
1091 |
+
</form>
|
1092 |
+
</div>
|
1093 |
+
|
1094 |
+
<div id="CC-Import" style="margin:20px 0px 20px 0px">
|
1095 |
+
<form name="MScanThemeZipUpload" action="<?php echo admin_url( 'admin.php?page=bulletproof-security/admin/mscan/mscan.php' ); ?>" method="post" enctype="multipart/form-data">
|
1096 |
+
<?php wp_nonce_field('bulletproof_security_theme_zip_upload');
|
1097 |
+
bpsPro_mscan_theme_zip_upload();
|
1098 |
+
?>
|
1099 |
+
<input type="file" name="bps_theme_zip_upload[]" id="bps_theme_zip_upload" multiple="multiple" />
|
1100 |
+
<input type="submit" name="Submit-Theme-Zip-Upload" class="button bps-button" style="margin-top:1px;" value="<?php esc_attr_e('Upload Theme Zip Files', 'bulletproof-security') ?>" onclick="return confirm('<?php $text = __('Clicking OK will upload Theme Zip files to the /wp-content/bps-backup/theme-hashes/ folder. The zip files will be extracted, MD5 file hashes will be created and the zip files will be deleted.', 'bulletproof-security').'\n\n'.$bpsSpacePop.'\n\n'.__('Zip files MUST be named using this exact format: theme-name.x.x.zip where x is the actual current version number of the theme in the zip file.', 'bulletproof-security').'\n\n'.$bpsSpacePop.'\n\n'.__('Click OK to upload Theme Zip files or click Cancel.', 'bulletproof-security'); echo $text; ?>')" />
|
1101 |
+
</form>
|
1102 |
+
</div>
|
1103 |
+
|
1104 |
+
<?php
|
1105 |
|
1106 |
echo '</div>';
|
1107 |
echo '</td>';
|
1109 |
echo '</tbody>';
|
1110 |
echo '</table>';
|
1111 |
|
1112 |
+
// Plugin Zip file upload Form
|
1113 |
+
// Note: ModSecurity randomly breaks file uploads: https://forum.ait-pro.com/forums/topic/file-upload-does-not-work-no-errors-modsecurity/
|
1114 |
+
function bpsPro_mscan_plugin_zip_upload() {
|
1115 |
+
global $bps_topDiv, $bps_bottomDiv;
|
1116 |
+
|
1117 |
+
if ( isset( $_POST['Submit-Plugin-Zip-Upload'] ) && current_user_can('manage_options') ) {
|
1118 |
+
check_admin_referer( 'bulletproof_security_plugin_zip_upload' );
|
1119 |
+
|
1120 |
+
if ( ! is_dir( WP_CONTENT_DIR . '/bps-backup/plugin-hashes' ) ) {
|
1121 |
+
@mkdir( WP_CONTENT_DIR . '/bps-backup/plugin-hashes', 0755, true );
|
1122 |
+
@chmod( WP_CONTENT_DIR . '/bps-backup/plugin-hashes/', 0755 );
|
1123 |
+
}
|
1124 |
+
|
1125 |
+
echo $bps_topDiv;
|
1126 |
+
|
1127 |
+
$plugin_hashes_dir = WP_CONTENT_DIR . '/bps-backup/plugin-hashes/';
|
1128 |
+
$allowed_file_types = array( 'zip' );
|
1129 |
+
|
1130 |
+
foreach ( $_FILES['bps_plugin_zip_upload']['error'] as $key => $error ) {
|
1131 |
+
|
1132 |
+
if ( $error == UPLOAD_ERR_OK ) {
|
1133 |
+
|
1134 |
+
$file_name = $_FILES['bps_plugin_zip_upload']['name'][$key];
|
1135 |
+
$file_tmp_name = $_FILES['bps_plugin_zip_upload']['tmp_name'][$key];
|
1136 |
+
$file_dest = $plugin_hashes_dir . $file_name;
|
1137 |
+
$file_ext = pathinfo( $file_name, PATHINFO_EXTENSION );
|
1138 |
+
|
1139 |
+
if ( in_array( strtolower($file_ext), $allowed_file_types ) && preg_match( '/(.*)\.[\d\.]{1,}\.zip/', $file_name ) ) {
|
1140 |
+
|
1141 |
+
if ( move_uploaded_file($file_tmp_name, $file_dest) ) {
|
1142 |
+
|
1143 |
+
$text = '<strong><font color="green">'.__('Plugin Zip File Upload Successful: ', 'bulletproof-security').$file_dest.'</font></strong><br>';
|
1144 |
+
echo $text;
|
1145 |
+
|
1146 |
+
$plugin_name_version_array = array();
|
1147 |
+
|
1148 |
+
foreach ( $_FILES['bps_plugin_zip_upload']['name'] as $key => $value ) {
|
1149 |
+
// Plugin File Name: plugin-name.1.0.zip
|
1150 |
+
$plugin_name = strstr($value, '.', true); // plugin-name
|
1151 |
+
$plugin_version = strstr($value, '.'); // .1.0.zip
|
1152 |
+
$plugin_version_nodot = substr($plugin_version, 1); // 1.0.zip
|
1153 |
+
$plugin_version_replace = str_replace( ".zip", "", $plugin_version_nodot ); // 1.0
|
1154 |
+
$plugin_name_version_array[$plugin_name] = $plugin_version_replace;
|
1155 |
+
}
|
1156 |
+
|
1157 |
+
$zip_upload_options = 'bulletproof_security_options_mscan_zip_upload';
|
1158 |
+
$mscan_zip_db_options = get_option('bulletproof_security_options_mscan_zip_upload');
|
1159 |
+
$bps_mscan_theme_zip_upload = isset($mscan_zip_db_options['bps_mscan_theme_zip_upload']) ? $mscan_zip_db_options['bps_mscan_theme_zip_upload'] : array('' => '');
|
1160 |
+
|
1161 |
+
$Mscan_Zip_Options = array(
|
1162 |
+
'bps_mscan_plugin_zip_upload' => $plugin_name_version_array,
|
1163 |
+
'bps_mscan_theme_zip_upload' => $bps_mscan_theme_zip_upload
|
1164 |
+
);
|
1165 |
+
|
1166 |
+
if ( ! get_option( $zip_upload_options ) ) {
|
1167 |
+
|
1168 |
+
foreach( $Mscan_Zip_Options as $key => $value ) {
|
1169 |
+
update_option('bulletproof_security_options_mscan_zip_upload', $Mscan_Zip_Options);
|
1170 |
+
}
|
1171 |
+
|
1172 |
+
} else {
|
1173 |
+
|
1174 |
+
$plugin_name_version_update_array = array();
|
1175 |
+
|
1176 |
+
foreach ( $mscan_zip_db_options['bps_mscan_plugin_zip_upload'] as $key3 => $value3 ) {
|
1177 |
+
|
1178 |
+
foreach ( $plugin_name_version_array as $key4 => $value4 ) {
|
1179 |
+
|
1180 |
+
if ( ! empty($key3) ) {
|
1181 |
+
$plugin_name_version_update_array[$key3] = $value3;
|
1182 |
+
}
|
1183 |
+
|
1184 |
+
if ( $key3 == $key4 ) {
|
1185 |
+
$plugin_name_version_update_array[$key3] = $value4;
|
1186 |
+
}
|
1187 |
+
|
1188 |
+
if ( ! in_array( $key4, $mscan_zip_db_options['bps_mscan_plugin_zip_upload'] ) ) {
|
1189 |
+
$plugin_name_version_update_array[$key4] = $value4;
|
1190 |
+
}
|
1191 |
+
}
|
1192 |
+
}
|
1193 |
+
|
1194 |
+
$Mscan_Zip_Options = array(
|
1195 |
+
'bps_mscan_plugin_zip_upload' => $plugin_name_version_update_array,
|
1196 |
+
'bps_mscan_theme_zip_upload' => $bps_mscan_theme_zip_upload
|
1197 |
+
);
|
1198 |
+
|
1199 |
+
foreach( $Mscan_Zip_Options as $key => $value ) {
|
1200 |
+
update_option('bulletproof_security_options_mscan_zip_upload', $Mscan_Zip_Options);
|
1201 |
+
}
|
1202 |
+
}
|
1203 |
+
|
1204 |
+
} else {
|
1205 |
+
|
1206 |
+
$text = '<strong><font color="#fb0101">'.__('Error: Zip File Upload Failed: ', 'bulletproof-security').'</font><font color="black">'.__('Unable to move this uploaded zip file: ', 'bulletproof-security').$file_name.__(' to this folder: ', 'bulletproof-security').$file_dest.'.</font></strong><br>';
|
1207 |
+
echo $text;
|
1208 |
+
}
|
1209 |
+
|
1210 |
+
} else {
|
1211 |
+
|
1212 |
+
$text = '<strong><font color="#fb0101">'.__('File Extension/Type or Filename Error: ', 'bulletproof-security').'</font><font color="black"> '.$file_name.__(' is either not a .zip file or the .zip file is not named correctly. Only .zip files are allowed to be uploaded. Zip files MUST be named using this exact filename format: plugin-name.x.x.zip where x is the actual current version of the plugin in the zip file.', 'bulletproof-security').'</font></strong><br>';
|
1213 |
+
echo $text;
|
1214 |
+
}
|
1215 |
+
|
1216 |
+
} else {
|
1217 |
+
|
1218 |
+
$text = '<strong><font color="#fb0101">'.__('Error: No zip file chosen: ', 'bulletproof-security').'</font><font color="black">'.__('You need to choose zip files before clicking the Upload Plugin Zip Files button.', 'bulletproof-security').'</font></strong><br>';
|
1219 |
+
echo $text;
|
1220 |
+
}
|
1221 |
+
}
|
1222 |
+
echo $bps_bottomDiv;
|
1223 |
+
}
|
1224 |
+
}
|
1225 |
+
|
1226 |
+
// Theme Zip file upload Form
|
1227 |
+
// Note: ModSecurity randomly breaks file uploads: https://forum.ait-pro.com/forums/topic/file-upload-does-not-work-no-errors-modsecurity/
|
1228 |
+
function bpsPro_mscan_theme_zip_upload() {
|
1229 |
+
global $bps_topDiv, $bps_bottomDiv;
|
1230 |
+
|
1231 |
+
if ( isset( $_POST['Submit-Theme-Zip-Upload'] ) && current_user_can('manage_options') ) {
|
1232 |
+
check_admin_referer( 'bulletproof_security_theme_zip_upload' );
|
1233 |
+
|
1234 |
+
if ( ! is_dir( WP_CONTENT_DIR . '/bps-backup/theme-hashes' ) ) {
|
1235 |
+
@mkdir( WP_CONTENT_DIR . '/bps-backup/theme-hashes', 0755, true );
|
1236 |
+
@chmod( WP_CONTENT_DIR . '/bps-backup/theme-hashes/', 0755 );
|
1237 |
+
}
|
1238 |
+
|
1239 |
+
echo $bps_topDiv;
|
1240 |
+
|
1241 |
+
$theme_hashes_dir = WP_CONTENT_DIR . '/bps-backup/theme-hashes/';
|
1242 |
+
$allowed_file_types = array( 'zip' );
|
1243 |
+
|
1244 |
+
foreach ( $_FILES['bps_theme_zip_upload']['error'] as $key => $error ) {
|
1245 |
+
|
1246 |
+
if ( $error == UPLOAD_ERR_OK ) {
|
1247 |
+
|
1248 |
+
$file_name = $_FILES['bps_theme_zip_upload']['name'][$key];
|
1249 |
+
$file_tmp_name = $_FILES['bps_theme_zip_upload']['tmp_name'][$key];
|
1250 |
+
$file_dest = $theme_hashes_dir . $file_name;
|
1251 |
+
$file_ext = pathinfo( $file_name, PATHINFO_EXTENSION );
|
1252 |
+
|
1253 |
+
if ( in_array( strtolower($file_ext), $allowed_file_types ) && preg_match( '/(.*)\.[\d\.]{1,}\.zip/', $file_name ) ) {
|
1254 |
+
|
1255 |
+
if ( move_uploaded_file($file_tmp_name, $file_dest) ) {
|
1256 |
+
|
1257 |
+
$text = '<strong><font color="green">'.__('Theme Zip File Upload Successful: ', 'bulletproof-security').$file_dest.'</font></strong><br>';
|
1258 |
+
echo $text;
|
1259 |
+
|
1260 |
+
$theme_name_version_array = array();
|
1261 |
+
|
1262 |
+
foreach ( $_FILES['bps_theme_zip_upload']['name'] as $key => $value ) {
|
1263 |
+
// Theme File Name: theme-name.1.0.zip
|
1264 |
+
$theme_name = strstr($value, '.', true); // theme-name
|
1265 |
+
$theme_version = strstr($value, '.'); // .1.0.zip
|
1266 |
+
$theme_version_nodot = substr($theme_version, 1); // 1.0.zip
|
1267 |
+
$theme_version_replace = str_replace( ".zip", "", $theme_version_nodot ); // 1.0
|
1268 |
+
$theme_name_version_array[$theme_name] = $theme_version_replace;
|
1269 |
+
}
|
1270 |
+
|
1271 |
+
$zip_upload_options = 'bulletproof_security_options_mscan_zip_upload';
|
1272 |
+
$mscan_zip_db_options = get_option('bulletproof_security_options_mscan_zip_upload');
|
1273 |
+
$bps_mscan_plugin_zip_upload = isset($mscan_zip_db_options['bps_mscan_plugin_zip_upload']) ? $mscan_zip_db_options['bps_mscan_plugin_zip_upload'] : array('' => '');
|
1274 |
+
|
1275 |
+
$Mscan_Zip_Options = array(
|
1276 |
+
'bps_mscan_plugin_zip_upload' => $bps_mscan_plugin_zip_upload,
|
1277 |
+
'bps_mscan_theme_zip_upload' => $theme_name_version_array
|
1278 |
+
);
|
1279 |
+
|
1280 |
+
if ( ! get_option( $zip_upload_options ) ) {
|
1281 |
+
|
1282 |
+
foreach( $Mscan_Zip_Options as $key => $value ) {
|
1283 |
+
update_option('bulletproof_security_options_mscan_zip_upload', $Mscan_Zip_Options);
|
1284 |
+
}
|
1285 |
+
|
1286 |
+
} else {
|
1287 |
+
|
1288 |
+
$theme_name_version_update_array = array();
|
1289 |
+
|
1290 |
+
foreach ( $mscan_zip_db_options['bps_mscan_theme_zip_upload'] as $key3 => $value3 ) {
|
1291 |
+
|
1292 |
+
foreach ( $theme_name_version_array as $key4 => $value4 ) {
|
1293 |
+
|
1294 |
+
if ( ! empty($key3) ) {
|
1295 |
+
$theme_name_version_update_array[$key3] = $value3;
|
1296 |
+
}
|
1297 |
+
|
1298 |
+
if ( $key3 == $key4 ) {
|
1299 |
+
$theme_name_version_update_array[$key3] = $value4;
|
1300 |
+
}
|
1301 |
+
|
1302 |
+
if ( ! in_array( $key4, $mscan_zip_db_options['bps_mscan_theme_zip_upload'] ) ) {
|
1303 |
+
$theme_name_version_update_array[$key4] = $value4;
|
1304 |
+
}
|
1305 |
+
}
|
1306 |
+
}
|
1307 |
+
|
1308 |
+
$Mscan_Zip_Options = array(
|
1309 |
+
'bps_mscan_plugin_zip_upload' => $bps_mscan_plugin_zip_upload,
|
1310 |
+
'bps_mscan_theme_zip_upload' => $theme_name_version_update_array
|
1311 |
+
);
|
1312 |
+
|
1313 |
+
foreach( $Mscan_Zip_Options as $key => $value ) {
|
1314 |
+
update_option('bulletproof_security_options_mscan_zip_upload', $Mscan_Zip_Options);
|
1315 |
+
}
|
1316 |
+
}
|
1317 |
+
|
1318 |
+
} else {
|
1319 |
+
|
1320 |
+
$text = '<strong><font color="#fb0101">'.__('Error: Zip File Upload Failed: ', 'bulletproof-security').'</font><font color="black">'.__('Unable to move this uploaded zip file: ', 'bulletproof-security').$file_name.__(' to this folder: ', 'bulletproof-security').$file_dest.'.</font></strong><br>';
|
1321 |
+
echo $text;
|
1322 |
+
}
|
1323 |
+
|
1324 |
+
} else {
|
1325 |
+
|
1326 |
+
$text = '<strong><font color="#fb0101">'.__('File Extension/Type or Filename Error: ', 'bulletproof-security').'</font><font color="black"> '.$file_name.__(' is either not a .zip file or the .zip file is not named correctly. Only .zip files are allowed to be uploaded. Zip files MUST be named using this exact filename format: theme-name.x.x.zip where x is the actual current version of the theme in the zip file.', 'bulletproof-security').'</font></strong><br>';
|
1327 |
+
echo $text;
|
1328 |
+
}
|
1329 |
+
|
1330 |
+
} else {
|
1331 |
+
|
1332 |
+
$text = '<strong><font color="#fb0101">'.__('Error: No zip file chosen: ', 'bulletproof-security').'</font><font color="black">'.__('You need to choose zip files before clicking the Upload Theme Zip Files button.', 'bulletproof-security').'</font></strong><br>';
|
1333 |
+
echo $text;
|
1334 |
+
}
|
1335 |
+
}
|
1336 |
+
echo $bps_bottomDiv;
|
1337 |
+
}
|
1338 |
+
}
|
1339 |
+
|
1340 |
$UIoptions = get_option('bulletproof_security_options_theme_skin');
|
1341 |
|
1342 |
if ( isset($UIoptions['bps_ui_theme_skin']) && $UIoptions['bps_ui_theme_skin'] == 'blue' ) { ?>
|
1564 |
}
|
1565 |
}
|
1566 |
|
1567 |
+
$mscan_file_scan_help_text = '<div class="mscan-report-row-small"><strong>'.__('File hash comparison scan results are 100% accurate. WP Core, Plugin and Theme files are scanned using file hash comparison scanning.', 'bulletproof-security').'<br>'.__('Pattern matching scan results are less accurate and will usually detect some false positive matches. All other files that are not WP Core, Plugin and Theme files are scanned using pattern matching scanning.', 'bulletproof-security').'<br>'.__('You can View, Ignore and Delete files detected as suspicious using the Form below. Before deleting any files make a backup of those files on your computer not on your hosting account.', 'bulletproof-security').'<br>'.__('And of course check the file contents of suspicious files to see if they contain hacker code or are false positive matches. Use the Ignore File checkbox option to ignore false postive matches.', 'bulletproof-security').'<br>'.__('When you ignore a file it will no longer be scanned in any future scans. When you unignore an ignored file it will be scanned in future scans.', 'bulletproof-security').'</strong></div>';
|
1568 |
+
echo $mscan_file_scan_help_text;
|
1569 |
+
|
1570 |
echo '<form name="MScanSuspiciousFiles" action="'.admin_url( 'admin.php?page=bulletproof-security/admin/mscan/mscan.php' ).'" method="post">';
|
1571 |
wp_nonce_field('bulletproof_security_mscan_suspicious_files');
|
1572 |
|
1586 |
echo '<th scope="col" style="width:7%;"><input type="checkbox" class="checkallUnignore" style="text-align:left;margin-left:2px;" /><br><strong>'.__('Unignore<br>File', 'bulletproof-security').'</strong></th>';
|
1587 |
echo '<th scope="col" style="width:7%;"><input type="checkbox" class="checkallDelete" style="text-align:left;margin-left:2px;" /><br><strong>'.__('Delete<br>File', 'bulletproof-security').'</strong></th>';
|
1588 |
echo '<th scope="col" style="width:42%;"><strong>'.__('File Path', 'bulletproof-security').'</strong></th>';
|
1589 |
+
echo '<th scope="col" style="width:10%;"><strong>'.__('File Hash or<br>Pattern Match', 'bulletproof-security').'</strong></th>';
|
1590 |
echo '<th scope="col" style="width:10%;"><strong>'.__('Scan<br>Time', 'bulletproof-security').'</strong></th>';
|
1591 |
echo '</tr>';
|
1592 |
echo '</thead>';
|
1629 |
|
1630 |
echo "<td><input type=\"checkbox\" id=\"deletefile\" name=\"mscan[$row->mscan_path]\" value=\"deletefile\" class=\"deletefileALL\" /><br><span style=\"font-size:10px;\">".__('Delete', 'bulletproof-security')."</span></td>";
|
1631 |
echo '<td>'.$row->mscan_path.'</td>';
|
1632 |
+
|
1633 |
+
if ( preg_match( '/Altered\sor\sunknown(.*)/', $row->mscan_pattern ) ) {
|
1634 |
+
$hash_pattern = 'File Hash:<br>';
|
1635 |
+
} else {
|
1636 |
+
$hash_pattern = 'Pattern Match:<br>';
|
1637 |
+
}
|
1638 |
+
|
1639 |
+
echo '<td style="max-width:200px">'.$hash_pattern.esc_html($row->mscan_pattern).'</td>';
|
1640 |
echo '<td>'.$row->mscan_time.'</td>';
|
1641 |
echo '</tr>';
|
1642 |
}
|
1867 |
}
|
1868 |
}
|
1869 |
|
1870 |
+
$mscan_db_scan_help_text = '<div class="mscan-report-row-small"><strong>'.__('Database scanning uses pattern matching scanning.', 'bulletproof-security').'<br>'.__('Pattern matching scan results will usually detect some false positive matches.', 'bulletproof-security').'<br>'.__('This form allows you to view, ignore or unignore suspicious DB Entries. Note: The view option displays the DB Table, Column, Row ID and the MScan Pattern Match that was detected by the MScan scan.', 'bulletproof-security').'<br>'.__('Before deleting any database data make a backup of your database.', 'bulletproof-security').'<br>'.__('Use phpMyAdmin or a similar tool to check your database Row where the suspicious code was found.', 'bulletproof-security').'<br>'.__('When you ignore a DB Entry it will no longer be scanned in any future scans. When you unignore an ignored DB Entry it will be scanned in future scans.', 'bulletproof-security').'</strong></div>';
|
1871 |
+
echo $mscan_db_scan_help_text;
|
1872 |
+
|
1873 |
echo '<form name="MScanSuspiciousDBEntries" action="'.admin_url( 'admin.php?page=bulletproof-security/admin/mscan/mscan.php' ).'" method="post">';
|
1874 |
wp_nonce_field('bulletproof_security_mscan_suspicious_db_entries');
|
1875 |
|
1989 |
|
1990 |
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="bps-help_faq_table">
|
1991 |
<tr>
|
1992 |
+
<td class="bps-table_title"><h2><?php _e('MScan Log ~ ', 'bulletproof-security'); ?><span style="font-size:.75em;"><?php _e('Logs extensive details about each scan that you run.', 'bulletproof-security'); ?></span></h2></td>
|
1993 |
</tr>
|
1994 |
<tr>
|
1995 |
<td class="bps-table_cell_help">
|
2057 |
<form name="MScanLogModDate" action="options.php#bps-tabs-2" method="post">
|
2058 |
<?php settings_fields('bulletproof_security_options_MScan_log'); ?>
|
2059 |
<?php $MScanLogoptions = get_option('bulletproof_security_options_MScan_log');
|
2060 |
+
$bps_mscan_log_date_mod = ! isset($MScanLogoptions['bps_mscan_log_date_mod']) ? '' : $MScanLogoptions['bps_mscan_log_date_mod'];
|
2061 |
?>
|
2062 |
<label for="QLog"><strong><?php _e('MScan Log Last Modified Time:', 'bulletproof-security'); ?></strong></label><br />
|
2063 |
<label for="QLog"><strong><?php echo bpsPro_MScan_ModTimeDiff(); ?></strong><?php echo $bps_mscan_log_date_mod; ?></label><br />
|
2070 |
if ( isset( $_POST['Submit-Delete-MScan-Log'] ) && current_user_can('manage_options') ) {
|
2071 |
check_admin_referer( 'bulletproof_security_delete_mscan_log' );
|
2072 |
|
2073 |
+
?>
|
2074 |
+
<script type="text/javascript">
|
2075 |
+
/* <![CDATA[ */
|
2076 |
+
// Note: Active Tab numbering is literal from left to right.
|
2077 |
+
jQuery(document).ready(function($){
|
2078 |
+
$( "#bps-tabs" ).tabs({
|
2079 |
+
active: 1
|
2080 |
+
});
|
2081 |
+
});
|
2082 |
+
/* ]]> */
|
2083 |
+
</script>
|
2084 |
+
|
2085 |
+
<?php
|
2086 |
+
|
2087 |
+
$options = get_option('bulletproof_security_options_MScan_log');
|
2088 |
+
$last_modified_time_db = $options['bps_mscan_log_date_mod'];
|
2089 |
+
$time = strtotime($last_modified_time_db);
|
2090 |
+
$MscanLog = WP_CONTENT_DIR . '/bps-backup/logs/mscan_log.txt';
|
2091 |
+
$MscanLogMaster = WP_PLUGIN_DIR . '/bulletproof-security/admin/htaccess/mscan_log.txt';
|
2092 |
|
2093 |
+
if ( copy($MscanLogMaster, $MscanLog) ) {
|
2094 |
+
touch($MscanLog, $time);
|
2095 |
|
2096 |
echo $bps_topDiv;
|
2097 |
$text = '<font color="green"><strong>'.__('Success! Your MScan Log has been deleted and replaced with a new blank MScan Log file.', 'bulletproof-security').'</strong></font>';
|
2197 |
});
|
2198 |
/* ]]> */
|
2199 |
</script>
|
2200 |
+
|
2201 |
</div>
|
2202 |
|
2203 |
</td>
|
2208 |
|
2209 |
<div id="bps-tabs-3" class="bps-tab-page">
|
2210 |
|
2211 |
+
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="bps-help_faq_table">
|
2212 |
+
<tr>
|
2213 |
+
<td class="bps-table_title"><h2><?php _e('MScan Report ~ ', 'bulletproof-security'); ?><span style="font-size:.75em;"><?php _e('Displays the current scan results data. Click the Save MScan Report button to save MScan Reports.', 'bulletproof-security'); ?></span></h2></td>
|
2214 |
+
</tr>
|
2215 |
+
<tr>
|
2216 |
+
<td class="bps-table_cell_help">
|
2217 |
+
|
2218 |
+
<h3 style="margin:0px 0px 10px 0px;"><?php _e('MScan Report', 'bulletproof-security'); ?> <button id="bps-open-modal3" class="button bps-modal-button"><?php _e('Read Me', 'bulletproof-security'); ?></button></h3>
|
2219 |
+
|
2220 |
+
<div id="bps-modal-content3" class="bps-dialog-hide" title="<?php _e('MScan Report', 'bulletproof-security'); ?>">
|
2221 |
+
<p><?php echo $bps_modal_content3; ?></p>
|
2222 |
+
</div>
|
2223 |
+
|
2224 |
+
<form name="MScanSaveReport" action="<?php echo admin_url( 'admin.php?page=bulletproof-security/admin/mscan/mscan.php#bps-tabs-3' ); ?>" method="post">
|
2225 |
+
<?php wp_nonce_field('bulletproof_security_mscan_save_report'); ?>
|
2226 |
+
<input type="submit" id="bps-mscan-save-report-button" name="Submit-MScan-Save-Report" style="margin:5px 0px 15px 0px;" value="<?php esc_attr_e('Save MScan Report', 'bulletproof-security') ?>" class="button bps-button" onclick="return confirm('<?php $text = __('Click OK to save the MScan Report or click Cancel.', 'bulletproof-security'); echo $text; ?>')" />
|
2227 |
+
</form>
|
2228 |
+
|
2229 |
+
<style>
|
2230 |
+
#bps-container div.mscan-report-row-title-large{font-size:1.5em;font-weight:600;margin:0px 0px 10px 0px}
|
2231 |
+
#bps-container div.mscan-report-row-title{font-size:1.25em;font-weight:600;margin:0px 0px 5px 0px}
|
2232 |
+
#bps-container div.mscan-report-row{font-size:1.13em;margin:0px 0px 0px 0px}
|
2233 |
+
#bps-container div.mscan-report-row-small{font-size:1em;margin:0px 0px 10px 0px}
|
2234 |
+
</style>
|
2235 |
+
|
2236 |
+
<?php
|
2237 |
+
|
2238 |
+
// MScan Report: Displays the current Report & contains the MScan Save Report Form processing code.
|
2239 |
+
function bpsPro_mscan_report() {
|
2240 |
+
global $wpdb, $wp_version, $bps_topDiv, $bps_bottomDiv;
|
2241 |
+
|
2242 |
+
$MScan_options = get_option('bulletproof_security_options_MScan');
|
2243 |
+
$MScan_status = get_option('bulletproof_security_options_MScan_status');
|
2244 |
+
|
2245 |
+
if ( ! isset($MScan_status['bps_mscan_last_scan_timestamp']) || isset($MScan_status['bps_mscan_last_scan_timestamp']) && $MScan_status['bps_mscan_last_scan_timestamp'] == '' ) {
|
2246 |
+
|
2247 |
+
echo '<h2>'.__('No Scan Results To Display: No scans have been run yet or you clicked the MScan Reset button.', 'bulletproof-security').'</h2>';
|
2248 |
+
echo '<div id="bps-page-height" style="height:400px"></div>';
|
2249 |
+
|
2250 |
+
} else {
|
2251 |
+
|
2252 |
+
$bps_mscan_total_time = $MScan_status['bps_mscan_total_time'];
|
2253 |
+
|
2254 |
+
$hours = (int)($bps_mscan_total_time / 60 / 60);
|
2255 |
+
$minutes = (int)($bps_mscan_total_time / 60) - $hours * 60;
|
2256 |
+
$seconds = (int)$bps_mscan_total_time - $hours * 60 * 60 - $minutes * 60;
|
2257 |
+
$hours_format = $hours == 0 ? "00" : $hours;
|
2258 |
+
$minutes_format = $minutes == 0 ? "00" : ($minutes < 10 ? "0".$minutes : $minutes);
|
2259 |
+
$seconds_format = $seconds == 0 ? "00" : ($seconds < 10 ? "0".$seconds : $seconds);
|
2260 |
+
|
2261 |
+
$mscan_report_timestamp = '<div class="mscan-report-row-title-large">'.__('Scan Date|Time: ', 'bulletproof-security') . $MScan_status['bps_mscan_last_scan_timestamp'].'</div>';
|
2262 |
+
echo $mscan_report_timestamp;
|
2263 |
+
|
2264 |
+
$mscan_report_website_domain = '<div class="mscan-report-row-title">'.__('Website: ', 'bulletproof-security') . get_bloginfo( 'url' ).'</div>';
|
2265 |
+
echo $mscan_report_website_domain;
|
2266 |
+
|
2267 |
+
$mscan_report_total_scan_time = '<div class="mscan-report-row-title">'.__('Scan Completion Time: ', 'bulletproof-security') . $hours_format . ':'. $minutes_format . ':' . $seconds_format.'</div>';
|
2268 |
+
echo $mscan_report_total_scan_time;
|
2269 |
+
|
2270 |
+
$mscan_report_total_files_scanned = '<div class="mscan-report-row-title">'.__('Total Files Scanned: ', 'bulletproof-security') . $MScan_status['bps_mscan_total_all_scannable_files'].'</div>';
|
2271 |
+
echo $mscan_report_total_files_scanned;
|
2272 |
+
|
2273 |
+
$mscan_report_total_skipped_files = '<div class="mscan-report-row-title">'.__('Total Skipped Files: ', 'bulletproof-security') . $MScan_status['bps_mscan_total_skipped_files'].'</div>';
|
2274 |
+
echo $mscan_report_total_skipped_files;
|
2275 |
+
|
2276 |
+
if ( $MScan_status['bps_mscan_total_suspect_files'] == '' ) {
|
2277 |
+
$bps_mscan_total_suspect_files = 0;
|
2278 |
+
} else {
|
2279 |
+
$bps_mscan_total_suspect_files = $MScan_status['bps_mscan_total_suspect_files'];
|
2280 |
+
}
|
2281 |
+
|
2282 |
+
$mscan_report_total_suspicious_files = '<div class="mscan-report-row-title">'.__('Total Suspicious Files: ', 'bulletproof-security') .$bps_mscan_total_suspect_files.'</div>';
|
2283 |
+
echo $mscan_report_total_suspicious_files;
|
2284 |
+
|
2285 |
+
if ( $MScan_status['bps_mscan_total_suspect_db'] == '' ) {
|
2286 |
+
$bps_mscan_total_suspect_db = 0;
|
2287 |
+
} else {
|
2288 |
+
$bps_mscan_total_suspect_db = $MScan_status['bps_mscan_total_suspect_db'];
|
2289 |
+
}
|
2290 |
+
|
2291 |
+
$mscan_report_total_suspicious_db_entries = '<div class="mscan-report-row-title" style="border-bottom:2px solid #999999;padding-bottom:10px">'.__('Total Suspicious DB Entries: ', 'bulletproof-security') . $bps_mscan_total_suspect_db.'</div>';
|
2292 |
+
echo $mscan_report_total_suspicious_db_entries;
|
2293 |
+
|
2294 |
+
$mscan_report_option_settings = '<div class="mscan-report-row-title-large" style="padding-top:5px">'.__('MScan Option Settings: ', 'bulletproof-security') . '</div>';
|
2295 |
+
echo $mscan_report_option_settings;
|
2296 |
+
|
2297 |
+
$mscan_dirs_array = array();
|
2298 |
+
|
2299 |
+
foreach ( $MScan_options['bps_mscan_dirs'] as $key => $value ) {
|
2300 |
+
|
2301 |
+
if ( $value == '1' ) {
|
2302 |
+
$mscan_dirs_array[] = $key;
|
2303 |
+
}
|
2304 |
+
}
|
2305 |
+
|
2306 |
+
if ( $MScan_options['bps_mscan_dirs'] != '' ) {
|
2307 |
+
$mscan_dirs = implode( ', ', $mscan_dirs_array );
|
2308 |
+
$mscan_report_folders_to_scan = '<div class="mscan-report-row"><strong>'.__('Website Folders & Files To Scan: ', 'bulletproof-security'). '</strong>' .$mscan_dirs.'</div>';
|
2309 |
+
echo $mscan_report_folders_to_scan;
|
2310 |
+
} else {
|
2311 |
+
$mscan_report_folders_to_scan = '<div class="mscan-report-row"><strong>'.__('Website Folders & Files To Scan: ', 'bulletproof-security'). '</strong>' .__('None', 'bulletproof-security').'</div>';
|
2312 |
+
echo $mscan_report_folders_to_scan;
|
2313 |
+
}
|
2314 |
+
|
2315 |
+
if ( $MScan_options['mscan_exclude_dirs'] != '' ) {
|
2316 |
+
|
2317 |
+
$mscan_exclude_dirs = implode( '', explode( "\n", $MScan_options['mscan_exclude_dirs'] ) );
|
2318 |
+
$mscan_exclude_dirs_replace = str_replace( array( "", "\n", "\r\n", "\r" ), ", ", $mscan_exclude_dirs );
|
2319 |
+
$mscan_report_excluded_dirs = '<div class="mscan-report-row"><strong>'.__('Excluded Folders: ', 'bulletproof-security'). '</strong>' .$mscan_exclude_dirs_replace.'</div>';
|
2320 |
+
echo $mscan_report_excluded_dirs;
|
2321 |
+
} else {
|
2322 |
+
$mscan_report_excluded_dirs = '<div class="mscan-report-row"><strong>'.__('Excluded Folders: ', 'bulletproof-security'). '</strong>' .__('None', 'bulletproof-security').'</div>';
|
2323 |
+
echo $mscan_report_excluded_dirs;
|
2324 |
+
}
|
2325 |
+
|
2326 |
+
$mscan_report_max_file_size = '<div class="mscan-report-row"><strong>'.__('Max File Size Limit to Scan: ', 'bulletproof-security'). '</strong>' .$MScan_options['mscan_max_file_size'].' KB</div>';
|
2327 |
+
echo $mscan_report_max_file_size;
|
2328 |
+
|
2329 |
+
$mscan_report_max_time_limit = '<div class="mscan-report-row"><strong>'.__('Max Time Limit to Scan: ', 'bulletproof-security'). '</strong>' .$MScan_options['mscan_max_time_limit'].' Seconds</div>';
|
2330 |
+
echo $mscan_report_max_time_limit;
|
2331 |
+
|
2332 |
+
$mscan_report_db_scan = '<div class="mscan-report-row"><strong>'.__('Scan Database: ', 'bulletproof-security'). '</strong>' .$MScan_options['mscan_scan_database'].'</div>';
|
2333 |
+
echo $mscan_report_db_scan;
|
2334 |
+
|
2335 |
+
$mscan_report_skipped_file_scan = '<div class="mscan-report-row"><strong>'.__('Scan Skipped Files Only: ', 'bulletproof-security'). '</strong>' .$MScan_options['mscan_scan_skipped_files'].'</div>';
|
2336 |
+
echo $mscan_report_skipped_file_scan;
|
2337 |
+
|
2338 |
+
$mscan_report_delete_tmp_files = '<div class="mscan-report-row"><strong>'.__('Automatically Delete /tmp Files: ', 'bulletproof-security'). '</strong>' .$MScan_options['mscan_scan_delete_tmp_files'].'</div>';
|
2339 |
+
echo $mscan_report_delete_tmp_files;
|
2340 |
+
|
2341 |
+
if ( $MScan_options['mscan_exclude_tmp_files'] != '' ) {
|
2342 |
+
|
2343 |
+
$mscan_exclude_tmp_files = implode( '', explode( "\n", $MScan_options['mscan_exclude_tmp_files'] ) );
|
2344 |
+
$mscan_exclude_tmp_files_replace = str_replace( array( "", "\n", "\r\n", "\r" ), ", ", $mscan_exclude_tmp_files );
|
2345 |
+
$mscan_exclude_tmp_files_trim = trim( $mscan_exclude_tmp_files_replace, ", " );
|
2346 |
+
$mscan_report_exclude_tmp_files = '<div class="mscan-report-row"><strong>'.__('Exclude /tmp Files: ', 'bulletproof-security'). '</strong>' .$mscan_exclude_tmp_files_trim.'</div>';
|
2347 |
+
echo $mscan_report_exclude_tmp_files;
|
2348 |
+
} else {
|
2349 |
+
$mscan_report_exclude_tmp_files = '<div class="mscan-report-row"><strong>'.__('Exclude /tmp Files: ', 'bulletproof-security'). '</strong>' .__('None', 'bulletproof-security').'</div>';
|
2350 |
+
echo $mscan_report_exclude_tmp_files;
|
2351 |
+
}
|
2352 |
+
|
2353 |
+
if ( $MScan_options['mscan_scan_frequency'] == '60' ) {
|
2354 |
+
$mscan_scan_frequency = 'Run Scan Every 60 Minutes';
|
2355 |
+
} elseif ( $MScan_options['mscan_scan_frequency'] == '180' ) {
|
2356 |
+
$mscan_scan_frequency = 'Run Scan Every 3 Hours';
|
2357 |
+
} elseif ( $MScan_options['mscan_scan_frequency'] == '360' ) {
|
2358 |
+
$mscan_scan_frequency = 'Run Scan Every 6 Hours';
|
2359 |
+
} elseif ( $MScan_options['mscan_scan_frequency'] == '720' ) {
|
2360 |
+
$mscan_scan_frequency = 'Run Scan Every 12 Hours';
|
2361 |
+
} elseif ( $MScan_options['mscan_scan_frequency'] == '1440' ) {
|
2362 |
+
$mscan_scan_frequency = 'Run Scan Every 24 Hours';
|
2363 |
+
} else {
|
2364 |
+
$mscan_scan_frequency = 'Off';
|
2365 |
+
}
|
2366 |
+
|
2367 |
+
$mscan_report_scheduled_scan = '<div class="mscan-report-row" style="padding-bottom:10px"><strong>'.__('Scheduled Scan Frequency: ', 'bulletproof-security'). '</strong>' .$mscan_scan_frequency.'</div>';
|
2368 |
+
echo $mscan_report_scheduled_scan;
|
2369 |
+
|
2370 |
+
$mscan_report_file_hashes = '<div class="mscan-report-row-title-large" style="border-top:2px solid #999999;padding-top:10px">'.__('WP Core|Plugin|Theme File Hashes: ', 'bulletproof-security') . '</div>';
|
2371 |
+
echo $mscan_report_file_hashes;
|
2372 |
+
|
2373 |
+
$wp_hashes_file = WP_CONTENT_DIR . '/bps-backup/wp-hashes/wp-hashes.php';
|
2374 |
+
|
2375 |
+
if ( file_exists($wp_hashes_file) ) {
|
2376 |
+
$check_string = file_get_contents($wp_hashes_file);
|
2377 |
+
$wp_core_hash_file_version = preg_match( '/WordPress\s(\d\.){1,}\d\sHashes/', $check_string, $matches );
|
2378 |
+
$wp_core_hash_file_version_replace = preg_replace( array( '/WordPress\s/', '/\sHashes/' ), "", $matches[0] );
|
2379 |
+
|
2380 |
+
$mscan_report_core_hash_version_comparison = '<div class="mscan-report-row"><strong>'.__('WP Core Hash File Version: ', 'bulletproof-security'). '</strong>' .$wp_core_hash_file_version_replace.' | <strong>'.__('WP Installed Version: ', 'bulletproof-security').'</strong>' .$wp_version.'</div>';
|
2381 |
+
echo $mscan_report_core_hash_version_comparison;
|
2382 |
+
|
2383 |
+
} else {
|
2384 |
+
|
2385 |
+
$mscan_report_core_hash_version_comparison = '<div class="mscan-report-row"><strong><font color="#fb0101">'.__('Error|Problem: ', 'bulletproof-security'). '</font></strong>' .__('The WP Core Hash File Does Not Exist', 'bulletproof-security').'</div>';
|
2386 |
+
echo $mscan_report_core_hash_version_comparison;
|
2387 |
+
}
|
2388 |
+
|
2389 |
+
$plugin_hash_file = WP_CONTENT_DIR . '/bps-backup/plugin-hashes/plugin-hashes.php';
|
2390 |
+
$theme_hash_file = WP_CONTENT_DIR . '/bps-backup/theme-hashes/theme-hashes.php';
|
2391 |
+
|
2392 |
+
$mscan_plugin_hash = get_option('bulletproof_security_options_mscan_plugin_hash');
|
2393 |
+
$mscan_plugin_hash_new = get_option('bulletproof_security_options_mscan_p_hash_new');
|
2394 |
+
$mscan_theme_hash = get_option('bulletproof_security_options_mscan_theme_hash');
|
2395 |
+
$mscan_theme_hash_new = get_option('bulletproof_security_options_mscan_t_hash_new');
|
2396 |
+
$mscan_nodownload = get_option('bulletproof_security_options_mscan_nodownload');
|
2397 |
+
$mscan_zip_upload_options = get_option('bulletproof_security_options_mscan_zip_upload');
|
2398 |
+
|
2399 |
+
$mscan_report_plugin_hash_title = '<div class="mscan-report-row-title" style="padding-top:8px">'.__('Plugin File Hashes: ', 'bulletproof-security').'</div>';
|
2400 |
+
echo $mscan_report_plugin_hash_title;
|
2401 |
+
|
2402 |
+
$mscan_report_plugin_hash_version_comparison_array = array();
|
2403 |
+
|
2404 |
+
if ( ! file_exists($plugin_hash_file) ) {
|
2405 |
+
$mscan_report_plugin_hash_version_comparison = '<div class="mscan-report-row"><strong><font color="#fb0101">'.__('Error|Problem: ', 'bulletproof-security'). '</font></strong>' .__('The Plugin Hash File Does Not Exist', 'bulletproof-security').'</div>';
|
2406 |
+
echo $mscan_report_plugin_hash_version_comparison;
|
2407 |
+
$mscan_report_plugin_hash_version_comparison_array[] = $mscan_report_plugin_hash_version_comparison;
|
2408 |
+
|
2409 |
+
} else {
|
2410 |
+
|
2411 |
+
// Note: $value['TextDomain'] is not reliable. Use $key instead.
|
2412 |
+
$all_plugins = get_plugins();
|
2413 |
+
|
2414 |
+
$active_plugins_array = array();
|
2415 |
+
$inactive_plugins_array = array();
|
2416 |
+
$hello_dolly_plugin_array = array();
|
2417 |
+
|
2418 |
+
foreach ( $all_plugins as $key => $value ) {
|
2419 |
+
|
2420 |
+
if ( ! empty($key) ) {
|
2421 |
+
|
2422 |
+
$active_plugins = in_array( $key, apply_filters('active_plugins', get_option('active_plugins')));
|
2423 |
+
|
2424 |
+
if ( 1 == $active_plugins || is_plugin_active_for_network( $key ) ) {
|
2425 |
+
|
2426 |
+
$pos = strpos($key, '/');
|
2427 |
+
$dolly_pos = strpos($value['Name'], 'Hello Dolly');
|
2428 |
+
|
2429 |
+
if ( $pos !== false ) {
|
2430 |
+
|
2431 |
+
$plugin_name = strstr($key, '/', true);
|
2432 |
+
$active_plugins_array[$plugin_name] = $value['Version'];
|
2433 |
+
|
2434 |
+
} else {
|
2435 |
+
|
2436 |
+
if ( $dolly_pos !== false ) {
|
2437 |
+
|
2438 |
+
$hello_dolly_plugin_array['hello-dolly'] = $value['Version'];
|
2439 |
+
}
|
2440 |
+
}
|
2441 |
+
|
2442 |
+
} else {
|
2443 |
+
|
2444 |
+
$pos = strpos($key, '/');
|
2445 |
+
$dolly_pos = strpos($value['Name'], 'Hello Dolly');
|
2446 |
+
|
2447 |
+
if ( $pos !== false ) {
|
2448 |
+
|
2449 |
+
$plugin_name = strstr($key, '/', true);
|
2450 |
+
$inactive_plugins_array[$plugin_name] = $value['Version'];
|
2451 |
+
|
2452 |
+
} else {
|
2453 |
+
|
2454 |
+
if ( $dolly_pos !== false ) {
|
2455 |
+
|
2456 |
+
$hello_dolly_plugin_array['hello-dolly'] = $value['Version'];
|
2457 |
+
}
|
2458 |
+
}
|
2459 |
+
}
|
2460 |
+
}
|
2461 |
+
}
|
2462 |
+
|
2463 |
+
$plugins_array_merged = array_merge($active_plugins_array, $inactive_plugins_array, $hello_dolly_plugin_array);
|
2464 |
+
|
2465 |
+
$hover_icon_plugin_hash = '<strong><font color="black"><span class="tooltip-350-150"><img src="'.plugins_url('/bulletproof-security/admin/images/question-mark.png').'" style="position:relative;top:3px;left:10px;" /><span>'.__('File hashes do not exist for this plugin. This plugin\'s files were not scanned. If you would like to scan this plugin\'s files then use the "Upload Plugin Zip Files" Form to upload a zip file for this plugin. Click the MScan 2.0 Read Me help button on the MScan 2.0 tab page and read the "Upload Plugin Zip Files" help section for more help info.', 'bulletproof-security').'</span></span></font></strong>';
|
2466 |
+
|
2467 |
+
$hover_icon_theme_hash = '<strong><font color="black"><span class="tooltip-350-150"><img src="'.plugins_url('/bulletproof-security/admin/images/question-mark.png').'" style="position:relative;top:3px;left:10px;" /><span>'.__('File hashes do not exist for this theme. This theme\'s files were not scanned. If you would like to scan this themes\'s files then use the "Upload Theme Zip Files" Form to upload a zip file for this theme. Click the MScan 2.0 Read Me help button on the MScan 2.0 tab page and read the "Upload Theme Zip Files" help section for more help info.', 'bulletproof-security').'</span></span></font></strong>';
|
2468 |
+
|
2469 |
+
foreach ( $mscan_plugin_hash['bps_mscan_plugin_hash_version_check'] as $key => $value ) {
|
2470 |
+
|
2471 |
+
foreach ( $plugins_array_merged as $key2 => $value2 ) {
|
2472 |
+
|
2473 |
+
if ( $key == $key2 && ! in_array( $key2, $mscan_nodownload['bps_plugin_nodownload'] ) ) {
|
2474 |
+
|
2475 |
+
$mscan_report_plugin_hash_version_comparison = '<div class="mscan-report-row"><strong>'.$key.__(' Plugin Hash File Version: ', 'bulletproof-security'). '</strong>' .$value.' | <strong>'.$key2.__(' Installed Version: ', 'bulletproof-security').'</strong>' .$value2.'</div>';
|
2476 |
+
echo $mscan_report_plugin_hash_version_comparison;
|
2477 |
+
$mscan_report_plugin_hash_version_comparison_array[] = $mscan_report_plugin_hash_version_comparison;
|
2478 |
+
|
2479 |
+
}
|
2480 |
+
|
2481 |
+
if ( $key == $key2 && in_array( $key2, $mscan_nodownload['bps_plugin_nodownload'] ) ) {
|
2482 |
+
|
2483 |
+
if ( isset( $mscan_zip_upload_options['bps_mscan_plugin_zip_upload'] ) && array_key_exists( $key2, $mscan_zip_upload_options['bps_mscan_plugin_zip_upload'] ) ) {
|
2484 |
+
|
2485 |
+
$mscan_report_plugin_hash_version_comparison = '<div class="mscan-report-row"><strong>'.$key.__(' Plugin Hash File Version: ', 'bulletproof-security'). '</strong>' .$value.' | <strong>'.$key2.__(' Installed Version: ', 'bulletproof-security').'</strong>' .$value2.'</div>';
|
2486 |
+
echo $mscan_report_plugin_hash_version_comparison;
|
2487 |
+
$mscan_report_plugin_hash_version_comparison_array[] = $mscan_report_plugin_hash_version_comparison;
|
2488 |
+
|
2489 |
+
} else {
|
2490 |
+
|
2491 |
+
$mscan_report_plugin_hash_version_comparison = '<div class="mscan-report-row"><strong>'.$key.__(' Plugin Hash File Version: ', 'bulletproof-security'). '</strong><strong><font color="blue">'.__('No File Hashes for This Plugin', 'bulletproof-security').'</font></strong> | <strong>'.$key2.__(' Installed Version: ', 'bulletproof-security').'</strong>' .$value2.$hover_icon_plugin_hash.'</div>';
|
2492 |
+
echo $mscan_report_plugin_hash_version_comparison;
|
2493 |
+
$mscan_report_plugin_hash_version_comparison_array[] = $mscan_report_plugin_hash_version_comparison;
|
2494 |
+
}
|
2495 |
+
}
|
2496 |
+
}
|
2497 |
+
}
|
2498 |
+
}
|
2499 |
+
|
2500 |
+
$mscan_report_theme_hash_title = '<div class="mscan-report-row-title" style="padding-top:8px">'.__('Theme File Hashes: ', 'bulletproof-security').'</div>';
|
2501 |
+
echo $mscan_report_theme_hash_title;
|
2502 |
+
|
2503 |
+
$mscan_report_theme_hash_version_comparison_array = array();
|
2504 |
+
|
2505 |
+
if ( ! file_exists($theme_hash_file) ) {
|
2506 |
+
$mscan_report_theme_hash_version_comparison = '<div class="mscan-report-row"><strong><font color="#fb0101">'.__('Error|Problem: ', 'bulletproof-security'). '</font></strong>' .__('The Theme Hash File Does Not Exist', 'bulletproof-security').'</div>';
|
2507 |
+
echo $mscan_report_theme_hash_version_comparison;
|
2508 |
+
$mscan_report_theme_hash_version_comparison_array[] = $mscan_report_theme_hash_version_comparison;
|
2509 |
+
|
2510 |
+
} else {
|
2511 |
+
|
2512 |
+
$all_themes = wp_get_themes();
|
2513 |
+
$all_themes_array = array();
|
2514 |
+
|
2515 |
+
foreach ( $all_themes as $key => $value ) {
|
2516 |
+
|
2517 |
+
if ( ! empty($key) ) {
|
2518 |
+
$all_themes_array[$key] = $value['Version'];
|
2519 |
+
}
|
2520 |
+
}
|
2521 |
+
|
2522 |
+
foreach ( $mscan_theme_hash['bps_mscan_theme_hash_version_check'] as $key => $value ) {
|
2523 |
+
|
2524 |
+
foreach ( $all_themes_array as $key2 => $value2 ) {
|
2525 |
+
|
2526 |
+
if ( $key == $key2 && ! in_array( $key2, $mscan_nodownload['bps_theme_nodownload'] ) ) {
|
2527 |
+
|
2528 |
+
$mscan_report_theme_hash_version_comparison = '<div class="mscan-report-row"><strong>'.$key.__(' Theme Hash File Version: ', 'bulletproof-security'). '</strong>' .$value.' | <strong>'.$key2.__(' Installed Version: ', 'bulletproof-security').'</strong>' .$value2.'</div>';
|
2529 |
+
echo $mscan_report_theme_hash_version_comparison;
|
2530 |
+
$mscan_report_theme_hash_version_comparison_array[] = $mscan_report_theme_hash_version_comparison;
|
2531 |
+
}
|
2532 |
+
|
2533 |
+
if ( $key == $key2 && in_array( $key2, $mscan_nodownload['bps_theme_nodownload'] ) ) {
|
2534 |
+
|
2535 |
+
if ( isset( $mscan_zip_upload_options['bps_mscan_theme_zip_upload'] ) && array_key_exists( $key2, $mscan_zip_upload_options['bps_mscan_theme_zip_upload'] ) ) {
|
2536 |
+
|
2537 |
+
$mscan_report_theme_hash_version_comparison = '<div class="mscan-report-row"><strong>'.$key.__(' Theme Hash File Version: ', 'bulletproof-security'). '</strong>' .$value.' | <strong>'.$key2.__(' Installed Version: ', 'bulletproof-security').'</strong>' .$value2.'</div>';
|
2538 |
+
echo $mscan_report_theme_hash_version_comparison;
|
2539 |
+
$mscan_report_theme_hash_version_comparison_array[] = $mscan_report_theme_hash_version_comparison;
|
2540 |
+
|
2541 |
+
} else {
|
2542 |
+
|
2543 |
+
$mscan_report_theme_hash_version_comparison = '<div class="mscan-report-row"><strong>'.$key.__(' Theme Hash File Version: ', 'bulletproof-security'). '</strong><strong><font color="blue">'.__('No File Hashes for This Theme', 'bulletproof-security').'</font></strong> | <strong>'.$key2.__(' Installed Version: ', 'bulletproof-security').'</strong>' .$value2.$hover_icon_theme_hash.'</div>';
|
2544 |
+
echo $mscan_report_theme_hash_version_comparison;
|
2545 |
+
$mscan_report_theme_hash_version_comparison_array[] = $mscan_report_theme_hash_version_comparison;
|
2546 |
+
}
|
2547 |
+
}
|
2548 |
+
}
|
2549 |
+
}
|
2550 |
+
}
|
2551 |
+
|
2552 |
+
$mscan_report_scan_results_title_spacer = '<div class="spacer" style="padding-top:10px"></div>';
|
2553 |
+
echo $mscan_report_scan_results_title_spacer;
|
2554 |
+
|
2555 |
+
$mscan_report_scan_results_title = '<div class="mscan-report-row-title-large" style="border-top:2px solid #999999;padding-top:10px">'.__('Scan Results ', 'bulletproof-security').'</div>';
|
2556 |
+
echo $mscan_report_scan_results_title;
|
2557 |
+
|
2558 |
+
$mscan_report_file_scan_help_text = '<div class="mscan-report-row-small"><strong>'.__('File hash comparison scan results are 100% accurate. WP Core, Plugin and Theme files are scanned using file hash comparison scanning.', 'bulletproof-security').'<br>'.__('Pattern matching scan results are less accurate and will usually detect some false positive matches. All other files that are not WP Core, Plugin and Theme files are scanned using pattern matching scanning.', 'bulletproof-security').'<br>'.__('You can View, Ignore and Delete files detected as suspicious using the View|Ignore|Delete Suspicious Files Form on the MScan 2.0 tab page. Before deleting any files make a backup of those files on your computer not on your hosting account.', 'bulletproof-security').'<br>'.__('And of course check the file contents of suspicious files to see if they contain hacker code or are false positive matches. Use the Ignore File checkbox option to ignore false postive matches.', 'bulletproof-security').'<br>'.__('When you ignore a file it will no longer be scanned in any future scans. When you unignore an ignored file it will be scanned in future scans.', 'bulletproof-security').'</strong></div>';
|
2559 |
+
echo $mscan_report_file_scan_help_text;
|
2560 |
+
|
2561 |
+
$mscan_report_scan_results_file_scan_array = array();
|
2562 |
+
|
2563 |
+
$MStable = $wpdb->prefix . "bpspro_mscan";
|
2564 |
+
$db_rows = 'db';
|
2565 |
+
$clean_rows = 'clean';
|
2566 |
+
$safe_rows = 'safe';
|
2567 |
+
$MScanFilesRows = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $MStable WHERE mscan_type != %s AND mscan_status != %s AND mscan_status != %s", $db_rows, $clean_rows, $safe_rows ) );
|
2568 |
+
|
2569 |
+
echo '<div id="MScanSuspectcheckall" style="">';
|
2570 |
+
echo '<table class="widefat" style="margin-bottom:20px;">';
|
2571 |
+
echo '<thead>';
|
2572 |
+
echo '<tr>';
|
2573 |
+
echo '<th scope="col" style="width:10%;"><strong>'.__('Current Status', 'bulletproof-security').'</strong></th>';
|
2574 |
+
echo '<th scope="col" style="width:50%;"><strong>'.__('File Path', 'bulletproof-security').'</strong></th>';
|
2575 |
+
echo '<th scope="col" style="width:25%;"><strong>'.__('File Hash or Pattern Match', 'bulletproof-security').'</strong></th>';
|
2576 |
+
echo '<th scope="col" style="width:15%;"><strong>'.__('Scan Time', 'bulletproof-security').'</strong></th>';
|
2577 |
+
echo '</tr>';
|
2578 |
+
echo '</thead>';
|
2579 |
+
echo '<tbody>';
|
2580 |
+
echo '<tr>';
|
2581 |
+
|
2582 |
+
if ( $wpdb->num_rows != 0 ) {
|
2583 |
+
|
2584 |
+
foreach ( $MScanFilesRows as $row ) {
|
2585 |
+
|
2586 |
+
if ( $row->mscan_status == '' ) {
|
2587 |
+
|
2588 |
+
if ( $row->mscan_ignored != 'ignore' ) {
|
2589 |
+
$status = '<strong><font color="blue">'.__('Skipped File', 'bulletproof-security').'<br>'.__('Not Scanned', 'bulletproof-security').'</font></strong>';
|
2590 |
+
}
|
2591 |
+
|
2592 |
+
if ( $row->mscan_ignored == 'ignore' ) {
|
2593 |
+
$status = '<strong><font color="green">'.__('Ignored File', 'bulletproof-security').'</font></strong>';
|
2594 |
+
}
|
2595 |
+
}
|
2596 |
+
|
2597 |
+
if ( $row->mscan_status != '' ) {
|
2598 |
+
|
2599 |
+
if ( $row->mscan_ignored == 'ignore' ) {
|
2600 |
+
$status = '<strong><font color="green">'.__('Ignored File', 'bulletproof-security').'</font></strong>';
|
2601 |
+
|
2602 |
+
} else {
|
2603 |
+
|
2604 |
+
if ( $row->mscan_status == 'suspect' ) {
|
2605 |
+
$status = '<strong><font color="#fb0101">'.__('Suspicious File', 'bulletproof-security').'</font></strong>';
|
2606 |
+
}
|
2607 |
+
}
|
2608 |
+
}
|
2609 |
+
|
2610 |
+
echo '<th scope="row" style="border-bottom:none;">'.$status.'</th>';
|
2611 |
+
|
2612 |
+
if ( preg_match( '/Altered\sor\sunknown(.*)/', $row->mscan_pattern ) ) {
|
2613 |
+
$hash_pattern = 'File Hash: ';
|
2614 |
+
} else {
|
2615 |
+
$hash_pattern = 'Pattern Match: ';
|
2616 |
+
}
|
2617 |
+
|
2618 |
+
echo '<td>'.$row->mscan_path.'</td>';
|
2619 |
+
echo '<td style="max-width:200px">'.$hash_pattern.esc_html($row->mscan_pattern).'</td>';
|
2620 |
+
echo '<td>'.$row->mscan_time.'</td>';
|
2621 |
+
echo '</tr>';
|
2622 |
+
|
2623 |
+
$mscan_report_scan_results_file_scan_array[] = array( $status, $row->mscan_path, $hash_pattern.esc_html($row->mscan_pattern), $row->mscan_time );
|
2624 |
+
}
|
2625 |
+
|
2626 |
+
} else {
|
2627 |
+
|
2628 |
+
echo '<th scope="row" style="border-bottom:none;font-weight:600;color:green">'.__('No Suspicious Files were detected', 'bulletproof-security').'</th>';
|
2629 |
+
echo '<td></td>';
|
2630 |
+
echo '<td></td>';
|
2631 |
+
echo '<td></td>';
|
2632 |
+
echo '</tr>';
|
2633 |
+
}
|
2634 |
+
echo '</tbody>';
|
2635 |
+
echo '</table>';
|
2636 |
+
echo '</div>';
|
2637 |
+
|
2638 |
+
$mscan_report_db_scan_help_text = '<div class="mscan-report-row-small"><strong>'.__('Database scanning uses pattern matching scanning.', 'bulletproof-security').'<br>'.__('Pattern matching scan results will usually detect some false positive matches.', 'bulletproof-security').'<br>'.__('You can View, Ignore and Unignore suspicious DB Entries using the View|Ignore Suspicious DB Entries Form on the MScan 2.0 tab page. Before deleting any database data make a backup of your database.', 'bulletproof-security').'<br>'.__('Use phpMyAdmin or a similar tool to check your database Row where the suspicious code was found.', 'bulletproof-security').'<br>'.__('When you ignore a DB Entry it will no longer be scanned in any future scans. When you unignore an ignored DB Entry it will be scanned in future scans.', 'bulletproof-security').'</strong></div>';
|
2639 |
+
echo $mscan_report_db_scan_help_text;
|
2640 |
+
|
2641 |
+
$mscan_report_scan_results_db_scan_array = array();
|
2642 |
+
|
2643 |
+
$MStable = $wpdb->prefix . "bpspro_mscan";
|
2644 |
+
$db_rows = 'db';
|
2645 |
+
$MScanDBRows = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $MStable WHERE mscan_type = %s", $db_rows ) );
|
2646 |
+
|
2647 |
+
echo '<div id="MScanSuspectDBcheckall" style="">';
|
2648 |
+
echo '<table class="widefat" style="margin-bottom:10px;">';
|
2649 |
+
echo '<thead>';
|
2650 |
+
echo '<tr>';
|
2651 |
+
echo '<th scope="col" style="width:16%;"><strong>'.__('Current Status', 'bulletproof-security').'</strong></th>';
|
2652 |
+
echo '<th scope="col" style="width:16%;"><strong>'.__('DB Table', 'bulletproof-security').'</strong></th>';
|
2653 |
+
echo '<th scope="col" style="width:16%;"><strong>'.__('DB Column', 'bulletproof-security').'</strong>'.'</th>';
|
2654 |
+
echo '<th scope="col" style="width:16%;"><strong>'.__('DB Row ID', 'bulletproof-security').'</strong>'.'</th>';
|
2655 |
+
echo '<th scope="col" style="width:16%;"><strong>'.__('Pattern Match', 'bulletproof-security').'</strong></th>';
|
2656 |
+
echo '<th scope="col" style="width:16%;"><strong>'.__('Scan Time', 'bulletproof-security').'</strong></th>';
|
2657 |
+
echo '</tr>';
|
2658 |
+
echo '</thead>';
|
2659 |
+
echo '<tbody>';
|
2660 |
+
echo '<tr>';
|
2661 |
+
|
2662 |
+
if ( $wpdb->num_rows != 0 ) {
|
2663 |
+
|
2664 |
+
foreach ( $MScanDBRows as $row ) {
|
2665 |
+
|
2666 |
+
if ( $row->mscan_ignored == 'ignore' ) {
|
2667 |
+
$status = '<strong><font color="green">'.__('Ignored DB Entry', 'bulletproof-security').'</font></strong>';
|
2668 |
+
|
2669 |
+
} else {
|
2670 |
+
|
2671 |
+
if ( $row->mscan_status == 'suspect' ) {
|
2672 |
+
$status = '<strong><font color="#fb0101">'.__('Suspicious DB Entry', 'bulletproof-security').'</font></strong>';
|
2673 |
+
}
|
2674 |
+
}
|
2675 |
+
|
2676 |
+
echo '<th scope="row" style="border-bottom:none;">'.$status.'</th>';
|
2677 |
+
echo '<td>'.$row->mscan_db_table.'</td>';
|
2678 |
+
echo '<td>'.$row->mscan_db_column.'</td>';
|
2679 |
+
echo '<td>'.$row->mscan_db_pkid.'</td>';
|
2680 |
+
echo '<td style="max-width:200px">'.esc_html($row->mscan_pattern).'</td>';
|
2681 |
+
echo '<td>'.$row->mscan_time.'</td>';
|
2682 |
+
echo '</tr>';
|
2683 |
+
|
2684 |
+
$mscan_report_scan_results_db_scan_array[] = array( $status, $row->mscan_db_table, $row->mscan_db_column, $row->mscan_db_pkid, esc_html($row->mscan_pattern), $row->mscan_time );
|
2685 |
+
}
|
2686 |
+
|
2687 |
+
} else {
|
2688 |
+
|
2689 |
+
echo '<th scope="row" style="border-bottom:none;font-weight:600;color:green">'.__('No Suspicious DB Entries were detected', 'bulletproof-security').'</th>';
|
2690 |
+
echo "<td></td>";
|
2691 |
+
echo "<td></td>";
|
2692 |
+
echo "<td></td>";
|
2693 |
+
echo '<td></td>';
|
2694 |
+
echo '<td></td>';
|
2695 |
+
echo '</tr>';
|
2696 |
+
}
|
2697 |
+
echo '</tbody>';
|
2698 |
+
echo '</table>';
|
2699 |
+
echo '</div>';
|
2700 |
+
}
|
2701 |
+
|
2702 |
+
// MScan Save Report Form processing
|
2703 |
+
if ( isset( $_POST['Submit-MScan-Save-Report'] ) && current_user_can('manage_options') ) {
|
2704 |
+
check_admin_referer('bulletproof_security_mscan_save_report');
|
2705 |
+
|
2706 |
+
$bps_mscan_report_timestamp = array(
|
2707 |
+
'Scan Report' => $mscan_report_timestamp, $mscan_report_website_domain, $mscan_report_total_scan_time, $mscan_report_total_files_scanned, $mscan_report_total_skipped_files, $mscan_report_total_suspicious_files, $mscan_report_total_suspicious_db_entries,
|
2708 |
+
array( 'MScan Option Settings:' => $mscan_report_folders_to_scan, $mscan_report_excluded_dirs, $mscan_report_max_file_size, $mscan_report_max_time_limit, $mscan_report_db_scan, $mscan_report_skipped_file_scan, $mscan_report_delete_tmp_files, $mscan_report_exclude_tmp_files, $mscan_report_scheduled_scan,
|
2709 |
+
array( 'WP Core|Plugin|Theme File Hashes:' => $mscan_report_core_hash_version_comparison,
|
2710 |
+
array( 'Plugin File Hashes:' => $mscan_report_plugin_hash_version_comparison_array,
|
2711 |
+
array( 'Theme File Hashes:' => $mscan_report_theme_hash_version_comparison_array,
|
2712 |
+
array( 'Scan Results:' =>
|
2713 |
+
array( 'File Scan' => $mscan_report_scan_results_file_scan_array,
|
2714 |
+
array( 'DB Scan' => $mscan_report_scan_results_db_scan_array
|
2715 |
+
) ) ) ) ) ) ) );
|
2716 |
+
|
2717 |
+
$bps_mscan_report_data_2 = array( '' => '' );
|
2718 |
+
$bps_mscan_report_data_3 = array( '' => '' );
|
2719 |
+
$bps_mscan_report_data_4 = array( '' => '' );
|
2720 |
+
$bps_mscan_report_data_5 = array( '' => '' );
|
2721 |
+
$bps_mscan_report_data_6 = array( '' => '' );
|
2722 |
+
$bps_mscan_report_data_7 = array( '' => '' );
|
2723 |
+
$bps_mscan_report_data_8 = array( '' => '' );
|
2724 |
+
$bps_mscan_report_data_9 = array( '' => '' );
|
2725 |
+
$bps_mscan_report_data_10 = array( '' => '' );
|
2726 |
+
$bps_mscan_report_data_11 = array( '' => '' );
|
2727 |
+
$bps_mscan_report_data_12 = array( '' => '' );
|
2728 |
+
$bps_mscan_report_data_13 = array( '' => '' );
|
2729 |
+
$bps_mscan_report_data_14 = array( '' => '' );
|
2730 |
+
$bps_mscan_report_data_15 = array( '' => '' );
|
2731 |
+
$bps_mscan_report_data_16 = array( '' => '' );
|
2732 |
+
$bps_mscan_report_data_17 = array( '' => '' );
|
2733 |
+
$bps_mscan_report_data_18 = array( '' => '' );
|
2734 |
+
$bps_mscan_report_data_19 = array( '' => '' );
|
2735 |
+
$bps_mscan_report_data_20 = array( '' => '' );
|
2736 |
+
|
2737 |
+
$Mscan_Report_Options = array(
|
2738 |
+
'bps_mscan_report_data_1' => $bps_mscan_report_timestamp,
|
2739 |
+
'bps_mscan_report_data_2' => $bps_mscan_report_data_2,
|
2740 |
+
'bps_mscan_report_data_3' => $bps_mscan_report_data_3,
|
2741 |
+
'bps_mscan_report_data_4' => $bps_mscan_report_data_4,
|
2742 |
+
'bps_mscan_report_data_5' => $bps_mscan_report_data_5,
|
2743 |
+
'bps_mscan_report_data_6' => $bps_mscan_report_data_6,
|
2744 |
+
'bps_mscan_report_data_7' => $bps_mscan_report_data_7,
|
2745 |
+
'bps_mscan_report_data_8' => $bps_mscan_report_data_8,
|
2746 |
+
'bps_mscan_report_data_9' => $bps_mscan_report_data_9,
|
2747 |
+
'bps_mscan_report_data_10' => $bps_mscan_report_data_10,
|
2748 |
+
'bps_mscan_report_data_11' => $bps_mscan_report_data_11,
|
2749 |
+
'bps_mscan_report_data_12' => $bps_mscan_report_data_12,
|
2750 |
+
'bps_mscan_report_data_13' => $bps_mscan_report_data_13,
|
2751 |
+
'bps_mscan_report_data_14' => $bps_mscan_report_data_14,
|
2752 |
+
'bps_mscan_report_data_15' => $bps_mscan_report_data_15,
|
2753 |
+
'bps_mscan_report_data_16' => $bps_mscan_report_data_16,
|
2754 |
+
'bps_mscan_report_data_17' => $bps_mscan_report_data_17,
|
2755 |
+
'bps_mscan_report_data_18' => $bps_mscan_report_data_18,
|
2756 |
+
'bps_mscan_report_data_19' => $bps_mscan_report_data_19,
|
2757 |
+
'bps_mscan_report_data_20' => $bps_mscan_report_data_20
|
2758 |
+
);
|
2759 |
+
|
2760 |
+
if ( ! get_option( 'bulletproof_security_options_mscan_report' ) ) {
|
2761 |
+
|
2762 |
+
foreach( $Mscan_Report_Options as $key => $value ) {
|
2763 |
+
update_option('bulletproof_security_options_mscan_report', $Mscan_Report_Options);
|
2764 |
+
}
|
2765 |
+
|
2766 |
+
$text = '<strong><font color="green">'.__('The MScan Report was saved successfully. Saved MScan Reports can be viewed on the MScan Saved Reports tab page.', 'bulletproof-security').'</font></strong>';
|
2767 |
+
|
2768 |
+
echo $bps_topDiv;
|
2769 |
+
echo $text;
|
2770 |
+
echo $bps_bottomDiv;
|
2771 |
+
|
2772 |
+
} else {
|
2773 |
+
|
2774 |
+
$report_options = get_option('bulletproof_security_options_mscan_report');
|
2775 |
+
|
2776 |
+
$bps_mscan_report_data_1 = isset($report_options['bps_mscan_report_data_1']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_1'] ) ? $report_options['bps_mscan_report_data_1'] : array( '' => '' );
|
2777 |
+
$bps_mscan_report_data_2 = isset($report_options['bps_mscan_report_data_2']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_2'] ) ? $report_options['bps_mscan_report_data_2'] : array( '' => '' );
|
2778 |
+
$bps_mscan_report_data_3 = isset($report_options['bps_mscan_report_data_3']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_3'] ) ? $report_options['bps_mscan_report_data_3'] : array( '' => '' );
|
2779 |
+
$bps_mscan_report_data_4 = isset($report_options['bps_mscan_report_data_4']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_4'] ) ? $report_options['bps_mscan_report_data_4'] : array( '' => '' );
|
2780 |
+
$bps_mscan_report_data_5 = isset($report_options['bps_mscan_report_data_5']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_5'] ) ? $report_options['bps_mscan_report_data_5'] : array( '' => '' );
|
2781 |
+
$bps_mscan_report_data_6 = isset($report_options['bps_mscan_report_data_6']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_6'] ) ? $report_options['bps_mscan_report_data_6'] : array( '' => '' );
|
2782 |
+
$bps_mscan_report_data_7 = isset($report_options['bps_mscan_report_data_7']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_7'] ) ? $report_options['bps_mscan_report_data_7'] : array( '' => '' );
|
2783 |
+
$bps_mscan_report_data_8 = isset($report_options['bps_mscan_report_data_8']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_8'] ) ? $report_options['bps_mscan_report_data_8'] : array( '' => '' );
|
2784 |
+
$bps_mscan_report_data_9 = isset($report_options['bps_mscan_report_data_9']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_9'] ) ? $report_options['bps_mscan_report_data_9'] : array( '' => '' );
|
2785 |
+
$bps_mscan_report_data_10 = isset($report_options['bps_mscan_report_data_10']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_10'] ) ? $report_options['bps_mscan_report_data_10'] : array( '' => '' );
|
2786 |
+
$bps_mscan_report_data_11 = isset($report_options['bps_mscan_report_data_11']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_11'] ) ? $report_options['bps_mscan_report_data_11'] : array( '' => '' );
|
2787 |
+
$bps_mscan_report_data_12 = isset($report_options['bps_mscan_report_data_12']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_12'] ) ? $report_options['bps_mscan_report_data_12'] : array( '' => '' );
|
2788 |
+
$bps_mscan_report_data_13 = isset($report_options['bps_mscan_report_data_13']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_13'] ) ? $report_options['bps_mscan_report_data_13'] : array( '' => '' );
|
2789 |
+
$bps_mscan_report_data_14 = isset($report_options['bps_mscan_report_data_14']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_14'] ) ? $report_options['bps_mscan_report_data_14'] : array( '' => '' );
|
2790 |
+
$bps_mscan_report_data_15 = isset($report_options['bps_mscan_report_data_15']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_15'] ) ? $report_options['bps_mscan_report_data_15'] : array( '' => '' );
|
2791 |
+
$bps_mscan_report_data_16 = isset($report_options['bps_mscan_report_data_16']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_16'] ) ? $report_options['bps_mscan_report_data_16'] : array( '' => '' );
|
2792 |
+
$bps_mscan_report_data_17 = isset($report_options['bps_mscan_report_data_17']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_17'] ) ? $report_options['bps_mscan_report_data_17'] : array( '' => '' );
|
2793 |
+
$bps_mscan_report_data_18 = isset($report_options['bps_mscan_report_data_18']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_18'] ) ? $report_options['bps_mscan_report_data_18'] : array( '' => '' );
|
2794 |
+
$bps_mscan_report_data_19 = isset($report_options['bps_mscan_report_data_19']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_19'] ) ? $report_options['bps_mscan_report_data_19'] : array( '' => '' );
|
2795 |
+
$bps_mscan_report_data_20 = isset($report_options['bps_mscan_report_data_20']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_20'] ) ? $report_options['bps_mscan_report_data_20'] : array( '' => '' );
|
2796 |
+
|
2797 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_1'] ) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_2'] ) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_3'] ) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_4'] ) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_5'] ) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_6'] ) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_7'] ) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_8'] ) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_9'] ) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_10'] ) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_11'] ) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_12'] ) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_13'] ) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_14'] ) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_15'] ) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_16'] ) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_17'] ) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_18'] ) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_19'] ) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_20'] ) ) {
|
2798 |
+
|
2799 |
+
$text = '<strong><font color="#fb0101">'.__('The MScan Report was not saved', 'bulletproof-security').'</font><br>'.__('The maximum number of Reports that can be saved is 20 Reports. In order to save the current Report you will need to delete an older saved Report.', 'bulletproof-security').'</strong>';
|
2800 |
+
|
2801 |
+
echo $bps_topDiv;
|
2802 |
+
echo $text;
|
2803 |
+
echo $bps_bottomDiv;
|
2804 |
+
|
2805 |
+
} else {
|
2806 |
+
|
2807 |
+
if ( isset($report_options['bps_mscan_report_data_1']) && ! array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_1'] ) ) {
|
2808 |
+
$bps_mscan_report_data_1 = $bps_mscan_report_timestamp;
|
2809 |
+
} elseif ( isset($report_options['bps_mscan_report_data_2']) && ! array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_2'] ) ) {
|
2810 |
+
$bps_mscan_report_data_2 = $bps_mscan_report_timestamp;
|
2811 |
+
} elseif ( isset($report_options['bps_mscan_report_data_3']) && ! array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_3'] ) ) {
|
2812 |
+
$bps_mscan_report_data_3 = $bps_mscan_report_timestamp;
|
2813 |
+
} elseif ( isset($report_options['bps_mscan_report_data_4']) && ! array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_4'] ) ) {
|
2814 |
+
$bps_mscan_report_data_4 = $bps_mscan_report_timestamp;
|
2815 |
+
} elseif ( isset($report_options['bps_mscan_report_data_5']) && ! array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_5'] ) ) {
|
2816 |
+
$bps_mscan_report_data_5 = $bps_mscan_report_timestamp;
|
2817 |
+
} elseif ( isset($report_options['bps_mscan_report_data_6']) && ! array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_6'] ) ) {
|
2818 |
+
$bps_mscan_report_data_6 = $bps_mscan_report_timestamp;
|
2819 |
+
} elseif ( isset($report_options['bps_mscan_report_data_7']) && ! array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_7'] ) ) {
|
2820 |
+
$bps_mscan_report_data_7 = $bps_mscan_report_timestamp;
|
2821 |
+
} elseif ( isset($report_options['bps_mscan_report_data_8']) && ! array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_8'] ) ) {
|
2822 |
+
$bps_mscan_report_data_8 = $bps_mscan_report_timestamp;
|
2823 |
+
} elseif ( isset($report_options['bps_mscan_report_data_9']) && ! array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_9'] ) ) {
|
2824 |
+
$bps_mscan_report_data_9 = $bps_mscan_report_timestamp;
|
2825 |
+
} elseif ( isset($report_options['bps_mscan_report_data_10']) && ! array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_10'] ) ) {
|
2826 |
+
$bps_mscan_report_data_10 = $bps_mscan_report_timestamp;
|
2827 |
+
} elseif ( isset($report_options['bps_mscan_report_data_11']) && ! array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_11'] ) ) {
|
2828 |
+
$bps_mscan_report_data_11 = $bps_mscan_report_timestamp;
|
2829 |
+
} elseif ( isset($report_options['bps_mscan_report_data_12']) && ! array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_12'] ) ) {
|
2830 |
+
$bps_mscan_report_data_12 = $bps_mscan_report_timestamp;
|
2831 |
+
} elseif ( isset($report_options['bps_mscan_report_data_13']) && ! array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_13'] ) ) {
|
2832 |
+
$bps_mscan_report_data_13 = $bps_mscan_report_timestamp;
|
2833 |
+
} elseif ( isset($report_options['bps_mscan_report_data_14']) && ! array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_14'] ) ) {
|
2834 |
+
$bps_mscan_report_data_14 = $bps_mscan_report_timestamp;
|
2835 |
+
} elseif ( isset($report_options['bps_mscan_report_data_15']) && ! array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_15'] ) ) {
|
2836 |
+
$bps_mscan_report_data_15 = $bps_mscan_report_timestamp;
|
2837 |
+
} elseif ( isset($report_options['bps_mscan_report_data_16']) && ! array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_16'] ) ) {
|
2838 |
+
$bps_mscan_report_data_16 = $bps_mscan_report_timestamp;
|
2839 |
+
} elseif ( isset($report_options['bps_mscan_report_data_17']) && ! array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_17'] ) ) {
|
2840 |
+
$bps_mscan_report_data_17 = $bps_mscan_report_timestamp;
|
2841 |
+
} elseif ( isset($report_options['bps_mscan_report_data_18']) && ! array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_18'] ) ) {
|
2842 |
+
$bps_mscan_report_data_18 = $bps_mscan_report_timestamp;
|
2843 |
+
} elseif ( isset($report_options['bps_mscan_report_data_19']) && ! array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_19'] ) ) {
|
2844 |
+
$bps_mscan_report_data_19 = $bps_mscan_report_timestamp;
|
2845 |
+
} elseif ( isset($report_options['bps_mscan_report_data_20']) && ! array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_20'] ) ) {
|
2846 |
+
$bps_mscan_report_data_20 = $bps_mscan_report_timestamp;
|
2847 |
+
}
|
2848 |
+
|
2849 |
+
$Mscan_Report_Options = array(
|
2850 |
+
'bps_mscan_report_data_1' => $bps_mscan_report_data_1,
|
2851 |
+
'bps_mscan_report_data_2' => $bps_mscan_report_data_2,
|
2852 |
+
'bps_mscan_report_data_3' => $bps_mscan_report_data_3,
|
2853 |
+
'bps_mscan_report_data_4' => $bps_mscan_report_data_4,
|
2854 |
+
'bps_mscan_report_data_5' => $bps_mscan_report_data_5,
|
2855 |
+
'bps_mscan_report_data_6' => $bps_mscan_report_data_6,
|
2856 |
+
'bps_mscan_report_data_7' => $bps_mscan_report_data_7,
|
2857 |
+
'bps_mscan_report_data_8' => $bps_mscan_report_data_8,
|
2858 |
+
'bps_mscan_report_data_9' => $bps_mscan_report_data_9,
|
2859 |
+
'bps_mscan_report_data_10' => $bps_mscan_report_data_10,
|
2860 |
+
'bps_mscan_report_data_11' => $bps_mscan_report_data_11,
|
2861 |
+
'bps_mscan_report_data_12' => $bps_mscan_report_data_12,
|
2862 |
+
'bps_mscan_report_data_13' => $bps_mscan_report_data_13,
|
2863 |
+
'bps_mscan_report_data_14' => $bps_mscan_report_data_14,
|
2864 |
+
'bps_mscan_report_data_15' => $bps_mscan_report_data_15,
|
2865 |
+
'bps_mscan_report_data_16' => $bps_mscan_report_data_16,
|
2866 |
+
'bps_mscan_report_data_17' => $bps_mscan_report_data_17,
|
2867 |
+
'bps_mscan_report_data_18' => $bps_mscan_report_data_18,
|
2868 |
+
'bps_mscan_report_data_19' => $bps_mscan_report_data_19,
|
2869 |
+
'bps_mscan_report_data_20' => $bps_mscan_report_data_20
|
2870 |
+
);
|
2871 |
+
|
2872 |
+
foreach( $Mscan_Report_Options as $key => $value ) {
|
2873 |
+
update_option('bulletproof_security_options_mscan_report', $Mscan_Report_Options);
|
2874 |
+
}
|
2875 |
+
|
2876 |
+
$text = '<strong><font color="green">'.__('The MScan Report was saved successfully. Saved MScan Reports can be viewed on the MScan Saved Reports tab page.', 'bulletproof-security').'</font></strong>';
|
2877 |
+
|
2878 |
+
echo $bps_topDiv;
|
2879 |
+
echo $text;
|
2880 |
+
echo $bps_bottomDiv;
|
2881 |
+
}
|
2882 |
+
}
|
2883 |
+
}
|
2884 |
+
}
|
2885 |
+
|
2886 |
+
bpsPro_mscan_report();
|
2887 |
+
?>
|
2888 |
+
|
2889 |
+
</td>
|
2890 |
+
</tr>
|
2891 |
+
</table>
|
2892 |
+
|
2893 |
+
</div>
|
2894 |
+
|
2895 |
+
<div id="bps-tabs-4" class="bps-tab-page">
|
2896 |
+
|
2897 |
+
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="bps-help_faq_table">
|
2898 |
+
<tr>
|
2899 |
+
<td class="bps-table_title"><h2><?php _e('MScan Saved Reports ~ ', 'bulletproof-security'); ?><span style="font-size:.75em;"><?php _e('Saved reports can be viewed or deleted.', 'bulletproof-security'); ?></span></h2></td>
|
2900 |
+
</tr>
|
2901 |
+
<tr>
|
2902 |
+
<td class="bps-table_cell_help">
|
2903 |
+
|
2904 |
+
<h3 style="margin:0px 0px 10px 0px;"><?php _e('MScan Saved Reports', 'bulletproof-security'); ?> <button id="bps-open-modal4" class="button bps-modal-button"><?php _e('Read Me', 'bulletproof-security'); ?></button></h3>
|
2905 |
+
|
2906 |
+
<div id="bps-modal-content4" class="bps-dialog-hide" title="<?php _e('MScan Saved Reports', 'bulletproof-security'); ?>">
|
2907 |
+
<p><?php echo $bps_modal_content4; ?></p>
|
2908 |
+
</div>
|
2909 |
+
|
2910 |
+
<?php
|
2911 |
+
|
2912 |
+
// MScan Saved Reports Form: View or Delete Report
|
2913 |
+
if ( ! get_option('bulletproof_security_options_mscan_report') ) {
|
2914 |
+
|
2915 |
+
echo '<h2>'.__('No Saved MScan Reports To Display: No MScan Reports have been saved yet.', 'bulletproof-security').'</h2>';
|
2916 |
+
echo '<div id="bps-page-height" style="height:400px"></div>';
|
2917 |
+
|
2918 |
+
} else {
|
2919 |
+
|
2920 |
+
$report_options = get_option('bulletproof_security_options_mscan_report');
|
2921 |
+
|
2922 |
+
$mscan_report_date_array = array();
|
2923 |
+
|
2924 |
+
if ( isset($report_options['bps_mscan_report_data_1']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_1'] ) ) {
|
2925 |
+
$mscan_report_date_array[] = $report_options['bps_mscan_report_data_1']['Scan Report'];
|
2926 |
+
}
|
2927 |
+
|
2928 |
+
if ( isset($report_options['bps_mscan_report_data_2']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_2'] ) ) {
|
2929 |
+
$mscan_report_date_array[] = $report_options['bps_mscan_report_data_2']['Scan Report'];
|
2930 |
+
}
|
2931 |
+
|
2932 |
+
if ( isset($report_options['bps_mscan_report_data_3']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_3'] ) ) {
|
2933 |
+
$mscan_report_date_array[] = $report_options['bps_mscan_report_data_3']['Scan Report'];
|
2934 |
+
}
|
2935 |
+
|
2936 |
+
if ( isset($report_options['bps_mscan_report_data_4']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_4'] ) ) {
|
2937 |
+
$mscan_report_date_array[] = $report_options['bps_mscan_report_data_4']['Scan Report'];
|
2938 |
+
}
|
2939 |
+
|
2940 |
+
if ( isset($report_options['bps_mscan_report_data_5']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_5'] ) ) {
|
2941 |
+
$mscan_report_date_array[] = $report_options['bps_mscan_report_data_5']['Scan Report'];
|
2942 |
+
}
|
2943 |
+
|
2944 |
+
if ( isset($report_options['bps_mscan_report_data_6']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_6'] ) ) {
|
2945 |
+
$mscan_report_date_array[] = $report_options['bps_mscan_report_data_6']['Scan Report'];
|
2946 |
+
}
|
2947 |
+
|
2948 |
+
if ( isset($report_options['bps_mscan_report_data_7']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_7'] ) ) {
|
2949 |
+
$mscan_report_date_array[] = $report_options['bps_mscan_report_data_7']['Scan Report'];
|
2950 |
+
}
|
2951 |
+
|
2952 |
+
if ( isset($report_options['bps_mscan_report_data_8']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_8'] ) ) {
|
2953 |
+
$mscan_report_date_array[] = $report_options['bps_mscan_report_data_8']['Scan Report'];
|
2954 |
+
}
|
2955 |
+
|
2956 |
+
if ( isset($report_options['bps_mscan_report_data_9']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_9'] ) ) {
|
2957 |
+
$mscan_report_date_array[] = $report_options['bps_mscan_report_data_9']['Scan Report'];
|
2958 |
+
}
|
2959 |
+
|
2960 |
+
if ( isset($report_options['bps_mscan_report_data_10']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_10'] ) ) {
|
2961 |
+
$mscan_report_date_array[] = $report_options['bps_mscan_report_data_10']['Scan Report'];
|
2962 |
+
}
|
2963 |
+
|
2964 |
+
if ( isset($report_options['bps_mscan_report_data_11']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_11'] ) ) {
|
2965 |
+
$mscan_report_date_array[] = $report_options['bps_mscan_report_data_11']['Scan Report'];
|
2966 |
+
}
|
2967 |
+
|
2968 |
+
if ( isset($report_options['bps_mscan_report_data_12']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_12'] ) ) {
|
2969 |
+
$mscan_report_date_array[] = $report_options['bps_mscan_report_data_12']['Scan Report'];
|
2970 |
+
}
|
2971 |
+
|
2972 |
+
if ( isset($report_options['bps_mscan_report_data_13']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_13'] ) ) {
|
2973 |
+
$mscan_report_date_array[] = $report_options['bps_mscan_report_data_13']['Scan Report'];
|
2974 |
+
}
|
2975 |
+
|
2976 |
+
if ( isset($report_options['bps_mscan_report_data_14']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_14'] ) ) {
|
2977 |
+
$mscan_report_date_array[] = $report_options['bps_mscan_report_data_14']['Scan Report'];
|
2978 |
+
}
|
2979 |
+
|
2980 |
+
if ( isset($report_options['bps_mscan_report_data_15']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_15'] ) ) {
|
2981 |
+
$mscan_report_date_array[] = $report_options['bps_mscan_report_data_15']['Scan Report'];
|
2982 |
+
}
|
2983 |
+
|
2984 |
+
if ( isset($report_options['bps_mscan_report_data_16']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_16'] ) ) {
|
2985 |
+
$mscan_report_date_array[] = $report_options['bps_mscan_report_data_16']['Scan Report'];
|
2986 |
+
}
|
2987 |
+
|
2988 |
+
if ( isset($report_options['bps_mscan_report_data_17']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_17'] ) ) {
|
2989 |
+
$mscan_report_date_array[] = $report_options['bps_mscan_report_data_17']['Scan Report'];
|
2990 |
+
}
|
2991 |
+
|
2992 |
+
if ( isset($report_options['bps_mscan_report_data_18']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_18'] ) ) {
|
2993 |
+
$mscan_report_date_array[] = $report_options['bps_mscan_report_data_18']['Scan Report'];
|
2994 |
+
}
|
2995 |
+
|
2996 |
+
if ( isset($report_options['bps_mscan_report_data_19']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_19'] ) ) {
|
2997 |
+
$mscan_report_date_array[] = $report_options['bps_mscan_report_data_19']['Scan Report'];
|
2998 |
+
}
|
2999 |
+
|
3000 |
+
if ( isset($report_options['bps_mscan_report_data_20']) && array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_20'] ) ) {
|
3001 |
+
$mscan_report_date_array[] = $report_options['bps_mscan_report_data_20']['Scan Report'];
|
3002 |
+
}
|
3003 |
+
|
3004 |
+
echo '<h3>'.__('MScan Saved Reports Form', 'bulletproof-security').'</h3>';
|
3005 |
+
|
3006 |
+
echo '<form name="MScanSavedReports" action="'.admin_url( 'admin.php?page=bulletproof-security/admin/mscan/mscan.php#bps-tabs4' ).'" method="post">';
|
3007 |
+
wp_nonce_field('bulletproof_security_mscan_saved_reports');
|
3008 |
+
|
3009 |
+
echo '<div id="ARQcheckall" style="">';
|
3010 |
+
echo '<table class="widefat" style="margin-bottom:20px;">';
|
3011 |
+
echo '<thead>';
|
3012 |
+
echo '<tr>';
|
3013 |
+
echo '<th scope="col" style="width:30%;"><strong>'.__('Report Date', 'bulletproof-security').'</strong></th>';
|
3014 |
+
echo '<th scope="col" style="width:30%;"><br><strong>'.__('View Report', 'bulletproof-security').'</strong></th>';
|
3015 |
+
echo '<th scope="col" style="width:30%;"><input type="checkbox" class="checkallDelete" style="text-align:left; margin-left:2px;" /><br><strong>'.__('Delete Report', 'bulletproof-security').'</strong></th>';
|
3016 |
+
echo '</tr>';
|
3017 |
+
echo '</thead>';
|
3018 |
+
echo '<tbody>';
|
3019 |
+
echo '<tr>';
|
3020 |
+
|
3021 |
+
foreach ( $mscan_report_date_array as $key => $value ) {
|
3022 |
+
|
3023 |
+
$value = preg_replace( array( '/<div class="mscan-report-row-title-large">/', '/<\/div>/'), "", $value );
|
3024 |
+
|
3025 |
+
echo '<th scope="row" style="border-bottom:none;font-weight:600;">'.$value.'</th>';
|
3026 |
+
echo "<td><input type=\"checkbox\" id=\"view_report\" name=\"qradio[$value]\" value=\"view_report\" /><br><span style=\"font-size:10px;\">".__('View', 'bulletproof-security')."</span></td>";
|
3027 |
+
echo "<td><input type=\"checkbox\" id=\"delete_report\" name=\"qradio[$value]\" value=\"delete_report\" class=\"deletereportALL\" /><br><span style=\"font-size:10px;\">".__('Delete', 'bulletproof-security')."</span></td>";
|
3028 |
+
|
3029 |
+
echo '</tr>';
|
3030 |
+
}
|
3031 |
+
|
3032 |
+
echo '</tbody>';
|
3033 |
+
echo '</table>';
|
3034 |
+
echo '</div>';
|
3035 |
+
|
3036 |
+
echo "<input type=\"submit\" name=\"Submit-MScan-View-Delete\" value=\"".__('View|Delete Reports', 'bulletproof-security')."\" class=\"button bps-button\" style=\"margin:0px 0px 0px 0px\" onclick=\"return confirm('".__('Click OK to proceed or click Cancel', 'bulletproof-security')."')\" /></p></form>";
|
3037 |
+
|
3038 |
+
}
|
3039 |
+
|
3040 |
+
// MScan Saved Reports Form Proccessing - View or Delete Scan Reports
|
3041 |
+
if ( isset( $_POST['Submit-MScan-View-Delete'] ) && current_user_can('manage_options') ) {
|
3042 |
+
check_admin_referer('bulletproof_security_mscan_saved_reports');
|
3043 |
+
|
3044 |
+
?>
|
3045 |
+
<script type="text/javascript">
|
3046 |
+
/* <![CDATA[ */
|
3047 |
+
// Note: Active Tab numbering is literal from left to right.
|
3048 |
+
jQuery(document).ready(function($){
|
3049 |
+
$( "#bps-tabs" ).tabs({
|
3050 |
+
active: 3
|
3051 |
+
});
|
3052 |
+
});
|
3053 |
+
/* ]]> */
|
3054 |
+
</script>
|
3055 |
+
|
3056 |
+
<?php
|
3057 |
+
|
3058 |
+
$qradio = isset($_POST['qradio']) ? $_POST['qradio'] : '';
|
3059 |
+
$report_options = get_option('bulletproof_security_options_mscan_report');
|
3060 |
+
|
3061 |
+
switch( $_POST['Submit-MScan-View-Delete'] ) {
|
3062 |
+
case __('View|Delete Reports', 'bulletproof-security'):
|
3063 |
+
|
3064 |
+
$delete_reports = array();
|
3065 |
+
$view_reports = array();
|
3066 |
+
|
3067 |
+
if ( ! empty($qradio) ) {
|
3068 |
+
|
3069 |
+
foreach ( $qradio as $key => $value ) {
|
3070 |
+
|
3071 |
+
if ( $value == 'delete_report' ) {
|
3072 |
+
$delete_reports[] = $key;
|
3073 |
+
} elseif ( $value == 'view_report' ) {
|
3074 |
+
$view_reports[] = $key;
|
3075 |
+
}
|
3076 |
+
}
|
3077 |
+
}
|
3078 |
+
|
3079 |
+
if ( empty($delete_reports) && empty($view_reports) ) {
|
3080 |
+
|
3081 |
+
$text_delete = '<strong><font color="#fb0101">'.__('You did not select an MScan Report to view or delete', 'bulletproof-security').'</font><br>'.__('Click the checkbox for the MScan Report that you would like to view or delete and then click the View|Delete Reports button.', 'bulletproof-security').'</strong>';
|
3082 |
+
echo $bps_topDiv;
|
3083 |
+
echo $text_delete;
|
3084 |
+
echo $bps_bottomDiv;
|
3085 |
+
}
|
3086 |
+
|
3087 |
+
if ( ! empty($delete_reports) ) {
|
3088 |
+
|
3089 |
+
echo $bps_topDiv;
|
3090 |
+
|
3091 |
+
$deleted_report_text = '';
|
3092 |
+
|
3093 |
+
foreach ( $delete_reports as $delete_report ) {
|
3094 |
+
|
3095 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_1'] ) && $report_options['bps_mscan_report_data_1']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$delete_report.'</div>' ) {
|
3096 |
+
$bps_mscan_report_data_1 = array( '' => '' );
|
3097 |
+
} else {
|
3098 |
+
$bps_mscan_report_data_1 = $report_options['bps_mscan_report_data_1'];
|
3099 |
+
}
|
3100 |
+
|
3101 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_2'] ) && $report_options['bps_mscan_report_data_2']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$delete_report.'</div>' ) {
|
3102 |
+
$bps_mscan_report_data_2 = array( '' => '' );
|
3103 |
+
} else {
|
3104 |
+
$bps_mscan_report_data_2 = $report_options['bps_mscan_report_data_2'];
|
3105 |
+
}
|
3106 |
+
|
3107 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_3'] ) && $report_options['bps_mscan_report_data_3']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$delete_report.'</div>' ) {
|
3108 |
+
$bps_mscan_report_data_3 = array( '' => '' );
|
3109 |
+
} else {
|
3110 |
+
$bps_mscan_report_data_3 = $report_options['bps_mscan_report_data_3'];
|
3111 |
+
}
|
3112 |
+
|
3113 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_4'] ) && $report_options['bps_mscan_report_data_4']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$delete_report.'</div>' ) {
|
3114 |
+
$bps_mscan_report_data_4 = array( '' => '' );
|
3115 |
+
} else {
|
3116 |
+
$bps_mscan_report_data_4 = $report_options['bps_mscan_report_data_4'];
|
3117 |
+
}
|
3118 |
+
|
3119 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_5'] ) && $report_options['bps_mscan_report_data_5']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$delete_report.'</div>' ) {
|
3120 |
+
$bps_mscan_report_data_5 = array( '' => '' );
|
3121 |
+
} else {
|
3122 |
+
$bps_mscan_report_data_5 = $report_options['bps_mscan_report_data_5'];
|
3123 |
+
}
|
3124 |
+
|
3125 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_6'] ) && $report_options['bps_mscan_report_data_6']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$delete_report.'</div>' ) {
|
3126 |
+
$bps_mscan_report_data_6 = array( '' => '' );
|
3127 |
+
} else {
|
3128 |
+
$bps_mscan_report_data_6 = $report_options['bps_mscan_report_data_6'];
|
3129 |
+
}
|
3130 |
+
|
3131 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_7'] ) && $report_options['bps_mscan_report_data_7']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$delete_report.'</div>' ) {
|
3132 |
+
$bps_mscan_report_data_7 = array( '' => '' );
|
3133 |
+
} else {
|
3134 |
+
$bps_mscan_report_data_7 = $report_options['bps_mscan_report_data_7'];
|
3135 |
+
}
|
3136 |
+
|
3137 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_8'] ) && $report_options['bps_mscan_report_data_8']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$delete_report.'</div>' ) {
|
3138 |
+
$bps_mscan_report_data_8 = array( '' => '' );
|
3139 |
+
} else {
|
3140 |
+
$bps_mscan_report_data_8 = $report_options['bps_mscan_report_data_8'];
|
3141 |
+
}
|
3142 |
+
|
3143 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_9'] ) && $report_options['bps_mscan_report_data_9']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$delete_report.'</div>' ) {
|
3144 |
+
$bps_mscan_report_data_9 = array( '' => '' );
|
3145 |
+
} else {
|
3146 |
+
$bps_mscan_report_data_9 = $report_options['bps_mscan_report_data_9'];
|
3147 |
+
}
|
3148 |
+
|
3149 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_10'] ) && $report_options['bps_mscan_report_data_10']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$delete_report.'</div>' ) {
|
3150 |
+
$bps_mscan_report_data_10 = array( '' => '' );
|
3151 |
+
} else {
|
3152 |
+
$bps_mscan_report_data_10 = $report_options['bps_mscan_report_data_10'];
|
3153 |
+
}
|
3154 |
+
|
3155 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_11'] ) && $report_options['bps_mscan_report_data_11']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$delete_report.'</div>' ) {
|
3156 |
+
$bps_mscan_report_data_11 = array( '' => '' );
|
3157 |
+
} else {
|
3158 |
+
$bps_mscan_report_data_11 = $report_options['bps_mscan_report_data_11'];
|
3159 |
+
}
|
3160 |
+
|
3161 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_12'] ) && $report_options['bps_mscan_report_data_12']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$delete_report.'</div>' ) {
|
3162 |
+
$bps_mscan_report_data_12 = array( '' => '' );
|
3163 |
+
} else {
|
3164 |
+
$bps_mscan_report_data_12 = $report_options['bps_mscan_report_data_12'];
|
3165 |
+
}
|
3166 |
+
|
3167 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_13'] ) && $report_options['bps_mscan_report_data_13']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$delete_report.'</div>' ) {
|
3168 |
+
$bps_mscan_report_data_13 = array( '' => '' );
|
3169 |
+
} else {
|
3170 |
+
$bps_mscan_report_data_13 = $report_options['bps_mscan_report_data_13'];
|
3171 |
+
}
|
3172 |
+
|
3173 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_14'] ) && $report_options['bps_mscan_report_data_14']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$delete_report.'</div>' ) {
|
3174 |
+
$bps_mscan_report_data_14 = array( '' => '' );
|
3175 |
+
} else {
|
3176 |
+
$bps_mscan_report_data_14 = $report_options['bps_mscan_report_data_14'];
|
3177 |
+
}
|
3178 |
+
|
3179 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_15'] ) && $report_options['bps_mscan_report_data_15']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$delete_report.'</div>' ) {
|
3180 |
+
$bps_mscan_report_data_15 = array( '' => '' );
|
3181 |
+
} else {
|
3182 |
+
$bps_mscan_report_data_15 = $report_options['bps_mscan_report_data_15'];
|
3183 |
+
}
|
3184 |
+
|
3185 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_16'] ) && $report_options['bps_mscan_report_data_16']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$delete_report.'</div>' ) {
|
3186 |
+
$bps_mscan_report_data_16 = array( '' => '' );
|
3187 |
+
} else {
|
3188 |
+
$bps_mscan_report_data_16 = $report_options['bps_mscan_report_data_16'];
|
3189 |
+
}
|
3190 |
+
|
3191 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_17'] ) && $report_options['bps_mscan_report_data_17']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$delete_report.'</div>' ) {
|
3192 |
+
$bps_mscan_report_data_17 = array( '' => '' );
|
3193 |
+
} else {
|
3194 |
+
$bps_mscan_report_data_17 = $report_options['bps_mscan_report_data_17'];
|
3195 |
+
}
|
3196 |
+
|
3197 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_18'] ) && $report_options['bps_mscan_report_data_18']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$delete_report.'</div>' ) {
|
3198 |
+
$bps_mscan_report_data_18 = array( '' => '' );
|
3199 |
+
} else {
|
3200 |
+
$bps_mscan_report_data_18 = $report_options['bps_mscan_report_data_18'];
|
3201 |
+
}
|
3202 |
+
|
3203 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_19'] ) && $report_options['bps_mscan_report_data_19']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$delete_report.'</div>' ) {
|
3204 |
+
$bps_mscan_report_data_19 = array( '' => '' );
|
3205 |
+
} else {
|
3206 |
+
$bps_mscan_report_data_19 = $report_options['bps_mscan_report_data_19'];
|
3207 |
+
}
|
3208 |
+
|
3209 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_20'] ) && $report_options['bps_mscan_report_data_20']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$delete_report.'</div>' ) {
|
3210 |
+
$bps_mscan_report_data_20 = array( '' => '' );
|
3211 |
+
} else {
|
3212 |
+
$bps_mscan_report_data_20 = $report_options['bps_mscan_report_data_20'];
|
3213 |
+
}
|
3214 |
+
|
3215 |
+
$Mscan_Report_Options = array(
|
3216 |
+
'bps_mscan_report_data_1' => $bps_mscan_report_data_1,
|
3217 |
+
'bps_mscan_report_data_2' => $bps_mscan_report_data_2,
|
3218 |
+
'bps_mscan_report_data_3' => $bps_mscan_report_data_3,
|
3219 |
+
'bps_mscan_report_data_4' => $bps_mscan_report_data_4,
|
3220 |
+
'bps_mscan_report_data_5' => $bps_mscan_report_data_5,
|
3221 |
+
'bps_mscan_report_data_6' => $bps_mscan_report_data_6,
|
3222 |
+
'bps_mscan_report_data_7' => $bps_mscan_report_data_7,
|
3223 |
+
'bps_mscan_report_data_8' => $bps_mscan_report_data_8,
|
3224 |
+
'bps_mscan_report_data_9' => $bps_mscan_report_data_9,
|
3225 |
+
'bps_mscan_report_data_10' => $bps_mscan_report_data_10,
|
3226 |
+
'bps_mscan_report_data_11' => $bps_mscan_report_data_11,
|
3227 |
+
'bps_mscan_report_data_12' => $bps_mscan_report_data_12,
|
3228 |
+
'bps_mscan_report_data_13' => $bps_mscan_report_data_13,
|
3229 |
+
'bps_mscan_report_data_14' => $bps_mscan_report_data_14,
|
3230 |
+
'bps_mscan_report_data_15' => $bps_mscan_report_data_15,
|
3231 |
+
'bps_mscan_report_data_16' => $bps_mscan_report_data_16,
|
3232 |
+
'bps_mscan_report_data_17' => $bps_mscan_report_data_17,
|
3233 |
+
'bps_mscan_report_data_18' => $bps_mscan_report_data_18,
|
3234 |
+
'bps_mscan_report_data_19' => $bps_mscan_report_data_19,
|
3235 |
+
'bps_mscan_report_data_20' => $bps_mscan_report_data_20
|
3236 |
+
);
|
3237 |
+
|
3238 |
+
foreach( $Mscan_Report_Options as $key => $value ) {
|
3239 |
+
update_option('bulletproof_security_options_mscan_report', $Mscan_Report_Options);
|
3240 |
+
}
|
3241 |
+
|
3242 |
+
$text_delete = '<strong><font color="green">'.__('Report: ', 'bulletproof-security').$delete_report.__(' has been deleted. Refresh/reload the page to see current MScan Saved Reports Form data.', 'bulletproof-security').'</font></strong><br>';
|
3243 |
+
echo $text_delete;
|
3244 |
+
}
|
3245 |
+
echo '</p></div>';
|
3246 |
+
}
|
3247 |
+
|
3248 |
+
if ( ! empty($view_reports) ) {
|
3249 |
+
|
3250 |
+
$text_view = '<strong><font color="green">'.__('The MScan Saved Report scan data is displayed below the MScan Saved Reports Form.', 'bulletproof-security').'</font></strong><br>';
|
3251 |
+
echo $bps_topDiv;
|
3252 |
+
echo $text_view;
|
3253 |
+
echo '</p></div>';
|
3254 |
+
|
3255 |
+
foreach ( $view_reports as $view_report ) {
|
3256 |
+
|
3257 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_1'] ) && $report_options['bps_mscan_report_data_1']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$view_report.'</div>' ) {
|
3258 |
+
$bps_mscan_report_data_view = 'bps_mscan_report_data_1';
|
3259 |
+
}
|
3260 |
+
|
3261 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_2'] ) && $report_options['bps_mscan_report_data_2']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$view_report.'</div>' ) {
|
3262 |
+
$bps_mscan_report_data_view = 'bps_mscan_report_data_2';
|
3263 |
+
}
|
3264 |
+
|
3265 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_3'] ) && $report_options['bps_mscan_report_data_3']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$view_report.'</div>' ) {
|
3266 |
+
$bps_mscan_report_data_view = 'bps_mscan_report_data_3';
|
3267 |
+
}
|
3268 |
+
|
3269 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_4'] ) && $report_options['bps_mscan_report_data_4']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$view_report.'</div>' ) {
|
3270 |
+
$bps_mscan_report_data_view = 'bps_mscan_report_data_4';
|
3271 |
+
}
|
3272 |
+
|
3273 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_5'] ) && $report_options['bps_mscan_report_data_5']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$view_report.'</div>' ) {
|
3274 |
+
$bps_mscan_report_data_view = 'bps_mscan_report_data_5';
|
3275 |
+
}
|
3276 |
+
|
3277 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_6'] ) && $report_options['bps_mscan_report_data_6']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$view_report.'</div>' ) {
|
3278 |
+
$bps_mscan_report_data_view = 'bps_mscan_report_data_6';
|
3279 |
+
}
|
3280 |
+
|
3281 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_7'] ) && $report_options['bps_mscan_report_data_7']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$view_report.'</div>' ) {
|
3282 |
+
$bps_mscan_report_data_view = 'bps_mscan_report_data_7';
|
3283 |
+
}
|
3284 |
+
|
3285 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_8'] ) && $report_options['bps_mscan_report_data_8']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$view_report.'</div>' ) {
|
3286 |
+
$bps_mscan_report_data_view = 'bps_mscan_report_data_8';
|
3287 |
+
}
|
3288 |
+
|
3289 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_9'] ) && $report_options['bps_mscan_report_data_9']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$view_report.'</div>' ) {
|
3290 |
+
$bps_mscan_report_data_view = 'bps_mscan_report_data_9';
|
3291 |
+
}
|
3292 |
+
|
3293 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_10'] ) && $report_options['bps_mscan_report_data_10']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$view_report.'</div>' ) {
|
3294 |
+
$bps_mscan_report_data_view = 'bps_mscan_report_data_10';
|
3295 |
+
}
|
3296 |
+
|
3297 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_11'] ) && $report_options['bps_mscan_report_data_11']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$view_report.'</div>' ) {
|
3298 |
+
$bps_mscan_report_data_view = 'bps_mscan_report_data_11';
|
3299 |
+
}
|
3300 |
+
|
3301 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_12'] ) && $report_options['bps_mscan_report_data_12']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$view_report.'</div>' ) {
|
3302 |
+
$bps_mscan_report_data_view = 'bps_mscan_report_data_12';
|
3303 |
+
}
|
3304 |
+
|
3305 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_13'] ) && $report_options['bps_mscan_report_data_13']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$view_report.'</div>' ) {
|
3306 |
+
$bps_mscan_report_data_view = 'bps_mscan_report_data_13';
|
3307 |
+
}
|
3308 |
+
|
3309 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_14'] ) && $report_options['bps_mscan_report_data_14']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$view_report.'</div>' ) {
|
3310 |
+
$bps_mscan_report_data_view = 'bps_mscan_report_data_14';
|
3311 |
+
}
|
3312 |
+
|
3313 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_15'] ) && $report_options['bps_mscan_report_data_15']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$view_report.'</div>' ) {
|
3314 |
+
$bps_mscan_report_data_view = 'bps_mscan_report_data_15';
|
3315 |
+
}
|
3316 |
+
|
3317 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_16'] ) && $report_options['bps_mscan_report_data_16']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$view_report.'</div>' ) {
|
3318 |
+
$bps_mscan_report_data_view = 'bps_mscan_report_data_16';
|
3319 |
+
}
|
3320 |
+
|
3321 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_17'] ) && $report_options['bps_mscan_report_data_17']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$view_report.'</div>' ) {
|
3322 |
+
$bps_mscan_report_data_view = 'bps_mscan_report_data_17';
|
3323 |
+
}
|
3324 |
+
|
3325 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_18'] ) && $report_options['bps_mscan_report_data_18']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$view_report.'</div>' ) {
|
3326 |
+
$bps_mscan_report_data_view = 'bps_mscan_report_data_18';
|
3327 |
+
}
|
3328 |
+
|
3329 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_19'] ) && $report_options['bps_mscan_report_data_19']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$view_report.'</div>' ) {
|
3330 |
+
$bps_mscan_report_data_view = 'bps_mscan_report_data_19';
|
3331 |
+
}
|
3332 |
+
|
3333 |
+
if ( array_key_exists( 'Scan Report', $report_options['bps_mscan_report_data_20'] ) && $report_options['bps_mscan_report_data_20']['Scan Report'] == '<div class="mscan-report-row-title-large">'.$view_report.'</div>' ) {
|
3334 |
+
$bps_mscan_report_data_view = 'bps_mscan_report_data_20';
|
3335 |
+
}
|
3336 |
+
|
3337 |
+
echo $report_options[$bps_mscan_report_data_view]['Scan Report'];
|
3338 |
+
echo $report_options[$bps_mscan_report_data_view][0];
|
3339 |
+
echo $report_options[$bps_mscan_report_data_view][1];
|
3340 |
+
echo $report_options[$bps_mscan_report_data_view][2];
|
3341 |
+
echo $report_options[$bps_mscan_report_data_view][3];
|
3342 |
+
echo $report_options[$bps_mscan_report_data_view][4];
|
3343 |
+
echo $report_options[$bps_mscan_report_data_view][5];
|
3344 |
+
$mscan_report_option_settings = '<div class="mscan-report-row-title-large" style="padding-top:5px">'.__('MScan Option Settings: ', 'bulletproof-security') . '</div>';
|
3345 |
+
echo $mscan_report_option_settings;
|
3346 |
+
echo $report_options[$bps_mscan_report_data_view][6]['MScan Option Settings:'];
|
3347 |
+
echo $report_options[$bps_mscan_report_data_view][6][0];
|
3348 |
+
echo $report_options[$bps_mscan_report_data_view][6][1];
|
3349 |
+
echo $report_options[$bps_mscan_report_data_view][6][2];
|
3350 |
+
echo $report_options[$bps_mscan_report_data_view][6][3];
|
3351 |
+
echo $report_options[$bps_mscan_report_data_view][6][4];
|
3352 |
+
echo $report_options[$bps_mscan_report_data_view][6][5];
|
3353 |
+
echo $report_options[$bps_mscan_report_data_view][6][6];
|
3354 |
+
echo $report_options[$bps_mscan_report_data_view][6][7];
|
3355 |
+
$mscan_report_file_hashes = '<div class="mscan-report-row-title-large" style="border-top:2px solid #999999;padding-top:10px">'.__('WP Core|Plugin|Theme File Hashes: ', 'bulletproof-security') . '</div>';
|
3356 |
+
echo $mscan_report_file_hashes;
|
3357 |
+
echo $report_options[$bps_mscan_report_data_view][6][8]['WP Core|Plugin|Theme File Hashes:'];
|
3358 |
+
$mscan_report_plugin_hash_title = '<div class="mscan-report-row-title" style="padding-top:8px">'.__('Plugin File Hashes: ', 'bulletproof-security').'</div>';
|
3359 |
+
echo $mscan_report_plugin_hash_title;
|
3360 |
+
|
3361 |
+
// Plugins Hashes:
|
3362 |
+
foreach ( $report_options[$bps_mscan_report_data_view][6][8][0]['Plugin File Hashes:'] as $key => $value ) {
|
3363 |
+
echo $value;
|
3364 |
+
}
|
3365 |
+
|
3366 |
+
$mscan_report_theme_hash_title = '<div class="mscan-report-row-title" style="padding-top:8px">'.__('Theme File Hashes: ', 'bulletproof-security').'</div>';
|
3367 |
+
echo $mscan_report_theme_hash_title;
|
3368 |
+
|
3369 |
+
// Theme Hashes:
|
3370 |
+
foreach ( $report_options[$bps_mscan_report_data_view][6][8][0][0]['Theme File Hashes:'] as $key => $value ) {
|
3371 |
+
echo $value;
|
3372 |
+
}
|
3373 |
+
|
3374 |
+
$mscan_report_scan_results_title_spacer = '<div class="spacer" style="padding-top:10px"></div>';
|
3375 |
+
echo $mscan_report_scan_results_title_spacer;
|
3376 |
+
|
3377 |
+
$mscan_report_scan_results_title = '<div class="mscan-report-row-title-large" style="border-top:2px solid #999999;padding-top:10px">'.__('Scan Results ', 'bulletproof-security').'</div>';
|
3378 |
+
echo $mscan_report_scan_results_title;
|
3379 |
+
|
3380 |
+
$mscan_report_file_scan_help_text = '<div class="mscan-report-row-small"><strong>'.__('File hash comparison scan results are 100% accurate. WP Core, Plugin and Theme files are scanned using file hash comparison scanning.', 'bulletproof-security').'<br>'.__('Pattern matching scan results are less accurate and will usually detect some false positive matches. All other files that are not WP Core, Plugin and Theme files are scanned using pattern matching scanning.', 'bulletproof-security').'<br>'.__('You can View, Ignore and Delete files detected as suspicious using the View|Ignore|Delete Suspicious Files Form on the MScan 2.0 tab page. Before deleting any files make a backup of those files on your computer not on your hosting account.', 'bulletproof-security').'<br>'.__('And of course check the file contents of suspicious files to see if they contain hacker code or are false positive matches. Use the Ignore File checkbox option to ignore false postive matches.', 'bulletproof-security').'<br>'.__('When you ignore a file it will no longer be scanned in any future scans. When you unignore an ignored file it will be scanned in future scans.', 'bulletproof-security').'</strong></div>';
|
3381 |
+
echo $mscan_report_file_scan_help_text;
|
3382 |
+
|
3383 |
+
echo '<div id="MScanSuspectcheckall" style="">';
|
3384 |
+
echo '<table class="widefat" style="margin-bottom:20px;">';
|
3385 |
+
echo '<thead>';
|
3386 |
+
echo '<tr>';
|
3387 |
+
echo '<th scope="col" style="width:10%;"><strong>'.__('Current Status', 'bulletproof-security').'</strong></th>';
|
3388 |
+
echo '<th scope="col" style="width:50%;"><strong>'.__('File Path', 'bulletproof-security').'</strong></th>';
|
3389 |
+
echo '<th scope="col" style="width:25%;"><strong>'.__('File Hash or Pattern Match', 'bulletproof-security').'</strong></th>';
|
3390 |
+
echo '<th scope="col" style="width:15%;"><strong>'.__('Scan Time', 'bulletproof-security').'</strong></th>';
|
3391 |
+
echo '</tr>';
|
3392 |
+
echo '</thead>';
|
3393 |
+
echo '<tbody>';
|
3394 |
+
echo '<tr>';
|
3395 |
+
|
3396 |
+
foreach ( $report_options[$bps_mscan_report_data_view][6][8][0][0][0]['Scan Results:']['File Scan'] as $key => $value ) {
|
3397 |
+
|
3398 |
+
foreach ( $value as $inner_key => $inner_value ) {
|
3399 |
+
|
3400 |
+
if ( $inner_key == 0 ) {
|
3401 |
+
echo '<th scope="row" style="border-bottom:none;">'.$inner_value.'</th>';
|
3402 |
+
}
|
3403 |
+
|
3404 |
+
if ( $inner_key == 1 ) {
|
3405 |
+
echo '<td>'.$inner_value.'</td>';
|
3406 |
+
}
|
3407 |
+
|
3408 |
+
if ( $inner_key == 2 ) {
|
3409 |
+
echo '<td style="max-width:200px">'.$inner_value.'</td>';
|
3410 |
+
}
|
3411 |
+
|
3412 |
+
if ( $inner_key == 3 ) {
|
3413 |
+
echo '<td>'.$inner_value.'</td>';
|
3414 |
+
}
|
3415 |
+
}
|
3416 |
+
|
3417 |
+
echo '</tr>';
|
3418 |
+
}
|
3419 |
+
|
3420 |
+
echo '</tbody>';
|
3421 |
+
echo '</table>';
|
3422 |
+
echo '</div>';
|
3423 |
+
|
3424 |
+
$mscan_report_db_scan_help_text = '<div class="mscan-report-row-small"><strong>'.__('Database scanning uses pattern matching scanning.', 'bulletproof-security').'<br>'.__('Pattern matching scan results will usually detect some false positive matches.', 'bulletproof-security').'<br>'.__('You can View, Ignore and Unignore suspicious DB Entries using the View|Ignore Suspicious DB Entries Form on the MScan 2.0 tab page. Before deleting any database data make a backup of your database.', 'bulletproof-security').'<br>'.__('Use phpMyAdmin or a similar tool to check your database Row where the suspicious code was found.', 'bulletproof-security').'<br>'.__('When you ignore a DB Entry it will no longer be scanned in any future scans. When you unignore an ignored DB Entry it will be scanned in future scans.', 'bulletproof-security').'</strong></div>';
|
3425 |
+
echo $mscan_report_db_scan_help_text;
|
3426 |
+
|
3427 |
+
$mscan_report_scan_results_db_scan_array = array();
|
3428 |
+
|
3429 |
+
echo '<div id="MScanSuspectDBcheckall" style="">';
|
3430 |
+
echo '<table class="widefat" style="margin-bottom:10px;">';
|
3431 |
+
echo '<thead>';
|
3432 |
+
echo '<tr>';
|
3433 |
+
echo '<th scope="col" style="width:16%;"><strong>'.__('Current Status', 'bulletproof-security').'</strong></th>';
|
3434 |
+
echo '<th scope="col" style="width:16%;"><strong>'.__('DB Table', 'bulletproof-security').'</strong></th>';
|
3435 |
+
echo '<th scope="col" style="width:16%;"><strong>'.__('DB Column', 'bulletproof-security').'</strong>'.'</th>';
|
3436 |
+
echo '<th scope="col" style="width:16%;"><strong>'.__('DB Row ID', 'bulletproof-security').'</strong>'.'</th>';
|
3437 |
+
echo '<th scope="col" style="width:16%;"><strong>'.__('Pattern Match', 'bulletproof-security').'</strong></th>';
|
3438 |
+
echo '<th scope="col" style="width:16%;"><strong>'.__('Scan Time', 'bulletproof-security').'</strong></th>';
|
3439 |
+
echo '</tr>';
|
3440 |
+
echo '</thead>';
|
3441 |
+
echo '<tbody>';
|
3442 |
+
echo '<tr>';
|
3443 |
+
|
3444 |
+
|
3445 |
+
foreach ( $report_options[$bps_mscan_report_data_view][6][8][0][0][0]['Scan Results:'][0]['DB Scan'] as $key => $value ) {
|
3446 |
+
|
3447 |
+
foreach ( $value as $inner_key => $inner_value ) {
|
3448 |
+
|
3449 |
+
if ( $inner_key == 0 ) {
|
3450 |
+
echo '<th scope="row" style="border-bottom:none;">'.$inner_value.'</th>';
|
3451 |
+
}
|
3452 |
+
|
3453 |
+
if ( $inner_key == 1 ) {
|
3454 |
+
echo '<td>'.$inner_value.'</td>';
|
3455 |
+
}
|
3456 |
+
|
3457 |
+
if ( $inner_key == 2 ) {
|
3458 |
+
echo '<td>'.$inner_value.'</td>';
|
3459 |
+
}
|
3460 |
+
|
3461 |
+
if ( $inner_key == 3 ) {
|
3462 |
+
echo '<td>'.$inner_value.'</td>';
|
3463 |
+
}
|
3464 |
+
|
3465 |
+
if ( $inner_key == 4 ) {
|
3466 |
+
echo '<td style="max-width:200px">'.$inner_value.'</td>';
|
3467 |
+
}
|
3468 |
+
|
3469 |
+
if ( $inner_key == 5 ) {
|
3470 |
+
echo '<td>'.$inner_value.'</td>';
|
3471 |
+
}
|
3472 |
+
}
|
3473 |
+
echo '</tr>';
|
3474 |
+
}
|
3475 |
+
|
3476 |
+
echo '</tbody>';
|
3477 |
+
echo '</table>';
|
3478 |
+
echo '</div>';
|
3479 |
+
}
|
3480 |
+
}
|
3481 |
+
break;
|
3482 |
+
}
|
3483 |
+
}
|
3484 |
+
|
3485 |
+
?>
|
3486 |
+
|
3487 |
+
<script type="text/javascript">
|
3488 |
+
/* <![CDATA[ */
|
3489 |
+
jQuery(document).ready(function($){
|
3490 |
+
$('.checkallDelete').click(function() {
|
3491 |
+
$(this).parents('#ARQcheckall:eq(0)').find('.deletereportALL:checkbox').attr('checked', this.checked);
|
3492 |
+
});
|
3493 |
+
});
|
3494 |
+
/* ]]> */
|
3495 |
+
</script>
|
3496 |
+
|
3497 |
+
</td>
|
3498 |
+
</tr>
|
3499 |
+
</table>
|
3500 |
+
|
3501 |
+
</div>
|
3502 |
+
|
3503 |
+
<div id="bps-tabs-5" class="bps-tab-page">
|
3504 |
+
|
3505 |
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="bps-help_faq_table">
|
3506 |
<tr>
|
3507 |
<td class="bps-table_title"><h2><?php _e('Help & FAQ', 'bulletproof-security'); ?></h2></td>
|
admin/wizard/wizard.php
CHANGED
@@ -1814,7 +1814,7 @@ global $wpdb, $blog_id, $bps_topDiv, $bps_bottomDiv;
|
|
1814 |
foreach ( $BPSPluginOptionRows as $data ) {
|
1815 |
|
1816 |
// Exclude these BPS option settings
|
1817 |
-
if ( $data->option_name != 'bulletproof_security_options_apache_modules' && $data->option_name != 'bulletproof_security_options_MScan_status' && $data->option_name != 'bulletproof_security_options_MScan_log' && $data->option_name != 'bulletproof_security_options_DBB_log' && $data->option_name != 'bulletproof_security_options_db_backup' && $data->option_name != 'bulletproof_security_options_mod_security' && $data->option_name != 'bulletproof_security_options_wizard_free' && $data->option_name != 'bulletproof_security_options_rate_free' && $data->option_name != 'bulletproof_security_options_vcheck' && $data->option_name != 'bulletproof_security_options_MU_tools_free' ) {
|
1818 |
|
1819 |
fwrite( $handle, "$".$data->option_name." = '".$data->option_name."';\n" );
|
1820 |
fwrite( $handle, "$".$data->option_name."_array = array(\n" );
|
1814 |
foreach ( $BPSPluginOptionRows as $data ) {
|
1815 |
|
1816 |
// Exclude these BPS option settings
|
1817 |
+
if ( $data->option_name != 'bulletproof_security_options_apache_modules' && $data->option_name != 'bulletproof_security_options_MScan_status' && $data->option_name != 'bulletproof_security_options_MScan_log' && $data->option_name != 'bulletproof_security_options_DBB_log' && $data->option_name != 'bulletproof_security_options_db_backup' && $data->option_name != 'bulletproof_security_options_mod_security' && $data->option_name != 'bulletproof_security_options_wizard_free' && $data->option_name != 'bulletproof_security_options_rate_free' && $data->option_name != 'bulletproof_security_options_vcheck' && $data->option_name != 'bulletproof_security_options_MU_tools_free' && $data->option_name != 'bulletproof_security_options_mscan_plugin_hash' && $data->option_name != 'bulletproof_security_options_mscan_p_hash_new' && $data->option_name != 'bulletproof_security_options_mscan_theme_hash' && $data->option_name != 'bulletproof_security_options_mscan_t_hash_new' && $data->option_name != 'bulletproof_security_options_mscan_nodownload' && $data->option_name != 'bulletproof_security_options_mscan_zip_upload' ) {
|
1818 |
|
1819 |
fwrite( $handle, "$".$data->option_name." = '".$data->option_name."';\n" );
|
1820 |
fwrite( $handle, "$".$data->option_name."_array = array(\n" );
|
bulletproof-security.php
CHANGED
@@ -5,12 +5,12 @@ Plugin URI: https://forum.ait-pro.com/read-me-first/
|
|
5 |
Text Domain: bulletproof-security
|
6 |
Domain Path: /languages/
|
7 |
Description: <strong>Feature Highlights:</strong> Setup Wizard • MScan Malware Scanner • .htaccess Website Security Protection (Firewalls) • Security Logging|HTTP Error Logging • DB Backup • DB Table Prefix Changer • Login Security & Monitoring • JTC-Lite Login Form Bot Lockout Protection • Idle Session Logout (ISL) • Auth Cookie Expiration (ACE) • UI Theme Skin Changer • System Info: Extensive System, Server and Security Status Information • FrontEnd|BackEnd Maintenance Mode • WP Automatic Update Options (BPS MU Tools must-use plugin) • Force Strong Passwords.
|
8 |
-
Version: 4.
|
9 |
Author: AITpro Website Security
|
10 |
Author URI: https://forum.ait-pro.com/read-me-first/
|
11 |
*/
|
12 |
|
13 |
-
/* Copyright (C)
|
14 |
|
15 |
This program is free software; you can redistribute it and/or modify
|
16 |
it under the terms of the GNU General Public License as published by
|
@@ -31,11 +31,11 @@ Author URI: https://forum.ait-pro.com/read-me-first/
|
|
31 |
// 3.4: It is not a mistake or retarded to add the global keyword to global variables outside of functions per PHP.net, but yeah it does appear to be retarded.
|
32 |
// WP_CLI requires that all global variables outside of functions MUST explicitly use the global keyword since WP_CLI loads WP within a function
|
33 |
// and cannot access the global variables within functions in BPS. Luckily this does not break BPS or WordPress in any way and PHP.net states this is technically not an error.
|
34 |
-
global $bps_last_version, $bps_version, $aitpro_bullet, $bps_topDiv, $bps_bottomDiv, $bpsPro_remote_addr, $bpsPro_http_client_ip, $bpsPro_http_forwarded, $bpsPro_http_x_forwarded_for, $bpsPro_http_x_cluster_client_ip, $bps_wpcontent_dir, $bps_plugin_dir;
|
35 |
|
36 |
-
define( 'BULLETPROOF_VERSION', '4.
|
37 |
-
$bps_last_version = '4.
|
38 |
-
$bps_version = '4.
|
39 |
$aitpro_bullet = '<img src="'.plugins_url('/bulletproof-security/admin/images/aitpro-bullet.png').'" style="padding:0px 3px 0px 3px;" />';
|
40 |
// Top div & bottom div
|
41 |
$bps_topDiv = '<div id="message" class="updated" style="background-color:#dfecf2;border:1px solid #999;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);"><p>';
|
@@ -89,43 +89,50 @@ function bulletproof_security_load_plugin_textdomain() {
|
|
89 |
}
|
90 |
|
91 |
// BPS upgrade functions
|
92 |
-
require_once
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
// MScan AJAX functions
|
94 |
-
require_once
|
95 |
// BPS HUD Dimiss functions - includes AutoFix AutoSetup checks
|
96 |
-
require_once
|
97 |
// BPS HUD Dimiss functions - includes AutoFix AutoWhitelist checks
|
98 |
-
require_once
|
99 |
// BPS HUD Dimiss functions - General Error Checks & Misc checks
|
100 |
-
require_once
|
101 |
// BPS Zip & Email Log File Cron functions
|
102 |
-
require_once
|
103 |
// General functions
|
104 |
-
require_once
|
105 |
// BPS Login Security
|
106 |
-
require_once
|
107 |
// BPS Force Strong Passwords
|
108 |
-
require_once
|
109 |
// BPS DB Backup
|
110 |
-
require_once
|
111 |
// BPS Hidden Plugin Folders|Files (HPF) Cron
|
112 |
-
require_once
|
113 |
// Idle Session Logout (ISL)
|
114 |
$BPS_ISL_options = get_option('bulletproof_security_options_idle_session');
|
115 |
if ( isset( $BPS_ISL_options['bps_isl'] ) && $BPS_ISL_options['bps_isl'] == 'On' ) {
|
116 |
-
require_once
|
117 |
}
|
118 |
// PHP Encryption|Decryption class using openssl_decrypt() and openssl_encrypt()
|
119 |
// Web hosts may see this file as malicious and block or delete it. So a file_exists check needs to be here.
|
120 |
$bpsPro_encrypt_decrypt_class = WP_PLUGIN_DIR . '/bulletproof-security/includes/encrypt-decrypt-class.php';
|
121 |
if ( file_exists ( $bpsPro_encrypt_decrypt_class ) ) {
|
122 |
-
require_once
|
123 |
}
|
124 |
|
125 |
// If in single site Admin Dashboard
|
126 |
if ( is_admin() ) {
|
127 |
|
128 |
-
require_once
|
129 |
|
130 |
register_activation_hook(__FILE__, 'bulletproof_security_install');
|
131 |
register_deactivation_hook(__FILE__, 'bulletproof_security_deactivation');
|
5 |
Text Domain: bulletproof-security
|
6 |
Domain Path: /languages/
|
7 |
Description: <strong>Feature Highlights:</strong> Setup Wizard • MScan Malware Scanner • .htaccess Website Security Protection (Firewalls) • Security Logging|HTTP Error Logging • DB Backup • DB Table Prefix Changer • Login Security & Monitoring • JTC-Lite Login Form Bot Lockout Protection • Idle Session Logout (ISL) • Auth Cookie Expiration (ACE) • UI Theme Skin Changer • System Info: Extensive System, Server and Security Status Information • FrontEnd|BackEnd Maintenance Mode • WP Automatic Update Options (BPS MU Tools must-use plugin) • Force Strong Passwords.
|
8 |
+
Version: 4.8
|
9 |
Author: AITpro Website Security
|
10 |
Author URI: https://forum.ait-pro.com/read-me-first/
|
11 |
*/
|
12 |
|
13 |
+
/* Copyright (C) Edward Alexander | AITpro.com
|
14 |
|
15 |
This program is free software; you can redistribute it and/or modify
|
16 |
it under the terms of the GNU General Public License as published by
|
31 |
// 3.4: It is not a mistake or retarded to add the global keyword to global variables outside of functions per PHP.net, but yeah it does appear to be retarded.
|
32 |
// WP_CLI requires that all global variables outside of functions MUST explicitly use the global keyword since WP_CLI loads WP within a function
|
33 |
// and cannot access the global variables within functions in BPS. Luckily this does not break BPS or WordPress in any way and PHP.net states this is technically not an error.
|
34 |
+
global $bps_last_version, $bps_version, $aitpro_bullet, $bps_topDiv, $bps_bottomDiv, $bpsPro_remote_addr, $bpsPro_http_client_ip, $bpsPro_http_forwarded, $bpsPro_http_x_forwarded_for, $bpsPro_http_x_cluster_client_ip, $bps_wpcontent_dir, $bps_plugin_dir, $plugin_hashes, $theme_hashes;
|
35 |
|
36 |
+
define( 'BULLETPROOF_VERSION', '4.8' );
|
37 |
+
$bps_last_version = '4.7';
|
38 |
+
$bps_version = '4.8';
|
39 |
$aitpro_bullet = '<img src="'.plugins_url('/bulletproof-security/admin/images/aitpro-bullet.png').'" style="padding:0px 3px 0px 3px;" />';
|
40 |
// Top div & bottom div
|
41 |
$bps_topDiv = '<div id="message" class="updated" style="background-color:#dfecf2;border:1px solid #999;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);"><p>';
|
89 |
}
|
90 |
|
91 |
// BPS upgrade functions
|
92 |
+
require_once WP_PLUGIN_DIR . '/bulletproof-security/includes/functions.php';
|
93 |
+
// MScan Plugin and Theme file hash variables - added to global variables above: $plugin_hashes, $theme_hashes
|
94 |
+
if ( file_exists( WP_CONTENT_DIR . '/bps-backup/plugin-hashes/plugin-hashes.php' ) ) {
|
95 |
+
require_once WP_CONTENT_DIR . '/bps-backup/plugin-hashes/plugin-hashes.php';
|
96 |
+
}
|
97 |
+
if ( file_exists( WP_CONTENT_DIR . '/bps-backup/theme-hashes/theme-hashes.php' ) ) {
|
98 |
+
require_once WP_CONTENT_DIR . '/bps-backup/theme-hashes/theme-hashes.php';
|
99 |
+
}
|
100 |
// MScan AJAX functions
|
101 |
+
require_once WP_PLUGIN_DIR . '/bulletproof-security/includes/mscan-ajax-functions.php';
|
102 |
// BPS HUD Dimiss functions - includes AutoFix AutoSetup checks
|
103 |
+
require_once WP_PLUGIN_DIR . '/bulletproof-security/includes/hud-autofix-setup.php';
|
104 |
// BPS HUD Dimiss functions - includes AutoFix AutoWhitelist checks
|
105 |
+
require_once WP_PLUGIN_DIR . '/bulletproof-security/includes/hud-autofix-whitelist.php';
|
106 |
// BPS HUD Dimiss functions - General Error Checks & Misc checks
|
107 |
+
require_once WP_PLUGIN_DIR . '/bulletproof-security/includes/hud-dismiss-functions.php';
|
108 |
// BPS Zip & Email Log File Cron functions
|
109 |
+
require_once WP_PLUGIN_DIR . '/bulletproof-security/includes/zip-email-cron-functions.php';
|
110 |
// General functions
|
111 |
+
require_once WP_PLUGIN_DIR . '/bulletproof-security/includes/general-functions.php';
|
112 |
// BPS Login Security
|
113 |
+
require_once WP_PLUGIN_DIR . '/bulletproof-security/includes/login-security.php';
|
114 |
// BPS Force Strong Passwords
|
115 |
+
require_once WP_PLUGIN_DIR . '/bulletproof-security/includes/force-strong-passwords.php';
|
116 |
// BPS DB Backup
|
117 |
+
require_once WP_PLUGIN_DIR . '/bulletproof-security/includes/db-security.php';
|
118 |
// BPS Hidden Plugin Folders|Files (HPF) Cron
|
119 |
+
require_once WP_PLUGIN_DIR . '/bulletproof-security/includes/hidden-plugin-folders-cron.php';
|
120 |
// Idle Session Logout (ISL)
|
121 |
$BPS_ISL_options = get_option('bulletproof_security_options_idle_session');
|
122 |
if ( isset( $BPS_ISL_options['bps_isl'] ) && $BPS_ISL_options['bps_isl'] == 'On' ) {
|
123 |
+
require_once WP_PLUGIN_DIR . '/bulletproof-security/includes/idle-session-logout.php';
|
124 |
}
|
125 |
// PHP Encryption|Decryption class using openssl_decrypt() and openssl_encrypt()
|
126 |
// Web hosts may see this file as malicious and block or delete it. So a file_exists check needs to be here.
|
127 |
$bpsPro_encrypt_decrypt_class = WP_PLUGIN_DIR . '/bulletproof-security/includes/encrypt-decrypt-class.php';
|
128 |
if ( file_exists ( $bpsPro_encrypt_decrypt_class ) ) {
|
129 |
+
require_once WP_PLUGIN_DIR . '/bulletproof-security/includes/encrypt-decrypt-class.php';
|
130 |
}
|
131 |
|
132 |
// If in single site Admin Dashboard
|
133 |
if ( is_admin() ) {
|
134 |
|
135 |
+
require_once WP_PLUGIN_DIR . '/bulletproof-security/admin/includes/admin.php';
|
136 |
|
137 |
register_activation_hook(__FILE__, 'bulletproof_security_install');
|
138 |
register_deactivation_hook(__FILE__, 'bulletproof_security_deactivation');
|
includes/functions.php
CHANGED
@@ -819,7 +819,7 @@ function bpsProMScanStatus() {
|
|
819 |
</style>
|
820 |
|
821 |
<?php
|
822 |
-
$bps_question_mark_mscan = '<div class="mscan-tooltip"><img src="'.plugins_url('/bulletproof-security/admin/images/question-mark.png').'" style="position:relative;top:3px;right:1px;" /><span>An MScan scan has not been run yet
|
823 |
|
824 |
if ( ! isset($MScan_status['bps_mscan_status']) || ! isset($MScan_status['bps_mscan_last_scan_timestamp']) ) {
|
825 |
$text = '<div id="bps-status-display" style="float:left;font-weight:600;margin:-2px 0px 0px 0px;">' . $aitpro_bullet . '<a href="'.admin_url( 'admin.php?page=bulletproof-security/admin/mscan/mscan.php' ).'" title="MScan Malware Scanner" style="text-decoration:none;">'.esc_attr__('MSCAN', 'bulletproof-security').'</a>: '.$bps_question_mark_mscan.'</div>';
|
819 |
</style>
|
820 |
|
821 |
<?php
|
822 |
+
$bps_question_mark_mscan = '<div class="mscan-tooltip"><img src="'.plugins_url('/bulletproof-security/admin/images/question-mark.png').'" style="position:relative;top:3px;right:1px;" /><span>An MScan scan has not been run yet.</span></div>';
|
823 |
|
824 |
if ( ! isset($MScan_status['bps_mscan_status']) || ! isset($MScan_status['bps_mscan_last_scan_timestamp']) ) {
|
825 |
$text = '<div id="bps-status-display" style="float:left;font-weight:600;margin:-2px 0px 0px 0px;">' . $aitpro_bullet . '<a href="'.admin_url( 'admin.php?page=bulletproof-security/admin/mscan/mscan.php' ).'" title="MScan Malware Scanner" style="text-decoration:none;">'.esc_attr__('MSCAN', 'bulletproof-security').'</a>: '.$bps_question_mark_mscan.'</div>';
|
includes/general-functions.php
CHANGED
@@ -912,14 +912,18 @@ function bpsPro_mu_tools_plugin_copy() {
|
|
912 |
// This function is run in the BPS upgrade function and in the Setup Wizard ONLY.
|
913 |
function bpsPro_presave_mscan_options() {
|
914 |
|
915 |
-
$
|
916 |
-
$
|
917 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
918 |
if ( is_dir($source) ) {
|
919 |
|
920 |
-
$MScan_options = get_option('bulletproof_security_options_MScan');
|
921 |
$iterator = new DirectoryIterator($source);
|
922 |
-
$dir_array = array();
|
923 |
|
924 |
foreach ( $iterator as $files ) {
|
925 |
try {
|
@@ -930,102 +934,179 @@ function bpsPro_presave_mscan_options() {
|
|
930 |
}
|
931 |
}
|
932 |
} catch (RuntimeException $e) {
|
933 |
-
|
934 |
}
|
935 |
}
|
|
|
|
|
|
|
|
|
936 |
|
937 |
-
|
938 |
-
|
939 |
-
|
940 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
941 |
|
942 |
-
|
943 |
-
|
944 |
-
|
|
|
|
|
|
|
945 |
|
946 |
-
|
947 |
-
|
948 |
-
// This is not a mistake. See the else condition.
|
949 |
-
if ( ! empty($MScan_options['bps_mscan_dirs']) ) {
|
950 |
-
|
951 |
-
$mscan_dirs_options_inner_array = array();
|
952 |
-
|
953 |
-
foreach ( $MScan_options['bps_mscan_dirs'] as $key => $value ) {
|
954 |
-
$mscan_dirs_options_inner_array[$key] = $value;
|
955 |
}
|
956 |
-
|
957 |
-
|
958 |
-
$mscan_diff_key_dir = array_diff_key($mscan_actual_dirs, $mscan_dirs_options_inner_array);
|
959 |
-
|
960 |
-
// get old dirs that still exist in the bps_mscan_dirs db option. ie a dir has been deleted.
|
961 |
-
$mscan_diff_key_options = array_diff_key($mscan_dirs_options_inner_array, $dir_flip);
|
962 |
|
963 |
-
|
|
|
964 |
|
965 |
-
|
966 |
-
|
967 |
-
|
968 |
|
969 |
-
|
970 |
-
|
971 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
972 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
973 |
} else {
|
974 |
-
|
975 |
-
// merge any new dirs found
|
976 |
-
$mscan_array_merge = array_merge( $mscan_diff_key_dir, $mscan_dirs_options_inner_array );
|
977 |
-
ksort($mscan_array_merge);
|
978 |
}
|
979 |
-
|
980 |
-
} else {
|
981 |
-
$mscan_array_merge = $mscan_actual_dirs;
|
982 |
-
ksort($mscan_array_merge);
|
983 |
}
|
984 |
-
|
985 |
-
$mscan_max_file_size = ! isset($MScan_options['mscan_max_file_size']) ? '400' : $MScan_options['mscan_max_file_size'];
|
986 |
-
$mscan_max_time_limit = ! isset($MScan_options['mscan_max_time_limit']) ? '300' : $MScan_options['mscan_max_time_limit'];
|
987 |
-
$mscan_scan_database = ! isset($MScan_options['mscan_scan_database']) ? 'On' : $MScan_options['mscan_scan_database'];
|
988 |
-
$mscan_scan_images = ! isset($MScan_options['mscan_scan_images']) ? 'Off' : $MScan_options['mscan_scan_images'];
|
989 |
-
$mscan_scan_skipped_files = ! isset($MScan_options['mscan_scan_skipped_files']) ? 'Off' : $MScan_options['mscan_scan_skipped_files'];
|
990 |
-
$mscan_scan_delete_tmp_files = ! isset($MScan_options['mscan_scan_delete_tmp_files']) ? 'Off' : $MScan_options['mscan_scan_delete_tmp_files'];
|
991 |
-
$mscan_scan_frequency = ! isset($MScan_options['mscan_scan_frequency']) ? 'Off' : $MScan_options['mscan_scan_frequency'];
|
992 |
-
$mscan_exclude_dirs = ! isset($MScan_options['mscan_exclude_dirs']) ? '' : $MScan_options['mscan_exclude_dirs'];
|
993 |
-
$mscan_exclude_tmp_files = ! isset($MScan_options['mscan_exclude_tmp_files']) ? '' : $MScan_options['mscan_exclude_tmp_files'];
|
994 |
-
|
995 |
-
$MS_Options = array(
|
996 |
-
'bps_mscan_dirs' => $mscan_array_merge,
|
997 |
-
'mscan_max_file_size' => $mscan_max_file_size,
|
998 |
-
'mscan_max_time_limit' => $mscan_max_time_limit,
|
999 |
-
'mscan_scan_database' => $mscan_scan_database,
|
1000 |
-
'mscan_scan_images' => $mscan_scan_images,
|
1001 |
-
'mscan_scan_skipped_files' => $mscan_scan_skipped_files,
|
1002 |
-
'mscan_scan_delete_tmp_files' => $mscan_scan_delete_tmp_files,
|
1003 |
-
'mscan_scan_frequency' => $mscan_scan_frequency,
|
1004 |
-
'mscan_exclude_dirs' => $mscan_exclude_dirs,
|
1005 |
-
'mscan_exclude_tmp_files' => $mscan_exclude_tmp_files
|
1006 |
-
);
|
1007 |
-
|
1008 |
-
$mscan_successMessage = __(' DB Option created or updated Successfully!', 'bulletproof-security');
|
1009 |
-
$mscan_dir_successMessage = __(' Hosting Account Root Folder Option setup or updated Successfully!', 'bulletproof-security');
|
1010 |
-
$successTextBegin = '<font color="green"><strong>';
|
1011 |
-
$successTextEnd = '</strong></font><br>';
|
1012 |
|
1013 |
-
|
1014 |
-
|
1015 |
-
|
1016 |
-
|
1017 |
-
|
|
|
|
|
|
|
|
|
|
|
1018 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1019 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1020 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1021 |
if ( esc_html($_SERVER['QUERY_STRING']) == 'page=bulletproof-security/admin/wizard/wizard.php' ) {
|
1022 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1023 |
|
1024 |
-
|
1025 |
-
|
1026 |
-
foreach ( $MScan_options['bps_mscan_dirs'] as $key => $value ) {
|
1027 |
-
//echo $successTextBegin.$key.$mscan_dir_successMessage.$successTextEnd;
|
1028 |
-
}
|
1029 |
}
|
1030 |
}
|
1031 |
}
|
@@ -1182,6 +1263,16 @@ function bpsPro_new_version_db_options_files_autoupdate() {
|
|
1182 |
|
1183 |
$user_id = $current_user->ID;
|
1184 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1185 |
// 4.6: New Feature: Force Strong Passwords: Pre-save option settings
|
1186 |
if ( ! get_option('bulletproof_security_options_fsp') ) {
|
1187 |
|
@@ -1371,7 +1462,7 @@ function bpsPro_new_version_db_options_files_autoupdate() {
|
|
1371 |
// 4.3: delete the Dismiss Notice DB option: bps_ignore_autoupdate_notice
|
1372 |
bpsPro_mu_tools_plugin_copy();
|
1373 |
delete_user_meta($user_id, 'bps_ignore_autoupdate_notice');
|
1374 |
-
// 2.4: Pre-save MScan Options
|
1375 |
bpsPro_presave_mscan_options();
|
1376 |
|
1377 |
// 2.4: Pre-save MScan Log option
|
912 |
// This function is run in the BPS upgrade function and in the Setup Wizard ONLY.
|
913 |
function bpsPro_presave_mscan_options() {
|
914 |
|
915 |
+
$MScan_options = get_option('bulletproof_security_options_MScan');
|
916 |
+
$wp_abspath_forward_slashes = str_replace( '\\', '/', ABSPATH );
|
917 |
+
$wp_install_folder = str_replace( array( get_home_path(), '/', ), "", $wp_abspath_forward_slashes );
|
918 |
+
$wp_includes_forward_slashes = $wp_abspath_forward_slashes . WPINC;
|
919 |
+
$wp_includes_folder = str_replace( $wp_abspath_forward_slashes, "", $wp_includes_forward_slashes );
|
920 |
+
|
921 |
+
$source = $wp_abspath_forward_slashes;
|
922 |
+
$dir_array = array();
|
923 |
+
|
924 |
if ( is_dir($source) ) {
|
925 |
|
|
|
926 |
$iterator = new DirectoryIterator($source);
|
|
|
927 |
|
928 |
foreach ( $iterator as $files ) {
|
929 |
try {
|
934 |
}
|
935 |
}
|
936 |
} catch (RuntimeException $e) {
|
937 |
+
|
938 |
}
|
939 |
}
|
940 |
+
}
|
941 |
+
|
942 |
+
$get_home_path = get_home_path();
|
943 |
+
$home_dir_array = array();
|
944 |
|
945 |
+
if ( $wp_abspath_forward_slashes != $get_home_path ) {
|
946 |
+
|
947 |
+
if ( is_dir($get_home_path) ) {
|
948 |
+
|
949 |
+
$iterator = new DirectoryIterator($get_home_path);
|
950 |
+
|
951 |
+
foreach ( $iterator as $files ) {
|
952 |
+
try {
|
953 |
+
if ( $files->isDir() && ! $files->isDot() ) {
|
954 |
+
|
955 |
+
if ( $wp_install_folder != $files->getFilename() && $bps_wpcontent_dir != $files->getFilename() && $wp_includes_folder != $files->getFilename() && 'wp-admin' != $files->getFilename()) {
|
956 |
|
957 |
+
if ( ! empty( $files ) ) {
|
958 |
+
$home_dir_array[] = $files->getFilename();
|
959 |
+
}
|
960 |
+
}
|
961 |
+
}
|
962 |
+
} catch (RuntimeException $e) {
|
963 |
|
964 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
965 |
}
|
966 |
+
}
|
967 |
+
}
|
|
|
|
|
|
|
|
|
968 |
|
969 |
+
$dir_array_merge = array_merge($dir_array, $home_dir_array);
|
970 |
+
$dir_flip = array_flip($dir_array_merge);
|
971 |
|
972 |
+
// replace values in all dirs found except for other WP site folders.
|
973 |
+
$mscan_actual_dirs = array();
|
974 |
+
$pattern = '/define\((\s|)\'WP_USE_THEMES/';
|
975 |
|
976 |
+
foreach ( $dir_flip as $key => $value ) {
|
977 |
+
|
978 |
+
$wp_index_file = $source . $key . '/index.php';
|
979 |
+
$wp_blog_header_file = $source . $key . '/wp-blog-header.php';
|
980 |
+
$wp_cron_file = $source . $key . '/wp-cron.php';
|
981 |
+
$wp_load_file = $source . $key . '/wp-load.php';
|
982 |
+
$wp_login_file = $source . $key . '/wp-login.php';
|
983 |
+
$wp_settings_file = $source . $key . '/wp-settings.php';
|
984 |
+
|
985 |
+
$home_wp_index_file = $get_home_path . $key . '/index.php';
|
986 |
+
$home_wp_blog_header_file = $get_home_path . $key . '/wp-blog-header.php';
|
987 |
+
$home_wp_cron_file = $get_home_path . $key . '/wp-cron.php';
|
988 |
+
$home_wp_load_file = $get_home_path . $key . '/wp-load.php';
|
989 |
+
$home_wp_login_file = $get_home_path . $key . '/wp-login.php';
|
990 |
+
$home_wp_settings_file = $get_home_path . $key . '/wp-settings.php';
|
991 |
+
|
992 |
+
if ( file_exists($wp_index_file) ) {
|
993 |
+
$check_string = file_get_contents($wp_index_file);
|
994 |
+
}
|
995 |
+
|
996 |
+
if ( file_exists($home_wp_index_file) ) {
|
997 |
+
$home_check_string = file_get_contents($home_wp_index_file);
|
998 |
+
}
|
999 |
+
|
1000 |
+
if ( file_exists($wp_index_file) && preg_match( $pattern, $check_string ) && file_exists($wp_blog_header_file) && file_exists($wp_cron_file) && file_exists($wp_load_file) && file_exists($wp_login_file) && file_exists($wp_settings_file) || file_exists($home_wp_index_file) && preg_match( $pattern, $home_check_string ) && file_exists($home_wp_blog_header_file) && file_exists($home_wp_cron_file) && file_exists($home_wp_load_file) && file_exists($home_wp_login_file) && file_exists($home_wp_settings_file) ) {
|
1001 |
+
$mscan_actual_dirs[$key] = preg_replace( '/\d+/', "", $value );
|
1002 |
+
} else {
|
1003 |
+
$mscan_actual_dirs[$key] = preg_replace( '/\d+/', "1", $value );
|
1004 |
+
}
|
1005 |
+
}
|
1006 |
+
|
1007 |
+
// This is not a mistake/redundant. See the else condition.
|
1008 |
+
if ( ! empty($MScan_options['bps_mscan_dirs']) ) {
|
1009 |
|
1010 |
+
$mscan_dirs_options_inner_array = array();
|
1011 |
+
|
1012 |
+
foreach ( $MScan_options['bps_mscan_dirs'] as $key => $value ) {
|
1013 |
+
|
1014 |
+
$wp_index_file = $source . $key . '/index.php';
|
1015 |
+
$home_wp_index_file = $get_home_path . $key . '/index.php';
|
1016 |
+
|
1017 |
+
if ( file_exists($wp_index_file) ) {
|
1018 |
+
$check_string = file_get_contents($wp_index_file);
|
1019 |
+
}
|
1020 |
+
|
1021 |
+
if ( file_exists($home_wp_index_file) ) {
|
1022 |
+
$home_check_string = file_get_contents($home_wp_index_file);
|
1023 |
+
}
|
1024 |
+
|
1025 |
+
if ( file_exists($wp_index_file) && preg_match( $pattern, $check_string ) || file_exists($home_wp_index_file) && preg_match( $pattern, $home_check_string ) ) {
|
1026 |
+
$mscan_dirs_options_inner_array[$key] = '';
|
1027 |
} else {
|
1028 |
+
$mscan_dirs_options_inner_array[$key] = $value;
|
|
|
|
|
|
|
1029 |
}
|
|
|
|
|
|
|
|
|
1030 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1031 |
|
1032 |
+
// get new dirs found that do not exist in the bps_mscan_dirs db option. ie a new dir has been created.
|
1033 |
+
$mscan_diff_key_dir = array_diff_key($mscan_actual_dirs, $mscan_dirs_options_inner_array);
|
1034 |
+
|
1035 |
+
// get old dirs that still exist in the bps_mscan_dirs db option. ie a dir has been deleted.
|
1036 |
+
$mscan_diff_key_options = array_diff_key($mscan_dirs_options_inner_array, $dir_flip);
|
1037 |
+
|
1038 |
+
if ( ! empty($mscan_diff_key_options) ) {
|
1039 |
+
|
1040 |
+
foreach ( $mscan_diff_key_options as $key => $value ) {
|
1041 |
+
unset($mscan_dirs_options_inner_array[$key]);
|
1042 |
}
|
1043 |
+
|
1044 |
+
// merge any new dirs found
|
1045 |
+
$mscan_array_merge = array_merge( $mscan_diff_key_dir, $mscan_dirs_options_inner_array );
|
1046 |
+
ksort($mscan_array_merge);
|
1047 |
+
|
1048 |
+
} else {
|
1049 |
+
|
1050 |
+
// merge any new dirs found
|
1051 |
+
$mscan_array_merge = array_merge( $mscan_diff_key_dir, $mscan_dirs_options_inner_array );
|
1052 |
+
ksort($mscan_array_merge);
|
1053 |
}
|
1054 |
+
|
1055 |
+
} else {
|
1056 |
+
$mscan_array_merge = $mscan_actual_dirs;
|
1057 |
+
ksort($mscan_array_merge);
|
1058 |
+
}
|
1059 |
+
|
1060 |
+
if ( ! isset($MScan_options['mscan_file_size_limit_hidden']) ) {
|
1061 |
+
$mscan_max_file_size = '1000';
|
1062 |
+
$mscan_file_size_limit_hidden = '14';
|
1063 |
+
} else {
|
1064 |
+
$mscan_max_file_size = $MScan_options['mscan_max_file_size'];
|
1065 |
+
$mscan_file_size_limit_hidden = '14';
|
1066 |
+
}
|
1067 |
|
1068 |
+
$mscan_max_time_limit = ! isset($MScan_options['mscan_max_time_limit']) ? '300' : $MScan_options['mscan_max_time_limit'];
|
1069 |
+
$mscan_scan_database = ! isset($MScan_options['mscan_scan_database']) ? 'On' : $MScan_options['mscan_scan_database'];
|
1070 |
+
$mscan_scan_skipped_files = ! isset($MScan_options['mscan_scan_skipped_files']) ? 'Off' : $MScan_options['mscan_scan_skipped_files'];
|
1071 |
+
$mscan_scan_delete_tmp_files = ! isset($MScan_options['mscan_scan_delete_tmp_files']) ? 'Off' : $MScan_options['mscan_scan_delete_tmp_files'];
|
1072 |
+
$mscan_scan_frequency = ! isset($MScan_options['mscan_scan_frequency']) ? 'Off' : $MScan_options['mscan_scan_frequency'];
|
1073 |
+
$mscan_exclude_dirs = ! isset($MScan_options['mscan_exclude_dirs']) ? '' : $MScan_options['mscan_exclude_dirs'];
|
1074 |
+
$mscan_exclude_tmp_files = ! isset($MScan_options['mscan_exclude_tmp_files']) ? '' : $MScan_options['mscan_exclude_tmp_files'];
|
1075 |
+
|
1076 |
+
$MS_Options = array(
|
1077 |
+
'bps_mscan_dirs' => $mscan_array_merge,
|
1078 |
+
'mscan_max_file_size' => $mscan_max_file_size,
|
1079 |
+
'mscan_max_time_limit' => $mscan_max_time_limit,
|
1080 |
+
'mscan_scan_database' => $mscan_scan_database,
|
1081 |
+
'mscan_scan_images' => 'Off',
|
1082 |
+
'mscan_scan_skipped_files' => $mscan_scan_skipped_files,
|
1083 |
+
'mscan_scan_delete_tmp_files' => $mscan_scan_delete_tmp_files,
|
1084 |
+
'mscan_scan_frequency' => $mscan_scan_frequency,
|
1085 |
+
'mscan_exclude_dirs' => $mscan_exclude_dirs,
|
1086 |
+
'mscan_exclude_tmp_files' => $mscan_exclude_tmp_files,
|
1087 |
+
'mscan_file_size_limit_hidden' => $mscan_file_size_limit_hidden
|
1088 |
+
);
|
1089 |
+
|
1090 |
+
$mscan_successMessage = __(' DB Option created or updated Successfully!', 'bulletproof-security');
|
1091 |
+
$mscan_dir_successMessage = __(' Hosting Account Root Folder Option setup or updated Successfully!', 'bulletproof-security');
|
1092 |
+
$successTextBegin = '<font color="green"><strong>';
|
1093 |
+
$successTextEnd = '</strong></font><br>';
|
1094 |
+
|
1095 |
+
foreach( $MS_Options as $key => $value ) {
|
1096 |
+
update_option('bulletproof_security_options_MScan', $MS_Options);
|
1097 |
+
|
1098 |
if ( esc_html($_SERVER['QUERY_STRING']) == 'page=bulletproof-security/admin/wizard/wizard.php' ) {
|
1099 |
+
//echo $successTextBegin.$key.$mscan_successMessage.$successTextEnd;
|
1100 |
+
}
|
1101 |
+
}
|
1102 |
+
|
1103 |
+
if ( esc_html($_SERVER['QUERY_STRING']) == 'page=bulletproof-security/admin/wizard/wizard.php' ) {
|
1104 |
+
$MScan_options = get_option('bulletproof_security_options_MScan');
|
1105 |
+
|
1106 |
+
if ( $MScan_options['bps_mscan_dirs'] != '' ) {
|
1107 |
|
1108 |
+
foreach ( $MScan_options['bps_mscan_dirs'] as $key => $value ) {
|
1109 |
+
//echo $successTextBegin.$key.$mscan_dir_successMessage.$successTextEnd;
|
|
|
|
|
|
|
1110 |
}
|
1111 |
}
|
1112 |
}
|
1263 |
|
1264 |
$user_id = $current_user->ID;
|
1265 |
|
1266 |
+
// 4.8: MScan new feature Dismiss Notice - only displayed to people who have upgraded BPS. Not new installations of BPS.
|
1267 |
+
if ( ! get_option('bulletproof_security_options_new_feature') ) {
|
1268 |
+
|
1269 |
+
$bps_mscan_rebuild = array( 'bps_mscan_rebuild' => 'upgrade' );
|
1270 |
+
|
1271 |
+
foreach( $bps_mscan_rebuild as $key => $value ) {
|
1272 |
+
update_option('bulletproof_security_options_new_feature', $bps_mscan_rebuild);
|
1273 |
+
}
|
1274 |
+
}
|
1275 |
+
|
1276 |
// 4.6: New Feature: Force Strong Passwords: Pre-save option settings
|
1277 |
if ( ! get_option('bulletproof_security_options_fsp') ) {
|
1278 |
|
1462 |
// 4.3: delete the Dismiss Notice DB option: bps_ignore_autoupdate_notice
|
1463 |
bpsPro_mu_tools_plugin_copy();
|
1464 |
delete_user_meta($user_id, 'bps_ignore_autoupdate_notice');
|
1465 |
+
// 2.4|4.8: Pre-save MScan Options
|
1466 |
bpsPro_presave_mscan_options();
|
1467 |
|
1468 |
// 2.4: Pre-save MScan Log option
|
includes/hud-dismiss-functions.php
CHANGED
@@ -29,13 +29,14 @@ function bps_HUD_WP_Dashboard() {
|
|
29 |
bpsPro_BBM_htaccess_check();
|
30 |
bpsPro_hud_speed_boost_cache_code();
|
31 |
//bps_hud_check_autoupdate();
|
32 |
-
bpsPro_hud_mscan_notice();
|
33 |
bpsPro_hud_jtc_lite_notice();
|
34 |
bpsPro_hud_rate_notice();
|
35 |
//bpsPro_hud_mod_security_check();
|
36 |
bpsPro_hud_gdpr_compliance();
|
37 |
//bps_hud_check_public_username();
|
38 |
bpsPro_mu_wp_automatic_updates_notice();
|
|
|
39 |
}
|
40 |
}
|
41 |
add_action('admin_notices', 'bps_HUD_WP_Dashboard');
|
@@ -614,33 +615,6 @@ $user_id = $current_user->ID;
|
|
614 |
}
|
615 |
}
|
616 |
|
617 |
-
// Heads Up Display w/ Dismiss - MScan first run notice
|
618 |
-
function bpsPro_hud_mscan_notice() {
|
619 |
-
|
620 |
-
if ( esc_html($_SERVER['QUERY_STRING']) == 'page=bulletproof-security/admin/mscan/mscan.php' ) {
|
621 |
-
|
622 |
-
global $current_user;
|
623 |
-
$user_id = $current_user->ID;
|
624 |
-
|
625 |
-
if ( ! get_user_meta($user_id, 'bps_ignore_mscan_notice') ) {
|
626 |
-
|
627 |
-
$text = '<div style="background-color:#dfecf2;border:1px solid #999;font-size:1em;font-weight:600;padding:0px 5px;margin:0px 0px 35px 0px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);"><font color="blue">'.__('MScan First Run Notice', 'bulletproof-security').'</font><br>'.__('Please take a few minutes to read the "Basic Info|Recommendations|Limitations|Restrictions" help section in the', 'bulletproof-security').' <a href="https://forum.ait-pro.com/forums/topic/mscan-malware-scanner-guide/" target="_blank" title="MScan Malware Scanner Guide">'.__('MScan Malware Scanner Guide', 'bulletproof-security').'</a> '.__('before running a scan.', 'bulletproof-security').'<br>'.__('It is highly recommended that you use the Scan Time Estimate Tool before running an actual scan. The Scan Time Estimate Tool calculates the total estimated time of a scan based on your MScan Option settings without actually running a scan. To Dismiss this Notice click the Dismiss Notice button below. To Reset Dismiss Notices click the Reset|Recheck Dismiss Notices button on the BPS Custom Code page.', 'bulletproof-security').'<br><div style="float:left;margin:3px 0px 3px 0px;padding:2px 6px 2px 6px;background-color:#e8e8e8;border:1px solid gray;"><a href="'.admin_url( 'admin.php?page=bulletproof-security%2Fadmin%2Fmscan%2Fmscan.php&bps_mscan_nag_ignore=0' ).''.'" style="text-decoration:none;font-weight:bold;">'.__('Dismiss Notice', 'bulletproof-security').'</a></div></div>';
|
628 |
-
echo $text;
|
629 |
-
}
|
630 |
-
}
|
631 |
-
}
|
632 |
-
|
633 |
-
add_action('admin_init', 'bpsPro_mscan_nag_ignore');
|
634 |
-
|
635 |
-
function bpsPro_mscan_nag_ignore() {
|
636 |
-
global $current_user;
|
637 |
-
$user_id = $current_user->ID;
|
638 |
-
|
639 |
-
if ( isset($_GET['bps_mscan_nag_ignore']) && '0' == $_GET['bps_mscan_nag_ignore'] ) {
|
640 |
-
add_user_meta($user_id, 'bps_ignore_mscan_notice', 'true', true);
|
641 |
-
}
|
642 |
-
}
|
643 |
-
|
644 |
// Heads Up Display w/ Dismiss - JTC-Lite New Feature Dismiss Notice
|
645 |
function bpsPro_hud_jtc_lite_notice() {
|
646 |
|
@@ -851,4 +825,49 @@ $user_id = $current_user->ID;
|
|
851 |
}
|
852 |
}
|
853 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
854 |
?>
|
29 |
bpsPro_BBM_htaccess_check();
|
30 |
bpsPro_hud_speed_boost_cache_code();
|
31 |
//bps_hud_check_autoupdate();
|
32 |
+
//bpsPro_hud_mscan_notice();
|
33 |
bpsPro_hud_jtc_lite_notice();
|
34 |
bpsPro_hud_rate_notice();
|
35 |
//bpsPro_hud_mod_security_check();
|
36 |
bpsPro_hud_gdpr_compliance();
|
37 |
//bps_hud_check_public_username();
|
38 |
bpsPro_mu_wp_automatic_updates_notice();
|
39 |
+
bpsPro_hud_new_feature_notice();
|
40 |
}
|
41 |
}
|
42 |
add_action('admin_notices', 'bps_HUD_WP_Dashboard');
|
615 |
}
|
616 |
}
|
617 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
618 |
// Heads Up Display w/ Dismiss - JTC-Lite New Feature Dismiss Notice
|
619 |
function bpsPro_hud_jtc_lite_notice() {
|
620 |
|
825 |
}
|
826 |
}
|
827 |
|
828 |
+
// Heads Up Display w/ Dismiss - New feature or option Dismiss Notice - Used for very important new features and very rarely.
|
829 |
+
function bpsPro_hud_new_feature_notice() {
|
830 |
+
|
831 |
+
if ( ! get_option('bulletproof_security_options_new_feature') ) {
|
832 |
+
return;
|
833 |
+
}
|
834 |
+
|
835 |
+
$new_feature_options = get_option('bulletproof_security_options_new_feature');
|
836 |
+
|
837 |
+
if ( $new_feature_options['bps_mscan_rebuild'] == 'new' ) {
|
838 |
+
return;
|
839 |
+
}
|
840 |
+
|
841 |
+
if ( $new_feature_options['bps_mscan_rebuild'] == 'upgrade' ) {
|
842 |
+
|
843 |
+
global $current_user;
|
844 |
+
$options = get_option('bulletproof_security_options_monitor');
|
845 |
+
$user_id = $current_user->ID;
|
846 |
+
|
847 |
+
if ( ! get_user_meta($user_id, 'bpsPro_hud_new_feature_notice') ) {
|
848 |
+
|
849 |
+
if ( esc_html($_SERVER['QUERY_STRING']) == '' && basename(esc_html($_SERVER['REQUEST_URI'])) != 'wp-admin' ) {
|
850 |
+
$bps_base = basename(esc_html($_SERVER['REQUEST_URI'])) . '?';
|
851 |
+
} elseif ( esc_html($_SERVER['QUERY_STRING']) == '' && basename(esc_html($_SERVER['REQUEST_URI'])) == 'wp-admin' ) {
|
852 |
+
$bps_base = basename( str_replace( 'wp-admin', 'index.php?', esc_html($_SERVER['REQUEST_URI'])));
|
853 |
+
} else {
|
854 |
+
$bps_base = str_replace( admin_url(), '', esc_html($_SERVER['REQUEST_URI']) ) . '&';
|
855 |
+
}
|
856 |
+
|
857 |
+
$text = '<div class="update-nag" style="background-color:#dfecf2;border:1px solid #999;font-size:1em;font-weight:600;padding:2px 5px;margin-top:2px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);-moz-box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);box-shadow: 3px 3px 5px -1px rgba(153,153,153,0.7);"><font color="blue">'.__('MScan 2.0 Rebuild Notice', 'bulletproof-security').'</font><br>'.__('MScan has been completely rebuilt. MScan 2.0 is faster, very accurate and user friendly. ', 'bulletproof-security').'<br><a href="'.admin_url( 'admin.php?page=bulletproof-security/admin/mscan/mscan.php' ).'">'.__('Check out MScan 2.0', 'bulletproof-security').'</a>.'.__(' Recommendation: Click the Reset MScan button before running a new scan.', 'bulletproof-security').'<br>'.__('To Dismiss this Notice click the Dismiss Notice button below. To Reset Dismiss Notices click the Reset|Recheck Dismiss Notices button on the BPS Custom Code page.', 'bulletproof-security').'<br><div style="float:left;margin:3px 0px 3px 0px;padding:2px 6px 2px 6px;background-color:#e8e8e8;border:1px solid gray;"><a href="'.$bps_base.'bpsPro_new_feature_nag_ignore=0'.'" style="text-decoration:none;font-weight:bold;">'.__('Dismiss Notice', 'bulletproof-security').'</a></div></div>';
|
858 |
+
echo $text;
|
859 |
+
}
|
860 |
+
}
|
861 |
+
}
|
862 |
+
|
863 |
+
add_action('admin_init', 'bpsPro_new_feature_nag_ignore');
|
864 |
+
|
865 |
+
function bpsPro_new_feature_nag_ignore() {
|
866 |
+
global $current_user;
|
867 |
+
$user_id = $current_user->ID;
|
868 |
+
|
869 |
+
if ( isset($_GET['bpsPro_new_feature_nag_ignore']) && '0' == $_GET['bpsPro_new_feature_nag_ignore'] ) {
|
870 |
+
add_user_meta($user_id, 'bpsPro_hud_new_feature_notice', 'true', true);
|
871 |
+
}
|
872 |
+
}
|
873 |
?>
|
includes/mscan-ajax-functions.php
CHANGED
@@ -18,7 +18,7 @@ if ( file_exists($filename) ) {
|
|
18 |
}
|
19 |
|
20 |
## MScan manual AJAX scan
|
21 |
-
## See malware-scanner.php for extensive notes
|
22 |
function bpsPro_mscan_scan_processing() {
|
23 |
|
24 |
if ( isset( $_POST['post_var'] ) && $_POST['post_var'] == 'bps_mscan' ) {
|
@@ -30,11 +30,27 @@ function bpsPro_mscan_scan_processing() {
|
|
30 |
$mstime = ! isset($MScan_options['mscan_max_time_limit']) ? '300' : $MScan_options['mscan_max_time_limit'];
|
31 |
ini_set('max_execution_time', $mstime);
|
32 |
|
|
|
|
|
|
|
|
|
33 |
if ( bpsPro_mscan_calculate_scan_time($mstime) == true ) {
|
34 |
if ( bpsPro_wp_zip_download($mstime) == true ) {
|
35 |
if ( bpsPro_wp_zip_extractor() == true ) {
|
36 |
if ( bpsPro_wp_hash_maker() == true ) {
|
37 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
}
|
39 |
}
|
40 |
}
|
@@ -45,6 +61,7 @@ function bpsPro_mscan_scan_processing() {
|
|
45 |
|
46 |
add_action('wp_ajax_bps_mscan_scan_processing', 'bpsPro_mscan_scan_processing');
|
47 |
|
|
|
48 |
function bpsPro_mscan_scan_estimate() {
|
49 |
|
50 |
if ( isset( $_POST['post_var'] ) && $_POST['post_var'] == 'bps_mscan_estimate' ) {
|
@@ -56,6 +73,7 @@ function bpsPro_mscan_scan_estimate() {
|
|
56 |
$mstime = ! isset($MScan_options['mscan_max_time_limit']) ? '300' : $MScan_options['mscan_max_time_limit'];
|
57 |
ini_set('max_execution_time', $mstime);
|
58 |
|
|
|
59 |
if ( bpsPro_mscan_calculate_scan_time($mstime) == true ) {
|
60 |
|
61 |
$MScan_status = get_option('bulletproof_security_options_MScan_status');
|
@@ -68,16 +86,18 @@ function bpsPro_mscan_scan_estimate() {
|
|
68 |
'bps_mscan_status' => '5',
|
69 |
'bps_mscan_last_scan_timestamp' => $MScan_status['bps_mscan_last_scan_timestamp'],
|
70 |
'bps_mscan_total_time' => $MScan_status['bps_mscan_total_time'],
|
71 |
-
'bps_mscan_total_website_files' =>
|
72 |
'bps_mscan_total_wp_core_files' => $MScan_status['bps_mscan_total_wp_core_files'],
|
73 |
'bps_mscan_total_non_image_files' => $MScan_status['bps_mscan_total_non_image_files'],
|
74 |
-
'bps_mscan_total_image_files' =>
|
75 |
'bps_mscan_total_all_scannable_files' => $MScan_status['bps_mscan_total_all_scannable_files'],
|
76 |
'bps_mscan_total_skipped_files' => $MScan_status['bps_mscan_total_skipped_files'],
|
77 |
'bps_mscan_total_suspect_files' => $MScan_status['bps_mscan_total_suspect_files'],
|
78 |
'bps_mscan_suspect_skipped_files' => $MScan_status['bps_mscan_suspect_skipped_files'],
|
79 |
'bps_mscan_total_suspect_db' => $MScan_status['bps_mscan_total_suspect_db'],
|
80 |
-
'bps_mscan_total_ignored_files' => $MScan_status['bps_mscan_total_ignored_files']
|
|
|
|
|
81 |
);
|
82 |
|
83 |
foreach( $MScan_status_db as $key => $value ) {
|
@@ -90,27 +110,37 @@ function bpsPro_mscan_scan_estimate() {
|
|
90 |
|
91 |
add_action('wp_ajax_bps_mscan_scan_estimate', 'bpsPro_mscan_scan_estimate');
|
92 |
|
|
|
93 |
class BPSMScanRecursiveFilterIterator extends RecursiveFilterIterator {
|
94 |
|
95 |
public function accept() {
|
96 |
$MScan_options = get_option('bulletproof_security_options_MScan');
|
97 |
$excluded_dirs = array();
|
|
|
|
|
|
|
98 |
|
99 |
foreach ( $MScan_options['bps_mscan_dirs'] as $key => $value ) {
|
100 |
if ( $value == '' ) {
|
101 |
$excluded_dirs[] = $key;
|
|
|
102 |
}
|
103 |
}
|
104 |
-
|
|
|
|
|
|
|
105 |
}
|
106 |
}
|
107 |
|
|
|
108 |
function bpsPro_mscan_calculate_scan_time($mstime) {
|
109 |
-
global $wp_version, $wpdb;
|
110 |
|
111 |
$time_start = microtime( true );
|
112 |
|
113 |
$MScan_options = get_option('bulletproof_security_options_MScan');
|
|
|
114 |
$mstime = ! isset($MScan_options['mscan_max_time_limit']) ? '300' : $MScan_options['mscan_max_time_limit'];
|
115 |
|
116 |
set_time_limit($mstime);
|
@@ -124,6 +154,7 @@ global $wp_version, $wpdb;
|
|
124 |
$handle = fopen( $mscan_log, 'a' );
|
125 |
|
126 |
fwrite( $handle, "\r\n[MScan Scan Start: $timestamp]\r\n" );
|
|
|
127 |
fwrite( $handle, "Scan Time Calculation: Start Count total files to scan.\r\n" );
|
128 |
|
129 |
if ( $MScan_options['mscan_scan_skipped_files'] == 'On' ) {
|
@@ -133,7 +164,16 @@ global $wp_version, $wpdb;
|
|
133 |
}
|
134 |
|
135 |
$bps_wpcontent_dir = str_replace( ABSPATH, '', WP_CONTENT_DIR );
|
136 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
137 |
|
138 |
if ( is_dir($source) ) {
|
139 |
|
@@ -141,13 +181,15 @@ global $wp_version, $wpdb;
|
|
141 |
$filterItr = new BPSMScanRecursiveFilterIterator($dirItr);
|
142 |
$iterator = new RecursiveIteratorIterator($filterItr, RecursiveIteratorIterator::SELF_FIRST);
|
143 |
|
144 |
-
$image_file_path_array = array();
|
145 |
$file_path_array = array();
|
146 |
$wp_core_file_array = array();
|
147 |
-
|
148 |
$skipped_image_file_path_array = array();
|
149 |
$skipped_nonimage_file_path_array = array();
|
150 |
|
|
|
|
|
|
|
151 |
$wp_core_root_file_array = array( 'wp-activate.php', 'wp-blog-header.php', 'wp-comments-post.php', 'wp-config-sample.php', 'wp-cron.php', 'wp-links-opml.php', 'wp-load.php', 'wp-login.php', 'wp-mail.php', 'wp-settings.php', 'wp-signup.php', 'wp-trackback.php' );
|
152 |
|
153 |
foreach ( $iterator as $files ) {
|
@@ -162,13 +204,14 @@ global $wp_version, $wpdb;
|
|
162 |
|
163 |
} else {
|
164 |
|
165 |
-
if ( ! preg_match( '/(.*)((\/|\\\)'.$bps_wpcontent_dir.'(\/|\\\)bps-backup(\/|\\\))(.*)/', $files->getPathname() ) ) {
|
166 |
|
167 |
-
|
168 |
|
169 |
if ( $files->getFilename() == 'index.php' ) {
|
|
|
170 |
$check_string1 = file_get_contents( $files->getPath() . '/index.php' );
|
171 |
-
$pos1 =
|
172 |
}
|
173 |
|
174 |
if ( $files->getFilename() == 'readme.html' ) {
|
@@ -203,6 +246,10 @@ global $wp_version, $wpdb;
|
|
203 |
$exclude_dirs_pattern = '/(\/bps-no-dirs\/)/';
|
204 |
}
|
205 |
|
|
|
|
|
|
|
|
|
206 |
$core_pattern = '/(.*)((\/|\\\)wp-admin(\/|\\\)|(\/|\\\)wp-includes(\/|\\\))(.*)/';
|
207 |
|
208 |
if ( preg_match( $core_pattern, $files->getPathname() ) || $files->getFilename() == 'index.php' && $pos1 !== false || $files->getFilename() == 'readme.html' && $pos2 !== false || $files->getFilename() == 'xmlrpc.php' && $pos3 !== false || in_array($files->getFilename(), $wp_core_root_file_array) ) {
|
@@ -215,27 +262,13 @@ global $wp_version, $wpdb;
|
|
215 |
|
216 |
if ( $files->getSize() <= $MScan_options['mscan_max_file_size'] * 1024 ) {
|
217 |
|
218 |
-
if ( $
|
219 |
-
|
220 |
-
if ( $ext == 'png' || $ext == 'gif' || $ext == 'bmp' || $ext == 'jpg' || $ext == 'jpeg' || $ext == 'tif' || $ext == 'tiff' ) {
|
221 |
-
$image_file_path_array[] = $files->getPathname();
|
222 |
-
}
|
223 |
-
}
|
224 |
-
|
225 |
-
if ( $ext == 'htm' || $ext == 'html' || $ext == 'htaccess' || $ext == 'js' || $ext == 'php' || $ext == 'phps' || $ext == 'php5' || $ext == 'php4' || $ext == 'php3' || $ext == 'phtml' || $ext == 'phpt' || $ext == 'shtm' || $ext == 'shtml' || $ext == 'xhtml' ) {
|
226 |
$file_path_array[] = $files->getPathname();
|
227 |
}
|
228 |
|
229 |
} else {
|
230 |
|
231 |
-
if ( $
|
232 |
-
|
233 |
-
if ( $ext == 'png' || $ext == 'gif' || $ext == 'bmp' || $ext == 'jpg' || $ext == 'jpeg' || $ext == 'tif' || $ext == 'tiff' ) {
|
234 |
-
$skipped_image_file_path_array[] = $files->getPathname();
|
235 |
-
}
|
236 |
-
}
|
237 |
-
|
238 |
-
if ( $ext == 'htm' || $ext == 'html' || $ext == 'htaccess' || $ext == 'js' || $ext == 'php' || $ext == 'phps' || $ext == 'php5' || $ext == 'php4' || $ext == 'php3' || $ext == 'phtml' || $ext == 'phpt' || $ext == 'shtm' || $ext == 'shtml' || $ext == 'xhtml' ) {
|
239 |
$skipped_nonimage_file_path_array[] = $files->getPathname();
|
240 |
}
|
241 |
}
|
@@ -244,14 +277,11 @@ global $wp_version, $wpdb;
|
|
244 |
}
|
245 |
}
|
246 |
} catch (RuntimeException $e) {
|
247 |
-
|
248 |
}
|
249 |
}
|
250 |
|
251 |
-
|
252 |
-
//sleep(20);
|
253 |
-
|
254 |
-
$skipped_file_path_array = array_merge($skipped_image_file_path_array, $skipped_nonimage_file_path_array);
|
255 |
|
256 |
$MStable = $wpdb->prefix . "bpspro_mscan";
|
257 |
|
@@ -281,9 +311,9 @@ global $wp_version, $wpdb;
|
|
281 |
foreach ( $file_path_array as $key => $value ) {
|
282 |
|
283 |
if ( preg_match( '/index\.php/', $value ) ) {
|
|
|
284 |
$check_string4 = file_get_contents( $value );
|
285 |
-
|
286 |
-
if ( $pos4 !== false ) {
|
287 |
unset($file_path_array[$key]);
|
288 |
}
|
289 |
}
|
@@ -309,27 +339,90 @@ global $wp_version, $wpdb;
|
|
309 |
}
|
310 |
}
|
311 |
|
312 |
-
foreach ( $
|
313 |
|
314 |
if ( in_array( $value, $mscan_file_ignore_array ) ) {
|
315 |
-
unset($
|
316 |
}
|
317 |
}
|
318 |
|
319 |
-
|
|
|
|
|
320 |
|
321 |
-
if (
|
322 |
-
|
323 |
-
}
|
324 |
}
|
325 |
|
326 |
-
$file_array_merge = array_merge( $wp_core_file_array, $file_path_array, $image_file_path_array );
|
327 |
-
$total_file_count = count($total_website_files_array);
|
328 |
$total_wp_core_files = count($wp_core_file_array);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
329 |
$total_non_image_files = count($file_path_array);
|
330 |
-
$total_image_files = count($image_file_path_array);
|
331 |
$total_skipped_files = count($skipped_file_path_array);
|
332 |
-
$total_scan_files =
|
333 |
|
334 |
if ( $MScan_options['mscan_scan_skipped_files'] == 'On' ) {
|
335 |
|
@@ -337,28 +430,27 @@ global $wp_version, $wpdb;
|
|
337 |
|
338 |
} else {
|
339 |
|
340 |
-
fwrite( $handle, "Scan Time Calculation: Total Website Files: ".$total_file_count."\r\n" );
|
341 |
fwrite( $handle, "Scan Time Calculation: Total Skipped Files (larger than ".$MScan_options['mscan_max_file_size']." KB): ".$total_skipped_files."\r\n" );
|
342 |
fwrite( $handle, "Scan Time Calculation: Total WP Core Files to Scan: ".$total_wp_core_files."\r\n" );
|
343 |
-
fwrite( $handle, "Scan Time Calculation: Total
|
344 |
-
fwrite( $handle, "Scan Time Calculation: Total
|
345 |
-
fwrite( $handle, "Scan Time Calculation: Total
|
|
|
346 |
}
|
347 |
|
348 |
if ( $MScan_options['bps_mscan_dirs'] != '' ) {
|
349 |
|
350 |
-
$mscan_dirs_array = array();
|
351 |
-
|
352 |
-
foreach ( $MScan_options['bps_mscan_dirs'] as $key => $value ) {
|
353 |
-
if ( $value == '1' ) {
|
354 |
-
$mscan_dirs_array[] = $key;
|
355 |
-
}
|
356 |
-
}
|
357 |
-
|
358 |
$mscan_dirs = implode( ', ', $mscan_dirs_array );
|
359 |
-
fwrite( $handle, "Scan Time Calculation:
|
360 |
}
|
361 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
362 |
$wp_hashes_file = WP_CONTENT_DIR . '/bps-backup/wp-hashes/wp-hashes.php';
|
363 |
$wp_hash_time = '0';
|
364 |
|
@@ -366,12 +458,97 @@ global $wp_version, $wpdb;
|
|
366 |
$check_string = file_get_contents($wp_hashes_file);
|
367 |
|
368 |
if ( ! strpos( $check_string, "WordPress $wp_version Hashes" ) ) {
|
369 |
-
$wp_hash_time = '
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
370 |
}
|
371 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
372 |
|
373 |
-
|
374 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
375 |
if ( $MScan_options['mscan_scan_skipped_files'] == 'On' ) {
|
376 |
|
377 |
$filesize_array = array();
|
@@ -383,29 +560,38 @@ global $wp_version, $wpdb;
|
|
383 |
}
|
384 |
}
|
385 |
|
386 |
-
$base_scan_time = '20';
|
387 |
$total_filesize_bytes = array_sum($filesize_array);
|
388 |
$mbytes = number_format( $total_filesize_bytes / ( 1024 * 1024 ), 2 );
|
389 |
$skipped_files_time_math = $mbytes * 1.15;
|
390 |
$total_time_estimate = round($skipped_files_time_math);
|
391 |
|
392 |
-
|
393 |
-
$bps_mscan_time_remaining = time() + $wp_hash_time + $total_time_estimate;
|
394 |
|
395 |
-
//fwrite( $handle, "Scan Time Calculation: Base Scan Time (PHP Native cache variance): +".$base_scan_time." Seconds\r\n" );
|
396 |
fwrite( $handle, "Scan Time Calculation: Total Size of all Skipped Files: ".$mbytes." MB\r\n" );
|
397 |
-
fwrite( $handle, "Scan Time Calculation: WP Hash Time Estimate: +".$wp_hash_time." Seconds\r\n" );
|
|
|
|
|
398 |
fwrite( $handle, "Scan Time Calculation: Skipped Files Time Estimate: ".$total_time_estimate." Seconds\r\n" );
|
399 |
|
400 |
} else {
|
401 |
|
402 |
-
$base_scan_time = '20';
|
403 |
$wp_core_files_time_math = $total_wp_core_files / 400;
|
404 |
$wp_core_files_time = round($wp_core_files_time_math);
|
405 |
-
$
|
406 |
-
$
|
407 |
-
$
|
408 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
409 |
|
410 |
$rows = '';
|
411 |
$size = 0;
|
@@ -419,21 +605,47 @@ global $wp_version, $wpdb;
|
|
419 |
$db_size_time_math = $kbytes / 4000;
|
420 |
$db_size_time = round($db_size_time_math);
|
421 |
|
422 |
-
|
423 |
-
$
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
428 |
fwrite( $handle, "Scan Time Calculation: WP Core Files Time Estimate: +".$wp_core_files_time." Seconds\r\n" );
|
429 |
-
fwrite( $handle, "Scan Time Calculation:
|
430 |
-
fwrite( $handle, "Scan Time Calculation:
|
|
|
431 |
fwrite( $handle, "Scan Time Calculation: DB Size Time Estimate: +".$db_size_time." Seconds\r\n" );
|
|
|
432 |
fwrite( $handle, "Scan Time Calculation: Scan Time Estimate: ".$total_time_estimate." Seconds\r\n" );
|
433 |
}
|
434 |
|
435 |
$MScan_status = get_option('bulletproof_security_options_MScan_status');
|
436 |
-
|
437 |
$MScan_status_db = array(
|
438 |
'bps_mscan_time_start' => time(),
|
439 |
'bps_mscan_time_stop' => $MScan_status['bps_mscan_time_stop'],
|
@@ -442,16 +654,18 @@ global $wp_version, $wpdb;
|
|
442 |
'bps_mscan_status' => '2',
|
443 |
'bps_mscan_last_scan_timestamp' => $MScan_status['bps_mscan_last_scan_timestamp'],
|
444 |
'bps_mscan_total_time' => $total_time_estimate,
|
445 |
-
'bps_mscan_total_website_files' =>
|
446 |
'bps_mscan_total_wp_core_files' => $total_wp_core_files,
|
447 |
'bps_mscan_total_non_image_files' => $total_non_image_files,
|
448 |
-
'bps_mscan_total_image_files' =>
|
449 |
'bps_mscan_total_all_scannable_files' => $total_scan_files,
|
450 |
'bps_mscan_total_skipped_files' => $total_skipped_files,
|
451 |
'bps_mscan_total_suspect_files' => $MScan_status['bps_mscan_total_suspect_files'],
|
452 |
'bps_mscan_suspect_skipped_files' => $MScan_status['bps_mscan_suspect_skipped_files'],
|
453 |
'bps_mscan_total_suspect_db' => $MScan_status['bps_mscan_total_suspect_db'],
|
454 |
-
'bps_mscan_total_ignored_files' => $MScan_status['bps_mscan_total_ignored_files']
|
|
|
|
|
455 |
);
|
456 |
|
457 |
foreach( $MScan_status_db as $key => $value ) {
|
@@ -470,369 +684,155 @@ global $wp_version, $wpdb;
|
|
470 |
$seconds_format = $seconds == 0 ? "00" : ($seconds < 10 ? "0".$seconds : $seconds);
|
471 |
|
472 |
$file_count_log = 'Scan Time Calculation Completion Time: '. $hours_format . ':'. $minutes_format . ':' . $seconds_format;
|
|
|
473 |
|
|
|
474 |
fwrite( $handle, "$file_count_log\r\n" );
|
475 |
fclose($handle);
|
|
|
476 |
return true;
|
477 |
}
|
478 |
|
479 |
-
//
|
480 |
-
//
|
481 |
-
|
482 |
-
|
483 |
-
function
|
484 |
-
|
|
|
485 |
|
486 |
$time_start = microtime( true );
|
487 |
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
$handle = fopen( $mscan_log, 'a' );
|
495 |
-
|
496 |
-
$wp_hashes_dir = WP_CONTENT_DIR . '/bps-backup/wp-hashes';
|
497 |
-
|
498 |
-
if ( ! is_dir( $wp_hashes_dir ) ) {
|
499 |
-
|
500 |
-
fwrite( $handle, "WP Zip File Download Error: The $wp_hashes_dir folder does not exist.\r\n" );
|
501 |
-
fwrite( $handle, "Troubleshooting: Check that the Ownership or folder permissions for the /bps-backup/ folder. The /bps-backup/ folder should have 755 or 705 permissions and the Owner of the /bps-backup/ folder should be the same Owner as all of your other website folders.\r\n" );
|
502 |
-
fclose($handle);
|
503 |
-
return false;
|
504 |
-
}
|
505 |
-
|
506 |
-
$wp_zip_file = 'wordpress-'. $wp_version . '.zip';
|
507 |
-
$local_zip_file = WP_CONTENT_DIR . '/bps-backup/wp-hashes/' . $wp_zip_file;
|
508 |
-
|
509 |
-
if ( file_exists($local_zip_file) ) {
|
510 |
-
fwrite( $handle, "WP Zip File Download: The $wp_zip_file already exists and was not downloaded again.\r\n" );
|
511 |
-
fclose($handle);
|
512 |
-
return true;
|
513 |
-
}
|
514 |
-
|
515 |
-
$wp_hashes_file = WP_CONTENT_DIR . '/bps-backup/wp-hashes/wp-hashes.php';
|
516 |
-
|
517 |
-
if ( file_exists($wp_hashes_file) ) {
|
518 |
-
$check_string = file_get_contents($wp_hashes_file);
|
519 |
-
|
520 |
-
if ( strpos( $check_string, "WordPress $wp_version Hashes" ) ) {
|
521 |
-
fwrite( $handle, "WP Zip File Download: The wp-hashes.php file already exists for WordPress $wp_version. The $wp_zip_file was not downloaded again.\r\n" );
|
522 |
-
fclose($handle);
|
523 |
-
return true;
|
524 |
-
}
|
525 |
-
}
|
526 |
-
|
527 |
-
fwrite( $handle, "WP Zip File Download: Start $wp_zip_file zip file download.\r\n" );
|
528 |
-
|
529 |
-
$url = 'https://wordpress.org/latest.zip';
|
530 |
-
$tmp_file = download_url( $url, $timeout = 300 );
|
531 |
-
|
532 |
-
if ( ! copy( $tmp_file, $local_zip_file ) ) {
|
533 |
-
fwrite( $handle, "WP Zip File Download Error: Unable to download the WordPress zip file from $url\r\n" );
|
534 |
-
fwrite( $handle, "Manual Solution: You will need to manually download the WordPress zip file to your computer, unzip it and then use FTP and upload the unzipped /wordpress/ folder to this BPS folder: $wp_hashes_dir\r\n" );
|
535 |
-
}
|
536 |
|
537 |
-
|
538 |
-
|
539 |
-
$time_end = microtime( true );
|
540 |
-
$download_time = $time_end - $time_start;
|
541 |
-
|
542 |
-
$hours = (int)($download_time / 60 / 60);
|
543 |
-
$minutes = (int)($download_time / 60) - $hours * 60;
|
544 |
-
$seconds = (int)$download_time - $hours * 60 * 60 - $minutes * 60;
|
545 |
-
$hours_format = $hours == 0 ? "00" : $hours;
|
546 |
-
$minutes_format = $minutes == 0 ? "00" : ($minutes < 10 ? "0".$minutes : $minutes);
|
547 |
-
$seconds_format = $seconds == 0 ? "00" : ($seconds < 10 ? "0".$seconds : $seconds);
|
548 |
-
|
549 |
-
$download_time_log = 'WP Zip File Download Completion Time: '. $hours_format . ':'. $minutes_format . ':' . $seconds_format;
|
550 |
-
|
551 |
-
fwrite( $handle, "$download_time_log\r\n" );
|
552 |
-
fclose($handle);
|
553 |
-
return true;
|
554 |
-
}
|
555 |
-
|
556 |
-
// Extract the downloaded WordPress zip file.
|
557 |
-
// The extracted WordPress folder name is: /wordpress/
|
558 |
-
function bpsPro_wp_zip_extractor() {
|
559 |
-
global $wp_version;
|
560 |
|
561 |
-
$
|
562 |
-
|
563 |
$timeNow = time();
|
564 |
$gmt_offset = get_option( 'gmt_offset' ) * 3600;
|
565 |
$timestamp = date_i18n(get_option('date_format'), strtotime("11/15-1976")) . ' ' . date_i18n(get_option('time_format'), $timeNow + $gmt_offset);
|
566 |
$mscan_log = WP_CONTENT_DIR . '/bps-backup/logs/mscan_log.txt';
|
|
|
|
|
567 |
|
568 |
$handle = fopen( $mscan_log, 'a' );
|
569 |
|
570 |
-
$
|
571 |
-
|
572 |
-
if ( file_exists($wp_hashes_file) ) {
|
573 |
-
$check_string = file_get_contents($wp_hashes_file);
|
574 |
-
|
575 |
-
if ( strpos( $check_string, "WordPress $wp_version Hashes" ) ) {
|
576 |
-
fwrite( $handle, "WP Zip File Extraction: The wp-hashes.php file already exists for WordPress $wp_version. The wordpress-$wp_version.zip file does not need to be extracted.\r\n" );
|
577 |
-
fclose($handle);
|
578 |
-
return true;
|
579 |
-
}
|
580 |
-
}
|
581 |
-
|
582 |
-
$wp_folder = WP_CONTENT_DIR . '/bps-backup/wp-hashes/wordpress';
|
583 |
-
$wp_hashes_dir = WP_CONTENT_DIR . '/bps-backup/wp-hashes';
|
584 |
-
$wp_zip_file = 'wordpress-'. $wp_version . '.zip';
|
585 |
-
$local_zip_file = WP_CONTENT_DIR . '/bps-backup/wp-hashes/' . $wp_zip_file;
|
586 |
-
|
587 |
-
if ( class_exists('ZipArchive') ) {
|
588 |
-
|
589 |
-
fwrite( $handle, "WP Zip File Extraction: Start ZipArchive zip file extraction.\r\n" );
|
590 |
-
|
591 |
-
$WPZip = new ZipArchive;
|
592 |
|
593 |
-
|
594 |
-
|
595 |
-
$WPZip->extractTo( WP_CONTENT_DIR . '/bps-backup/wp-hashes/' );
|
596 |
-
$WPZip->close();
|
597 |
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
$hours = (int)($zip_extract_time / 60 / 60);
|
602 |
-
$minutes = (int)($zip_extract_time / 60) - $hours * 60;
|
603 |
-
$seconds = (int)$zip_extract_time - $hours * 60 * 60 - $minutes * 60;
|
604 |
-
$hours_format = $hours == 0 ? "00" : $hours;
|
605 |
-
$minutes_format = $minutes == 0 ? "00" : ($minutes < 10 ? "0".$minutes : $minutes);
|
606 |
-
$seconds_format = $seconds == 0 ? "00" : ($seconds < 10 ? "0".$seconds : $seconds);
|
607 |
-
|
608 |
-
$zip_extract_time_log = 'WP Zip File Extraction Completion Time: '. $hours_format . ':'. $minutes_format . ':' . $seconds_format;
|
609 |
-
|
610 |
-
fwrite( $handle, "$zip_extract_time_log\r\n" );
|
611 |
-
fclose($handle);
|
612 |
-
return true;
|
613 |
|
614 |
-
|
|
|
615 |
|
616 |
-
|
617 |
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
return false;
|
622 |
}
|
623 |
}
|
624 |
-
|
625 |
-
} else {
|
626 |
-
|
627 |
-
fwrite( $handle, "WP Zip File Extraction: Start PclZip zip file extraction.\r\n" );
|
628 |
-
|
629 |
-
define( 'PCLZIP_TEMPORARY_DIR', WP_CONTENT_DIR . '/bps-backup/wp-hashes/' );
|
630 |
-
require_once( ABSPATH . 'wp-admin/includes/class-pclzip.php');
|
631 |
-
|
632 |
-
if ( ini_get( 'mbstring.func_overload' ) && function_exists( 'mb_internal_encoding' ) ) {
|
633 |
-
$previous_encoding = mb_internal_encoding();
|
634 |
-
mb_internal_encoding( 'ISO-8859-1' );
|
635 |
-
}
|
636 |
-
|
637 |
-
$archive = new PclZip( $local_zip_file );
|
638 |
-
|
639 |
-
if ( $archive->extract( PCLZIP_OPT_PATH, WP_CONTENT_DIR . '/bps-backup/wp-hashes', PCLZIP_OPT_REMOVE_PATH, WP_CONTENT_DIR . '/bps-backup/wp-hashes' ) ) {
|
640 |
-
|
641 |
-
$time_end = microtime( true );
|
642 |
-
$zip_extract_time = $time_end - $time_start;
|
643 |
-
|
644 |
-
$hours = (int)($zip_extract_time / 60 / 60);
|
645 |
-
$minutes = (int)($zip_extract_time / 60) - $hours * 60;
|
646 |
-
$seconds = (int)$zip_extract_time - $hours * 60 * 60 - $minutes * 60;
|
647 |
-
$hours_format = $hours == 0 ? "00" : $hours;
|
648 |
-
$minutes_format = $minutes == 0 ? "00" : ($minutes < 10 ? "0".$minutes : $minutes);
|
649 |
-
$seconds_format = $seconds == 0 ? "00" : ($seconds < 10 ? "0".$seconds : $seconds);
|
650 |
|
651 |
-
|
652 |
|
653 |
-
|
654 |
-
|
655 |
-
return true;
|
656 |
|
657 |
-
|
|
|
658 |
|
659 |
-
|
660 |
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
}
|
667 |
-
}
|
668 |
-
}
|
669 |
-
|
670 |
-
// Create the wp-hashes.php file array, which contains all MD5 file hashes for all current WP Core files.
|
671 |
-
// Cleanup: Deletes the wp zip file and the extracted /wordpress/ folder.
|
672 |
-
function bpsPro_wp_hash_maker() {
|
673 |
-
global $wp_version;
|
674 |
-
|
675 |
-
$time_start = microtime( true );
|
676 |
-
|
677 |
-
$timeNow = time();
|
678 |
-
$gmt_offset = get_option( 'gmt_offset' ) * 3600;
|
679 |
-
$timestamp = date_i18n(get_option('date_format'), strtotime("11/15-1976")) . ' ' . date_i18n(get_option('time_format'), $timeNow + $gmt_offset);
|
680 |
-
$mscan_log = WP_CONTENT_DIR . '/bps-backup/logs/mscan_log.txt';
|
681 |
-
|
682 |
-
$handle = fopen( $mscan_log, 'a' );
|
683 |
-
|
684 |
-
if ( ! is_array( spl_classes() ) ) {
|
685 |
-
fwrite( $handle, "WP MD5 File Hash Maker Error: The Standard PHP Library (SPL) is Not available/installed. Unable to create WP MD5 file hashes.\r\n" );
|
686 |
-
fwrite( $handle, "Solution: Contact your web host and ask them to install the Standard PHP Library (SPL) on your server.\r\n" );
|
687 |
-
fclose($handle);
|
688 |
-
return false;
|
689 |
-
}
|
690 |
-
|
691 |
-
$wp_hashes_file = WP_CONTENT_DIR . '/bps-backup/wp-hashes/wp-hashes.php';
|
692 |
-
|
693 |
-
if ( ! file_exists( $wp_hashes_file ) ) {
|
694 |
-
fwrite( $handle, "WP MD5 File Hash Maker Error: The $wp_hashes_file file does not exist.\r\n" );
|
695 |
-
fwrite( $handle, "Troubleshooting: Check the Ownership or folder permissions for the /bps-backup/wp-hashes/ folder. The /bps-backup/wp-hashes/ folder should have 755 or 705 permissions and the Owner of the /bps-backup/wp-hashes/ folder should be the same Owner as all of your other website folders.\r\n" );
|
696 |
-
fclose($handle);
|
697 |
-
return false;
|
698 |
}
|
699 |
|
700 |
-
if
|
701 |
-
|
|
|
|
|
|
|
|
|
702 |
|
703 |
-
|
704 |
-
fwrite( $handle, "WP MD5 File Hash Maker: The wp-hashes.php file already exists for WordPress $wp_version. The wp-hashes.php file was not created again.\r\n" );
|
705 |
-
fclose($handle);
|
706 |
-
return true;
|
707 |
-
}
|
708 |
-
}
|
709 |
-
|
710 |
-
$str1 = WP_CONTENT_DIR . '/bps-backup/wp-hashes/wordpress/';
|
711 |
-
$str2 = WP_CONTENT_DIR . '/bps-backup/wp-hashes/wordpress\\';
|
712 |
-
$str3 = WP_CONTENT_DIR . '\bps-backup\wp-hashes\wordpress\\';
|
713 |
-
|
714 |
-
$path = WP_CONTENT_DIR . '/bps-backup/wp-hashes/wordpress';
|
715 |
|
716 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
717 |
|
718 |
-
fwrite( $handle, "
|
719 |
-
fwrite( $handle, "Troubleshooting: Check the Ownership or folder permissions for the /bps-backup/wp-hashes/ folder. The /bps-backup/wp-hashes/ folder should have 755 or 705 permissions and the Owner of the /bps-backup/wp-hashes/ folder should be the same Owner as all of your other website folders.\r\n" );
|
720 |
fclose($handle);
|
721 |
-
return false;
|
722 |
-
}
|
723 |
-
|
724 |
-
fwrite( $handle, "WP MD5 File Hash Maker & Cleanup: Start creating the wp-hashes.php file.\r\n" );
|
725 |
-
|
726 |
-
$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST);
|
727 |
-
$filePath = array();
|
728 |
-
|
729 |
-
foreach ( $objects as $files ) {
|
730 |
-
if ( $files->isFile() ) {
|
731 |
-
$filePath[] = str_replace( array( $str1, $str2, $str3 ), "", $files->getPathname() ). '\' => \'' . md5_file($files->getPathname());
|
732 |
-
}
|
733 |
-
}
|
734 |
-
|
735 |
-
$handleH = fopen( $wp_hashes_file, 'wb' );
|
736 |
-
fwrite( $handleH, "<?php\n" );
|
737 |
-
fwrite( $handleH, "// WordPress $wp_version Hashes\n" );
|
738 |
-
fwrite( $handleH, "\$wp_hashes = array(\n" );
|
739 |
-
|
740 |
-
foreach ( $filePath as $key => $value ) {
|
741 |
-
fwrite( $handleH, "'" . $value . "', " . "\n" );
|
742 |
-
}
|
743 |
-
|
744 |
-
fwrite( $handleH, ");\n" );
|
745 |
-
fwrite( $handleH, "?>" );
|
746 |
-
fclose( $handleH );
|
747 |
-
|
748 |
-
fwrite( $handle, "WP MD5 File Hash Maker & Cleanup: wp-hashes.php file created.\r\n" );
|
749 |
-
fwrite( $handle, "WP MD5 File Hash Maker & Cleanup: Start /bps-backup/wp-hashes/ folder cleanup.\r\n" );
|
750 |
-
|
751 |
-
// Cleanup
|
752 |
-
$wp_zip_file = 'wordpress-'. $wp_version . '.zip';
|
753 |
-
$local_zip_file = WP_CONTENT_DIR . '/bps-backup/wp-hashes/' . $wp_zip_file;
|
754 |
-
|
755 |
-
if ( is_dir($path) ) {
|
756 |
-
|
757 |
-
if ( file_exists($local_zip_file) ) {
|
758 |
-
unlink($local_zip_file);
|
759 |
-
}
|
760 |
-
|
761 |
-
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::CHILD_FIRST);
|
762 |
|
763 |
-
|
764 |
-
|
765 |
-
if ( $file->isDir() ) {
|
766 |
-
@rmdir( $file->getRealPath() );
|
767 |
-
|
768 |
-
} else {
|
769 |
-
|
770 |
-
if ( $file->isFile() ) {
|
771 |
-
unlink( $file->getRealPath() );
|
772 |
-
}
|
773 |
-
}
|
774 |
-
}
|
775 |
-
rmdir($path);
|
776 |
-
}
|
777 |
-
|
778 |
-
$time_end = microtime( true );
|
779 |
-
$hash_maker_time = $time_end - $time_start;
|
780 |
-
|
781 |
-
$hours = (int)($hash_maker_time / 60 / 60);
|
782 |
-
$minutes = (int)($hash_maker_time / 60) - $hours * 60;
|
783 |
-
$seconds = (int)$hash_maker_time - $hours * 60 * 60 - $minutes * 60;
|
784 |
-
$hours_format = $hours == 0 ? "00" : $hours;
|
785 |
-
$minutes_format = $minutes == 0 ? "00" : ($minutes < 10 ? "0".$minutes : $minutes);
|
786 |
-
$seconds_format = $seconds == 0 ? "00" : ($seconds < 10 ? "0".$seconds : $seconds);
|
787 |
-
|
788 |
-
$hash_maker_time_log = 'WP MD5 File Hash Maker & Cleanup Completion Time: '. $hours_format . ':'. $minutes_format . ':' . $seconds_format;
|
789 |
-
|
790 |
-
fwrite( $handle, "WP MD5 File Hash Maker & Cleanup: WP $wp_zip_file file deleted.\r\n" );
|
791 |
-
fwrite( $handle, "WP MD5 File Hash Maker & Cleanup: Extracted /bps-backup/wp-hashes/wordpress/ folder deleted.\r\n" );
|
792 |
-
fwrite( $handle, "$hash_maker_time_log\r\n" );
|
793 |
-
fclose($handle);
|
794 |
-
|
795 |
-
return true;
|
796 |
-
}
|
797 |
-
|
798 |
-
// MScan: File & Database Scanner
|
799 |
-
function bpsPro_mscan_file_scan($mstime) {
|
800 |
-
global $wp_version, $wpdb;
|
801 |
|
802 |
-
$
|
803 |
|
804 |
-
$
|
805 |
-
|
806 |
|
807 |
-
set_time_limit($mstime);
|
808 |
-
ini_set('max_execution_time', $mstime);
|
809 |
-
$timeNow = time();
|
810 |
-
$gmt_offset = get_option( 'gmt_offset' ) * 3600;
|
811 |
-
$timestamp = date_i18n(get_option('date_format'), strtotime("11/15-1976")) . ' ' . date_i18n(get_option('time_format'), $timeNow + $gmt_offset);
|
812 |
-
$mscan_log = WP_CONTENT_DIR . '/bps-backup/logs/mscan_log.txt';
|
813 |
-
$MScanStop = WP_CONTENT_DIR . '/bps-backup/master-backups/mscan-stop.txt';
|
814 |
$bps_wpcontent_dir = str_replace( ABSPATH, '', WP_CONTENT_DIR );
|
815 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
816 |
|
817 |
-
$handle = fopen( $mscan_log, 'a' );
|
818 |
-
|
819 |
-
fwrite( $handle, "Scanning Files: Start scanning files.\r\n" );
|
820 |
-
|
821 |
-
$source = $_SERVER['DOCUMENT_ROOT'];
|
822 |
-
|
823 |
if ( is_dir($source) ) {
|
824 |
|
825 |
$dirItr = new RecursiveDirectoryIterator($source);
|
826 |
$filterItr = new BPSMScanRecursiveFilterIterator($dirItr);
|
827 |
$iterator = new RecursiveIteratorIterator($filterItr, RecursiveIteratorIterator::SELF_FIRST);
|
828 |
|
829 |
-
$image_file_path_array = array();
|
830 |
$file_path_array = array();
|
831 |
$wp_core_file_array = array();
|
832 |
-
|
833 |
$skipped_image_file_path_array = array();
|
834 |
$skipped_nonimage_file_path_array = array();
|
835 |
|
|
|
|
|
|
|
836 |
$wp_core_root_file_array = array( 'wp-activate.php', 'wp-blog-header.php', 'wp-comments-post.php', 'wp-config-sample.php', 'wp-cron.php', 'wp-links-opml.php', 'wp-load.php', 'wp-login.php', 'wp-mail.php', 'wp-settings.php', 'wp-signup.php', 'wp-trackback.php' );
|
837 |
|
838 |
foreach ( $iterator as $files ) {
|
@@ -847,15 +847,16 @@ global $wp_version, $wpdb;
|
|
847 |
|
848 |
} else {
|
849 |
|
850 |
-
if ( ! preg_match( '/(.*)((\/|\\\)'.$bps_wpcontent_dir.'(\/|\\\)bps-backup(\/|\\\))(.*)/', $files->getPathname() ) ) {
|
851 |
|
852 |
-
|
853 |
|
854 |
if ( $files->getFilename() == 'index.php' ) {
|
|
|
855 |
$check_string1 = file_get_contents( $files->getPath() . '/index.php' );
|
856 |
-
$pos1 =
|
857 |
}
|
858 |
-
|
859 |
if ( $files->getFilename() == 'readme.html' ) {
|
860 |
$check_string2 = file_get_contents( $files->getPath() . '/readme.html' );
|
861 |
$pos2 = strpos( $check_string2, "https://wordpress.org/" );
|
@@ -865,7 +866,7 @@ global $wp_version, $wpdb;
|
|
865 |
$check_string3 = file_get_contents( $files->getPath() . '/xmlrpc.php' );
|
866 |
$pos3 = strpos( $check_string3, "XML-RPC protocol support for WordPress" );
|
867 |
}
|
868 |
-
|
869 |
if ( $MScan_options['mscan_exclude_dirs'] != '' ) {
|
870 |
|
871 |
$mscan_exclude_dirs = str_replace('\\\\', '\\', $MScan_options['mscan_exclude_dirs']);
|
@@ -882,12 +883,16 @@ global $wp_version, $wpdb;
|
|
882 |
|
883 |
$glue = implode("", $mscan_exclude_dirs_regex_array);
|
884 |
$mscan_exclude_dir_regex = preg_replace( '/\|$/', '', $glue);
|
885 |
-
$exclude_dirs_pattern = '/('.$mscan_exclude_dir_regex.')/';
|
886 |
|
887 |
} else {
|
888 |
$exclude_dirs_pattern = '/(\/bps-no-dirs\/)/';
|
889 |
}
|
890 |
|
|
|
|
|
|
|
|
|
891 |
$core_pattern = '/(.*)((\/|\\\)wp-admin(\/|\\\)|(\/|\\\)wp-includes(\/|\\\))(.*)/';
|
892 |
|
893 |
if ( preg_match( $core_pattern, $files->getPathname() ) || $files->getFilename() == 'index.php' && $pos1 !== false || $files->getFilename() == 'readme.html' && $pos2 !== false || $files->getFilename() == 'xmlrpc.php' && $pos3 !== false || in_array($files->getFilename(), $wp_core_root_file_array) ) {
|
@@ -900,27 +905,13 @@ global $wp_version, $wpdb;
|
|
900 |
|
901 |
if ( $files->getSize() <= $MScan_options['mscan_max_file_size'] * 1024 ) {
|
902 |
|
903 |
-
if ( $
|
904 |
-
|
905 |
-
if ( $ext == 'png' || $ext == 'gif' || $ext == 'bmp' || $ext == 'jpg' || $ext == 'jpeg' || $ext == 'tif' || $ext == 'tiff' ) {
|
906 |
-
$image_file_path_array[] = $files->getPathname();
|
907 |
-
}
|
908 |
-
}
|
909 |
-
|
910 |
-
if ( $ext == 'htm' || $ext == 'html' || $ext == 'htaccess' || $ext == 'js' || $ext == 'php' || $ext == 'phps' || $ext == 'php5' || $ext == 'php4' || $ext == 'php3' || $ext == 'phtml' || $ext == 'phpt' || $ext == 'shtm' || $ext == 'shtml' || $ext == 'xhtml' ) {
|
911 |
$file_path_array[] = $files->getPathname();
|
912 |
}
|
913 |
|
914 |
} else {
|
915 |
|
916 |
-
if ( $
|
917 |
-
|
918 |
-
if ( $ext == 'png' || $ext == 'gif' || $ext == 'bmp' || $ext == 'jpg' || $ext == 'jpeg' || $ext == 'tif' || $ext == 'tiff' ) {
|
919 |
-
$skipped_image_file_path_array[] = $files->getPathname();
|
920 |
-
}
|
921 |
-
}
|
922 |
-
|
923 |
-
if ( $ext == 'htm' || $ext == 'html' || $ext == 'htaccess' || $ext == 'js' || $ext == 'php' || $ext == 'phps' || $ext == 'php5' || $ext == 'php4' || $ext == 'php3' || $ext == 'phtml' || $ext == 'phpt' || $ext == 'shtm' || $ext == 'shtml' || $ext == 'xhtml' ) {
|
924 |
$skipped_nonimage_file_path_array[] = $files->getPathname();
|
925 |
}
|
926 |
}
|
@@ -928,11 +919,73 @@ global $wp_version, $wpdb;
|
|
928 |
}
|
929 |
}
|
930 |
}
|
931 |
-
} catch (RuntimeException $e) {
|
932 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
933 |
}
|
934 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
935 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
936 |
$skipped_file_path_array = array_merge($skipped_image_file_path_array, $skipped_nonimage_file_path_array);
|
937 |
|
938 |
$MStable = $wpdb->prefix . "bpspro_mscan";
|
@@ -954,9 +1007,8 @@ global $wp_version, $wpdb;
|
|
954 |
}
|
955 |
}
|
956 |
|
957 |
-
|
958 |
-
|
959 |
-
## 4.6: MScan pattern matching code is now saved in the DB
|
960 |
$mscan_db_pattern_match_options = get_option('bulletproof_security_options_mscan_patterns');
|
961 |
|
962 |
foreach ( $mscan_db_pattern_match_options['mscan_pattern_match_files'] as $key => $value ) {
|
@@ -972,9 +1024,6 @@ global $wp_version, $wpdb;
|
|
972 |
if ( $inner_key == 'php_patterns' ) {
|
973 |
$php_pattern = $inner_value;
|
974 |
}
|
975 |
-
if ( $inner_key == 'image_patterns' ) {
|
976 |
-
$image_pattern = $inner_value;
|
977 |
-
}
|
978 |
}
|
979 |
}
|
980 |
|
@@ -1023,11 +1072,14 @@ global $wp_version, $wpdb;
|
|
1023 |
}
|
1024 |
}
|
1025 |
}
|
1026 |
-
|
1027 |
$js_code_match = 0;
|
1028 |
$htaccess_code_match = 0;
|
1029 |
$php_code_match = 0;
|
1030 |
|
|
|
|
|
|
|
1031 |
if ( $MScan_options['mscan_scan_skipped_files'] == 'Off' ) {
|
1032 |
|
1033 |
$skipped_rows = 'skipped';
|
@@ -1063,22 +1115,12 @@ global $wp_version, $wpdb;
|
|
1063 |
}
|
1064 |
}
|
1065 |
|
1066 |
-
if ( $ext == 'htm' || $ext == 'html' || $ext == 'php' || $ext == 'phps' || $ext == 'php5' || $ext == 'php4' || $ext == 'php3' || $ext == 'phtml' || $ext == 'phpt' || $ext == 'shtm' || $ext == 'shtml' || $ext == 'xhtml' ) {
|
1067 |
|
1068 |
if ( ! in_array($value, $mscan_file_skipped_path_array) ) {
|
1069 |
$insert_rows = $wpdb->insert( $MStable, array( 'mscan_status' => '', 'mscan_type' => 'php|html|other', 'mscan_path' => $value, 'mscan_pattern' => '', 'mscan_skipped' => 'skipped', 'mscan_ignored' => '', 'mscan_db_table' => '', 'mscan_db_column' => '', 'mscan_db_pkid' => '', 'mscan_time' => current_time('mysql') ) );
|
1070 |
}
|
1071 |
}
|
1072 |
-
|
1073 |
-
if ( $MScan_options['mscan_scan_images'] == 'On' ) {
|
1074 |
-
|
1075 |
-
if ( $ext == 'png' || $ext == 'gif' || $ext == 'bmp' || $ext == 'jpg' || $ext == 'jpeg' || $ext == 'tif' || $ext == 'tiff' ) {
|
1076 |
-
|
1077 |
-
if ( ! in_array($value, $mscan_file_skipped_path_array) ) {
|
1078 |
-
$insert_rows = $wpdb->insert( $MStable, array( 'mscan_status' => '', 'mscan_type' => 'image', 'mscan_path' => $value, 'mscan_pattern' => '', 'mscan_skipped' => 'skipped', 'mscan_ignored' => '', 'mscan_db_table' => '', 'mscan_db_column' => '', 'mscan_db_pkid' => '', 'mscan_time' => current_time('mysql') ) );
|
1079 |
-
}
|
1080 |
-
}
|
1081 |
-
}
|
1082 |
}
|
1083 |
}
|
1084 |
|
@@ -1093,16 +1135,44 @@ global $wp_version, $wpdb;
|
|
1093 |
}
|
1094 |
}
|
1095 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1096 |
foreach ( $file_path_array as $key => $value ) {
|
1097 |
|
1098 |
if ( preg_match( '/index\.php/', $value ) ) {
|
|
|
1099 |
$check_string4 = file_get_contents( $value );
|
1100 |
-
|
1101 |
-
if ( $pos4 !== false ) {
|
1102 |
unset($file_path_array[$key]);
|
1103 |
}
|
1104 |
}
|
1105 |
-
|
1106 |
if ( preg_match( '/readme\.html/', $value ) ) {
|
1107 |
$check_string5 = file_get_contents( $value );
|
1108 |
$pos5 = strpos( $check_string5, "https://wordpress.org/" );
|
@@ -1124,16 +1194,10 @@ global $wp_version, $wpdb;
|
|
1124 |
}
|
1125 |
}
|
1126 |
|
1127 |
-
|
1128 |
-
|
1129 |
-
if ( in_array( $value, $mscan_file_ignore_array ) ) {
|
1130 |
-
unset($image_file_path_array[$key]);
|
1131 |
-
}
|
1132 |
-
}
|
1133 |
-
|
1134 |
-
$blank_rows = '';
|
1135 |
$MScanFileRows = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $MStable WHERE mscan_path != %s AND mscan_skipped != %s", $blank_rows, $skipped_rows ) );
|
1136 |
|
|
|
1137 |
$mscan_file_path_array = array();
|
1138 |
|
1139 |
if ( $wpdb->num_rows != 0 ) {
|
@@ -1157,7 +1221,7 @@ global $wp_version, $wpdb;
|
|
1157 |
}
|
1158 |
|
1159 |
fwrite( $handle, "Scanning Files: Start WP Core file scan.\r\n" );
|
1160 |
-
fwrite( $handle, "Scanning Files: Suspicious|Modified|Unknown WP Core files:\r\n" );
|
1161 |
|
1162 |
$core_dir_flip = array_flip($wp_core_file_array);
|
1163 |
|
@@ -1167,7 +1231,7 @@ global $wp_version, $wpdb;
|
|
1167 |
$core_md5_array[$key] = md5_file($key);
|
1168 |
}
|
1169 |
|
1170 |
-
require_once
|
1171 |
|
1172 |
$core_diff_array = array_diff($core_md5_array, $wp_hashes);
|
1173 |
|
@@ -1189,7 +1253,8 @@ global $wp_version, $wpdb;
|
|
1189 |
// Not redundant - needs to be here
|
1190 |
if ( ! preg_match( '/(.*)(\/|\\\)wp-admin(\/|\\\).htaccess/', $key ) ) {
|
1191 |
|
1192 |
-
fwrite( $handle, "Scanning Files WP Core: File: $key\r\n" );
|
|
|
1193 |
|
1194 |
if ( ! in_array($key, $mscan_file_path_array) ) {
|
1195 |
|
@@ -1206,7 +1271,223 @@ global $wp_version, $wpdb;
|
|
1206 |
}
|
1207 |
|
1208 |
fwrite( $handle, "Scanning Files: WP Core file scan completed.\r\n" );
|
1209 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1210 |
fwrite( $handle, "Scanning Files: Suspicious code pattern matches:\r\n" );
|
1211 |
|
1212 |
foreach ( $file_path_array as $key => $value ) {
|
@@ -1223,15 +1504,24 @@ global $wp_version, $wpdb;
|
|
1223 |
|
1224 |
if ( $ext == 'js' ) {
|
1225 |
|
1226 |
-
if (
|
1227 |
-
|
1228 |
$js_code_match = 1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1229 |
fwrite( $handle, "Scanning Files .js: File: $value\r\n" );
|
1230 |
-
fwrite( $handle, "Scanning Files .js: Code Pattern Match: $
|
1231 |
|
1232 |
if ( ! in_array($value, $mscan_file_path_array) ) {
|
1233 |
|
1234 |
-
if ( $insert_rows = $wpdb->insert( $MStable, array( 'mscan_status' => 'suspect', 'mscan_type' => 'js', 'mscan_path' => $value, 'mscan_pattern' => $
|
1235 |
|
1236 |
$send_email = 'send';
|
1237 |
}
|
@@ -1241,32 +1531,50 @@ global $wp_version, $wpdb;
|
|
1241 |
|
1242 |
if ( $ext == 'htaccess' ) {
|
1243 |
|
1244 |
-
if (
|
1245 |
|
1246 |
$htaccess_code_match = 1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1247 |
fwrite( $handle, "Scanning Files .htaccess: File: $value\r\n" );
|
1248 |
-
fwrite( $handle, "Scanning Files .htaccess: Code Pattern Match: $
|
1249 |
|
1250 |
if ( ! in_array($value, $mscan_file_path_array) ) {
|
1251 |
|
1252 |
-
if ( $insert_rows = $wpdb->insert( $MStable, array( 'mscan_status' => 'suspect', 'mscan_type' => 'htaccess', 'mscan_path' => $value, 'mscan_pattern' => $
|
1253 |
$send_email = 'send';
|
1254 |
}
|
1255 |
}
|
1256 |
}
|
1257 |
}
|
1258 |
|
1259 |
-
if ( $ext == 'htm' || $ext == 'html' || $ext == 'php' || $ext == 'phps' || $ext == 'php5' || $ext == 'php4' || $ext == 'php3' || $ext == 'phtml' || $ext == 'phpt' || $ext == 'shtm' || $ext == 'shtml' || $ext == 'xhtml' ) {
|
1260 |
|
1261 |
-
if (
|
1262 |
|
1263 |
$php_code_match = 1;
|
1264 |
-
|
1265 |
-
|
1266 |
|
1267 |
-
if (
|
|
|
|
|
|
|
|
|
1268 |
|
1269 |
-
|
|
|
|
|
|
|
|
|
|
|
1270 |
$send_email = 'send';
|
1271 |
}
|
1272 |
}
|
@@ -1284,54 +1592,10 @@ global $wp_version, $wpdb;
|
|
1284 |
}
|
1285 |
|
1286 |
if ( $php_code_match == 0 ) {
|
1287 |
-
fwrite( $handle, "Scanning Files
|
1288 |
}
|
1289 |
|
1290 |
-
fwrite( $handle, "Scanning Files:
|
1291 |
-
|
1292 |
-
if ( $MScan_options['mscan_scan_images'] == 'On' ) {
|
1293 |
-
|
1294 |
-
$image_code_match = 0;
|
1295 |
-
fwrite( $handle, "Scanning Files: Start Image file scan.\r\n" );
|
1296 |
-
fwrite( $handle, "Scanning Files: Suspicious code (Stegosploit|Exif Hack) matches:\r\n" );
|
1297 |
-
|
1298 |
-
foreach ( $image_file_path_array as $keyI => $valueI ) {
|
1299 |
-
|
1300 |
-
if ( file_get_contents($MScanStop) != 'run' ) {
|
1301 |
-
fwrite( $handle, "Scanning Files: MScan Scanning was Stopped\r\n" );
|
1302 |
-
fclose($handle);
|
1303 |
-
exit();
|
1304 |
-
|
1305 |
-
} else {
|
1306 |
-
|
1307 |
-
$image_contents = file_get_contents($valueI);
|
1308 |
-
|
1309 |
-
try {
|
1310 |
-
if ( ! preg_match( $safe_plugins, $valueI ) && preg_match( $image_pattern, $image_contents, $matches ) ) {
|
1311 |
-
|
1312 |
-
$image_code_match = 1;
|
1313 |
-
fwrite( $handle, "Scanning Files (png, jpg, etc): File: $valueI\r\n" );
|
1314 |
-
fwrite( $handle, "Scanning Files (png, jpg, etc): Code Pattern Match: $matches[0]\r\n" );
|
1315 |
-
|
1316 |
-
if ( ! in_array($valueI, $mscan_file_path_array) ) {
|
1317 |
-
|
1318 |
-
if ( $insert_rows = $wpdb->insert( $MStable, array( 'mscan_status' => 'suspect', 'mscan_type' => 'image', 'mscan_path' => $valueI, 'mscan_pattern' => $matches[0], 'mscan_skipped' => '', 'mscan_ignored' => '', 'mscan_db_table' => '', 'mscan_db_column' => '', 'mscan_db_pkid' => '', 'mscan_time' => current_time('mysql') ) ) ) {
|
1319 |
-
$send_email = 'send';
|
1320 |
-
}
|
1321 |
-
}
|
1322 |
-
}
|
1323 |
-
} catch (RuntimeException $e) {
|
1324 |
-
fwrite( $handle, "Scanning Files (png, jpg, etc): RuntimeException Error\r\n" );
|
1325 |
-
}
|
1326 |
-
}
|
1327 |
-
}
|
1328 |
-
|
1329 |
-
if ( $image_code_match == 0 ) {
|
1330 |
-
fwrite( $handle, "Scanning Files (png, jpg, etc): No Suspicious code (Stegosploit|Exif Hack) was found in any image files.\r\n" );
|
1331 |
-
}
|
1332 |
-
fwrite( $handle, "Scanning Files: Image file scan completed.\r\n" );
|
1333 |
-
}
|
1334 |
-
|
1335 |
fwrite( $handle, "Scanning Files: Scanning files completed.\r\n" );
|
1336 |
|
1337 |
if ( $MScan_options['mscan_scan_database'] == 'On' ) {
|
@@ -1343,8 +1607,8 @@ global $wp_version, $wpdb;
|
|
1343 |
$DBTables = '';
|
1344 |
$getDBTables = $wpdb->get_results( $wpdb->prepare( "SHOW TABLE STATUS WHERE Name != %s", $DBTables ) );
|
1345 |
|
1346 |
-
## 4.
|
1347 |
-
|
1348 |
foreach ( $getDBTables as $Table ) {
|
1349 |
|
1350 |
if ( $Table->Name != $wpdb->prefix . "bpspro_mscan" ) {
|
@@ -1366,7 +1630,9 @@ global $wp_version, $wpdb;
|
|
1366 |
|
1367 |
} else {
|
1368 |
|
1369 |
-
|
|
|
|
|
1370 |
|
1371 |
$getKey = $wpdb->get_results( "SHOW KEYS FROM $Table->Name WHERE Key_name = 'PRIMARY'" );
|
1372 |
|
@@ -1379,6 +1645,8 @@ global $wp_version, $wpdb;
|
|
1379 |
$replace = array ( '<', '>' );
|
1380 |
$json_array_converted = preg_replace( $patterns, $replace, $json_array );
|
1381 |
|
|
|
|
|
1382 |
if ( in_array( $json_array_converted[$PKey->Column_name], $mscan_db_ignore_array ) ) {
|
1383 |
unset($json_array[$column->Field]);
|
1384 |
}
|
@@ -1540,89 +1808,58 @@ global $wp_version, $wpdb;
|
|
1540 |
|
1541 |
} else {
|
1542 |
|
1543 |
-
|
1544 |
-
|
1545 |
-
$file_contents = file_get_contents($row->mscan_path);
|
1546 |
|
1547 |
-
|
1548 |
-
|
1549 |
-
|
1550 |
-
|
1551 |
-
|
1552 |
-
|
1553 |
-
|
1554 |
-
|
1555 |
-
$update_rows = $wpdb->update( $MStable, array( 'mscan_status' => 'suspect', 'mscan_pattern' => $matches[0], 'mscan_time' => current_time('mysql') ), array( 'mscan_path' => $row->mscan_path ) );
|
1556 |
-
|
1557 |
-
$send_email = 'send';
|
1558 |
-
|
1559 |
-
} else {
|
1560 |
-
$update_rows = $wpdb->update( $MStable, array( 'mscan_status' => 'clean', 'mscan_time' => current_time('mysql') ), array( 'mscan_path' => $row->mscan_path ) );
|
1561 |
-
}
|
1562 |
-
}
|
1563 |
-
|
1564 |
-
if ( $row->mscan_type == 'htaccess' ) {
|
1565 |
|
1566 |
-
|
1567 |
-
|
1568 |
-
|
1569 |
-
fwrite( $handle, "Scanning Skipped Files .htaccess: File: $row->mscan_path\r\n" );
|
1570 |
-
fwrite( $handle, "Scanning Skipped Files .htaccess: Code Pattern Match: $matches[0]\r\n" );
|
1571 |
-
|
1572 |
-
$update_rows = $wpdb->update( $MStable, array( 'mscan_status' => 'suspect', 'mscan_pattern' => $matches[0], 'mscan_time' => current_time('mysql') ), array( 'mscan_path' => $row->mscan_path ) );
|
1573 |
-
|
1574 |
-
$send_email = 'send';
|
1575 |
|
1576 |
-
|
1577 |
-
|
1578 |
-
}
|
1579 |
}
|
1580 |
-
|
1581 |
-
if ( $row->mscan_type == 'php|html|other' ) {
|
1582 |
|
1583 |
-
|
1584 |
-
|
1585 |
-
|
1586 |
-
|
1587 |
-
|
1588 |
-
|
1589 |
-
|
1590 |
-
|
1591 |
-
$send_email = 'send';
|
1592 |
-
|
1593 |
-
} else {
|
1594 |
-
$update_rows = $wpdb->update( $MStable, array( 'mscan_status' => 'clean', 'mscan_time' => current_time('mysql') ), array( 'mscan_path' => $row->mscan_path ) );
|
1595 |
-
}
|
1596 |
-
}
|
1597 |
|
1598 |
-
|
1599 |
|
1600 |
-
|
1601 |
-
|
1602 |
-
|
1603 |
-
|
1604 |
-
|
1605 |
-
|
1606 |
-
|
1607 |
-
|
1608 |
-
|
1609 |
-
|
1610 |
-
|
1611 |
-
|
1612 |
-
|
1613 |
-
|
1614 |
-
|
1615 |
-
|
1616 |
-
|
1617 |
-
|
1618 |
-
|
1619 |
-
|
|
|
1620 |
}
|
1621 |
}
|
1622 |
-
}
|
1623 |
-
|
1624 |
-
if ( preg_match( $safe_plugins, $row->mscan_path ) ) {
|
1625 |
-
$update_rows = $wpdb->update( $MStable, array( 'mscan_status' => 'safe', 'mscan_time' => current_time('mysql') ), array( 'mscan_path' => $row->mscan_path ) );
|
1626 |
}
|
1627 |
}
|
1628 |
|
@@ -1635,13 +1872,9 @@ global $wp_version, $wpdb;
|
|
1635 |
}
|
1636 |
|
1637 |
if ( $php_code_match == 0 ) {
|
1638 |
-
fwrite( $handle, "Scanning Skipped Files
|
1639 |
}
|
1640 |
|
1641 |
-
if ( $MScan_options['mscan_scan_images'] == 'On' && $image_code_match == 0 ) {
|
1642 |
-
fwrite( $handle, "Scanning Skipped Files (png, jpg, etc): No Suspicious code (Stegosploit|Exif Hack) was found in any image files.\r\n" );
|
1643 |
-
}
|
1644 |
-
|
1645 |
fwrite( $handle, "Scanning Skipped Files: Skipped file scan completed.\r\n" );
|
1646 |
|
1647 |
} else {
|
@@ -1693,7 +1926,6 @@ global $wp_version, $wpdb;
|
|
1693 |
$total_suspect_file_count = count($mscan_suspect_files_total_array);
|
1694 |
$total_suspect_skipped_files_file_count = count($mscan_suspect_skipped_files_total_array);
|
1695 |
$total_suspect_db_count = count($mscan_suspect_db_total_array);
|
1696 |
-
|
1697 |
$bps_mscan_total_time = time() - $MScan_status['bps_mscan_time_start'];
|
1698 |
|
1699 |
$MScan_status_db = array(
|
@@ -1704,16 +1936,18 @@ global $wp_version, $wpdb;
|
|
1704 |
'bps_mscan_status' => '3',
|
1705 |
'bps_mscan_last_scan_timestamp' => $timestamp,
|
1706 |
'bps_mscan_total_time' => $bps_mscan_total_time,
|
1707 |
-
'bps_mscan_total_website_files' =>
|
1708 |
'bps_mscan_total_wp_core_files' => $MScan_status['bps_mscan_total_wp_core_files'],
|
1709 |
'bps_mscan_total_non_image_files' => $MScan_status['bps_mscan_total_non_image_files'],
|
1710 |
-
'bps_mscan_total_image_files' =>
|
1711 |
'bps_mscan_total_all_scannable_files' => $MScan_status['bps_mscan_total_all_scannable_files'],
|
1712 |
'bps_mscan_total_skipped_files' => $MScan_status['bps_mscan_total_skipped_files'],
|
1713 |
'bps_mscan_total_suspect_files' => $total_suspect_file_count,
|
1714 |
'bps_mscan_suspect_skipped_files' => $total_suspect_skipped_files_file_count,
|
1715 |
'bps_mscan_total_suspect_db' => $total_suspect_db_count,
|
1716 |
-
'bps_mscan_total_ignored_files' => $total_ignored_file_db_count
|
|
|
|
|
1717 |
);
|
1718 |
|
1719 |
foreach( $MScan_status_db as $key => $value ) {
|
@@ -1731,18 +1965,31 @@ global $wp_version, $wpdb;
|
|
1731 |
$minutes_format = $minutes == 0 ? "00" : ($minutes < 10 ? "0".$minutes : $minutes);
|
1732 |
$seconds_format = $seconds == 0 ? "00" : ($seconds < 10 ? "0".$seconds : $seconds);
|
1733 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1734 |
if ( $MScan_options['mscan_scan_skipped_files'] == 'On' ) {
|
1735 |
$file_scan_log = 'Scanning Skipped Files Completion Time: '. $hours_format . ':'. $minutes_format . ':' . $seconds_format;
|
|
|
1736 |
|
1737 |
} else {
|
1738 |
|
1739 |
if ( $MScan_options['mscan_scan_database'] == 'On' ) {
|
1740 |
$file_scan_log = 'Scanning Files & Database Completion Time: '. $hours_format . ':'. $minutes_format . ':' . $seconds_format;
|
|
|
1741 |
} else{
|
1742 |
$file_scan_log = 'Scanning Files Completion Time: '. $hours_format . ':'. $minutes_format . ':' . $seconds_format;
|
|
|
1743 |
}
|
1744 |
}
|
1745 |
|
|
|
|
|
|
|
1746 |
fwrite( $handle, "$file_scan_log\r\n" );
|
1747 |
|
1748 |
if ( $MScan_options['mscan_scan_delete_tmp_files'] == 'On' ) {
|
@@ -1750,11 +1997,13 @@ global $wp_version, $wpdb;
|
|
1750 |
fwrite( $handle, "Delete /tmp Files: tmp files have been deleted.\r\n" );
|
1751 |
}
|
1752 |
|
|
|
|
|
1753 |
fclose($handle);
|
1754 |
|
1755 |
// Send email alert
|
1756 |
if ( $send_email != '' ) {
|
1757 |
-
bps_smonitor_mscan_email();
|
1758 |
}
|
1759 |
}
|
1760 |
|
@@ -1813,5 +2062,4 @@ function bpsPro_delete_temp_files() {
|
|
1813 |
}
|
1814 |
}
|
1815 |
}
|
1816 |
-
|
1817 |
?>
|
18 |
}
|
19 |
|
20 |
## MScan manual AJAX scan
|
21 |
+
## See DW malware-scanner.php for extensive notes
|
22 |
function bpsPro_mscan_scan_processing() {
|
23 |
|
24 |
if ( isset( $_POST['post_var'] ) && $_POST['post_var'] == 'bps_mscan' ) {
|
30 |
$mstime = ! isset($MScan_options['mscan_max_time_limit']) ? '300' : $MScan_options['mscan_max_time_limit'];
|
31 |
ini_set('max_execution_time', $mstime);
|
32 |
|
33 |
+
require_once WP_PLUGIN_DIR . '/bulletproof-security/includes/mscan-wp-core-hash-maker.php';
|
34 |
+
require_once WP_PLUGIN_DIR . '/bulletproof-security/includes/mscan-plugin-hash-maker.php';
|
35 |
+
require_once WP_PLUGIN_DIR . '/bulletproof-security/includes/mscan-theme-hash-maker.php';
|
36 |
+
|
37 |
if ( bpsPro_mscan_calculate_scan_time($mstime) == true ) {
|
38 |
if ( bpsPro_wp_zip_download($mstime) == true ) {
|
39 |
if ( bpsPro_wp_zip_extractor() == true ) {
|
40 |
if ( bpsPro_wp_hash_maker() == true ) {
|
41 |
+
if ( bpsPro_plugin_zip_download($mstime) == true ) {
|
42 |
+
if ( bpsPro_plugin_zip_extractor() == true ) {
|
43 |
+
if ( bpsPro_plugin_hash_maker() == true ) {
|
44 |
+
if ( bpsPro_theme_zip_download($mstime) == true ) {
|
45 |
+
if ( bpsPro_theme_zip_extractor() == true ) {
|
46 |
+
if ( bpsPro_theme_hash_maker() == true ) {
|
47 |
+
bpsPro_mscan_file_scan($mstime);
|
48 |
+
}
|
49 |
+
}
|
50 |
+
}
|
51 |
+
}
|
52 |
+
}
|
53 |
+
}
|
54 |
}
|
55 |
}
|
56 |
}
|
61 |
|
62 |
add_action('wp_ajax_bps_mscan_scan_processing', 'bpsPro_mscan_scan_processing');
|
63 |
|
64 |
+
// 15.4: This is no longer necessary. Leaving this here for now. Pending removal.
|
65 |
function bpsPro_mscan_scan_estimate() {
|
66 |
|
67 |
if ( isset( $_POST['post_var'] ) && $_POST['post_var'] == 'bps_mscan_estimate' ) {
|
73 |
$mstime = ! isset($MScan_options['mscan_max_time_limit']) ? '300' : $MScan_options['mscan_max_time_limit'];
|
74 |
ini_set('max_execution_time', $mstime);
|
75 |
|
76 |
+
// ONLY the scan time estimate function is executed.
|
77 |
if ( bpsPro_mscan_calculate_scan_time($mstime) == true ) {
|
78 |
|
79 |
$MScan_status = get_option('bulletproof_security_options_MScan_status');
|
86 |
'bps_mscan_status' => '5',
|
87 |
'bps_mscan_last_scan_timestamp' => $MScan_status['bps_mscan_last_scan_timestamp'],
|
88 |
'bps_mscan_total_time' => $MScan_status['bps_mscan_total_time'],
|
89 |
+
'bps_mscan_total_website_files' => '',
|
90 |
'bps_mscan_total_wp_core_files' => $MScan_status['bps_mscan_total_wp_core_files'],
|
91 |
'bps_mscan_total_non_image_files' => $MScan_status['bps_mscan_total_non_image_files'],
|
92 |
+
'bps_mscan_total_image_files' => '',
|
93 |
'bps_mscan_total_all_scannable_files' => $MScan_status['bps_mscan_total_all_scannable_files'],
|
94 |
'bps_mscan_total_skipped_files' => $MScan_status['bps_mscan_total_skipped_files'],
|
95 |
'bps_mscan_total_suspect_files' => $MScan_status['bps_mscan_total_suspect_files'],
|
96 |
'bps_mscan_suspect_skipped_files' => $MScan_status['bps_mscan_suspect_skipped_files'],
|
97 |
'bps_mscan_total_suspect_db' => $MScan_status['bps_mscan_total_suspect_db'],
|
98 |
+
'bps_mscan_total_ignored_files' => $MScan_status['bps_mscan_total_ignored_files'],
|
99 |
+
'bps_mscan_total_plugin_files' => $MScan_status['bps_mscan_total_plugin_files'],
|
100 |
+
'bps_mscan_total_theme_files' => $MScan_status['bps_mscan_total_theme_files']
|
101 |
);
|
102 |
|
103 |
foreach( $MScan_status_db as $key => $value ) {
|
110 |
|
111 |
add_action('wp_ajax_bps_mscan_scan_estimate', 'bpsPro_mscan_scan_estimate');
|
112 |
|
113 |
+
// Note: On Windows XAMPP ONLY backslashes \ are used in getSubPathName paths. On Linux ONLY forward slashes / are used in paths.
|
114 |
class BPSMScanRecursiveFilterIterator extends RecursiveFilterIterator {
|
115 |
|
116 |
public function accept() {
|
117 |
$MScan_options = get_option('bulletproof_security_options_MScan');
|
118 |
$excluded_dirs = array();
|
119 |
+
$excluded_dirs_gwiod = array();
|
120 |
+
$wp_abspath_forward_slashes = str_replace( '\\', '/', ABSPATH );
|
121 |
+
$wp_install_folder = str_replace( array( get_home_path(), '/', ), "", $wp_abspath_forward_slashes );
|
122 |
|
123 |
foreach ( $MScan_options['bps_mscan_dirs'] as $key => $value ) {
|
124 |
if ( $value == '' ) {
|
125 |
$excluded_dirs[] = $key;
|
126 |
+
$excluded_dirs_gwiod[] = $wp_install_folder . DIRECTORY_SEPARATOR . $key;
|
127 |
}
|
128 |
}
|
129 |
+
|
130 |
+
$dir_filter_array_merge = array_unique(array_merge($excluded_dirs, $excluded_dirs_gwiod));
|
131 |
+
|
132 |
+
return !in_array( $this->getSubPathName(), $dir_filter_array_merge, true );
|
133 |
}
|
134 |
}
|
135 |
|
136 |
+
|
137 |
function bpsPro_mscan_calculate_scan_time($mstime) {
|
138 |
+
global $wp_version, $wpdb, $plugin_hashes, $theme_hashes;
|
139 |
|
140 |
$time_start = microtime( true );
|
141 |
|
142 |
$MScan_options = get_option('bulletproof_security_options_MScan');
|
143 |
+
$MScan_status = get_option('bulletproof_security_options_MScan_status');
|
144 |
$mstime = ! isset($MScan_options['mscan_max_time_limit']) ? '300' : $MScan_options['mscan_max_time_limit'];
|
145 |
|
146 |
set_time_limit($mstime);
|
154 |
$handle = fopen( $mscan_log, 'a' );
|
155 |
|
156 |
fwrite( $handle, "\r\n[MScan Scan Start: $timestamp]\r\n" );
|
157 |
+
fwrite( $handle, "MScan Status: ".$MScan_status['bps_mscan_status']."\r\n" );
|
158 |
fwrite( $handle, "Scan Time Calculation: Start Count total files to scan.\r\n" );
|
159 |
|
160 |
if ( $MScan_options['mscan_scan_skipped_files'] == 'On' ) {
|
164 |
}
|
165 |
|
166 |
$bps_wpcontent_dir = str_replace( ABSPATH, '', WP_CONTENT_DIR );
|
167 |
+
$bps_plugin_dir = str_replace( WP_CONTENT_DIR, '', WP_PLUGIN_DIR );
|
168 |
+
$bps_themes_dir = str_replace( WP_CONTENT_DIR, '', get_theme_root() );
|
169 |
+
$bps_plugin_dir_no_slash = str_replace( array( '\\', '/'), '', $bps_plugin_dir );
|
170 |
+
$bps_themes_dir_no_slash = str_replace( array( '\\', '/'), '', $bps_themes_dir );
|
171 |
+
|
172 |
+
// get_home_path() and ABSPATH are different paths for GWIOD site types. Home = Parent folder. ABSPATH = WP Core folders and files.
|
173 |
+
// They are the same for all other WP site types. Not sure about Network subdomain/Domain Mapping site types.
|
174 |
+
// Note: The FilterIterator excludes any dir checkboxes that are not checked in the MScan Website Folders & Files To Scan option.
|
175 |
+
// Other WordPress installation folders are excluded in the FilterIterator
|
176 |
+
$source = get_home_path();
|
177 |
|
178 |
if ( is_dir($source) ) {
|
179 |
|
181 |
$filterItr = new BPSMScanRecursiveFilterIterator($dirItr);
|
182 |
$iterator = new RecursiveIteratorIterator($filterItr, RecursiveIteratorIterator::SELF_FIRST);
|
183 |
|
|
|
184 |
$file_path_array = array();
|
185 |
$wp_core_file_array = array();
|
186 |
+
//$total_website_files_array = array();
|
187 |
$skipped_image_file_path_array = array();
|
188 |
$skipped_nonimage_file_path_array = array();
|
189 |
|
190 |
+
// WP Core files hashes are created for root WP Core files.
|
191 |
+
// Note: If a hacker copies the WP Core index.php file to another folder somewhere and adds additional hacker code in the index.php file
|
192 |
+
// the scan result will be: Altered or unknown WP Core file instead of a pattern match result.
|
193 |
$wp_core_root_file_array = array( 'wp-activate.php', 'wp-blog-header.php', 'wp-comments-post.php', 'wp-config-sample.php', 'wp-cron.php', 'wp-links-opml.php', 'wp-load.php', 'wp-login.php', 'wp-mail.php', 'wp-settings.php', 'wp-signup.php', 'wp-trackback.php' );
|
194 |
|
195 |
foreach ( $iterator as $files ) {
|
204 |
|
205 |
} else {
|
206 |
|
207 |
+
if ( ! preg_match( '/(.*)((\/|\\\)'.$bps_wpcontent_dir.'(\/|\\\)bps-backup(\/|\\\))(.*)/', $files->getPathname() ) && ! preg_match( '/(.*)((\/|\\\)'.$bps_wpcontent_dir.'(\/|\\\)'.$bps_plugin_dir_no_slash.'(\/|\\\))(.*)/', $files->getPathname() ) && ! preg_match( '/(.*)((\/|\\\)'.$bps_wpcontent_dir.'(\/|\\\)'.$bps_themes_dir_no_slash.'(\/|\\\))(.*)/', $files->getPathname() ) && ! preg_match( '/(.*)((\/|\\\)'.$bps_wpcontent_dir.'(\/|\\\)index\.php)/', $files->getPathname() ) ) {
|
208 |
|
209 |
+
//$total_website_files_array[] = $files->getPathname();
|
210 |
|
211 |
if ( $files->getFilename() == 'index.php' ) {
|
212 |
+
$pattern = '/define\((\s|)\'WP_USE_THEMES/';
|
213 |
$check_string1 = file_get_contents( $files->getPath() . '/index.php' );
|
214 |
+
$pos1 = preg_match( $pattern, $check_string1 );
|
215 |
}
|
216 |
|
217 |
if ( $files->getFilename() == 'readme.html' ) {
|
246 |
$exclude_dirs_pattern = '/(\/bps-no-dirs\/)/';
|
247 |
}
|
248 |
|
249 |
+
// Note: Other WordPress site folders and files are filtered out in the FilterIterator.
|
250 |
+
// Plugin and Theme folders are not included in this Iteration and are done separately in their own Iterations.
|
251 |
+
// I've seen wp-admin and wp-includes folder names used in Plugin's and Theme's folder names.
|
252 |
+
// No need to use: DIRECTORY_SEPARATOR here. Use simple RegEx instead.
|
253 |
$core_pattern = '/(.*)((\/|\\\)wp-admin(\/|\\\)|(\/|\\\)wp-includes(\/|\\\))(.*)/';
|
254 |
|
255 |
if ( preg_match( $core_pattern, $files->getPathname() ) || $files->getFilename() == 'index.php' && $pos1 !== false || $files->getFilename() == 'readme.html' && $pos2 !== false || $files->getFilename() == 'xmlrpc.php' && $pos3 !== false || in_array($files->getFilename(), $wp_core_root_file_array) ) {
|
262 |
|
263 |
if ( $files->getSize() <= $MScan_options['mscan_max_file_size'] * 1024 ) {
|
264 |
|
265 |
+
if ( $ext == 'htm' || $ext == 'html' || $ext == 'htaccess' || $ext == 'js' || $ext == 'php' || $ext == 'phps' || $ext == 'php5' || $ext == 'php4' || $ext == 'php3' || $ext == 'phtml' || $ext == 'phpt' || $ext == 'shtm' || $ext == 'shtml' || $ext == 'xhtml' || $ext == 'ico' || $ext == 'bak' ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
266 |
$file_path_array[] = $files->getPathname();
|
267 |
}
|
268 |
|
269 |
} else {
|
270 |
|
271 |
+
if ( $ext == 'htm' || $ext == 'html' || $ext == 'htaccess' || $ext == 'js' || $ext == 'php' || $ext == 'phps' || $ext == 'php5' || $ext == 'php4' || $ext == 'php3' || $ext == 'phtml' || $ext == 'phpt' || $ext == 'shtm' || $ext == 'shtml' || $ext == 'xhtml' || $ext == 'ico' || $ext == 'bak' ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
272 |
$skipped_nonimage_file_path_array[] = $files->getPathname();
|
273 |
}
|
274 |
}
|
277 |
}
|
278 |
}
|
279 |
} catch (RuntimeException $e) {
|
280 |
+
|
281 |
}
|
282 |
}
|
283 |
|
284 |
+
$skipped_file_path_array = $skipped_nonimage_file_path_array;
|
|
|
|
|
|
|
285 |
|
286 |
$MStable = $wpdb->prefix . "bpspro_mscan";
|
287 |
|
311 |
foreach ( $file_path_array as $key => $value ) {
|
312 |
|
313 |
if ( preg_match( '/index\.php/', $value ) ) {
|
314 |
+
$pattern = '/define\((\s|)\'WP_USE_THEMES/';
|
315 |
$check_string4 = file_get_contents( $value );
|
316 |
+
if ( preg_match( $pattern, $check_string4 ) ) {
|
|
|
317 |
unset($file_path_array[$key]);
|
318 |
}
|
319 |
}
|
339 |
}
|
340 |
}
|
341 |
|
342 |
+
foreach ( $skipped_file_path_array as $key => $value ) {
|
343 |
|
344 |
if ( in_array( $value, $mscan_file_ignore_array ) ) {
|
345 |
+
unset($skipped_file_path_array[$key]);
|
346 |
}
|
347 |
}
|
348 |
|
349 |
+
$mscan_dirs_array = array();
|
350 |
+
|
351 |
+
foreach ( $MScan_options['bps_mscan_dirs'] as $key => $value ) {
|
352 |
|
353 |
+
if ( $value == '1' ) {
|
354 |
+
$mscan_dirs_array[] = $key;
|
355 |
+
}
|
356 |
}
|
357 |
|
|
|
|
|
358 |
$total_wp_core_files = count($wp_core_file_array);
|
359 |
+
|
360 |
+
$plugins_dir = WP_PLUGIN_DIR;
|
361 |
+
|
362 |
+
$plugin_file_path_array = array();
|
363 |
+
|
364 |
+
if ( in_array( $bps_wpcontent_dir, $mscan_dirs_array ) ) {
|
365 |
+
|
366 |
+
if ( is_dir($plugins_dir) ) {
|
367 |
+
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($plugins_dir), RecursiveIteratorIterator::SELF_FIRST);
|
368 |
+
|
369 |
+
foreach ( $iterator as $files ) {
|
370 |
+
|
371 |
+
if ( $files->isFile() ) {
|
372 |
+
|
373 |
+
if ( $files->getPathname() != WP_PLUGIN_DIR . '/.htaccess' && $files->getPathname() != WP_PLUGIN_DIR . '\.htaccess' && $files->getPathname() != WP_PLUGIN_DIR . '\index.php' && $files->getPathname() != WP_PLUGIN_DIR . '/index.php' ) {
|
374 |
+
|
375 |
+
$plugin_file_path_array[] = $files->getPathname();
|
376 |
+
}
|
377 |
+
}
|
378 |
+
}
|
379 |
+
}
|
380 |
+
}
|
381 |
+
|
382 |
+
// 15.4: Get array of theme files.
|
383 |
+
$themes_dir = get_theme_root();
|
384 |
+
|
385 |
+
$theme_file_path_array = array();
|
386 |
+
|
387 |
+
if ( in_array( $bps_wpcontent_dir, $mscan_dirs_array ) ) {
|
388 |
+
|
389 |
+
if ( is_dir($themes_dir) ) {
|
390 |
+
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($themes_dir), RecursiveIteratorIterator::SELF_FIRST);
|
391 |
+
|
392 |
+
foreach ( $iterator as $files ) {
|
393 |
+
|
394 |
+
if ( $files->isFile() ) {
|
395 |
+
|
396 |
+
if ( $files->getPathname() != get_theme_root() . '\index.php' && $files->getPathname() != get_theme_root() . '/index.php' ) {
|
397 |
+
|
398 |
+
$theme_file_path_array[] = $files->getPathname();
|
399 |
+
}
|
400 |
+
}
|
401 |
+
}
|
402 |
+
}
|
403 |
+
}
|
404 |
+
|
405 |
+
if ( ! in_array( $bps_wpcontent_dir, $mscan_dirs_array ) ) {
|
406 |
+
$total_plugin_files = 0;
|
407 |
+
$total_theme_files = 0;
|
408 |
+
} else {
|
409 |
+
|
410 |
+
if ( ! empty($plugin_hashes) ) {
|
411 |
+
$total_plugin_files = count($plugin_hashes); // accurate
|
412 |
+
} else {
|
413 |
+
$total_plugin_files = count($plugin_file_path_array); // not accurate. will most likely be excessive estimated scan time.
|
414 |
+
}
|
415 |
+
|
416 |
+
if ( ! empty($theme_hashes) ) {
|
417 |
+
$total_theme_files = count($theme_hashes); // accurate
|
418 |
+
} else {
|
419 |
+
$total_theme_files = count($theme_file_path_array); // not accurate. will most likely be excessive estimated scan time.
|
420 |
+
}
|
421 |
+
}
|
422 |
+
|
423 |
$total_non_image_files = count($file_path_array);
|
|
|
424 |
$total_skipped_files = count($skipped_file_path_array);
|
425 |
+
$total_scan_files = $total_wp_core_files + $total_plugin_files + $total_theme_files + $total_non_image_files;
|
426 |
|
427 |
if ( $MScan_options['mscan_scan_skipped_files'] == 'On' ) {
|
428 |
|
430 |
|
431 |
} else {
|
432 |
|
|
|
433 |
fwrite( $handle, "Scan Time Calculation: Total Skipped Files (larger than ".$MScan_options['mscan_max_file_size']." KB): ".$total_skipped_files."\r\n" );
|
434 |
fwrite( $handle, "Scan Time Calculation: Total WP Core Files to Scan: ".$total_wp_core_files."\r\n" );
|
435 |
+
fwrite( $handle, "Scan Time Calculation: Total Plugin Files to Scan: ".$total_plugin_files."\r\n" );
|
436 |
+
fwrite( $handle, "Scan Time Calculation: Total Theme Files to Scan: ".$total_theme_files."\r\n" );
|
437 |
+
fwrite( $handle, "Scan Time Calculation: Total non-WP php, html, etc Files to Scan: ".$total_non_image_files."\r\n" );
|
438 |
+
fwrite( $handle, "Scan Time Calculation: Total Files to Scan: ".$total_scan_files."\r\n" );
|
439 |
}
|
440 |
|
441 |
if ( $MScan_options['bps_mscan_dirs'] != '' ) {
|
442 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
443 |
$mscan_dirs = implode( ', ', $mscan_dirs_array );
|
444 |
+
fwrite( $handle, "Scan Time Calculation: Website Folders & Files To Scan: ".$mscan_dirs."\r\n" );
|
445 |
}
|
446 |
|
447 |
+
if ( $MScan_options['mscan_exclude_dirs'] != '' ) {
|
448 |
+
|
449 |
+
$mscan_exclude_dirs = implode( '', explode( "\n", $MScan_options['mscan_exclude_dirs'] ) );
|
450 |
+
fwrite( $handle, "Scan Time Calculation: Excluded Folders: \r\n".$mscan_exclude_dirs."\r\n" );
|
451 |
+
}
|
452 |
+
|
453 |
+
// Core, Plugins and Themes file hash calculations (download, extraction, hash and cleanup)
|
454 |
$wp_hashes_file = WP_CONTENT_DIR . '/bps-backup/wp-hashes/wp-hashes.php';
|
455 |
$wp_hash_time = '0';
|
456 |
|
458 |
$check_string = file_get_contents($wp_hashes_file);
|
459 |
|
460 |
if ( ! strpos( $check_string, "WordPress $wp_version Hashes" ) ) {
|
461 |
+
$wp_hash_time = '45';
|
462 |
+
}
|
463 |
+
}
|
464 |
+
|
465 |
+
// Plugin Hash Time: Gets the total number of new plugins available for download, unzip and file hash.
|
466 |
+
// Note: $value['TextDomain'] is not reliable. Use $key instead.
|
467 |
+
$all_plugins = get_plugins();
|
468 |
+
|
469 |
+
$plugins_array = array();
|
470 |
+
$hello_dolly_plugin_array = array();
|
471 |
+
|
472 |
+
foreach ( $all_plugins as $key => $value ) {
|
473 |
+
|
474 |
+
if ( ! empty($key) ) {
|
475 |
+
|
476 |
+
$pos = strpos($key, '/');
|
477 |
+
$dolly_pos = strpos($value['Name'], 'Hello Dolly');
|
478 |
+
|
479 |
+
if ( $pos !== false ) {
|
480 |
+
|
481 |
+
$plugin_name = strstr($key, '/', true);
|
482 |
+
$plugins_array[$plugin_name] = $value['Version'];
|
483 |
+
|
484 |
+
} else {
|
485 |
+
|
486 |
+
if ( $dolly_pos !== false ) {
|
487 |
+
$hello_dolly_plugin_array['hello-dolly'] = $value['Version'];
|
488 |
+
}
|
489 |
+
}
|
490 |
+
}
|
491 |
+
}
|
492 |
+
|
493 |
+
$plugins_array_merged = array_merge($plugins_array, $hello_dolly_plugin_array);
|
494 |
+
$mscan_plugin_hash = get_option('bulletproof_security_options_mscan_plugin_hash');
|
495 |
+
|
496 |
+
// First MScan run: Not going to bother doing a check for zip files that are not downloadable. ie premium, paid, custom or no zip file version #.
|
497 |
+
// Better to over time than under time on the first run.
|
498 |
+
if ( ! isset( $mscan_plugin_hash['bps_mscan_plugin_hash_version_check'] ) ) {
|
499 |
+
|
500 |
+
$plugin_array_count = count($plugins_array_merged);
|
501 |
+
$plugin_hash_time = $plugin_array_count * 5;
|
502 |
+
|
503 |
+
} else {
|
504 |
+
|
505 |
+
$plugin_array_diff = isset( $mscan_plugin_hash['bps_mscan_plugin_hash_version_check'] ) ? array_diff( $plugins_array_merged, $mscan_plugin_hash['bps_mscan_plugin_hash_version_check'] ) : array();
|
506 |
+
$plugin_array_count = count($plugin_array_diff);
|
507 |
+
|
508 |
+
// The base processing time of the zip download function is around 12 seconds on Windows XAMPP if 0 plugins are downloaded.
|
509 |
+
// The base processing time of the zip download function is between 5-10 seconds on Linux Live hosted sites if 0 plugins are downloaded.
|
510 |
+
if ( $plugin_array_count <= 4 ) {
|
511 |
+
$plugin_hash_time = 8;
|
512 |
+
} else {
|
513 |
+
$plugin_hash_time = $plugin_array_count * 5;
|
514 |
+
}
|
515 |
+
}
|
516 |
+
|
517 |
+
// Theme Hash Time: Gets the total number of new themes available for download, unzip and file hash.
|
518 |
+
$all_themes = wp_get_themes();
|
519 |
+
$all_themes_array = array();
|
520 |
+
|
521 |
+
foreach ( $all_themes as $key => $value ) {
|
522 |
+
|
523 |
+
if ( ! empty($key) ) {
|
524 |
+
$all_themes_array[$key] = $value['Version'];
|
525 |
}
|
526 |
}
|
527 |
+
|
528 |
+
$mscan_theme_hash = get_option('bulletproof_security_options_mscan_theme_hash');
|
529 |
+
|
530 |
+
// First MScan run: Not going to bother doing a check for zip files that are not downloadable. ie premium, paid, custom or no zip file version #.
|
531 |
+
// Better to over time than under time on the first run.
|
532 |
+
if ( ! isset( $mscan_theme_hash['bps_mscan_theme_hash_version_check'] ) ) {
|
533 |
+
|
534 |
+
$theme_array_count = count($all_themes_array);
|
535 |
+
$theme_hash_time = $theme_array_count * 5;
|
536 |
+
|
537 |
+
} else {
|
538 |
|
539 |
+
$theme_array_diff = isset( $mscan_theme_hash['bps_mscan_theme_hash_version_check'] ) ? array_diff( $all_themes_array, $mscan_theme_hash['bps_mscan_theme_hash_version_check'] ) : array();
|
540 |
+
$theme_array_count = count($theme_array_diff);
|
541 |
+
|
542 |
+
// The base processing time of the zip download function is around 12 seconds on Windows XAMPP if 0 themes are downloaded.
|
543 |
+
// The base processing time of the zip download function is less than 1 second on Linux Live hosted sites if 0 themes are downloaded.
|
544 |
+
if ( $theme_array_count <= 3 ) {
|
545 |
+
$theme_hash_time = 0;
|
546 |
+
} else {
|
547 |
+
$theme_hash_time = $theme_array_count * 5;
|
548 |
+
}
|
549 |
+
}
|
550 |
+
|
551 |
+
## Scan Time Estimate Calculations: see notes in DW malware-scanner.php file.
|
552 |
if ( $MScan_options['mscan_scan_skipped_files'] == 'On' ) {
|
553 |
|
554 |
$filesize_array = array();
|
560 |
}
|
561 |
}
|
562 |
|
|
|
563 |
$total_filesize_bytes = array_sum($filesize_array);
|
564 |
$mbytes = number_format( $total_filesize_bytes / ( 1024 * 1024 ), 2 );
|
565 |
$skipped_files_time_math = $mbytes * 1.15;
|
566 |
$total_time_estimate = round($skipped_files_time_math);
|
567 |
|
568 |
+
$bps_mscan_time_remaining = time() + $wp_hash_time + $plugin_hash_time + $theme_hash_time + $total_time_estimate;
|
|
|
569 |
|
|
|
570 |
fwrite( $handle, "Scan Time Calculation: Total Size of all Skipped Files: ".$mbytes." MB\r\n" );
|
571 |
+
fwrite( $handle, "Scan Time Calculation: WP Core Hash Time Estimate: +".$wp_hash_time." Seconds\r\n" );
|
572 |
+
fwrite( $handle, "Scan Time Calculation: Plugins Hash Time Estimate: +".$plugin_hash_time." Seconds\r\n" );
|
573 |
+
fwrite( $handle, "Scan Time Calculation: Themes Hash Time Estimate: +".$theme_hash_time." Seconds\r\n" );
|
574 |
fwrite( $handle, "Scan Time Calculation: Skipped Files Time Estimate: ".$total_time_estimate." Seconds\r\n" );
|
575 |
|
576 |
} else {
|
577 |
|
|
|
578 |
$wp_core_files_time_math = $total_wp_core_files / 400;
|
579 |
$wp_core_files_time = round($wp_core_files_time_math);
|
580 |
+
$plugin_files_time_math = $total_plugin_files / 850;
|
581 |
+
$plugin_files_time = round($plugin_files_time_math);
|
582 |
+
$theme_files_time_math = $total_theme_files / 850;
|
583 |
+
$theme_files_time = round($theme_files_time_math);
|
584 |
+
|
585 |
+
if ( version_compare( PHP_VERSION, '7.0.0' ) >= 0 ) {
|
586 |
+
|
587 |
+
$non_image_files_time_math = $total_non_image_files / 150;
|
588 |
+
$non_image_files_time = round($non_image_files_time_math);
|
589 |
+
|
590 |
+
} else {
|
591 |
+
|
592 |
+
$non_image_files_time_math = $total_non_image_files / 100;
|
593 |
+
$non_image_files_time = round($non_image_files_time_math);
|
594 |
+
}
|
595 |
|
596 |
$rows = '';
|
597 |
$size = 0;
|
605 |
$db_size_time_math = $kbytes / 4000;
|
606 |
$db_size_time = round($db_size_time_math);
|
607 |
|
608 |
+
/* Testing: Simulating a scan estimate time that is less than the actual scan time: -40 seconds.
|
609 |
+
$simulation_test = time() - 40;
|
610 |
+
|
611 |
+
$bps_mscan_time_remaining = $simulation_test + $wp_hash_time + $plugin_hash_time + $theme_hash_time + $wp_core_files_time + $plugin_files_time +
|
612 |
+
$theme_files_time + $non_image_files_time + $db_size_time;
|
613 |
+
*/
|
614 |
+
|
615 |
+
// Linux Live Host Test Results: I calibrated several other things so a base time adjustment is not needed.
|
616 |
+
// future if needed: create sapi conditions if needed.
|
617 |
+
$linux_base_time = 0;
|
618 |
+
|
619 |
+
$bps_mscan_time_remaining = time() + $wp_hash_time + $plugin_hash_time + $theme_hash_time + $wp_core_files_time + $plugin_files_time +
|
620 |
+
$theme_files_time + $non_image_files_time + $db_size_time + $linux_base_time;
|
621 |
+
|
622 |
+
// Note: On first daily scan the script execution time (actual scan time) will be around 30 seconds longer. ie caching/Zend, etc. mechanisms for future scans.
|
623 |
+
// Pending: Live hosted site testing. The longer daily scan on first run may only occur on Windows XAMPP, etc.
|
624 |
+
// A typical/average scan in the normal/average file scan range will have a scan time estimate of +10 to +15 seconds vs the actual scan time.
|
625 |
+
// It is better for the scan estimate to be over actual scan time vs under actual scan time.
|
626 |
+
// So if someone has a very low number of non-WP files then the estimated and actual scan times will be within 15 seconds.
|
627 |
+
// The greater the number of non-WP files to scan the greater the estimated time will be vs the actual scan time.
|
628 |
+
// So the estimated scan time for a very large number of non-WP files will increase vs the actual scan time. Should still be within 30 seconds max.
|
629 |
+
// Tested scanning 16K non-WP files + WP files = 20K files. Scan completes in 1:20 minutes on first daily scan and 50 seconds on next scans.
|
630 |
+
// The typical/average number of files scanned should be between 3,000 - 8,000 files.
|
631 |
+
// Normal total file number scan range: Over 1,000 - less than 12,000. Anything below or above this range is handled in my js code.
|
632 |
+
$total_time_estimate = $wp_hash_time + $plugin_hash_time + $theme_hash_time + $wp_core_files_time + $plugin_files_time + $theme_files_time +
|
633 |
+
$non_image_files_time + $db_size_time + $linux_base_time;
|
634 |
+
|
635 |
+
fwrite( $handle, "Scan Time Calculation: WP Core Hash Time Estimate: +".$wp_hash_time." Seconds\r\n" );
|
636 |
+
fwrite( $handle, "Scan Time Calculation: Plugins Hash Time Estimate: +".$plugin_hash_time." Seconds\r\n" );
|
637 |
+
fwrite( $handle, "Scan Time Calculation: Themes Hash Time Estimate: +".$theme_hash_time." Seconds\r\n" );
|
638 |
fwrite( $handle, "Scan Time Calculation: WP Core Files Time Estimate: +".$wp_core_files_time." Seconds\r\n" );
|
639 |
+
fwrite( $handle, "Scan Time Calculation: Plugin Files Time Estimate: +".$plugin_files_time." Seconds\r\n" );
|
640 |
+
fwrite( $handle, "Scan Time Calculation: Theme Files Time Estimate: +".$theme_files_time." Seconds\r\n" );
|
641 |
+
fwrite( $handle, "Scan Time Calculation: non-WP php, html, etc Files Time Estimate: +".$non_image_files_time." Seconds\r\n" );
|
642 |
fwrite( $handle, "Scan Time Calculation: DB Size Time Estimate: +".$db_size_time." Seconds\r\n" );
|
643 |
+
fwrite( $handle, "Scan Time Calculation: SAPI Variance Time Estimate: +".$linux_base_time." Seconds\r\n" );
|
644 |
fwrite( $handle, "Scan Time Calculation: Scan Time Estimate: ".$total_time_estimate." Seconds\r\n" );
|
645 |
}
|
646 |
|
647 |
$MScan_status = get_option('bulletproof_security_options_MScan_status');
|
648 |
+
|
649 |
$MScan_status_db = array(
|
650 |
'bps_mscan_time_start' => time(),
|
651 |
'bps_mscan_time_stop' => $MScan_status['bps_mscan_time_stop'],
|
654 |
'bps_mscan_status' => '2',
|
655 |
'bps_mscan_last_scan_timestamp' => $MScan_status['bps_mscan_last_scan_timestamp'],
|
656 |
'bps_mscan_total_time' => $total_time_estimate,
|
657 |
+
'bps_mscan_total_website_files' => '',
|
658 |
'bps_mscan_total_wp_core_files' => $total_wp_core_files,
|
659 |
'bps_mscan_total_non_image_files' => $total_non_image_files,
|
660 |
+
'bps_mscan_total_image_files' => '',
|
661 |
'bps_mscan_total_all_scannable_files' => $total_scan_files,
|
662 |
'bps_mscan_total_skipped_files' => $total_skipped_files,
|
663 |
'bps_mscan_total_suspect_files' => $MScan_status['bps_mscan_total_suspect_files'],
|
664 |
'bps_mscan_suspect_skipped_files' => $MScan_status['bps_mscan_suspect_skipped_files'],
|
665 |
'bps_mscan_total_suspect_db' => $MScan_status['bps_mscan_total_suspect_db'],
|
666 |
+
'bps_mscan_total_ignored_files' => $MScan_status['bps_mscan_total_ignored_files'],
|
667 |
+
'bps_mscan_total_plugin_files' => $total_plugin_files,
|
668 |
+
'bps_mscan_total_theme_files' => $total_theme_files
|
669 |
);
|
670 |
|
671 |
foreach( $MScan_status_db as $key => $value ) {
|
684 |
$seconds_format = $seconds == 0 ? "00" : ($seconds < 10 ? "0".$seconds : $seconds);
|
685 |
|
686 |
$file_count_log = 'Scan Time Calculation Completion Time: '. $hours_format . ':'. $minutes_format . ':' . $seconds_format;
|
687 |
+
$MScan_status = get_option('bulletproof_security_options_MScan_status');
|
688 |
|
689 |
+
fwrite( $handle, "MScan Status: ".$MScan_status['bps_mscan_status']."\r\n" );
|
690 |
fwrite( $handle, "$file_count_log\r\n" );
|
691 |
fclose($handle);
|
692 |
+
|
693 |
return true;
|
694 |
}
|
695 |
|
696 |
+
// MScan 2.0: File & Database Scanner
|
697 |
+
// Faster, more accurate and most importantly no longer buggy.
|
698 |
+
// Notes:
|
699 |
+
// MScan Status 2 is set at the end of the scan time estimate function and means that other functions (zip download, file hash and file scanning) are still being processed.
|
700 |
+
// MScan Status 3 is set at the end of this file scanning function and means that all functions (zip download, file hash and file scanning) have completed.
|
701 |
+
function bpsPro_mscan_file_scan($mstime) {
|
702 |
+
global $wp_version, $wpdb, $plugin_hashes, $theme_hashes;
|
703 |
|
704 |
$time_start = microtime( true );
|
705 |
|
706 |
+
// Simulating a scan that exceeds the scan estimate time significantly.
|
707 |
+
// Note: My js mscan status 2 condition for this scenario works fine except when doing the first scan on a new day.
|
708 |
+
// Example: Added new folders to scan. The js mscan status 2 condition briefly flashed and the scan status results were displayed (mscan status: 4)
|
709 |
+
// but the scan results were for the previous scan. After the scan actually completed and refreshing the mscan page the scan results displayed the correct scan results.
|
710 |
+
// This issue may only happen on Windows XAMPP. This has to be some sort of caching issue. DB cache, Browser cache, Zend???
|
711 |
+
//sleep(80);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
712 |
|
713 |
+
$MScan_options = get_option('bulletproof_security_options_MScan');
|
714 |
+
$mstime = ! isset($MScan_options['mscan_max_time_limit']) ? '300' : $MScan_options['mscan_max_time_limit'];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
715 |
|
716 |
+
set_time_limit($mstime);
|
717 |
+
ini_set('max_execution_time', $mstime);
|
718 |
$timeNow = time();
|
719 |
$gmt_offset = get_option( 'gmt_offset' ) * 3600;
|
720 |
$timestamp = date_i18n(get_option('date_format'), strtotime("11/15-1976")) . ' ' . date_i18n(get_option('time_format'), $timeNow + $gmt_offset);
|
721 |
$mscan_log = WP_CONTENT_DIR . '/bps-backup/logs/mscan_log.txt';
|
722 |
+
$MScanStop = WP_CONTENT_DIR . '/bps-backup/master-backups/mscan-stop.txt';
|
723 |
+
$send_email = '';
|
724 |
|
725 |
$handle = fopen( $mscan_log, 'a' );
|
726 |
|
727 |
+
$mscan_plugin_hash_new_array_keys = array();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
728 |
|
729 |
+
if ( get_option( 'bulletproof_security_options_mscan_p_hash_new' ) ) {
|
|
|
|
|
|
|
730 |
|
731 |
+
$mscan_plugin_hash_new = get_option('bulletproof_security_options_mscan_p_hash_new');
|
732 |
+
$mscan_plugin_hash_new_array_keys = array();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
733 |
|
734 |
+
// Get the new hash array keys that have a value otherwise return an empty array of array keys.
|
735 |
+
foreach ( $mscan_plugin_hash_new['bps_mscan_plugin_hash_paths_new'] as $key => $value ) {
|
736 |
|
737 |
+
foreach ( $value as $inner_key => $inner_value ) {
|
738 |
|
739 |
+
if ( ! empty($inner_value) ) {
|
740 |
+
$mscan_plugin_hash_new_array_keys[] = $key;
|
741 |
+
}
|
|
|
742 |
}
|
743 |
}
|
744 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
745 |
|
746 |
+
if ( get_option( 'bulletproof_security_options_mscan_t_hash_new' ) ) {
|
747 |
|
748 |
+
$mscan_theme_hash_new = get_option('bulletproof_security_options_mscan_t_hash_new');
|
749 |
+
$mscan_theme_hash_new_array_keys = array();
|
|
|
750 |
|
751 |
+
// Get the new hash array keys that have a value otherwise return an empty array of array keys.
|
752 |
+
foreach ( $mscan_theme_hash_new['bps_mscan_theme_hash_paths_new'] as $key => $value ) {
|
753 |
|
754 |
+
foreach ( $value as $inner_key => $inner_value ) {
|
755 |
|
756 |
+
if ( ! empty($inner_value) ) {
|
757 |
+
$mscan_theme_hash_new_array_keys[] = $key;
|
758 |
+
}
|
759 |
+
}
|
760 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
761 |
}
|
762 |
|
763 |
+
// First time MScan scan or if someone uses the Delete File Hashes Tool or if plugins or themes are installed/updated/uploaded.
|
764 |
+
// This is a quick and simple way to deal with people who are plugin and theme hoarders to ensure things don't go off the rails.
|
765 |
+
// Also want to make sure the plugin and theme hash files are already created before running a scan.
|
766 |
+
// Note: The plugin and theme hash maker functions will only create new hash files based on these conditions.
|
767 |
+
// Use MScan Status: 3 and let the iframe js script update the status to 4 in case the estimated scan time is excessive.
|
768 |
+
if ( ! get_option('bulletproof_security_options_mscan_theme_hash') || ! get_option('bulletproof_security_options_mscan_plugin_hash') || ! empty($mscan_plugin_hash_new_array_keys ) || ! empty($mscan_theme_hash_new_array_keys ) ) {
|
769 |
|
770 |
+
$MScan_status = get_option('bulletproof_security_options_MScan_status');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
771 |
|
772 |
+
$MScan_status_db = array(
|
773 |
+
'bps_mscan_time_start' => $MScan_status['bps_mscan_time_start'],
|
774 |
+
'bps_mscan_time_stop' => $MScan_status['bps_mscan_time_stop'],
|
775 |
+
'bps_mscan_time_end' => $MScan_status['bps_mscan_time_end'],
|
776 |
+
'bps_mscan_time_remaining' => $MScan_status['bps_mscan_time_remaining'],
|
777 |
+
'bps_mscan_status' => '3',
|
778 |
+
'bps_mscan_last_scan_timestamp' => $MScan_status['bps_mscan_last_scan_timestamp'],
|
779 |
+
'bps_mscan_total_time' => $MScan_status['bps_mscan_total_time'],
|
780 |
+
'bps_mscan_total_website_files' => '',
|
781 |
+
'bps_mscan_total_wp_core_files' => $MScan_status['bps_mscan_total_wp_core_files'],
|
782 |
+
'bps_mscan_total_non_image_files' => $MScan_status['bps_mscan_total_non_image_files'],
|
783 |
+
'bps_mscan_total_image_files' => '',
|
784 |
+
'bps_mscan_total_all_scannable_files' => 'New Hash Files Created: Run A New Scan',
|
785 |
+
'bps_mscan_total_skipped_files' => $MScan_status['bps_mscan_total_skipped_files'],
|
786 |
+
'bps_mscan_total_suspect_files' => $MScan_status['bps_mscan_total_suspect_files'],
|
787 |
+
'bps_mscan_suspect_skipped_files' => $MScan_status['bps_mscan_suspect_skipped_files'],
|
788 |
+
'bps_mscan_total_suspect_db' => $MScan_status['bps_mscan_total_suspect_db'],
|
789 |
+
'bps_mscan_total_ignored_files' => $MScan_status['bps_mscan_total_ignored_files'],
|
790 |
+
'bps_mscan_total_plugin_files' => $MScan_status['bps_mscan_total_plugin_files'],
|
791 |
+
'bps_mscan_total_theme_files' => $MScan_status['bps_mscan_total_theme_files']
|
792 |
+
);
|
793 |
+
|
794 |
+
foreach( $MScan_status_db as $key => $value ) {
|
795 |
+
update_option('bulletproof_security_options_MScan_status', $MScan_status_db);
|
796 |
+
}
|
797 |
|
798 |
+
fwrite( $handle, "Scanning Files: Files not scanned: First time scan, the Delete File Hashes Tool was used or plugins/themes installed/updated.\r\n" );
|
|
|
799 |
fclose($handle);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
800 |
|
801 |
+
return;
|
802 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
803 |
|
804 |
+
$MScan_status = get_option('bulletproof_security_options_MScan_status');
|
805 |
|
806 |
+
fwrite( $handle, "Scanning Files: Start scanning files.\r\n" );
|
807 |
+
fwrite( $handle, "MScan Status: ".$MScan_status['bps_mscan_status']."\r\n" );
|
808 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
809 |
$bps_wpcontent_dir = str_replace( ABSPATH, '', WP_CONTENT_DIR );
|
810 |
+
$bps_plugin_dir = str_replace( WP_CONTENT_DIR, '', WP_PLUGIN_DIR );
|
811 |
+
$bps_themes_dir = str_replace( WP_CONTENT_DIR, '', get_theme_root() );
|
812 |
+
$bps_plugin_dir_no_slash = str_replace( array( '\\', '/'), '', $bps_plugin_dir );
|
813 |
+
$bps_themes_dir_no_slash = str_replace( array( '\\', '/'), '', $bps_themes_dir );
|
814 |
+
|
815 |
+
// get_home_path() and ABSPATH are different paths for GWIOD site types. Home = Parent folder. ABSPATH = WP Core folders and files.
|
816 |
+
// They are the same for all other WP site types. Not sure about Network subdomain/Domain Mapping site types.
|
817 |
+
// Note: The FilterIterator excludes any dir checkboxes that are not checked in the MScan Website Folders & Files To Scan option.
|
818 |
+
// Other WordPress installation folders are excluded in the FilterIterator
|
819 |
+
$source = get_home_path();
|
820 |
|
|
|
|
|
|
|
|
|
|
|
|
|
821 |
if ( is_dir($source) ) {
|
822 |
|
823 |
$dirItr = new RecursiveDirectoryIterator($source);
|
824 |
$filterItr = new BPSMScanRecursiveFilterIterator($dirItr);
|
825 |
$iterator = new RecursiveIteratorIterator($filterItr, RecursiveIteratorIterator::SELF_FIRST);
|
826 |
|
|
|
827 |
$file_path_array = array();
|
828 |
$wp_core_file_array = array();
|
829 |
+
//$total_website_files_array = array();
|
830 |
$skipped_image_file_path_array = array();
|
831 |
$skipped_nonimage_file_path_array = array();
|
832 |
|
833 |
+
// WP Core files hashes are created for root WP Core files.
|
834 |
+
// Note: If a hacker copies the WP Core index.php file to another folder somewhere and adds additional hacker code in the index.php file
|
835 |
+
// the scan result will be: Altered or unknown WP Core file instead of a pattern match result.
|
836 |
$wp_core_root_file_array = array( 'wp-activate.php', 'wp-blog-header.php', 'wp-comments-post.php', 'wp-config-sample.php', 'wp-cron.php', 'wp-links-opml.php', 'wp-load.php', 'wp-login.php', 'wp-mail.php', 'wp-settings.php', 'wp-signup.php', 'wp-trackback.php' );
|
837 |
|
838 |
foreach ( $iterator as $files ) {
|
847 |
|
848 |
} else {
|
849 |
|
850 |
+
if ( ! preg_match( '/(.*)((\/|\\\)'.$bps_wpcontent_dir.'(\/|\\\)bps-backup(\/|\\\))(.*)/', $files->getPathname() ) && ! preg_match( '/(.*)((\/|\\\)'.$bps_wpcontent_dir.'(\/|\\\)'.$bps_plugin_dir_no_slash.'(\/|\\\))(.*)/', $files->getPathname() ) && ! preg_match( '/(.*)((\/|\\\)'.$bps_wpcontent_dir.'(\/|\\\)'.$bps_themes_dir_no_slash.'(\/|\\\))(.*)/', $files->getPathname() ) && ! preg_match( '/(.*)((\/|\\\)'.$bps_wpcontent_dir.'(\/|\\\)index\.php)/', $files->getPathname() ) ) {
|
851 |
|
852 |
+
//$total_website_files_array[] = $files->getPathname();
|
853 |
|
854 |
if ( $files->getFilename() == 'index.php' ) {
|
855 |
+
$pattern = '/define\((\s|)\'WP_USE_THEMES/';
|
856 |
$check_string1 = file_get_contents( $files->getPath() . '/index.php' );
|
857 |
+
$pos1 = preg_match( $pattern, $check_string1 );
|
858 |
}
|
859 |
+
|
860 |
if ( $files->getFilename() == 'readme.html' ) {
|
861 |
$check_string2 = file_get_contents( $files->getPath() . '/readme.html' );
|
862 |
$pos2 = strpos( $check_string2, "https://wordpress.org/" );
|
866 |
$check_string3 = file_get_contents( $files->getPath() . '/xmlrpc.php' );
|
867 |
$pos3 = strpos( $check_string3, "XML-RPC protocol support for WordPress" );
|
868 |
}
|
869 |
+
|
870 |
if ( $MScan_options['mscan_exclude_dirs'] != '' ) {
|
871 |
|
872 |
$mscan_exclude_dirs = str_replace('\\\\', '\\', $MScan_options['mscan_exclude_dirs']);
|
883 |
|
884 |
$glue = implode("", $mscan_exclude_dirs_regex_array);
|
885 |
$mscan_exclude_dir_regex = preg_replace( '/\|$/', '', $glue);
|
886 |
+
$exclude_dirs_pattern = '/('.$mscan_exclude_dir_regex.')/'; // file_path_array preg_match condition.
|
887 |
|
888 |
} else {
|
889 |
$exclude_dirs_pattern = '/(\/bps-no-dirs\/)/';
|
890 |
}
|
891 |
|
892 |
+
// Note: Other WordPress site folders and files are filtered out in the FilterIterator.
|
893 |
+
// Plugin and Theme folders are not included in this Iteration and are done separately in their own Iterations.
|
894 |
+
// I've seen wp-admin and wp-includes folder names used in Plugin's and Theme's folder names.
|
895 |
+
// No need to use: DIRECTORY_SEPARATOR here. Use simple RegEx instead.
|
896 |
$core_pattern = '/(.*)((\/|\\\)wp-admin(\/|\\\)|(\/|\\\)wp-includes(\/|\\\))(.*)/';
|
897 |
|
898 |
if ( preg_match( $core_pattern, $files->getPathname() ) || $files->getFilename() == 'index.php' && $pos1 !== false || $files->getFilename() == 'readme.html' && $pos2 !== false || $files->getFilename() == 'xmlrpc.php' && $pos3 !== false || in_array($files->getFilename(), $wp_core_root_file_array) ) {
|
905 |
|
906 |
if ( $files->getSize() <= $MScan_options['mscan_max_file_size'] * 1024 ) {
|
907 |
|
908 |
+
if ( $ext == 'htm' || $ext == 'html' || $ext == 'htaccess' || $ext == 'js' || $ext == 'php' || $ext == 'phps' || $ext == 'php5' || $ext == 'php4' || $ext == 'php3' || $ext == 'phtml' || $ext == 'phpt' || $ext == 'shtm' || $ext == 'shtml' || $ext == 'xhtml' || $ext == 'ico' || $ext == 'bak' ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
909 |
$file_path_array[] = $files->getPathname();
|
910 |
}
|
911 |
|
912 |
} else {
|
913 |
|
914 |
+
if ( $ext == 'htm' || $ext == 'html' || $ext == 'htaccess' || $ext == 'js' || $ext == 'php' || $ext == 'phps' || $ext == 'php5' || $ext == 'php4' || $ext == 'php3' || $ext == 'phtml' || $ext == 'phpt' || $ext == 'shtm' || $ext == 'shtml' || $ext == 'xhtml' || $ext == 'ico' || $ext == 'bak' ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
915 |
$skipped_nonimage_file_path_array[] = $files->getPathname();
|
916 |
}
|
917 |
}
|
919 |
}
|
920 |
}
|
921 |
}
|
922 |
+
} catch (RuntimeException $e) {
|
923 |
+
|
924 |
+
}
|
925 |
+
}
|
926 |
+
|
927 |
+
// 15.4: Get array of plugin files if the wp-content host folder checkbox is checked else empty array.
|
928 |
+
$mscan_dirs_array = array();
|
929 |
+
|
930 |
+
foreach ( $MScan_options['bps_mscan_dirs'] as $key => $value ) {
|
931 |
+
|
932 |
+
if ( $value == '1' ) {
|
933 |
+
$mscan_dirs_array[] = $key;
|
934 |
+
}
|
935 |
+
}
|
936 |
+
|
937 |
+
// Whitelist BPS & other plugin's dynamic files - plugin files that are automatically edited/changed after plugin update or installation.
|
938 |
+
// Maybe create a new MScan option to turn this On|Off? ie Whitelist Known Dynamic Plugin Files > On|Off
|
939 |
+
$bps_plugin_files_whitelist = '/(.*)((\/|\\\)'.$bps_wpcontent_dir.'(\/|\\\)'.$bps_plugin_dir_no_slash.'(\/|\\\)bulletproof-security(.*)(\.htaccess|\.zip|plugins-htaccess-master\.txt|class\.php|plugins-allow-from\.txt|sec-log-master\.txt|bps-maintenance-values\.php))/';
|
940 |
+
|
941 |
+
$other_plugins_files_whitelist = '/(.*)((\/|\\\)'.$bps_wpcontent_dir.'(\/|\\\)'.$bps_plugin_dir_no_slash.'(\/|\\\)(tinymce-advanced(.*)tinymce-advanced\.php|google-sitemap-generator(.*)sitemap\.php))/';
|
942 |
+
|
943 |
+
$plugins_dir = WP_PLUGIN_DIR;
|
944 |
+
|
945 |
+
$plugin_file_path_array = array();
|
946 |
+
|
947 |
+
if ( in_array( $bps_wpcontent_dir, $mscan_dirs_array ) ) {
|
948 |
+
|
949 |
+
if ( is_dir($plugins_dir) ) {
|
950 |
+
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($plugins_dir), RecursiveIteratorIterator::SELF_FIRST);
|
951 |
+
|
952 |
+
foreach ( $iterator as $files ) {
|
953 |
+
|
954 |
+
if ( $files->isFile() ) {
|
955 |
+
|
956 |
+
if ( $files->getPathname() != WP_PLUGIN_DIR . '/.htaccess' && $files->getPathname() != WP_PLUGIN_DIR . '\.htaccess' && $files->getPathname() != WP_PLUGIN_DIR . '\index.php' && $files->getPathname() != WP_PLUGIN_DIR . '/index.php' && ! preg_match( $bps_plugin_files_whitelist, $files->getPathname() ) && ! preg_match( $other_plugins_files_whitelist, $files->getPathname() ) ) {
|
957 |
+
|
958 |
+
$plugin_file_path_array[] = $files->getPathname();
|
959 |
+
}
|
960 |
+
}
|
961 |
+
}
|
962 |
}
|
963 |
}
|
964 |
+
|
965 |
+
// 15.4: Get array of theme files.
|
966 |
+
// Note: For GWIOD site types Plugin and Theme files will always be scanned and cannot be excluded.
|
967 |
+
$themes_dir = get_theme_root();
|
968 |
+
|
969 |
+
$theme_file_path_array = array();
|
970 |
+
|
971 |
+
if ( in_array( $bps_wpcontent_dir, $mscan_dirs_array ) ) {
|
972 |
|
973 |
+
if ( is_dir($themes_dir) ) {
|
974 |
+
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($themes_dir), RecursiveIteratorIterator::SELF_FIRST);
|
975 |
+
|
976 |
+
foreach ( $iterator as $files ) {
|
977 |
+
|
978 |
+
if ( $files->isFile() ) {
|
979 |
+
|
980 |
+
if ( $files->getPathname() != get_theme_root() . '\index.php' && $files->getPathname() != get_theme_root() . '/index.php' ) {
|
981 |
+
|
982 |
+
$theme_file_path_array[] = $files->getPathname();
|
983 |
+
}
|
984 |
+
}
|
985 |
+
}
|
986 |
+
}
|
987 |
+
}
|
988 |
+
|
989 |
$skipped_file_path_array = array_merge($skipped_image_file_path_array, $skipped_nonimage_file_path_array);
|
990 |
|
991 |
$MStable = $wpdb->prefix . "bpspro_mscan";
|
1007 |
}
|
1008 |
}
|
1009 |
|
1010 |
+
## 15.3: MScan pattern matching code is now saved in the DB
|
1011 |
+
## 15.4: The "image patterns" DB option is no longer used.
|
|
|
1012 |
$mscan_db_pattern_match_options = get_option('bulletproof_security_options_mscan_patterns');
|
1013 |
|
1014 |
foreach ( $mscan_db_pattern_match_options['mscan_pattern_match_files'] as $key => $value ) {
|
1024 |
if ( $inner_key == 'php_patterns' ) {
|
1025 |
$php_pattern = $inner_value;
|
1026 |
}
|
|
|
|
|
|
|
1027 |
}
|
1028 |
}
|
1029 |
|
1072 |
}
|
1073 |
}
|
1074 |
}
|
1075 |
+
|
1076 |
$js_code_match = 0;
|
1077 |
$htaccess_code_match = 0;
|
1078 |
$php_code_match = 0;
|
1079 |
|
1080 |
+
// Skipped Files Off: All files under the Max File Size Limit setting are scanned in other words. MScan skipped file scanning On means ONLY scan skipped files.
|
1081 |
+
// Skipped files are files that are larger than the Max File Size Limit to Scan option setting. The default is 400KB
|
1082 |
+
// This section of code directly below adds new skipped files based on the $skipped_file_path_array array.
|
1083 |
if ( $MScan_options['mscan_scan_skipped_files'] == 'Off' ) {
|
1084 |
|
1085 |
$skipped_rows = 'skipped';
|
1115 |
}
|
1116 |
}
|
1117 |
|
1118 |
+
if ( $ext == 'htm' || $ext == 'html' || $ext == 'php' || $ext == 'phps' || $ext == 'php5' || $ext == 'php4' || $ext == 'php3' || $ext == 'phtml' || $ext == 'phpt' || $ext == 'shtm' || $ext == 'shtml' || $ext == 'xhtml' || $ext == 'ico' || $ext == 'bak' ) {
|
1119 |
|
1120 |
if ( ! in_array($value, $mscan_file_skipped_path_array) ) {
|
1121 |
$insert_rows = $wpdb->insert( $MStable, array( 'mscan_status' => '', 'mscan_type' => 'php|html|other', 'mscan_path' => $value, 'mscan_pattern' => '', 'mscan_skipped' => 'skipped', 'mscan_ignored' => '', 'mscan_db_table' => '', 'mscan_db_column' => '', 'mscan_db_pkid' => '', 'mscan_time' => current_time('mysql') ) );
|
1122 |
}
|
1123 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1124 |
}
|
1125 |
}
|
1126 |
|
1135 |
}
|
1136 |
}
|
1137 |
|
1138 |
+
if ( ! empty( $plugin_file_path_array ) ) {
|
1139 |
+
|
1140 |
+
foreach ( $plugin_file_path_array as $key => $value ) {
|
1141 |
+
|
1142 |
+
if ( preg_match( $exclude_dirs_pattern, $value ) ) {
|
1143 |
+
unset($plugin_file_path_array[$key]);
|
1144 |
+
}
|
1145 |
+
|
1146 |
+
if ( in_array( $value, $mscan_file_ignore_array ) ) {
|
1147 |
+
unset($plugin_file_path_array[$key]);
|
1148 |
+
}
|
1149 |
+
}
|
1150 |
+
}
|
1151 |
+
|
1152 |
+
if ( ! empty( $theme_file_path_array ) ) {
|
1153 |
+
|
1154 |
+
foreach ( $theme_file_path_array as $key => $value ) {
|
1155 |
+
|
1156 |
+
if ( preg_match( $exclude_dirs_pattern, $value ) ) {
|
1157 |
+
unset($theme_file_path_array[$key]);
|
1158 |
+
}
|
1159 |
+
|
1160 |
+
if ( in_array( $value, $mscan_file_ignore_array ) ) {
|
1161 |
+
unset($theme_file_path_array[$key]);
|
1162 |
+
}
|
1163 |
+
}
|
1164 |
+
}
|
1165 |
+
|
1166 |
foreach ( $file_path_array as $key => $value ) {
|
1167 |
|
1168 |
if ( preg_match( '/index\.php/', $value ) ) {
|
1169 |
+
$pattern = '/define\((\s|)\'WP_USE_THEMES/';
|
1170 |
$check_string4 = file_get_contents( $value );
|
1171 |
+
if ( preg_match( $pattern, $check_string4 ) ) {
|
|
|
1172 |
unset($file_path_array[$key]);
|
1173 |
}
|
1174 |
}
|
1175 |
+
|
1176 |
if ( preg_match( '/readme\.html/', $value ) ) {
|
1177 |
$check_string5 = file_get_contents( $value );
|
1178 |
$pos5 = strpos( $check_string5, "https://wordpress.org/" );
|
1194 |
}
|
1195 |
}
|
1196 |
|
1197 |
+
$blank_rows = ''; // $skipped_rows variable is higher up in this function.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1198 |
$MScanFileRows = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $MStable WHERE mscan_path != %s AND mscan_skipped != %s", $blank_rows, $skipped_rows ) );
|
1199 |
|
1200 |
+
// Prevents duplicate DB row inserts
|
1201 |
$mscan_file_path_array = array();
|
1202 |
|
1203 |
if ( $wpdb->num_rows != 0 ) {
|
1221 |
}
|
1222 |
|
1223 |
fwrite( $handle, "Scanning Files: Start WP Core file scan.\r\n" );
|
1224 |
+
//fwrite( $handle, "Scanning Files: Suspicious|Modified|Unknown WP Core files:\r\n" );
|
1225 |
|
1226 |
$core_dir_flip = array_flip($wp_core_file_array);
|
1227 |
|
1231 |
$core_md5_array[$key] = md5_file($key);
|
1232 |
}
|
1233 |
|
1234 |
+
require_once WP_CONTENT_DIR . '/bps-backup/wp-hashes/wp-hashes.php';
|
1235 |
|
1236 |
$core_diff_array = array_diff($core_md5_array, $wp_hashes);
|
1237 |
|
1253 |
// Not redundant - needs to be here
|
1254 |
if ( ! preg_match( '/(.*)(\/|\\\)wp-admin(\/|\\\).htaccess/', $key ) ) {
|
1255 |
|
1256 |
+
//fwrite( $handle, "Scanning Files WP Core: File: $key\r\n" );
|
1257 |
+
fwrite( $handle, "Scanning Files WP Core: Suspicious|Modified|Unknown WP Core file: $key\r\n" );
|
1258 |
|
1259 |
if ( ! in_array($key, $mscan_file_path_array) ) {
|
1260 |
|
1271 |
}
|
1272 |
|
1273 |
fwrite( $handle, "Scanning Files: WP Core file scan completed.\r\n" );
|
1274 |
+
|
1275 |
+
## 15.4: Plugin file hash comparison scanner
|
1276 |
+
// Notes: require_once for hash files is called in the Master AJAX function and in the Scheduled Scan Cron function.
|
1277 |
+
// The $plugin_hashes variable is the plugin file hash array.
|
1278 |
+
if ( ! empty( $plugin_file_path_array ) ) {
|
1279 |
+
|
1280 |
+
$plugins_hash_match = 0;
|
1281 |
+
|
1282 |
+
fwrite( $handle, "Scanning Files: Start Plugins file scan.\r\n" );
|
1283 |
+
//fwrite( $handle, "Scanning Files: Suspicious|Modified|Unknown Plugin files:\r\n" );
|
1284 |
+
|
1285 |
+
if ( empty($plugin_hashes) || $plugin_hashes == null ) {
|
1286 |
+
|
1287 |
+
fwrite( $handle, "Scanning Files: Plugins: The plugin-hashes.php array is empty or null. Plugin files will not be scanned.\r\n" );
|
1288 |
+
|
1289 |
+
} else {
|
1290 |
+
|
1291 |
+
$plugin_files_flip = array_flip($plugin_file_path_array);
|
1292 |
+
|
1293 |
+
$plugin_md5_array = array();
|
1294 |
+
|
1295 |
+
foreach ( $plugin_files_flip as $key => $value ) {
|
1296 |
+
$plugin_md5_array[$key] = md5_file($key);
|
1297 |
+
}
|
1298 |
+
|
1299 |
+
$plugin_diff_array = array_diff($plugin_md5_array, $plugin_hashes);
|
1300 |
+
|
1301 |
+
$mscan_nodownload = get_option('bulletproof_security_options_mscan_nodownload');
|
1302 |
+
|
1303 |
+
$plugin_hashes_file = WP_CONTENT_DIR . '/bps-backup/plugin-hashes/plugin-hashes.php';
|
1304 |
+
|
1305 |
+
if ( file_exists( $plugin_hashes_file ) ) {
|
1306 |
+
$plugin_hashes_file_contents = file_get_contents($plugin_hashes_file);
|
1307 |
+
}
|
1308 |
+
|
1309 |
+
$plugin_diff_array_clean = array();
|
1310 |
+
|
1311 |
+
// Unset premium/paid, custom plugins or plugins without a zip version # that do not exist in the Plugin Repo
|
1312 |
+
// unless the plugin exists in the plugin hashes array.
|
1313 |
+
foreach ( $plugin_diff_array as $key1 => $value1 ) {
|
1314 |
+
|
1315 |
+
foreach ( $mscan_nodownload['bps_plugin_nodownload'] as $key2 => $value2 ) {
|
1316 |
+
|
1317 |
+
if ( preg_match( '/(.*)'.$value2.'(.*)/', $key1, $matches ) && ! preg_match( '/##\sBEGIN\s'.$value2.'\s##/', $plugin_hashes_file_contents ) ) {
|
1318 |
+
|
1319 |
+
unset($key1);
|
1320 |
+
$key1 = ! isset($key1) ? '' : $key1; // PHP8 weirdness
|
1321 |
+
}
|
1322 |
+
}
|
1323 |
+
|
1324 |
+
if ( ! empty($key1) && ! preg_match( '/(.*)readme\.txt/', $key1 ) ) {
|
1325 |
+
|
1326 |
+
$plugin_diff_array_clean[] = $key1;
|
1327 |
+
}
|
1328 |
+
}
|
1329 |
+
|
1330 |
+
foreach ( $plugin_diff_array_clean as $key => $value ) {
|
1331 |
+
|
1332 |
+
if ( file_get_contents($MScanStop) != 'run' ) {
|
1333 |
+
fwrite( $handle, "Scanning Files: MScan Scanning was Stopped\r\n" );
|
1334 |
+
fclose($handle);
|
1335 |
+
exit();
|
1336 |
+
|
1337 |
+
} else {
|
1338 |
+
|
1339 |
+
if ( ! empty($plugin_diff_array_clean) ) {
|
1340 |
+
|
1341 |
+
$plugins_hash_match = 1;
|
1342 |
+
|
1343 |
+
fwrite( $handle, "Scanning Files: Plugins: Suspicious|Modified|Unknown Plugin file: $value\r\n" );
|
1344 |
+
|
1345 |
+
if ( ! in_array($value, $mscan_file_path_array) ) {
|
1346 |
+
|
1347 |
+
if ( $insert_rows = $wpdb->insert( $MStable, array( 'mscan_status' => 'suspect', 'mscan_type' => 'plugins', 'mscan_path' => $value, 'mscan_pattern' => 'Altered or unknown Plugin file', 'mscan_skipped' => '', 'mscan_ignored' => '', 'mscan_db_table' => '', 'mscan_db_column' => '', 'mscan_db_pkid' => '', 'mscan_time' => current_time('mysql') ) ) ) {
|
1348 |
+
$send_email = 'send';
|
1349 |
+
}
|
1350 |
+
}
|
1351 |
+
}
|
1352 |
+
}
|
1353 |
+
}
|
1354 |
+
|
1355 |
+
if ( $plugins_hash_match == 0 ) {
|
1356 |
+
fwrite( $handle, "Scanning Files: Plugins: No Suspicious|Modified|Unknown Plugin files were found.\r\n" );
|
1357 |
+
}
|
1358 |
+
}
|
1359 |
+
fwrite( $handle, "Scanning Files: Plugins file scan completed.\r\n" );
|
1360 |
+
}
|
1361 |
+
|
1362 |
+
|
1363 |
+
## 15.4: Theme file hash comparison scanner
|
1364 |
+
// Notes: require_once for hash files is called in the Master AJAX function and in the Scheduled Scan Cron function.
|
1365 |
+
// The $theme_hashes variable is the plugin file hash array.
|
1366 |
+
if ( ! empty( $theme_file_path_array ) ) {
|
1367 |
+
|
1368 |
+
$themes_hash_match = 0;
|
1369 |
+
|
1370 |
+
fwrite( $handle, "Scanning Files: Start Themes file scan.\r\n" );
|
1371 |
+
//fwrite( $handle, "Scanning Files: Suspicious|Modified|Unknown Theme files:\r\n" );
|
1372 |
+
|
1373 |
+
if ( empty($theme_hashes) || $theme_hashes == null ) {
|
1374 |
+
|
1375 |
+
fwrite( $handle, "Scanning Files: Plugins: The theme-hashes.php array is empty or null. Theme files will not be scanned.\r\n" );
|
1376 |
+
|
1377 |
+
} else {
|
1378 |
+
|
1379 |
+
$theme_files_flip = array_flip($theme_file_path_array);
|
1380 |
+
|
1381 |
+
$theme_md5_array = array();
|
1382 |
+
|
1383 |
+
foreach ( $theme_files_flip as $key => $value ) {
|
1384 |
+
$theme_md5_array[$key] = md5_file($key);
|
1385 |
+
}
|
1386 |
+
|
1387 |
+
$theme_diff_array = array_diff($theme_md5_array, $theme_hashes);
|
1388 |
+
|
1389 |
+
$mscan_nodownload = get_option('bulletproof_security_options_mscan_nodownload');
|
1390 |
+
|
1391 |
+
$theme_hashes_file = WP_CONTENT_DIR . '/bps-backup/theme-hashes/theme-hashes.php';
|
1392 |
+
|
1393 |
+
if ( file_exists( $theme_hashes_file ) ) {
|
1394 |
+
$theme_hashes_file_contents = file_get_contents($theme_hashes_file);
|
1395 |
+
}
|
1396 |
+
|
1397 |
+
$theme_diff_array_clean = array();
|
1398 |
+
|
1399 |
+
// Unset premium/paid, custom themes or themes without a zip version # that do not exist in the WP Theme Repo
|
1400 |
+
// unless the theme exists in the theme hashes array.
|
1401 |
+
foreach ( $theme_diff_array as $key1 => $value1 ) {
|
1402 |
+
|
1403 |
+
foreach ( $mscan_nodownload['bps_theme_nodownload'] as $key2 => $value2 ) {
|
1404 |
+
|
1405 |
+
if ( preg_match( '/(.*)'.$value2.'(.*)/', $key1, $matches ) && ! preg_match( '/##\sBEGIN\s'.$value2.'\s##/', $theme_hashes_file_contents ) ) {
|
1406 |
+
|
1407 |
+
unset($key1);
|
1408 |
+
$key1 = ! isset($key1) ? '' : $key1; // PHP8 weirdness
|
1409 |
+
}
|
1410 |
+
}
|
1411 |
+
|
1412 |
+
if ( ! empty($key1) ) {
|
1413 |
+
|
1414 |
+
$theme_diff_array_clean[] = $key1;
|
1415 |
+
}
|
1416 |
+
}
|
1417 |
+
|
1418 |
+
foreach ( $theme_diff_array_clean as $key => $value ) {
|
1419 |
+
|
1420 |
+
if ( file_get_contents($MScanStop) != 'run' ) {
|
1421 |
+
fwrite( $handle, "Scanning Files: MScan Scanning was Stopped\r\n" );
|
1422 |
+
fclose($handle);
|
1423 |
+
exit();
|
1424 |
+
|
1425 |
+
} else {
|
1426 |
+
|
1427 |
+
if ( ! empty($theme_diff_array_clean) ) {
|
1428 |
+
|
1429 |
+
$themes_hash_match = 1;
|
1430 |
+
|
1431 |
+
fwrite( $handle, "Scanning Files: Themes: Suspicious|Modified|Unknown Theme file: $value\r\n" );
|
1432 |
+
|
1433 |
+
if ( ! in_array($value, $mscan_file_path_array) ) {
|
1434 |
+
|
1435 |
+
if ( $insert_rows = $wpdb->insert( $MStable, array( 'mscan_status' => 'suspect', 'mscan_type' => 'themes', 'mscan_path' => $value, 'mscan_pattern' => 'Altered or unknown Theme file', 'mscan_skipped' => '', 'mscan_ignored' => '', 'mscan_db_table' => '', 'mscan_db_column' => '', 'mscan_db_pkid' => '', 'mscan_time' => current_time('mysql') ) ) ) {
|
1436 |
+
$send_email = 'send';
|
1437 |
+
}
|
1438 |
+
}
|
1439 |
+
}
|
1440 |
+
}
|
1441 |
+
}
|
1442 |
+
|
1443 |
+
if ( $themes_hash_match == 0 ) {
|
1444 |
+
fwrite( $handle, "Scanning Files: Themes: No Suspicious|Modified|Unknown Theme files were found.\r\n" );
|
1445 |
+
}
|
1446 |
+
}
|
1447 |
+
fwrite( $handle, "Scanning Files: Themes file scan completed.\r\n" );
|
1448 |
+
}
|
1449 |
+
|
1450 |
+
## 15.4: wp-content, plugins and themes folders root index.php files comparison scan
|
1451 |
+
fwrite( $handle, "Scanning Files: Start wp-content, plugins and themes root index.php files scan.\r\n" );
|
1452 |
+
|
1453 |
+
$index_file_hash_match = 0;
|
1454 |
+
$wp_content_index_file = WP_CONTENT_DIR . '/index.php';
|
1455 |
+
$plugins_index_file = WP_PLUGIN_DIR . '/index.php';
|
1456 |
+
$themes_index_file = get_theme_root() . '/index.php';
|
1457 |
+
|
1458 |
+
$index_files_array = array( $wp_content_index_file, $plugins_index_file, $themes_index_file );
|
1459 |
+
|
1460 |
+
foreach ( $index_files_array as $key => $value ) {
|
1461 |
+
|
1462 |
+
if ( file_exists($value) ) {
|
1463 |
+
|
1464 |
+
if ( md5_file($value) != '67442c5615eba73d105c0715c6620850' ) {
|
1465 |
+
|
1466 |
+
$index_file_hash_match = 1;
|
1467 |
+
|
1468 |
+
fwrite( $handle, "Scanning Files: Suspicious|Modified|Unknown root index.php file detected: $value\r\n" );
|
1469 |
+
|
1470 |
+
if ( ! in_array($value, $mscan_file_path_array) ) {
|
1471 |
+
|
1472 |
+
if ( $insert_rows = $wpdb->insert( $MStable, array( 'mscan_status' => 'suspect', 'mscan_type' => 'index.php files', 'mscan_path' => $value, 'mscan_pattern' => 'Altered or unknown index.php file', 'mscan_skipped' => '', 'mscan_ignored' => '', 'mscan_db_table' => '', 'mscan_db_column' => '', 'mscan_db_pkid' => '', 'mscan_time' => current_time('mysql') ) ) ) {
|
1473 |
+
$send_email = 'send';
|
1474 |
+
}
|
1475 |
+
}
|
1476 |
+
}
|
1477 |
+
|
1478 |
+
} else {
|
1479 |
+
fwrite( $handle, "Scanning Files: index.php files: Missing File (file does not exist): $value\r\n" );
|
1480 |
+
}
|
1481 |
+
}
|
1482 |
+
|
1483 |
+
if ( $index_file_hash_match == 0 ) {
|
1484 |
+
fwrite( $handle, "Scanning Files: Themes: No Suspicious|Modified|Unknown root index.php files were found.\r\n" );
|
1485 |
+
}
|
1486 |
+
|
1487 |
+
fwrite( $handle, "Scanning Files: wp-content, plugins and themes index.php files scan completed.\r\n" );
|
1488 |
+
|
1489 |
+
## non-WP file scanning using pattern matching
|
1490 |
+
fwrite( $handle, "Scanning Files: Start php, js, etc file scanning.\r\n" );
|
1491 |
fwrite( $handle, "Scanning Files: Suspicious code pattern matches:\r\n" );
|
1492 |
|
1493 |
foreach ( $file_path_array as $key => $value ) {
|
1504 |
|
1505 |
if ( $ext == 'js' ) {
|
1506 |
|
1507 |
+
if ( preg_match( $js_pattern, $file_contents, $matches ) ) {
|
1508 |
+
|
1509 |
$js_code_match = 1;
|
1510 |
+
|
1511 |
+
$string_length = strlen($matches[0]);
|
1512 |
+
|
1513 |
+
if ( $string_length > 30 ) {
|
1514 |
+
$mscan_pattern = substr($matches[0], 0, 30);
|
1515 |
+
} else {
|
1516 |
+
$mscan_pattern = $matches[0];
|
1517 |
+
}
|
1518 |
+
|
1519 |
fwrite( $handle, "Scanning Files .js: File: $value\r\n" );
|
1520 |
+
fwrite( $handle, "Scanning Files .js: Code Pattern Match: $mscan_pattern\r\n" );
|
1521 |
|
1522 |
if ( ! in_array($value, $mscan_file_path_array) ) {
|
1523 |
|
1524 |
+
if ( $insert_rows = $wpdb->insert( $MStable, array( 'mscan_status' => 'suspect', 'mscan_type' => 'js', 'mscan_path' => $value, 'mscan_pattern' => $mscan_pattern, 'mscan_skipped' => '', 'mscan_ignored' => '', 'mscan_db_table' => '', 'mscan_db_column' => '', 'mscan_db_pkid' => '', 'mscan_time' => current_time('mysql') ) ) ) {
|
1525 |
|
1526 |
$send_email = 'send';
|
1527 |
}
|
1531 |
|
1532 |
if ( $ext == 'htaccess' ) {
|
1533 |
|
1534 |
+
if ( preg_match( $htaccess_pattern, $file_contents, $matches ) ) {
|
1535 |
|
1536 |
$htaccess_code_match = 1;
|
1537 |
+
|
1538 |
+
$string_length = strlen($matches[0]);
|
1539 |
+
|
1540 |
+
if ( $string_length > 30 ) {
|
1541 |
+
$mscan_pattern = substr($matches[0], 0, 30);
|
1542 |
+
} else {
|
1543 |
+
$mscan_pattern = $matches[0];
|
1544 |
+
}
|
1545 |
+
|
1546 |
fwrite( $handle, "Scanning Files .htaccess: File: $value\r\n" );
|
1547 |
+
fwrite( $handle, "Scanning Files .htaccess: Code Pattern Match: $mscan_pattern\r\n" );
|
1548 |
|
1549 |
if ( ! in_array($value, $mscan_file_path_array) ) {
|
1550 |
|
1551 |
+
if ( $insert_rows = $wpdb->insert( $MStable, array( 'mscan_status' => 'suspect', 'mscan_type' => 'htaccess', 'mscan_path' => $value, 'mscan_pattern' => $mscan_pattern, 'mscan_skipped' => '', 'mscan_ignored' => '', 'mscan_db_table' => '', 'mscan_db_column' => '', 'mscan_db_pkid' => '', 'mscan_time' => current_time('mysql') ) ) ) {
|
1552 |
$send_email = 'send';
|
1553 |
}
|
1554 |
}
|
1555 |
}
|
1556 |
}
|
1557 |
|
1558 |
+
if ( $ext == 'htm' || $ext == 'html' || $ext == 'php' || $ext == 'phps' || $ext == 'php5' || $ext == 'php4' || $ext == 'php3' || $ext == 'phtml' || $ext == 'phpt' || $ext == 'shtm' || $ext == 'shtml' || $ext == 'xhtml' || $ext == 'ico' || $ext == 'bak' ) {
|
1559 |
|
1560 |
+
if ( preg_match( $php_pattern, $file_contents, $matches ) ) {
|
1561 |
|
1562 |
$php_code_match = 1;
|
1563 |
+
|
1564 |
+
$string_length = strlen($matches[0]);
|
1565 |
|
1566 |
+
if ( $string_length > 30 ) {
|
1567 |
+
$mscan_pattern = substr($matches[0], 0, 30);
|
1568 |
+
} else {
|
1569 |
+
$mscan_pattern = $matches[0];
|
1570 |
+
}
|
1571 |
|
1572 |
+
fwrite( $handle, "Scanning Files php, html, etc: File: $value\r\n" );
|
1573 |
+
fwrite( $handle, "Scanning Files php, html, etc: Code Pattern Match: $mscan_pattern\r\n" );
|
1574 |
+
|
1575 |
+
if ( ! in_array($value, $mscan_file_path_array) ) {
|
1576 |
+
|
1577 |
+
if ( $insert_rows = $wpdb->insert( $MStable, array( 'mscan_status' => 'suspect', 'mscan_type' => 'php|html|other', 'mscan_path' => $value, 'mscan_pattern' => $mscan_pattern, 'mscan_skipped' => '', 'mscan_ignored' => '', 'mscan_db_table' => '', 'mscan_db_column' => '', 'mscan_db_pkid' => '', 'mscan_time' => current_time('mysql') ) ) ) {
|
1578 |
$send_email = 'send';
|
1579 |
}
|
1580 |
}
|
1592 |
}
|
1593 |
|
1594 |
if ( $php_code_match == 0 ) {
|
1595 |
+
fwrite( $handle, "Scanning Files php, html, etc: No Suspicious php, html, etc code pattern matches were found.\r\n" );
|
1596 |
}
|
1597 |
|
1598 |
+
fwrite( $handle, "Scanning Files: php, js, etc file scanning completed.\r\n" );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1599 |
fwrite( $handle, "Scanning Files: Scanning files completed.\r\n" );
|
1600 |
|
1601 |
if ( $MScan_options['mscan_scan_database'] == 'On' ) {
|
1607 |
$DBTables = '';
|
1608 |
$getDBTables = $wpdb->get_results( $wpdb->prepare( "SHOW TABLE STATUS WHERE Name != %s", $DBTables ) );
|
1609 |
|
1610 |
+
## 13.4.1: MScan Database Scan search patterns for DB Query below are now saved in the DB as of 15.3
|
1611 |
+
|
1612 |
foreach ( $getDBTables as $Table ) {
|
1613 |
|
1614 |
if ( $Table->Name != $wpdb->prefix . "bpspro_mscan" ) {
|
1630 |
|
1631 |
} else {
|
1632 |
|
1633 |
+
// Figure this error out L8R: PHP Warning: Undefined property: stdClass::$option_name in mscan-ajax-functions.php on line 1489
|
1634 |
+
// Probably happening since I have nested foreach loops. May need to create arrays instead.
|
1635 |
+
if ( @! preg_match( '/_transient_feed_(.*)/', $results->option_name ) && @! preg_match( '/bulletproof_security_options_mscan_(.*)/', $results->option_name ) ) {
|
1636 |
|
1637 |
$getKey = $wpdb->get_results( "SHOW KEYS FROM $Table->Name WHERE Key_name = 'PRIMARY'" );
|
1638 |
|
1645 |
$replace = array ( '<', '>' );
|
1646 |
$json_array_converted = preg_replace( $patterns, $replace, $json_array );
|
1647 |
|
1648 |
+
|
1649 |
+
|
1650 |
if ( in_array( $json_array_converted[$PKey->Column_name], $mscan_db_ignore_array ) ) {
|
1651 |
unset($json_array[$column->Field]);
|
1652 |
}
|
1808 |
|
1809 |
} else {
|
1810 |
|
1811 |
+
$file_contents = file_get_contents($row->mscan_path);
|
|
|
|
|
1812 |
|
1813 |
+
if ( $row->mscan_type == 'js' ) {
|
1814 |
+
|
1815 |
+
if ( preg_match( $js_pattern, $file_contents, $matches ) ) {
|
1816 |
+
|
1817 |
+
$js_code_match = 1;
|
1818 |
+
fwrite( $handle, "Scanning Skipped Files .js: File: $row->mscan_path\r\n" );
|
1819 |
+
fwrite( $handle, "Scanning Skipped Files .js: Code Pattern Match: $matches[0]\r\n" );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1820 |
|
1821 |
+
$update_rows = $wpdb->update( $MStable, array( 'mscan_status' => 'suspect', 'mscan_pattern' => $matches[0], 'mscan_time' => current_time('mysql') ), array( 'mscan_path' => $row->mscan_path ) );
|
1822 |
+
|
1823 |
+
$send_email = 'send';
|
|
|
|
|
|
|
|
|
|
|
|
|
1824 |
|
1825 |
+
} else {
|
1826 |
+
$update_rows = $wpdb->update( $MStable, array( 'mscan_status' => 'clean', 'mscan_time' => current_time('mysql') ), array( 'mscan_path' => $row->mscan_path ) );
|
|
|
1827 |
}
|
1828 |
+
}
|
|
|
1829 |
|
1830 |
+
if ( $row->mscan_type == 'htaccess' ) {
|
1831 |
+
|
1832 |
+
if ( preg_match( $htaccess_pattern, $file_contents, $matches ) ) {
|
1833 |
+
|
1834 |
+
$htaccess_code_match = 1;
|
1835 |
+
fwrite( $handle, "Scanning Skipped Files .htaccess: File: $row->mscan_path\r\n" );
|
1836 |
+
fwrite( $handle, "Scanning Skipped Files .htaccess: Code Pattern Match: $matches[0]\r\n" );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1837 |
|
1838 |
+
$update_rows = $wpdb->update( $MStable, array( 'mscan_status' => 'suspect', 'mscan_pattern' => $matches[0], 'mscan_time' => current_time('mysql') ), array( 'mscan_path' => $row->mscan_path ) );
|
1839 |
|
1840 |
+
$send_email = 'send';
|
1841 |
+
|
1842 |
+
} else {
|
1843 |
+
$update_rows = $wpdb->update( $MStable, array( 'mscan_status' => 'clean', 'mscan_time' => current_time('mysql') ), array( 'mscan_path' => $row->mscan_path ) );
|
1844 |
+
}
|
1845 |
+
}
|
1846 |
+
|
1847 |
+
if ( $row->mscan_type == 'php|html|other' ) {
|
1848 |
+
|
1849 |
+
if ( preg_match( $php_pattern, $file_contents, $matches ) ) {
|
1850 |
+
|
1851 |
+
$php_code_match = 1;
|
1852 |
+
fwrite( $handle, "Scanning Skipped Files php, html, etc: File: $row->mscan_path\r\n" );
|
1853 |
+
fwrite( $handle, "Scanning Skipped Files php, html, etc: Code Pattern Match: $matches[0]\r\n" );
|
1854 |
+
|
1855 |
+
$update_rows = $wpdb->update( $MStable, array( 'mscan_status' => 'suspect', 'mscan_pattern' => $matches[0], 'mscan_time' => current_time('mysql') ), array( 'mscan_path' => $row->mscan_path ) );
|
1856 |
+
|
1857 |
+
$send_email = 'send';
|
1858 |
+
|
1859 |
+
} else {
|
1860 |
+
$update_rows = $wpdb->update( $MStable, array( 'mscan_status' => 'clean', 'mscan_time' => current_time('mysql') ), array( 'mscan_path' => $row->mscan_path ) );
|
1861 |
}
|
1862 |
}
|
|
|
|
|
|
|
|
|
1863 |
}
|
1864 |
}
|
1865 |
|
1872 |
}
|
1873 |
|
1874 |
if ( $php_code_match == 0 ) {
|
1875 |
+
fwrite( $handle, "Scanning Skipped Files: php, html, etc: No Suspicious php, html, etc code pattern matches were found.\r\n" );
|
1876 |
}
|
1877 |
|
|
|
|
|
|
|
|
|
1878 |
fwrite( $handle, "Scanning Skipped Files: Skipped file scan completed.\r\n" );
|
1879 |
|
1880 |
} else {
|
1926 |
$total_suspect_file_count = count($mscan_suspect_files_total_array);
|
1927 |
$total_suspect_skipped_files_file_count = count($mscan_suspect_skipped_files_total_array);
|
1928 |
$total_suspect_db_count = count($mscan_suspect_db_total_array);
|
|
|
1929 |
$bps_mscan_total_time = time() - $MScan_status['bps_mscan_time_start'];
|
1930 |
|
1931 |
$MScan_status_db = array(
|
1936 |
'bps_mscan_status' => '3',
|
1937 |
'bps_mscan_last_scan_timestamp' => $timestamp,
|
1938 |
'bps_mscan_total_time' => $bps_mscan_total_time,
|
1939 |
+
'bps_mscan_total_website_files' => '',
|
1940 |
'bps_mscan_total_wp_core_files' => $MScan_status['bps_mscan_total_wp_core_files'],
|
1941 |
'bps_mscan_total_non_image_files' => $MScan_status['bps_mscan_total_non_image_files'],
|
1942 |
+
'bps_mscan_total_image_files' => '',
|
1943 |
'bps_mscan_total_all_scannable_files' => $MScan_status['bps_mscan_total_all_scannable_files'],
|
1944 |
'bps_mscan_total_skipped_files' => $MScan_status['bps_mscan_total_skipped_files'],
|
1945 |
'bps_mscan_total_suspect_files' => $total_suspect_file_count,
|
1946 |
'bps_mscan_suspect_skipped_files' => $total_suspect_skipped_files_file_count,
|
1947 |
'bps_mscan_total_suspect_db' => $total_suspect_db_count,
|
1948 |
+
'bps_mscan_total_ignored_files' => $total_ignored_file_db_count,
|
1949 |
+
'bps_mscan_total_plugin_files' => $MScan_status['bps_mscan_total_plugin_files'],
|
1950 |
+
'bps_mscan_total_theme_files' => $MScan_status['bps_mscan_total_theme_files']
|
1951 |
);
|
1952 |
|
1953 |
foreach( $MScan_status_db as $key => $value ) {
|
1965 |
$minutes_format = $minutes == 0 ? "00" : ($minutes < 10 ? "0".$minutes : $minutes);
|
1966 |
$seconds_format = $seconds == 0 ? "00" : ($seconds < 10 ? "0".$seconds : $seconds);
|
1967 |
|
1968 |
+
$hours2 = (int)($bps_mscan_total_time / 60 / 60);
|
1969 |
+
$minutes2 = (int)($bps_mscan_total_time / 60) - $hours2 * 60;
|
1970 |
+
$seconds2 = (int)$bps_mscan_total_time - $hours2 * 60 * 60 - $minutes2 * 60;
|
1971 |
+
$hours_format2 = $hours2 == 0 ? "00" : $hours2;
|
1972 |
+
$minutes_format2 = $minutes2 == 0 ? "00" : ($minutes2 < 10 ? "0".$minutes2 : $minutes2);
|
1973 |
+
$seconds_format2 = $seconds2 == 0 ? "00" : ($seconds2 < 10 ? "0".$seconds2 : $seconds2);
|
1974 |
+
|
1975 |
if ( $MScan_options['mscan_scan_skipped_files'] == 'On' ) {
|
1976 |
$file_scan_log = 'Scanning Skipped Files Completion Time: '. $hours_format . ':'. $minutes_format . ':' . $seconds_format;
|
1977 |
+
$file_scan_log_total_time = 'Total Scan Time: '. $hours_format2 . ':'. $minutes_format2 . ':' . $seconds_format2;
|
1978 |
|
1979 |
} else {
|
1980 |
|
1981 |
if ( $MScan_options['mscan_scan_database'] == 'On' ) {
|
1982 |
$file_scan_log = 'Scanning Files & Database Completion Time: '. $hours_format . ':'. $minutes_format . ':' . $seconds_format;
|
1983 |
+
$file_scan_log_total_time = 'Total Scan Time: '. $hours_format2 . ':'. $minutes_format2 . ':' . $seconds_format2;
|
1984 |
} else{
|
1985 |
$file_scan_log = 'Scanning Files Completion Time: '. $hours_format . ':'. $minutes_format . ':' . $seconds_format;
|
1986 |
+
$file_scan_log_total_time = 'Total Scan Time: '. $hours_format2 . ':'. $minutes_format2 . ':' . $seconds_format2;
|
1987 |
}
|
1988 |
}
|
1989 |
|
1990 |
+
$MScan_status = get_option('bulletproof_security_options_MScan_status');
|
1991 |
+
|
1992 |
+
fwrite( $handle, "MScan Status: ".$MScan_status['bps_mscan_status']."\r\n" );
|
1993 |
fwrite( $handle, "$file_scan_log\r\n" );
|
1994 |
|
1995 |
if ( $MScan_options['mscan_scan_delete_tmp_files'] == 'On' ) {
|
1997 |
fwrite( $handle, "Delete /tmp Files: tmp files have been deleted.\r\n" );
|
1998 |
}
|
1999 |
|
2000 |
+
fwrite( $handle, "$file_scan_log_total_time\r\n" );
|
2001 |
+
|
2002 |
fclose($handle);
|
2003 |
|
2004 |
// Send email alert
|
2005 |
if ( $send_email != '' ) {
|
2006 |
+
bps_smonitor_mscan_email(); // Note: This function is only used in Pro with scheduled scans. Comment it out in BPS free.
|
2007 |
}
|
2008 |
}
|
2009 |
|
2062 |
}
|
2063 |
}
|
2064 |
}
|
|
|
2065 |
?>
|
includes/mscan-plugin-hash-maker.php
ADDED
@@ -0,0 +1,783 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Download the Plugin zip file version based on the current Plugin version installed.
|
3 |
+
// Ensure that the Plugin zip file is not downloaded repeatedly due to an error, issue or problem.
|
4 |
+
function bpsPro_plugin_zip_download($mstime) {
|
5 |
+
global $wp_version;
|
6 |
+
|
7 |
+
$time_start = microtime( true );
|
8 |
+
|
9 |
+
set_time_limit($mstime);
|
10 |
+
$timeNow = time();
|
11 |
+
$gmt_offset = get_option( 'gmt_offset' ) * 3600;
|
12 |
+
$timestamp = date_i18n(get_option('date_format'), strtotime("11/15-1976")) . ' ' . date_i18n(get_option('time_format'), $timeNow + $gmt_offset);
|
13 |
+
$mscan_log = WP_CONTENT_DIR . '/bps-backup/logs/mscan_log.txt';
|
14 |
+
|
15 |
+
$handle = fopen( $mscan_log, 'a' );
|
16 |
+
|
17 |
+
if ( ! is_dir( WP_CONTENT_DIR . '/bps-backup/plugin-hashes' ) ) {
|
18 |
+
@mkdir( WP_CONTENT_DIR . '/bps-backup/plugin-hashes', 0755, true );
|
19 |
+
@chmod( WP_CONTENT_DIR . '/bps-backup/plugin-hashes/', 0755 );
|
20 |
+
}
|
21 |
+
|
22 |
+
$plugin_hashes_dir = WP_CONTENT_DIR . '/bps-backup/plugin-hashes';
|
23 |
+
|
24 |
+
if ( ! is_dir( $plugin_hashes_dir ) ) {
|
25 |
+
|
26 |
+
fwrite( $handle, "Plugin Zip File Download Error: The $plugin_hashes_dir folder does not exist.\r\n" );
|
27 |
+
fwrite( $handle, "Troubleshooting: Check that the Ownership or folder permissions for the /bps-backup/ folder. The /bps-backup/ folder should have 755 or 705 permissions and the Owner of the /bps-backup/ folder should be the same Owner as all of your other website folders.\r\n" );
|
28 |
+
fclose($handle);
|
29 |
+
return false;
|
30 |
+
}
|
31 |
+
|
32 |
+
$plugin_hash_file = WP_CONTENT_DIR . '/bps-backup/plugin-hashes/plugin-hashes.php';
|
33 |
+
$blank_hash_file = WP_PLUGIN_DIR . '/bulletproof-security/admin/htaccess/wp-hashes.php';
|
34 |
+
|
35 |
+
if ( ! file_exists($plugin_hash_file) ) {
|
36 |
+
|
37 |
+
if ( ! copy($blank_hash_file, $plugin_hash_file) ) {
|
38 |
+
fwrite( $handle, "Plugin Zip File Download Error: Unable to create the Plugin hash file: $plugin_hash_file\r\n" );
|
39 |
+
}
|
40 |
+
}
|
41 |
+
|
42 |
+
fwrite( $handle, "Plugin Zip File Download: Start Plugin zip file downloads.\r\n" );
|
43 |
+
|
44 |
+
// Note: $value['TextDomain'] is not reliable. Use $key instead.
|
45 |
+
$all_plugins = get_plugins();
|
46 |
+
|
47 |
+
$active_plugins_array = array();
|
48 |
+
$inactive_plugins_array = array();
|
49 |
+
$hello_dolly_plugin_array = array();
|
50 |
+
|
51 |
+
foreach ( $all_plugins as $key => $value ) {
|
52 |
+
|
53 |
+
if ( ! empty($key) ) {
|
54 |
+
|
55 |
+
$active_plugins = in_array( $key, apply_filters('active_plugins', get_option('active_plugins')));
|
56 |
+
|
57 |
+
if ( 1 == $active_plugins || is_plugin_active_for_network( $key ) ) {
|
58 |
+
|
59 |
+
$pos = strpos($key, '/');
|
60 |
+
$dolly_pos = strpos($value['Name'], 'Hello Dolly');
|
61 |
+
|
62 |
+
if ( $pos !== false ) {
|
63 |
+
|
64 |
+
$plugin_name = strstr($key, '/', true);
|
65 |
+
$active_plugins_array[] = $plugin_name.'.'.$value['Version'];
|
66 |
+
|
67 |
+
} else {
|
68 |
+
|
69 |
+
if ( $dolly_pos !== false ) {
|
70 |
+
|
71 |
+
$hello_dolly_plugin_array[] = 'hello-dolly'.'.'.$value['Version'];
|
72 |
+
}
|
73 |
+
}
|
74 |
+
|
75 |
+
} else {
|
76 |
+
|
77 |
+
$pos = strpos($key, '/');
|
78 |
+
$dolly_pos = strpos($value['Name'], 'Hello Dolly');
|
79 |
+
|
80 |
+
if ( $pos !== false ) {
|
81 |
+
|
82 |
+
$plugin_name = strstr($key, '/', true);
|
83 |
+
$inactive_plugins_array[] = $plugin_name.'.'.$value['Version'];
|
84 |
+
|
85 |
+
} else {
|
86 |
+
|
87 |
+
if ( $dolly_pos !== false ) {
|
88 |
+
|
89 |
+
$hello_dolly_plugin_array[] = 'hello-dolly'.'.'.$value['Version'];
|
90 |
+
}
|
91 |
+
}
|
92 |
+
}
|
93 |
+
}
|
94 |
+
}
|
95 |
+
|
96 |
+
$plugins_array_merged = array_merge($active_plugins_array, $inactive_plugins_array, $hello_dolly_plugin_array);
|
97 |
+
|
98 |
+
$bps_mscan_plugin_hash_version_check_array = array();
|
99 |
+
$bps_mscan_plugin_hash_paths_array = array();
|
100 |
+
$bps_mscan_plugin_hash_zip_file_array = array();
|
101 |
+
|
102 |
+
$mscan_plugin_hash = get_option('bulletproof_security_options_mscan_plugin_hash');
|
103 |
+
$mscan_plugin_hash_new = get_option('bulletproof_security_options_mscan_p_hash_new');
|
104 |
+
$tmp_file = '';
|
105 |
+
$plugin_no_zip_array = array();
|
106 |
+
|
107 |
+
foreach ( $plugins_array_merged as $key => $value ) {
|
108 |
+
|
109 |
+
// Plugins: https://downloads.wordpress.org/plugin/plugin-name.1.0.zip
|
110 |
+
$plugin_zip_file = $value . '.zip';
|
111 |
+
$local_zip_file = WP_CONTENT_DIR . '/bps-backup/plugin-hashes/' . $plugin_zip_file;
|
112 |
+
|
113 |
+
$plugin_name = strstr($value, '.', true); // plugin-name
|
114 |
+
$plugin_version = strstr($value, '.'); // .1.0
|
115 |
+
$plugin_version_nodot = substr($plugin_version, 1); // 1.0
|
116 |
+
|
117 |
+
$bps_mscan_plugin_hash_version_check_array[$plugin_name] = $plugin_version_nodot;
|
118 |
+
$bps_mscan_plugin_hash_paths_array[$plugin_name][] = '';
|
119 |
+
|
120 |
+
// Check the WP Plugin Repo for plugins that do not exist in the Repo. ie premium/paid and custom plugins.
|
121 |
+
// Note: some plugins do not include the version # in the zip file name. Those plugins will not be downloaded.
|
122 |
+
$plugin_zip_file_url = 'https://downloads.wordpress.org/plugin/' . $plugin_zip_file;
|
123 |
+
|
124 |
+
$response = wp_remote_get( $plugin_zip_file_url );
|
125 |
+
|
126 |
+
if ( is_array( $response ) && ! is_wp_error( $response ) ) {
|
127 |
+
|
128 |
+
if ( $response['response']['code'] == '404' ) {
|
129 |
+
|
130 |
+
$value = preg_replace( '/\.\d(.*)/', "", $value );
|
131 |
+
$plugin_no_zip_array[] = $value;
|
132 |
+
}
|
133 |
+
}
|
134 |
+
|
135 |
+
@$bps_mscan_plugin_hash_version_check = isset($mscan_plugin_hash['bps_mscan_plugin_hash_version_check']) ? $mscan_plugin_hash['bps_mscan_plugin_hash_version_check']["$plugin_name"] : '';
|
136 |
+
|
137 |
+
// If the BPS DB option plugin version matches then don't download another zip file and just log a log entry.
|
138 |
+
// Note: Any plugins not in the WP Plugin Repository will be listed in the array for later use.
|
139 |
+
if ( $bps_mscan_plugin_hash_version_check == $plugin_version_nodot ) {
|
140 |
+
|
141 |
+
//fwrite( $handle, "Plugin Zip File Download: No new Plugin Zip files were downloaded.\r\n" );
|
142 |
+
|
143 |
+
} else {
|
144 |
+
|
145 |
+
// Extra Precaution: Don't download another zip file if it already exists.
|
146 |
+
if ( ! file_exists($local_zip_file) ) {
|
147 |
+
|
148 |
+
if ( file_exists($plugin_hash_file) ) {
|
149 |
+
|
150 |
+
$url = 'https://downloads.wordpress.org/plugin/' . $plugin_zip_file;
|
151 |
+
$tmp_file = download_url( $url, $timeout = 300 );
|
152 |
+
|
153 |
+
// Important: Do not use a return in this condition or all valid downloads will fail.
|
154 |
+
// This condition prevents a fatal error on WP_ERROR in PHP 8, which halts processing.
|
155 |
+
if ( is_wp_error( $tmp_file ) ) {
|
156 |
+
|
157 |
+
fwrite( $handle, "Plugin Zip File Download: WP_Error: Unable to download Plugin zip file: $plugin_zip_file from WordPress.org.\r\n" );
|
158 |
+
|
159 |
+
} else {
|
160 |
+
|
161 |
+
if ( ! copy( $tmp_file, $local_zip_file ) ) {
|
162 |
+
fwrite( $handle, "Plugin Zip File Download: Unable to download this Plugin zip file: $plugin_zip_file\r\n" );
|
163 |
+
} else {
|
164 |
+
fwrite( $handle, "Plugin Zip File Download: Zip file download successful: $plugin_zip_file\r\n" );
|
165 |
+
}
|
166 |
+
|
167 |
+
unlink( $tmp_file );
|
168 |
+
}
|
169 |
+
}
|
170 |
+
}
|
171 |
+
}
|
172 |
+
|
173 |
+
if ( file_exists( $local_zip_file ) ) {
|
174 |
+
$zip_file = 'yes';
|
175 |
+
} else {
|
176 |
+
$zip_file = 'no';
|
177 |
+
}
|
178 |
+
|
179 |
+
$bps_mscan_plugin_hash_zip_file_array[$plugin_name] = $zip_file;
|
180 |
+
}
|
181 |
+
|
182 |
+
// Update the non-downloadable plugin DB option on each scan run.
|
183 |
+
// display this db option in a the new report that will be created. ie these plugins are not downloadable from WP. premium/paid and custom plugins.
|
184 |
+
// Add this help info: use the plugin upload zip form to upload premium/paid or custom plugin zip files
|
185 |
+
// Any plugins that are uploaded using the plugin zip upload form will be automatically extracted, added to the plugin hash array and deleted on next MScan run.
|
186 |
+
$mscan_nodownload = get_option('bulletproof_security_options_mscan_nodownload');
|
187 |
+
$bps_theme_nodownload = isset( $mscan_nodownload['bps_theme_nodownload']) ? $mscan_nodownload['bps_theme_nodownload'] : '';
|
188 |
+
|
189 |
+
$mscan_nodownload_options = array(
|
190 |
+
'bps_plugin_nodownload' => $plugin_no_zip_array,
|
191 |
+
'bps_theme_nodownload' => $bps_theme_nodownload
|
192 |
+
);
|
193 |
+
|
194 |
+
foreach( $mscan_nodownload_options as $key => $value ) {
|
195 |
+
update_option('bulletproof_security_options_mscan_nodownload', $mscan_nodownload_options);
|
196 |
+
}
|
197 |
+
|
198 |
+
$mscan_plugin_hash_options_db = 'bulletproof_security_options_mscan_plugin_hash';
|
199 |
+
|
200 |
+
// I'm really only interested in preserving the Plugin hash paths and updating the plugin versions, everything else is an afterthought for future scaleability.
|
201 |
+
// On first run plugin hash paths are saved as an empty 2D array, plugin version numbers are saved and zip file yes or no value is saved.
|
202 |
+
// Plugin hash paths and hashes are created in the Plugin hash maker function.
|
203 |
+
if ( ! get_option( $mscan_plugin_hash_options_db ) ) {
|
204 |
+
|
205 |
+
$mscan_plugin_hash_options = array(
|
206 |
+
'bps_mscan_plugin_hash_version_check' => $bps_mscan_plugin_hash_version_check_array,
|
207 |
+
'bps_mscan_plugin_hash_paths' => $bps_mscan_plugin_hash_paths_array,
|
208 |
+
'bps_mscan_plugin_hash_zip_file' => $bps_mscan_plugin_hash_zip_file_array
|
209 |
+
);
|
210 |
+
|
211 |
+
foreach( $mscan_plugin_hash_options as $key => $value ) {
|
212 |
+
update_option('bulletproof_security_options_mscan_plugin_hash', $mscan_plugin_hash_options);
|
213 |
+
}
|
214 |
+
|
215 |
+
} else {
|
216 |
+
|
217 |
+
// All future runs create new DB arrays used in the Plugin hash maker function to add or remove array values from the first run DB option.
|
218 |
+
delete_option('bulletproof_security_options_mscan_p_hash_new');
|
219 |
+
|
220 |
+
$mscan_plugin_hash_options_new = array(
|
221 |
+
'bps_mscan_plugin_hash_version_check_new' => $bps_mscan_plugin_hash_version_check_array,
|
222 |
+
'bps_mscan_plugin_hash_paths_new' => $bps_mscan_plugin_hash_paths_array,
|
223 |
+
'bps_mscan_plugin_hash_zip_file_new' => $bps_mscan_plugin_hash_zip_file_array
|
224 |
+
);
|
225 |
+
|
226 |
+
foreach( $mscan_plugin_hash_options_new as $key => $value ) {
|
227 |
+
update_option('bulletproof_security_options_mscan_p_hash_new', $mscan_plugin_hash_options_new);
|
228 |
+
}
|
229 |
+
|
230 |
+
// Update any new Plugin versions in the first run db option
|
231 |
+
$mscan_plugin_hash = get_option('bulletproof_security_options_mscan_plugin_hash');
|
232 |
+
$mscan_plugin_hash_new = get_option('bulletproof_security_options_mscan_p_hash_new');
|
233 |
+
|
234 |
+
$plugin_hash_version_check_update_array = array();
|
235 |
+
|
236 |
+
foreach ( $mscan_plugin_hash['bps_mscan_plugin_hash_version_check'] as $key => $value ) {
|
237 |
+
|
238 |
+
foreach ( $mscan_plugin_hash_new['bps_mscan_plugin_hash_version_check_new'] as $key_new => $value_new ) {
|
239 |
+
|
240 |
+
if ( $key == $key_new ) {
|
241 |
+
|
242 |
+
$plugin_hash_version_check_update_array[$key] = $value_new;
|
243 |
+
}
|
244 |
+
}
|
245 |
+
}
|
246 |
+
|
247 |
+
// Update any new Plugin versions & add/merge any new Plugins by into the first run db option
|
248 |
+
$array_diff_key_plugin_hash_version = array_diff_key($mscan_plugin_hash_new['bps_mscan_plugin_hash_version_check_new'], $mscan_plugin_hash['bps_mscan_plugin_hash_version_check']);
|
249 |
+
$array_merge_new_plugin_hash_version = array_merge($plugin_hash_version_check_update_array, $array_diff_key_plugin_hash_version);
|
250 |
+
|
251 |
+
$mscan_plugin_hash_options = array(
|
252 |
+
'bps_mscan_plugin_hash_version_check' => $array_merge_new_plugin_hash_version,
|
253 |
+
'bps_mscan_plugin_hash_paths' => $mscan_plugin_hash['bps_mscan_plugin_hash_paths'],
|
254 |
+
'bps_mscan_plugin_hash_zip_file' => $mscan_plugin_hash['bps_mscan_plugin_hash_zip_file']
|
255 |
+
);
|
256 |
+
|
257 |
+
foreach( $mscan_plugin_hash_options as $key => $value ) {
|
258 |
+
update_option('bulletproof_security_options_mscan_plugin_hash', $mscan_plugin_hash_options);
|
259 |
+
}
|
260 |
+
}
|
261 |
+
|
262 |
+
$time_end = microtime( true );
|
263 |
+
$download_time = $time_end - $time_start;
|
264 |
+
|
265 |
+
$hours = (int)($download_time / 60 / 60);
|
266 |
+
$minutes = (int)($download_time / 60) - $hours * 60;
|
267 |
+
$seconds = (int)$download_time - $hours * 60 * 60 - $minutes * 60;
|
268 |
+
$hours_format = $hours == 0 ? "00" : $hours;
|
269 |
+
$minutes_format = $minutes == 0 ? "00" : ($minutes < 10 ? "0".$minutes : $minutes);
|
270 |
+
$seconds_format = $seconds == 0 ? "00" : ($seconds < 10 ? "0".$seconds : $seconds);
|
271 |
+
|
272 |
+
$download_time_log = 'Plugin Zip File Download Completion Time: '. $hours_format . ':'. $minutes_format . ':' . $seconds_format;
|
273 |
+
|
274 |
+
fwrite( $handle, "$download_time_log\r\n" );
|
275 |
+
fclose($handle);
|
276 |
+
|
277 |
+
return true;
|
278 |
+
}
|
279 |
+
|
280 |
+
// Extract the Plugin zip files.
|
281 |
+
// Note: The extracted plugin folders do not have a version number: /plugin-name/
|
282 |
+
// Both ZipArchive and PclZip have been tested.
|
283 |
+
function bpsPro_plugin_zip_extractor() {
|
284 |
+
global $wp_version;
|
285 |
+
|
286 |
+
$time_start = microtime( true );
|
287 |
+
|
288 |
+
$timeNow = time();
|
289 |
+
$gmt_offset = get_option( 'gmt_offset' ) * 3600;
|
290 |
+
$timestamp = date_i18n(get_option('date_format'), strtotime("11/15-1976")) . ' ' . date_i18n(get_option('time_format'), $timeNow + $gmt_offset);
|
291 |
+
$mscan_log = WP_CONTENT_DIR . '/bps-backup/logs/mscan_log.txt';
|
292 |
+
|
293 |
+
$handle = fopen( $mscan_log, 'a' );
|
294 |
+
|
295 |
+
$plugin_hash_folder = WP_CONTENT_DIR . '/bps-backup/plugin-hashes/';
|
296 |
+
$zip_files = preg_grep('~\.(zip)$~', scandir($plugin_hash_folder));
|
297 |
+
|
298 |
+
if ( class_exists('ZipArchive') ) {
|
299 |
+
|
300 |
+
fwrite( $handle, "Plugin Zip File Extraction: Start ZipArchive zip file extraction.\r\n" );
|
301 |
+
|
302 |
+
foreach ( $zip_files as $zip_file ) {
|
303 |
+
|
304 |
+
$zip_file_path = $plugin_hash_folder . $zip_file;
|
305 |
+
|
306 |
+
$PluginZip = new ZipArchive;
|
307 |
+
$res = $PluginZip->open( $zip_file_path );
|
308 |
+
|
309 |
+
if ( $res === TRUE ) {
|
310 |
+
|
311 |
+
$PluginZip->extractTo( WP_CONTENT_DIR . '/bps-backup/plugin-hashes/' );
|
312 |
+
$PluginZip->close();
|
313 |
+
|
314 |
+
fwrite( $handle, "Plugin Zip File Extraction ZipArchive: Zip file extraction successful: $zip_file.\r\n" );
|
315 |
+
} else {
|
316 |
+
fwrite( $handle, "Plugin Zip File Extraction ZipArchive Error: Unable to extract this Plugin zip file: $zip_file.\r\n" );
|
317 |
+
}
|
318 |
+
}
|
319 |
+
|
320 |
+
$time_end = microtime( true );
|
321 |
+
$zip_extract_time = $time_end - $time_start;
|
322 |
+
|
323 |
+
$hours = (int)($zip_extract_time / 60 / 60);
|
324 |
+
$minutes = (int)($zip_extract_time / 60) - $hours * 60;
|
325 |
+
$seconds = (int)$zip_extract_time - $hours * 60 * 60 - $minutes * 60;
|
326 |
+
$hours_format = $hours == 0 ? "00" : $hours;
|
327 |
+
$minutes_format = $minutes == 0 ? "00" : ($minutes < 10 ? "0".$minutes : $minutes);
|
328 |
+
$seconds_format = $seconds == 0 ? "00" : ($seconds < 10 ? "0".$seconds : $seconds);
|
329 |
+
|
330 |
+
$zip_extract_time_log = 'Plugin Zip File Extraction Completion Time: '. $hours_format . ':'. $minutes_format . ':' . $seconds_format;
|
331 |
+
|
332 |
+
fwrite( $handle, "$zip_extract_time_log\r\n" );
|
333 |
+
fclose($handle);
|
334 |
+
|
335 |
+
return true;
|
336 |
+
|
337 |
+
} else {
|
338 |
+
|
339 |
+
fwrite( $handle, "Plugin Zip File Extraction: Start PclZip zip file extraction.\r\n" );
|
340 |
+
|
341 |
+
define( 'PCLZIP_TEMPORARY_DIR', WP_CONTENT_DIR . '/bps-backup/plugin-hashes/' );
|
342 |
+
require_once( ABSPATH . 'wp-admin/includes/class-pclzip.php');
|
343 |
+
|
344 |
+
if ( ini_get( 'mbstring.func_overload' ) && function_exists( 'mb_internal_encoding' ) ) {
|
345 |
+
$previous_encoding = mb_internal_encoding();
|
346 |
+
mb_internal_encoding( 'ISO-8859-1' );
|
347 |
+
}
|
348 |
+
|
349 |
+
foreach ( $zip_files as $zip_file ) {
|
350 |
+
|
351 |
+
$zip_file_path = $plugin_hash_folder . $zip_file;
|
352 |
+
|
353 |
+
$archive = new PclZip( $zip_file_path );
|
354 |
+
|
355 |
+
if ( $archive->extract( PCLZIP_OPT_PATH, WP_CONTENT_DIR . '/bps-backup/plugin-hashes', PCLZIP_OPT_REMOVE_PATH, WP_CONTENT_DIR . '/bps-backup/plugin-hashes' ) ) {
|
356 |
+
fwrite( $handle, "Plugin Zip File Extraction PclZip: Zip file extracted successfully: $zip_file.\r\n" );
|
357 |
+
} else {
|
358 |
+
fwrite( $handle, "Plugin Zip File Extraction PclZip Error: Unable to unzip this Plugin zip file: $zip_file.\r\n" );
|
359 |
+
}
|
360 |
+
}
|
361 |
+
|
362 |
+
$time_end = microtime( true );
|
363 |
+
$zip_extract_time = $time_end - $time_start;
|
364 |
+
|
365 |
+
$hours = (int)($zip_extract_time / 60 / 60);
|
366 |
+
$minutes = (int)($zip_extract_time / 60) - $hours * 60;
|
367 |
+
$seconds = (int)$zip_extract_time - $hours * 60 * 60 - $minutes * 60;
|
368 |
+
$hours_format = $hours == 0 ? "00" : $hours;
|
369 |
+
$minutes_format = $minutes == 0 ? "00" : ($minutes < 10 ? "0".$minutes : $minutes);
|
370 |
+
$seconds_format = $seconds == 0 ? "00" : ($seconds < 10 ? "0".$seconds : $seconds);
|
371 |
+
|
372 |
+
$zip_extract_time_log = 'Plugin Zip File Extraction Completion Time: '. $hours_format . ':'. $minutes_format . ':' . $seconds_format;
|
373 |
+
|
374 |
+
fwrite( $handle, "$zip_extract_time_log\r\n" );
|
375 |
+
fclose($handle);
|
376 |
+
|
377 |
+
return true;
|
378 |
+
}
|
379 |
+
}
|
380 |
+
|
381 |
+
// Creates an MD5 plugin file hash array.
|
382 |
+
// Cleanup: Deletes the plugin zip files and the extracted plugin folders.
|
383 |
+
function bpsPro_plugin_hash_maker() {
|
384 |
+
global $wp_version;
|
385 |
+
|
386 |
+
$time_start = microtime( true );
|
387 |
+
|
388 |
+
$timeNow = time();
|
389 |
+
$gmt_offset = get_option( 'gmt_offset' ) * 3600;
|
390 |
+
$timestamp = date_i18n(get_option('date_format'), strtotime("11/15-1976")) . ' ' . date_i18n(get_option('time_format'), $timeNow + $gmt_offset);
|
391 |
+
$mscan_log = WP_CONTENT_DIR . '/bps-backup/logs/mscan_log.txt';
|
392 |
+
|
393 |
+
$handle = fopen( $mscan_log, 'a' );
|
394 |
+
|
395 |
+
if ( ! is_array( spl_classes() ) ) {
|
396 |
+
fwrite( $handle, "Plugin MD5 File Hash Maker Error: The Standard PHP Library (SPL) is Not available/installed. Unable to create Plugin MD5 hash files.\r\n" );
|
397 |
+
fwrite( $handle, "Solution: Contact your web host and ask them to install the Standard PHP Library (SPL) on your server.\r\n" );
|
398 |
+
fclose($handle);
|
399 |
+
|
400 |
+
return false;
|
401 |
+
}
|
402 |
+
|
403 |
+
$plugin_hash_file = WP_CONTENT_DIR . '/bps-backup/plugin-hashes/plugin-hashes.php';
|
404 |
+
|
405 |
+
if ( ! file_exists( $plugin_hash_file ) ) {
|
406 |
+
fwrite( $handle, "Plugin MD5 File Hash Maker Error: The $plugin_hash_file file does not exist.\r\n" );
|
407 |
+
fwrite( $handle, "Troubleshooting: Check the Ownership or folder permissions for the /bps-backup/plugin-hashes/ folder. The /bps-backup/plugin-hashes/ folder should have 755 or 705 permissions and the Owner of the /bps-backup/plugin-hashes/ folder should be the same Owner as all of your other website folders.\r\n" );
|
408 |
+
fclose($handle);
|
409 |
+
|
410 |
+
return false;
|
411 |
+
}
|
412 |
+
|
413 |
+
fwrite( $handle, "Plugin MD5 File Hash Maker: Start creating the plugin-hashes.php file.\r\n" );
|
414 |
+
|
415 |
+
$source = WP_CONTENT_DIR . '/bps-backup/plugin-hashes/';
|
416 |
+
$gmt_offset = get_option( 'gmt_offset' ) * 3600;
|
417 |
+
|
418 |
+
$plugin_dir_path_array = array();
|
419 |
+
$plugin_folder_name_array = array();
|
420 |
+
|
421 |
+
if ( is_dir($source) ) {
|
422 |
+
$iterator = new DirectoryIterator($source);
|
423 |
+
|
424 |
+
foreach ( $iterator as $files ) {
|
425 |
+
if ( $files->isDir() && ! $files->isDot() ) {
|
426 |
+
|
427 |
+
$plugin_dir_path_array[] = $files->getPathname();
|
428 |
+
}
|
429 |
+
}
|
430 |
+
}
|
431 |
+
|
432 |
+
// If the $plugin_dir_path_array array is empty there are no new plugin folders to process
|
433 |
+
if ( ! empty($plugin_dir_path_array) ) {
|
434 |
+
|
435 |
+
$str1 = WP_CONTENT_DIR . '/bps-backup/plugin-hashes/';
|
436 |
+
$str2 = WP_CONTENT_DIR . '/bps-backup/plugin-hashes\\';
|
437 |
+
$str3 = WP_CONTENT_DIR . '\bps-backup\plugin-hashes\\';
|
438 |
+
|
439 |
+
$filePath = array();
|
440 |
+
|
441 |
+
foreach ( $plugin_dir_path_array as $plugin_dir_path ) {
|
442 |
+
|
443 |
+
$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($plugin_dir_path), RecursiveIteratorIterator::SELF_FIRST);
|
444 |
+
|
445 |
+
foreach ( $objects as $files ) {
|
446 |
+
|
447 |
+
if ( $files->isFile() ) {
|
448 |
+
|
449 |
+
$filePath[] = str_replace( array( $str1, $str2, $str3 ), "", $files->getPathname() ). '\' => \'' . md5_file($files->getPathname());
|
450 |
+
}
|
451 |
+
}
|
452 |
+
}
|
453 |
+
|
454 |
+
$mscan_plugin_hash = get_option('bulletproof_security_options_mscan_plugin_hash');
|
455 |
+
$mscan_plugin_hash_new = get_option('bulletproof_security_options_mscan_p_hash_new');
|
456 |
+
|
457 |
+
$plugin_name_key_array = array();
|
458 |
+
|
459 |
+
foreach ( $filePath as $key => $value ) {
|
460 |
+
|
461 |
+
$key_value = preg_replace( '/(\\\\.*|\/.*)/', "", $value);
|
462 |
+
|
463 |
+
// These must be below the $key_value variable above.
|
464 |
+
if ( preg_match( '/hello-dolly(.*)readme\.txt/', $value ) ) {
|
465 |
+
unset($value);
|
466 |
+
$value = ! isset($value) ? '' : $value; // PHP8 weirdness
|
467 |
+
}
|
468 |
+
|
469 |
+
if ( preg_match( '/hello-dolly(.*)hello\.php/', $value ) ) {
|
470 |
+
$value = preg_replace( '/.*hello\.php/', "hello.php", $value);
|
471 |
+
}
|
472 |
+
|
473 |
+
if ( ! empty($value) ) {
|
474 |
+
$plugin_name_key_array[$key_value][] = $value;
|
475 |
+
}
|
476 |
+
}
|
477 |
+
}
|
478 |
+
|
479 |
+
// Error Check: If any .php files exist in the plugin-hashes folder that are not the plugin-hashes.php file then the plugin zip file
|
480 |
+
// did not extract the plugin files into a plugin folder and instead extracted the files into the root plugin-hashes folder.
|
481 |
+
// Could be caused by an incorrect archive or if someone manually copies a plugin zip that does not extract into a plugin folder in the plugin-hashes folder.
|
482 |
+
|
483 |
+
// Important Note: The plugin zip file must extract the plugin zip file into a plugin folder: /plugin-name/
|
484 |
+
// in order for someone to manually copy premium and custom plugins into the /plugin-hashes/ folder to be iterated and added to the hash array.
|
485 |
+
// HALT script execution if any files exist in the /plugin-hashes/ folder that are not the plugin-hashes.php file.
|
486 |
+
// Update the MScan option setting to: 3 to get out of a looping situation with status 2.
|
487 |
+
// Use MScan Status: 3 and let the iframe js script update the status to 4 in case the estimated scan time is excessive.
|
488 |
+
|
489 |
+
$plugin_hash_folder = WP_CONTENT_DIR . '/bps-backup/plugin-hashes/';
|
490 |
+
$plugin_files = preg_grep('~\.(php)$~', scandir($plugin_hash_folder));
|
491 |
+
|
492 |
+
foreach ( $plugin_files as $plugin_file ) {
|
493 |
+
|
494 |
+
if ( $plugin_file != 'plugin-hashes.php' ) {
|
495 |
+
|
496 |
+
fwrite( $handle, "Plugin MD5 File Hash Maker Error: Files exist in the $plugin_hash_folder that should not be there. If you copied plugin files into this folder then delete them. Only Plugin Zip files or extracted Plugin folders should be in this folder.\r\n" );
|
497 |
+
|
498 |
+
$MScan_status = get_option('bulletproof_security_options_MScan_status');
|
499 |
+
|
500 |
+
$MScan_status_db = array(
|
501 |
+
'bps_mscan_time_start' => $MScan_status['bps_mscan_time_start'],
|
502 |
+
'bps_mscan_time_stop' => $MScan_status['bps_mscan_time_stop'],
|
503 |
+
'bps_mscan_time_end' => $MScan_status['bps_mscan_time_end'],
|
504 |
+
'bps_mscan_time_remaining' => $MScan_status['bps_mscan_time_remaining'],
|
505 |
+
'bps_mscan_status' => '3',
|
506 |
+
'bps_mscan_last_scan_timestamp' => $MScan_status['bps_mscan_last_scan_timestamp'],
|
507 |
+
'bps_mscan_total_time' => $MScan_status['bps_mscan_total_time'],
|
508 |
+
'bps_mscan_total_website_files' => '',
|
509 |
+
'bps_mscan_total_wp_core_files' => $MScan_status['bps_mscan_total_wp_core_files'],
|
510 |
+
'bps_mscan_total_non_image_files' => $MScan_status['bps_mscan_total_non_image_files'],
|
511 |
+
'bps_mscan_total_image_files' => '',
|
512 |
+
'bps_mscan_total_all_scannable_files' => 'Error: Files found in the plugin-hashes folder',
|
513 |
+
'bps_mscan_total_skipped_files' => $MScan_status['bps_mscan_total_skipped_files'],
|
514 |
+
'bps_mscan_total_suspect_files' => $MScan_status['bps_mscan_total_suspect_files'],
|
515 |
+
'bps_mscan_suspect_skipped_files' => $MScan_status['bps_mscan_suspect_skipped_files'],
|
516 |
+
'bps_mscan_total_suspect_db' => $MScan_status['bps_mscan_total_suspect_db'],
|
517 |
+
'bps_mscan_total_ignored_files' => $MScan_status['bps_mscan_total_ignored_files'],
|
518 |
+
'bps_mscan_total_plugin_files' => $MScan_status['bps_mscan_total_plugin_files'],
|
519 |
+
'bps_mscan_total_theme_files' => $MScan_status['bps_mscan_total_theme_files']
|
520 |
+
);
|
521 |
+
|
522 |
+
foreach( $MScan_status_db as $key => $value ) {
|
523 |
+
update_option('bulletproof_security_options_MScan_status', $MScan_status_db);
|
524 |
+
}
|
525 |
+
|
526 |
+
return false;
|
527 |
+
}
|
528 |
+
}
|
529 |
+
|
530 |
+
$mscan_plugin_hash_options_db_new = 'bulletproof_security_options_mscan_p_hash_new';
|
531 |
+
|
532 |
+
// First Run
|
533 |
+
if ( ! get_option( $mscan_plugin_hash_options_db_new ) ) {
|
534 |
+
|
535 |
+
$mscan_plugin_hash_options = array(
|
536 |
+
'bps_mscan_plugin_hash_version_check' => $mscan_plugin_hash['bps_mscan_plugin_hash_version_check'],
|
537 |
+
'bps_mscan_plugin_hash_paths' => $plugin_name_key_array,
|
538 |
+
'bps_mscan_plugin_hash_zip_file' => $mscan_plugin_hash['bps_mscan_plugin_hash_zip_file']
|
539 |
+
);
|
540 |
+
|
541 |
+
foreach( $mscan_plugin_hash_options as $key => $value ) {
|
542 |
+
update_option('bulletproof_security_options_mscan_plugin_hash', $mscan_plugin_hash_options);
|
543 |
+
}
|
544 |
+
|
545 |
+
} else { // All future Runs.
|
546 |
+
|
547 |
+
if ( ! empty($plugin_dir_path_array) ) {
|
548 |
+
|
549 |
+
// Don't manually delete this option here for testing - will cause problems.
|
550 |
+
$mscan_plugin_hash_options = array(
|
551 |
+
'bps_mscan_plugin_hash_version_check_new' => $mscan_plugin_hash_new['bps_mscan_plugin_hash_version_check_new'],
|
552 |
+
'bps_mscan_plugin_hash_paths_new' => $plugin_name_key_array,
|
553 |
+
'bps_mscan_plugin_hash_zip_file_new' => $mscan_plugin_hash_new['bps_mscan_plugin_hash_zip_file_new']
|
554 |
+
);
|
555 |
+
|
556 |
+
foreach( $mscan_plugin_hash_options as $key => $value ) {
|
557 |
+
update_option('bulletproof_security_options_mscan_p_hash_new', $mscan_plugin_hash_options);
|
558 |
+
}
|
559 |
+
}
|
560 |
+
}
|
561 |
+
|
562 |
+
$mscan_plugin_hash = get_option('bulletproof_security_options_mscan_plugin_hash');
|
563 |
+
$mscan_plugin_hash_new = get_option('bulletproof_security_options_mscan_p_hash_new');
|
564 |
+
|
565 |
+
// Note: $value['TextDomain'] is not reliable. Use $key instead.
|
566 |
+
$all_plugins = get_plugins();
|
567 |
+
|
568 |
+
$active_plugins_array = array();
|
569 |
+
$inactive_plugins_array = array();
|
570 |
+
$hello_dolly_plugin_array = array();
|
571 |
+
|
572 |
+
foreach ( $all_plugins as $key => $value ) {
|
573 |
+
|
574 |
+
if ( ! empty($key) ) {
|
575 |
+
|
576 |
+
$active_plugins = in_array( $key, apply_filters('active_plugins', get_option('active_plugins')));
|
577 |
+
|
578 |
+
if ( 1 == $active_plugins || is_plugin_active_for_network( $key ) ) {
|
579 |
+
|
580 |
+
$pos = strpos($key, '/');
|
581 |
+
$dolly_pos = strpos($value['Name'], 'Hello Dolly');
|
582 |
+
|
583 |
+
if ( $pos !== false ) {
|
584 |
+
|
585 |
+
$plugin_name = strstr($key, '/', true);
|
586 |
+
$active_plugins_array[] = $plugin_name;
|
587 |
+
|
588 |
+
} else {
|
589 |
+
|
590 |
+
if ( $dolly_pos !== false ) {
|
591 |
+
|
592 |
+
$hello_dolly_plugin_array[] = 'hello-dolly';
|
593 |
+
}
|
594 |
+
}
|
595 |
+
|
596 |
+
} else {
|
597 |
+
|
598 |
+
$pos = strpos($key, '/');
|
599 |
+
$dolly_pos = strpos($value['Name'], 'Hello Dolly');
|
600 |
+
|
601 |
+
if ( $pos !== false ) {
|
602 |
+
|
603 |
+
$plugin_name = strstr($key, '/', true);
|
604 |
+
$inactive_plugins_array[] = $plugin_name;
|
605 |
+
|
606 |
+
} else {
|
607 |
+
|
608 |
+
if ( $dolly_pos !== false ) {
|
609 |
+
|
610 |
+
$hello_dolly_plugin_array[] = 'hello-dolly';
|
611 |
+
}
|
612 |
+
}
|
613 |
+
}
|
614 |
+
}
|
615 |
+
}
|
616 |
+
|
617 |
+
$installed_plugins_array_merged = array_merge($active_plugins_array, $inactive_plugins_array, $hello_dolly_plugin_array);
|
618 |
+
|
619 |
+
$mscan_plugin_hash_new_array_keys = array();
|
620 |
+
|
621 |
+
if ( get_option( 'bulletproof_security_options_mscan_p_hash_new' ) ) {
|
622 |
+
|
623 |
+
// Get the new hash array keys that have a value otherwise return an empty array of array keys.
|
624 |
+
foreach ( $mscan_plugin_hash_new['bps_mscan_plugin_hash_paths_new'] as $key => $value ) {
|
625 |
+
|
626 |
+
foreach ( $value as $inner_key => $inner_value ) {
|
627 |
+
|
628 |
+
if ( ! empty($inner_value) ) {
|
629 |
+
$mscan_plugin_hash_new_array_keys[] = $key;
|
630 |
+
}
|
631 |
+
}
|
632 |
+
}
|
633 |
+
}
|
634 |
+
|
635 |
+
$plugin_hash_removal_array = array();
|
636 |
+
|
637 |
+
foreach ( $mscan_plugin_hash['bps_mscan_plugin_hash_paths'] as $key => $value ) {
|
638 |
+
|
639 |
+
// Plugin Deleted/Removed:
|
640 |
+
// Remove deleted plugins from the First Run DB option array
|
641 |
+
if ( ! in_array( $key, $installed_plugins_array_merged ) ) {
|
642 |
+
unset($value);
|
643 |
+
}
|
644 |
+
|
645 |
+
// Plugin Updated:
|
646 |
+
// Remove plugin hashes (values) from the First Run DB option array ONLY if the key exists and the value is not empty in the new plugin hash array.
|
647 |
+
// The DB arrays will be merged at a later point. So this removes/unsets any matching keys in the first run array if the new hash array key matches
|
648 |
+
// AND the value is not empty.
|
649 |
+
// Important Note: The new hash array will ONLY contain the key and hashes for any new plugins and nothing else - no other default keys.
|
650 |
+
if ( in_array( $key, $mscan_plugin_hash_new_array_keys ) ) {
|
651 |
+
unset($value);
|
652 |
+
}
|
653 |
+
|
654 |
+
if ( ! empty($value) ) {
|
655 |
+
$plugin_hash_removal_array[$key] = $value;
|
656 |
+
}
|
657 |
+
}
|
658 |
+
|
659 |
+
$mscan_plugin_hash_options = array(
|
660 |
+
'bps_mscan_plugin_hash_version_check' => $mscan_plugin_hash['bps_mscan_plugin_hash_version_check'],
|
661 |
+
'bps_mscan_plugin_hash_paths' => $plugin_hash_removal_array,
|
662 |
+
'bps_mscan_plugin_hash_zip_file' => $mscan_plugin_hash['bps_mscan_plugin_hash_zip_file']
|
663 |
+
);
|
664 |
+
|
665 |
+
foreach( $mscan_plugin_hash_options as $key => $value ) {
|
666 |
+
update_option('bulletproof_security_options_mscan_plugin_hash', $mscan_plugin_hash_options);
|
667 |
+
}
|
668 |
+
|
669 |
+
$mscan_plugin_hash = get_option('bulletproof_security_options_mscan_plugin_hash');
|
670 |
+
$mscan_plugin_hash_new = get_option('bulletproof_security_options_mscan_p_hash_new');
|
671 |
+
|
672 |
+
if ( empty($mscan_plugin_hash_new_array_keys) ) {
|
673 |
+
|
674 |
+
$result = $mscan_plugin_hash['bps_mscan_plugin_hash_paths'];
|
675 |
+
|
676 |
+
} else {
|
677 |
+
|
678 |
+
$result = array_merge($mscan_plugin_hash_new['bps_mscan_plugin_hash_paths_new'], $mscan_plugin_hash['bps_mscan_plugin_hash_paths']);
|
679 |
+
}
|
680 |
+
|
681 |
+
$mscan_plugin_hash_options = array(
|
682 |
+
'bps_mscan_plugin_hash_version_check' => $mscan_plugin_hash['bps_mscan_plugin_hash_version_check'],
|
683 |
+
'bps_mscan_plugin_hash_paths' => $result,
|
684 |
+
'bps_mscan_plugin_hash_zip_file' => $mscan_plugin_hash['bps_mscan_plugin_hash_zip_file']
|
685 |
+
);
|
686 |
+
|
687 |
+
foreach( $mscan_plugin_hash_options as $key => $value ) {
|
688 |
+
update_option('bulletproof_security_options_mscan_plugin_hash', $mscan_plugin_hash_options);
|
689 |
+
}
|
690 |
+
|
691 |
+
$mscan_plugin_hash = get_option('bulletproof_security_options_mscan_plugin_hash');
|
692 |
+
$final_result = $mscan_plugin_hash['bps_mscan_plugin_hash_paths'];
|
693 |
+
|
694 |
+
## IMPORTANT!!! Do NOT sort the 2D array - very buggy.
|
695 |
+
/*
|
696 |
+
ksort($final_result);
|
697 |
+
|
698 |
+
foreach( $final_result as &$value ) {
|
699 |
+
ksort($value);
|
700 |
+
}
|
701 |
+
*/
|
702 |
+
|
703 |
+
$mscan_plugin_hash_options_db = 'bulletproof_security_options_mscan_plugin_hash';
|
704 |
+
|
705 |
+
// Create the plugin hash file on first time scan & on future scans if new plugin hashes exist in the p_hash_new db array
|
706 |
+
// This condition is important to limit potentional parse and fatal php errors when parsing the plugin-hashes.php file in the MScan AJAX function.
|
707 |
+
if ( ! empty($mscan_plugin_hash_new_array_keys ) || ! get_option( 'bulletproof_security_options_mscan_p_hash_new' ) ) {
|
708 |
+
|
709 |
+
$plugin_hashes_file = WP_CONTENT_DIR . '/bps-backup/plugin-hashes/plugin-hashes.php';
|
710 |
+
|
711 |
+
$handleH = fopen( $plugin_hashes_file, 'wb' );
|
712 |
+
fwrite( $handleH, "<?php\n" );
|
713 |
+
fwrite( $handleH, "\$plugin_hashes = array(\n" );
|
714 |
+
|
715 |
+
foreach ( $final_result as $key => $value ) {
|
716 |
+
|
717 |
+
fwrite( $handleH, "## BEGIN " . $key . " ##" . "\n" );
|
718 |
+
|
719 |
+
foreach ( $value as $key2 => $value2 ) {
|
720 |
+
|
721 |
+
fwrite( $handleH, "'" . $value2 . "', " . "\n" );
|
722 |
+
}
|
723 |
+
|
724 |
+
fwrite( $handleH, "## END " . $key . " ##" . "\n" );
|
725 |
+
}
|
726 |
+
|
727 |
+
fwrite( $handleH, ");\n" );
|
728 |
+
fwrite( $handleH, "?>" );
|
729 |
+
fclose( $handleH );
|
730 |
+
|
731 |
+
fwrite( $handle, "Plugin MD5 File Hash Maker & Cleanup: plugin-hashes.php file created.\r\n" );
|
732 |
+
fwrite( $handle, "Plugin MD5 File Hash Maker & Cleanup: Start /bps-backup/plugin-hashes/ folder cleanup.\r\n" );
|
733 |
+
|
734 |
+
// Cleanup
|
735 |
+
$plugin_hash_folder = WP_CONTENT_DIR . '/bps-backup/plugin-hashes/';
|
736 |
+
$plugin_hash_file = WP_CONTENT_DIR . '/bps-backup/plugin-hashes/plugin-hashes.php';
|
737 |
+
|
738 |
+
if ( is_dir($plugin_hash_folder) ) {
|
739 |
+
|
740 |
+
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($plugin_hash_folder), RecursiveIteratorIterator::CHILD_FIRST);
|
741 |
+
|
742 |
+
foreach ( $iterator as $file ) {
|
743 |
+
|
744 |
+
if ( $file->isFile() ) {
|
745 |
+
|
746 |
+
if ( $file->getFilename() != 'plugin-hashes.php' ) {
|
747 |
+
@unlink( $file->getRealPath() );
|
748 |
+
}
|
749 |
+
|
750 |
+
} else {
|
751 |
+
|
752 |
+
if ( $file->isDir() ) {
|
753 |
+
@rmdir( $file->getRealPath() );
|
754 |
+
}
|
755 |
+
}
|
756 |
+
}
|
757 |
+
}
|
758 |
+
}
|
759 |
+
|
760 |
+
$time_end = microtime( true );
|
761 |
+
$hash_maker_time = $time_end - $time_start;
|
762 |
+
|
763 |
+
$hours = (int)($hash_maker_time / 60 / 60);
|
764 |
+
$minutes = (int)($hash_maker_time / 60) - $hours * 60;
|
765 |
+
$seconds = (int)$hash_maker_time - $hours * 60 * 60 - $minutes * 60;
|
766 |
+
$hours_format = $hours == 0 ? "00" : $hours;
|
767 |
+
$minutes_format = $minutes == 0 ? "00" : ($minutes < 10 ? "0".$minutes : $minutes);
|
768 |
+
$seconds_format = $seconds == 0 ? "00" : ($seconds < 10 ? "0".$seconds : $seconds);
|
769 |
+
|
770 |
+
$hash_maker_time_log = 'Plugin MD5 File Hash Maker & Cleanup Completion Time: '. $hours_format . ':'. $minutes_format . ':' . $seconds_format;
|
771 |
+
|
772 |
+
if ( ! empty($mscan_plugin_hash_new_array_keys ) || ! get_option( 'bulletproof_security_options_mscan_p_hash_new' ) ) {
|
773 |
+
fwrite( $handle, "Plugin MD5 File Hash Maker & Cleanup: Plugin Zip files deleted.\r\n" );
|
774 |
+
fwrite( $handle, "Plugin MD5 File Hash Maker & Cleanup: Extracted Plugin folders deleted.\r\n" );
|
775 |
+
}
|
776 |
+
|
777 |
+
fwrite( $handle, "$hash_maker_time_log\r\n" );
|
778 |
+
fclose($handle);
|
779 |
+
|
780 |
+
return true;
|
781 |
+
}
|
782 |
+
|
783 |
+
?>
|
includes/mscan-theme-hash-maker.php
ADDED
@@ -0,0 +1,685 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Download the Theme zip file version based on the current Theme version installed.
|
3 |
+
// Ensure that the Theme zip file is not downloaded repeatedly due to an error, issue or problem.
|
4 |
+
function bpsPro_theme_zip_download($mstime) {
|
5 |
+
global $wp_version;
|
6 |
+
|
7 |
+
$time_start = microtime( true );
|
8 |
+
|
9 |
+
set_time_limit($mstime);
|
10 |
+
$timeNow = time();
|
11 |
+
$gmt_offset = get_option( 'gmt_offset' ) * 3600;
|
12 |
+
$timestamp = date_i18n(get_option('date_format'), strtotime("11/15-1976")) . ' ' . date_i18n(get_option('time_format'), $timeNow + $gmt_offset);
|
13 |
+
$mscan_log = WP_CONTENT_DIR . '/bps-backup/logs/mscan_log.txt';
|
14 |
+
|
15 |
+
$handle = fopen( $mscan_log, 'a' );
|
16 |
+
|
17 |
+
if ( ! is_dir( WP_CONTENT_DIR . '/bps-backup/theme-hashes' ) ) {
|
18 |
+
@mkdir( WP_CONTENT_DIR . '/bps-backup/theme-hashes', 0755, true );
|
19 |
+
@chmod( WP_CONTENT_DIR . '/bps-backup/theme-hashes/', 0755 );
|
20 |
+
}
|
21 |
+
|
22 |
+
$theme_hashes_dir = WP_CONTENT_DIR . '/bps-backup/theme-hashes';
|
23 |
+
|
24 |
+
if ( ! is_dir( $theme_hashes_dir ) ) {
|
25 |
+
|
26 |
+
fwrite( $handle, "Theme Zip File Download Error: The $theme_hashes_dir folder does not exist.\r\n" );
|
27 |
+
fwrite( $handle, "Troubleshooting: Check that the Ownership or folder permissions for the /bps-backup/ folder. The /bps-backup/ folder should have 755 or 705 permissions and the Owner of the /bps-backup/ folder should be the same Owner as all of your other website folders.\r\n" );
|
28 |
+
fclose($handle);
|
29 |
+
return false;
|
30 |
+
}
|
31 |
+
|
32 |
+
$theme_hash_file = WP_CONTENT_DIR . '/bps-backup/theme-hashes/theme-hashes.php';
|
33 |
+
$blank_hash_file = WP_PLUGIN_DIR . '/bulletproof-security/admin/htaccess/wp-hashes.php';
|
34 |
+
|
35 |
+
if ( ! file_exists($theme_hash_file) ) {
|
36 |
+
|
37 |
+
if ( ! copy($blank_hash_file, $theme_hash_file) ) {
|
38 |
+
fwrite( $handle, "Theme Zip File Download Error: Unable to create the Theme hash file: $theme_hash_file\r\n" );
|
39 |
+
}
|
40 |
+
}
|
41 |
+
|
42 |
+
fwrite( $handle, "Theme Zip File Download: Start Theme zip file downloads.\r\n" );
|
43 |
+
|
44 |
+
$all_themes = wp_get_themes();
|
45 |
+
$all_themes_array = array();
|
46 |
+
|
47 |
+
foreach ( $all_themes as $key => $value ) {
|
48 |
+
|
49 |
+
if ( ! empty($key) ) {
|
50 |
+
$all_themes_array[] = $key . '.' . $value['Version'];
|
51 |
+
}
|
52 |
+
}
|
53 |
+
|
54 |
+
$bps_mscan_theme_hash_version_check_array = array();
|
55 |
+
$bps_mscan_theme_hash_paths_array = array();
|
56 |
+
$bps_mscan_theme_hash_zip_file_array = array();
|
57 |
+
|
58 |
+
$mscan_theme_hash = get_option('bulletproof_security_options_mscan_theme_hash');
|
59 |
+
$mscan_theme_hash_new = get_option('bulletproof_security_options_mscan_t_hash_new');
|
60 |
+
$tmp_file = '';
|
61 |
+
$theme_no_zip_array = array();
|
62 |
+
|
63 |
+
foreach ( $all_themes_array as $key => $value ) {
|
64 |
+
|
65 |
+
// Themes: https://downloads.wordpress.org/theme/theme-name.1.0.zip
|
66 |
+
$theme_zip_file = $value . '.zip';
|
67 |
+
$local_zip_file = WP_CONTENT_DIR . '/bps-backup/theme-hashes/' . $theme_zip_file;
|
68 |
+
|
69 |
+
$theme_name = strstr($value, '.', true); // theme-name
|
70 |
+
$theme_version = strstr($value, '.'); // .1.0
|
71 |
+
$theme_version_nodot = substr($theme_version, 1); // 1.0
|
72 |
+
|
73 |
+
$bps_mscan_theme_hash_version_check_array[$theme_name] = $theme_version_nodot;
|
74 |
+
$bps_mscan_theme_hash_paths_array[$theme_name][] = '';
|
75 |
+
|
76 |
+
// Check the WP Theme Repo for themes that do not exist in the Repo. ie premium/paid and custom themes.
|
77 |
+
// Note: some themes do not include the version # in the zip file name. Those themes will not be downloaded.
|
78 |
+
$theme_zip_file_url = 'https://downloads.wordpress.org/theme/' . $theme_zip_file;
|
79 |
+
|
80 |
+
$response = wp_remote_get( $theme_zip_file_url );
|
81 |
+
|
82 |
+
if ( is_array( $response ) && ! is_wp_error( $response ) ) {
|
83 |
+
|
84 |
+
if ( $response['response']['code'] == '404' ) {
|
85 |
+
|
86 |
+
$value = preg_replace( '/\.\d(.*)/', "", $value );
|
87 |
+
$theme_no_zip_array[] = $value;
|
88 |
+
}
|
89 |
+
}
|
90 |
+
|
91 |
+
@$bps_mscan_theme_hash_version_check = isset($mscan_theme_hash['bps_mscan_theme_hash_version_check']) ? $mscan_theme_hash['bps_mscan_theme_hash_version_check']["$theme_name"] : '';
|
92 |
+
|
93 |
+
// If the BPS DB option theme version matches then don't download another zip file and just log a log entry.
|
94 |
+
// Note: Any themes not in the WP Theme Repository will be listed in the array for later use.
|
95 |
+
if ( $bps_mscan_theme_hash_version_check == $theme_version_nodot ) {
|
96 |
+
|
97 |
+
//fwrite( $handle, "Theme Zip File Download: No new Theme Zip files were downloaded.\r\n" );
|
98 |
+
|
99 |
+
} else {
|
100 |
+
|
101 |
+
// Extra Precaution: Don't download another zip file if it already exists.
|
102 |
+
if ( ! file_exists($local_zip_file) ) {
|
103 |
+
|
104 |
+
if ( file_exists($theme_hash_file) ) {
|
105 |
+
|
106 |
+
$url = 'https://downloads.wordpress.org/theme/' . $theme_zip_file;
|
107 |
+
$tmp_file = download_url( $url, $timeout = 300 );
|
108 |
+
|
109 |
+
// Important: Do not use a return in this condition or all valid downloads will fail.
|
110 |
+
// This condition prevents a fatal error on WP_ERROR in PHP 8, which halts processing.
|
111 |
+
if ( is_wp_error( $tmp_file ) ) {
|
112 |
+
|
113 |
+
fwrite( $handle, "Theme Zip File Download: WP_Error: Unable to download Theme zip file: $theme_zip_file from WordPress.org.\r\n" );
|
114 |
+
|
115 |
+
} else {
|
116 |
+
|
117 |
+
if ( ! copy( $tmp_file, $local_zip_file ) ) {
|
118 |
+
fwrite( $handle, "Theme Zip File Download: Unable to download this Plugin zip file: $theme_zip_file\r\n" );
|
119 |
+
} else {
|
120 |
+
fwrite( $handle, "Theme Zip File Download: Zip file download successful: $theme_zip_file\r\n" );
|
121 |
+
}
|
122 |
+
|
123 |
+
unlink( $tmp_file );
|
124 |
+
}
|
125 |
+
}
|
126 |
+
}
|
127 |
+
}
|
128 |
+
|
129 |
+
if ( file_exists( $local_zip_file ) ) {
|
130 |
+
$zip_file = 'yes';
|
131 |
+
} else {
|
132 |
+
$zip_file = 'no';
|
133 |
+
}
|
134 |
+
|
135 |
+
$bps_mscan_theme_hash_zip_file_array[$theme_name] = $zip_file;
|
136 |
+
}
|
137 |
+
|
138 |
+
// Update the non-downloadable theme DB option on each scan run.
|
139 |
+
// display this db option in a the new report that will be created. ie these themes are not downloadable from WP. premium/paid and custom themes.
|
140 |
+
// Add this help info: use the theme upload zip form to upload premium/paid or custom theme zip files
|
141 |
+
// Any themes that are uploaded using the theme zip upload form will be automatically extracted, added to the theme hash array and deleted on next MScan run.
|
142 |
+
$mscan_nodownload = get_option('bulletproof_security_options_mscan_nodownload');
|
143 |
+
$bps_plugin_nodownload = isset( $mscan_nodownload['bps_plugin_nodownload']) ? $mscan_nodownload['bps_plugin_nodownload'] : '';
|
144 |
+
|
145 |
+
$mscan_nodownload_options = array(
|
146 |
+
'bps_plugin_nodownload' => $bps_plugin_nodownload,
|
147 |
+
'bps_theme_nodownload' => $theme_no_zip_array
|
148 |
+
);
|
149 |
+
|
150 |
+
foreach( $mscan_nodownload_options as $key => $value ) {
|
151 |
+
update_option('bulletproof_security_options_mscan_nodownload', $mscan_nodownload_options);
|
152 |
+
}
|
153 |
+
|
154 |
+
$mscan_theme_hash_options_db = 'bulletproof_security_options_mscan_theme_hash';
|
155 |
+
|
156 |
+
// I'm really only interested in preserving the Theme hash paths and updating the theme versions, everything else is an afterthought for future scaleability.
|
157 |
+
// On first run theme hash paths are saved as an empty 2D array, theme version numbers are saved and zip file yes or no value is saved.
|
158 |
+
// Theme hash paths and hashes are created in the Theme hash maker function.
|
159 |
+
if ( ! get_option( $mscan_theme_hash_options_db ) ) {
|
160 |
+
|
161 |
+
$mscan_theme_hash_options = array(
|
162 |
+
'bps_mscan_theme_hash_version_check' => $bps_mscan_theme_hash_version_check_array,
|
163 |
+
'bps_mscan_theme_hash_paths' => $bps_mscan_theme_hash_paths_array,
|
164 |
+
'bps_mscan_theme_hash_zip_file' => $bps_mscan_theme_hash_zip_file_array
|
165 |
+
);
|
166 |
+
|
167 |
+
foreach( $mscan_theme_hash_options as $key => $value ) {
|
168 |
+
update_option('bulletproof_security_options_mscan_theme_hash', $mscan_theme_hash_options);
|
169 |
+
}
|
170 |
+
|
171 |
+
} else {
|
172 |
+
|
173 |
+
// All future runs create new DB arrays used in the Theme hash maker function to add or remove array values from the first run DB option.
|
174 |
+
delete_option('bulletproof_security_options_mscan_t_hash_new');
|
175 |
+
|
176 |
+
$mscan_theme_hash_options_new = array(
|
177 |
+
'bps_mscan_theme_hash_version_check_new' => $bps_mscan_theme_hash_version_check_array,
|
178 |
+
'bps_mscan_theme_hash_paths_new' => $bps_mscan_theme_hash_paths_array,
|
179 |
+
'bps_mscan_theme_hash_zip_file_new' => $bps_mscan_theme_hash_zip_file_array
|
180 |
+
);
|
181 |
+
|
182 |
+
foreach( $mscan_theme_hash_options_new as $key => $value ) {
|
183 |
+
update_option('bulletproof_security_options_mscan_t_hash_new', $mscan_theme_hash_options_new);
|
184 |
+
}
|
185 |
+
|
186 |
+
// Update any new Theme versions in the first run db option
|
187 |
+
$mscan_theme_hash = get_option('bulletproof_security_options_mscan_theme_hash');
|
188 |
+
$mscan_theme_hash_new = get_option('bulletproof_security_options_mscan_t_hash_new');
|
189 |
+
|
190 |
+
$theme_hash_version_check_update_array = array();
|
191 |
+
|
192 |
+
foreach ( $mscan_theme_hash['bps_mscan_theme_hash_version_check'] as $key => $value ) {
|
193 |
+
|
194 |
+
foreach ( $mscan_theme_hash_new['bps_mscan_theme_hash_version_check_new'] as $key_new => $value_new ) {
|
195 |
+
|
196 |
+
if ( $key == $key_new ) {
|
197 |
+
|
198 |
+
$theme_hash_version_check_update_array[$key] = $value_new;
|
199 |
+
}
|
200 |
+
}
|
201 |
+
}
|
202 |
+
|
203 |
+
// Update any new Theme versions & add/merge any new Themes by into the first run db option
|
204 |
+
$array_diff_key_theme_hash_version = array_diff_key($mscan_theme_hash_new['bps_mscan_theme_hash_version_check_new'], $mscan_theme_hash['bps_mscan_theme_hash_version_check']);
|
205 |
+
$array_merge_new_theme_hash_version = array_merge($theme_hash_version_check_update_array, $array_diff_key_theme_hash_version);
|
206 |
+
|
207 |
+
$mscan_theme_hash_options = array(
|
208 |
+
'bps_mscan_theme_hash_version_check' => $array_merge_new_theme_hash_version,
|
209 |
+
'bps_mscan_theme_hash_paths' => $mscan_theme_hash['bps_mscan_theme_hash_paths'],
|
210 |
+
'bps_mscan_theme_hash_zip_file' => $mscan_theme_hash['bps_mscan_theme_hash_zip_file']
|
211 |
+
);
|
212 |
+
|
213 |
+
foreach( $mscan_theme_hash_options as $key => $value ) {
|
214 |
+
update_option('bulletproof_security_options_mscan_theme_hash', $mscan_theme_hash_options);
|
215 |
+
}
|
216 |
+
}
|
217 |
+
|
218 |
+
$time_end = microtime( true );
|
219 |
+
$download_time = $time_end - $time_start;
|
220 |
+
|
221 |
+
$hours = (int)($download_time / 60 / 60);
|
222 |
+
$minutes = (int)($download_time / 60) - $hours * 60;
|
223 |
+
$seconds = (int)$download_time - $hours * 60 * 60 - $minutes * 60;
|
224 |
+
$hours_format = $hours == 0 ? "00" : $hours;
|
225 |
+
$minutes_format = $minutes == 0 ? "00" : ($minutes < 10 ? "0".$minutes : $minutes);
|
226 |
+
$seconds_format = $seconds == 0 ? "00" : ($seconds < 10 ? "0".$seconds : $seconds);
|
227 |
+
|
228 |
+
$download_time_log = 'Theme Zip File Download Completion Time: '. $hours_format . ':'. $minutes_format . ':' . $seconds_format;
|
229 |
+
|
230 |
+
fwrite( $handle, "$download_time_log\r\n" );
|
231 |
+
fclose($handle);
|
232 |
+
|
233 |
+
return true;
|
234 |
+
}
|
235 |
+
|
236 |
+
// Extract the Theme zip files.
|
237 |
+
// Note: The extracted Theme folders do not have a version number: /theme-name/
|
238 |
+
// Both ZipArchive and PclZip have been tested.
|
239 |
+
function bpsPro_theme_zip_extractor() {
|
240 |
+
global $wp_version;
|
241 |
+
|
242 |
+
$time_start = microtime( true );
|
243 |
+
|
244 |
+
$timeNow = time();
|
245 |
+
$gmt_offset = get_option( 'gmt_offset' ) * 3600;
|
246 |
+
$timestamp = date_i18n(get_option('date_format'), strtotime("11/15-1976")) . ' ' . date_i18n(get_option('time_format'), $timeNow + $gmt_offset);
|
247 |
+
$mscan_log = WP_CONTENT_DIR . '/bps-backup/logs/mscan_log.txt';
|
248 |
+
|
249 |
+
$handle = fopen( $mscan_log, 'a' );
|
250 |
+
|
251 |
+
$theme_hash_folder = WP_CONTENT_DIR . '/bps-backup/theme-hashes/';
|
252 |
+
$zip_files = preg_grep('~\.(zip)$~', scandir($theme_hash_folder));
|
253 |
+
|
254 |
+
if ( class_exists('ZipArchive') ) {
|
255 |
+
|
256 |
+
fwrite( $handle, "Theme Zip File Extraction: Start ZipArchive zip file extraction.\r\n" );
|
257 |
+
|
258 |
+
foreach ( $zip_files as $zip_file ) {
|
259 |
+
|
260 |
+
$zip_file_path = $theme_hash_folder . $zip_file;
|
261 |
+
|
262 |
+
$ThemeZip = new ZipArchive;
|
263 |
+
$res = $ThemeZip->open( $zip_file_path );
|
264 |
+
|
265 |
+
if ( $res === TRUE ) {
|
266 |
+
|
267 |
+
$ThemeZip->extractTo( WP_CONTENT_DIR . '/bps-backup/theme-hashes/' );
|
268 |
+
$ThemeZip->close();
|
269 |
+
|
270 |
+
fwrite( $handle, "Theme Zip File Extraction ZipArchive: Zip file extraction successful: $zip_file.\r\n" );
|
271 |
+
} else {
|
272 |
+
fwrite( $handle, "Theme Zip File Extraction ZipArchive Error: Unable to extract this Theme zip file: $zip_file.\r\n" );
|
273 |
+
}
|
274 |
+
}
|
275 |
+
|
276 |
+
$time_end = microtime( true );
|
277 |
+
$zip_extract_time = $time_end - $time_start;
|
278 |
+
|
279 |
+
$hours = (int)($zip_extract_time / 60 / 60);
|
280 |
+
$minutes = (int)($zip_extract_time / 60) - $hours * 60;
|
281 |
+
$seconds = (int)$zip_extract_time - $hours * 60 * 60 - $minutes * 60;
|
282 |
+
$hours_format = $hours == 0 ? "00" : $hours;
|
283 |
+
$minutes_format = $minutes == 0 ? "00" : ($minutes < 10 ? "0".$minutes : $minutes);
|
284 |
+
$seconds_format = $seconds == 0 ? "00" : ($seconds < 10 ? "0".$seconds : $seconds);
|
285 |
+
|
286 |
+
$zip_extract_time_log = 'Theme Zip File Extraction Completion Time: '. $hours_format . ':'. $minutes_format . ':' . $seconds_format;
|
287 |
+
|
288 |
+
fwrite( $handle, "$zip_extract_time_log\r\n" );
|
289 |
+
fclose($handle);
|
290 |
+
|
291 |
+
return true;
|
292 |
+
|
293 |
+
} else {
|
294 |
+
|
295 |
+
fwrite( $handle, "Theme Zip File Extraction: Start PclZip zip file extraction.\r\n" );
|
296 |
+
|
297 |
+
define( 'PCLZIP_TEMPORARY_DIR', WP_CONTENT_DIR . '/bps-backup/theme-hashes/' );
|
298 |
+
require_once( ABSPATH . 'wp-admin/includes/class-pclzip.php');
|
299 |
+
|
300 |
+
if ( ini_get( 'mbstring.func_overload' ) && function_exists( 'mb_internal_encoding' ) ) {
|
301 |
+
$previous_encoding = mb_internal_encoding();
|
302 |
+
mb_internal_encoding( 'ISO-8859-1' );
|
303 |
+
}
|
304 |
+
|
305 |
+
foreach ( $zip_files as $zip_file ) {
|
306 |
+
|
307 |
+
$zip_file_path = $theme_hash_folder . $zip_file;
|
308 |
+
|
309 |
+
$archive = new PclZip( $zip_file_path );
|
310 |
+
|
311 |
+
if ( $archive->extract( PCLZIP_OPT_PATH, WP_CONTENT_DIR . '/bps-backup/theme-hashes', PCLZIP_OPT_REMOVE_PATH, WP_CONTENT_DIR . '/bps-backup/theme-hashes' ) ) {
|
312 |
+
fwrite( $handle, "Theme Zip File Extraction PclZip: Zip file extracted successfully: $zip_file.\r\n" );
|
313 |
+
} else {
|
314 |
+
fwrite( $handle, "Theme Zip File Extraction PclZip Error: Unable to unzip this Theme zip file: $zip_file.\r\n" );
|
315 |
+
}
|
316 |
+
}
|
317 |
+
|
318 |
+
$time_end = microtime( true );
|
319 |
+
$zip_extract_time = $time_end - $time_start;
|
320 |
+
|
321 |
+
$hours = (int)($zip_extract_time / 60 / 60);
|
322 |
+
$minutes = (int)($zip_extract_time / 60) - $hours * 60;
|
323 |
+
$seconds = (int)$zip_extract_time - $hours * 60 * 60 - $minutes * 60;
|
324 |
+
$hours_format = $hours == 0 ? "00" : $hours;
|
325 |
+
$minutes_format = $minutes == 0 ? "00" : ($minutes < 10 ? "0".$minutes : $minutes);
|
326 |
+
$seconds_format = $seconds == 0 ? "00" : ($seconds < 10 ? "0".$seconds : $seconds);
|
327 |
+
|
328 |
+
$zip_extract_time_log = 'Theme Zip File Extraction Completion Time: '. $hours_format . ':'. $minutes_format . ':' . $seconds_format;
|
329 |
+
|
330 |
+
fwrite( $handle, "$zip_extract_time_log\r\n" );
|
331 |
+
fclose($handle);
|
332 |
+
|
333 |
+
return true;
|
334 |
+
}
|
335 |
+
}
|
336 |
+
|
337 |
+
// Creates an MD5 theme file hash array.
|
338 |
+
// Cleanup: Deletes the theme zip files and the extracted theme folders.
|
339 |
+
function bpsPro_theme_hash_maker() {
|
340 |
+
global $wp_version;
|
341 |
+
|
342 |
+
$time_start = microtime( true );
|
343 |
+
|
344 |
+
$timeNow = time();
|
345 |
+
$gmt_offset = get_option( 'gmt_offset' ) * 3600;
|
346 |
+
$timestamp = date_i18n(get_option('date_format'), strtotime("11/15-1976")) . ' ' . date_i18n(get_option('time_format'), $timeNow + $gmt_offset);
|
347 |
+
$mscan_log = WP_CONTENT_DIR . '/bps-backup/logs/mscan_log.txt';
|
348 |
+
|
349 |
+
$handle = fopen( $mscan_log, 'a' );
|
350 |
+
|
351 |
+
if ( ! is_array( spl_classes() ) ) {
|
352 |
+
fwrite( $handle, "Theme MD5 File Hash Maker Error: The Standard PHP Library (SPL) is Not available/installed. Unable to create Theme MD5 hash file.\r\n" );
|
353 |
+
fwrite( $handle, "Solution: Contact your web host and ask them to install the Standard PHP Library (SPL) on your server.\r\n" );
|
354 |
+
fclose($handle);
|
355 |
+
|
356 |
+
return false;
|
357 |
+
}
|
358 |
+
|
359 |
+
$theme_hash_file = WP_CONTENT_DIR . '/bps-backup/theme-hashes/theme-hashes.php';
|
360 |
+
|
361 |
+
if ( ! file_exists( $theme_hash_file ) ) {
|
362 |
+
fwrite( $handle, "Theme MD5 File Hash Maker Error: The $theme_hash_file file does not exist.\r\n" );
|
363 |
+
fwrite( $handle, "Troubleshooting: Check the Ownership or folder permissions for the /bps-backup/theme-hashes/ folder. The /bps-backup/theme-hashes/ folder should have 755 or 705 permissions and the Owner of the /bps-backup/theme-hashes/ folder should be the same Owner as all of your other website folders.\r\n" );
|
364 |
+
fclose($handle);
|
365 |
+
|
366 |
+
return false;
|
367 |
+
}
|
368 |
+
|
369 |
+
fwrite( $handle, "Theme MD5 File Hash Maker: Start creating the theme-hashes.php file.\r\n" );
|
370 |
+
|
371 |
+
$source = WP_CONTENT_DIR . '/bps-backup/theme-hashes/';
|
372 |
+
$gmt_offset = get_option( 'gmt_offset' ) * 3600;
|
373 |
+
|
374 |
+
$theme_dir_path_array = array();
|
375 |
+
$theme_folder_name_array = array();
|
376 |
+
|
377 |
+
if ( is_dir($source) ) {
|
378 |
+
$iterator = new DirectoryIterator($source);
|
379 |
+
|
380 |
+
foreach ( $iterator as $files ) {
|
381 |
+
if ( $files->isDir() && ! $files->isDot() ) {
|
382 |
+
|
383 |
+
$theme_dir_path_array[] = $files->getPathname();
|
384 |
+
}
|
385 |
+
}
|
386 |
+
}
|
387 |
+
|
388 |
+
// If the $theme_dir_path_array array is empty there are no new theme folders to process
|
389 |
+
if ( ! empty($theme_dir_path_array) ) {
|
390 |
+
|
391 |
+
$str1 = WP_CONTENT_DIR . '/bps-backup/theme-hashes/';
|
392 |
+
$str2 = WP_CONTENT_DIR . '/bps-backup/theme-hashes\\';
|
393 |
+
$str3 = WP_CONTENT_DIR . '\bps-backup\theme-hashes\\';
|
394 |
+
|
395 |
+
$filePath = array();
|
396 |
+
|
397 |
+
foreach ( $theme_dir_path_array as $theme_dir_path ) {
|
398 |
+
|
399 |
+
$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($theme_dir_path), RecursiveIteratorIterator::SELF_FIRST);
|
400 |
+
|
401 |
+
foreach ( $objects as $files ) {
|
402 |
+
|
403 |
+
if ( $files->isFile() ) {
|
404 |
+
|
405 |
+
$filePath[] = str_replace( array( $str1, $str2, $str3 ), "", $files->getPathname() ). '\' => \'' . md5_file($files->getPathname());
|
406 |
+
}
|
407 |
+
}
|
408 |
+
}
|
409 |
+
|
410 |
+
$mscan_theme_hash = get_option('bulletproof_security_options_mscan_theme_hash');
|
411 |
+
$mscan_theme_hash_new = get_option('bulletproof_security_options_mscan_t_hash_new');
|
412 |
+
|
413 |
+
$theme_name_key_array = array();
|
414 |
+
|
415 |
+
foreach ( $filePath as $key => $value ) {
|
416 |
+
|
417 |
+
$key_value = preg_replace( '/(\\\\.*|\/.*)/', "", $value);
|
418 |
+
|
419 |
+
if ( ! empty($value) ) {
|
420 |
+
$theme_name_key_array[$key_value][] = $value;
|
421 |
+
}
|
422 |
+
}
|
423 |
+
}
|
424 |
+
|
425 |
+
// Error Check: If any .php files exist in the theme-hashes folder that are not the theme-hashes.php file then the theme zip file
|
426 |
+
// did not extract the theme files into a theme folder and instead extracted the files into the root theme-hashes folder.
|
427 |
+
// Could be caused by an incorrect archive or if someone manually copies a theme zip that does not extract into a theme folder in the theme-hashes folder.
|
428 |
+
|
429 |
+
// Important Note: The theme zip file must extract the theme zip file into a theme folder: /theme-name/
|
430 |
+
// in order for someone to manually copy premium and custom themes into the /theme-hashes/ folder to be iterated and added to the hash array.
|
431 |
+
// HALT script execution if any files exist in the /theme-hashes/ folder that are not the theme-hashes.php file.
|
432 |
+
// Update the MScan option setting to: 3 to get out of a looping situation with status 2.
|
433 |
+
// Use MScan Status: 3 and let the iframe js script update the status to 4 in case the estimated scan time is excessive.
|
434 |
+
|
435 |
+
$theme_hash_folder = WP_CONTENT_DIR . '/bps-backup/theme-hashes/';
|
436 |
+
$theme_files = preg_grep('~\.(php)$~', scandir($theme_hash_folder));
|
437 |
+
|
438 |
+
foreach ( $theme_files as $theme_file ) {
|
439 |
+
|
440 |
+
if ( $theme_file != 'theme-hashes.php' ) {
|
441 |
+
|
442 |
+
fwrite( $handle, "Theme MD5 File Hash Maker Error: Files exist in the $theme_hash_folder that should not be there. If you copied theme files into this folder then delete them. Only Theme Zip files or extracted Theme folders should be in this folder.\r\n" );
|
443 |
+
|
444 |
+
$MScan_status = get_option('bulletproof_security_options_MScan_status');
|
445 |
+
|
446 |
+
$MScan_status_db = array(
|
447 |
+
'bps_mscan_time_start' => $MScan_status['bps_mscan_time_start'],
|
448 |
+
'bps_mscan_time_stop' => $MScan_status['bps_mscan_time_stop'],
|
449 |
+
'bps_mscan_time_end' => $MScan_status['bps_mscan_time_end'],
|
450 |
+
'bps_mscan_time_remaining' => $MScan_status['bps_mscan_time_remaining'],
|
451 |
+
'bps_mscan_status' => '3',
|
452 |
+
'bps_mscan_last_scan_timestamp' => $MScan_status['bps_mscan_last_scan_timestamp'],
|
453 |
+
'bps_mscan_total_time' => $MScan_status['bps_mscan_total_time'],
|
454 |
+
'bps_mscan_total_website_files' => '',
|
455 |
+
'bps_mscan_total_wp_core_files' => $MScan_status['bps_mscan_total_wp_core_files'],
|
456 |
+
'bps_mscan_total_non_image_files' => $MScan_status['bps_mscan_total_non_image_files'],
|
457 |
+
'bps_mscan_total_image_files' => '',
|
458 |
+
'bps_mscan_total_all_scannable_files' => 'Error: Files found in the theme-hashes folder',
|
459 |
+
'bps_mscan_total_skipped_files' => $MScan_status['bps_mscan_total_skipped_files'],
|
460 |
+
'bps_mscan_total_suspect_files' => $MScan_status['bps_mscan_total_suspect_files'],
|
461 |
+
'bps_mscan_suspect_skipped_files' => $MScan_status['bps_mscan_suspect_skipped_files'],
|
462 |
+
'bps_mscan_total_suspect_db' => $MScan_status['bps_mscan_total_suspect_db'],
|
463 |
+
'bps_mscan_total_ignored_files' => $MScan_status['bps_mscan_total_ignored_files'],
|
464 |
+
'bps_mscan_total_plugin_files' => $MScan_status['bps_mscan_total_plugin_files'],
|
465 |
+
'bps_mscan_total_theme_files' => $MScan_status['bps_mscan_total_theme_files']
|
466 |
+
);
|
467 |
+
|
468 |
+
foreach( $MScan_status_db as $key => $value ) {
|
469 |
+
update_option('bulletproof_security_options_MScan_status', $MScan_status_db);
|
470 |
+
}
|
471 |
+
|
472 |
+
return false;
|
473 |
+
}
|
474 |
+
}
|
475 |
+
|
476 |
+
$mscan_theme_hash_options_db_new = 'bulletproof_security_options_mscan_t_hash_new';
|
477 |
+
|
478 |
+
// First Run
|
479 |
+
if ( ! get_option( $mscan_theme_hash_options_db_new ) ) {
|
480 |
+
|
481 |
+
$mscan_theme_hash_options = array(
|
482 |
+
'bps_mscan_theme_hash_version_check' => $mscan_theme_hash['bps_mscan_theme_hash_version_check'],
|
483 |
+
'bps_mscan_theme_hash_paths' => $theme_name_key_array,
|
484 |
+
'bps_mscan_theme_hash_zip_file' => $mscan_theme_hash['bps_mscan_theme_hash_zip_file']
|
485 |
+
);
|
486 |
+
|
487 |
+
foreach( $mscan_theme_hash_options as $key => $value ) {
|
488 |
+
update_option('bulletproof_security_options_mscan_theme_hash', $mscan_theme_hash_options);
|
489 |
+
}
|
490 |
+
|
491 |
+
} else { // All future Runs.
|
492 |
+
|
493 |
+
if ( ! empty($theme_dir_path_array) ) {
|
494 |
+
|
495 |
+
// Don't manually delete this option for testing - will cause problems.
|
496 |
+
$mscan_theme_hash_options = array(
|
497 |
+
'bps_mscan_theme_hash_version_check_new' => $mscan_theme_hash_new['bps_mscan_theme_hash_version_check_new'],
|
498 |
+
'bps_mscan_theme_hash_paths_new' => $theme_name_key_array,
|
499 |
+
'bps_mscan_theme_hash_zip_file_new' => $mscan_theme_hash_new['bps_mscan_theme_hash_zip_file_new']
|
500 |
+
);
|
501 |
+
|
502 |
+
foreach( $mscan_theme_hash_options as $key => $value ) {
|
503 |
+
update_option('bulletproof_security_options_mscan_t_hash_new', $mscan_theme_hash_options);
|
504 |
+
}
|
505 |
+
}
|
506 |
+
}
|
507 |
+
|
508 |
+
$mscan_theme_hash = get_option('bulletproof_security_options_mscan_theme_hash');
|
509 |
+
$mscan_theme_hash_new = get_option('bulletproof_security_options_mscan_t_hash_new');
|
510 |
+
|
511 |
+
$all_themes = wp_get_themes();
|
512 |
+
$all_themes_array = array();
|
513 |
+
|
514 |
+
foreach ( $all_themes as $key => $value ) {
|
515 |
+
|
516 |
+
if ( ! empty($key) ) {
|
517 |
+
$all_themes_array[] = $key;
|
518 |
+
}
|
519 |
+
}
|
520 |
+
|
521 |
+
$mscan_theme_hash_new_array_keys = array();
|
522 |
+
|
523 |
+
if ( get_option( 'bulletproof_security_options_mscan_t_hash_new' ) ) {
|
524 |
+
|
525 |
+
// Get the new hash array keys that have a value otherwise return an empty array of array keys.
|
526 |
+
foreach ( $mscan_theme_hash_new['bps_mscan_theme_hash_paths_new'] as $key => $value ) {
|
527 |
+
|
528 |
+
foreach ( $value as $inner_key => $inner_value ) {
|
529 |
+
|
530 |
+
if ( ! empty($inner_value) ) {
|
531 |
+
$mscan_theme_hash_new_array_keys[] = $key;
|
532 |
+
}
|
533 |
+
}
|
534 |
+
}
|
535 |
+
}
|
536 |
+
|
537 |
+
$theme_hash_removal_array = array();
|
538 |
+
|
539 |
+
foreach ( $mscan_theme_hash['bps_mscan_theme_hash_paths'] as $key => $value ) {
|
540 |
+
|
541 |
+
// Theme Deleted/Removed:
|
542 |
+
// Remove deleted themes from the First Run DB option array
|
543 |
+
if ( ! in_array( $key, $all_themes_array ) ) {
|
544 |
+
unset($value);
|
545 |
+
}
|
546 |
+
|
547 |
+
// Theme Updated:
|
548 |
+
// Remove theme hashes (values) from the First Run DB option array ONLY if the key exists and the value is not empty in the new theme hash array.
|
549 |
+
// The DB arrays will be merged at a later point. So this removes/unsets any matching keys in the first run array if the new hash array key matches
|
550 |
+
// AND the value is not empty.
|
551 |
+
// Important Note: The new hash array will ONLY contain the key and hashes for any new themes and nothing else - no other default keys.
|
552 |
+
if ( in_array( $key, $mscan_theme_hash_new_array_keys ) ) {
|
553 |
+
unset($value);
|
554 |
+
}
|
555 |
+
|
556 |
+
if ( ! empty($value) ) {
|
557 |
+
$theme_hash_removal_array[$key] = $value;
|
558 |
+
}
|
559 |
+
}
|
560 |
+
|
561 |
+
$mscan_theme_hash_options = array(
|
562 |
+
'bps_mscan_theme_hash_version_check' => $mscan_theme_hash['bps_mscan_theme_hash_version_check'],
|
563 |
+
'bps_mscan_theme_hash_paths' => $theme_hash_removal_array,
|
564 |
+
'bps_mscan_theme_hash_zip_file' => $mscan_theme_hash['bps_mscan_theme_hash_zip_file']
|
565 |
+
);
|
566 |
+
|
567 |
+
foreach( $mscan_theme_hash_options as $key => $value ) {
|
568 |
+
update_option('bulletproof_security_options_mscan_theme_hash', $mscan_theme_hash_options);
|
569 |
+
}
|
570 |
+
|
571 |
+
$mscan_theme_hash = get_option('bulletproof_security_options_mscan_theme_hash');
|
572 |
+
$mscan_theme_hash_new = get_option('bulletproof_security_options_mscan_t_hash_new');
|
573 |
+
|
574 |
+
if ( empty($mscan_theme_hash_new_array_keys) ) {
|
575 |
+
|
576 |
+
$result = $mscan_theme_hash['bps_mscan_theme_hash_paths'];
|
577 |
+
|
578 |
+
} else {
|
579 |
+
|
580 |
+
$result = array_merge($mscan_theme_hash_new['bps_mscan_theme_hash_paths_new'], $mscan_theme_hash['bps_mscan_theme_hash_paths']);
|
581 |
+
}
|
582 |
+
|
583 |
+
$mscan_theme_hash_options = array(
|
584 |
+
'bps_mscan_theme_hash_version_check' => $mscan_theme_hash['bps_mscan_theme_hash_version_check'],
|
585 |
+
'bps_mscan_theme_hash_paths' => $result,
|
586 |
+
'bps_mscan_theme_hash_zip_file' => $mscan_theme_hash['bps_mscan_theme_hash_zip_file']
|
587 |
+
);
|
588 |
+
|
589 |
+
foreach( $mscan_theme_hash_options as $key => $value ) {
|
590 |
+
update_option('bulletproof_security_options_mscan_theme_hash', $mscan_theme_hash_options);
|
591 |
+
}
|
592 |
+
|
593 |
+
$mscan_theme_hash = get_option('bulletproof_security_options_mscan_theme_hash');
|
594 |
+
$final_result = $mscan_theme_hash['bps_mscan_theme_hash_paths'];
|
595 |
+
|
596 |
+
## IMPORTANT!!! Do NOT sort the 2D array - very buggy.
|
597 |
+
/*
|
598 |
+
ksort($final_result);
|
599 |
+
|
600 |
+
foreach( $final_result as &$value ) {
|
601 |
+
ksort($value);
|
602 |
+
}
|
603 |
+
*/
|
604 |
+
|
605 |
+
$mscan_theme_hash_options_db = 'bulletproof_security_options_mscan_theme_hash';
|
606 |
+
|
607 |
+
// Create the theme hash file on first time scan & on future scans if new theme hashes exist in the t_hash_new db array
|
608 |
+
// This condition is important to limit potentional parse and fatal php errors when parsing the theme-hashes.php file in the MScan AJAX function.
|
609 |
+
if ( ! empty($mscan_theme_hash_new_array_keys ) || ! get_option( 'bulletproof_security_options_mscan_t_hash_new' ) ) {
|
610 |
+
|
611 |
+
$theme_hashes_file = WP_CONTENT_DIR . '/bps-backup/theme-hashes/theme-hashes.php';
|
612 |
+
|
613 |
+
$handleH = fopen( $theme_hashes_file, 'wb' );
|
614 |
+
fwrite( $handleH, "<?php\n" );
|
615 |
+
fwrite( $handleH, "\$theme_hashes = array(\n" );
|
616 |
+
|
617 |
+
foreach ( $final_result as $key => $value ) {
|
618 |
+
|
619 |
+
fwrite( $handleH, "## BEGIN " . $key . " ##" . "\n" );
|
620 |
+
|
621 |
+
foreach ( $value as $key2 => $value2 ) {
|
622 |
+
|
623 |
+
fwrite( $handleH, "'" . $value2 . "', " . "\n" );
|
624 |
+
}
|
625 |
+
|
626 |
+
fwrite( $handleH, "## END " . $key . " ##" . "\n" );
|
627 |
+
}
|
628 |
+
|
629 |
+
fwrite( $handleH, ");\n" );
|
630 |
+
fwrite( $handleH, "?>" );
|
631 |
+
fclose( $handleH );
|
632 |
+
|
633 |
+
fwrite( $handle, "Theme MD5 File Hash Maker & Cleanup: theme-hashes.php file created.\r\n" );
|
634 |
+
fwrite( $handle, "Theme MD5 File Hash Maker & Cleanup: Start /bps-backup/theme-hashes/ folder cleanup.\r\n" );
|
635 |
+
|
636 |
+
// Cleanup
|
637 |
+
$theme_hash_folder = WP_CONTENT_DIR . '/bps-backup/theme-hashes/';
|
638 |
+
$theme_hash_file = WP_CONTENT_DIR . '/bps-backup/theme-hashes/theme-hashes.php';
|
639 |
+
|
640 |
+
if ( is_dir($theme_hash_folder) ) {
|
641 |
+
|
642 |
+
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($theme_hash_folder), RecursiveIteratorIterator::CHILD_FIRST);
|
643 |
+
|
644 |
+
foreach ( $iterator as $file ) {
|
645 |
+
|
646 |
+
if ( $file->isFile() ) {
|
647 |
+
|
648 |
+
if ( $file->getFilename() != 'theme-hashes.php' ) {
|
649 |
+
@unlink( $file->getRealPath() );
|
650 |
+
}
|
651 |
+
|
652 |
+
} else {
|
653 |
+
|
654 |
+
if ( $file->isDir() ) {
|
655 |
+
@rmdir( $file->getRealPath() );
|
656 |
+
}
|
657 |
+
}
|
658 |
+
}
|
659 |
+
}
|
660 |
+
}
|
661 |
+
|
662 |
+
$time_end = microtime( true );
|
663 |
+
$hash_maker_time = $time_end - $time_start;
|
664 |
+
|
665 |
+
$hours = (int)($hash_maker_time / 60 / 60);
|
666 |
+
$minutes = (int)($hash_maker_time / 60) - $hours * 60;
|
667 |
+
$seconds = (int)$hash_maker_time - $hours * 60 * 60 - $minutes * 60;
|
668 |
+
$hours_format = $hours == 0 ? "00" : $hours;
|
669 |
+
$minutes_format = $minutes == 0 ? "00" : ($minutes < 10 ? "0".$minutes : $minutes);
|
670 |
+
$seconds_format = $seconds == 0 ? "00" : ($seconds < 10 ? "0".$seconds : $seconds);
|
671 |
+
|
672 |
+
$hash_maker_time_log = 'Theme MD5 File Hash Maker & Cleanup Completion Time: '. $hours_format . ':'. $minutes_format . ':' . $seconds_format;
|
673 |
+
|
674 |
+
if ( ! empty($mscan_theme_hash_new_array_keys ) || ! get_option( 'bulletproof_security_options_mscan_t_hash_new' ) ) {
|
675 |
+
fwrite( $handle, "Theme MD5 File Hash Maker & Cleanup: Theme Zip files deleted.\r\n" );
|
676 |
+
fwrite( $handle, "Theme MD5 File Hash Maker & Cleanup: Extracted Theme folders deleted.\r\n" );
|
677 |
+
}
|
678 |
+
|
679 |
+
fwrite( $handle, "$hash_maker_time_log\r\n" );
|
680 |
+
fclose($handle);
|
681 |
+
|
682 |
+
return true;
|
683 |
+
}
|
684 |
+
|
685 |
+
?>
|
includes/mscan-wp-core-hash-maker.php
ADDED
@@ -0,0 +1,335 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Download the WordPress zip file version based on the current WP version installed.
|
3 |
+
// Ensure that the WP zip file is not downloaded repeatedly due to an error, issue or problem.
|
4 |
+
## 13.8: Removed cURL GET code and replaced with simple fopen code. It is unnecessary to use the WP HTTP API for something as simple as a zip file download.
|
5 |
+
## 13.9: changed fopen code to download_url() function due to problems with allow_url_fopen being turned off.
|
6 |
+
function bpsPro_wp_zip_download($mstime) {
|
7 |
+
global $wp_version;
|
8 |
+
|
9 |
+
$time_start = microtime( true );
|
10 |
+
|
11 |
+
set_time_limit($mstime);
|
12 |
+
$timeNow = time();
|
13 |
+
$gmt_offset = get_option( 'gmt_offset' ) * 3600;
|
14 |
+
$timestamp = date_i18n(get_option('date_format'), strtotime("11/15-1976")) . ' ' . date_i18n(get_option('time_format'), $timeNow + $gmt_offset);
|
15 |
+
$mscan_log = WP_CONTENT_DIR . '/bps-backup/logs/mscan_log.txt';
|
16 |
+
|
17 |
+
$handle = fopen( $mscan_log, 'a' );
|
18 |
+
|
19 |
+
$wp_hashes_dir = WP_CONTENT_DIR . '/bps-backup/wp-hashes';
|
20 |
+
|
21 |
+
if ( ! is_dir( $wp_hashes_dir ) ) {
|
22 |
+
|
23 |
+
fwrite( $handle, "WP Zip File Download Error: The $wp_hashes_dir folder does not exist.\r\n" );
|
24 |
+
fwrite( $handle, "Troubleshooting: Check that the Ownership or folder permissions for the /bps-backup/ folder. The /bps-backup/ folder should have 755 or 705 permissions and the Owner of the /bps-backup/ folder should be the same Owner as all of your other website folders.\r\n" );
|
25 |
+
fclose($handle);
|
26 |
+
|
27 |
+
return false;
|
28 |
+
}
|
29 |
+
|
30 |
+
$wp_zip_file = 'wordpress-'. $wp_version . '.zip';
|
31 |
+
$local_zip_file = WP_CONTENT_DIR . '/bps-backup/wp-hashes/' . $wp_zip_file;
|
32 |
+
|
33 |
+
if ( file_exists($local_zip_file) ) {
|
34 |
+
fwrite( $handle, "WP Zip File Download: The $wp_zip_file already exists and was not downloaded again.\r\n" );
|
35 |
+
fclose($handle);
|
36 |
+
|
37 |
+
return true;
|
38 |
+
}
|
39 |
+
|
40 |
+
$wp_hashes_file = WP_CONTENT_DIR . '/bps-backup/wp-hashes/wp-hashes.php';
|
41 |
+
|
42 |
+
if ( file_exists($wp_hashes_file) ) {
|
43 |
+
$check_string = file_get_contents($wp_hashes_file);
|
44 |
+
|
45 |
+
if ( strpos( $check_string, "WordPress $wp_version Hashes" ) ) {
|
46 |
+
fwrite( $handle, "WP Zip File Download: The wp-hashes.php file already exists for WordPress $wp_version. The $wp_zip_file was not downloaded again.\r\n" );
|
47 |
+
fclose($handle);
|
48 |
+
|
49 |
+
return true;
|
50 |
+
}
|
51 |
+
}
|
52 |
+
|
53 |
+
fwrite( $handle, "WP Zip File Download: Start $wp_zip_file zip file download.\r\n" );
|
54 |
+
|
55 |
+
$url = 'https://wordpress.org/latest.zip';
|
56 |
+
$tmp_file = download_url( $url, $timeout = 300 );
|
57 |
+
|
58 |
+
if ( ! copy( $tmp_file, $local_zip_file ) ) {
|
59 |
+
fwrite( $handle, "WP Zip File Download Error: Unable to download the WordPress zip file from $url\r\n" );
|
60 |
+
fwrite( $handle, "Manual Solution: You will need to manually download the WordPress zip file to your computer, unzip it and then use FTP and upload the unzipped /wordpress/ folder to this BPS folder: $wp_hashes_dir\r\n" );
|
61 |
+
}
|
62 |
+
|
63 |
+
unlink( $tmp_file );
|
64 |
+
|
65 |
+
$time_end = microtime( true );
|
66 |
+
$download_time = $time_end - $time_start;
|
67 |
+
|
68 |
+
$hours = (int)($download_time / 60 / 60);
|
69 |
+
$minutes = (int)($download_time / 60) - $hours * 60;
|
70 |
+
$seconds = (int)$download_time - $hours * 60 * 60 - $minutes * 60;
|
71 |
+
$hours_format = $hours == 0 ? "00" : $hours;
|
72 |
+
$minutes_format = $minutes == 0 ? "00" : ($minutes < 10 ? "0".$minutes : $minutes);
|
73 |
+
$seconds_format = $seconds == 0 ? "00" : ($seconds < 10 ? "0".$seconds : $seconds);
|
74 |
+
|
75 |
+
$download_time_log = 'WP Zip File Download Completion Time: '. $hours_format . ':'. $minutes_format . ':' . $seconds_format;
|
76 |
+
|
77 |
+
fwrite( $handle, "$download_time_log\r\n" );
|
78 |
+
fclose($handle);
|
79 |
+
|
80 |
+
return true;
|
81 |
+
}
|
82 |
+
|
83 |
+
// Extract the downloaded WordPress zip file.
|
84 |
+
// The extracted WordPress folder name is: /wordpress/
|
85 |
+
function bpsPro_wp_zip_extractor() {
|
86 |
+
global $wp_version;
|
87 |
+
|
88 |
+
$time_start = microtime( true );
|
89 |
+
|
90 |
+
$timeNow = time();
|
91 |
+
$gmt_offset = get_option( 'gmt_offset' ) * 3600;
|
92 |
+
$timestamp = date_i18n(get_option('date_format'), strtotime("11/15-1976")) . ' ' . date_i18n(get_option('time_format'), $timeNow + $gmt_offset);
|
93 |
+
$mscan_log = WP_CONTENT_DIR . '/bps-backup/logs/mscan_log.txt';
|
94 |
+
|
95 |
+
$handle = fopen( $mscan_log, 'a' );
|
96 |
+
|
97 |
+
$wp_hashes_file = WP_CONTENT_DIR . '/bps-backup/wp-hashes/wp-hashes.php';
|
98 |
+
|
99 |
+
if ( file_exists($wp_hashes_file) ) {
|
100 |
+
$check_string = file_get_contents($wp_hashes_file);
|
101 |
+
|
102 |
+
if ( strpos( $check_string, "WordPress $wp_version Hashes" ) ) {
|
103 |
+
fwrite( $handle, "WP Zip File Extraction: The wp-hashes.php file already exists for WordPress $wp_version. The wordpress-$wp_version.zip file does not need to be extracted.\r\n" );
|
104 |
+
fclose($handle);
|
105 |
+
|
106 |
+
return true;
|
107 |
+
}
|
108 |
+
}
|
109 |
+
|
110 |
+
$wp_folder = WP_CONTENT_DIR . '/bps-backup/wp-hashes/wordpress';
|
111 |
+
$wp_hashes_dir = WP_CONTENT_DIR . '/bps-backup/wp-hashes';
|
112 |
+
$wp_zip_file = 'wordpress-'. $wp_version . '.zip';
|
113 |
+
$local_zip_file = WP_CONTENT_DIR . '/bps-backup/wp-hashes/' . $wp_zip_file;
|
114 |
+
|
115 |
+
if ( class_exists('ZipArchive') ) {
|
116 |
+
|
117 |
+
fwrite( $handle, "WP Zip File Extraction: Start ZipArchive zip file extraction.\r\n" );
|
118 |
+
|
119 |
+
$WPZip = new ZipArchive;
|
120 |
+
|
121 |
+
if ( $WPZip->open( $local_zip_file ) === true ) {
|
122 |
+
|
123 |
+
$WPZip->extractTo( WP_CONTENT_DIR . '/bps-backup/wp-hashes/' );
|
124 |
+
$WPZip->close();
|
125 |
+
|
126 |
+
$time_end = microtime( true );
|
127 |
+
$zip_extract_time = $time_end - $time_start;
|
128 |
+
|
129 |
+
$hours = (int)($zip_extract_time / 60 / 60);
|
130 |
+
$minutes = (int)($zip_extract_time / 60) - $hours * 60;
|
131 |
+
$seconds = (int)$zip_extract_time - $hours * 60 * 60 - $minutes * 60;
|
132 |
+
$hours_format = $hours == 0 ? "00" : $hours;
|
133 |
+
$minutes_format = $minutes == 0 ? "00" : ($minutes < 10 ? "0".$minutes : $minutes);
|
134 |
+
$seconds_format = $seconds == 0 ? "00" : ($seconds < 10 ? "0".$seconds : $seconds);
|
135 |
+
|
136 |
+
$zip_extract_time_log = 'WP Zip File Extraction Completion Time: '. $hours_format . ':'. $minutes_format . ':' . $seconds_format;
|
137 |
+
|
138 |
+
fwrite( $handle, "$zip_extract_time_log\r\n" );
|
139 |
+
fclose($handle);
|
140 |
+
|
141 |
+
return true;
|
142 |
+
|
143 |
+
} else {
|
144 |
+
|
145 |
+
if ( ! is_dir($wp_folder) ) {
|
146 |
+
|
147 |
+
fwrite( $handle, "WP Zip File Extraction ZipArchive Error: Unable to unzip the WordPress zip file: $local_zip_file.\r\n" );
|
148 |
+
fwrite( $handle, "Manual Solution: You will need to manually download the WordPress zip file to your computer, unzip it and then use FTP and upload the unzipped /wordpress/ folder to this BPS folder: $wp_hashes_dir.\r\n" );
|
149 |
+
fclose($handle);
|
150 |
+
|
151 |
+
return false;
|
152 |
+
}
|
153 |
+
}
|
154 |
+
|
155 |
+
} else {
|
156 |
+
|
157 |
+
fwrite( $handle, "WP Zip File Extraction: Start PclZip zip file extraction.\r\n" );
|
158 |
+
|
159 |
+
define( 'PCLZIP_TEMPORARY_DIR', WP_CONTENT_DIR . '/bps-backup/wp-hashes/' );
|
160 |
+
|
161 |
+
require_once ABSPATH . 'wp-admin/includes/class-pclzip.php';
|
162 |
+
|
163 |
+
if ( ini_get( 'mbstring.func_overload' ) && function_exists( 'mb_internal_encoding' ) ) {
|
164 |
+
$previous_encoding = mb_internal_encoding();
|
165 |
+
mb_internal_encoding( 'ISO-8859-1' );
|
166 |
+
}
|
167 |
+
|
168 |
+
$archive = new PclZip( $local_zip_file );
|
169 |
+
|
170 |
+
if ( $archive->extract( PCLZIP_OPT_PATH, WP_CONTENT_DIR . '/bps-backup/wp-hashes', PCLZIP_OPT_REMOVE_PATH, WP_CONTENT_DIR . '/bps-backup/wp-hashes' ) ) {
|
171 |
+
|
172 |
+
$time_end = microtime( true );
|
173 |
+
$zip_extract_time = $time_end - $time_start;
|
174 |
+
|
175 |
+
$hours = (int)($zip_extract_time / 60 / 60);
|
176 |
+
$minutes = (int)($zip_extract_time / 60) - $hours * 60;
|
177 |
+
$seconds = (int)$zip_extract_time - $hours * 60 * 60 - $minutes * 60;
|
178 |
+
$hours_format = $hours == 0 ? "00" : $hours;
|
179 |
+
$minutes_format = $minutes == 0 ? "00" : ($minutes < 10 ? "0".$minutes : $minutes);
|
180 |
+
$seconds_format = $seconds == 0 ? "00" : ($seconds < 10 ? "0".$seconds : $seconds);
|
181 |
+
|
182 |
+
$zip_extract_time_log = 'WP Zip File Extraction Completion Time: '. $hours_format . ':'. $minutes_format . ':' . $seconds_format;
|
183 |
+
|
184 |
+
fwrite( $handle, "$zip_extract_time_log\r\n" );
|
185 |
+
fclose($handle);
|
186 |
+
|
187 |
+
return true;
|
188 |
+
|
189 |
+
} else {
|
190 |
+
|
191 |
+
if ( ! is_dir($wp_folder) ) {
|
192 |
+
|
193 |
+
fwrite( $handle, "WP Zip File Extraction PclZip Error: Unable to unzip the WordPress zip file: $local_zip_file.\r\n" );
|
194 |
+
fwrite( $handle, "Manual Solution: You will need to manually download the WordPress zip file to your computer, unzip it and then use FTP and upload the unzipped /wordpress/ folder to this BPS folder: $wp_hashes_dir.\r\n" );
|
195 |
+
fclose($handle);
|
196 |
+
|
197 |
+
return false;
|
198 |
+
}
|
199 |
+
}
|
200 |
+
}
|
201 |
+
}
|
202 |
+
|
203 |
+
// Create the wp-hashes.php file array, which contains all MD5 file hashes for all current WP Core files.
|
204 |
+
// Cleanup: Deletes the wp zip file and the extracted /wordpress/ folder.
|
205 |
+
function bpsPro_wp_hash_maker() {
|
206 |
+
global $wp_version;
|
207 |
+
|
208 |
+
$time_start = microtime( true );
|
209 |
+
|
210 |
+
$timeNow = time();
|
211 |
+
$gmt_offset = get_option( 'gmt_offset' ) * 3600;
|
212 |
+
$timestamp = date_i18n(get_option('date_format'), strtotime("11/15-1976")) . ' ' . date_i18n(get_option('time_format'), $timeNow + $gmt_offset);
|
213 |
+
$mscan_log = WP_CONTENT_DIR . '/bps-backup/logs/mscan_log.txt';
|
214 |
+
|
215 |
+
$handle = fopen( $mscan_log, 'a' );
|
216 |
+
|
217 |
+
if ( ! is_array( spl_classes() ) ) {
|
218 |
+
fwrite( $handle, "WP MD5 File Hash Maker Error: The Standard PHP Library (SPL) is Not available/installed. Unable to create WP MD5 file hashes.\r\n" );
|
219 |
+
fwrite( $handle, "Solution: Contact your web host and ask them to install the Standard PHP Library (SPL) on your server.\r\n" );
|
220 |
+
fclose($handle);
|
221 |
+
|
222 |
+
return false;
|
223 |
+
}
|
224 |
+
|
225 |
+
$wp_hashes_file = WP_CONTENT_DIR . '/bps-backup/wp-hashes/wp-hashes.php';
|
226 |
+
|
227 |
+
if ( ! file_exists( $wp_hashes_file ) ) {
|
228 |
+
fwrite( $handle, "WP MD5 File Hash Maker Error: The $wp_hashes_file file does not exist.\r\n" );
|
229 |
+
fwrite( $handle, "Troubleshooting: Check the Ownership or folder permissions for the /bps-backup/wp-hashes/ folder. The /bps-backup/wp-hashes/ folder should have 755 or 705 permissions and the Owner of the /bps-backup/wp-hashes/ folder should be the same Owner as all of your other website folders.\r\n" );
|
230 |
+
fclose($handle);
|
231 |
+
|
232 |
+
return false;
|
233 |
+
}
|
234 |
+
|
235 |
+
if ( file_exists($wp_hashes_file) ) {
|
236 |
+
$check_string = file_get_contents($wp_hashes_file);
|
237 |
+
|
238 |
+
if ( strpos( $check_string, "WordPress $wp_version Hashes" ) ) {
|
239 |
+
fwrite( $handle, "WP MD5 File Hash Maker: The wp-hashes.php file already exists for WordPress $wp_version. The wp-hashes.php file was not created again.\r\n" );
|
240 |
+
fclose($handle);
|
241 |
+
|
242 |
+
return true;
|
243 |
+
}
|
244 |
+
}
|
245 |
+
|
246 |
+
$str1 = WP_CONTENT_DIR . '/bps-backup/wp-hashes/wordpress/';
|
247 |
+
$str2 = WP_CONTENT_DIR . '/bps-backup/wp-hashes/wordpress\\';
|
248 |
+
$str3 = WP_CONTENT_DIR . '\bps-backup\wp-hashes\wordpress\\';
|
249 |
+
|
250 |
+
$path = WP_CONTENT_DIR . '/bps-backup/wp-hashes/wordpress';
|
251 |
+
|
252 |
+
if ( ! is_dir($path) ) {
|
253 |
+
|
254 |
+
fwrite( $handle, "WP MD5 File Hash Maker Error: The $path folder does not exist.\r\n" );
|
255 |
+
fwrite( $handle, "Troubleshooting: Check the Ownership or folder permissions for the /bps-backup/wp-hashes/ folder. The /bps-backup/wp-hashes/ folder should have 755 or 705 permissions and the Owner of the /bps-backup/wp-hashes/ folder should be the same Owner as all of your other website folders.\r\n" );
|
256 |
+
fclose($handle);
|
257 |
+
|
258 |
+
return false;
|
259 |
+
}
|
260 |
+
|
261 |
+
fwrite( $handle, "WP MD5 File Hash Maker & Cleanup: Start creating the wp-hashes.php file.\r\n" );
|
262 |
+
|
263 |
+
$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST);
|
264 |
+
$filePath = array();
|
265 |
+
|
266 |
+
foreach ( $objects as $files ) {
|
267 |
+
if ( $files->isFile() ) {
|
268 |
+
$filePath[] = str_replace( array( $str1, $str2, $str3 ), "", $files->getPathname() ). '\' => \'' . md5_file($files->getPathname());
|
269 |
+
}
|
270 |
+
}
|
271 |
+
|
272 |
+
$handleH = fopen( $wp_hashes_file, 'wb' );
|
273 |
+
fwrite( $handleH, "<?php\n" );
|
274 |
+
fwrite( $handleH, "// WordPress $wp_version Hashes\n" );
|
275 |
+
fwrite( $handleH, "\$wp_hashes = array(\n" );
|
276 |
+
|
277 |
+
foreach ( $filePath as $key => $value ) {
|
278 |
+
fwrite( $handleH, "'" . $value . "', " . "\n" );
|
279 |
+
}
|
280 |
+
|
281 |
+
fwrite( $handleH, ");\n" );
|
282 |
+
fwrite( $handleH, "?>" );
|
283 |
+
fclose( $handleH );
|
284 |
+
|
285 |
+
fwrite( $handle, "WP MD5 File Hash Maker & Cleanup: wp-hashes.php file created.\r\n" );
|
286 |
+
fwrite( $handle, "WP MD5 File Hash Maker & Cleanup: Start /bps-backup/wp-hashes/ folder cleanup.\r\n" );
|
287 |
+
|
288 |
+
// Cleanup
|
289 |
+
$wp_zip_file = 'wordpress-'. $wp_version . '.zip';
|
290 |
+
$local_zip_file = WP_CONTENT_DIR . '/bps-backup/wp-hashes/' . $wp_zip_file;
|
291 |
+
|
292 |
+
if ( is_dir($path) ) {
|
293 |
+
|
294 |
+
if ( file_exists($local_zip_file) ) {
|
295 |
+
unlink($local_zip_file);
|
296 |
+
}
|
297 |
+
|
298 |
+
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::CHILD_FIRST);
|
299 |
+
|
300 |
+
foreach ( $iterator as $file ) {
|
301 |
+
|
302 |
+
if ( $file->isDir() ) {
|
303 |
+
@rmdir( $file->getRealPath() );
|
304 |
+
|
305 |
+
} else {
|
306 |
+
|
307 |
+
if ( $file->isFile() ) {
|
308 |
+
unlink( $file->getRealPath() );
|
309 |
+
}
|
310 |
+
}
|
311 |
+
}
|
312 |
+
rmdir($path);
|
313 |
+
}
|
314 |
+
|
315 |
+
$time_end = microtime( true );
|
316 |
+
$hash_maker_time = $time_end - $time_start;
|
317 |
+
|
318 |
+
$hours = (int)($hash_maker_time / 60 / 60);
|
319 |
+
$minutes = (int)($hash_maker_time / 60) - $hours * 60;
|
320 |
+
$seconds = (int)$hash_maker_time - $hours * 60 * 60 - $minutes * 60;
|
321 |
+
$hours_format = $hours == 0 ? "00" : $hours;
|
322 |
+
$minutes_format = $minutes == 0 ? "00" : ($minutes < 10 ? "0".$minutes : $minutes);
|
323 |
+
$seconds_format = $seconds == 0 ? "00" : ($seconds < 10 ? "0".$seconds : $seconds);
|
324 |
+
|
325 |
+
$hash_maker_time_log = 'WP MD5 File Hash Maker & Cleanup Completion Time: '. $hours_format . ':'. $minutes_format . ':' . $seconds_format;
|
326 |
+
|
327 |
+
fwrite( $handle, "WP MD5 File Hash Maker & Cleanup: WP $wp_zip_file file deleted.\r\n" );
|
328 |
+
fwrite( $handle, "WP MD5 File Hash Maker & Cleanup: Extracted /bps-backup/wp-hashes/wordpress/ folder deleted.\r\n" );
|
329 |
+
fwrite( $handle, "$hash_maker_time_log\r\n" );
|
330 |
+
fclose($handle);
|
331 |
+
|
332 |
+
return true;
|
333 |
+
}
|
334 |
+
|
335 |
+
?>
|
languages/bulletproof-security.pot
CHANGED
@@ -3,7 +3,7 @@ msgid ""
|
|
3 |
msgstr ""
|
4 |
"Project-Id-Version: bulletproof-security\n"
|
5 |
"Report-Msgid-Bugs-To: \n"
|
6 |
-
"POT-Creation-Date: 2021-
|
7 |
"PO-Revision-Date: 2015-06-20 19:13-0800\n"
|
8 |
"Last-Translator: Ed Alexander <edward@ait-pro.com>\n"
|
9 |
"Language-Team: AITpro <info@ait-pro.com>\n"
|
@@ -261,7 +261,7 @@ msgid ""
|
|
261 |
msgstr ""
|
262 |
|
263 |
#: admin/core/core-custom-code.php:472 admin/core/core-custom-code.php:844
|
264 |
-
#: admin/core/core.php:
|
265 |
msgid "Click the Custom Code Read Me help button for more help info."
|
266 |
msgstr ""
|
267 |
|
@@ -361,17 +361,17 @@ msgid ""
|
|
361 |
msgstr ""
|
362 |
|
363 |
#: admin/core/core-export-import.php:115 admin/login/lsm-export.php:49
|
364 |
-
#: admin/wizard/wizard-backup.php:
|
365 |
-
#: admin/wizard/wizard.php:
|
366 |
msgid ""
|
367 |
"If you see a 403 error and/or are unable to download the zip file then click "
|
368 |
"here: "
|
369 |
msgstr ""
|
370 |
|
371 |
#: admin/core/core-export-import.php:115 admin/login/lsm-export.php:49
|
372 |
-
#: admin/wizard/wizard-backup.php:
|
373 |
-
#: admin/wizard/wizard.php:
|
374 |
-
#: admin/wizard/wizard.php:
|
375 |
#: includes/hud-autofix-whitelist.php:821
|
376 |
msgid "Setup Wizard Options"
|
377 |
msgstr ""
|
@@ -383,15 +383,15 @@ msgid ""
|
|
383 |
msgstr ""
|
384 |
|
385 |
#: admin/core/core-export-import.php:115 admin/login/lsm-export.php:49
|
386 |
-
#: admin/wizard/wizard.php:
|
387 |
msgid "Download Zip Export"
|
388 |
msgstr ""
|
389 |
|
390 |
-
#: admin/core/core-export-import.php:144 admin/wizard/wizard.php:
|
391 |
msgid "Zip File Upload Successful."
|
392 |
msgstr ""
|
393 |
|
394 |
-
#: admin/core/core-export-import.php:155 admin/wizard/wizard.php:
|
395 |
msgid "Zip File Exraction Successful. Method: ZipArchive class."
|
396 |
msgstr ""
|
397 |
|
@@ -421,19 +421,19 @@ msgstr ""
|
|
421 |
msgid "3. Click the wp-admin Folder BulletProof Mode Activate button."
|
422 |
msgstr ""
|
423 |
|
424 |
-
#: admin/core/core-export-import.php:169 admin/wizard/wizard.php:
|
425 |
msgid "ERROR: Zip File Extraction Failed. Method: ZipArchive class."
|
426 |
msgstr ""
|
427 |
|
428 |
-
#: admin/core/core-export-import.php:189 admin/wizard/wizard.php:
|
429 |
msgid "Zip File Extraction Successful. Method: PclZip."
|
430 |
msgstr ""
|
431 |
|
432 |
-
#: admin/core/core-export-import.php:203 admin/wizard/wizard.php:
|
433 |
msgid "ERROR: Zip File Extraction Failed. Method: PclZip."
|
434 |
msgstr ""
|
435 |
|
436 |
-
#: admin/core/core-export-import.php:211 admin/wizard/wizard.php:
|
437 |
msgid "ERROR: Zip File Upload Failed."
|
438 |
msgstr ""
|
439 |
|
@@ -464,7 +464,7 @@ msgid "Your Root and wp-admin Custom Code has been deleted successfully."
|
|
464 |
msgstr ""
|
465 |
|
466 |
#: admin/core/core-forms.php:18 admin/core/core-forms.php:98
|
467 |
-
#: admin/core/core.php:
|
468 |
msgid "htaccess Files Disabled: wp-admin htaccess file writing is disabled. "
|
469 |
msgstr ""
|
470 |
|
@@ -474,8 +474,8 @@ msgstr ""
|
|
474 |
#: admin/core/core-forms.php:364 admin/core/core-forms.php:430
|
475 |
#: admin/core/core-htaccess-code.php:426 admin/core/core-htaccess-code.php:510
|
476 |
#: admin/core/core-htaccess-code.php:579 admin/core/core-htaccess-code.php:663
|
477 |
-
#: admin/core/core.php:
|
478 |
-
#: admin/core/core.php:
|
479 |
#: admin/maintenance/maintenance.php:869 admin/maintenance/maintenance.php:1185
|
480 |
#: admin/maintenance/maintenance.php:1694
|
481 |
#: admin/maintenance/maintenance.php:1824
|
@@ -489,13 +489,13 @@ msgstr ""
|
|
489 |
#: admin/core/core-forms.php:364 admin/core/core-forms.php:430
|
490 |
#: admin/core/core-htaccess-code.php:426 admin/core/core-htaccess-code.php:510
|
491 |
#: admin/core/core-htaccess-code.php:579 admin/core/core-htaccess-code.php:663
|
492 |
-
#: admin/core/core.php:
|
493 |
-
#: admin/core/core.php:
|
494 |
#: admin/maintenance/maintenance.php:869 admin/maintenance/maintenance.php:1185
|
495 |
#: admin/maintenance/maintenance.php:1694
|
496 |
#: admin/maintenance/maintenance.php:1824
|
497 |
#: admin/maintenance/maintenance.php:2015 admin/wizard/wizard-functions.php:44
|
498 |
-
#: admin/wizard/wizard.php:
|
499 |
msgid "htaccess Files Disabled Forum Topic"
|
500 |
msgstr ""
|
501 |
|
@@ -828,14 +828,6 @@ msgstr ""
|
|
828 |
msgid "Success! The New Improved BPS Speed Boost Cache Code Notice is reset."
|
829 |
msgstr ""
|
830 |
|
831 |
-
#: admin/core/core-forms.php:646
|
832 |
-
msgid "The MScan First Run Notice is NOT set. Nothing to reset."
|
833 |
-
msgstr ""
|
834 |
-
|
835 |
-
#: admin/core/core-forms.php:649
|
836 |
-
msgid "Success! The MScan First Run Notice is reset."
|
837 |
-
msgstr ""
|
838 |
-
|
839 |
#: admin/core/core-forms.php:654
|
840 |
msgid "The JTC-Lite New Feature Notice is NOT set. Nothing to reset."
|
841 |
msgstr ""
|
@@ -1014,7 +1006,7 @@ msgid ""
|
|
1014 |
"Read Me help file for BPS troubleshooting steps."
|
1015 |
msgstr ""
|
1016 |
|
1017 |
-
#: admin/core/core-help-text.php:15 admin/wizard/wizard.php:
|
1018 |
msgid "Notes: "
|
1019 |
msgstr ""
|
1020 |
|
@@ -1081,7 +1073,7 @@ msgid ""
|
|
1081 |
"Send Email Alerts."
|
1082 |
msgstr ""
|
1083 |
|
1084 |
-
#: admin/core/core-help-text.php:18 admin/core/core.php:
|
1085 |
msgid "HPF Cron Check Frequency:"
|
1086 |
msgstr ""
|
1087 |
|
@@ -1093,7 +1085,7 @@ msgid ""
|
|
1093 |
"Options button to save your settings."
|
1094 |
msgstr ""
|
1095 |
|
1096 |
-
#: admin/core/core-help-text.php:18 admin/core/core.php:
|
1097 |
msgid "HPF Cron On|Off:"
|
1098 |
msgstr ""
|
1099 |
|
@@ -1103,7 +1095,7 @@ msgid ""
|
|
1103 |
"HPF Cron Off. Click the Save HPF Cron Options button to save your settings."
|
1104 |
msgstr ""
|
1105 |
|
1106 |
-
#: admin/core/core-help-text.php:18 admin/core/core.php:
|
1107 |
msgid "Ignore Hidden Plugin Folders & Files:"
|
1108 |
msgstr ""
|
1109 |
|
@@ -1205,19 +1197,20 @@ msgid ""
|
|
1205 |
"permanently. To save any new htaccess code permanently use BPS Custom Code."
|
1206 |
msgstr ""
|
1207 |
|
1208 |
-
#: admin/core/core-help-text.php:30 admin/core/core.php:
|
1209 |
-
#: admin/core/core.php:
|
1210 |
-
#: admin/core/core.php:
|
1211 |
#: admin/db-backup-security/db-backup-help-text.php:12
|
1212 |
#: admin/db-backup-security/db-backup-help-text.php:15
|
1213 |
#: admin/db-backup-security/db-backup-security.php:303
|
1214 |
#: admin/email-log-settings/email-log-settings.php:89 admin/login/login.php:215
|
1215 |
#: admin/login/login.php:842 admin/login/login.php:1178
|
1216 |
#: admin/login/login.php:1715 admin/maintenance/maintenance.php:207
|
1217 |
-
#: admin/mscan/mscan-help-text.php:
|
|
|
1218 |
#: admin/security-log/security-log.php:229 admin/system-info/system-info.php:86
|
1219 |
-
#: admin/theme-skin/theme-skin.php:93 admin/wizard/wizard.php:
|
1220 |
-
#: admin/wizard/wizard.php:
|
1221 |
msgid ""
|
1222 |
"This Read Me Help window is draggable (top) and resizable (bottom right "
|
1223 |
"corner)"
|
@@ -1739,17 +1732,17 @@ msgstr ""
|
|
1739 |
|
1740 |
#: admin/core/core-htaccess-code.php:426 admin/core/core-htaccess-code.php:510
|
1741 |
#: admin/core/core-htaccess-code.php:579 admin/core/core-htaccess-code.php:663
|
1742 |
-
#: admin/core/core.php:
|
1743 |
msgid "htaccess Files Disabled: Root htaccess file writing is disabled. "
|
1744 |
msgstr ""
|
1745 |
|
1746 |
#: admin/core/core-htaccess-code.php:448 admin/core/core-htaccess-code.php:601
|
1747 |
-
#: admin/core/core.php:
|
1748 |
msgid "Failed to copy your Custom default.htaccess file: "
|
1749 |
msgstr ""
|
1750 |
|
1751 |
#: admin/core/core-htaccess-code.php:448 admin/core/core-htaccess-code.php:601
|
1752 |
-
#: admin/core/core.php:
|
1753 |
msgid " to: "
|
1754 |
msgstr ""
|
1755 |
|
@@ -1785,275 +1778,276 @@ msgstr ""
|
|
1785 |
|
1786 |
#: admin/core/core.php:42 admin/db-backup-security/db-backup-security.php:40
|
1787 |
#: admin/email-log-settings/email-log-settings.php:35 admin/login/login.php:35
|
1788 |
-
#: admin/maintenance/maintenance.php:35 admin/mscan/mscan.php:
|
1789 |
#: admin/security-log/security-log.php:35 admin/system-info/system-info.php:35
|
1790 |
#: admin/theme-skin/theme-skin.php:40 admin/wizard/wizard.php:84
|
1791 |
msgid "Rate BPS"
|
1792 |
msgstr ""
|
1793 |
|
1794 |
-
#: admin/core/core.php:
|
1795 |
-
#: admin/includes/admin.php:
|
1796 |
msgid "BulletProof Security ~ htaccess Core"
|
1797 |
msgstr ""
|
1798 |
|
1799 |
-
#: admin/core/core.php:
|
1800 |
#: admin/email-log-settings/email-log-settings.php:47 admin/login/login.php:148
|
1801 |
-
#: admin/maintenance/maintenance.php:57 admin/mscan/mscan.php:
|
1802 |
#: admin/security-log/security-log.php:47 admin/system-info/system-info.php:47
|
1803 |
#: admin/theme-skin/theme-skin.php:52 admin/wizard/wizard.php:182
|
1804 |
msgid "Settings Saved"
|
1805 |
msgstr ""
|
1806 |
|
1807 |
-
#: admin/core/core.php:
|
1808 |
msgid "Security Modes"
|
1809 |
msgstr ""
|
1810 |
|
1811 |
-
#: admin/core/core.php:
|
1812 |
msgid "htaccess File Editor"
|
1813 |
msgstr ""
|
1814 |
|
1815 |
-
#: admin/core/core.php:
|
1816 |
msgid "Custom Code"
|
1817 |
msgstr ""
|
1818 |
|
1819 |
-
#: admin/core/core.php:
|
1820 |
msgid "My Notes"
|
1821 |
msgstr ""
|
1822 |
|
1823 |
-
#: admin/core/core.php:
|
1824 |
msgid "Whats New"
|
1825 |
msgstr ""
|
1826 |
|
1827 |
-
#: admin/core/core.php:
|
1828 |
#: admin/db-backup-security/db-backup-security.php:1739
|
1829 |
#: admin/email-log-settings/email-log-settings.php:70 admin/login/login.php:187
|
1830 |
-
#: admin/maintenance/maintenance.php:171 admin/mscan/mscan.php:
|
1831 |
-
#: admin/mscan/mscan.php:
|
1832 |
#: admin/system-info/system-info.php:73 admin/theme-skin/theme-skin.php:75
|
1833 |
#: admin/theme-skin/theme-skin.php:251
|
1834 |
msgid "Help & FAQ"
|
1835 |
msgstr ""
|
1836 |
|
1837 |
-
#: admin/core/core.php:
|
1838 |
msgid "BPS Pro Features"
|
1839 |
msgstr ""
|
1840 |
|
1841 |
-
#: admin/core/core.php:
|
1842 |
msgid "htaccess File Security Modes ~ "
|
1843 |
msgstr ""
|
1844 |
|
1845 |
-
#: admin/core/core.php:
|
1846 |
msgid "RBM, WBM, HPF, MBM & BBM BulletProof Modes"
|
1847 |
msgstr ""
|
1848 |
|
1849 |
-
#: admin/core/core.php:
|
1850 |
-
#: admin/core/core.php:
|
1851 |
#: admin/db-backup-security/db-backup-security.php:292
|
1852 |
#: admin/db-backup-security/db-backup-security.php:1242
|
1853 |
#: admin/db-backup-security/db-backup-security.php:1398
|
1854 |
#: admin/email-log-settings/email-log-settings.php:78 admin/login/login.php:204
|
1855 |
#: admin/login/login.php:831 admin/maintenance/maintenance.php:191
|
1856 |
-
#: admin/maintenance/maintenance.php:193
|
1857 |
#: admin/security-log/security-log.php:218 admin/theme-skin/theme-skin.php:84
|
1858 |
-
#: admin/wizard/wizard.php:
|
1859 |
msgid "Want even more security protection?"
|
1860 |
msgstr ""
|
1861 |
|
1862 |
-
#: admin/core/core.php:
|
1863 |
-
#: admin/core/core.php:
|
1864 |
#: admin/email-log-settings/email-log-settings.php:78
|
1865 |
#: admin/maintenance/maintenance.php:191 admin/maintenance/maintenance.php:193
|
1866 |
#: admin/security-log/security-log.php:218 admin/theme-skin/theme-skin.php:84
|
1867 |
-
#: admin/wizard/wizard.php:
|
1868 |
msgid ""
|
1869 |
"Protect all of your Plugins (plugin folders and files) with an IP Firewall: "
|
1870 |
msgstr ""
|
1871 |
|
1872 |
-
#: admin/core/core.php:
|
1873 |
-
#: admin/core/core.php:
|
1874 |
#: admin/email-log-settings/email-log-settings.php:78
|
1875 |
#: admin/maintenance/maintenance.php:191 admin/maintenance/maintenance.php:193
|
1876 |
#: admin/security-log/security-log.php:218 admin/theme-skin/theme-skin.php:84
|
1877 |
-
#: admin/wizard/wizard.php:
|
1878 |
msgid "Get BPS Pro Plugin Firewall"
|
1879 |
msgstr ""
|
1880 |
|
1881 |
-
#: admin/core/core.php:
|
1882 |
-
#: admin/core/core.php:
|
1883 |
#: admin/email-log-settings/email-log-settings.php:78
|
1884 |
#: admin/maintenance/maintenance.php:191 admin/maintenance/maintenance.php:193
|
1885 |
#: admin/security-log/security-log.php:218 admin/theme-skin/theme-skin.php:84
|
1886 |
-
#: admin/wizard/wizard.php:
|
1887 |
msgid ""
|
1888 |
"Protect your WordPress uploads folder against remote access or execution of "
|
1889 |
"files: "
|
1890 |
msgstr ""
|
1891 |
|
1892 |
-
#: admin/core/core.php:
|
1893 |
-
#: admin/core/core.php:
|
1894 |
#: admin/email-log-settings/email-log-settings.php:78
|
1895 |
#: admin/maintenance/maintenance.php:191 admin/maintenance/maintenance.php:193
|
1896 |
#: admin/security-log/security-log.php:218 admin/theme-skin/theme-skin.php:84
|
1897 |
-
#: admin/wizard/wizard.php:
|
1898 |
msgid "Get BPS Pro Uploads Anti-Exploit Guard"
|
1899 |
msgstr ""
|
1900 |
|
1901 |
-
#: admin/core/core.php:
|
1902 |
-
#: admin/core/core.php:
|
1903 |
#: admin/login/login.php:222 admin/login/login.php:944
|
1904 |
#: admin/login/login.php:1199 admin/system-info/system-info.php:99
|
1905 |
#: admin/system-info/system-info.php:1059
|
1906 |
msgid "Permission Denied"
|
1907 |
msgstr ""
|
1908 |
|
1909 |
-
#: admin/core/core.php:
|
1910 |
msgid "Activate|Deactivate Security Modes"
|
1911 |
msgstr ""
|
1912 |
|
1913 |
-
#: admin/core/core.php:
|
1914 |
msgid "Root Folder BulletProof Mode (RBM)"
|
1915 |
msgstr ""
|
1916 |
|
1917 |
-
#: admin/core/core.php:
|
1918 |
-
#: admin/core/core.php:
|
1919 |
-
#: admin/core/core.php:
|
1920 |
#: admin/db-backup-security/db-backup-security.php:298
|
1921 |
#: admin/db-backup-security/db-backup-security.php:1248
|
1922 |
#: admin/db-backup-security/db-backup-security.php:1404
|
1923 |
#: admin/email-log-settings/email-log-settings.php:84 admin/login/login.php:210
|
1924 |
#: admin/login/login.php:837 admin/login/login.php:1169
|
1925 |
#: admin/login/login.php:1709 admin/maintenance/maintenance.php:202
|
1926 |
-
#: admin/mscan/mscan.php:
|
|
|
1927 |
#: admin/security-log/security-log.php:224 admin/system-info/system-info.php:81
|
1928 |
-
#: admin/theme-skin/theme-skin.php:90 admin/wizard/wizard.php:
|
1929 |
-
#: admin/wizard/wizard.php:
|
1930 |
msgid "Read Me"
|
1931 |
msgstr ""
|
1932 |
|
1933 |
-
#: admin/core/core.php:
|
1934 |
#: admin/db-backup-security/db-backup-security.php:306
|
1935 |
#: admin/email-log-settings/email-log-settings.php:92
|
1936 |
#: admin/login/login.php:1181 admin/maintenance/maintenance.php:210
|
1937 |
-
#: admin/mscan/mscan.php:
|
1938 |
msgid "Forum Help Links: "
|
1939 |
msgstr ""
|
1940 |
|
1941 |
-
#: admin/core/core.php:
|
1942 |
msgid "Setup Wizard & Other Video Tutorials"
|
1943 |
msgstr ""
|
1944 |
|
1945 |
-
#: admin/core/core.php:
|
1946 |
-
#: admin/email-log-settings/email-log-settings.php:95
|
1947 |
#: admin/security-log/security-log.php:235
|
1948 |
msgid "BPS Troubleshooting Steps"
|
1949 |
msgstr ""
|
1950 |
|
1951 |
-
#: admin/core/core.php:
|
1952 |
-
#: admin/core/core.php:
|
1953 |
-
#: admin/core/core.php:
|
1954 |
msgid "RBM Status: "
|
1955 |
msgstr ""
|
1956 |
|
1957 |
-
#: admin/core/core.php:
|
1958 |
-
#: admin/core/core.php:
|
1959 |
-
#: admin/core/core.php:
|
1960 |
msgid "Disabled"
|
1961 |
msgstr ""
|
1962 |
|
1963 |
-
#: admin/core/core.php:
|
1964 |
msgid "Root htaccess File Does Not Exist"
|
1965 |
msgstr ""
|
1966 |
|
1967 |
-
#: admin/core/core.php:
|
1968 |
-
#: admin/core/core.php:
|
1969 |
-
#: admin/core/core.php:
|
1970 |
#: admin/system-info/system-info.php:238 admin/system-info/system-info.php:279
|
1971 |
msgid "Activated"
|
1972 |
msgstr ""
|
1973 |
|
1974 |
-
#: admin/core/core.php:
|
1975 |
-
#: admin/core/core.php:
|
1976 |
-
#: admin/core/core.php:
|
1977 |
#: admin/system-info/system-info.php:247 admin/system-info/system-info.php:281
|
1978 |
msgid "Deactivated"
|
1979 |
msgstr ""
|
1980 |
|
1981 |
-
#: admin/core/core.php:
|
1982 |
msgid "Click OK to Activate Root Folder BulletProof Mode or click Cancel."
|
1983 |
msgstr ""
|
1984 |
|
1985 |
-
#: admin/core/core.php:
|
1986 |
msgid "Click OK to Deactivate Root Folder BulletProof Mode or click Cancel."
|
1987 |
msgstr ""
|
1988 |
|
1989 |
-
#: admin/core/core.php:
|
1990 |
msgid "wp-admin Folder BulletProof Mode (WBM)"
|
1991 |
msgstr ""
|
1992 |
|
1993 |
-
#: admin/core/core.php:
|
1994 |
-
#: admin/core/core.php:
|
1995 |
msgid "WBM Status: "
|
1996 |
msgstr ""
|
1997 |
|
1998 |
-
#: admin/core/core.php:
|
1999 |
msgid "Click OK to Activate wp-admin Folder BulletProof Mode or click Cancel."
|
2000 |
msgstr ""
|
2001 |
|
2002 |
-
#: admin/core/core.php:
|
2003 |
msgid ""
|
2004 |
"Click OK to Deactivate wp-admin Folder BulletProof Mode or click Cancel."
|
2005 |
msgstr ""
|
2006 |
|
2007 |
-
#: admin/core/core.php:
|
2008 |
msgid "Hidden Plugin Folders|Files Cron (HPF)"
|
2009 |
msgstr ""
|
2010 |
|
2011 |
-
#: admin/core/core.php:
|
2012 |
-
#: admin/core/core.php:
|
2013 |
msgid "HPF Status: "
|
2014 |
msgstr ""
|
2015 |
|
2016 |
-
#: admin/core/core.php:
|
2017 |
msgid "HPF Cron On"
|
2018 |
msgstr ""
|
2019 |
|
2020 |
-
#: admin/core/core.php:
|
2021 |
msgid "HPF Cron Off"
|
2022 |
msgstr ""
|
2023 |
|
2024 |
-
#: admin/core/core.php:
|
2025 |
msgid "Run Check Every 1 Minute"
|
2026 |
msgstr ""
|
2027 |
|
2028 |
-
#: admin/core/core.php:
|
2029 |
msgid "Run Check Every 5 Minutes"
|
2030 |
msgstr ""
|
2031 |
|
2032 |
-
#: admin/core/core.php:
|
2033 |
msgid "Run Check Every 10 Minutes"
|
2034 |
msgstr ""
|
2035 |
|
2036 |
-
#: admin/core/core.php:
|
2037 |
msgid "Run Check Every 15 Minutes"
|
2038 |
msgstr ""
|
2039 |
|
2040 |
-
#: admin/core/core.php:
|
2041 |
msgid "Run Check Every 30 Minutes"
|
2042 |
msgstr ""
|
2043 |
|
2044 |
-
#: admin/core/core.php:
|
2045 |
msgid "Run Check Every 60 Minutes"
|
2046 |
msgstr ""
|
2047 |
|
2048 |
-
#: admin/core/core.php:
|
2049 |
msgid "Run Check Once Daily"
|
2050 |
msgstr ""
|
2051 |
|
2052 |
-
#: admin/core/core.php:
|
2053 |
msgid "Save HPF Cron Options"
|
2054 |
msgstr ""
|
2055 |
|
2056 |
-
#: admin/core/core.php:
|
2057 |
msgid ""
|
2058 |
"The default Cron Frequency is: Run Check Every 15 Minutes. This is a "
|
2059 |
"lightweight check that uses an insignificant amount of resources/memory so 4 "
|
@@ -2065,32 +2059,32 @@ msgid ""
|
|
2065 |
"OK to proceed or click Cancel"
|
2066 |
msgstr ""
|
2067 |
|
2068 |
-
#: admin/core/core.php:
|
2069 |
msgid "Add Ignore rules using plugin folder names or file names."
|
2070 |
msgstr ""
|
2071 |
|
2072 |
-
#: admin/core/core.php:
|
2073 |
msgid "Use a comma and a space between folder and/or file names."
|
2074 |
msgstr ""
|
2075 |
|
2076 |
-
#: admin/core/core.php:
|
2077 |
msgid "Example: plugin-folder-name, example-file-name.php"
|
2078 |
msgstr ""
|
2079 |
|
2080 |
-
#: admin/core/core.php:
|
2081 |
msgid ""
|
2082 |
"This option is for adding ignore rules for Hidden or Empty Plugin Folders "
|
2083 |
"Detected by BPS or Non-standard WP files detected by BPS in your /plugins/ "
|
2084 |
"folder."
|
2085 |
msgstr ""
|
2086 |
|
2087 |
-
#: admin/core/core.php:
|
2088 |
msgid ""
|
2089 |
"This is an independent option setting that does not require clicking any "
|
2090 |
"other buttons."
|
2091 |
msgstr ""
|
2092 |
|
2093 |
-
#: admin/core/core.php:
|
2094 |
#: admin/security-log/security-log.php:448
|
2095 |
#: admin/security-log/security-log.php:463
|
2096 |
#: admin/security-log/security-log.php:681
|
@@ -2098,281 +2092,281 @@ msgstr ""
|
|
2098 |
msgid "Click OK to proceed or click Cancel."
|
2099 |
msgstr ""
|
2100 |
|
2101 |
-
#: admin/core/core.php:
|
2102 |
msgid "Master htaccess Folder BulletProof Mode (MBM)"
|
2103 |
msgstr ""
|
2104 |
|
2105 |
-
#: admin/core/core.php:
|
2106 |
msgid "MBM BulletProof Modes"
|
2107 |
msgstr ""
|
2108 |
|
2109 |
-
#: admin/core/core.php:
|
2110 |
-
#: admin/core/core.php:
|
2111 |
msgid "MBM Status: "
|
2112 |
msgstr ""
|
2113 |
|
2114 |
-
#: admin/core/core.php:
|
2115 |
msgid "Click OK to Activate MBM BulletProof Mode or click Cancel."
|
2116 |
msgstr ""
|
2117 |
|
2118 |
-
#: admin/core/core.php:
|
2119 |
msgid "Click OK to Deactivate MBM BulletProof Mode or click Cancel."
|
2120 |
msgstr ""
|
2121 |
|
2122 |
-
#: admin/core/core.php:
|
2123 |
msgid "BPS Backup Folder BulletProof Mode (BBM)"
|
2124 |
msgstr ""
|
2125 |
|
2126 |
-
#: admin/core/core.php:
|
2127 |
msgid "BBM BulletProof Modes"
|
2128 |
msgstr ""
|
2129 |
|
2130 |
-
#: admin/core/core.php:
|
2131 |
-
#: admin/core/core.php:
|
2132 |
msgid "BBM Status: "
|
2133 |
msgstr ""
|
2134 |
|
2135 |
-
#: admin/core/core.php:
|
2136 |
msgid "Click OK to Activate BBM BulletProof Mode or click Cancel."
|
2137 |
msgstr ""
|
2138 |
|
2139 |
-
#: admin/core/core.php:
|
2140 |
msgid ""
|
2141 |
"Caution: BPS Backup Folder BulletProof Mode (BBM) should only be deactivated "
|
2142 |
"for testing or troubleshooting. Be sure to activate BBM BulletProof Mode "
|
2143 |
"after you are done testing or troubleshooting."
|
2144 |
msgstr ""
|
2145 |
|
2146 |
-
#: admin/core/core.php:
|
2147 |
msgid "Click OK to Deactivate BBM BulletProof Mode or click Cancel."
|
2148 |
msgstr ""
|
2149 |
|
2150 |
-
#: admin/core/core.php:
|
2151 |
msgid "Backup & Restore BPS htaccess Files"
|
2152 |
msgstr ""
|
2153 |
|
2154 |
-
#: admin/core/core.php:
|
2155 |
msgid "Click OK to Backup BPS htaccess files or click Cancel."
|
2156 |
msgstr ""
|
2157 |
|
2158 |
-
#: admin/core/core.php:
|
2159 |
msgid "Click OK to Restore BPS htaccess files or click Cancel."
|
2160 |
msgstr ""
|
2161 |
|
2162 |
-
#: admin/core/core.php:
|
2163 |
msgid "htaccess File Editor ~ "
|
2164 |
msgstr ""
|
2165 |
|
2166 |
-
#: admin/core/core.php:
|
2167 |
msgid ""
|
2168 |
"Check or edit BPS htaccess files/code manually/directly for testing. Use BPS "
|
2169 |
"Custom Code to save htaccess code permanently"
|
2170 |
msgstr ""
|
2171 |
|
2172 |
-
#: admin/core/core.php:
|
2173 |
msgid "htaccess File Editing"
|
2174 |
msgstr ""
|
2175 |
|
2176 |
-
#: admin/core/core.php:
|
2177 |
msgid "htaccess Files Disabled: secure.htaccess Master file is disabled."
|
2178 |
msgstr ""
|
2179 |
|
2180 |
-
#: admin/core/core.php:
|
2181 |
msgid "ERROR: A secure.htaccess Master file was NOT found."
|
2182 |
msgstr ""
|
2183 |
|
2184 |
-
#: admin/core/core.php:
|
2185 |
msgid ""
|
2186 |
"File Open and Write test successful! The secure.htaccess Master file is "
|
2187 |
"writable."
|
2188 |
msgstr ""
|
2189 |
|
2190 |
-
#: admin/core/core.php:
|
2191 |
-
#: admin/core/core.php:
|
2192 |
msgid "Cannot write to file: "
|
2193 |
msgstr ""
|
2194 |
|
2195 |
-
#: admin/core/core.php:
|
2196 |
msgid ""
|
2197 |
"htaccess Files Disabled: secure.htaccess Master file writing is disabled. "
|
2198 |
msgstr ""
|
2199 |
|
2200 |
-
#: admin/core/core.php:
|
2201 |
msgid "Error: Unable to write to the secure.htaccess Master file."
|
2202 |
msgstr ""
|
2203 |
|
2204 |
-
#: admin/core/core.php:
|
2205 |
msgid "The secure.htaccess Master file has been updated."
|
2206 |
msgstr ""
|
2207 |
|
2208 |
-
#: admin/core/core.php:
|
2209 |
msgid "htaccess Files Disabled: default.htaccess Master file is disabled."
|
2210 |
msgstr ""
|
2211 |
|
2212 |
-
#: admin/core/core.php:
|
2213 |
msgid "ERROR: A default.htaccess Master file was NOT found."
|
2214 |
msgstr ""
|
2215 |
|
2216 |
-
#: admin/core/core.php:
|
2217 |
msgid ""
|
2218 |
"File Open and Write test successful! The default.htaccess Master file is "
|
2219 |
"writable."
|
2220 |
msgstr ""
|
2221 |
|
2222 |
-
#: admin/core/core.php:
|
2223 |
msgid ""
|
2224 |
"htaccess Files Disabled: default.htaccess Master file writing is disabled. "
|
2225 |
msgstr ""
|
2226 |
|
2227 |
-
#: admin/core/core.php:
|
2228 |
msgid "Error: Unable to write to the default.htaccess Master file."
|
2229 |
msgstr ""
|
2230 |
|
2231 |
-
#: admin/core/core.php:
|
2232 |
msgid "The default.htaccess Master file has been updated."
|
2233 |
msgstr ""
|
2234 |
|
2235 |
-
#: admin/core/core.php:
|
2236 |
msgid ""
|
2237 |
" Check that the /bps-backup/ and /master-backups/ folders exist and the "
|
2238 |
"folder permissions or Ownership for these folders."
|
2239 |
msgstr ""
|
2240 |
|
2241 |
-
#: admin/core/core.php:
|
2242 |
msgid ""
|
2243 |
"Your Custom default.htaccess Master file has been successfully saved to: "
|
2244 |
msgstr ""
|
2245 |
|
2246 |
-
#: admin/core/core.php:
|
2247 |
msgid "wpadmin-secure.htaccess file writing is disabled."
|
2248 |
msgstr ""
|
2249 |
|
2250 |
-
#: admin/core/core.php:
|
2251 |
msgid ""
|
2252 |
"htaccess Files Disabled: wpadmin-secure.htaccess Master file is disabled."
|
2253 |
msgstr ""
|
2254 |
|
2255 |
-
#: admin/core/core.php:
|
2256 |
msgid "ERROR: A wpadmin-secure.htaccess Master file was NOT found."
|
2257 |
msgstr ""
|
2258 |
|
2259 |
-
#: admin/core/core.php:
|
2260 |
msgid ""
|
2261 |
"File Open and Write test successful! The wpadmin-secure.htaccess Master file "
|
2262 |
"is writable."
|
2263 |
msgstr ""
|
2264 |
|
2265 |
-
#: admin/core/core.php:
|
2266 |
msgid ""
|
2267 |
"htaccess Files Disabled: wpadmin-secure.htaccess Master file writing is "
|
2268 |
"disabled. "
|
2269 |
msgstr ""
|
2270 |
|
2271 |
-
#: admin/core/core.php:
|
2272 |
msgid "Error: Unable to write to the wpadmin-secure.htaccess Master file."
|
2273 |
msgstr ""
|
2274 |
|
2275 |
-
#: admin/core/core.php:
|
2276 |
msgid "The wpadmin-secure.htaccess Master file has been updated."
|
2277 |
msgstr ""
|
2278 |
|
2279 |
-
#: admin/core/core.php:
|
2280 |
msgid "htaccess Files Disabled: Root htaccess file does not exist."
|
2281 |
msgstr ""
|
2282 |
|
2283 |
-
#: admin/core/core.php:
|
2284 |
msgid "ERROR: An htaccess file was NOT found in your root folder"
|
2285 |
msgstr ""
|
2286 |
|
2287 |
-
#: admin/core/core.php:
|
2288 |
msgid ""
|
2289 |
"File Open and Write test successful! Your currently active root htaccess "
|
2290 |
"file is writable."
|
2291 |
msgstr ""
|
2292 |
|
2293 |
-
#: admin/core/core.php:
|
2294 |
msgid "Your root htaccess file is Locked with Read Only Permissions."
|
2295 |
msgstr ""
|
2296 |
|
2297 |
-
#: admin/core/core.php:
|
2298 |
msgid ""
|
2299 |
"Use the Lock and Unlock buttons below to Lock or Unlock your root htaccess "
|
2300 |
"file for editing."
|
2301 |
msgstr ""
|
2302 |
|
2303 |
-
#: admin/core/core.php:
|
2304 |
msgid ""
|
2305 |
"Error: Unable to write to the Root htaccess file. If your Root htaccess file "
|
2306 |
"is locked you must unlock first."
|
2307 |
msgstr ""
|
2308 |
|
2309 |
-
#: admin/core/core.php:
|
2310 |
msgid "Your currently active root htaccess file has been updated."
|
2311 |
msgstr ""
|
2312 |
|
2313 |
-
#: admin/core/core.php:
|
2314 |
msgid "wp-admin active htaccess file writing is disabled."
|
2315 |
msgstr ""
|
2316 |
|
2317 |
-
#: admin/core/core.php:
|
2318 |
msgid "htaccess Files Disabled: wp-admin folder htaccess file does not exist."
|
2319 |
msgstr ""
|
2320 |
|
2321 |
-
#: admin/core/core.php:
|
2322 |
msgid "ERROR: An htaccess file was NOT found in your wp-admin folder"
|
2323 |
msgstr ""
|
2324 |
|
2325 |
-
#: admin/core/core.php:
|
2326 |
msgid ""
|
2327 |
"File Open and Write test successful! Your currently active wp-admin htaccess "
|
2328 |
"file is writable."
|
2329 |
msgstr ""
|
2330 |
|
2331 |
-
#: admin/core/core.php:
|
2332 |
msgid "Error: Unable to write to the wp-admin htaccess file."
|
2333 |
msgstr ""
|
2334 |
|
2335 |
-
#: admin/core/core.php:
|
2336 |
msgid "Your currently active wp-admin htaccess file has been updated."
|
2337 |
msgstr ""
|
2338 |
|
2339 |
-
#: admin/core/core.php:
|
2340 |
msgid "Your Root htaccess file has been Locked."
|
2341 |
msgstr ""
|
2342 |
|
2343 |
-
#: admin/core/core.php:
|
2344 |
msgid "Unable to Lock your Root htaccess file."
|
2345 |
msgstr ""
|
2346 |
|
2347 |
-
#: admin/core/core.php:
|
2348 |
msgid "Your Root htaccess file has been Unlocked."
|
2349 |
msgstr ""
|
2350 |
|
2351 |
-
#: admin/core/core.php:
|
2352 |
msgid "Unable to Unlock your Root htaccess file."
|
2353 |
msgstr ""
|
2354 |
|
2355 |
-
#: admin/core/core.php:
|
2356 |
msgid "Click OK to Lock your Root htaccess file or click Cancel."
|
2357 |
msgstr ""
|
2358 |
|
2359 |
-
#: admin/core/core.php:
|
2360 |
msgid ""
|
2361 |
"Note: The File Open and Write Test window will still display the last status "
|
2362 |
"of the file as Unlocked. To see the current status refresh your browser."
|
2363 |
msgstr ""
|
2364 |
|
2365 |
-
#: admin/core/core.php:
|
2366 |
msgid "Click OK to Unlock your Root htaccess file or click Cancel."
|
2367 |
msgstr ""
|
2368 |
|
2369 |
-
#: admin/core/core.php:
|
2370 |
msgid ""
|
2371 |
"Note: The File Open and Write Test window will still display the last status "
|
2372 |
"of the file as Locked. To see the current status refresh your browser."
|
2373 |
msgstr ""
|
2374 |
|
2375 |
-
#: admin/core/core.php:
|
2376 |
msgid ""
|
2377 |
"Turning AutoLock On will allow BPS Pro to automatically lock your Root ."
|
2378 |
"htaccess file. For some folks this causes a problem because their Web Hosts "
|
@@ -2380,11 +2374,11 @@ msgid ""
|
|
2380 |
"BPS Pro to AutoLock the Root .htaccess file works fine."
|
2381 |
msgstr ""
|
2382 |
|
2383 |
-
#: admin/core/core.php:
|
2384 |
msgid "Click OK to Turn AutoLock On or click Cancel."
|
2385 |
msgstr ""
|
2386 |
|
2387 |
-
#: admin/core/core.php:
|
2388 |
#: admin/system-info/system-info.php:792 admin/system-info/system-info.php:800
|
2389 |
#: admin/system-info/system-info.php:808 admin/system-info/system-info.php:816
|
2390 |
#: admin/system-info/system-info.php:824 admin/system-info/system-info.php:832
|
@@ -2396,7 +2390,7 @@ msgstr ""
|
|
2396 |
msgid "On"
|
2397 |
msgstr ""
|
2398 |
|
2399 |
-
#: admin/core/core.php:
|
2400 |
msgid ""
|
2401 |
"Turning AutoLock Off will prevent BPS Pro from automatically locking your "
|
2402 |
"Root .htaccess file. For some folks this is necessary because their Web "
|
@@ -2404,11 +2398,11 @@ msgid ""
|
|
2404 |
"allowing BPS Pro to AutoLock the Root .htaccess file works fine."
|
2405 |
msgstr ""
|
2406 |
|
2407 |
-
#: admin/core/core.php:
|
2408 |
msgid "Click OK to Turn AutoLock Off or click Cancel."
|
2409 |
msgstr ""
|
2410 |
|
2411 |
-
#: admin/core/core.php:
|
2412 |
#: admin/system-info/system-info.php:795 admin/system-info/system-info.php:803
|
2413 |
#: admin/system-info/system-info.php:811 admin/system-info/system-info.php:819
|
2414 |
#: admin/system-info/system-info.php:827 admin/system-info/system-info.php:835
|
@@ -2420,36 +2414,36 @@ msgstr ""
|
|
2420 |
msgid "Off"
|
2421 |
msgstr ""
|
2422 |
|
2423 |
-
#: admin/core/core.php:
|
2424 |
msgid "secure.htaccess"
|
2425 |
msgstr ""
|
2426 |
|
2427 |
-
#: admin/core/core.php:
|
2428 |
msgid "default.htaccess"
|
2429 |
msgstr ""
|
2430 |
|
2431 |
-
#: admin/core/core.php:
|
2432 |
msgid "wpadmin-secure.htaccess"
|
2433 |
msgstr ""
|
2434 |
|
2435 |
-
#: admin/core/core.php:
|
2436 |
msgid "Your Current Root htaccess File"
|
2437 |
msgstr ""
|
2438 |
|
2439 |
-
#: admin/core/core.php:
|
2440 |
msgid "Your Current wp-admin htaccess File"
|
2441 |
msgstr ""
|
2442 |
|
2443 |
-
#: admin/core/core.php:
|
2444 |
-
#: admin/core/core.php:
|
2445 |
msgid ""
|
2446 |
"If you see an error or are unable to save your editing changes then click "
|
2447 |
"the Encrypt htaccess Code button first and then click the Update File "
|
2448 |
"button. Mouse over the question mark image to the right for help info."
|
2449 |
msgstr ""
|
2450 |
|
2451 |
-
#: admin/core/core.php:
|
2452 |
-
#: admin/core/core.php:
|
2453 |
msgid ""
|
2454 |
"If your web host currently has ModSecurity installed or installs ModSecurity "
|
2455 |
"at a later time then ModSecurity will prevent you from saving your htaccess "
|
@@ -2457,8 +2451,8 @@ msgid ""
|
|
2457 |
"button."
|
2458 |
msgstr ""
|
2459 |
|
2460 |
-
#: admin/core/core.php:
|
2461 |
-
#: admin/core/core.php:
|
2462 |
msgid ""
|
2463 |
"If you click the Encrypt htaccess Code button and then want to edit your "
|
2464 |
"code again click the Decrypt htaccess Code button. After you are done "
|
@@ -2466,20 +2460,20 @@ msgid ""
|
|
2466 |
"File button."
|
2467 |
msgstr ""
|
2468 |
|
2469 |
-
#: admin/core/core.php:
|
2470 |
-
#: admin/core/core.php:
|
2471 |
msgid "Click the htaccess File Editing Read Me help button for more help info."
|
2472 |
msgstr ""
|
2473 |
|
2474 |
-
#: admin/core/core.php:
|
2475 |
msgid "YOUR ROOT HTACCESS FILE IS LOCKED."
|
2476 |
msgstr ""
|
2477 |
|
2478 |
-
#: admin/core/core.php:
|
2479 |
msgid "YOUR FILE EDITS|CHANGES CANNOT BE SAVED."
|
2480 |
msgstr ""
|
2481 |
|
2482 |
-
#: admin/core/core.php:
|
2483 |
msgid ""
|
2484 |
"Click Cancel, copy the file editing changes you made to save them and then "
|
2485 |
"click the Unlock .htaccess File button to unlock your Root .htaccess file. "
|
@@ -2488,44 +2482,44 @@ msgid ""
|
|
2488 |
"to save your file edits/changes."
|
2489 |
msgstr ""
|
2490 |
|
2491 |
-
#: admin/core/core.php:
|
2492 |
msgid "htaccess File Custom Code ~ "
|
2493 |
msgstr ""
|
2494 |
|
2495 |
-
#: admin/core/core.php:
|
2496 |
msgid ""
|
2497 |
"Save custom htaccess code for your Root and wp-admin htaccess Files "
|
2498 |
"permanently"
|
2499 |
msgstr ""
|
2500 |
|
2501 |
-
#: admin/core/core.php:
|
2502 |
msgid "Reset|Recheck Dismiss Notices: "
|
2503 |
msgstr ""
|
2504 |
|
2505 |
-
#: admin/core/core.php:
|
2506 |
msgid "Brute Force Login Page Protection code"
|
2507 |
msgstr ""
|
2508 |
|
2509 |
-
#: admin/core/core.php:
|
2510 |
-
#: admin/wizard/wizard.php:
|
2511 |
msgid "Custom Code Video Tutorial"
|
2512 |
msgstr ""
|
2513 |
|
2514 |
-
#: admin/core/core.php:
|
2515 |
msgid "BulletProof Security Forum"
|
2516 |
msgstr ""
|
2517 |
|
2518 |
-
#: admin/core/core.php:
|
2519 |
msgid ""
|
2520 |
"Clicking OK will Import all of your Root and wp-admin Custom Code from the "
|
2521 |
"cc-master.zip file on your computer."
|
2522 |
msgstr ""
|
2523 |
|
2524 |
-
#: admin/core/core.php:
|
2525 |
msgid "Click OK to Import Custom Code or click Cancel."
|
2526 |
msgstr ""
|
2527 |
|
2528 |
-
#: admin/core/core.php:
|
2529 |
msgid ""
|
2530 |
"Clicking OK will Export (copy) all of your Root and wp-admin Custom Code "
|
2531 |
"into the cc-master.zip file, which you can then download to your computer by "
|
@@ -2533,51 +2527,51 @@ msgid ""
|
|
2533 |
"success message."
|
2534 |
msgstr ""
|
2535 |
|
2536 |
-
#: admin/core/core.php:
|
2537 |
msgid "Click OK to Export Custom Code or click Cancel."
|
2538 |
msgstr ""
|
2539 |
|
2540 |
-
#: admin/core/core.php:
|
2541 |
msgid ""
|
2542 |
"Clicking OK will delete all of your Root and wp-admin Custom Code from all "
|
2543 |
"of the Custom Code text boxes."
|
2544 |
msgstr ""
|
2545 |
|
2546 |
-
#: admin/core/core.php:
|
2547 |
msgid "Click OK to Delete Custom Code or click Cancel."
|
2548 |
msgstr ""
|
2549 |
|
2550 |
-
#: admin/core/core.php:
|
2551 |
msgid ""
|
2552 |
"Your My Notes Personal Notes and/or htaccess Code Notes saved successfully "
|
2553 |
"to your WordPress Database."
|
2554 |
msgstr ""
|
2555 |
|
2556 |
-
#: admin/core/core.php:
|
2557 |
msgid "My Notes ~ "
|
2558 |
msgstr ""
|
2559 |
|
2560 |
-
#: admin/core/core.php:
|
2561 |
msgid "Save Personal Notes and htaccess Code Notes to your WordPress Database"
|
2562 |
msgstr ""
|
2563 |
|
2564 |
-
#: admin/core/core.php:
|
2565 |
msgid ""
|
2566 |
"If you are unable to save custom htaccess code and/or see an error message "
|
2567 |
"when trying to save custom htaccess code, "
|
2568 |
msgstr ""
|
2569 |
|
2570 |
-
#: admin/core/core.php:
|
2571 |
msgid ""
|
2572 |
"click the Encrypt My Notes button first and then click the Save My Notes "
|
2573 |
"button."
|
2574 |
msgstr ""
|
2575 |
|
2576 |
-
#: admin/core/core.php:
|
2577 |
msgid "Mouse over the question mark image to the right for help info."
|
2578 |
msgstr ""
|
2579 |
|
2580 |
-
#: admin/core/core.php:
|
2581 |
msgid ""
|
2582 |
"If your web host currently has ModSecurity installed or installs ModSecurity "
|
2583 |
"at a later time then ModSecurity will prevent you from saving your custom "
|
@@ -2585,7 +2579,7 @@ msgid ""
|
|
2585 |
"button."
|
2586 |
msgstr ""
|
2587 |
|
2588 |
-
#: admin/core/core.php:
|
2589 |
msgid ""
|
2590 |
"If you click the Encrypt My Notes button, but then want to add or edit "
|
2591 |
"additional custom code click the Decrypt My Notes button. After you are done "
|
@@ -2593,25 +2587,25 @@ msgid ""
|
|
2593 |
"clicking the Save My Notes button."
|
2594 |
msgstr ""
|
2595 |
|
2596 |
-
#: admin/core/core.php:
|
2597 |
#: admin/db-backup-security/db-backup-security.php:1743
|
2598 |
-
#: admin/mscan/mscan.php:
|
2599 |
msgid "Whats New in "
|
2600 |
msgstr ""
|
2601 |
|
2602 |
-
#: admin/core/core.php:
|
2603 |
msgid " and General Help Info & Tips"
|
2604 |
msgstr ""
|
2605 |
|
2606 |
-
#: admin/core/core.php:
|
2607 |
msgid "The BPS Changelog|Whats New page has been moved to the "
|
2608 |
msgstr ""
|
2609 |
|
2610 |
-
#: admin/core/core.php:
|
2611 |
msgid "Reasons for this Changelog|Whats New page change: "
|
2612 |
msgstr ""
|
2613 |
|
2614 |
-
#: admin/core/core.php:
|
2615 |
msgid ""
|
2616 |
"The BPS Changelog|Whats New page will not have to be translated by the "
|
2617 |
"WordPress PolyGlots Language Packs Team for each new version release of BPS, "
|
@@ -2620,69 +2614,68 @@ msgid ""
|
|
2620 |
"BPS version changes through the years and other beneficial reasons."
|
2621 |
msgstr ""
|
2622 |
|
2623 |
-
#: admin/core/core.php:
|
2624 |
#: admin/db-backup-security/db-backup-security.php:1242
|
2625 |
#: admin/db-backup-security/db-backup-security.php:1398
|
2626 |
#: admin/email-log-settings/email-log-settings.php:78
|
2627 |
#: admin/maintenance/maintenance.php:191 admin/maintenance/maintenance.php:193
|
2628 |
#: admin/security-log/security-log.php:218 admin/theme-skin/theme-skin.php:84
|
2629 |
-
#: admin/wizard/wizard.php:
|
2630 |
msgid ""
|
2631 |
"Protect all of your website files with AutoRestore|Quarantine Intrusion "
|
2632 |
"Detection & Prevention System: "
|
2633 |
msgstr ""
|
2634 |
|
2635 |
-
#: admin/core/core.php:
|
2636 |
#: admin/db-backup-security/db-backup-security.php:1242
|
2637 |
#: admin/db-backup-security/db-backup-security.php:1398
|
2638 |
#: admin/email-log-settings/email-log-settings.php:78
|
2639 |
#: admin/maintenance/maintenance.php:191 admin/maintenance/maintenance.php:193
|
2640 |
-
#: admin/
|
2641 |
-
#: admin/
|
2642 |
-
#: admin/wizard/wizard.php:1164
|
2643 |
msgid "Get BPS Pro ARQ IDPS"
|
2644 |
msgstr ""
|
2645 |
|
2646 |
-
#: admin/core/core.php:
|
2647 |
#: admin/maintenance/maintenance.php:191 admin/maintenance/maintenance.php:193
|
2648 |
#: admin/security-log/security-log.php:218 admin/theme-skin/theme-skin.php:84
|
2649 |
-
#: admin/wizard/wizard.php:
|
2650 |
msgid ""
|
2651 |
"Protect against SpamBot & HackerBot (auto-registering, auto-logins, auto-"
|
2652 |
"posting, auto-commenting): "
|
2653 |
msgstr ""
|
2654 |
|
2655 |
-
#: admin/core/core.php:
|
2656 |
#: admin/login/login.php:204 admin/login/login.php:831
|
2657 |
#: admin/maintenance/maintenance.php:191 admin/maintenance/maintenance.php:193
|
2658 |
#: admin/security-log/security-log.php:218 admin/theme-skin/theme-skin.php:84
|
2659 |
-
#: admin/wizard/wizard.php:
|
2660 |
msgid "Get BPS Pro JTC Anti-Spam|Anti-Hacker"
|
2661 |
msgstr ""
|
2662 |
|
2663 |
-
#: admin/core/core.php:
|
2664 |
msgid "General Help Info & Tips:"
|
2665 |
msgstr ""
|
2666 |
|
2667 |
-
#: admin/core/core.php:
|
2668 |
msgid "If BPS plugin pages are not displaying visually correct you can "
|
2669 |
msgstr ""
|
2670 |
|
2671 |
-
#: admin/core/core.php:
|
2672 |
msgid "BPS Video Tutorials|Setup Wizard: "
|
2673 |
msgstr ""
|
2674 |
|
2675 |
-
#: admin/core/core.php:
|
2676 |
msgid "Troubleshooting Steps & The BPS Security Log: "
|
2677 |
msgstr ""
|
2678 |
|
2679 |
-
#: admin/core/core.php:
|
2680 |
msgid ""
|
2681 |
"All BPS plugin features can be turned Off/On individually to confirm, "
|
2682 |
"eliminate or isolate a problem or issue that may or may not be caused by BPS."
|
2683 |
msgstr ""
|
2684 |
|
2685 |
-
#: admin/core/core.php:
|
2686 |
msgid ""
|
2687 |
"The BPS Security Log is a primary troubleshooting tool. If BPS is blocking "
|
2688 |
"something legitimate in another plugin or theme then a Security Log entry "
|
@@ -2691,69 +2684,69 @@ msgid ""
|
|
2691 |
"being blocked."
|
2692 |
msgstr ""
|
2693 |
|
2694 |
-
#: admin/core/core.php:
|
2695 |
msgid ""
|
2696 |
"Search the Forum site to see if a known issue or problem is already posted "
|
2697 |
"with a solution/whitelist rule in the Forum."
|
2698 |
msgstr ""
|
2699 |
|
2700 |
-
#: admin/core/core.php:
|
2701 |
msgid "Help & FAQ"
|
2702 |
msgstr ""
|
2703 |
|
2704 |
-
#: admin/core/core.php:
|
2705 |
#: admin/login/login.php:1829 admin/maintenance/maintenance.php:2138
|
2706 |
#: admin/security-log/security-log.php:811
|
2707 |
#: admin/system-info/system-info.php:1134
|
2708 |
msgid "Contributors Page"
|
2709 |
msgstr ""
|
2710 |
|
2711 |
-
#: admin/core/core.php:
|
2712 |
msgid "WP Permalinks - Custom Permalink Structure Help Info"
|
2713 |
msgstr ""
|
2714 |
|
2715 |
-
#: admin/core/core.php:
|
2716 |
#: admin/login/login.php:1828 admin/maintenance/maintenance.php:2139
|
2717 |
#: admin/security-log/security-log.php:810
|
2718 |
#: admin/system-info/system-info.php:1133
|
2719 |
msgid "Security Log Event Codes"
|
2720 |
msgstr ""
|
2721 |
|
2722 |
-
#: admin/core/core.php:
|
2723 |
msgid "Adding a Custom 403 Forbidden Page For Your Website"
|
2724 |
msgstr ""
|
2725 |
|
2726 |
-
#: admin/core/core.php:
|
2727 |
#: admin/db-backup-security/db-backup-security.php:1747
|
2728 |
#: admin/email-log-settings/email-log-settings.php:216
|
2729 |
#: admin/login/login.php:1830 admin/maintenance/maintenance.php:2140
|
2730 |
-
#: admin/mscan/mscan.php:
|
2731 |
#: admin/system-info/system-info.php:1135 admin/theme-skin/theme-skin.php:258
|
2732 |
msgid "Forum: Search, Troubleshooting Steps & Post Questions For Assistance"
|
2733 |
msgstr ""
|
2734 |
|
2735 |
-
#: admin/core/core.php:
|
2736 |
msgid "BulletProof Security Pro Feature Highlights"
|
2737 |
msgstr ""
|
2738 |
|
2739 |
-
#: admin/core/core.php:
|
2740 |
msgid "The Ultimate Security Protection"
|
2741 |
msgstr ""
|
2742 |
|
2743 |
-
#: admin/core/core.php:
|
2744 |
msgid "BPS Pro One-Click Setup Wizard & Demo Video Tutorial"
|
2745 |
msgstr ""
|
2746 |
|
2747 |
-
#: admin/core/core.php:
|
2748 |
msgid "View All BPS Pro Features"
|
2749 |
msgstr ""
|
2750 |
|
2751 |
-
#: admin/core/core.php:
|
2752 |
msgid ""
|
2753 |
"The Complete Website Security Solution for Hacker and Spammer Protection"
|
2754 |
msgstr ""
|
2755 |
|
2756 |
-
#: admin/core/core.php:
|
2757 |
msgid ""
|
2758 |
"BulletProof Security Pro has an amazing track record. BPS Pro has been "
|
2759 |
"publicly available for 9+ years and is installed on over 50,000 websites "
|
@@ -2761,47 +2754,47 @@ msgid ""
|
|
2761 |
"hacked."
|
2762 |
msgstr ""
|
2763 |
|
2764 |
-
#: admin/core/core.php:
|
2765 |
msgid ""
|
2766 |
"Why pay 10 times or more for other premium WordPress Security Plugins with "
|
2767 |
"recurring yearly subscriptions when you can get the best WordPress Security "
|
2768 |
"Plugin for an extremely low one-time purchase price?"
|
2769 |
msgstr ""
|
2770 |
|
2771 |
-
#: admin/core/core.php:
|
2772 |
msgid "View Cost Comparison"
|
2773 |
msgstr ""
|
2774 |
|
2775 |
-
#: admin/core/core.php:
|
2776 |
msgid ""
|
2777 |
"30-Day Money-Back Guarantee: If you are dissatisfied with BulletProof "
|
2778 |
"Security Pro for any reason. We offer a no questions asked full refund."
|
2779 |
msgstr ""
|
2780 |
|
2781 |
-
#: admin/core/core.php:
|
2782 |
msgid "One-Click Setup Wizard Installation: "
|
2783 |
msgstr ""
|
2784 |
|
2785 |
-
#: admin/core/core.php:
|
2786 |
msgid ""
|
2787 |
"Fast, simple and complete BPS Pro installation and setup in less than 1 "
|
2788 |
"minute."
|
2789 |
msgstr ""
|
2790 |
|
2791 |
-
#: admin/core/core.php:
|
2792 |
msgid "One-Click Upgrade: "
|
2793 |
msgstr ""
|
2794 |
|
2795 |
-
#: admin/core/core.php:
|
2796 |
msgid "One-click plugin upgrade on the WordPress Plugins page."
|
2797 |
msgstr ""
|
2798 |
|
2799 |
-
#: admin/core/core.php:
|
2800 |
msgid ""
|
2801 |
"AutoRestore|Quarantine Intrusion Detection and Prevention System (ARQ IDPS): "
|
2802 |
msgstr ""
|
2803 |
|
2804 |
-
#: admin/core/core.php:
|
2805 |
msgid ""
|
2806 |
"ARQ IDPS is a real-time file scanner that automatically quarantines "
|
2807 |
"malicious hacker files and autorestores legitimate website files if they "
|
@@ -2815,11 +2808,11 @@ msgid ""
|
|
2815 |
"Plugin and Theme Automatic, Manual and Shiny installations and updates."
|
2816 |
msgstr ""
|
2817 |
|
2818 |
-
#: admin/core/core.php:
|
2819 |
msgid "MScan Malware Scanner: "
|
2820 |
msgstr ""
|
2821 |
|
2822 |
-
#: admin/core/core.php:
|
2823 |
msgid ""
|
2824 |
"MScan Scheduled Scans are available in BPS Pro only. The BPS Pro ARQ IDPS "
|
2825 |
"scanner is far superior to malware scanners including MScan, but both the "
|
@@ -2827,11 +2820,11 @@ msgid ""
|
|
2827 |
"website if someone would like to do that."
|
2828 |
msgstr ""
|
2829 |
|
2830 |
-
#: admin/core/core.php:
|
2831 |
msgid "Plugin Firewall|Plugin Firewall AutoPilot Mode: "
|
2832 |
msgstr ""
|
2833 |
|
2834 |
-
#: admin/core/core.php:
|
2835 |
msgid ""
|
2836 |
"The Plugin Firewall protects all of your Plugins (plugin folders and files) "
|
2837 |
"with an IP Address Firewall, which prevents/blocks/forbids Remote Access to "
|
@@ -2845,11 +2838,11 @@ msgid ""
|
|
2845 |
"firewall whitelist rules."
|
2846 |
msgstr ""
|
2847 |
|
2848 |
-
#: admin/core/core.php:
|
2849 |
msgid "JTC Anti-Spam|Anti-Hacker (JTC): "
|
2850 |
msgstr ""
|
2851 |
|
2852 |
-
#: admin/core/core.php:
|
2853 |
#, php-format
|
2854 |
msgid ""
|
2855 |
"Blocks 100% of all SpamBot and HackerBot Brute Force Login attacks (auto-"
|
@@ -2863,11 +2856,11 @@ msgid ""
|
|
2863 |
"includes a SpamBot Trap."
|
2864 |
msgstr ""
|
2865 |
|
2866 |
-
#: admin/core/core.php:
|
2867 |
msgid "Uploads Folder Anti-Exploit Guard (UAEG): "
|
2868 |
msgstr ""
|
2869 |
|
2870 |
-
#: admin/core/core.php:
|
2871 |
msgid ""
|
2872 |
"Protects the WordPress Uploads folder. ONLY safe image files with valid "
|
2873 |
"image file extensions such as jpg, gif, png, etc. can be accessed, opened or "
|
@@ -2877,11 +2870,11 @@ msgid ""
|
|
2877 |
"executed in the WordPress Uploads folder."
|
2878 |
msgstr ""
|
2879 |
|
2880 |
-
#: admin/core/core.php:
|
2881 |
msgid "DB Monitor Intrusion Detection System (IDS): "
|
2882 |
msgstr ""
|
2883 |
|
2884 |
-
#: admin/core/core.php:
|
2885 |
msgid ""
|
2886 |
"The DB Monitor is an automated Intrusion Detection System (IDS) that alerts "
|
2887 |
"you via email anytime a change/modification occurs in your WordPress "
|
@@ -2892,11 +2885,11 @@ msgid ""
|
|
2892 |
"help info."
|
2893 |
msgstr ""
|
2894 |
|
2895 |
-
#: admin/core/core.php:
|
2896 |
msgid "DB Diff Tool: "
|
2897 |
msgstr ""
|
2898 |
|
2899 |
-
#: admin/core/core.php:
|
2900 |
msgid ""
|
2901 |
"The DB Diff Tool compares old database tables from DB backups to current "
|
2902 |
"database tables and displays any differences in the data/content of those 2 "
|
@@ -2904,11 +2897,11 @@ msgid ""
|
|
2904 |
"not only just DB data."
|
2905 |
msgstr ""
|
2906 |
|
2907 |
-
#: admin/core/core.php:
|
2908 |
msgid "DB Status & Info: "
|
2909 |
msgstr ""
|
2910 |
|
2911 |
-
#: admin/core/core.php:
|
2912 |
msgid ""
|
2913 |
"General DB Info shows commonly checked DB status and info about your "
|
2914 |
"WordPress database at a glance. Extensive DB Info shows extensive DB status "
|
@@ -2917,11 +2910,11 @@ msgid ""
|
|
2917 |
"SHOW GLOBAL VARIABLES and SHOW SESSION VARIABLES."
|
2918 |
msgstr ""
|
2919 |
|
2920 |
-
#: admin/core/core.php:
|
2921 |
msgid "S-Monitor: "
|
2922 |
msgstr ""
|
2923 |
|
2924 |
-
#: admin/core/core.php:
|
2925 |
msgid ""
|
2926 |
"S-Monitor is the centralized Security Monitoring and Alerting Core where you "
|
2927 |
"can manage and choose BPS Pro settings for Dashboard Alerts, Dashboard "
|
@@ -2931,11 +2924,11 @@ msgid ""
|
|
2931 |
"easy to change all/any BPS Pro settings to your particular preferences."
|
2932 |
msgstr ""
|
2933 |
|
2934 |
-
#: admin/core/core.php:
|
2935 |
msgid "Advanced Real-Time Alerting & Heads Up Dashboard Status Display: "
|
2936 |
msgstr ""
|
2937 |
|
2938 |
-
#: admin/core/core.php:
|
2939 |
msgid ""
|
2940 |
"BPS Pro checks and displays error, warning, notifications and alert messages "
|
2941 |
"in real time. You can choose how you want these messages displayed to you "
|
@@ -2943,11 +2936,11 @@ msgid ""
|
|
2943 |
"Dashboard, BPS Pro pages only, Turned off, Email Alerts, Logging..."
|
2944 |
msgstr ""
|
2945 |
|
2946 |
-
#: admin/core/core.php:
|
2947 |
msgid "Custom php.ini|ini_set Options: "
|
2948 |
msgstr ""
|
2949 |
|
2950 |
-
#: admin/core/core.php:
|
2951 |
msgid ""
|
2952 |
"Quickly create a custom php.ini file for your website or use ini_set Options "
|
2953 |
"to increase security and performance with just a few clicks. Additional P-"
|
@@ -2955,11 +2948,11 @@ msgid ""
|
|
2955 |
"Protected PHP Error Log, PHP Error Alerts, Secure phpinfo Viewer..."
|
2956 |
msgstr ""
|
2957 |
|
2958 |
-
#: admin/core/core.php:
|
2959 |
msgid "Pro Tools: 16 mini-plugins: "
|
2960 |
msgstr ""
|
2961 |
|
2962 |
-
#: admin/core/core.php:
|
2963 |
msgid ""
|
2964 |
"Online Base64 Decoder, Offline Base64 Decode|Encode, Mcrypt ~ Decrypt|"
|
2965 |
"Encrypt, Crypt Encryption, Scheduled Crons (display and reschedule/reset "
|
@@ -2978,41 +2971,41 @@ msgid ""
|
|
2978 |
"vulnerable to an XML-RPC exploit)."
|
2979 |
msgstr ""
|
2980 |
|
2981 |
-
#: admin/core/core.php:
|
2982 |
msgid "BPS Pro Version Release Dates"
|
2983 |
msgstr ""
|
2984 |
|
2985 |
-
#: admin/core/core.php:2191 admin/core/core.php:2192 admin/core/core.php:2193
|
2986 |
#: admin/core/core.php:2194 admin/core/core.php:2195 admin/core/core.php:2196
|
2987 |
-
#: admin/core/core.php:2197 admin/core/core.php:
|
2988 |
-
#: admin/core/core.php:
|
2989 |
-
#: admin/core/core.php:2208 admin/core/core.php:
|
2990 |
-
#: admin/core/core.php:
|
2991 |
-
#: admin/core/core.php:
|
2992 |
-
#: admin/core/core.php:2226 admin/core/core.php:
|
2993 |
-
#: admin/core/core.php:
|
2994 |
#: admin/core/core.php:2236 admin/core/core.php:2237 admin/core/core.php:2238
|
2995 |
-
#: admin/core/core.php:2239 admin/core/core.php:
|
2996 |
-
#: admin/core/core.php:
|
2997 |
#: admin/core/core.php:2249 admin/core/core.php:2250 admin/core/core.php:2251
|
2998 |
#: admin/core/core.php:2252 admin/core/core.php:2253 admin/core/core.php:2254
|
2999 |
-
#: admin/core/core.php:2255 admin/core/core.php:2256 admin/core/core.php:
|
3000 |
-
#: admin/core/core.php:
|
3001 |
#: admin/core/core.php:2266 admin/core/core.php:2267 admin/core/core.php:2268
|
3002 |
#: admin/core/core.php:2269 admin/core/core.php:2270 admin/core/core.php:2271
|
3003 |
#: admin/core/core.php:2272 admin/core/core.php:2273 admin/core/core.php:2274
|
3004 |
-
#: admin/core/core.php:2275 admin/core/core.php:
|
3005 |
-
#: admin/core/core.php:
|
3006 |
#: admin/core/core.php:2286 admin/core/core.php:2287 admin/core/core.php:2288
|
3007 |
#: admin/core/core.php:2289 admin/core/core.php:2290 admin/core/core.php:2291
|
3008 |
-
#: admin/core/core.php:2292 admin/core/core.php:2293 admin/core/core.php:
|
3009 |
-
#: admin/core/core.php:
|
3010 |
#: admin/core/core.php:2303 admin/core/core.php:2304 admin/core/core.php:2305
|
3011 |
#: admin/core/core.php:2306 admin/core/core.php:2307 admin/core/core.php:2308
|
3012 |
-
#: admin/core/core.php:
|
3013 |
-
#: admin/core/core.php:
|
3014 |
#: admin/core/core.php:2320 admin/core/core.php:2321 admin/core/core.php:2322
|
3015 |
-
#: admin/core/core.php:2323
|
|
|
3016 |
#, php-format
|
3017 |
msgid ""
|
3018 |
"<a href=\"%2$s\" target=\"_blank\" title=\"Link Opens in New Browser Window"
|
@@ -3537,7 +3530,7 @@ msgid "Displays the last time a DB Backup Log entry was logged."
|
|
3537 |
msgstr ""
|
3538 |
|
3539 |
#: admin/db-backup-security/db-backup-help-text.php:12
|
3540 |
-
#: admin/mscan/mscan-help-text.php:
|
3541 |
msgid "Delete Log Button"
|
3542 |
msgstr ""
|
3543 |
|
@@ -3669,7 +3662,7 @@ msgstr ""
|
|
3669 |
#: admin/db-backup-security/db-backup-security.php:281
|
3670 |
#: admin/db-backup-security/db-backup-security.php:298
|
3671 |
#: admin/db-backup-security/db-backup-security.php:300
|
3672 |
-
#: admin/includes/admin.php:
|
3673 |
msgid "DB Backup"
|
3674 |
msgstr ""
|
3675 |
|
@@ -3755,7 +3748,7 @@ msgstr ""
|
|
3755 |
#: admin/db-backup-security/db-backup-security.php:896
|
3756 |
#: admin/login/login.php:580 admin/login/login.php:609
|
3757 |
#: admin/login/login.php:681 admin/login/login.php:710
|
3758 |
-
#: admin/mscan/mscan.php:
|
3759 |
msgid "Delete"
|
3760 |
msgstr ""
|
3761 |
|
@@ -3854,7 +3847,7 @@ msgid "Backup Job Settings|Independent Options"
|
|
3854 |
msgstr ""
|
3855 |
|
3856 |
#: admin/db-backup-security/db-backup-security.php:992
|
3857 |
-
#: admin/mscan/mscan.php:
|
3858 |
msgid "All"
|
3859 |
msgstr ""
|
3860 |
|
@@ -4321,7 +4314,7 @@ msgid ""
|
|
4321 |
msgstr ""
|
4322 |
|
4323 |
#: admin/db-backup-security/db-backup-security.php:1267
|
4324 |
-
#: admin/mscan/mscan.php:
|
4325 |
msgid ""
|
4326 |
"Then click the Delete Log button to delete the contents of this Log file."
|
4327 |
msgstr ""
|
@@ -4341,7 +4334,7 @@ msgid "Clicking OK will delete the contents of your DB Backup Log file."
|
|
4341 |
msgstr ""
|
4342 |
|
4343 |
#: admin/db-backup-security/db-backup-security.php:1304
|
4344 |
-
#: admin/mscan/mscan.php:
|
4345 |
msgid "Click OK to Delete the Log file contents or click Cancel."
|
4346 |
msgstr ""
|
4347 |
|
@@ -4491,12 +4484,12 @@ msgid ""
|
|
4491 |
msgstr ""
|
4492 |
|
4493 |
#: admin/db-backup-security/db-backup-security.php:1744
|
4494 |
-
#: admin/mscan/mscan.php:
|
4495 |
msgid "BPS Pro Features & Version Release Dates"
|
4496 |
msgstr ""
|
4497 |
|
4498 |
#: admin/db-backup-security/db-backup-security.php:1745
|
4499 |
-
#: admin/mscan/mscan.php:
|
4500 |
msgid "Video Tutorials"
|
4501 |
msgstr ""
|
4502 |
|
@@ -4522,7 +4515,7 @@ msgstr ""
|
|
4522 |
|
4523 |
#: admin/email-log-settings/email-log-settings.php:84
|
4524 |
#: admin/email-log-settings/email-log-settings.php:86
|
4525 |
-
#: admin/includes/admin.php:
|
4526 |
msgid "Email|Log Settings"
|
4527 |
msgstr ""
|
4528 |
|
@@ -4681,127 +4674,130 @@ msgstr ""
|
|
4681 |
msgid "WordPress Automatic Update Help Forum Topic"
|
4682 |
msgstr ""
|
4683 |
|
4684 |
-
#: admin/includes/admin.php:
|
4685 |
msgid "BulletProof Security Settings"
|
4686 |
msgstr ""
|
4687 |
|
4688 |
-
#: admin/includes/admin.php:
|
4689 |
msgid "BPS Security"
|
4690 |
msgstr ""
|
4691 |
|
4692 |
-
#: admin/includes/admin.php:
|
4693 |
msgid "Login Security ~ JTC-Lite"
|
4694 |
msgstr ""
|
4695 |
|
4696 |
-
#: admin/includes/admin.php:
|
4697 |
msgid "Login Security"
|
4698 |
msgstr ""
|
4699 |
|
4700 |
-
#: admin/includes/admin.php:
|
4701 |
#: admin/login/login.php:180 admin/login/login.php:837
|
4702 |
#: admin/login/login.php:839
|
4703 |
msgid "JTC-Lite"
|
4704 |
msgstr ""
|
4705 |
|
4706 |
-
#: admin/includes/admin.php:
|
4707 |
#: admin/maintenance/maintenance.php:170 admin/maintenance/maintenance.php:202
|
4708 |
#: admin/maintenance/maintenance.php:204
|
4709 |
msgid "Maintenance Mode"
|
4710 |
msgstr ""
|
4711 |
|
4712 |
-
#: admin/includes/admin.php:
|
4713 |
#: admin/system-info/system-info.php:71
|
4714 |
msgid "System Info"
|
4715 |
msgstr ""
|
4716 |
|
4717 |
-
#: admin/includes/admin.php:
|
4718 |
#: admin/theme-skin/theme-skin.php:74 admin/theme-skin/theme-skin.php:90
|
4719 |
#: admin/theme-skin/theme-skin.php:92
|
4720 |
msgid "UI|UX Settings"
|
4721 |
msgstr ""
|
4722 |
|
4723 |
-
#: admin/includes/admin.php:
|
4724 |
msgid "htaccess Core"
|
4725 |
msgstr ""
|
4726 |
|
4727 |
-
#: admin/includes/admin.php:
|
4728 |
msgid "MScan ~ Malware Scanner"
|
4729 |
msgstr ""
|
4730 |
|
4731 |
-
#: admin/includes/admin.php:
|
4732 |
-
#: admin/mscan/mscan.php:135 admin/mscan/mscan.php:137
|
4733 |
msgid "MScan"
|
4734 |
msgstr ""
|
4735 |
|
4736 |
-
#: admin/includes/admin.php:
|
4737 |
-
#: admin/includes/admin.php:
|
4738 |
msgid "Login Security ~ JTC-Lite ~ ISL ~ ACE"
|
4739 |
msgstr ""
|
4740 |
|
4741 |
-
#: admin/includes/admin.php:
|
4742 |
msgid "Idle Session Logout<br>Cookie Expiration"
|
4743 |
msgstr ""
|
4744 |
|
4745 |
-
#: admin/includes/admin.php:
|
4746 |
msgid "DB Backup & Security"
|
4747 |
msgstr ""
|
4748 |
|
4749 |
-
#: admin/includes/admin.php:
|
4750 |
#: admin/security-log/security-log.php:224
|
4751 |
#: admin/security-log/security-log.php:226
|
4752 |
msgid "Security Log"
|
4753 |
msgstr ""
|
4754 |
|
4755 |
-
#: admin/includes/admin.php:
|
4756 |
-
#: admin/wizard/wizard.php:
|
4757 |
-
#: bulletproof-security.php:
|
4758 |
msgid "Setup Wizard"
|
4759 |
msgstr ""
|
4760 |
|
4761 |
-
#: admin/includes/admin.php:
|
|
|
|
|
|
|
|
|
4762 |
#: admin/includes/uninstall.php:45
|
4763 |
msgid "BPS Plugin Uninstall Options"
|
4764 |
msgstr ""
|
4765 |
|
4766 |
-
#: admin/includes/admin.php:
|
4767 |
msgid "BPS UI|UX Debug: SLF: CSS Script Loaded"
|
4768 |
msgstr ""
|
4769 |
|
4770 |
-
#: admin/includes/admin.php:
|
4771 |
msgid "BPS UI|UX Debug: SLF: js Script Loaded"
|
4772 |
msgstr ""
|
4773 |
|
4774 |
-
#: admin/includes/admin.php:
|
4775 |
msgid "BPS UI|UX Debug: Scripts|Styles Dequeued"
|
4776 |
msgstr ""
|
4777 |
|
4778 |
-
#: admin/includes/admin.php:
|
4779 |
msgid "Script Dequeued: "
|
4780 |
msgstr ""
|
4781 |
|
4782 |
-
#: admin/includes/admin.php:
|
4783 |
msgid ""
|
4784 |
"No additional plugin or theme Scripts were found that needed to be Dequeued."
|
4785 |
msgstr ""
|
4786 |
|
4787 |
-
#: admin/includes/admin.php:
|
4788 |
msgid "Style Dequeued: "
|
4789 |
msgstr ""
|
4790 |
|
4791 |
-
#: admin/includes/admin.php:
|
4792 |
msgid ""
|
4793 |
"No additional plugin or theme Styles were found that needed to be Dequeued."
|
4794 |
msgstr ""
|
4795 |
|
4796 |
-
#: admin/includes/admin.php:
|
4797 |
msgid "BPS UI|UX Debug: WP Toolbar nodes|menu items Removed"
|
4798 |
msgstr ""
|
4799 |
|
4800 |
-
#: admin/includes/admin.php:
|
4801 |
msgid "WP Toolbar node|menu item Removed: "
|
4802 |
msgstr ""
|
4803 |
|
4804 |
-
#: admin/includes/admin.php:
|
4805 |
msgid "No WP Toolbar nodes|menu items were Removed in BPS plugin pages"
|
4806 |
msgstr ""
|
4807 |
|
@@ -4825,15 +4821,15 @@ msgid ""
|
|
4825 |
"click the Save Option button."
|
4826 |
msgstr ""
|
4827 |
|
4828 |
-
#: admin/includes/uninstall.php:
|
4829 |
msgid "BPS Plugin Uninstall Options:"
|
4830 |
msgstr ""
|
4831 |
|
4832 |
-
#: admin/includes/uninstall.php:
|
4833 |
msgid "BPS Pro Upgrade Uninstall"
|
4834 |
msgstr ""
|
4835 |
|
4836 |
-
#: admin/includes/uninstall.php:
|
4837 |
msgid "Complete BPS Plugin Uninstall"
|
4838 |
msgstr ""
|
4839 |
|
@@ -4893,8 +4889,8 @@ msgstr ""
|
|
4893 |
|
4894 |
#: admin/login/login.php:232 admin/login/login.php:329
|
4895 |
#: admin/login/login.php:649 admin/login/login.php:750
|
4896 |
-
#: admin/mscan/mscan.php:
|
4897 |
-
#: admin/mscan/mscan.php:
|
4898 |
msgid "Submit"
|
4899 |
msgstr ""
|
4900 |
|
@@ -5123,7 +5119,7 @@ msgid ""
|
|
5123 |
msgstr ""
|
5124 |
|
5125 |
#: admin/login/login.php:649 admin/login/login.php:750
|
5126 |
-
#: admin/mscan/mscan.php:
|
5127 |
msgid "Clear|Refresh"
|
5128 |
msgstr ""
|
5129 |
|
@@ -5787,8 +5783,8 @@ msgid ""
|
|
5787 |
msgstr ""
|
5788 |
|
5789 |
#: admin/login/lsm-help-text.php:10 admin/maintenance/maintenance.php:583
|
5790 |
-
#: includes/hud-dismiss-functions.php:
|
5791 |
-
#: includes/hud-dismiss-functions.php:
|
5792 |
msgid "CAUTION: "
|
5793 |
msgstr ""
|
5794 |
|
@@ -6907,9 +6903,9 @@ msgstr ""
|
|
6907 |
|
6908 |
#: admin/maintenance/maintenance.php:418 admin/maintenance/maintenance.php:438
|
6909 |
#: admin/wizard/wizard.php:160 includes/general-functions.php:509
|
6910 |
-
#: includes/hud-dismiss-functions.php:
|
6911 |
-
#: includes/hud-dismiss-functions.php:
|
6912 |
-
#: includes/hud-dismiss-functions.php:
|
6913 |
msgid "Click Here"
|
6914 |
msgstr ""
|
6915 |
|
@@ -7316,7 +7312,7 @@ msgstr ""
|
|
7316 |
msgid "BackEnd Maintenance Mode has been Turned Off."
|
7317 |
msgstr ""
|
7318 |
|
7319 |
-
#: admin/mscan/mscan-help-text.php:
|
7320 |
msgid ""
|
7321 |
"For more extensive help info and answers to common issues or problems click "
|
7322 |
"the MScan Malware Scanner Guide link above. For troubleshooting help or to "
|
@@ -7324,48 +7320,183 @@ msgid ""
|
|
7324 |
"above."
|
7325 |
msgstr ""
|
7326 |
|
7327 |
-
#: admin/mscan/mscan-help-text.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7328 |
msgid "Start Scan"
|
7329 |
msgstr ""
|
7330 |
|
7331 |
-
#: admin/mscan/mscan-help-text.php:
|
7332 |
msgid "Clicking the Start Scan button starts a scan."
|
7333 |
msgstr ""
|
7334 |
|
7335 |
-
#: admin/mscan/mscan-help-text.php:
|
7336 |
msgid "Stop Scan"
|
7337 |
msgstr ""
|
7338 |
|
7339 |
-
#: admin/mscan/mscan-help-text.php:
|
7340 |
-
msgid "
|
|
|
|
|
7341 |
msgstr ""
|
7342 |
|
7343 |
-
#: admin/mscan/mscan-help-text.php:
|
7344 |
-
msgid "
|
7345 |
msgstr ""
|
7346 |
|
7347 |
-
#: admin/mscan/mscan-help-text.php:
|
7348 |
msgid ""
|
7349 |
-
"
|
7350 |
-
"
|
7351 |
-
"
|
|
|
|
|
|
|
7352 |
msgstr ""
|
7353 |
|
7354 |
-
#: admin/mscan/mscan-help-text.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7355 |
msgid "Max File Size Limit to Scan"
|
7356 |
msgstr ""
|
7357 |
|
7358 |
-
#: admin/mscan/mscan-help-text.php:
|
7359 |
msgid ""
|
7360 |
-
"Files that are larger than
|
7361 |
-
"scan and can be scanned using a Skipped File
|
|
|
|
|
7362 |
msgstr ""
|
7363 |
|
7364 |
-
#: admin/mscan/mscan-help-text.php:
|
7365 |
msgid "Max Time Limit to Scan"
|
7366 |
msgstr ""
|
7367 |
|
7368 |
-
#: admin/mscan/mscan-help-text.php:
|
7369 |
msgid ""
|
7370 |
"The default time limit for script execution on most web hosts is 300 "
|
7371 |
"seconds. The default time limit setting for MScan scanning is also set to "
|
@@ -7373,11 +7504,11 @@ msgid ""
|
|
7373 |
"than 300 seconds."
|
7374 |
msgstr ""
|
7375 |
|
7376 |
-
#: admin/mscan/mscan-help-text.php:
|
7377 |
msgid "Exclude Individual Folders"
|
7378 |
msgstr ""
|
7379 |
|
7380 |
-
#: admin/mscan/mscan-help-text.php:
|
7381 |
msgid ""
|
7382 |
"Enter relative folder paths one folder path per line. A relative folder path "
|
7383 |
"is this: /some-folder/some-subfolder. A literal path would be the full "
|
@@ -7390,121 +7521,144 @@ msgid ""
|
|
7390 |
"particular cache folder under the wp-content folder."
|
7391 |
msgstr ""
|
7392 |
|
7393 |
-
#: admin/mscan/mscan-help-text.php:
|
7394 |
msgid "Scan Database"
|
7395 |
msgstr ""
|
7396 |
|
7397 |
-
#: admin/mscan/mscan-help-text.php:
|
7398 |
msgid ""
|
7399 |
"When Database scan is turned on your WordPress database will be scanned for "
|
7400 |
"suspicious code."
|
7401 |
msgstr ""
|
7402 |
|
7403 |
-
#: admin/mscan/mscan-help-text.php:
|
7404 |
-
msgid "Scan Image Files (Stegosploit|Exif Hack)"
|
7405 |
-
msgstr ""
|
7406 |
-
|
7407 |
-
#: admin/mscan/mscan-help-text.php:41
|
7408 |
-
msgid ""
|
7409 |
-
"WARNING: Scanning image files may cause scanning to stop or fail. Most web "
|
7410 |
-
"hosts already have security protection against Stegosploit and Exif image "
|
7411 |
-
"hacks. It is recommended that you do not scan image files."
|
7412 |
-
msgstr ""
|
7413 |
-
|
7414 |
-
#: admin/mscan/mscan-help-text.php:41 admin/mscan/mscan.php:1100
|
7415 |
msgid "Scan Skipped Files Only"
|
7416 |
msgstr ""
|
7417 |
|
7418 |
-
#: admin/mscan/mscan-help-text.php:
|
7419 |
msgid ""
|
7420 |
-
"
|
7421 |
-
"
|
7422 |
-
"
|
7423 |
-
"MScan option settings
|
|
|
7424 |
msgstr ""
|
7425 |
|
7426 |
-
#: admin/mscan/mscan-help-text.php:
|
7427 |
msgid "Automatically Delete /tmp Files"
|
7428 |
msgstr ""
|
7429 |
|
7430 |
-
#: admin/mscan/mscan-help-text.php:
|
7431 |
msgid ""
|
7432 |
"When Delete Tmp Files is On, all temporary files will be deleted. Hackers "
|
7433 |
"commonly hide hacker files in the /tmp folder."
|
7434 |
msgstr ""
|
7435 |
|
7436 |
-
#: admin/mscan/mscan-help-text.php:
|
7437 |
msgid "Exclude /tmp Files"
|
7438 |
msgstr ""
|
7439 |
|
7440 |
-
#: admin/mscan/mscan-help-text.php:
|
7441 |
msgid ""
|
7442 |
"Enter 1 file name per line. Some web hosts store files such as, mysql.sock, ."
|
7443 |
"s.PGSQL.5432 and .per-user in the /tmp folder. These files cannot be deleted "
|
7444 |
"by MScan, but attempting to delete these files will generate php errors. To "
|
7445 |
"prevent php errors from occurring you would exclude files such as these "
|
7446 |
-
"using the MScan Exclude /tmp files option setting."
|
|
|
7447 |
msgstr ""
|
7448 |
|
7449 |
-
#: admin/mscan/mscan-help-text.php:
|
7450 |
-
msgid "Scheduled Scan Frequency
|
7451 |
msgstr ""
|
7452 |
|
7453 |
-
#: admin/mscan/mscan-help-text.php:
|
7454 |
msgid ""
|
7455 |
"You can choose to schedule ongoing automated scans. Note: The BPS Pro ARQ "
|
7456 |
"IDPS scanner is far superior to any/all Malware scanners including BPS Pro "
|
7457 |
-
"MScan.
|
7458 |
-
"
|
7459 |
-
msgstr ""
|
7460 |
-
|
7461 |
-
#: admin/mscan/mscan-help-text.php:41
|
7462 |
-
msgid "Scan Time Estimate Tool"
|
7463 |
-
msgstr ""
|
7464 |
-
|
7465 |
-
#: admin/mscan/mscan-help-text.php:41
|
7466 |
-
msgid ""
|
7467 |
-
"IMPORTANT: You can stop the scan time estimate if it hangs or is taking too "
|
7468 |
-
"long by clicking the Stop Scan button. This tool allows you to check the "
|
7469 |
-
"estimated total scan time of a scan based on your MScan option settings "
|
7470 |
-
"without actually performing/running a scan. Note: This tool does not affect "
|
7471 |
-
"or change any previous scan results except for the Total Scan Time, which "
|
7472 |
-
"will be changed to the estimated scan time. Example Usage: You can check or "
|
7473 |
-
"uncheck Hosting Account Root Folders checkboxes and change any other MScan "
|
7474 |
-
"option settings, save your MScan option settings and then run the Scan Time "
|
7475 |
-
"Estimate Tool to get the total estimated time that the actual scan will take."
|
7476 |
-
msgstr ""
|
7477 |
-
|
7478 |
-
#: admin/mscan/mscan-help-text.php:41
|
7479 |
-
msgid "Delete Scan Status Tool"
|
7480 |
-
msgstr ""
|
7481 |
-
|
7482 |
-
#: admin/mscan/mscan-help-text.php:41
|
7483 |
-
msgid ""
|
7484 |
-
"This tool allows you to delete all of the MScan Status option values. The "
|
7485 |
-
"Scan Completed timestamp, Total Scan Time, Total Files Scanned, Skipped "
|
7486 |
-
"Files, Suspicious Files and Suspicious DB Entries status values will be "
|
7487 |
-
"deleted and will either display blank or 0."
|
7488 |
-
msgstr ""
|
7489 |
-
|
7490 |
-
#: admin/mscan/mscan-help-text.php:41
|
7491 |
-
msgid "Delete DB Scan Data Tool"
|
7492 |
-
msgstr ""
|
7493 |
-
|
7494 |
-
#: admin/mscan/mscan-help-text.php:41
|
7495 |
-
msgid ""
|
7496 |
-
"This tool allows you to delete/reset all of the database scan data in the "
|
7497 |
-
"View|Ignore|Delete Suspicious Files and View|Ignore Suspicious DB Entries "
|
7498 |
-
"Forms. Note: Any/all changes you have made and saved in these Forms will be "
|
7499 |
-
"deleted. You may want to use BPS DB Backup and do a database backup before "
|
7500 |
-
"using this tool."
|
7501 |
msgstr ""
|
7502 |
|
7503 |
-
#: admin/mscan/mscan-help-text.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7504 |
msgid "View|Ignore|Delete Suspicious Files"
|
7505 |
msgstr ""
|
7506 |
|
7507 |
-
#: admin/mscan/mscan-help-text.php:
|
7508 |
msgid ""
|
7509 |
"This form allows you to view, ignore, unignore or delete suspicious and "
|
7510 |
"skipped files. If you are not sure if code is malicious or safe you can copy "
|
@@ -7515,11 +7669,11 @@ msgid ""
|
|
7515 |
"ignored file it will be scanned in future scans."
|
7516 |
msgstr ""
|
7517 |
|
7518 |
-
#: admin/mscan/mscan-help-text.php:
|
7519 |
msgid "View|Ignore Suspicious DB Entries"
|
7520 |
msgstr ""
|
7521 |
|
7522 |
-
#: admin/mscan/mscan-help-text.php:
|
7523 |
msgid ""
|
7524 |
"This form allows you to view, ignore or unignore suspicious DB Entries. "
|
7525 |
"Note: The view option displays the DB Table, Column, Row ID and the MScan "
|
@@ -7529,11 +7683,11 @@ msgid ""
|
|
7529 |
"When you unignore an ignored DB Entry it will be scanned in future scans."
|
7530 |
msgstr ""
|
7531 |
|
7532 |
-
#: admin/mscan/mscan-help-text.php:
|
7533 |
msgid "MScan Log General Information"
|
7534 |
msgstr ""
|
7535 |
|
7536 |
-
#: admin/mscan/mscan-help-text.php:
|
7537 |
msgid ""
|
7538 |
"Your MScan Log file is a plain text static file and not a dynamic file or "
|
7539 |
"dynamic display to keep your website resource usage at a bare minimum and "
|
@@ -7544,19 +7698,19 @@ msgid ""
|
|
7544 |
"a certain size (256KB, 500KB or 1MB)."
|
7545 |
msgstr ""
|
7546 |
|
7547 |
-
#: admin/mscan/mscan-help-text.php:
|
7548 |
msgid "MScan Logging"
|
7549 |
msgstr ""
|
7550 |
|
7551 |
-
#: admin/mscan/mscan-help-text.php:
|
7552 |
msgid "Logs extensive details about each scan that you run."
|
7553 |
msgstr ""
|
7554 |
|
7555 |
-
#: admin/mscan/mscan-help-text.php:
|
7556 |
msgid "MScan Log File Size"
|
7557 |
msgstr ""
|
7558 |
|
7559 |
-
#: admin/mscan/mscan-help-text.php:
|
7560 |
msgid ""
|
7561 |
"Displays the size of your MScan Log file. If your log file is larger than "
|
7562 |
"2MB then you will see a Red warning message displayed: The S-Monitor Email "
|
@@ -7566,17 +7720,17 @@ msgid ""
|
|
7566 |
"contents of this Log file."
|
7567 |
msgstr ""
|
7568 |
|
7569 |
-
#: admin/mscan/mscan-help-text.php:
|
7570 |
msgid "MScan Log Last Modified Time"
|
7571 |
msgstr ""
|
7572 |
|
7573 |
-
#: admin/mscan/mscan-help-text.php:
|
7574 |
msgid ""
|
7575 |
"The Reset Last Modified Time in DB option/feature is currently completely "
|
7576 |
"automated and does not require any manual steps performed by you."
|
7577 |
msgstr ""
|
7578 |
|
7579 |
-
#: admin/mscan/mscan-help-text.php:
|
7580 |
msgid ""
|
7581 |
"Clicking the Delete Log button will delete the entire contents of your MScan "
|
7582 |
"Log File. If you have setup S-Monitor Email Alerting & Log Options then the "
|
@@ -7584,560 +7738,581 @@ msgid ""
|
|
7584 |
"MScan Log file exceeds 2MB in size."
|
7585 |
msgstr ""
|
7586 |
|
7587 |
-
#: admin/mscan/mscan.php:
|
7588 |
-
msgid "
|
7589 |
-
msgstr ""
|
7590 |
-
|
7591 |
-
#: admin/mscan/mscan.php:61
|
7592 |
-
msgid ""
|
7593 |
-
"Most likely your web host saw the pattern matching code in the MScan /"
|
7594 |
-
"bulletproof-security/admin/htaccess/mscan-pattern-match.php file as "
|
7595 |
-
"malicious and has either deleted the file or made the file or folder "
|
7596 |
-
"unreadable."
|
7597 |
msgstr ""
|
7598 |
|
7599 |
-
#: admin/mscan/mscan.php:
|
7600 |
msgid ""
|
7601 |
-
"
|
7602 |
-
"
|
|
|
|
|
|
|
7603 |
msgstr ""
|
7604 |
|
7605 |
-
#: admin/mscan/mscan.php:
|
7606 |
-
msgid "
|
7607 |
msgstr ""
|
7608 |
|
7609 |
-
#: admin/mscan/mscan.php:
|
7610 |
msgid ""
|
7611 |
-
"
|
7612 |
-
"
|
7613 |
-
"
|
7614 |
-
"
|
7615 |
-
"time calculations are pending in a future version of BPS to accomodate "
|
7616 |
-
"open_basedir if you would like to continue to use open_basedir. "
|
7617 |
-
"Recommendation: disable open_basedir in your server php.ini file or custom "
|
7618 |
-
"php.ini file."
|
7619 |
-
msgstr ""
|
7620 |
-
|
7621 |
-
#: admin/mscan/mscan.php:116 admin/mscan/mscan.php:1800
|
7622 |
-
#: admin/mscan/mscan.php:1802
|
7623 |
-
msgid "MScan Log"
|
7624 |
msgstr ""
|
7625 |
|
7626 |
-
#: admin/mscan/mscan.php:
|
7627 |
-
msgid "MScan
|
7628 |
msgstr ""
|
7629 |
|
7630 |
-
#: admin/mscan/mscan.php:
|
7631 |
msgid ""
|
7632 |
-
"
|
7633 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
7634 |
msgstr ""
|
7635 |
|
7636 |
-
#: admin/mscan/mscan.php:
|
7637 |
-
msgid ""
|
7638 |
-
"Get real-time automated security protection that is far superior to all "
|
7639 |
-
"malware scanners: "
|
7640 |
-
msgstr ""
|
7641 |
-
|
7642 |
-
#: admin/mscan/mscan.php:127
|
7643 |
-
msgid "MScan Disclaimer:"
|
7644 |
-
msgstr ""
|
7645 |
-
|
7646 |
-
#: admin/mscan/mscan.php:127
|
7647 |
-
msgid ""
|
7648 |
-
"MScan is a very sensitive scanner that will detect hacker's code and files "
|
7649 |
-
"that other WordPress malware scanners will not detect, but unfortunately "
|
7650 |
-
"that also means that MScan will detect a lot of false-positives. The "
|
7651 |
-
"majority of things that MScan detects as suspicious are not going to be "
|
7652 |
-
"hacker's code or files and can be ignored using the Ignore File or Ignore DB "
|
7653 |
-
"Entry in the View|Ignore|Delete Suspicious Files and View|Ignore Suspicious "
|
7654 |
-
"DB Entries Forms below. For additional help information click this link: "
|
7655 |
-
msgstr ""
|
7656 |
-
|
7657 |
-
#: admin/mscan/mscan.php:127 admin/mscan/mscan.php:145
|
7658 |
-
#: includes/hud-dismiss-functions.php:627
|
7659 |
-
msgid "MScan Malware Scanner Guide"
|
7660 |
-
msgstr ""
|
7661 |
-
|
7662 |
-
#: admin/mscan/mscan.php:146
|
7663 |
-
msgid "MScan Troubleshooting & Code Posting"
|
7664 |
-
msgstr ""
|
7665 |
-
|
7666 |
-
#: admin/mscan/mscan.php:187
|
7667 |
-
msgid "The MScan Database Table: "
|
7668 |
-
msgstr ""
|
7669 |
-
|
7670 |
-
#: admin/mscan/mscan.php:187
|
7671 |
-
msgid " data has been deleted."
|
7672 |
msgstr ""
|
7673 |
|
7674 |
-
#: admin/mscan/mscan.php:
|
7675 |
msgid ""
|
7676 |
-
"
|
7677 |
-
"
|
7678 |
-
"
|
7679 |
-
"
|
7680 |
-
msgstr ""
|
7681 |
-
|
7682 |
-
#: admin/mscan/mscan.php:264 admin/mscan/mscan.php:326
|
7683 |
-
#: admin/mscan/mscan.php:581 admin/mscan/mscan.php:852
|
7684 |
-
msgid "Skipped file scanning is turned On. Only skipped files will be scanned."
|
7685 |
msgstr ""
|
7686 |
|
7687 |
-
#: admin/mscan/mscan.php:
|
7688 |
-
#: admin/mscan/mscan.php:433 admin/mscan/mscan.php:523
|
7689 |
-
#: admin/mscan/mscan.php:860
|
7690 |
msgid ""
|
7691 |
-
"
|
7692 |
-
"
|
7693 |
msgstr ""
|
7694 |
|
7695 |
-
#: admin/mscan/mscan.php:
|
7696 |
-
msgid ""
|
7697 |
-
"MScan scanning has been stopped. Note: The Stop Scan button also stops the "
|
7698 |
-
"Scan Time Estimate Tool from calculating estimated scan time."
|
7699 |
msgstr ""
|
7700 |
|
7701 |
-
#: admin/mscan/mscan.php:
|
7702 |
-
|
7703 |
-
"
|
7704 |
-
"was exceeded. If it takes longer than 30 seconds to calculate total scan "
|
7705 |
-
"time, an additional 30 seconds will be added to the scan time calculation "
|
7706 |
-
"time until actual file scanning starts. Click the Refresh button to refresh "
|
7707 |
-
"the MScan Progress Bar if it is not automatically refreshed. If you see this "
|
7708 |
-
"message more than five times, click the Stop Scan button to stop the scan. "
|
7709 |
-
"Either you are attempting to scan too many files at one time or the scan "
|
7710 |
-
"time calculation is stuck in a time reset loop. Check your MScan Log file to "
|
7711 |
-
"see if the the estimated scan time was successfully logged."
|
7712 |
msgstr ""
|
7713 |
|
7714 |
-
#: admin/mscan/mscan.php:
|
7715 |
-
|
|
|
7716 |
msgstr ""
|
7717 |
|
7718 |
-
#: admin/mscan/mscan.php:
|
7719 |
-
|
7720 |
-
"
|
7721 |
-
"setting time limit."
|
7722 |
msgstr ""
|
7723 |
|
7724 |
-
#: admin/mscan/mscan.php:
|
7725 |
-
|
7726 |
-
"
|
7727 |
-
"setting time limit is reached."
|
7728 |
msgstr ""
|
7729 |
|
7730 |
-
#: admin/mscan/mscan.php:
|
7731 |
-
msgid "
|
7732 |
msgstr ""
|
7733 |
|
7734 |
-
#: admin/mscan/mscan.php:
|
7735 |
-
msgid "
|
7736 |
msgstr ""
|
7737 |
|
7738 |
-
#: admin/mscan/mscan.php:
|
7739 |
-
msgid "
|
7740 |
msgstr ""
|
7741 |
|
7742 |
-
#: admin/mscan/mscan.php:
|
7743 |
-
msgid ""
|
7744 |
-
"MScan Scanning has started. You can leave the MScan page while a scan is in "
|
7745 |
-
"progress and the scan will continue until it is completed or you can open "
|
7746 |
-
"another Browser Tab/Window and leave this Browser Tab/Window open."
|
7747 |
msgstr ""
|
7748 |
|
7749 |
-
#: admin/mscan/mscan.php:
|
7750 |
-
msgid "
|
7751 |
msgstr ""
|
7752 |
|
7753 |
-
#: admin/mscan/mscan.php:
|
7754 |
msgid ""
|
7755 |
-
"
|
7756 |
-
"
|
7757 |
-
"Read Me help button."
|
7758 |
msgstr ""
|
7759 |
|
7760 |
-
#: admin/mscan/mscan.php:
|
7761 |
-
msgid "Suspicious code was detected in your database."
|
7762 |
-
msgstr ""
|
7763 |
-
|
7764 |
-
#: admin/mscan/mscan.php:385
|
7765 |
msgid ""
|
7766 |
-
"
|
7767 |
-
"
|
7768 |
-
"
|
|
|
7769 |
msgstr ""
|
7770 |
|
7771 |
-
#: admin/mscan/mscan.php:
|
7772 |
-
|
7773 |
-
"
|
7774 |
-
"view the MScan Log file."
|
7775 |
msgstr ""
|
7776 |
|
7777 |
-
#: admin/mscan/mscan.php:
|
7778 |
msgid ""
|
7779 |
-
"
|
7780 |
-
"
|
7781 |
msgstr ""
|
7782 |
|
7783 |
-
#: admin/mscan/mscan.php:
|
7784 |
-
msgid ""
|
7785 |
-
"The total estimated time of an actual scan based on your MScan option "
|
7786 |
-
"settings is: "
|
7787 |
msgstr ""
|
7788 |
|
7789 |
-
#: admin/mscan/mscan.php:
|
7790 |
msgid ""
|
7791 |
-
"
|
7792 |
-
"
|
7793 |
-
"
|
7794 |
-
"
|
7795 |
msgstr ""
|
7796 |
|
7797 |
-
#: admin/mscan/mscan.php:
|
7798 |
-
msgid ""
|
7799 |
-
"Skipped file scanning is turned On. The scan time estimate will be for "
|
7800 |
-
"scanning skipped files only."
|
7801 |
msgstr ""
|
7802 |
|
7803 |
-
#: admin/mscan/mscan.php:
|
7804 |
-
msgid ""
|
7805 |
-
"Calculating Estimated Scan Time. Notes: The Scan Time Estimate Tool does not "
|
7806 |
-
"affect or change any previous scan results except for the Total Scan Time, "
|
7807 |
-
"which will be changed to the estimated scan time. If the scan time estimate "
|
7808 |
-
"hangs or is taking too long click the Stop Scan button to stop calculating "
|
7809 |
-
"the estimated scan time."
|
7810 |
msgstr ""
|
7811 |
|
7812 |
-
#: admin/mscan/mscan.php:
|
7813 |
msgid ""
|
7814 |
-
"
|
7815 |
-
"
|
7816 |
-
"another Browser Tab/Window and leave this Browser Tab/Window open."
|
7817 |
-
msgstr ""
|
7818 |
-
|
7819 |
-
#: admin/mscan/mscan.php:741
|
7820 |
-
msgid "Click OK to start scanning or click Cancel."
|
7821 |
-
msgstr ""
|
7822 |
-
|
7823 |
-
#: admin/mscan/mscan.php:748
|
7824 |
-
msgid "Click OK to stop scanning or click Cancel."
|
7825 |
msgstr ""
|
7826 |
|
7827 |
-
#: admin/mscan/mscan.php:
|
7828 |
msgid "MScan Options & Tools"
|
7829 |
msgstr ""
|
7830 |
|
7831 |
-
#: admin/mscan/mscan.php:
|
7832 |
msgid "Save MScan Options"
|
7833 |
msgstr ""
|
7834 |
|
7835 |
-
#: admin/mscan/mscan.php:
|
7836 |
msgid ""
|
7837 |
"Skipped file scanning is turned On. There are no skipped files to be "
|
7838 |
"scanned. Either there really are not any skipped files to scan or you have "
|
7839 |
"not run a regular scan yet with the Skipped File Scan option turned Off."
|
7840 |
msgstr ""
|
7841 |
|
7842 |
-
#: admin/mscan/mscan.php:
|
7843 |
msgid "Warning: "
|
7844 |
msgstr ""
|
7845 |
|
7846 |
-
#: admin/mscan/mscan.php:
|
7847 |
msgid ""
|
7848 |
"On some web hosts (Known host issues: SiteGround, Cyon) turning On the "
|
7849 |
"\"Automatically Delete /tmp Files\" option setting will cause your website/"
|
7850 |
"server to crash. If your website/server does crash contact your web host "
|
7851 |
"support folks, tell them that you deleted /tmp files and your website/server "
|
7852 |
-
"has crashed."
|
|
|
|
|
7853 |
msgstr ""
|
7854 |
|
7855 |
-
#: admin/mscan/mscan.php:
|
7856 |
msgid "MScan Options saved."
|
7857 |
msgstr ""
|
7858 |
|
7859 |
-
#: admin/mscan/mscan.php:
|
|
|
|
|
|
|
|
|
7860 |
msgid "MScan Options"
|
7861 |
msgstr ""
|
7862 |
|
7863 |
-
#: admin/mscan/mscan.php:
|
7864 |
msgid "MScan Tools"
|
7865 |
msgstr ""
|
7866 |
|
7867 |
-
#: admin/mscan/mscan.php:
|
7868 |
msgid "Folder Name"
|
7869 |
msgstr ""
|
7870 |
|
7871 |
-
#: admin/mscan/mscan.php:
|
7872 |
msgid "Folder is not readable"
|
7873 |
msgstr ""
|
7874 |
|
7875 |
-
#: admin/mscan/mscan.php:
|
7876 |
msgid ""
|
7877 |
-
"This folder contains another WordPress website.
|
7878 |
-
"
|
|
|
|
|
7879 |
msgstr ""
|
7880 |
|
7881 |
-
#: admin/mscan/mscan.php:
|
7882 |
msgid "Max File Size Limit to Scan:"
|
7883 |
msgstr ""
|
7884 |
|
7885 |
-
#: admin/mscan/mscan.php:
|
7886 |
msgid "Max Time Limit to Scan:"
|
7887 |
msgstr ""
|
7888 |
|
7889 |
-
#: admin/mscan/mscan.php:
|
7890 |
msgid "Enter one folder path per line. Include folder slashes."
|
7891 |
msgstr ""
|
7892 |
|
7893 |
-
#: admin/mscan/mscan.php:
|
7894 |
msgid "Example:"
|
7895 |
msgstr ""
|
7896 |
|
7897 |
-
#: admin/mscan/mscan.php:
|
7898 |
-
#: admin/mscan/mscan.php:
|
7899 |
msgid "Click the MScan Read Me help button for more help info."
|
7900 |
msgstr ""
|
7901 |
|
7902 |
-
#: admin/mscan/mscan.php:
|
7903 |
msgid "Database Scan On"
|
7904 |
msgstr ""
|
7905 |
|
7906 |
-
#: admin/mscan/mscan.php:
|
7907 |
msgid "Database Scan Off"
|
7908 |
msgstr ""
|
7909 |
|
7910 |
-
#: admin/mscan/mscan.php:
|
7911 |
-
msgid "Image File Scan Off"
|
7912 |
-
msgstr ""
|
7913 |
-
|
7914 |
-
#: admin/mscan/mscan.php:1097
|
7915 |
-
msgid "Image File Scan On"
|
7916 |
-
msgstr ""
|
7917 |
-
|
7918 |
-
#: admin/mscan/mscan.php:1100
|
7919 |
msgid ""
|
7920 |
-
"When Skipped File Scan is On only skipped files will be scanned. Note:
|
7921 |
-
"
|
7922 |
-
"
|
7923 |
msgstr ""
|
7924 |
|
7925 |
-
#: admin/mscan/mscan.php:
|
7926 |
msgid "Skipped File Scan Off"
|
7927 |
msgstr ""
|
7928 |
|
7929 |
-
#: admin/mscan/mscan.php:
|
7930 |
msgid "Skipped File Scan On"
|
7931 |
msgstr ""
|
7932 |
|
7933 |
-
#: admin/mscan/mscan.php:
|
7934 |
msgid "Delete Tmp Files Off"
|
7935 |
msgstr ""
|
7936 |
|
7937 |
-
#: admin/mscan/mscan.php:
|
7938 |
msgid "Delete Tmp Files On"
|
7939 |
msgstr ""
|
7940 |
|
7941 |
-
#: admin/mscan/mscan.php:
|
7942 |
msgid "Enter one file name per line."
|
7943 |
msgstr ""
|
7944 |
|
7945 |
-
#: admin/mscan/mscan.php:
|
|
|
|
|
|
|
|
|
7946 |
msgid "Scheduled Scan Off"
|
7947 |
msgstr ""
|
7948 |
|
7949 |
-
#: admin/mscan/mscan.php:
|
7950 |
msgid "Run Scan Every 60 Minutes"
|
7951 |
msgstr ""
|
7952 |
|
7953 |
-
#: admin/mscan/mscan.php:
|
7954 |
msgid "Run Scan Every 3 Hours"
|
7955 |
msgstr ""
|
7956 |
|
7957 |
-
#: admin/mscan/mscan.php:
|
7958 |
msgid "Run Scan Every 6 Hours"
|
7959 |
msgstr ""
|
7960 |
|
7961 |
-
#: admin/mscan/mscan.php:
|
7962 |
msgid "Run Scan Every 12 Hours"
|
7963 |
msgstr ""
|
7964 |
|
7965 |
-
#: admin/mscan/mscan.php:
|
7966 |
msgid "Run Scan Every 24 Hours"
|
7967 |
msgstr ""
|
7968 |
|
7969 |
-
#: admin/mscan/mscan.php:
|
7970 |
msgid "Click OK to save MScan Options or click Cancel"
|
7971 |
msgstr ""
|
7972 |
|
7973 |
-
#: admin/mscan/mscan.php:
|
7974 |
msgid ""
|
7975 |
-
"
|
7976 |
-
"
|
7977 |
"\\n-------------------------------------------------------------\\n\\nThis "
|
7978 |
-
"tool
|
7979 |
-
"
|
7980 |
-
"This tool does not affect or change any previous scan results except for the "
|
7981 |
-
"Total Scan Time, which will be changed to the estimated scan time.\\n"
|
7982 |
-
"\\n-------------------------------------------------------------\\n"
|
7983 |
-
"\\nExample Usage: You can check or uncheck Hosting Account Root Folders "
|
7984 |
-
"checkboxes and change any other MScan option settings, save your MScan "
|
7985 |
-
"option settings and then run the Scan Time Estimate Tool to get the total "
|
7986 |
-
"estimated time that the actual scan will take. For additional help "
|
7987 |
-
"information click the MScan Read Me help button.\\n"
|
7988 |
"\\n-------------------------------------------------------------\\n\\nClick "
|
7989 |
-
"OK to
|
7990 |
msgstr ""
|
7991 |
|
7992 |
-
#: admin/mscan/mscan.php:
|
7993 |
msgid ""
|
7994 |
-
"
|
7995 |
-
"
|
7996 |
-
"
|
7997 |
-
"Files, Suspicious Files and Suspicious DB Entries status values will be "
|
7998 |
-
"deleted and will either display blank or 0. For additional help information "
|
7999 |
-
"click the MScan Read Me help button.\\n"
|
8000 |
-
"\\n-------------------------------------------------------------\\n\\nClick "
|
8001 |
-
"OK to delete scan status option values or click Cancel"
|
8002 |
msgstr ""
|
8003 |
|
8004 |
-
#: admin/mscan/mscan.php:
|
8005 |
msgid ""
|
8006 |
-
"
|
8007 |
-
"
|
8008 |
-
|
8009 |
-
|
8010 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8011 |
msgstr ""
|
8012 |
|
8013 |
-
#: admin/mscan/mscan.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8014 |
msgid " has been deleted."
|
8015 |
msgstr ""
|
8016 |
|
8017 |
-
#: admin/mscan/mscan.php:
|
8018 |
msgid ""
|
8019 |
" Current Status has been changed to Ignored File and this file will not be "
|
8020 |
"scanned in any future MScan Scans."
|
8021 |
msgstr ""
|
8022 |
|
8023 |
-
#: admin/mscan/mscan.php:
|
8024 |
msgid ""
|
8025 |
" Ignored File Status has been removed. The previous Status of the file will "
|
8026 |
"be displayed again and this file will be scanned in future MScan scans."
|
8027 |
msgstr ""
|
8028 |
|
8029 |
-
#: admin/mscan/mscan.php:
|
8030 |
msgid "Close File"
|
8031 |
msgstr ""
|
8032 |
|
8033 |
-
#: admin/mscan/mscan.php:
|
8034 |
-
#: admin/mscan/mscan.php:
|
8035 |
msgid "MScan Pattern Match"
|
8036 |
msgstr ""
|
8037 |
|
8038 |
-
#: admin/mscan/mscan.php:
|
8039 |
msgid ""
|
8040 |
"Only the MScan Pattern Match is displayed for images instead of the image "
|
8041 |
"file code."
|
8042 |
msgstr ""
|
8043 |
|
8044 |
-
#: admin/mscan/mscan.php:
|
8045 |
msgid ""
|
8046 |
"Opening image files to view image file code does not work well in a Browser."
|
8047 |
msgstr ""
|
8048 |
|
8049 |
-
#: admin/mscan/mscan.php:
|
8050 |
msgid ""
|
8051 |
"You can download suspicious image files and use a code editor like Notepad++ "
|
8052 |
"to check image file code for any malicious code."
|
8053 |
msgstr ""
|
8054 |
|
8055 |
-
#: admin/mscan/mscan.php:
|
8056 |
-
#: admin/mscan/mscan.php:
|
8057 |
msgid ""
|
8058 |
"If you are not sure what to check for or what is and is not malicious code "
|
8059 |
"then click the MScan Read Me help button."
|
8060 |
msgstr ""
|
8061 |
|
8062 |
-
#: admin/mscan/mscan.php:
|
8063 |
msgid ""
|
8064 |
"You can use your Browser's Search or Find feature to search the file "
|
8065 |
"contents/code displayed below using the MScan Pattern Match above for the "
|
8066 |
"suspicious code that was detected by MScan."
|
8067 |
msgstr ""
|
8068 |
|
8069 |
-
#: admin/mscan/mscan.php:
|
8070 |
msgid ""
|
8071 |
"You can download suspicious files if you would like to check the file "
|
8072 |
"contents/code more extensively with a code editor like Notepad++."
|
8073 |
msgstr ""
|
8074 |
|
8075 |
-
#: admin/mscan/mscan.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8076 |
msgid "Current Status"
|
8077 |
msgstr ""
|
8078 |
|
8079 |
-
#: admin/mscan/mscan.php:
|
8080 |
msgid "View<br>File"
|
8081 |
msgstr ""
|
8082 |
|
8083 |
-
#: admin/mscan/mscan.php:
|
8084 |
msgid "Ignore<br>File"
|
8085 |
msgstr ""
|
8086 |
|
8087 |
-
#: admin/mscan/mscan.php:
|
8088 |
msgid "Unignore<br>File"
|
8089 |
msgstr ""
|
8090 |
|
8091 |
-
#: admin/mscan/mscan.php:
|
8092 |
msgid "Delete<br>File"
|
8093 |
msgstr ""
|
8094 |
|
8095 |
-
#: admin/mscan/mscan.php:
|
|
|
8096 |
#: admin/system-info/system-info.php:988
|
8097 |
msgid "File Path"
|
8098 |
msgstr ""
|
8099 |
|
8100 |
-
#: admin/mscan/mscan.php:
|
8101 |
-
msgid "
|
8102 |
msgstr ""
|
8103 |
|
8104 |
-
#: admin/mscan/mscan.php:
|
8105 |
msgid "Scan<br>Time"
|
8106 |
msgstr ""
|
8107 |
|
8108 |
-
#: admin/mscan/mscan.php:
|
8109 |
msgid "Skipped File"
|
8110 |
msgstr ""
|
8111 |
|
8112 |
-
#: admin/mscan/mscan.php:
|
8113 |
msgid "Not Scanned"
|
8114 |
msgstr ""
|
8115 |
|
8116 |
-
#: admin/mscan/mscan.php:
|
|
|
8117 |
msgid "Ignored File"
|
8118 |
msgstr ""
|
8119 |
|
8120 |
-
#: admin/mscan/mscan.php:
|
8121 |
msgid "Suspicious File"
|
8122 |
msgstr ""
|
8123 |
|
8124 |
-
#: admin/mscan/mscan.php:
|
|
|
8125 |
msgid "View"
|
8126 |
msgstr ""
|
8127 |
|
8128 |
-
#: admin/mscan/mscan.php:
|
8129 |
msgid "Ignore"
|
8130 |
msgstr ""
|
8131 |
|
8132 |
-
#: admin/mscan/mscan.php:
|
8133 |
msgid "Unignore"
|
8134 |
msgstr ""
|
8135 |
|
8136 |
-
#: admin/mscan/mscan.php:
|
8137 |
msgid "No Suspicious Files were detected"
|
8138 |
msgstr ""
|
8139 |
|
8140 |
-
#: admin/mscan/mscan.php:
|
8141 |
msgid ""
|
8142 |
"View File Option: Selecting the View File Checkbox Form option will display "
|
8143 |
"the contents of the file that you have selected to view.\\n"
|
@@ -8157,45 +8332,45 @@ msgid ""
|
|
8157 |
"OK to proceed or click Cancel"
|
8158 |
msgstr ""
|
8159 |
|
8160 |
-
#: admin/mscan/mscan.php:
|
8161 |
msgid "Current Status has been changed to Ignored for DB Row ID"
|
8162 |
msgstr ""
|
8163 |
|
8164 |
-
#: admin/mscan/mscan.php:
|
8165 |
msgid "in DB Column"
|
8166 |
msgstr ""
|
8167 |
|
8168 |
-
#: admin/mscan/mscan.php:
|
8169 |
msgid "This DB Entry will not be scanned in any future MScan Scans."
|
8170 |
msgstr ""
|
8171 |
|
8172 |
-
#: admin/mscan/mscan.php:
|
8173 |
msgid "The Ignored DB Entry Status has been removed for DB Row ID"
|
8174 |
msgstr ""
|
8175 |
|
8176 |
-
#: admin/mscan/mscan.php:
|
8177 |
msgid ""
|
8178 |
"The previous Status of the DB Entry will be displayed again and this DB "
|
8179 |
"Entry will be scanned in future MScan scans."
|
8180 |
msgstr ""
|
8181 |
|
8182 |
-
#: admin/mscan/mscan.php:
|
8183 |
msgid "Close"
|
8184 |
msgstr ""
|
8185 |
|
8186 |
-
#: admin/mscan/mscan.php:
|
8187 |
msgid "Pharma Hack DB Table and Column"
|
8188 |
msgstr ""
|
8189 |
|
8190 |
-
#: admin/mscan/mscan.php:
|
8191 |
msgid "Pharma Hack cleanup/removal steps"
|
8192 |
msgstr ""
|
8193 |
|
8194 |
-
#: admin/mscan/mscan.php:
|
8195 |
msgid "Edit your theme's header.php file and delete this code: "
|
8196 |
msgstr ""
|
8197 |
|
8198 |
-
#: admin/mscan/mscan.php:
|
8199 |
msgid ""
|
8200 |
"Delete this file in your theme's root folder: nav.php. Login to your web "
|
8201 |
"host control panel, login to your WP Database using phpMyAdmin and delete "
|
@@ -8204,58 +8379,102 @@ msgid ""
|
|
8204 |
"any that you do see."
|
8205 |
msgstr ""
|
8206 |
|
8207 |
-
#: admin/mscan/mscan.php:
|
8208 |
msgid "DB Table, Column and Row ID"
|
8209 |
msgstr ""
|
8210 |
|
8211 |
-
#: admin/mscan/mscan.php:
|
8212 |
msgid "Steps to view the database data that MScan detected as suspicious"
|
8213 |
msgstr ""
|
8214 |
|
8215 |
-
#: admin/mscan/mscan.php:
|
8216 |
msgid ""
|
8217 |
"Login to your web host control panel, login to your WP Database using "
|
8218 |
"phpMyAdmin and check the data in the DB Table, Column and Row ID shown "
|
8219 |
"above. Note: Look for code that matches the MScan Pattern Match."
|
8220 |
msgstr ""
|
8221 |
|
8222 |
-
#: admin/mscan/mscan.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8223 |
msgid "View<br>DB Entry"
|
8224 |
msgstr ""
|
8225 |
|
8226 |
-
#: admin/mscan/mscan.php:
|
8227 |
msgid "Ignore<br>DB Entry"
|
8228 |
msgstr ""
|
8229 |
|
8230 |
-
#: admin/mscan/mscan.php:
|
8231 |
msgid "Unignore<br>DB Entry"
|
8232 |
msgstr ""
|
8233 |
|
8234 |
-
#: admin/mscan/mscan.php:
|
|
|
8235 |
msgid "DB Table"
|
8236 |
msgstr ""
|
8237 |
|
8238 |
-
#: admin/mscan/mscan.php:
|
|
|
8239 |
msgid "DB Column"
|
8240 |
msgstr ""
|
8241 |
|
8242 |
-
#: admin/mscan/mscan.php:
|
|
|
8243 |
msgid "DB Row ID"
|
8244 |
msgstr ""
|
8245 |
|
8246 |
-
#: admin/mscan/mscan.php:
|
|
|
|
|
|
|
|
|
8247 |
msgid "Ignored DB Entry"
|
8248 |
msgstr ""
|
8249 |
|
8250 |
-
#: admin/mscan/mscan.php:
|
8251 |
msgid "Suspicious DB Entry"
|
8252 |
msgstr ""
|
8253 |
|
8254 |
-
#: admin/mscan/mscan.php:
|
8255 |
msgid "No Suspicious DB Entries were detected"
|
8256 |
msgstr ""
|
8257 |
|
8258 |
-
#: admin/mscan/mscan.php:
|
8259 |
msgid ""
|
8260 |
"View DB Entry Option: Selecting the View DB Entry Checkbox Form option will "
|
8261 |
"display the contents of the DB Table, Column and Row ID that you have "
|
@@ -8273,79 +8492,356 @@ msgid ""
|
|
8273 |
"OK to proceed or click Cancel"
|
8274 |
msgstr ""
|
8275 |
|
8276 |
-
#: admin/mscan/mscan.php:
|
8277 |
msgid "MScan Log ~ "
|
8278 |
msgstr ""
|
8279 |
|
8280 |
-
#: admin/mscan/mscan.php:
|
8281 |
-
msgid ""
|
8282 |
-
"Logs MScan Settings, Completion Time, Memory Usage, Zip Backup File Name, "
|
8283 |
-
"Timestamp..."
|
8284 |
-
msgstr ""
|
8285 |
-
|
8286 |
-
#: admin/mscan/mscan.php:1826
|
8287 |
msgid "Click the Reset Last Modified Time in DB button"
|
8288 |
msgstr ""
|
8289 |
|
8290 |
-
#: admin/mscan/mscan.php:
|
8291 |
msgid "to set the"
|
8292 |
msgstr ""
|
8293 |
|
8294 |
-
#: admin/mscan/mscan.php:
|
8295 |
msgid "Last Modified Time in DB:"
|
8296 |
msgstr ""
|
8297 |
|
8298 |
-
#: admin/mscan/mscan.php:
|
8299 |
msgid "MScan Log File Size: "
|
8300 |
msgstr ""
|
8301 |
|
8302 |
-
#: admin/mscan/mscan.php:
|
8303 |
msgid ""
|
8304 |
"The S-Monitor Email Logging options will only send log files up to 2MB in "
|
8305 |
"size."
|
8306 |
msgstr ""
|
8307 |
|
8308 |
-
#: admin/mscan/mscan.php:
|
8309 |
msgid ""
|
8310 |
"Copy and paste the MScan Log file contents into a Notepad text file on your "
|
8311 |
"computer and save it."
|
8312 |
msgstr ""
|
8313 |
|
8314 |
-
#: admin/mscan/mscan.php:
|
8315 |
msgid "MScan Log Last Modified Time:"
|
8316 |
msgstr ""
|
8317 |
|
8318 |
-
#: admin/mscan/mscan.php:
|
8319 |
msgid "Last Modified Time in File:"
|
8320 |
msgstr ""
|
8321 |
|
8322 |
-
#: admin/mscan/mscan.php:
|
8323 |
msgid ""
|
8324 |
"Success! Your MScan Log has been deleted and replaced with a new blank MScan "
|
8325 |
"Log file."
|
8326 |
msgstr ""
|
8327 |
|
8328 |
-
#: admin/mscan/mscan.php:
|
8329 |
msgid "Clicking OK will delete the contents of your MScan Log file."
|
8330 |
msgstr ""
|
8331 |
|
8332 |
-
#: admin/mscan/mscan.php:
|
8333 |
msgid ""
|
8334 |
"The MScan Log File Was Not Found! Check that the file really exists here - /"
|
8335 |
msgstr ""
|
8336 |
|
8337 |
-
#: admin/mscan/mscan.php:
|
8338 |
msgid "/bps-backup/logs/mscan_log.txt and is named correctly."
|
8339 |
msgstr ""
|
8340 |
|
8341 |
-
#: admin/mscan/mscan.php:
|
8342 |
msgid "File Open and Write test successful! Your MScan Log file is writable."
|
8343 |
msgstr ""
|
8344 |
|
8345 |
-
#: admin/mscan/mscan.php:
|
8346 |
msgid "Success! Your MScan Log file has been updated."
|
8347 |
msgstr ""
|
8348 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8349 |
#: admin/security-log/security-log.php:40
|
8350 |
msgid "BulletProof Security ~ Security Log"
|
8351 |
msgstr ""
|
@@ -8782,9 +9278,9 @@ msgid ""
|
|
8782 |
msgstr ""
|
8783 |
|
8784 |
#: admin/security-log/security-log.php:383
|
8785 |
-
#: admin/security-log/security-log.php:516 admin/wizard/wizard.php:
|
8786 |
-
#: admin/wizard/wizard.php:
|
8787 |
-
#: admin/wizard/wizard.php:
|
8788 |
msgid "Error: The "
|
8789 |
msgstr ""
|
8790 |
|
@@ -10743,7 +11239,7 @@ msgstr ""
|
|
10743 |
msgid "Link Whisper Premium Plugin wp-admin BPSQSE AutoWhitelist successful"
|
10744 |
msgstr ""
|
10745 |
|
10746 |
-
#: admin/wizard/wizard-backup.php:
|
10747 |
msgid ""
|
10748 |
"Custom additional htaccess code was found in your current root htaccess "
|
10749 |
"file. Your root and wp-admin htaccess files have been backed up and zipped "
|
@@ -10752,19 +11248,19 @@ msgid ""
|
|
10752 |
"files.zip file to your computer."
|
10753 |
msgstr ""
|
10754 |
|
10755 |
-
#: admin/wizard/wizard-backup.php:
|
10756 |
msgid "Click this forum link: "
|
10757 |
msgstr ""
|
10758 |
|
10759 |
-
#: admin/wizard/wizard-backup.php:
|
10760 |
msgid "Setup Wizard Root and wp-admin htaccess File Backup"
|
10761 |
msgstr ""
|
10762 |
|
10763 |
-
#: admin/wizard/wizard-backup.php:
|
10764 |
msgid " for help information about what this means and what to do."
|
10765 |
msgstr ""
|
10766 |
|
10767 |
-
#: admin/wizard/wizard-backup.php:
|
10768 |
msgid ""
|
10769 |
" and select the Zip File Download Fix On setting for the Zile File Download "
|
10770 |
"Fix option. You should now be able to download the htaccess-files.zip file. "
|
@@ -10772,19 +11268,19 @@ msgid ""
|
|
10772 |
"above for what to do next."
|
10773 |
msgstr ""
|
10774 |
|
10775 |
-
#: admin/wizard/wizard-backup.php:
|
10776 |
msgid "Download htaccess-files.zip File"
|
10777 |
msgstr ""
|
10778 |
|
10779 |
-
#: admin/wizard/wizard-backup.php:
|
10780 |
msgid "Additional Plain Text htaccess file backups: "
|
10781 |
msgstr ""
|
10782 |
|
10783 |
-
#: admin/wizard/wizard-backup.php:
|
10784 |
msgid "Root htaccess File: "
|
10785 |
msgstr ""
|
10786 |
|
10787 |
-
#: admin/wizard/wizard-backup.php:
|
10788 |
msgid "wp-admin htaccess File: "
|
10789 |
msgstr ""
|
10790 |
|
@@ -10810,7 +11306,7 @@ msgid ""
|
|
10810 |
msgstr ""
|
10811 |
|
10812 |
#: admin/wizard/wizard-functions.php:111 admin/wizard/wizard-functions.php:633
|
10813 |
-
#: admin/wizard/wizard-functions.php:
|
10814 |
msgid ""
|
10815 |
"If your Server configuration is DSO you must first make some one-time manual "
|
10816 |
"changes to your website before running the Setup Wizard. Please click this "
|
@@ -10818,10 +11314,10 @@ msgid ""
|
|
10818 |
msgstr ""
|
10819 |
|
10820 |
#: admin/wizard/wizard-functions.php:111 admin/wizard/wizard-functions.php:633
|
10821 |
-
#: admin/wizard/wizard-functions.php:
|
10822 |
-
#: admin/wizard/wizard.php:
|
10823 |
-
#: admin/wizard/wizard.php:
|
10824 |
-
#: admin/wizard/wizard.php:
|
10825 |
msgid "DSO Setup Steps"
|
10826 |
msgstr ""
|
10827 |
|
@@ -10862,10 +11358,10 @@ msgid ""
|
|
10862 |
msgstr ""
|
10863 |
|
10864 |
#: admin/wizard/wizard-functions.php:607 admin/wizard/wizard-functions.php:616
|
10865 |
-
#: admin/wizard/wizard-functions.php:
|
10866 |
-
#: admin/wizard/wizard.php:
|
10867 |
-
#: admin/wizard/wizard.php:
|
10868 |
-
#: admin/wizard/wizard.php:
|
10869 |
msgid " DB Option created or updated Successfully!"
|
10870 |
msgstr ""
|
10871 |
|
@@ -10901,33 +11397,33 @@ msgid ""
|
|
10901 |
"allow wp-admin htaccess files."
|
10902 |
msgstr ""
|
10903 |
|
10904 |
-
#: admin/wizard/wizard-functions.php:
|
10905 |
msgid " wp-admin .htaccess File backup Successful!"
|
10906 |
msgstr ""
|
10907 |
|
10908 |
-
#: admin/wizard/wizard-functions.php:
|
10909 |
msgid "The default.htaccess Master htaccess file was created successfully."
|
10910 |
msgstr ""
|
10911 |
|
10912 |
-
#: admin/wizard/wizard-functions.php:
|
10913 |
msgid "Error: The default.htaccess Master htaccess file cannot be created."
|
10914 |
msgstr ""
|
10915 |
|
10916 |
-
#: admin/wizard/wizard-functions.php:
|
10917 |
msgid " Folder created Successfully!"
|
10918 |
msgstr ""
|
10919 |
|
10920 |
-
#: admin/wizard/wizard-functions.php:
|
10921 |
msgid ""
|
10922 |
"Security Log User Agent Filter Check Successful! 0 User Agent Filters to "
|
10923 |
"update."
|
10924 |
msgstr ""
|
10925 |
|
10926 |
-
#: admin/wizard/wizard-functions.php:
|
10927 |
msgid "Security Log User Agent Filter "
|
10928 |
msgstr ""
|
10929 |
|
10930 |
-
#: admin/wizard/wizard-functions.php:
|
10931 |
msgid " created or updated Successfully!"
|
10932 |
msgstr ""
|
10933 |
|
@@ -10949,7 +11445,7 @@ msgid ""
|
|
10949 |
"file, but was NOT found in BPS Custom Code. "
|
10950 |
msgstr ""
|
10951 |
|
10952 |
-
#: admin/wizard/wizard.php:160 includes/hud-dismiss-functions.php:
|
10953 |
msgid ""
|
10954 |
" for the steps to fix this Wordfence problem before running the Setup Wizard."
|
10955 |
msgstr ""
|
@@ -10960,11 +11456,11 @@ msgid ""
|
|
10960 |
"Code"
|
10961 |
msgstr ""
|
10962 |
|
10963 |
-
#: admin/wizard/wizard.php:194 admin/wizard/wizard.php:
|
10964 |
msgid " DB Table created Successfully!"
|
10965 |
msgstr ""
|
10966 |
|
10967 |
-
#: admin/wizard/wizard.php:197 admin/wizard/wizard.php:
|
10968 |
msgid "Error: Unable to create DB Table "
|
10969 |
msgstr ""
|
10970 |
|
@@ -11035,41 +11531,41 @@ msgid ""
|
|
11035 |
"maximum memory limit setting allowed by your Host."
|
11036 |
msgstr ""
|
11037 |
|
11038 |
-
#: admin/wizard/wizard.php:258 includes/functions.php:
|
11039 |
msgid ""
|
11040 |
"mod_authz_core is Loaded|Order, Allow, Deny directives are supported|BC: Yes|"
|
11041 |
"IfModule: Yes"
|
11042 |
msgstr ""
|
11043 |
|
11044 |
-
#: admin/wizard/wizard.php:
|
11045 |
msgid ""
|
11046 |
"Enable|Disable htaccess Files Option set to Enabled: mod_access_compat "
|
11047 |
"htaccess files will be created."
|
11048 |
msgstr ""
|
11049 |
|
11050 |
-
#: admin/wizard/wizard.php:
|
11051 |
msgid ""
|
11052 |
"mod_access_compat is Loaded|Order, Allow, Deny directives are supported|"
|
11053 |
"IfModule: No"
|
11054 |
msgstr ""
|
11055 |
|
11056 |
-
#: admin/wizard/wizard.php:
|
11057 |
msgid ""
|
11058 |
"Enable|Disable htaccess Files Option set to Disabled: All BPS htaccess "
|
11059 |
"features will be disabled."
|
11060 |
msgstr ""
|
11061 |
|
11062 |
-
#: admin/wizard/wizard.php:
|
11063 |
-
#: admin/wizard/wizard.php:
|
11064 |
-
#: admin/wizard/wizard.php:
|
11065 |
msgid "Pass! The "
|
11066 |
msgstr ""
|
11067 |
|
11068 |
-
#: admin/wizard/wizard.php:
|
11069 |
msgid " Folder is writable."
|
11070 |
msgstr ""
|
11071 |
|
11072 |
-
#: admin/wizard/wizard.php:
|
11073 |
msgid ""
|
11074 |
" Folder is NOT writable. If your Server type is DSO and the WP Filesystem "
|
11075 |
"API Method is NOT \"direct\" you can use the Setup Wizard, but you must "
|
@@ -11077,19 +11573,19 @@ msgid ""
|
|
11077 |
"Setup Wizard. Please click this Forum Link for instructions: "
|
11078 |
msgstr ""
|
11079 |
|
11080 |
-
#: admin/wizard/wizard.php:
|
11081 |
msgid ""
|
11082 |
" If your Server type is CGI check the folder permissions. Folder permissions "
|
11083 |
"should be either 755 or 705."
|
11084 |
msgstr ""
|
11085 |
|
11086 |
-
#: admin/wizard/wizard.php:
|
11087 |
-
#: admin/wizard/wizard.php:
|
11088 |
msgid " File is writable."
|
11089 |
msgstr ""
|
11090 |
|
11091 |
-
#: admin/wizard/wizard.php:
|
11092 |
-
#: admin/wizard/wizard.php:
|
11093 |
msgid ""
|
11094 |
" File is NOT writable. If your Server type is DSO and the WP Filesystem API "
|
11095 |
"Method is NOT \"direct\" you can use the Setup Wizard, but you must first "
|
@@ -11097,111 +11593,111 @@ msgid ""
|
|
11097 |
"Wizard. Please click this Forum Link for instructions: "
|
11098 |
msgstr ""
|
11099 |
|
11100 |
-
#: admin/wizard/wizard.php:
|
11101 |
-
#: admin/wizard/wizard.php:
|
11102 |
msgid ""
|
11103 |
" If your Server type is CGI check the file permissions. File permissions "
|
11104 |
"should be either 644 or 604."
|
11105 |
msgstr ""
|
11106 |
|
11107 |
-
#: admin/wizard/wizard.php:
|
11108 |
msgid "BPS Setup Verification & Error Checks"
|
11109 |
msgstr ""
|
11110 |
|
11111 |
-
#: admin/wizard/wizard.php:
|
11112 |
msgid ""
|
11113 |
"If you see all Green font messages displayed below, the Setup Wizard setup "
|
11114 |
"completed successfully."
|
11115 |
msgstr ""
|
11116 |
|
11117 |
-
#: admin/wizard/wizard.php:
|
11118 |
msgid ""
|
11119 |
"If you see any Red font or Blue font messages displayed below, click the "
|
11120 |
"Read Me help button above and read the \"Notes\" help section."
|
11121 |
msgstr ""
|
11122 |
|
11123 |
-
#: admin/wizard/wizard.php:
|
11124 |
msgid ""
|
11125 |
"Click the Read Me help button above for a list of recommended BPS Video "
|
11126 |
"Tutorials to watch."
|
11127 |
msgstr ""
|
11128 |
|
11129 |
-
#: admin/wizard/wizard.php:
|
11130 |
msgid "AutoFix (AutoWhitelist|AutoSetup|AutoCleanup)"
|
11131 |
msgstr ""
|
11132 |
|
11133 |
-
#: admin/wizard/wizard.php:
|
11134 |
msgid "BulletProof Security Database Tables Setup"
|
11135 |
msgstr ""
|
11136 |
|
11137 |
-
#: admin/wizard/wizard.php:
|
11138 |
msgid "BulletProof Security Core Folders Setup"
|
11139 |
msgstr ""
|
11140 |
|
11141 |
-
#: admin/wizard/wizard.php:
|
11142 |
msgid "Error: Unable to create Folder "
|
11143 |
msgstr ""
|
11144 |
|
11145 |
-
#: admin/wizard/wizard.php:
|
11146 |
msgid "BulletProof Security Core Files Setup"
|
11147 |
msgstr ""
|
11148 |
|
11149 |
-
#: admin/wizard/wizard.php:
|
11150 |
msgid " File created or updated Successfully!"
|
11151 |
msgstr ""
|
11152 |
|
11153 |
-
#: admin/wizard/wizard.php:
|
11154 |
msgid "Error: Unable to create or update File "
|
11155 |
msgstr ""
|
11156 |
|
11157 |
-
#: admin/wizard/wizard.php:
|
11158 |
msgid "BulletProof Security MScan Malware Scanner Setup"
|
11159 |
msgstr ""
|
11160 |
|
11161 |
-
#: admin/wizard/wizard.php:
|
11162 |
msgid "BulletProof Security DB Backup Setup"
|
11163 |
msgstr ""
|
11164 |
|
11165 |
-
#: admin/wizard/wizard.php:
|
11166 |
msgid "BulletProof Security Hidden Plugin Folders|Files (HPF) Setup"
|
11167 |
msgstr ""
|
11168 |
|
11169 |
-
#: admin/wizard/wizard.php:
|
11170 |
msgid ""
|
11171 |
"Hidden Plugin Folders|Files (HPF) DB Options created or updated Successfully!"
|
11172 |
msgstr ""
|
11173 |
|
11174 |
-
#: admin/wizard/wizard.php:
|
11175 |
msgid "BulletProof Security Security Log User Agent Filter Setup"
|
11176 |
msgstr ""
|
11177 |
|
11178 |
-
#: admin/wizard/wizard.php:
|
11179 |
msgid "BulletProof Security Email Alerting & Log File Options Setup"
|
11180 |
msgstr ""
|
11181 |
|
11182 |
-
#: admin/wizard/wizard.php:
|
11183 |
msgid "BulletProof Security Login Security & Monitoring Options Setup"
|
11184 |
msgstr ""
|
11185 |
|
11186 |
-
#: admin/wizard/wizard.php:
|
11187 |
msgid "BulletProof Security JTC-Lite Options Setup"
|
11188 |
msgstr ""
|
11189 |
|
11190 |
-
#: admin/wizard/wizard.php:
|
11191 |
msgid "BulletProof Security Force Strong Passwords Options Setup"
|
11192 |
msgstr ""
|
11193 |
|
11194 |
-
#: admin/wizard/wizard.php:
|
11195 |
msgid "The Setup Wizard has completed BPS Setup."
|
11196 |
msgstr ""
|
11197 |
|
11198 |
-
#: admin/wizard/wizard.php:
|
11199 |
msgid ""
|
11200 |
"Check the \"BPS Setup Verification & Error Checks\" section below for any "
|
11201 |
"errors in Red Font."
|
11202 |
msgstr ""
|
11203 |
|
11204 |
-
#: admin/wizard/wizard.php:
|
11205 |
msgid ""
|
11206 |
"Your existing root htaccess file has been backed up here: /wp-content/bps-"
|
11207 |
"backup/master-backups/root.htaccess-[Date-Timestamp]. If you run into a "
|
@@ -11209,64 +11705,64 @@ msgid ""
|
|
11209 |
"forum topic: "
|
11210 |
msgstr ""
|
11211 |
|
11212 |
-
#: admin/wizard/wizard.php:
|
11213 |
msgid "Setup Wizard Root htaccess File Backup"
|
11214 |
msgstr ""
|
11215 |
|
11216 |
-
#: admin/wizard/wizard.php:
|
11217 |
msgid "Setup Wizard Completion Time: "
|
11218 |
msgstr ""
|
11219 |
|
11220 |
-
#: admin/wizard/wizard.php:
|
11221 |
msgid "BulletProof Security ~ Setup Wizard"
|
11222 |
msgstr ""
|
11223 |
|
11224 |
-
#: admin/wizard/wizard.php:
|
11225 |
-
#: admin/wizard/wizard.php:
|
11226 |
msgid "Setup Wizard Export|Import"
|
11227 |
msgstr ""
|
11228 |
|
11229 |
-
#: admin/wizard/wizard.php:
|
11230 |
msgid "htaccess Files Disabled Notice: "
|
11231 |
msgstr ""
|
11232 |
|
11233 |
-
#: admin/wizard/wizard.php:
|
11234 |
msgid ""
|
11235 |
"BPS has detected that htaccess files cannot be used on your website/server. "
|
11236 |
"Click this "
|
11237 |
msgstr ""
|
11238 |
|
11239 |
-
#: admin/wizard/wizard.php:
|
11240 |
msgid ""
|
11241 |
" link for more information before running the Wizards. If you intentionally "
|
11242 |
"disabled htaccess files then disregard this Notice."
|
11243 |
msgstr ""
|
11244 |
|
11245 |
-
#: admin/wizard/wizard.php:
|
11246 |
msgid "Setup Wizard ~ "
|
11247 |
msgstr ""
|
11248 |
|
11249 |
-
#: admin/wizard/wizard.php:
|
11250 |
msgid "One-Click Complete Setup"
|
11251 |
msgstr ""
|
11252 |
|
11253 |
-
#: admin/wizard/wizard.php:
|
11254 |
msgid "Recommended Video Tutorials: "
|
11255 |
msgstr ""
|
11256 |
|
11257 |
-
#: admin/wizard/wizard.php:
|
11258 |
msgid "Security Log Video Tutorial"
|
11259 |
msgstr ""
|
11260 |
|
11261 |
-
#: admin/wizard/wizard.php:
|
11262 |
msgid "Setup Wizard Steps: "
|
11263 |
msgstr ""
|
11264 |
|
11265 |
-
#: admin/wizard/wizard.php:
|
11266 |
msgid "1. Click the Setup Wizard button."
|
11267 |
msgstr ""
|
11268 |
|
11269 |
-
#: admin/wizard/wizard.php:
|
11270 |
msgid ""
|
11271 |
"Setup Wizard Pre-Installation Checks are automatically performed and "
|
11272 |
"displayed on the Setup Wizard page. Green font messages mean everything is "
|
@@ -11277,67 +11773,67 @@ msgid ""
|
|
11277 |
"to be fixed before running the Setup Wizard."
|
11278 |
msgstr ""
|
11279 |
|
11280 |
-
#: admin/wizard/wizard.php:
|
11281 |
msgid ""
|
11282 |
"You can re-run the Setup Wizard again at any time. Your existing settings "
|
11283 |
"will NOT be overwritten and will be re-saved. Any new or additional settings "
|
11284 |
"that the Setup Wizard finds on your website will be saved/setup."
|
11285 |
msgstr ""
|
11286 |
|
11287 |
-
#: admin/wizard/wizard.php:
|
11288 |
msgid ""
|
11289 |
"When the Setup Wizard has completed you will see \"The Setup Wizard has "
|
11290 |
"completed BPS Setup.\""
|
11291 |
msgstr ""
|
11292 |
|
11293 |
-
#: admin/wizard/wizard.php:
|
11294 |
msgid ""
|
11295 |
"Your existing Root and wp-admin htaccess files are backed up before new Root "
|
11296 |
"and wp-admin htaccess files are created by the Setup Wizard. The BPS backup "
|
11297 |
"folder is here: "
|
11298 |
msgstr ""
|
11299 |
|
11300 |
-
#: admin/wizard/wizard.php:
|
11301 |
msgid ""
|
11302 |
" and the backed up htaccess file names are: root.htaccess and wpadmin."
|
11303 |
"htaccess."
|
11304 |
msgstr ""
|
11305 |
|
11306 |
-
#: admin/wizard/wizard.php:
|
11307 |
msgid "Setup Wizard & Overview Video Tutorial"
|
11308 |
msgstr ""
|
11309 |
|
11310 |
-
#: admin/wizard/wizard.php:
|
11311 |
msgid "Setup Wizard Options ~ "
|
11312 |
msgstr ""
|
11313 |
|
11314 |
-
#: admin/wizard/wizard.php:
|
11315 |
msgid ""
|
11316 |
"Click the Setup Wizard Options Read Me help button for help info about each "
|
11317 |
"option setting"
|
11318 |
msgstr ""
|
11319 |
|
11320 |
-
#: admin/wizard/wizard.php:
|
11321 |
msgid "Forum Help Links:"
|
11322 |
msgstr ""
|
11323 |
|
11324 |
-
#: admin/wizard/wizard.php:
|
11325 |
msgid "Go Daddy Managed WordPress Hosting (GDMW)"
|
11326 |
msgstr ""
|
11327 |
|
11328 |
-
#: admin/wizard/wizard.php:
|
11329 |
msgid "Enable|Disable htaccess Files"
|
11330 |
msgstr ""
|
11331 |
|
11332 |
-
#: admin/wizard/wizard.php:
|
11333 |
msgid "AutoFix Forum Topic"
|
11334 |
msgstr ""
|
11335 |
|
11336 |
-
#: admin/wizard/wizard.php:
|
11337 |
msgid "GDPR Compliance Forum Topic"
|
11338 |
msgstr ""
|
11339 |
|
11340 |
-
#: admin/wizard/wizard.php:
|
11341 |
msgid ""
|
11342 |
"Setup Wizard AutoFix is turned On by default. When AutoFix is turned On the "
|
11343 |
"Setup Wizard will automatically create htaccess whitelist rules in BPS "
|
@@ -11358,11 +11854,11 @@ msgid ""
|
|
11358 |
"AutoFix Debug information so that we can figure out what the problem is."
|
11359 |
msgstr ""
|
11360 |
|
11361 |
-
#: admin/wizard/wizard.php:
|
11362 |
msgid "GDPR Compliance (IP Address Logging On|Off)"
|
11363 |
msgstr ""
|
11364 |
|
11365 |
-
#: admin/wizard/wizard.php:
|
11366 |
msgid ""
|
11367 |
"The GDPR Compliance option setting is set to Off by default. Choosing the "
|
11368 |
"GDPR Compliance On option setting will disable IP address logging in all BPS "
|
@@ -11376,11 +11872,11 @@ msgid ""
|
|
11376 |
"at the top of this Read Me help window."
|
11377 |
msgstr ""
|
11378 |
|
11379 |
-
#: admin/wizard/wizard.php:
|
11380 |
msgid "Go Daddy Managed WordPress Hosting (GDMW):"
|
11381 |
msgstr ""
|
11382 |
|
11383 |
-
#: admin/wizard/wizard.php:
|
11384 |
msgid ""
|
11385 |
"This option is ONLY for a special type of Go Daddy Hosting account called "
|
11386 |
"\"Managed WordPress Hosting\" and is NOT for regular/standard Go Daddy "
|
@@ -11389,15 +11885,15 @@ msgid ""
|
|
11389 |
"section above for more information."
|
11390 |
msgstr ""
|
11391 |
|
11392 |
-
#: admin/wizard/wizard.php:
|
11393 |
msgid "Enable|Disable htaccess Files:"
|
11394 |
msgstr ""
|
11395 |
|
11396 |
-
#: admin/wizard/wizard.php:
|
11397 |
msgid "Before changing this option setting, click the "
|
11398 |
msgstr ""
|
11399 |
|
11400 |
-
#: admin/wizard/wizard.php:
|
11401 |
msgid ""
|
11402 |
" Forum Help Link at the top of this Read Me help window to find out exactly "
|
11403 |
"what this option setting does and when it should or should not be used. "
|
@@ -11405,22 +11901,22 @@ msgid ""
|
|
11405 |
"htaccess Files Enabled: Will enable all BPS htaccess freatures and files."
|
11406 |
msgstr ""
|
11407 |
|
11408 |
-
#: admin/wizard/wizard.php:
|
11409 |
msgid "Enable|Disable wp-admin BulletProof Mode"
|
11410 |
msgstr ""
|
11411 |
|
11412 |
-
#: admin/wizard/wizard.php:
|
11413 |
msgid ""
|
11414 |
"The default setting is already set to: wp-admin BulletProof Mode Enabled. If "
|
11415 |
"you would like to disable wp-admin BulletProof Mode select wp-admin "
|
11416 |
"BulletProof Mode Disabled."
|
11417 |
msgstr ""
|
11418 |
|
11419 |
-
#: admin/wizard/wizard.php:
|
11420 |
msgid "Zip File Download Fix (Incapsula, Proxy, Other Cause):"
|
11421 |
msgstr ""
|
11422 |
|
11423 |
-
#: admin/wizard/wizard.php:
|
11424 |
msgid ""
|
11425 |
"This option should only be set to On if you are seeing a 403 error and/or "
|
11426 |
"unable to download these Zip files: Custom Code Export Zip file, Login "
|
@@ -11436,11 +11932,11 @@ msgid ""
|
|
11436 |
"Firewall again."
|
11437 |
msgstr ""
|
11438 |
|
11439 |
-
#: admin/wizard/wizard.php:
|
11440 |
msgid "Multisite Hide|Display System Info Page for Subsites:"
|
11441 |
msgstr ""
|
11442 |
|
11443 |
-
#: admin/wizard/wizard.php:
|
11444 |
msgid ""
|
11445 |
"This option is for Network|Multisite sites only. Choosing Hide System Info "
|
11446 |
"Page will hide the System Info menu link under the BPS navigational menus. "
|
@@ -11448,11 +11944,11 @@ msgid ""
|
|
11448 |
"under the BPS navigational mensus."
|
11449 |
msgstr ""
|
11450 |
|
11451 |
-
#: admin/wizard/wizard.php:
|
11452 |
msgid "Network|Multisite Sitewide Login Security Settings"
|
11453 |
msgstr ""
|
11454 |
|
11455 |
-
#: admin/wizard/wizard.php:
|
11456 |
msgid ""
|
11457 |
"This option is for Network|Multisite sites only. This is an independent "
|
11458 |
"option Form that creates and saves Login Security DB option settings for all "
|
@@ -11469,11 +11965,11 @@ msgid ""
|
|
11469 |
"Reset, Sort DB Rows: Ascending - Show Oldest Login First."
|
11470 |
msgstr ""
|
11471 |
|
11472 |
-
#: admin/wizard/wizard.php:
|
11473 |
msgid "Network|Multisite Sitewide JTC-Lite Settings"
|
11474 |
msgstr ""
|
11475 |
|
11476 |
-
#: admin/wizard/wizard.php:
|
11477 |
msgid ""
|
11478 |
"This option is for Network|Multisite sites only. This is an independent "
|
11479 |
"option Form that creates and saves JTC-Lite DB option settings for all "
|
@@ -11488,11 +11984,11 @@ msgid ""
|
|
11488 |
"box on the Login Form."
|
11489 |
msgstr ""
|
11490 |
|
11491 |
-
#: admin/wizard/wizard.php:
|
11492 |
msgid "Network|Multisite Sitewide Force Strong Passwords Settings"
|
11493 |
msgstr ""
|
11494 |
|
11495 |
-
#: admin/wizard/wizard.php:
|
11496 |
msgid ""
|
11497 |
"This option is for Network|Multisite sites ONLY. This is an independent "
|
11498 |
"option Form that creates and saves FSP DB option settings for all Network "
|
@@ -11505,84 +12001,84 @@ msgid ""
|
|
11505 |
"all checked and Displayed Message/Error Message: default FSP message."
|
11506 |
msgstr ""
|
11507 |
|
11508 |
-
#: admin/wizard/wizard.php:
|
11509 |
msgid "AutoFix (AutoWhitelist|AutoSetup|AutoCleanup):"
|
11510 |
msgstr ""
|
11511 |
|
11512 |
-
#: admin/wizard/wizard.php:
|
11513 |
msgid "AutoFix On"
|
11514 |
msgstr ""
|
11515 |
|
11516 |
-
#: admin/wizard/wizard.php:
|
11517 |
msgid "AutoFix Off"
|
11518 |
msgstr ""
|
11519 |
|
11520 |
-
#: admin/wizard/wizard.php:
|
11521 |
msgid "GDPR Compliance (IP Address Logging On|Off):"
|
11522 |
msgstr ""
|
11523 |
|
11524 |
-
#: admin/wizard/wizard.php:
|
11525 |
msgid "GDPR Compliance Off"
|
11526 |
msgstr ""
|
11527 |
|
11528 |
-
#: admin/wizard/wizard.php:
|
11529 |
msgid "GDPR Compliance On"
|
11530 |
msgstr ""
|
11531 |
|
11532 |
-
#: admin/wizard/wizard.php:
|
11533 |
msgid "No (default setting)"
|
11534 |
msgstr ""
|
11535 |
|
11536 |
-
#: admin/wizard/wizard.php:
|
11537 |
msgid "Yes (ONLY if you have Managed WordPress Hosting)"
|
11538 |
msgstr ""
|
11539 |
|
11540 |
-
#: admin/wizard/wizard.php:
|
11541 |
msgid ""
|
11542 |
"CAUTION: Click the Read Me help button before changing this option setting"
|
11543 |
msgstr ""
|
11544 |
|
11545 |
-
#: admin/wizard/wizard.php:
|
11546 |
msgid "htaccess Files Enabled"
|
11547 |
msgstr ""
|
11548 |
|
11549 |
-
#: admin/wizard/wizard.php:
|
11550 |
msgid "htaccess Files Disabled"
|
11551 |
msgstr ""
|
11552 |
|
11553 |
-
#: admin/wizard/wizard.php:
|
11554 |
msgid "Enable|Disable wp-admin BulletProof Mode:"
|
11555 |
msgstr ""
|
11556 |
|
11557 |
-
#: admin/wizard/wizard.php:
|
11558 |
msgid "wp-admin BulletProof Mode Enabled"
|
11559 |
msgstr ""
|
11560 |
|
11561 |
-
#: admin/wizard/wizard.php:
|
11562 |
msgid "wp-admin BulletProof Mode Disabled"
|
11563 |
msgstr ""
|
11564 |
|
11565 |
-
#: admin/wizard/wizard.php:
|
11566 |
msgid "Zip File Download Fix Off"
|
11567 |
msgstr ""
|
11568 |
|
11569 |
-
#: admin/wizard/wizard.php:
|
11570 |
msgid "Zip File Download Fix On"
|
11571 |
msgstr ""
|
11572 |
|
11573 |
-
#: admin/wizard/wizard.php:
|
11574 |
msgid "Display System Info Page"
|
11575 |
msgstr ""
|
11576 |
|
11577 |
-
#: admin/wizard/wizard.php:
|
11578 |
msgid "Hide System Info Page"
|
11579 |
msgstr ""
|
11580 |
|
11581 |
-
#: admin/wizard/wizard.php:
|
11582 |
msgid "Network|Multisite Sitewide JTC Anti-Spam|Anti-Hacker Settings"
|
11583 |
msgstr ""
|
11584 |
|
11585 |
-
#: admin/wizard/wizard.php:
|
11586 |
msgid ""
|
11587 |
"The Zip File Download Fix option is set to On. This option should only be "
|
11588 |
"set to On if you are unable to download these Zip files: Custom Code Export "
|
@@ -11590,15 +12086,15 @@ msgid ""
|
|
11590 |
"htaccess file backup Zip file."
|
11591 |
msgstr ""
|
11592 |
|
11593 |
-
#: admin/wizard/wizard.php:
|
11594 |
msgid "The Zip File Download Fix option is set to Off."
|
11595 |
msgstr ""
|
11596 |
|
11597 |
-
#: admin/wizard/wizard.php:
|
11598 |
msgid "Multisite Hide|Display System Info Page for Subsites option saved."
|
11599 |
msgstr ""
|
11600 |
|
11601 |
-
#: admin/wizard/wizard.php:
|
11602 |
msgid ""
|
11603 |
"Error: Your Network site exceeds the default WP criteria for a large network "
|
11604 |
"site. Either you have more than 10,000 users or more than 10,000 sites. "
|
@@ -11606,11 +12102,11 @@ msgid ""
|
|
11606 |
"org for assistance."
|
11607 |
msgstr ""
|
11608 |
|
11609 |
-
#: admin/wizard/wizard.php:
|
11610 |
msgid " LSM DB Options created or updated Successfully!"
|
11611 |
msgstr ""
|
11612 |
|
11613 |
-
#: admin/wizard/wizard.php:
|
11614 |
msgid ""
|
11615 |
"Error: Your Network site exceeds the default WP criteria for a large network "
|
11616 |
"site. Either you have more than 10,000 users or more than 10,000 sites. "
|
@@ -11618,31 +12114,31 @@ msgid ""
|
|
11618 |
"line: Setup Wizard Options Large Network Site Help."
|
11619 |
msgstr ""
|
11620 |
|
11621 |
-
#: admin/wizard/wizard.php:
|
11622 |
msgid " JTC DB Options created or updated Successfully!"
|
11623 |
msgstr ""
|
11624 |
|
11625 |
-
#: admin/wizard/wizard.php:
|
11626 |
msgid " FSP DB Options created or updated Successfully!"
|
11627 |
msgstr ""
|
11628 |
|
11629 |
-
#: admin/wizard/wizard.php:
|
11630 |
msgid "Setup Wizard Export|Import ~ "
|
11631 |
msgstr ""
|
11632 |
|
11633 |
-
#: admin/wizard/wizard.php:
|
11634 |
msgid "Export or Import BPS plugin option settings."
|
11635 |
msgstr ""
|
11636 |
|
11637 |
-
#: admin/wizard/wizard.php:
|
11638 |
msgid "GDMW Hosting"
|
11639 |
msgstr ""
|
11640 |
|
11641 |
-
#: admin/wizard/wizard.php:
|
11642 |
msgid "Setup Wizard Export"
|
11643 |
msgstr ""
|
11644 |
|
11645 |
-
#: admin/wizard/wizard.php:
|
11646 |
msgid ""
|
11647 |
"The Setup Wizard Export feature exports all BPS plugin option settings "
|
11648 |
"except for website specific settings that need to be setup by running the "
|
@@ -11650,11 +12146,11 @@ msgid ""
|
|
11650 |
"new website. The name of the exported zip file is: bps-settings-export.zip"
|
11651 |
msgstr ""
|
11652 |
|
11653 |
-
#: admin/wizard/wizard.php:
|
11654 |
msgid "Setup Wizard Import"
|
11655 |
msgstr ""
|
11656 |
|
11657 |
-
#: admin/wizard/wizard.php:
|
11658 |
msgid ""
|
11659 |
"To import BPS plugin option settings click the Choose File button, navigate "
|
11660 |
"to where you downloaded/saved the bps-settings-export.zip file on your "
|
@@ -11668,11 +12164,11 @@ msgid ""
|
|
11668 |
"code or remove it from BPS Custom Code."
|
11669 |
msgstr ""
|
11670 |
|
11671 |
-
#: admin/wizard/wizard.php:
|
11672 |
msgid "Network|Multisite Help Info"
|
11673 |
msgstr ""
|
11674 |
|
11675 |
-
#: admin/wizard/wizard.php:
|
11676 |
msgid ""
|
11677 |
"Setup Wizard Export|Import works for Network|Multisite site types, but only "
|
11678 |
"the Primary site's BPS plugin option settings are exported and imported. BPS "
|
@@ -11684,17 +12180,17 @@ msgid ""
|
|
11684 |
"option settings from the Primary site to all Subsites."
|
11685 |
msgstr ""
|
11686 |
|
11687 |
-
#: admin/wizard/wizard.php:
|
11688 |
msgid ""
|
11689 |
"Clicking OK will Import BPS plugin settings from the bps-settings-export.zip "
|
11690 |
"file on your computer."
|
11691 |
msgstr ""
|
11692 |
|
11693 |
-
#: admin/wizard/wizard.php:
|
11694 |
msgid "Click OK to Import BPS plugin settings or click Cancel."
|
11695 |
msgstr ""
|
11696 |
|
11697 |
-
#: admin/wizard/wizard.php:
|
11698 |
msgid ""
|
11699 |
"Clicking OK will Export your BPS plugin settings into the bps-settings-"
|
11700 |
"export.zip file, which you can then download to your computer by clicking "
|
@@ -11702,33 +12198,33 @@ msgid ""
|
|
11702 |
"message."
|
11703 |
msgstr ""
|
11704 |
|
11705 |
-
#: admin/wizard/wizard.php:
|
11706 |
msgid "Click OK to Export BPS plugin settings or click Cancel."
|
11707 |
msgstr ""
|
11708 |
|
11709 |
-
#: admin/wizard/wizard.php:
|
11710 |
msgid ""
|
11711 |
"BPS plugin option settings exported successfully. Click the Download Zip "
|
11712 |
"Export button to download the Setup Wizard Export zip file: bps-settings-"
|
11713 |
"export.zip."
|
11714 |
msgstr ""
|
11715 |
|
11716 |
-
#: admin/wizard/wizard.php:
|
11717 |
msgid ""
|
11718 |
" and select the Zip File Download Fix On setting for the Zile File Download "
|
11719 |
"Fix option. You should now be able to download the bps-settings-export.zip "
|
11720 |
"file."
|
11721 |
msgstr ""
|
11722 |
|
11723 |
-
#: admin/wizard/wizard.php:
|
11724 |
msgid "BPS plugin settings imported successfully."
|
11725 |
msgstr ""
|
11726 |
|
11727 |
-
#: admin/wizard/wizard.php:
|
11728 |
msgid "IMPORTANT: Run the BPS Setup Wizard now."
|
11729 |
msgstr ""
|
11730 |
|
11731 |
-
#: admin/wizard/wizard.php:
|
11732 |
msgid ""
|
11733 |
"After running the Setup Wizard go to the BPS Security > htaccess Core > "
|
11734 |
"Custom Code tab page and check all of your custom htaccess code for any "
|
@@ -11738,28 +12234,28 @@ msgid ""
|
|
11738 |
"code or remove it from BPS Custom Code."
|
11739 |
msgstr ""
|
11740 |
|
11741 |
-
#: admin/wizard/wizard.php:
|
11742 |
msgid ""
|
11743 |
"Either the bps-settings-export.zip file has not been selected yet for Import "
|
11744 |
"or the file "
|
11745 |
msgstr ""
|
11746 |
|
11747 |
-
#: admin/wizard/wizard.php:
|
11748 |
msgid ""
|
11749 |
" is not a valid Setup Wizard Export file or file name. The BPS Setup Wizard "
|
11750 |
"Import feature only allows the bps-settings-export.zip file to be Uploaded/"
|
11751 |
"Imported. The filename MUST be named: bps-settings-export.zip."
|
11752 |
msgstr ""
|
11753 |
|
11754 |
-
#: bulletproof-security.php:
|
11755 |
msgid "Uninstall Options"
|
11756 |
msgstr ""
|
11757 |
|
11758 |
-
#: bulletproof-security.php:
|
11759 |
msgid "Forum - Support"
|
11760 |
msgstr ""
|
11761 |
|
11762 |
-
#: bulletproof-security.php:
|
11763 |
msgid "Upgrade"
|
11764 |
msgstr ""
|
11765 |
|
@@ -11801,7 +12297,7 @@ msgstr ""
|
|
11801 |
|
11802 |
#: includes/functions.php:349 includes/functions.php:587
|
11803 |
#: includes/functions.php:654 includes/hud-autofix-setup.php:70
|
11804 |
-
#: includes/hud-dismiss-functions.php:
|
11805 |
msgid "Go to the "
|
11806 |
msgstr ""
|
11807 |
|
@@ -11847,14 +12343,14 @@ msgid ""
|
|
11847 |
msgstr ""
|
11848 |
|
11849 |
#: includes/functions.php:387 includes/hud-autofix-setup.php:70
|
11850 |
-
#: includes/hud-dismiss-functions.php:
|
11851 |
-
#: includes/hud-dismiss-functions.php:
|
11852 |
-
#: includes/hud-dismiss-functions.php:
|
11853 |
-
#: includes/hud-dismiss-functions.php:
|
11854 |
-
#: includes/hud-dismiss-functions.php:
|
11855 |
-
#: includes/hud-dismiss-functions.php:
|
11856 |
-
#: includes/hud-dismiss-functions.php:
|
11857 |
-
#: includes/hud-dismiss-functions.php:
|
11858 |
msgid ""
|
11859 |
"To Dismiss this Notice click the Dismiss Notice button below. To Reset "
|
11860 |
"Dismiss Notices click the Reset|Recheck Dismiss Notices button on the Custom "
|
@@ -11862,29 +12358,29 @@ msgid ""
|
|
11862 |
msgstr ""
|
11863 |
|
11864 |
#: includes/functions.php:387 includes/hud-autofix-setup.php:70
|
11865 |
-
#: includes/hud-dismiss-functions.php:
|
11866 |
-
#: includes/hud-dismiss-functions.php:
|
11867 |
-
#: includes/hud-dismiss-functions.php:
|
11868 |
-
#: includes/hud-dismiss-functions.php:
|
11869 |
-
#: includes/hud-dismiss-functions.php:
|
11870 |
-
#: includes/hud-dismiss-functions.php:
|
11871 |
-
#: includes/hud-dismiss-functions.php:
|
11872 |
-
#: includes/hud-dismiss-functions.php:
|
11873 |
-
#: includes/hud-dismiss-functions.php:
|
11874 |
-
#: includes/hud-dismiss-functions.php:
|
11875 |
-
#: includes/hud-dismiss-functions.php:
|
11876 |
-
#: includes/hud-dismiss-functions.php:
|
11877 |
-
#: includes/hud-dismiss-functions.php:
|
11878 |
-
#: includes/hud-dismiss-functions.php:
|
11879 |
-
#: includes/hud-dismiss-functions.php:
|
11880 |
-
#: includes/hud-dismiss-functions.php:
|
11881 |
-
#: includes/hud-dismiss-functions.php:
|
11882 |
-
#: includes/hud-dismiss-functions.php:
|
11883 |
-
#: includes/hud-dismiss-functions.php:
|
11884 |
-
#: includes/hud-dismiss-functions.php:
|
11885 |
-
#: includes/hud-dismiss-functions.php:
|
11886 |
-
#: includes/hud-dismiss-functions.php:
|
11887 |
-
#: includes/hud-dismiss-functions.php:
|
11888 |
msgid "Dismiss Notice"
|
11889 |
msgstr ""
|
11890 |
|
@@ -11989,63 +12485,59 @@ msgid ""
|
|
11989 |
"ERROR: wp_remote_get() function is blocked or unable to get the URL path"
|
11990 |
msgstr ""
|
11991 |
|
11992 |
-
#: includes/functions.php:
|
11993 |
-
msgid "mod_access_compat and mod_authz_core or mod_rewrite are not Loaded"
|
11994 |
-
msgstr ""
|
11995 |
-
|
11996 |
-
#: includes/functions.php:1188
|
11997 |
msgid ""
|
11998 |
"mod_access_compat is Loaded|Order, Allow, Deny directives are supported|"
|
11999 |
"IfModule: Yes"
|
12000 |
msgstr ""
|
12001 |
|
12002 |
-
#: includes/functions.php:
|
12003 |
msgid "mod_access_compat is not Loaded|IfModule: Yes"
|
12004 |
msgstr ""
|
12005 |
|
12006 |
-
#: includes/functions.php:
|
12007 |
msgid ""
|
12008 |
"mod_authz_core is Loaded|Order, Allow, Deny directives are not supported|BC: "
|
12009 |
"No|IfModule: Yes"
|
12010 |
msgstr ""
|
12011 |
|
12012 |
-
#: includes/functions.php:
|
12013 |
msgid "mod_authz_core is not Loaded|IfModule: Yes"
|
12014 |
msgstr ""
|
12015 |
|
12016 |
-
#: includes/functions.php:
|
12017 |
msgid ""
|
12018 |
"mod_authz_host is Loaded|Order, Allow, Deny directives are supported|BC: Yes|"
|
12019 |
"IfModule: Yes"
|
12020 |
msgstr ""
|
12021 |
|
12022 |
-
#: includes/functions.php:
|
12023 |
msgid ""
|
12024 |
"mod_authz_host is Loaded|Order, Allow, Deny directives are not supported|BC: "
|
12025 |
"No|IfModule: Yes"
|
12026 |
msgstr ""
|
12027 |
|
12028 |
-
#: includes/functions.php:
|
12029 |
msgid "mod_authz_host is not Loaded|IfModule: Yes"
|
12030 |
msgstr ""
|
12031 |
|
12032 |
-
#: includes/functions.php:
|
12033 |
msgid "mod_rewrite Module is Loaded|IfModule: Yes"
|
12034 |
msgstr ""
|
12035 |
|
12036 |
-
#: includes/functions.php:
|
12037 |
msgid "mod_rewrite Inconclusive: Status is not 200, 301, 302, 403 or 404"
|
12038 |
msgstr ""
|
12039 |
|
12040 |
-
#: includes/functions.php:
|
12041 |
msgid "mod_security Module is Loaded|Enabled|IfModule: Yes"
|
12042 |
msgstr ""
|
12043 |
|
12044 |
-
#: includes/functions.php:
|
12045 |
msgid "mod_security2 Module is Loaded|Enabled|IfModule: Yes"
|
12046 |
msgstr ""
|
12047 |
|
12048 |
-
#: includes/functions.php:
|
12049 |
msgid "mod_security Module is not Loaded|Enabled|IfModule: Yes"
|
12050 |
msgstr ""
|
12051 |
|
@@ -12320,7 +12812,7 @@ msgid ""
|
|
12320 |
"file."
|
12321 |
msgstr ""
|
12322 |
|
12323 |
-
#: includes/general-functions.php:
|
12324 |
msgid " Hosting Account Root Folder Option setup or updated Successfully!"
|
12325 |
msgstr ""
|
12326 |
|
@@ -13243,7 +13735,7 @@ msgid ""
|
|
13243 |
msgstr ""
|
13244 |
|
13245 |
#: includes/hud-autofix-whitelist.php:821
|
13246 |
-
#: includes/hud-dismiss-functions.php:
|
13247 |
msgid "Click this "
|
13248 |
msgstr ""
|
13249 |
|
@@ -13289,505 +13781,482 @@ msgstr ""
|
|
13289 |
msgid "No Plugin or Theme AutoFix Custom Code Whitelist Rules were found"
|
13290 |
msgstr ""
|
13291 |
|
13292 |
-
#: includes/hud-dismiss-functions.php:
|
13293 |
msgid ""
|
13294 |
"WARNING! BPS requires at least PHP5 to function correctly. Your PHP version "
|
13295 |
"is: "
|
13296 |
msgstr ""
|
13297 |
|
13298 |
-
#: includes/hud-dismiss-functions.php:
|
13299 |
msgid "BPS Guide - PHP5 Solution"
|
13300 |
msgstr ""
|
13301 |
|
13302 |
-
#: includes/hud-dismiss-functions.php:
|
13303 |
msgid ""
|
13304 |
"The BPS Guide will open in a new browser window. You will not be directed "
|
13305 |
"away from your WordPress Dashboard."
|
13306 |
msgstr ""
|
13307 |
|
13308 |
-
#: includes/hud-dismiss-functions.php:
|
13309 |
msgid ""
|
13310 |
"WARNING! BPS has detected that Safe Mode is set to On in your php.ini file."
|
13311 |
msgstr ""
|
13312 |
|
13313 |
-
#: includes/hud-dismiss-functions.php:
|
13314 |
msgid ""
|
13315 |
"If you see errors that BPS was unable to automatically create the backup "
|
13316 |
"folders this is probably the reason why."
|
13317 |
msgstr ""
|
13318 |
|
13319 |
-
#: includes/hud-dismiss-functions.php:
|
13320 |
msgid "HUD Check: Custom Permalinks are NOT being used."
|
13321 |
msgstr ""
|
13322 |
|
13323 |
-
#: includes/hud-dismiss-functions.php:
|
13324 |
msgid "It is recommended that you use Custom Permalinks: "
|
13325 |
msgstr ""
|
13326 |
|
13327 |
-
#: includes/hud-dismiss-functions.php:
|
13328 |
msgid "How to setup Custom Permalinks"
|
13329 |
msgstr ""
|
13330 |
|
13331 |
-
#: includes/hud-dismiss-functions.php:
|
13332 |
msgid ""
|
13333 |
"WARNING! BPS has detected that your Server is a Windows IIS Server that does "
|
13334 |
"not support htaccess rewriting."
|
13335 |
msgstr ""
|
13336 |
|
13337 |
-
#: includes/hud-dismiss-functions.php:
|
13338 |
msgid "Do NOT activate BulletProof Modes unless you know what you are doing."
|
13339 |
msgstr ""
|
13340 |
|
13341 |
-
#: includes/hud-dismiss-functions.php:
|
13342 |
msgid "Your Server Type is: "
|
13343 |
msgstr ""
|
13344 |
|
13345 |
-
#: includes/hud-dismiss-functions.php:
|
13346 |
msgid "WordPress Codex - Using Permalinks - see IIS section"
|
13347 |
msgstr ""
|
13348 |
|
13349 |
-
#: includes/hud-dismiss-functions.php:
|
13350 |
-
#: includes/hud-dismiss-functions.php:
|
13351 |
msgid "WARNING! BPS was unable to automatically create the /"
|
13352 |
msgstr ""
|
13353 |
|
13354 |
-
#: includes/hud-dismiss-functions.php:
|
13355 |
msgid "/bps-backup folder."
|
13356 |
msgstr ""
|
13357 |
|
13358 |
-
#: includes/hud-dismiss-functions.php:
|
13359 |
-
#: includes/hud-dismiss-functions.php:
|
13360 |
msgid "You will need to create the /"
|
13361 |
msgstr ""
|
13362 |
|
13363 |
-
#: includes/hud-dismiss-functions.php:
|
13364 |
msgid ""
|
13365 |
"/bps-backup folder manually via FTP. The folder permissions for the bps-"
|
13366 |
"backup folder need to be set to 755 in order to successfully perform "
|
13367 |
"permanent online backups."
|
13368 |
msgstr ""
|
13369 |
|
13370 |
-
#: includes/hud-dismiss-functions.php:
|
13371 |
-
#: includes/hud-dismiss-functions.php:
|
13372 |
msgid "To remove this message permanently click "
|
13373 |
msgstr ""
|
13374 |
|
13375 |
-
#: includes/hud-dismiss-functions.php:
|
13376 |
-
#: includes/hud-dismiss-functions.php:
|
13377 |
msgid "here."
|
13378 |
msgstr ""
|
13379 |
|
13380 |
-
#: includes/hud-dismiss-functions.php:
|
13381 |
msgid "/bps-backup/master-backups folder."
|
13382 |
msgstr ""
|
13383 |
|
13384 |
-
#: includes/hud-dismiss-functions.php:
|
13385 |
msgid ""
|
13386 |
"/bps-backup/master-backups folder manually via FTP. The folder permissions "
|
13387 |
"for the master-backups folder need to be set to 755 in order to successfully "
|
13388 |
"perform permanent online backups."
|
13389 |
msgstr ""
|
13390 |
|
13391 |
-
#: includes/hud-dismiss-functions.php:
|
13392 |
-
#: includes/hud-dismiss-functions.php:
|
13393 |
msgid "Bonus Custom Code:"
|
13394 |
msgstr ""
|
13395 |
|
13396 |
-
#: includes/hud-dismiss-functions.php:
|
13397 |
-
#: includes/hud-dismiss-functions.php:
|
13398 |
msgid ""
|
13399 |
"Click the links below to get Bonus Custom Code or click the Dismiss Notice "
|
13400 |
"links or click this "
|
13401 |
msgstr ""
|
13402 |
|
13403 |
-
#: includes/hud-dismiss-functions.php:
|
13404 |
-
#: includes/hud-dismiss-functions.php:
|
13405 |
msgid "Dismiss All Notices"
|
13406 |
msgstr ""
|
13407 |
|
13408 |
-
#: includes/hud-dismiss-functions.php:
|
13409 |
-
#: includes/hud-dismiss-functions.php:
|
13410 |
msgid ""
|
13411 |
" link. To Reset Dismiss Notices click the Reset|Recheck Dismiss Notices "
|
13412 |
"button on the Custom Code page."
|
13413 |
msgstr ""
|
13414 |
|
13415 |
-
#: includes/hud-dismiss-functions.php:
|
13416 |
-
#: includes/hud-dismiss-functions.php:
|
13417 |
-
#: includes/hud-dismiss-functions.php:
|
13418 |
-
#: includes/hud-dismiss-functions.php:
|
13419 |
-
#: includes/hud-dismiss-functions.php:
|
13420 |
-
#: includes/hud-dismiss-functions.php:
|
13421 |
-
#: includes/hud-dismiss-functions.php:
|
13422 |
-
#: includes/hud-dismiss-functions.php:
|
13423 |
msgid "Get "
|
13424 |
msgstr ""
|
13425 |
|
13426 |
-
#: includes/hud-dismiss-functions.php:
|
13427 |
-
#: includes/hud-dismiss-functions.php:
|
13428 |
msgid "POST Request Attack Protection Code"
|
13429 |
msgstr ""
|
13430 |
|
13431 |
-
#: includes/hud-dismiss-functions.php:
|
13432 |
-
#: includes/hud-dismiss-functions.php:
|
13433 |
-
#: includes/hud-dismiss-functions.php:
|
13434 |
-
#: includes/hud-dismiss-functions.php:
|
13435 |
-
#: includes/hud-dismiss-functions.php:
|
13436 |
-
#: includes/hud-dismiss-functions.php:
|
13437 |
-
#: includes/hud-dismiss-functions.php:
|
13438 |
-
#: includes/hud-dismiss-functions.php:
|
13439 |
msgid " or "
|
13440 |
msgstr ""
|
13441 |
|
13442 |
-
#: includes/hud-dismiss-functions.php:
|
13443 |
msgid "Brute Force Login Protection Code"
|
13444 |
msgstr ""
|
13445 |
|
13446 |
-
#: includes/hud-dismiss-functions.php:
|
13447 |
msgid "Speed Boost Cache Code"
|
13448 |
msgstr ""
|
13449 |
|
13450 |
-
#: includes/hud-dismiss-functions.php:
|
13451 |
msgid "Author Enumeration BOT Probe Code"
|
13452 |
msgstr ""
|
13453 |
|
13454 |
-
#: includes/hud-dismiss-functions.php:
|
13455 |
msgid "XML-RPC DDoS Protection Code"
|
13456 |
msgstr ""
|
13457 |
|
13458 |
-
#: includes/hud-dismiss-functions.php:
|
13459 |
msgid "Mime Sniffing|Drive-by Download Attack Protection Code"
|
13460 |
msgstr ""
|
13461 |
|
13462 |
-
#: includes/hud-dismiss-functions.php:
|
13463 |
msgid "External iFrame|Clickjacking Protection Code"
|
13464 |
msgstr ""
|
13465 |
|
13466 |
-
#: includes/hud-dismiss-functions.php:
|
13467 |
-
#: includes/hud-dismiss-functions.php:
|
13468 |
msgid "HUD Check: Wordfence PHP/php.ini handler htaccess code detected"
|
13469 |
msgstr ""
|
13470 |
|
13471 |
-
#: includes/hud-dismiss-functions.php:
|
13472 |
-
#: includes/hud-dismiss-functions.php:
|
13473 |
msgid ""
|
13474 |
"Wordfence PHP/php.ini handler htaccess code was found in your root .htaccess "
|
13475 |
"file, but was NOT found in BPS Custom Code."
|
13476 |
msgstr ""
|
13477 |
|
13478 |
-
#: includes/hud-dismiss-functions.php:
|
13479 |
-
#: includes/hud-dismiss-functions.php:
|
13480 |
msgid ""
|
13481 |
"Using the Wordfence WAF Firewall may cause serious/critical problems for "
|
13482 |
"your website and BPS."
|
13483 |
msgstr ""
|
13484 |
|
13485 |
-
#: includes/hud-dismiss-functions.php:
|
13486 |
-
#: includes/hud-dismiss-functions.php:
|
13487 |
msgid "HUD Check: PHP/php.ini handler htaccess code check"
|
13488 |
msgstr ""
|
13489 |
|
13490 |
-
#: includes/hud-dismiss-functions.php:
|
13491 |
-
#: includes/hud-dismiss-functions.php:
|
13492 |
msgid ""
|
13493 |
"PHP/php.ini handler htaccess code was found in your root .htaccess file, but "
|
13494 |
"was NOT found in BPS Custom Code."
|
13495 |
msgstr ""
|
13496 |
|
13497 |
-
#: includes/hud-dismiss-functions.php:
|
13498 |
-
#: includes/hud-dismiss-functions.php:
|
13499 |
msgid "To automatically fix this click here: "
|
13500 |
msgstr ""
|
13501 |
|
13502 |
-
#: includes/hud-dismiss-functions.php:
|
13503 |
-
#: includes/hud-dismiss-functions.php:
|
13504 |
msgid ""
|
13505 |
"The Setup Wizard Pre-Installation Checks feature will automatically fix this "
|
13506 |
"just by visiting the Setup Wizard page."
|
13507 |
msgstr ""
|
13508 |
|
13509 |
-
#: includes/hud-dismiss-functions.php:
|
13510 |
msgid " for the steps to fix this Wordfence problem."
|
13511 |
msgstr ""
|
13512 |
|
13513 |
-
#: includes/hud-dismiss-functions.php:
|
13514 |
msgid ""
|
13515 |
"An htaccess file has been detected in the wp-content folder that breaks BPS "
|
13516 |
"features and functionality"
|
13517 |
msgstr ""
|
13518 |
|
13519 |
-
#: includes/hud-dismiss-functions.php:
|
13520 |
msgid ""
|
13521 |
"If you have or had the Sucuri, Defender or iThemes Security plugins "
|
13522 |
"installed, they create a wp-content htaccess file that breaks several things "
|
13523 |
"in BPS Pro and other plugins as well."
|
13524 |
msgstr ""
|
13525 |
|
13526 |
-
#: includes/hud-dismiss-functions.php:
|
13527 |
msgid ""
|
13528 |
"To fix the Sucuri problem go to the Sucuri Settings page, click the "
|
13529 |
"Hardening tab and click the Revert Hardening button for the Block PHP Files "
|
13530 |
"in WP-CONTENT Directory option setting."
|
13531 |
msgstr ""
|
13532 |
|
13533 |
-
#: includes/hud-dismiss-functions.php:
|
13534 |
msgid ""
|
13535 |
"To fix the Defender Security problem go to the Security Tweaks page, click "
|
13536 |
"the PHP Execution option setting and click the Revert button."
|
13537 |
msgstr ""
|
13538 |
|
13539 |
-
#: includes/hud-dismiss-functions.php:
|
13540 |
msgid ""
|
13541 |
"o fix the iThemes problem go to the System Tweaks page, uncheck the Disable "
|
13542 |
"PHP in Plugins option setting."
|
13543 |
msgstr ""
|
13544 |
|
13545 |
-
#: includes/hud-dismiss-functions.php:
|
13546 |
msgid "The WordPress Firewall 2 plugin is installed and activated"
|
13547 |
msgstr ""
|
13548 |
|
13549 |
-
#: includes/hud-dismiss-functions.php:
|
13550 |
msgid "It is recommended that you delete the WordPress Firewall 2 plugin."
|
13551 |
msgstr ""
|
13552 |
|
13553 |
-
#: includes/hud-dismiss-functions.php:
|
13554 |
msgid " for more information."
|
13555 |
msgstr ""
|
13556 |
|
13557 |
-
#: includes/hud-dismiss-functions.php:
|
13558 |
msgid "Notice: BPS Query String Exploits Code Changes"
|
13559 |
msgstr ""
|
13560 |
|
13561 |
-
#: includes/hud-dismiss-functions.php:
|
13562 |
msgid ""
|
13563 |
"Older BPS Query String Exploits code was found in BPS Custom Code. Several "
|
13564 |
"Query String Exploits rules were changed/added/modified in the root ."
|
13565 |
"htaccess file in BPS .49.6, .50.2 & .50.3."
|
13566 |
msgstr ""
|
13567 |
|
13568 |
-
#: includes/hud-dismiss-functions.php:
|
13569 |
msgid ""
|
13570 |
"Copy the new Query String Exploits section of code from your root .htaccess "
|
13571 |
"file and paste it into this BPS Custom Code text box: CUSTOM CODE BPSQSE BPS "
|
13572 |
"QUERY STRING EXPLOITS and click the Save Root Custom Code button."
|
13573 |
msgstr ""
|
13574 |
|
13575 |
-
#: includes/hud-dismiss-functions.php:
|
13576 |
msgid ""
|
13577 |
"This Notice will go away once you have copied the new Query String Exploits "
|
13578 |
"code to BPS Custom Code and clicked the Save Root Custom Code button."
|
13579 |
msgstr ""
|
13580 |
|
13581 |
-
#: includes/hud-dismiss-functions.php:
|
13582 |
msgid "BPS Alert! A BPS htaccess file was NOT found in the BPS Backup folder: "
|
13583 |
msgstr ""
|
13584 |
|
13585 |
-
#: includes/hud-dismiss-functions.php:
|
13586 |
msgid " and click the BPS Backup Folder BulletProof Mode Activate button."
|
13587 |
msgstr ""
|
13588 |
|
13589 |
-
#: includes/hud-dismiss-functions.php:
|
13590 |
msgid "New Improved BPS Speed Boost Cache Code"
|
13591 |
msgstr ""
|
13592 |
|
13593 |
-
#: includes/hud-dismiss-functions.php:
|
13594 |
msgid ""
|
13595 |
"Older BPS Speed Boost Cache Code was found saved in this BPS Custom Code "
|
13596 |
"text box: CUSTOM CODE TOP PHP/PHP.INI HANDLER/CACHE CODE"
|
13597 |
msgstr ""
|
13598 |
|
13599 |
-
#: includes/hud-dismiss-functions.php:
|
13600 |
msgid ""
|
13601 |
"Newer improved BPS Speed Boost Cache Code has been created, which should "
|
13602 |
"improve website load speed performance even more."
|
13603 |
msgstr ""
|
13604 |
|
13605 |
-
#: includes/hud-dismiss-functions.php:
|
13606 |
msgid "Get The New Improved BPS Speed Boost Cache Code"
|
13607 |
msgstr ""
|
13608 |
|
13609 |
-
#: includes/hud-dismiss-functions.php:
|
13610 |
msgid ". To dismiss this Notice click the Dismiss Notice button below."
|
13611 |
msgstr ""
|
13612 |
|
13613 |
-
#: includes/hud-dismiss-functions.php:
|
13614 |
msgid ""
|
13615 |
"To Reset Dismiss Notices click the Reset|Recheck Dismiss Notices button on "
|
13616 |
"the Custom Code page."
|
13617 |
msgstr ""
|
13618 |
|
13619 |
-
#: includes/hud-dismiss-functions.php:
|
13620 |
msgid "BPS Speed Boost Cache Custom Code Notice"
|
13621 |
msgstr ""
|
13622 |
|
13623 |
-
#: includes/hud-dismiss-functions.php:
|
13624 |
msgid ""
|
13625 |
"BPS Speed Boost Cache Code was found in this BPS Custom Code text box: "
|
13626 |
"CUSTOM CODE TOP PHP/PHP.INI HANDLER/CACHE CODE"
|
13627 |
msgstr ""
|
13628 |
|
13629 |
-
#: includes/hud-dismiss-functions.php:
|
13630 |
msgid ""
|
13631 |
"and another caching plugin's Marker text was also found in this BPS Custom "
|
13632 |
"Code text box."
|
13633 |
msgstr ""
|
13634 |
|
13635 |
-
#: includes/hud-dismiss-functions.php:
|
13636 |
msgid "Click this link: "
|
13637 |
msgstr ""
|
13638 |
|
13639 |
-
#: includes/hud-dismiss-functions.php:
|
13640 |
msgid "BPS Speed Boost Cache Custom Code Notice Forum Topic"
|
13641 |
msgstr ""
|
13642 |
|
13643 |
-
#: includes/hud-dismiss-functions.php:
|
13644 |
msgid " for help information on what this Notice means and what to do next."
|
13645 |
msgstr ""
|
13646 |
|
13647 |
-
#: includes/hud-dismiss-functions.php:
|
13648 |
-
msgid "MScan First Run Notice"
|
13649 |
-
msgstr ""
|
13650 |
-
|
13651 |
-
#: includes/hud-dismiss-functions.php:627
|
13652 |
-
msgid ""
|
13653 |
-
"Please take a few minutes to read the \"Basic Info|Recommendations|"
|
13654 |
-
"Limitations|Restrictions\" help section in the"
|
13655 |
-
msgstr ""
|
13656 |
-
|
13657 |
-
#: includes/hud-dismiss-functions.php:627
|
13658 |
-
msgid "before running a scan."
|
13659 |
-
msgstr ""
|
13660 |
-
|
13661 |
-
#: includes/hud-dismiss-functions.php:627
|
13662 |
-
msgid ""
|
13663 |
-
"It is highly recommended that you use the Scan Time Estimate Tool before "
|
13664 |
-
"running an actual scan. The Scan Time Estimate Tool calculates the total "
|
13665 |
-
"estimated time of a scan based on your MScan Option settings without "
|
13666 |
-
"actually running a scan. To Dismiss this Notice click the Dismiss Notice "
|
13667 |
-
"button below. To Reset Dismiss Notices click the Reset|Recheck Dismiss "
|
13668 |
-
"Notices button on the BPS Custom Code page."
|
13669 |
-
msgstr ""
|
13670 |
-
|
13671 |
-
#: includes/hud-dismiss-functions.php:664
|
13672 |
msgid "BPS New Feature Notice: JTC-Lite"
|
13673 |
msgstr ""
|
13674 |
|
13675 |
-
#: includes/hud-dismiss-functions.php:
|
13676 |
msgid ""
|
13677 |
"JTC-Lite protects the WordPress Login page Form against automated SpamBot "
|
13678 |
"and HackerBot Brute Force Login attacks"
|
13679 |
msgstr ""
|
13680 |
|
13681 |
-
#: includes/hud-dismiss-functions.php:
|
13682 |
msgid ""
|
13683 |
"and also prevents User Accounts from being locked repeatedly by Brute Force "
|
13684 |
"Login Bot attacks on your Login page Form."
|
13685 |
msgstr ""
|
13686 |
|
13687 |
-
#: includes/hud-dismiss-functions.php:
|
13688 |
msgid "To enable/turn On JTC-Lite, click this "
|
13689 |
msgstr ""
|
13690 |
|
13691 |
-
#: includes/hud-dismiss-functions.php:
|
13692 |
msgid ""
|
13693 |
". Click/check the Login Form Checkbox and click the Save Options button."
|
13694 |
msgstr ""
|
13695 |
|
13696 |
-
#: includes/hud-dismiss-functions.php:
|
13697 |
-
#: includes/hud-dismiss-functions.php:
|
13698 |
-
#: includes/hud-dismiss-functions.php:
|
13699 |
-
#: includes/hud-dismiss-functions.php:
|
|
|
13700 |
msgid ""
|
13701 |
"To Dismiss this Notice click the Dismiss Notice button below. To Reset "
|
13702 |
"Dismiss Notices click the Reset|Recheck Dismiss Notices button on the BPS "
|
13703 |
"Custom Code page."
|
13704 |
msgstr ""
|
13705 |
|
13706 |
-
#: includes/hud-dismiss-functions.php:
|
13707 |
msgid "BPS Plugin Star Rating Request"
|
13708 |
msgstr ""
|
13709 |
|
13710 |
-
#: includes/hud-dismiss-functions.php:
|
13711 |
msgid ""
|
13712 |
"A BPS star rating only takes a couple of minutes and would be very much "
|
13713 |
"appreciated. We are looking for 5 star ratings and not \"fancy\" reviews."
|
13714 |
msgstr ""
|
13715 |
|
13716 |
-
#: includes/hud-dismiss-functions.php:
|
13717 |
msgid ""
|
13718 |
"A simple review like \"works great\" or \"has been protecting my website for "
|
13719 |
"X months or X years\" is perfect."
|
13720 |
msgstr ""
|
13721 |
|
13722 |
-
#: includes/hud-dismiss-functions.php:
|
13723 |
msgid "Click this link to submit a BPS Plugin Star Rating: "
|
13724 |
msgstr ""
|
13725 |
|
13726 |
-
#: includes/hud-dismiss-functions.php:
|
13727 |
msgid "BPS Plugin Star Rating"
|
13728 |
msgstr ""
|
13729 |
|
13730 |
-
#: includes/hud-dismiss-functions.php:
|
13731 |
msgid ""
|
13732 |
"login to the WordPress.org site and scroll to the bottom of the Reviews page."
|
13733 |
msgstr ""
|
13734 |
|
13735 |
-
#: includes/hud-dismiss-functions.php:
|
13736 |
msgid ""
|
13737 |
"To Dismiss this one-time Notice click the Dismiss Notice button below. To "
|
13738 |
"Reset Dismiss Notices click the Reset|Recheck Dismiss Notices button on the "
|
13739 |
"BPS Custom Code page."
|
13740 |
msgstr ""
|
13741 |
|
13742 |
-
#: includes/hud-dismiss-functions.php:
|
13743 |
msgid "BPS Notice: Mod Security Module is Loaded|Enabled"
|
13744 |
msgstr ""
|
13745 |
|
13746 |
-
#: includes/hud-dismiss-functions.php:
|
13747 |
msgid "Please take a minute to view this Mod Security help forum topic: "
|
13748 |
msgstr ""
|
13749 |
|
13750 |
-
#: includes/hud-dismiss-functions.php:
|
13751 |
msgid "Mod Security Common Known Problems"
|
13752 |
msgstr ""
|
13753 |
|
13754 |
-
#: includes/hud-dismiss-functions.php:
|
13755 |
msgid ""
|
13756 |
"If you are not experiencing any of the problems listed in the Mod Security "
|
13757 |
"help forum topic then you can dismiss this Dismiss Notice."
|
13758 |
msgstr ""
|
13759 |
|
13760 |
-
#: includes/hud-dismiss-functions.php:
|
13761 |
msgid "BPS GDPR Compliance Notice"
|
13762 |
msgstr ""
|
13763 |
|
13764 |
-
#: includes/hud-dismiss-functions.php:
|
13765 |
msgid ""
|
13766 |
"A new Setup Wizard Option has been created which allows you to turn off all "
|
13767 |
"IP address logging in BPS to make your website GDPR Compliant."
|
13768 |
msgstr ""
|
13769 |
|
13770 |
-
#: includes/hud-dismiss-functions.php:
|
13771 |
msgid "GDPR Compliance Setup Wizard Option link"
|
13772 |
msgstr ""
|
13773 |
|
13774 |
-
#: includes/hud-dismiss-functions.php:
|
13775 |
msgid "Choose the GDPR Compliance On setting."
|
13776 |
msgstr ""
|
13777 |
|
13778 |
-
#: includes/hud-dismiss-functions.php:
|
13779 |
msgid "For more information about GDPR Compliance click this "
|
13780 |
msgstr ""
|
13781 |
|
13782 |
-
#: includes/hud-dismiss-functions.php:
|
13783 |
msgid "GDPR Compliance Forum Topic link"
|
13784 |
msgstr ""
|
13785 |
|
13786 |
-
#: includes/hud-dismiss-functions.php:
|
13787 |
msgid "BPS wp-config.php file WP Automatic Update constants detected"
|
13788 |
msgstr ""
|
13789 |
|
13790 |
-
#: includes/hud-dismiss-functions.php:
|
13791 |
msgid ""
|
13792 |
"You are using the BPS MU Tools plugin option settings to handle WP Automatic "
|
13793 |
"Updates. BPS detected that you are also using one or both of these WP "
|
@@ -13798,6 +14267,25 @@ msgid ""
|
|
13798 |
"Notice after you have commented them out."
|
13799 |
msgstr ""
|
13800 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13801 |
#: includes/login-security.php:124 includes/login-security.php:130
|
13802 |
#: includes/login-security.php:343 includes/login-security.php:485
|
13803 |
#: includes/login-security.php:491 includes/login-security.php:617
|
3 |
msgstr ""
|
4 |
"Project-Id-Version: bulletproof-security\n"
|
5 |
"Report-Msgid-Bugs-To: \n"
|
6 |
+
"POT-Creation-Date: 2021-05-09 13:52-0700\n"
|
7 |
"PO-Revision-Date: 2015-06-20 19:13-0800\n"
|
8 |
"Last-Translator: Ed Alexander <edward@ait-pro.com>\n"
|
9 |
"Language-Team: AITpro <info@ait-pro.com>\n"
|
261 |
msgstr ""
|
262 |
|
263 |
#: admin/core/core-custom-code.php:472 admin/core/core-custom-code.php:844
|
264 |
+
#: admin/core/core.php:1991
|
265 |
msgid "Click the Custom Code Read Me help button for more help info."
|
266 |
msgstr ""
|
267 |
|
361 |
msgstr ""
|
362 |
|
363 |
#: admin/core/core-export-import.php:115 admin/login/lsm-export.php:49
|
364 |
+
#: admin/wizard/wizard-backup.php:249 admin/wizard/wizard-backup.php:290
|
365 |
+
#: admin/wizard/wizard.php:1859
|
366 |
msgid ""
|
367 |
"If you see a 403 error and/or are unable to download the zip file then click "
|
368 |
"here: "
|
369 |
msgstr ""
|
370 |
|
371 |
#: admin/core/core-export-import.php:115 admin/login/lsm-export.php:49
|
372 |
+
#: admin/wizard/wizard-backup.php:249 admin/wizard/wizard-backup.php:290
|
373 |
+
#: admin/wizard/wizard.php:1083 admin/wizard/wizard.php:1182
|
374 |
+
#: admin/wizard/wizard.php:1184 admin/wizard/wizard.php:1859
|
375 |
#: includes/hud-autofix-whitelist.php:821
|
376 |
msgid "Setup Wizard Options"
|
377 |
msgstr ""
|
383 |
msgstr ""
|
384 |
|
385 |
#: admin/core/core-export-import.php:115 admin/login/lsm-export.php:49
|
386 |
+
#: admin/wizard/wizard.php:1859
|
387 |
msgid "Download Zip Export"
|
388 |
msgstr ""
|
389 |
|
390 |
+
#: admin/core/core-export-import.php:144 admin/wizard/wizard.php:2019
|
391 |
msgid "Zip File Upload Successful."
|
392 |
msgstr ""
|
393 |
|
394 |
+
#: admin/core/core-export-import.php:155 admin/wizard/wizard.php:2030
|
395 |
msgid "Zip File Exraction Successful. Method: ZipArchive class."
|
396 |
msgstr ""
|
397 |
|
421 |
msgid "3. Click the wp-admin Folder BulletProof Mode Activate button."
|
422 |
msgstr ""
|
423 |
|
424 |
+
#: admin/core/core-export-import.php:169 admin/wizard/wizard.php:2041
|
425 |
msgid "ERROR: Zip File Extraction Failed. Method: ZipArchive class."
|
426 |
msgstr ""
|
427 |
|
428 |
+
#: admin/core/core-export-import.php:189 admin/wizard/wizard.php:2061
|
429 |
msgid "Zip File Extraction Successful. Method: PclZip."
|
430 |
msgstr ""
|
431 |
|
432 |
+
#: admin/core/core-export-import.php:203 admin/wizard/wizard.php:2073
|
433 |
msgid "ERROR: Zip File Extraction Failed. Method: PclZip."
|
434 |
msgstr ""
|
435 |
|
436 |
+
#: admin/core/core-export-import.php:211 admin/wizard/wizard.php:2081
|
437 |
msgid "ERROR: Zip File Upload Failed."
|
438 |
msgstr ""
|
439 |
|
464 |
msgstr ""
|
465 |
|
466 |
#: admin/core/core-forms.php:18 admin/core/core-forms.php:98
|
467 |
+
#: admin/core/core.php:1266
|
468 |
msgid "htaccess Files Disabled: wp-admin htaccess file writing is disabled. "
|
469 |
msgstr ""
|
470 |
|
474 |
#: admin/core/core-forms.php:364 admin/core/core-forms.php:430
|
475 |
#: admin/core/core-htaccess-code.php:426 admin/core/core-htaccess-code.php:510
|
476 |
#: admin/core/core-htaccess-code.php:579 admin/core/core-htaccess-code.php:663
|
477 |
+
#: admin/core/core.php:873 admin/core/core.php:963 admin/core/core.php:1077
|
478 |
+
#: admin/core/core.php:1167 admin/core/core.php:1266
|
479 |
#: admin/maintenance/maintenance.php:869 admin/maintenance/maintenance.php:1185
|
480 |
#: admin/maintenance/maintenance.php:1694
|
481 |
#: admin/maintenance/maintenance.php:1824
|
489 |
#: admin/core/core-forms.php:364 admin/core/core-forms.php:430
|
490 |
#: admin/core/core-htaccess-code.php:426 admin/core/core-htaccess-code.php:510
|
491 |
#: admin/core/core-htaccess-code.php:579 admin/core/core-htaccess-code.php:663
|
492 |
+
#: admin/core/core.php:873 admin/core/core.php:963 admin/core/core.php:1077
|
493 |
+
#: admin/core/core.php:1167 admin/core/core.php:1266
|
494 |
#: admin/maintenance/maintenance.php:869 admin/maintenance/maintenance.php:1185
|
495 |
#: admin/maintenance/maintenance.php:1694
|
496 |
#: admin/maintenance/maintenance.php:1824
|
497 |
#: admin/maintenance/maintenance.php:2015 admin/wizard/wizard-functions.php:44
|
498 |
+
#: admin/wizard/wizard.php:1095
|
499 |
msgid "htaccess Files Disabled Forum Topic"
|
500 |
msgstr ""
|
501 |
|
828 |
msgid "Success! The New Improved BPS Speed Boost Cache Code Notice is reset."
|
829 |
msgstr ""
|
830 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
831 |
#: admin/core/core-forms.php:654
|
832 |
msgid "The JTC-Lite New Feature Notice is NOT set. Nothing to reset."
|
833 |
msgstr ""
|
1006 |
"Read Me help file for BPS troubleshooting steps."
|
1007 |
msgstr ""
|
1008 |
|
1009 |
+
#: admin/core/core-help-text.php:15 admin/wizard/wizard.php:1136
|
1010 |
msgid "Notes: "
|
1011 |
msgstr ""
|
1012 |
|
1073 |
"Send Email Alerts."
|
1074 |
msgstr ""
|
1075 |
|
1076 |
+
#: admin/core/core-help-text.php:18 admin/core/core.php:522
|
1077 |
msgid "HPF Cron Check Frequency:"
|
1078 |
msgstr ""
|
1079 |
|
1085 |
"Options button to save your settings."
|
1086 |
msgstr ""
|
1087 |
|
1088 |
+
#: admin/core/core-help-text.php:18 admin/core/core.php:533
|
1089 |
msgid "HPF Cron On|Off:"
|
1090 |
msgstr ""
|
1091 |
|
1095 |
"HPF Cron Off. Click the Save HPF Cron Options button to save your settings."
|
1096 |
msgstr ""
|
1097 |
|
1098 |
+
#: admin/core/core-help-text.php:18 admin/core/core.php:555
|
1099 |
msgid "Ignore Hidden Plugin Folders & Files:"
|
1100 |
msgstr ""
|
1101 |
|
1197 |
"permanently. To save any new htaccess code permanently use BPS Custom Code."
|
1198 |
msgstr ""
|
1199 |
|
1200 |
+
#: admin/core/core-help-text.php:30 admin/core/core.php:234
|
1201 |
+
#: admin/core/core.php:356 admin/core/core.php:457 admin/core/core.php:585
|
1202 |
+
#: admin/core/core.php:673 admin/core/core.php:761 admin/core/core.php:1858
|
1203 |
#: admin/db-backup-security/db-backup-help-text.php:12
|
1204 |
#: admin/db-backup-security/db-backup-help-text.php:15
|
1205 |
#: admin/db-backup-security/db-backup-security.php:303
|
1206 |
#: admin/email-log-settings/email-log-settings.php:89 admin/login/login.php:215
|
1207 |
#: admin/login/login.php:842 admin/login/login.php:1178
|
1208 |
#: admin/login/login.php:1715 admin/maintenance/maintenance.php:207
|
1209 |
+
#: admin/mscan/mscan-help-text.php:65 admin/mscan/mscan-help-text.php:78
|
1210 |
+
#: admin/mscan/mscan-help-text.php:85 admin/mscan/mscan.php:221
|
1211 |
#: admin/security-log/security-log.php:229 admin/system-info/system-info.php:86
|
1212 |
+
#: admin/theme-skin/theme-skin.php:93 admin/wizard/wizard.php:1122
|
1213 |
+
#: admin/wizard/wizard.php:1190 admin/wizard/wizard.php:1699
|
1214 |
msgid ""
|
1215 |
"This Read Me Help window is draggable (top) and resizable (bottom right "
|
1216 |
"corner)"
|
1732 |
|
1733 |
#: admin/core/core-htaccess-code.php:426 admin/core/core-htaccess-code.php:510
|
1734 |
#: admin/core/core-htaccess-code.php:579 admin/core/core-htaccess-code.php:663
|
1735 |
+
#: admin/core/core.php:1167
|
1736 |
msgid "htaccess Files Disabled: Root htaccess file writing is disabled. "
|
1737 |
msgstr ""
|
1738 |
|
1739 |
#: admin/core/core-htaccess-code.php:448 admin/core/core-htaccess-code.php:601
|
1740 |
+
#: admin/core/core.php:1010
|
1741 |
msgid "Failed to copy your Custom default.htaccess file: "
|
1742 |
msgstr ""
|
1743 |
|
1744 |
#: admin/core/core-htaccess-code.php:448 admin/core/core-htaccess-code.php:601
|
1745 |
+
#: admin/core/core.php:1010
|
1746 |
msgid " to: "
|
1747 |
msgstr ""
|
1748 |
|
1778 |
|
1779 |
#: admin/core/core.php:42 admin/db-backup-security/db-backup-security.php:40
|
1780 |
#: admin/email-log-settings/email-log-settings.php:35 admin/login/login.php:35
|
1781 |
+
#: admin/maintenance/maintenance.php:35 admin/mscan/mscan.php:20
|
1782 |
#: admin/security-log/security-log.php:35 admin/system-info/system-info.php:35
|
1783 |
#: admin/theme-skin/theme-skin.php:40 admin/wizard/wizard.php:84
|
1784 |
msgid "Rate BPS"
|
1785 |
msgstr ""
|
1786 |
|
1787 |
+
#: admin/core/core.php:151 admin/includes/admin.php:413
|
1788 |
+
#: admin/includes/admin.php:414
|
1789 |
msgid "BulletProof Security ~ htaccess Core"
|
1790 |
msgstr ""
|
1791 |
|
1792 |
+
#: admin/core/core.php:180 admin/db-backup-security/db-backup-security.php:52
|
1793 |
#: admin/email-log-settings/email-log-settings.php:47 admin/login/login.php:148
|
1794 |
+
#: admin/maintenance/maintenance.php:57 admin/mscan/mscan.php:69
|
1795 |
#: admin/security-log/security-log.php:47 admin/system-info/system-info.php:47
|
1796 |
#: admin/theme-skin/theme-skin.php:52 admin/wizard/wizard.php:182
|
1797 |
msgid "Settings Saved"
|
1798 |
msgstr ""
|
1799 |
|
1800 |
+
#: admin/core/core.php:205
|
1801 |
msgid "Security Modes"
|
1802 |
msgstr ""
|
1803 |
|
1804 |
+
#: admin/core/core.php:206
|
1805 |
msgid "htaccess File Editor"
|
1806 |
msgstr ""
|
1807 |
|
1808 |
+
#: admin/core/core.php:207 admin/core/core.php:1842 admin/core/core.php:1855
|
1809 |
msgid "Custom Code"
|
1810 |
msgstr ""
|
1811 |
|
1812 |
+
#: admin/core/core.php:208
|
1813 |
msgid "My Notes"
|
1814 |
msgstr ""
|
1815 |
|
1816 |
+
#: admin/core/core.php:209
|
1817 |
msgid "Whats New"
|
1818 |
msgstr ""
|
1819 |
|
1820 |
+
#: admin/core/core.php:210 admin/db-backup-security/db-backup-security.php:284
|
1821 |
#: admin/db-backup-security/db-backup-security.php:1739
|
1822 |
#: admin/email-log-settings/email-log-settings.php:70 admin/login/login.php:187
|
1823 |
+
#: admin/maintenance/maintenance.php:171 admin/mscan/mscan.php:203
|
1824 |
+
#: admin/mscan/mscan.php:3493 admin/security-log/security-log.php:210
|
1825 |
#: admin/system-info/system-info.php:73 admin/theme-skin/theme-skin.php:75
|
1826 |
#: admin/theme-skin/theme-skin.php:251
|
1827 |
msgid "Help & FAQ"
|
1828 |
msgstr ""
|
1829 |
|
1830 |
+
#: admin/core/core.php:211 bulletproof-security.php:182
|
1831 |
msgid "BPS Pro Features"
|
1832 |
msgstr ""
|
1833 |
|
1834 |
+
#: admin/core/core.php:219
|
1835 |
msgid "htaccess File Security Modes ~ "
|
1836 |
msgstr ""
|
1837 |
|
1838 |
+
#: admin/core/core.php:219
|
1839 |
msgid "RBM, WBM, HPF, MBM & BBM BulletProof Modes"
|
1840 |
msgstr ""
|
1841 |
|
1842 |
+
#: admin/core/core.php:219 admin/core/core.php:801 admin/core/core.php:1836
|
1843 |
+
#: admin/core/core.php:1970 admin/core/core.php:2076
|
1844 |
#: admin/db-backup-security/db-backup-security.php:292
|
1845 |
#: admin/db-backup-security/db-backup-security.php:1242
|
1846 |
#: admin/db-backup-security/db-backup-security.php:1398
|
1847 |
#: admin/email-log-settings/email-log-settings.php:78 admin/login/login.php:204
|
1848 |
#: admin/login/login.php:831 admin/maintenance/maintenance.php:191
|
1849 |
+
#: admin/maintenance/maintenance.php:193
|
1850 |
#: admin/security-log/security-log.php:218 admin/theme-skin/theme-skin.php:84
|
1851 |
+
#: admin/wizard/wizard.php:1107 admin/wizard/wizard.php:1176
|
1852 |
msgid "Want even more security protection?"
|
1853 |
msgstr ""
|
1854 |
|
1855 |
+
#: admin/core/core.php:219 admin/core/core.php:801 admin/core/core.php:1836
|
1856 |
+
#: admin/core/core.php:1970 admin/core/core.php:2076
|
1857 |
#: admin/email-log-settings/email-log-settings.php:78
|
1858 |
#: admin/maintenance/maintenance.php:191 admin/maintenance/maintenance.php:193
|
1859 |
#: admin/security-log/security-log.php:218 admin/theme-skin/theme-skin.php:84
|
1860 |
+
#: admin/wizard/wizard.php:1107 admin/wizard/wizard.php:1176
|
1861 |
msgid ""
|
1862 |
"Protect all of your Plugins (plugin folders and files) with an IP Firewall: "
|
1863 |
msgstr ""
|
1864 |
|
1865 |
+
#: admin/core/core.php:219 admin/core/core.php:801 admin/core/core.php:1836
|
1866 |
+
#: admin/core/core.php:1970 admin/core/core.php:2076
|
1867 |
#: admin/email-log-settings/email-log-settings.php:78
|
1868 |
#: admin/maintenance/maintenance.php:191 admin/maintenance/maintenance.php:193
|
1869 |
#: admin/security-log/security-log.php:218 admin/theme-skin/theme-skin.php:84
|
1870 |
+
#: admin/wizard/wizard.php:1107 admin/wizard/wizard.php:1176
|
1871 |
msgid "Get BPS Pro Plugin Firewall"
|
1872 |
msgstr ""
|
1873 |
|
1874 |
+
#: admin/core/core.php:219 admin/core/core.php:801 admin/core/core.php:1836
|
1875 |
+
#: admin/core/core.php:1970 admin/core/core.php:2076
|
1876 |
#: admin/email-log-settings/email-log-settings.php:78
|
1877 |
#: admin/maintenance/maintenance.php:191 admin/maintenance/maintenance.php:193
|
1878 |
#: admin/security-log/security-log.php:218 admin/theme-skin/theme-skin.php:84
|
1879 |
+
#: admin/wizard/wizard.php:1107 admin/wizard/wizard.php:1176
|
1880 |
msgid ""
|
1881 |
"Protect your WordPress uploads folder against remote access or execution of "
|
1882 |
"files: "
|
1883 |
msgstr ""
|
1884 |
|
1885 |
+
#: admin/core/core.php:219 admin/core/core.php:801 admin/core/core.php:1836
|
1886 |
+
#: admin/core/core.php:1970 admin/core/core.php:2076
|
1887 |
#: admin/email-log-settings/email-log-settings.php:78
|
1888 |
#: admin/maintenance/maintenance.php:191 admin/maintenance/maintenance.php:193
|
1889 |
#: admin/security-log/security-log.php:218 admin/theme-skin/theme-skin.php:84
|
1890 |
+
#: admin/wizard/wizard.php:1107 admin/wizard/wizard.php:1176
|
1891 |
msgid "Get BPS Pro Uploads Anti-Exploit Guard"
|
1892 |
msgstr ""
|
1893 |
|
1894 |
+
#: admin/core/core.php:225 admin/core/core.php:813 admin/core/core.php:1877
|
1895 |
+
#: admin/core/core.php:1913 admin/core/core.php:1930 admin/login/login.php:164
|
1896 |
#: admin/login/login.php:222 admin/login/login.php:944
|
1897 |
#: admin/login/login.php:1199 admin/system-info/system-info.php:99
|
1898 |
#: admin/system-info/system-info.php:1059
|
1899 |
msgid "Permission Denied"
|
1900 |
msgstr ""
|
1901 |
|
1902 |
+
#: admin/core/core.php:227
|
1903 |
msgid "Activate|Deactivate Security Modes"
|
1904 |
msgstr ""
|
1905 |
|
1906 |
+
#: admin/core/core.php:229 admin/core/core.php:231 admin/core/core.php:353
|
1907 |
msgid "Root Folder BulletProof Mode (RBM)"
|
1908 |
msgstr ""
|
1909 |
|
1910 |
+
#: admin/core/core.php:229 admin/core/core.php:351 admin/core/core.php:452
|
1911 |
+
#: admin/core/core.php:580 admin/core/core.php:668 admin/core/core.php:756
|
1912 |
+
#: admin/core/core.php:807 admin/core/core.php:1842
|
1913 |
#: admin/db-backup-security/db-backup-security.php:298
|
1914 |
#: admin/db-backup-security/db-backup-security.php:1248
|
1915 |
#: admin/db-backup-security/db-backup-security.php:1404
|
1916 |
#: admin/email-log-settings/email-log-settings.php:84 admin/login/login.php:210
|
1917 |
#: admin/login/login.php:837 admin/login/login.php:1169
|
1918 |
#: admin/login/login.php:1709 admin/maintenance/maintenance.php:202
|
1919 |
+
#: admin/mscan/mscan.php:216 admin/mscan/mscan.php:1997
|
1920 |
+
#: admin/mscan/mscan.php:2204 admin/mscan/mscan.php:2890
|
1921 |
#: admin/security-log/security-log.php:224 admin/system-info/system-info.php:81
|
1922 |
+
#: admin/theme-skin/theme-skin.php:90 admin/wizard/wizard.php:1113
|
1923 |
+
#: admin/wizard/wizard.php:1182 admin/wizard/wizard.php:1694
|
1924 |
msgid "Read Me"
|
1925 |
msgstr ""
|
1926 |
|
1927 |
+
#: admin/core/core.php:236 admin/core/core.php:358 admin/core/core.php:1860
|
1928 |
#: admin/db-backup-security/db-backup-security.php:306
|
1929 |
#: admin/email-log-settings/email-log-settings.php:92
|
1930 |
#: admin/login/login.php:1181 admin/maintenance/maintenance.php:210
|
1931 |
+
#: admin/mscan/mscan.php:223 admin/system-info/system-info.php:89
|
1932 |
msgid "Forum Help Links: "
|
1933 |
msgstr ""
|
1934 |
|
1935 |
+
#: admin/core/core.php:239 admin/core/core.php:361
|
1936 |
msgid "Setup Wizard & Other Video Tutorials"
|
1937 |
msgstr ""
|
1938 |
|
1939 |
+
#: admin/core/core.php:240 admin/core/core.php:362
|
1940 |
+
#: admin/email-log-settings/email-log-settings.php:95
|
1941 |
#: admin/security-log/security-log.php:235
|
1942 |
msgid "BPS Troubleshooting Steps"
|
1943 |
msgstr ""
|
1944 |
|
1945 |
+
#: admin/core/core.php:274 admin/core/core.php:277 admin/core/core.php:280
|
1946 |
+
#: admin/core/core.php:283 admin/core/core.php:291 admin/core/core.php:294
|
1947 |
+
#: admin/core/core.php:297 admin/core/core.php:300
|
1948 |
msgid "RBM Status: "
|
1949 |
msgstr ""
|
1950 |
|
1951 |
+
#: admin/core/core.php:274 admin/core/core.php:291 admin/core/core.php:401
|
1952 |
+
#: admin/core/core.php:415 admin/core/core.php:616 admin/core/core.php:630
|
1953 |
+
#: admin/core/core.php:704 admin/core/core.php:718
|
1954 |
msgid "Disabled"
|
1955 |
msgstr ""
|
1956 |
|
1957 |
+
#: admin/core/core.php:277 admin/core/core.php:294
|
1958 |
msgid "Root htaccess File Does Not Exist"
|
1959 |
msgstr ""
|
1960 |
|
1961 |
+
#: admin/core/core.php:280 admin/core/core.php:297 admin/core/core.php:407
|
1962 |
+
#: admin/core/core.php:421 admin/core/core.php:622 admin/core/core.php:636
|
1963 |
+
#: admin/core/core.php:710 admin/core/core.php:724
|
1964 |
#: admin/system-info/system-info.php:238 admin/system-info/system-info.php:279
|
1965 |
msgid "Activated"
|
1966 |
msgstr ""
|
1967 |
|
1968 |
+
#: admin/core/core.php:283 admin/core/core.php:300 admin/core/core.php:404
|
1969 |
+
#: admin/core/core.php:418 admin/core/core.php:619 admin/core/core.php:633
|
1970 |
+
#: admin/core/core.php:707 admin/core/core.php:721
|
1971 |
#: admin/system-info/system-info.php:247 admin/system-info/system-info.php:281
|
1972 |
msgid "Deactivated"
|
1973 |
msgstr ""
|
1974 |
|
1975 |
+
#: admin/core/core.php:317 admin/core/core.php:335
|
1976 |
msgid "Click OK to Activate Root Folder BulletProof Mode or click Cancel."
|
1977 |
msgstr ""
|
1978 |
|
1979 |
+
#: admin/core/core.php:325 admin/core/core.php:343
|
1980 |
msgid "Click OK to Deactivate Root Folder BulletProof Mode or click Cancel."
|
1981 |
msgstr ""
|
1982 |
|
1983 |
+
#: admin/core/core.php:351
|
1984 |
msgid "wp-admin Folder BulletProof Mode (WBM)"
|
1985 |
msgstr ""
|
1986 |
|
1987 |
+
#: admin/core/core.php:401 admin/core/core.php:404 admin/core/core.php:407
|
1988 |
+
#: admin/core/core.php:415 admin/core/core.php:418 admin/core/core.php:421
|
1989 |
msgid "WBM Status: "
|
1990 |
msgstr ""
|
1991 |
|
1992 |
+
#: admin/core/core.php:436
|
1993 |
msgid "Click OK to Activate wp-admin Folder BulletProof Mode or click Cancel."
|
1994 |
msgstr ""
|
1995 |
|
1996 |
+
#: admin/core/core.php:444
|
1997 |
msgid ""
|
1998 |
"Click OK to Deactivate wp-admin Folder BulletProof Mode or click Cancel."
|
1999 |
msgstr ""
|
2000 |
|
2001 |
+
#: admin/core/core.php:452 admin/core/core.php:454
|
2002 |
msgid "Hidden Plugin Folders|Files Cron (HPF)"
|
2003 |
msgstr ""
|
2004 |
|
2005 |
+
#: admin/core/core.php:487 admin/core/core.php:490 admin/core/core.php:498
|
2006 |
+
#: admin/core/core.php:501
|
2007 |
msgid "HPF Status: "
|
2008 |
msgstr ""
|
2009 |
|
2010 |
+
#: admin/core/core.php:487 admin/core/core.php:498 admin/core/core.php:535
|
2011 |
msgid "HPF Cron On"
|
2012 |
msgstr ""
|
2013 |
|
2014 |
+
#: admin/core/core.php:490 admin/core/core.php:501 admin/core/core.php:536
|
2015 |
msgid "HPF Cron Off"
|
2016 |
msgstr ""
|
2017 |
|
2018 |
+
#: admin/core/core.php:524
|
2019 |
msgid "Run Check Every 1 Minute"
|
2020 |
msgstr ""
|
2021 |
|
2022 |
+
#: admin/core/core.php:525
|
2023 |
msgid "Run Check Every 5 Minutes"
|
2024 |
msgstr ""
|
2025 |
|
2026 |
+
#: admin/core/core.php:526
|
2027 |
msgid "Run Check Every 10 Minutes"
|
2028 |
msgstr ""
|
2029 |
|
2030 |
+
#: admin/core/core.php:527
|
2031 |
msgid "Run Check Every 15 Minutes"
|
2032 |
msgstr ""
|
2033 |
|
2034 |
+
#: admin/core/core.php:528
|
2035 |
msgid "Run Check Every 30 Minutes"
|
2036 |
msgstr ""
|
2037 |
|
2038 |
+
#: admin/core/core.php:529
|
2039 |
msgid "Run Check Every 60 Minutes"
|
2040 |
msgstr ""
|
2041 |
|
2042 |
+
#: admin/core/core.php:530
|
2043 |
msgid "Run Check Once Daily"
|
2044 |
msgstr ""
|
2045 |
|
2046 |
+
#: admin/core/core.php:539
|
2047 |
msgid "Save HPF Cron Options"
|
2048 |
msgstr ""
|
2049 |
|
2050 |
+
#: admin/core/core.php:539
|
2051 |
msgid ""
|
2052 |
"The default Cron Frequency is: Run Check Every 15 Minutes. This is a "
|
2053 |
"lightweight check that uses an insignificant amount of resources/memory so 4 "
|
2059 |
"OK to proceed or click Cancel"
|
2060 |
msgstr ""
|
2061 |
|
2062 |
+
#: admin/core/core.php:556
|
2063 |
msgid "Add Ignore rules using plugin folder names or file names."
|
2064 |
msgstr ""
|
2065 |
|
2066 |
+
#: admin/core/core.php:556
|
2067 |
msgid "Use a comma and a space between folder and/or file names."
|
2068 |
msgstr ""
|
2069 |
|
2070 |
+
#: admin/core/core.php:556
|
2071 |
msgid "Example: plugin-folder-name, example-file-name.php"
|
2072 |
msgstr ""
|
2073 |
|
2074 |
+
#: admin/core/core.php:562
|
2075 |
msgid ""
|
2076 |
"This option is for adding ignore rules for Hidden or Empty Plugin Folders "
|
2077 |
"Detected by BPS or Non-standard WP files detected by BPS in your /plugins/ "
|
2078 |
"folder."
|
2079 |
msgstr ""
|
2080 |
|
2081 |
+
#: admin/core/core.php:562
|
2082 |
msgid ""
|
2083 |
"This is an independent option setting that does not require clicking any "
|
2084 |
"other buttons."
|
2085 |
msgstr ""
|
2086 |
|
2087 |
+
#: admin/core/core.php:562 admin/maintenance/maintenance.php:696
|
2088 |
#: admin/security-log/security-log.php:448
|
2089 |
#: admin/security-log/security-log.php:463
|
2090 |
#: admin/security-log/security-log.php:681
|
2092 |
msgid "Click OK to proceed or click Cancel."
|
2093 |
msgstr ""
|
2094 |
|
2095 |
+
#: admin/core/core.php:580
|
2096 |
msgid "Master htaccess Folder BulletProof Mode (MBM)"
|
2097 |
msgstr ""
|
2098 |
|
2099 |
+
#: admin/core/core.php:582
|
2100 |
msgid "MBM BulletProof Modes"
|
2101 |
msgstr ""
|
2102 |
|
2103 |
+
#: admin/core/core.php:616 admin/core/core.php:619 admin/core/core.php:622
|
2104 |
+
#: admin/core/core.php:630 admin/core/core.php:633 admin/core/core.php:636
|
2105 |
msgid "MBM Status: "
|
2106 |
msgstr ""
|
2107 |
|
2108 |
+
#: admin/core/core.php:651
|
2109 |
msgid "Click OK to Activate MBM BulletProof Mode or click Cancel."
|
2110 |
msgstr ""
|
2111 |
|
2112 |
+
#: admin/core/core.php:659
|
2113 |
msgid "Click OK to Deactivate MBM BulletProof Mode or click Cancel."
|
2114 |
msgstr ""
|
2115 |
|
2116 |
+
#: admin/core/core.php:668
|
2117 |
msgid "BPS Backup Folder BulletProof Mode (BBM)"
|
2118 |
msgstr ""
|
2119 |
|
2120 |
+
#: admin/core/core.php:670
|
2121 |
msgid "BBM BulletProof Modes"
|
2122 |
msgstr ""
|
2123 |
|
2124 |
+
#: admin/core/core.php:704 admin/core/core.php:707 admin/core/core.php:710
|
2125 |
+
#: admin/core/core.php:718 admin/core/core.php:721 admin/core/core.php:724
|
2126 |
msgid "BBM Status: "
|
2127 |
msgstr ""
|
2128 |
|
2129 |
+
#: admin/core/core.php:739
|
2130 |
msgid "Click OK to Activate BBM BulletProof Mode or click Cancel."
|
2131 |
msgstr ""
|
2132 |
|
2133 |
+
#: admin/core/core.php:747
|
2134 |
msgid ""
|
2135 |
"Caution: BPS Backup Folder BulletProof Mode (BBM) should only be deactivated "
|
2136 |
"for testing or troubleshooting. Be sure to activate BBM BulletProof Mode "
|
2137 |
"after you are done testing or troubleshooting."
|
2138 |
msgstr ""
|
2139 |
|
2140 |
+
#: admin/core/core.php:747
|
2141 |
msgid "Click OK to Deactivate BBM BulletProof Mode or click Cancel."
|
2142 |
msgstr ""
|
2143 |
|
2144 |
+
#: admin/core/core.php:756 admin/core/core.php:758
|
2145 |
msgid "Backup & Restore BPS htaccess Files"
|
2146 |
msgstr ""
|
2147 |
|
2148 |
+
#: admin/core/core.php:774
|
2149 |
msgid "Click OK to Backup BPS htaccess files or click Cancel."
|
2150 |
msgstr ""
|
2151 |
|
2152 |
+
#: admin/core/core.php:782
|
2153 |
msgid "Click OK to Restore BPS htaccess files or click Cancel."
|
2154 |
msgstr ""
|
2155 |
|
2156 |
+
#: admin/core/core.php:801
|
2157 |
msgid "htaccess File Editor ~ "
|
2158 |
msgstr ""
|
2159 |
|
2160 |
+
#: admin/core/core.php:801
|
2161 |
msgid ""
|
2162 |
"Check or edit BPS htaccess files/code manually/directly for testing. Use BPS "
|
2163 |
"Custom Code to save htaccess code permanently"
|
2164 |
msgstr ""
|
2165 |
|
2166 |
+
#: admin/core/core.php:807 admin/core/core.php:809
|
2167 |
msgid "htaccess File Editing"
|
2168 |
msgstr ""
|
2169 |
|
2170 |
+
#: admin/core/core.php:840
|
2171 |
msgid "htaccess Files Disabled: secure.htaccess Master file is disabled."
|
2172 |
msgstr ""
|
2173 |
|
2174 |
+
#: admin/core/core.php:844
|
2175 |
msgid "ERROR: A secure.htaccess Master file was NOT found."
|
2176 |
msgstr ""
|
2177 |
|
2178 |
+
#: admin/core/core.php:853
|
2179 |
msgid ""
|
2180 |
"File Open and Write test successful! The secure.htaccess Master file is "
|
2181 |
"writable."
|
2182 |
msgstr ""
|
2183 |
|
2184 |
+
#: admin/core/core.php:858 admin/core/core.php:948 admin/core/core.php:1061
|
2185 |
+
#: admin/core/core.php:1250 admin/security-log/security-log.php:744
|
2186 |
msgid "Cannot write to file: "
|
2187 |
msgstr ""
|
2188 |
|
2189 |
+
#: admin/core/core.php:873
|
2190 |
msgid ""
|
2191 |
"htaccess Files Disabled: secure.htaccess Master file writing is disabled. "
|
2192 |
msgstr ""
|
2193 |
|
2194 |
+
#: admin/core/core.php:893
|
2195 |
msgid "Error: Unable to write to the secure.htaccess Master file."
|
2196 |
msgstr ""
|
2197 |
|
2198 |
+
#: admin/core/core.php:908
|
2199 |
msgid "The secure.htaccess Master file has been updated."
|
2200 |
msgstr ""
|
2201 |
|
2202 |
+
#: admin/core/core.php:930
|
2203 |
msgid "htaccess Files Disabled: default.htaccess Master file is disabled."
|
2204 |
msgstr ""
|
2205 |
|
2206 |
+
#: admin/core/core.php:934
|
2207 |
msgid "ERROR: A default.htaccess Master file was NOT found."
|
2208 |
msgstr ""
|
2209 |
|
2210 |
+
#: admin/core/core.php:943
|
2211 |
msgid ""
|
2212 |
"File Open and Write test successful! The default.htaccess Master file is "
|
2213 |
"writable."
|
2214 |
msgstr ""
|
2215 |
|
2216 |
+
#: admin/core/core.php:963
|
2217 |
msgid ""
|
2218 |
"htaccess Files Disabled: default.htaccess Master file writing is disabled. "
|
2219 |
msgstr ""
|
2220 |
|
2221 |
+
#: admin/core/core.php:983
|
2222 |
msgid "Error: Unable to write to the default.htaccess Master file."
|
2223 |
msgstr ""
|
2224 |
|
2225 |
+
#: admin/core/core.php:998
|
2226 |
msgid "The default.htaccess Master file has been updated."
|
2227 |
msgstr ""
|
2228 |
|
2229 |
+
#: admin/core/core.php:1010
|
2230 |
msgid ""
|
2231 |
" Check that the /bps-backup/ and /master-backups/ folders exist and the "
|
2232 |
"folder permissions or Ownership for these folders."
|
2233 |
msgstr ""
|
2234 |
|
2235 |
+
#: admin/core/core.php:1015
|
2236 |
msgid ""
|
2237 |
"Your Custom default.htaccess Master file has been successfully saved to: "
|
2238 |
msgstr ""
|
2239 |
|
2240 |
+
#: admin/core/core.php:1037
|
2241 |
msgid "wpadmin-secure.htaccess file writing is disabled."
|
2242 |
msgstr ""
|
2243 |
|
2244 |
+
#: admin/core/core.php:1043
|
2245 |
msgid ""
|
2246 |
"htaccess Files Disabled: wpadmin-secure.htaccess Master file is disabled."
|
2247 |
msgstr ""
|
2248 |
|
2249 |
+
#: admin/core/core.php:1047
|
2250 |
msgid "ERROR: A wpadmin-secure.htaccess Master file was NOT found."
|
2251 |
msgstr ""
|
2252 |
|
2253 |
+
#: admin/core/core.php:1056
|
2254 |
msgid ""
|
2255 |
"File Open and Write test successful! The wpadmin-secure.htaccess Master file "
|
2256 |
"is writable."
|
2257 |
msgstr ""
|
2258 |
|
2259 |
+
#: admin/core/core.php:1077
|
2260 |
msgid ""
|
2261 |
"htaccess Files Disabled: wpadmin-secure.htaccess Master file writing is "
|
2262 |
"disabled. "
|
2263 |
msgstr ""
|
2264 |
|
2265 |
+
#: admin/core/core.php:1097
|
2266 |
msgid "Error: Unable to write to the wpadmin-secure.htaccess Master file."
|
2267 |
msgstr ""
|
2268 |
|
2269 |
+
#: admin/core/core.php:1112
|
2270 |
msgid "The wpadmin-secure.htaccess Master file has been updated."
|
2271 |
msgstr ""
|
2272 |
|
2273 |
+
#: admin/core/core.php:1134
|
2274 |
msgid "htaccess Files Disabled: Root htaccess file does not exist."
|
2275 |
msgstr ""
|
2276 |
|
2277 |
+
#: admin/core/core.php:1138
|
2278 |
msgid "ERROR: An htaccess file was NOT found in your root folder"
|
2279 |
msgstr ""
|
2280 |
|
2281 |
+
#: admin/core/core.php:1147
|
2282 |
msgid ""
|
2283 |
"File Open and Write test successful! Your currently active root htaccess "
|
2284 |
"file is writable."
|
2285 |
msgstr ""
|
2286 |
|
2287 |
+
#: admin/core/core.php:1152
|
2288 |
msgid "Your root htaccess file is Locked with Read Only Permissions."
|
2289 |
msgstr ""
|
2290 |
|
2291 |
+
#: admin/core/core.php:1152
|
2292 |
msgid ""
|
2293 |
"Use the Lock and Unlock buttons below to Lock or Unlock your root htaccess "
|
2294 |
"file for editing."
|
2295 |
msgstr ""
|
2296 |
|
2297 |
+
#: admin/core/core.php:1187
|
2298 |
msgid ""
|
2299 |
"Error: Unable to write to the Root htaccess file. If your Root htaccess file "
|
2300 |
"is locked you must unlock first."
|
2301 |
msgstr ""
|
2302 |
|
2303 |
+
#: admin/core/core.php:1202
|
2304 |
msgid "Your currently active root htaccess file has been updated."
|
2305 |
msgstr ""
|
2306 |
|
2307 |
+
#: admin/core/core.php:1226
|
2308 |
msgid "wp-admin active htaccess file writing is disabled."
|
2309 |
msgstr ""
|
2310 |
|
2311 |
+
#: admin/core/core.php:1232
|
2312 |
msgid "htaccess Files Disabled: wp-admin folder htaccess file does not exist."
|
2313 |
msgstr ""
|
2314 |
|
2315 |
+
#: admin/core/core.php:1236
|
2316 |
msgid "ERROR: An htaccess file was NOT found in your wp-admin folder"
|
2317 |
msgstr ""
|
2318 |
|
2319 |
+
#: admin/core/core.php:1245
|
2320 |
msgid ""
|
2321 |
"File Open and Write test successful! Your currently active wp-admin htaccess "
|
2322 |
"file is writable."
|
2323 |
msgstr ""
|
2324 |
|
2325 |
+
#: admin/core/core.php:1286
|
2326 |
msgid "Error: Unable to write to the wp-admin htaccess file."
|
2327 |
msgstr ""
|
2328 |
|
2329 |
+
#: admin/core/core.php:1301
|
2330 |
msgid "Your currently active wp-admin htaccess file has been updated."
|
2331 |
msgstr ""
|
2332 |
|
2333 |
+
#: admin/core/core.php:1318
|
2334 |
msgid "Your Root htaccess file has been Locked."
|
2335 |
msgstr ""
|
2336 |
|
2337 |
+
#: admin/core/core.php:1323
|
2338 |
msgid "Unable to Lock your Root htaccess file."
|
2339 |
msgstr ""
|
2340 |
|
2341 |
+
#: admin/core/core.php:1337
|
2342 |
msgid "Your Root htaccess file has been Unlocked."
|
2343 |
msgstr ""
|
2344 |
|
2345 |
+
#: admin/core/core.php:1342
|
2346 |
msgid "Unable to Unlock your Root htaccess file."
|
2347 |
msgstr ""
|
2348 |
|
2349 |
+
#: admin/core/core.php:1365
|
2350 |
msgid "Click OK to Lock your Root htaccess file or click Cancel."
|
2351 |
msgstr ""
|
2352 |
|
2353 |
+
#: admin/core/core.php:1365
|
2354 |
msgid ""
|
2355 |
"Note: The File Open and Write Test window will still display the last status "
|
2356 |
"of the file as Unlocked. To see the current status refresh your browser."
|
2357 |
msgstr ""
|
2358 |
|
2359 |
+
#: admin/core/core.php:1373
|
2360 |
msgid "Click OK to Unlock your Root htaccess file or click Cancel."
|
2361 |
msgstr ""
|
2362 |
|
2363 |
+
#: admin/core/core.php:1373
|
2364 |
msgid ""
|
2365 |
"Note: The File Open and Write Test window will still display the last status "
|
2366 |
"of the file as Locked. To see the current status refresh your browser."
|
2367 |
msgstr ""
|
2368 |
|
2369 |
+
#: admin/core/core.php:1382
|
2370 |
msgid ""
|
2371 |
"Turning AutoLock On will allow BPS Pro to automatically lock your Root ."
|
2372 |
"htaccess file. For some folks this causes a problem because their Web Hosts "
|
2374 |
"BPS Pro to AutoLock the Root .htaccess file works fine."
|
2375 |
msgstr ""
|
2376 |
|
2377 |
+
#: admin/core/core.php:1382
|
2378 |
msgid "Click OK to Turn AutoLock On or click Cancel."
|
2379 |
msgstr ""
|
2380 |
|
2381 |
+
#: admin/core/core.php:1384 admin/system-info/system-info.php:776
|
2382 |
#: admin/system-info/system-info.php:792 admin/system-info/system-info.php:800
|
2383 |
#: admin/system-info/system-info.php:808 admin/system-info/system-info.php:816
|
2384 |
#: admin/system-info/system-info.php:824 admin/system-info/system-info.php:832
|
2390 |
msgid "On"
|
2391 |
msgstr ""
|
2392 |
|
2393 |
+
#: admin/core/core.php:1394
|
2394 |
msgid ""
|
2395 |
"Turning AutoLock Off will prevent BPS Pro from automatically locking your "
|
2396 |
"Root .htaccess file. For some folks this is necessary because their Web "
|
2398 |
"allowing BPS Pro to AutoLock the Root .htaccess file works fine."
|
2399 |
msgstr ""
|
2400 |
|
2401 |
+
#: admin/core/core.php:1394
|
2402 |
msgid "Click OK to Turn AutoLock Off or click Cancel."
|
2403 |
msgstr ""
|
2404 |
|
2405 |
+
#: admin/core/core.php:1396 admin/system-info/system-info.php:552
|
2406 |
#: admin/system-info/system-info.php:795 admin/system-info/system-info.php:803
|
2407 |
#: admin/system-info/system-info.php:811 admin/system-info/system-info.php:819
|
2408 |
#: admin/system-info/system-info.php:827 admin/system-info/system-info.php:835
|
2414 |
msgid "Off"
|
2415 |
msgstr ""
|
2416 |
|
2417 |
+
#: admin/core/core.php:1411
|
2418 |
msgid "secure.htaccess"
|
2419 |
msgstr ""
|
2420 |
|
2421 |
+
#: admin/core/core.php:1412
|
2422 |
msgid "default.htaccess"
|
2423 |
msgstr ""
|
2424 |
|
2425 |
+
#: admin/core/core.php:1413
|
2426 |
msgid "wpadmin-secure.htaccess"
|
2427 |
msgstr ""
|
2428 |
|
2429 |
+
#: admin/core/core.php:1414
|
2430 |
msgid "Your Current Root htaccess File"
|
2431 |
msgstr ""
|
2432 |
|
2433 |
+
#: admin/core/core.php:1415
|
2434 |
msgid "Your Current wp-admin htaccess File"
|
2435 |
msgstr ""
|
2436 |
|
2437 |
+
#: admin/core/core.php:1438 admin/core/core.php:1510 admin/core/core.php:1582
|
2438 |
+
#: admin/core/core.php:1685 admin/core/core.php:1759
|
2439 |
msgid ""
|
2440 |
"If you see an error or are unable to save your editing changes then click "
|
2441 |
"the Encrypt htaccess Code button first and then click the Update File "
|
2442 |
"button. Mouse over the question mark image to the right for help info."
|
2443 |
msgstr ""
|
2444 |
|
2445 |
+
#: admin/core/core.php:1438 admin/core/core.php:1510 admin/core/core.php:1582
|
2446 |
+
#: admin/core/core.php:1685 admin/core/core.php:1759
|
2447 |
msgid ""
|
2448 |
"If your web host currently has ModSecurity installed or installs ModSecurity "
|
2449 |
"at a later time then ModSecurity will prevent you from saving your htaccess "
|
2451 |
"button."
|
2452 |
msgstr ""
|
2453 |
|
2454 |
+
#: admin/core/core.php:1438 admin/core/core.php:1510 admin/core/core.php:1582
|
2455 |
+
#: admin/core/core.php:1685 admin/core/core.php:1759
|
2456 |
msgid ""
|
2457 |
"If you click the Encrypt htaccess Code button and then want to edit your "
|
2458 |
"code again click the Decrypt htaccess Code button. After you are done "
|
2460 |
"File button."
|
2461 |
msgstr ""
|
2462 |
|
2463 |
+
#: admin/core/core.php:1438 admin/core/core.php:1510 admin/core/core.php:1582
|
2464 |
+
#: admin/core/core.php:1685 admin/core/core.php:1759
|
2465 |
msgid "Click the htaccess File Editing Read Me help button for more help info."
|
2466 |
msgstr ""
|
2467 |
|
2468 |
+
#: admin/core/core.php:1681
|
2469 |
msgid "YOUR ROOT HTACCESS FILE IS LOCKED."
|
2470 |
msgstr ""
|
2471 |
|
2472 |
+
#: admin/core/core.php:1681
|
2473 |
msgid "YOUR FILE EDITS|CHANGES CANNOT BE SAVED."
|
2474 |
msgstr ""
|
2475 |
|
2476 |
+
#: admin/core/core.php:1681
|
2477 |
msgid ""
|
2478 |
"Click Cancel, copy the file editing changes you made to save them and then "
|
2479 |
"click the Unlock .htaccess File button to unlock your Root .htaccess file. "
|
2482 |
"to save your file edits/changes."
|
2483 |
msgstr ""
|
2484 |
|
2485 |
+
#: admin/core/core.php:1836
|
2486 |
msgid "htaccess File Custom Code ~ "
|
2487 |
msgstr ""
|
2488 |
|
2489 |
+
#: admin/core/core.php:1836
|
2490 |
msgid ""
|
2491 |
"Save custom htaccess code for your Root and wp-admin htaccess Files "
|
2492 |
"permanently"
|
2493 |
msgstr ""
|
2494 |
|
2495 |
+
#: admin/core/core.php:1848
|
2496 |
msgid "Reset|Recheck Dismiss Notices: "
|
2497 |
msgstr ""
|
2498 |
|
2499 |
+
#: admin/core/core.php:1863
|
2500 |
msgid "Brute Force Login Page Protection code"
|
2501 |
msgstr ""
|
2502 |
|
2503 |
+
#: admin/core/core.php:1871 admin/core/core.php:2119
|
2504 |
+
#: admin/wizard/wizard.php:1128
|
2505 |
msgid "Custom Code Video Tutorial"
|
2506 |
msgstr ""
|
2507 |
|
2508 |
+
#: admin/core/core.php:1872
|
2509 |
msgid "BulletProof Security Forum"
|
2510 |
msgstr ""
|
2511 |
|
2512 |
+
#: admin/core/core.php:1889
|
2513 |
msgid ""
|
2514 |
"Clicking OK will Import all of your Root and wp-admin Custom Code from the "
|
2515 |
"cc-master.zip file on your computer."
|
2516 |
msgstr ""
|
2517 |
|
2518 |
+
#: admin/core/core.php:1889
|
2519 |
msgid "Click OK to Import Custom Code or click Cancel."
|
2520 |
msgstr ""
|
2521 |
|
2522 |
+
#: admin/core/core.php:1898
|
2523 |
msgid ""
|
2524 |
"Clicking OK will Export (copy) all of your Root and wp-admin Custom Code "
|
2525 |
"into the cc-master.zip file, which you can then download to your computer by "
|
2527 |
"success message."
|
2528 |
msgstr ""
|
2529 |
|
2530 |
+
#: admin/core/core.php:1898
|
2531 |
msgid "Click OK to Export Custom Code or click Cancel."
|
2532 |
msgstr ""
|
2533 |
|
2534 |
+
#: admin/core/core.php:1906
|
2535 |
msgid ""
|
2536 |
"Clicking OK will delete all of your Root and wp-admin Custom Code from all "
|
2537 |
"of the Custom Code text boxes."
|
2538 |
msgstr ""
|
2539 |
|
2540 |
+
#: admin/core/core.php:1906
|
2541 |
msgid "Click OK to Delete Custom Code or click Cancel."
|
2542 |
msgstr ""
|
2543 |
|
2544 |
+
#: admin/core/core.php:1957
|
2545 |
msgid ""
|
2546 |
"Your My Notes Personal Notes and/or htaccess Code Notes saved successfully "
|
2547 |
"to your WordPress Database."
|
2548 |
msgstr ""
|
2549 |
|
2550 |
+
#: admin/core/core.php:1970
|
2551 |
msgid "My Notes ~ "
|
2552 |
msgstr ""
|
2553 |
|
2554 |
+
#: admin/core/core.php:1970
|
2555 |
msgid "Save Personal Notes and htaccess Code Notes to your WordPress Database"
|
2556 |
msgstr ""
|
2557 |
|
2558 |
+
#: admin/core/core.php:1991
|
2559 |
msgid ""
|
2560 |
"If you are unable to save custom htaccess code and/or see an error message "
|
2561 |
"when trying to save custom htaccess code, "
|
2562 |
msgstr ""
|
2563 |
|
2564 |
+
#: admin/core/core.php:1991
|
2565 |
msgid ""
|
2566 |
"click the Encrypt My Notes button first and then click the Save My Notes "
|
2567 |
"button."
|
2568 |
msgstr ""
|
2569 |
|
2570 |
+
#: admin/core/core.php:1991
|
2571 |
msgid "Mouse over the question mark image to the right for help info."
|
2572 |
msgstr ""
|
2573 |
|
2574 |
+
#: admin/core/core.php:1991
|
2575 |
msgid ""
|
2576 |
"If your web host currently has ModSecurity installed or installs ModSecurity "
|
2577 |
"at a later time then ModSecurity will prevent you from saving your custom "
|
2579 |
"button."
|
2580 |
msgstr ""
|
2581 |
|
2582 |
+
#: admin/core/core.php:1991
|
2583 |
msgid ""
|
2584 |
"If you click the Encrypt My Notes button, but then want to add or edit "
|
2585 |
"additional custom code click the Decrypt My Notes button. After you are done "
|
2587 |
"clicking the Save My Notes button."
|
2588 |
msgstr ""
|
2589 |
|
2590 |
+
#: admin/core/core.php:2063
|
2591 |
#: admin/db-backup-security/db-backup-security.php:1743
|
2592 |
+
#: admin/mscan/mscan.php:3497 admin/theme-skin/theme-skin.php:255
|
2593 |
msgid "Whats New in "
|
2594 |
msgstr ""
|
2595 |
|
2596 |
+
#: admin/core/core.php:2063
|
2597 |
msgid " and General Help Info & Tips"
|
2598 |
msgstr ""
|
2599 |
|
2600 |
+
#: admin/core/core.php:2068
|
2601 |
msgid "The BPS Changelog|Whats New page has been moved to the "
|
2602 |
msgstr ""
|
2603 |
|
2604 |
+
#: admin/core/core.php:2068
|
2605 |
msgid "Reasons for this Changelog|Whats New page change: "
|
2606 |
msgstr ""
|
2607 |
|
2608 |
+
#: admin/core/core.php:2068
|
2609 |
msgid ""
|
2610 |
"The BPS Changelog|Whats New page will not have to be translated by the "
|
2611 |
"WordPress PolyGlots Language Packs Team for each new version release of BPS, "
|
2614 |
"BPS version changes through the years and other beneficial reasons."
|
2615 |
msgstr ""
|
2616 |
|
2617 |
+
#: admin/core/core.php:2076 admin/db-backup-security/db-backup-security.php:292
|
2618 |
#: admin/db-backup-security/db-backup-security.php:1242
|
2619 |
#: admin/db-backup-security/db-backup-security.php:1398
|
2620 |
#: admin/email-log-settings/email-log-settings.php:78
|
2621 |
#: admin/maintenance/maintenance.php:191 admin/maintenance/maintenance.php:193
|
2622 |
#: admin/security-log/security-log.php:218 admin/theme-skin/theme-skin.php:84
|
2623 |
+
#: admin/wizard/wizard.php:1107 admin/wizard/wizard.php:1176
|
2624 |
msgid ""
|
2625 |
"Protect all of your website files with AutoRestore|Quarantine Intrusion "
|
2626 |
"Detection & Prevention System: "
|
2627 |
msgstr ""
|
2628 |
|
2629 |
+
#: admin/core/core.php:2076 admin/db-backup-security/db-backup-security.php:292
|
2630 |
#: admin/db-backup-security/db-backup-security.php:1242
|
2631 |
#: admin/db-backup-security/db-backup-security.php:1398
|
2632 |
#: admin/email-log-settings/email-log-settings.php:78
|
2633 |
#: admin/maintenance/maintenance.php:191 admin/maintenance/maintenance.php:193
|
2634 |
+
#: admin/security-log/security-log.php:218 admin/theme-skin/theme-skin.php:84
|
2635 |
+
#: admin/wizard/wizard.php:1107 admin/wizard/wizard.php:1176
|
|
|
2636 |
msgid "Get BPS Pro ARQ IDPS"
|
2637 |
msgstr ""
|
2638 |
|
2639 |
+
#: admin/core/core.php:2076 admin/email-log-settings/email-log-settings.php:78
|
2640 |
#: admin/maintenance/maintenance.php:191 admin/maintenance/maintenance.php:193
|
2641 |
#: admin/security-log/security-log.php:218 admin/theme-skin/theme-skin.php:84
|
2642 |
+
#: admin/wizard/wizard.php:1107 admin/wizard/wizard.php:1176
|
2643 |
msgid ""
|
2644 |
"Protect against SpamBot & HackerBot (auto-registering, auto-logins, auto-"
|
2645 |
"posting, auto-commenting): "
|
2646 |
msgstr ""
|
2647 |
|
2648 |
+
#: admin/core/core.php:2076 admin/email-log-settings/email-log-settings.php:78
|
2649 |
#: admin/login/login.php:204 admin/login/login.php:831
|
2650 |
#: admin/maintenance/maintenance.php:191 admin/maintenance/maintenance.php:193
|
2651 |
#: admin/security-log/security-log.php:218 admin/theme-skin/theme-skin.php:84
|
2652 |
+
#: admin/wizard/wizard.php:1107 admin/wizard/wizard.php:1176
|
2653 |
msgid "Get BPS Pro JTC Anti-Spam|Anti-Hacker"
|
2654 |
msgstr ""
|
2655 |
|
2656 |
+
#: admin/core/core.php:2081
|
2657 |
msgid "General Help Info & Tips:"
|
2658 |
msgstr ""
|
2659 |
|
2660 |
+
#: admin/core/core.php:2085
|
2661 |
msgid "If BPS plugin pages are not displaying visually correct you can "
|
2662 |
msgstr ""
|
2663 |
|
2664 |
+
#: admin/core/core.php:2089
|
2665 |
msgid "BPS Video Tutorials|Setup Wizard: "
|
2666 |
msgstr ""
|
2667 |
|
2668 |
+
#: admin/core/core.php:2097
|
2669 |
msgid "Troubleshooting Steps & The BPS Security Log: "
|
2670 |
msgstr ""
|
2671 |
|
2672 |
+
#: admin/core/core.php:2097
|
2673 |
msgid ""
|
2674 |
"All BPS plugin features can be turned Off/On individually to confirm, "
|
2675 |
"eliminate or isolate a problem or issue that may or may not be caused by BPS."
|
2676 |
msgstr ""
|
2677 |
|
2678 |
+
#: admin/core/core.php:2097
|
2679 |
msgid ""
|
2680 |
"The BPS Security Log is a primary troubleshooting tool. If BPS is blocking "
|
2681 |
"something legitimate in another plugin or theme then a Security Log entry "
|
2684 |
"being blocked."
|
2685 |
msgstr ""
|
2686 |
|
2687 |
+
#: admin/core/core.php:2097
|
2688 |
msgid ""
|
2689 |
"Search the Forum site to see if a known issue or problem is already posted "
|
2690 |
"with a solution/whitelist rule in the Forum."
|
2691 |
msgstr ""
|
2692 |
|
2693 |
+
#: admin/core/core.php:2110 admin/maintenance/maintenance.php:2133
|
2694 |
msgid "Help & FAQ"
|
2695 |
msgstr ""
|
2696 |
|
2697 |
+
#: admin/core/core.php:2114 admin/email-log-settings/email-log-settings.php:215
|
2698 |
#: admin/login/login.php:1829 admin/maintenance/maintenance.php:2138
|
2699 |
#: admin/security-log/security-log.php:811
|
2700 |
#: admin/system-info/system-info.php:1134
|
2701 |
msgid "Contributors Page"
|
2702 |
msgstr ""
|
2703 |
|
2704 |
+
#: admin/core/core.php:2115
|
2705 |
msgid "WP Permalinks - Custom Permalink Structure Help Info"
|
2706 |
msgstr ""
|
2707 |
|
2708 |
+
#: admin/core/core.php:2116 admin/email-log-settings/email-log-settings.php:214
|
2709 |
#: admin/login/login.php:1828 admin/maintenance/maintenance.php:2139
|
2710 |
#: admin/security-log/security-log.php:810
|
2711 |
#: admin/system-info/system-info.php:1133
|
2712 |
msgid "Security Log Event Codes"
|
2713 |
msgstr ""
|
2714 |
|
2715 |
+
#: admin/core/core.php:2117
|
2716 |
msgid "Adding a Custom 403 Forbidden Page For Your Website"
|
2717 |
msgstr ""
|
2718 |
|
2719 |
+
#: admin/core/core.php:2118
|
2720 |
#: admin/db-backup-security/db-backup-security.php:1747
|
2721 |
#: admin/email-log-settings/email-log-settings.php:216
|
2722 |
#: admin/login/login.php:1830 admin/maintenance/maintenance.php:2140
|
2723 |
+
#: admin/mscan/mscan.php:3500 admin/security-log/security-log.php:812
|
2724 |
#: admin/system-info/system-info.php:1135 admin/theme-skin/theme-skin.php:258
|
2725 |
msgid "Forum: Search, Troubleshooting Steps & Post Questions For Assistance"
|
2726 |
msgstr ""
|
2727 |
|
2728 |
+
#: admin/core/core.php:2131
|
2729 |
msgid "BulletProof Security Pro Feature Highlights"
|
2730 |
msgstr ""
|
2731 |
|
2732 |
+
#: admin/core/core.php:2141
|
2733 |
msgid "The Ultimate Security Protection"
|
2734 |
msgstr ""
|
2735 |
|
2736 |
+
#: admin/core/core.php:2144
|
2737 |
msgid "BPS Pro One-Click Setup Wizard & Demo Video Tutorial"
|
2738 |
msgstr ""
|
2739 |
|
2740 |
+
#: admin/core/core.php:2145
|
2741 |
msgid "View All BPS Pro Features"
|
2742 |
msgstr ""
|
2743 |
|
2744 |
+
#: admin/core/core.php:2152
|
2745 |
msgid ""
|
2746 |
"The Complete Website Security Solution for Hacker and Spammer Protection"
|
2747 |
msgstr ""
|
2748 |
|
2749 |
+
#: admin/core/core.php:2152
|
2750 |
msgid ""
|
2751 |
"BulletProof Security Pro has an amazing track record. BPS Pro has been "
|
2752 |
"publicly available for 9+ years and is installed on over 50,000 websites "
|
2754 |
"hacked."
|
2755 |
msgstr ""
|
2756 |
|
2757 |
+
#: admin/core/core.php:2152
|
2758 |
msgid ""
|
2759 |
"Why pay 10 times or more for other premium WordPress Security Plugins with "
|
2760 |
"recurring yearly subscriptions when you can get the best WordPress Security "
|
2761 |
"Plugin for an extremely low one-time purchase price?"
|
2762 |
msgstr ""
|
2763 |
|
2764 |
+
#: admin/core/core.php:2152
|
2765 |
msgid "View Cost Comparison"
|
2766 |
msgstr ""
|
2767 |
|
2768 |
+
#: admin/core/core.php:2152
|
2769 |
msgid ""
|
2770 |
"30-Day Money-Back Guarantee: If you are dissatisfied with BulletProof "
|
2771 |
"Security Pro for any reason. We offer a no questions asked full refund."
|
2772 |
msgstr ""
|
2773 |
|
2774 |
+
#: admin/core/core.php:2155
|
2775 |
msgid "One-Click Setup Wizard Installation: "
|
2776 |
msgstr ""
|
2777 |
|
2778 |
+
#: admin/core/core.php:2155
|
2779 |
msgid ""
|
2780 |
"Fast, simple and complete BPS Pro installation and setup in less than 1 "
|
2781 |
"minute."
|
2782 |
msgstr ""
|
2783 |
|
2784 |
+
#: admin/core/core.php:2157
|
2785 |
msgid "One-Click Upgrade: "
|
2786 |
msgstr ""
|
2787 |
|
2788 |
+
#: admin/core/core.php:2157
|
2789 |
msgid "One-click plugin upgrade on the WordPress Plugins page."
|
2790 |
msgstr ""
|
2791 |
|
2792 |
+
#: admin/core/core.php:2159
|
2793 |
msgid ""
|
2794 |
"AutoRestore|Quarantine Intrusion Detection and Prevention System (ARQ IDPS): "
|
2795 |
msgstr ""
|
2796 |
|
2797 |
+
#: admin/core/core.php:2159
|
2798 |
msgid ""
|
2799 |
"ARQ IDPS is a real-time file scanner that automatically quarantines "
|
2800 |
"malicious hacker files and autorestores legitimate website files if they "
|
2808 |
"Plugin and Theme Automatic, Manual and Shiny installations and updates."
|
2809 |
msgstr ""
|
2810 |
|
2811 |
+
#: admin/core/core.php:2161
|
2812 |
msgid "MScan Malware Scanner: "
|
2813 |
msgstr ""
|
2814 |
|
2815 |
+
#: admin/core/core.php:2161
|
2816 |
msgid ""
|
2817 |
"MScan Scheduled Scans are available in BPS Pro only. The BPS Pro ARQ IDPS "
|
2818 |
"scanner is far superior to malware scanners including MScan, but both the "
|
2820 |
"website if someone would like to do that."
|
2821 |
msgstr ""
|
2822 |
|
2823 |
+
#: admin/core/core.php:2163
|
2824 |
msgid "Plugin Firewall|Plugin Firewall AutoPilot Mode: "
|
2825 |
msgstr ""
|
2826 |
|
2827 |
+
#: admin/core/core.php:2163
|
2828 |
msgid ""
|
2829 |
"The Plugin Firewall protects all of your Plugins (plugin folders and files) "
|
2830 |
"with an IP Address Firewall, which prevents/blocks/forbids Remote Access to "
|
2838 |
"firewall whitelist rules."
|
2839 |
msgstr ""
|
2840 |
|
2841 |
+
#: admin/core/core.php:2165
|
2842 |
msgid "JTC Anti-Spam|Anti-Hacker (JTC): "
|
2843 |
msgstr ""
|
2844 |
|
2845 |
+
#: admin/core/core.php:2165
|
2846 |
#, php-format
|
2847 |
msgid ""
|
2848 |
"Blocks 100% of all SpamBot and HackerBot Brute Force Login attacks (auto-"
|
2856 |
"includes a SpamBot Trap."
|
2857 |
msgstr ""
|
2858 |
|
2859 |
+
#: admin/core/core.php:2167
|
2860 |
msgid "Uploads Folder Anti-Exploit Guard (UAEG): "
|
2861 |
msgstr ""
|
2862 |
|
2863 |
+
#: admin/core/core.php:2167
|
2864 |
msgid ""
|
2865 |
"Protects the WordPress Uploads folder. ONLY safe image files with valid "
|
2866 |
"image file extensions such as jpg, gif, png, etc. can be accessed, opened or "
|
2870 |
"executed in the WordPress Uploads folder."
|
2871 |
msgstr ""
|
2872 |
|
2873 |
+
#: admin/core/core.php:2169
|
2874 |
msgid "DB Monitor Intrusion Detection System (IDS): "
|
2875 |
msgstr ""
|
2876 |
|
2877 |
+
#: admin/core/core.php:2169
|
2878 |
msgid ""
|
2879 |
"The DB Monitor is an automated Intrusion Detection System (IDS) that alerts "
|
2880 |
"you via email anytime a change/modification occurs in your WordPress "
|
2885 |
"help info."
|
2886 |
msgstr ""
|
2887 |
|
2888 |
+
#: admin/core/core.php:2171
|
2889 |
msgid "DB Diff Tool: "
|
2890 |
msgstr ""
|
2891 |
|
2892 |
+
#: admin/core/core.php:2171
|
2893 |
msgid ""
|
2894 |
"The DB Diff Tool compares old database tables from DB backups to current "
|
2895 |
"database tables and displays any differences in the data/content of those 2 "
|
2897 |
"not only just DB data."
|
2898 |
msgstr ""
|
2899 |
|
2900 |
+
#: admin/core/core.php:2173
|
2901 |
msgid "DB Status & Info: "
|
2902 |
msgstr ""
|
2903 |
|
2904 |
+
#: admin/core/core.php:2173
|
2905 |
msgid ""
|
2906 |
"General DB Info shows commonly checked DB status and info about your "
|
2907 |
"WordPress database at a glance. Extensive DB Info shows extensive DB status "
|
2910 |
"SHOW GLOBAL VARIABLES and SHOW SESSION VARIABLES."
|
2911 |
msgstr ""
|
2912 |
|
2913 |
+
#: admin/core/core.php:2175
|
2914 |
msgid "S-Monitor: "
|
2915 |
msgstr ""
|
2916 |
|
2917 |
+
#: admin/core/core.php:2175
|
2918 |
msgid ""
|
2919 |
"S-Monitor is the centralized Security Monitoring and Alerting Core where you "
|
2920 |
"can manage and choose BPS Pro settings for Dashboard Alerts, Dashboard "
|
2924 |
"easy to change all/any BPS Pro settings to your particular preferences."
|
2925 |
msgstr ""
|
2926 |
|
2927 |
+
#: admin/core/core.php:2177
|
2928 |
msgid "Advanced Real-Time Alerting & Heads Up Dashboard Status Display: "
|
2929 |
msgstr ""
|
2930 |
|
2931 |
+
#: admin/core/core.php:2177
|
2932 |
msgid ""
|
2933 |
"BPS Pro checks and displays error, warning, notifications and alert messages "
|
2934 |
"in real time. You can choose how you want these messages displayed to you "
|
2936 |
"Dashboard, BPS Pro pages only, Turned off, Email Alerts, Logging..."
|
2937 |
msgstr ""
|
2938 |
|
2939 |
+
#: admin/core/core.php:2180
|
2940 |
msgid "Custom php.ini|ini_set Options: "
|
2941 |
msgstr ""
|
2942 |
|
2943 |
+
#: admin/core/core.php:2180
|
2944 |
msgid ""
|
2945 |
"Quickly create a custom php.ini file for your website or use ini_set Options "
|
2946 |
"to increase security and performance with just a few clicks. Additional P-"
|
2948 |
"Protected PHP Error Log, PHP Error Alerts, Secure phpinfo Viewer..."
|
2949 |
msgstr ""
|
2950 |
|
2951 |
+
#: admin/core/core.php:2182
|
2952 |
msgid "Pro Tools: 16 mini-plugins: "
|
2953 |
msgstr ""
|
2954 |
|
2955 |
+
#: admin/core/core.php:2182
|
2956 |
msgid ""
|
2957 |
"Online Base64 Decoder, Offline Base64 Decode|Encode, Mcrypt ~ Decrypt|"
|
2958 |
"Encrypt, Crypt Encryption, Scheduled Crons (display and reschedule/reset "
|
2971 |
"vulnerable to an XML-RPC exploit)."
|
2972 |
msgstr ""
|
2973 |
|
2974 |
+
#: admin/core/core.php:2190
|
2975 |
msgid "BPS Pro Version Release Dates"
|
2976 |
msgstr ""
|
2977 |
|
|
|
2978 |
#: admin/core/core.php:2194 admin/core/core.php:2195 admin/core/core.php:2196
|
2979 |
+
#: admin/core/core.php:2197 admin/core/core.php:2198 admin/core/core.php:2199
|
2980 |
+
#: admin/core/core.php:2200 admin/core/core.php:2201 admin/core/core.php:2207
|
2981 |
+
#: admin/core/core.php:2208 admin/core/core.php:2209 admin/core/core.php:2210
|
2982 |
+
#: admin/core/core.php:2211 admin/core/core.php:2212 admin/core/core.php:2218
|
2983 |
+
#: admin/core/core.php:2219 admin/core/core.php:2220 admin/core/core.php:2221
|
2984 |
+
#: admin/core/core.php:2226 admin/core/core.php:2227 admin/core/core.php:2228
|
2985 |
+
#: admin/core/core.php:2229 admin/core/core.php:2230 admin/core/core.php:2235
|
2986 |
#: admin/core/core.php:2236 admin/core/core.php:2237 admin/core/core.php:2238
|
2987 |
+
#: admin/core/core.php:2239 admin/core/core.php:2240 admin/core/core.php:2241
|
2988 |
+
#: admin/core/core.php:2242 admin/core/core.php:2243 admin/core/core.php:2248
|
2989 |
#: admin/core/core.php:2249 admin/core/core.php:2250 admin/core/core.php:2251
|
2990 |
#: admin/core/core.php:2252 admin/core/core.php:2253 admin/core/core.php:2254
|
2991 |
+
#: admin/core/core.php:2255 admin/core/core.php:2256 admin/core/core.php:2257
|
2992 |
+
#: admin/core/core.php:2258 admin/core/core.php:2259 admin/core/core.php:2260
|
2993 |
#: admin/core/core.php:2266 admin/core/core.php:2267 admin/core/core.php:2268
|
2994 |
#: admin/core/core.php:2269 admin/core/core.php:2270 admin/core/core.php:2271
|
2995 |
#: admin/core/core.php:2272 admin/core/core.php:2273 admin/core/core.php:2274
|
2996 |
+
#: admin/core/core.php:2275 admin/core/core.php:2276 admin/core/core.php:2277
|
2997 |
+
#: admin/core/core.php:2278 admin/core/core.php:2279 admin/core/core.php:2285
|
2998 |
#: admin/core/core.php:2286 admin/core/core.php:2287 admin/core/core.php:2288
|
2999 |
#: admin/core/core.php:2289 admin/core/core.php:2290 admin/core/core.php:2291
|
3000 |
+
#: admin/core/core.php:2292 admin/core/core.php:2293 admin/core/core.php:2294
|
3001 |
+
#: admin/core/core.php:2295 admin/core/core.php:2296 admin/core/core.php:2297
|
3002 |
#: admin/core/core.php:2303 admin/core/core.php:2304 admin/core/core.php:2305
|
3003 |
#: admin/core/core.php:2306 admin/core/core.php:2307 admin/core/core.php:2308
|
3004 |
+
#: admin/core/core.php:2309 admin/core/core.php:2310 admin/core/core.php:2311
|
3005 |
+
#: admin/core/core.php:2312 admin/core/core.php:2318 admin/core/core.php:2319
|
3006 |
#: admin/core/core.php:2320 admin/core/core.php:2321 admin/core/core.php:2322
|
3007 |
+
#: admin/core/core.php:2323 admin/core/core.php:2324 admin/core/core.php:2325
|
3008 |
+
#: admin/core/core.php:2326 admin/core/core.php:2327
|
3009 |
#, php-format
|
3010 |
msgid ""
|
3011 |
"<a href=\"%2$s\" target=\"_blank\" title=\"Link Opens in New Browser Window"
|
3530 |
msgstr ""
|
3531 |
|
3532 |
#: admin/db-backup-security/db-backup-help-text.php:12
|
3533 |
+
#: admin/mscan/mscan-help-text.php:75 admin/security-log/security-log.php:238
|
3534 |
msgid "Delete Log Button"
|
3535 |
msgstr ""
|
3536 |
|
3662 |
#: admin/db-backup-security/db-backup-security.php:281
|
3663 |
#: admin/db-backup-security/db-backup-security.php:298
|
3664 |
#: admin/db-backup-security/db-backup-security.php:300
|
3665 |
+
#: admin/includes/admin.php:419
|
3666 |
msgid "DB Backup"
|
3667 |
msgstr ""
|
3668 |
|
3748 |
#: admin/db-backup-security/db-backup-security.php:896
|
3749 |
#: admin/login/login.php:580 admin/login/login.php:609
|
3750 |
#: admin/login/login.php:681 admin/login/login.php:710
|
3751 |
+
#: admin/mscan/mscan.php:1630 admin/mscan/mscan.php:3013
|
3752 |
msgid "Delete"
|
3753 |
msgstr ""
|
3754 |
|
3847 |
msgstr ""
|
3848 |
|
3849 |
#: admin/db-backup-security/db-backup-security.php:992
|
3850 |
+
#: admin/mscan/mscan.php:930
|
3851 |
msgid "All"
|
3852 |
msgstr ""
|
3853 |
|
4314 |
msgstr ""
|
4315 |
|
4316 |
#: admin/db-backup-security/db-backup-security.php:1267
|
4317 |
+
#: admin/mscan/mscan.php:2049
|
4318 |
msgid ""
|
4319 |
"Then click the Delete Log button to delete the contents of this Log file."
|
4320 |
msgstr ""
|
4334 |
msgstr ""
|
4335 |
|
4336 |
#: admin/db-backup-security/db-backup-security.php:1304
|
4337 |
+
#: admin/mscan/mscan.php:2093 admin/security-log/security-log.php:492
|
4338 |
msgid "Click OK to Delete the Log file contents or click Cancel."
|
4339 |
msgstr ""
|
4340 |
|
4484 |
msgstr ""
|
4485 |
|
4486 |
#: admin/db-backup-security/db-backup-security.php:1744
|
4487 |
+
#: admin/mscan/mscan.php:3498 admin/theme-skin/theme-skin.php:256
|
4488 |
msgid "BPS Pro Features & Version Release Dates"
|
4489 |
msgstr ""
|
4490 |
|
4491 |
#: admin/db-backup-security/db-backup-security.php:1745
|
4492 |
+
#: admin/mscan/mscan.php:3499 admin/theme-skin/theme-skin.php:257
|
4493 |
msgid "Video Tutorials"
|
4494 |
msgstr ""
|
4495 |
|
4515 |
|
4516 |
#: admin/email-log-settings/email-log-settings.php:84
|
4517 |
#: admin/email-log-settings/email-log-settings.php:86
|
4518 |
+
#: admin/includes/admin.php:430
|
4519 |
msgid "Email|Log Settings"
|
4520 |
msgstr ""
|
4521 |
|
4674 |
msgid "WordPress Automatic Update Help Forum Topic"
|
4675 |
msgstr ""
|
4676 |
|
4677 |
+
#: admin/includes/admin.php:392
|
4678 |
msgid "BulletProof Security Settings"
|
4679 |
msgstr ""
|
4680 |
|
4681 |
+
#: admin/includes/admin.php:392 admin/includes/admin.php:413
|
4682 |
msgid "BPS Security"
|
4683 |
msgstr ""
|
4684 |
|
4685 |
+
#: admin/includes/admin.php:393 admin/includes/admin.php:394
|
4686 |
msgid "Login Security ~ JTC-Lite"
|
4687 |
msgstr ""
|
4688 |
|
4689 |
+
#: admin/includes/admin.php:393 admin/includes/admin.php:416
|
4690 |
msgid "Login Security"
|
4691 |
msgstr ""
|
4692 |
|
4693 |
+
#: admin/includes/admin.php:394 admin/includes/admin.php:417
|
4694 |
#: admin/login/login.php:180 admin/login/login.php:837
|
4695 |
#: admin/login/login.php:839
|
4696 |
msgid "JTC-Lite"
|
4697 |
msgstr ""
|
4698 |
|
4699 |
+
#: admin/includes/admin.php:400 admin/includes/admin.php:426
|
4700 |
#: admin/maintenance/maintenance.php:170 admin/maintenance/maintenance.php:202
|
4701 |
#: admin/maintenance/maintenance.php:204
|
4702 |
msgid "Maintenance Mode"
|
4703 |
msgstr ""
|
4704 |
|
4705 |
+
#: admin/includes/admin.php:406 admin/includes/admin.php:429
|
4706 |
#: admin/system-info/system-info.php:71
|
4707 |
msgid "System Info"
|
4708 |
msgstr ""
|
4709 |
|
4710 |
+
#: admin/includes/admin.php:409 admin/includes/admin.php:431
|
4711 |
#: admin/theme-skin/theme-skin.php:74 admin/theme-skin/theme-skin.php:90
|
4712 |
#: admin/theme-skin/theme-skin.php:92
|
4713 |
msgid "UI|UX Settings"
|
4714 |
msgstr ""
|
4715 |
|
4716 |
+
#: admin/includes/admin.php:414
|
4717 |
msgid "htaccess Core"
|
4718 |
msgstr ""
|
4719 |
|
4720 |
+
#: admin/includes/admin.php:415
|
4721 |
msgid "MScan ~ Malware Scanner"
|
4722 |
msgstr ""
|
4723 |
|
4724 |
+
#: admin/includes/admin.php:415
|
|
|
4725 |
msgid "MScan"
|
4726 |
msgstr ""
|
4727 |
|
4728 |
+
#: admin/includes/admin.php:416 admin/includes/admin.php:417
|
4729 |
+
#: admin/includes/admin.php:418
|
4730 |
msgid "Login Security ~ JTC-Lite ~ ISL ~ ACE"
|
4731 |
msgstr ""
|
4732 |
|
4733 |
+
#: admin/includes/admin.php:418
|
4734 |
msgid "Idle Session Logout<br>Cookie Expiration"
|
4735 |
msgstr ""
|
4736 |
|
4737 |
+
#: admin/includes/admin.php:419
|
4738 |
msgid "DB Backup & Security"
|
4739 |
msgstr ""
|
4740 |
|
4741 |
+
#: admin/includes/admin.php:420 admin/security-log/security-log.php:209
|
4742 |
#: admin/security-log/security-log.php:224
|
4743 |
#: admin/security-log/security-log.php:226
|
4744 |
msgid "Security Log"
|
4745 |
msgstr ""
|
4746 |
|
4747 |
+
#: admin/includes/admin.php:432 admin/wizard/wizard.php:1082
|
4748 |
+
#: admin/wizard/wizard.php:1113 admin/wizard/wizard.php:1115
|
4749 |
+
#: bulletproof-security.php:157 bulletproof-security.php:160
|
4750 |
msgid "Setup Wizard"
|
4751 |
msgstr ""
|
4752 |
|
4753 |
+
#: admin/includes/admin.php:434
|
4754 |
+
msgid "MScan Iframe"
|
4755 |
+
msgstr ""
|
4756 |
+
|
4757 |
+
#: admin/includes/admin.php:437 admin/includes/admin.php:445
|
4758 |
#: admin/includes/uninstall.php:45
|
4759 |
msgid "BPS Plugin Uninstall Options"
|
4760 |
msgstr ""
|
4761 |
|
4762 |
+
#: admin/includes/admin.php:484
|
4763 |
msgid "BPS UI|UX Debug: SLF: CSS Script Loaded"
|
4764 |
msgstr ""
|
4765 |
|
4766 |
+
#: admin/includes/admin.php:517
|
4767 |
msgid "BPS UI|UX Debug: SLF: js Script Loaded"
|
4768 |
msgstr ""
|
4769 |
|
4770 |
+
#: admin/includes/admin.php:600
|
4771 |
msgid "BPS UI|UX Debug: Scripts|Styles Dequeued"
|
4772 |
msgstr ""
|
4773 |
|
4774 |
+
#: admin/includes/admin.php:612
|
4775 |
msgid "Script Dequeued: "
|
4776 |
msgstr ""
|
4777 |
|
4778 |
+
#: admin/includes/admin.php:618
|
4779 |
msgid ""
|
4780 |
"No additional plugin or theme Scripts were found that needed to be Dequeued."
|
4781 |
msgstr ""
|
4782 |
|
4783 |
+
#: admin/includes/admin.php:630
|
4784 |
msgid "Style Dequeued: "
|
4785 |
msgstr ""
|
4786 |
|
4787 |
+
#: admin/includes/admin.php:636
|
4788 |
msgid ""
|
4789 |
"No additional plugin or theme Styles were found that needed to be Dequeued."
|
4790 |
msgstr ""
|
4791 |
|
4792 |
+
#: admin/includes/admin.php:674 admin/includes/admin.php:707
|
4793 |
msgid "BPS UI|UX Debug: WP Toolbar nodes|menu items Removed"
|
4794 |
msgstr ""
|
4795 |
|
4796 |
+
#: admin/includes/admin.php:686 admin/includes/admin.php:719
|
4797 |
msgid "WP Toolbar node|menu item Removed: "
|
4798 |
msgstr ""
|
4799 |
|
4800 |
+
#: admin/includes/admin.php:694 admin/includes/admin.php:727
|
4801 |
msgid "No WP Toolbar nodes|menu items were Removed in BPS plugin pages"
|
4802 |
msgstr ""
|
4803 |
|
4821 |
"click the Save Option button."
|
4822 |
msgstr ""
|
4823 |
|
4824 |
+
#: admin/includes/uninstall.php:54
|
4825 |
msgid "BPS Plugin Uninstall Options:"
|
4826 |
msgstr ""
|
4827 |
|
4828 |
+
#: admin/includes/uninstall.php:56
|
4829 |
msgid "BPS Pro Upgrade Uninstall"
|
4830 |
msgstr ""
|
4831 |
|
4832 |
+
#: admin/includes/uninstall.php:57
|
4833 |
msgid "Complete BPS Plugin Uninstall"
|
4834 |
msgstr ""
|
4835 |
|
4889 |
|
4890 |
#: admin/login/login.php:232 admin/login/login.php:329
|
4891 |
#: admin/login/login.php:649 admin/login/login.php:750
|
4892 |
+
#: admin/mscan/mscan.php:1438 admin/mscan/mscan.php:1660
|
4893 |
+
#: admin/mscan/mscan.php:1782 admin/mscan/mscan.php:1941
|
4894 |
msgid "Submit"
|
4895 |
msgstr ""
|
4896 |
|
5119 |
msgstr ""
|
5120 |
|
5121 |
#: admin/login/login.php:649 admin/login/login.php:750
|
5122 |
+
#: admin/mscan/mscan.php:1661 admin/mscan/mscan.php:1942
|
5123 |
msgid "Clear|Refresh"
|
5124 |
msgstr ""
|
5125 |
|
5783 |
msgstr ""
|
5784 |
|
5785 |
#: admin/login/lsm-help-text.php:10 admin/maintenance/maintenance.php:583
|
5786 |
+
#: includes/hud-dismiss-functions.php:354
|
5787 |
+
#: includes/hud-dismiss-functions.php:398
|
5788 |
msgid "CAUTION: "
|
5789 |
msgstr ""
|
5790 |
|
6903 |
|
6904 |
#: admin/maintenance/maintenance.php:418 admin/maintenance/maintenance.php:438
|
6905 |
#: admin/wizard/wizard.php:160 includes/general-functions.php:509
|
6906 |
+
#: includes/hud-dismiss-functions.php:354
|
6907 |
+
#: includes/hud-dismiss-functions.php:398
|
6908 |
+
#: includes/hud-dismiss-functions.php:503
|
6909 |
msgid "Click Here"
|
6910 |
msgstr ""
|
6911 |
|
7312 |
msgid "BackEnd Maintenance Mode has been Turned Off."
|
7313 |
msgstr ""
|
7314 |
|
7315 |
+
#: admin/mscan/mscan-help-text.php:10
|
7316 |
msgid ""
|
7317 |
"For more extensive help info and answers to common issues or problems click "
|
7318 |
"the MScan Malware Scanner Guide link above. For troubleshooting help or to "
|
7320 |
"above."
|
7321 |
msgstr ""
|
7322 |
|
7323 |
+
#: admin/mscan/mscan-help-text.php:12
|
7324 |
+
msgid "MScan 2.0 General Info"
|
7325 |
+
msgstr ""
|
7326 |
+
|
7327 |
+
#: admin/mscan/mscan-help-text.php:12
|
7328 |
+
msgid ""
|
7329 |
+
"MScan 2.0 scans WP Core, Plugin and Theme files using file hash comparisons, "
|
7330 |
+
"which is 100% accurate vs conventional pattern matching, which is typically "
|
7331 |
+
"around 75% - 85% accurate. MScan scans all other website files (non-"
|
7332 |
+
"WordPress files) using conventional pattern matching scanning. The pattern "
|
7333 |
+
"matching code is much more extensive in MScan 2.0 and will hopefully achieve "
|
7334 |
+
"a 95% or higher detection rate. False positives are inevitable when using "
|
7335 |
+
"conventional pattern matching scanning, but since MScan 2.0 uses file hash "
|
7336 |
+
"comparison scanning for all WP Core, Plugin and Theme files then there will "
|
7337 |
+
"not be any false positives detected for any/all WordPress files (WP Core, "
|
7338 |
+
"Plugins and Themes). MScan 2.0 automatically downloads WordPress, Plugin and "
|
7339 |
+
"Theme zip files, extracts the zip files, creates file hashes for all files "
|
7340 |
+
"and then deletes the zip files. WP Core, Plugin and Theme zip downloads only "
|
7341 |
+
"occur on the first MScan scan or when a new WordPress, Plugin or Theme "
|
7342 |
+
"version is installed/updated on a website."
|
7343 |
+
msgstr ""
|
7344 |
+
|
7345 |
+
#: admin/mscan/mscan-help-text.php:14
|
7346 |
+
msgid "Scanning Other WordPress Sites"
|
7347 |
+
msgstr ""
|
7348 |
+
|
7349 |
+
#: admin/mscan/mscan-help-text.php:14
|
7350 |
+
msgid ""
|
7351 |
+
"Website folder checkboxes cannot be checked for other WordPress sites under "
|
7352 |
+
"your hosting account. To scan other WordPress sites under your hosting "
|
7353 |
+
"account run MScan 2.0 from each site. There are several technical reasons "
|
7354 |
+
"for doing this: Each site may have a different version of WordPress "
|
7355 |
+
"installed and different Plugins and Themes installed. MScan 2.0 now uses "
|
7356 |
+
"file hash comparisons for each individual site based on the WordPress, "
|
7357 |
+
"Plugin and Theme versions installed on each individual website."
|
7358 |
+
msgstr ""
|
7359 |
+
|
7360 |
+
#: admin/mscan/mscan-help-text.php:16
|
7361 |
+
msgid "Estimated Scan Time Exceeded"
|
7362 |
+
msgstr ""
|
7363 |
+
|
7364 |
+
#: admin/mscan/mscan-help-text.php:16
|
7365 |
+
msgid ""
|
7366 |
+
"If you see \"Estimated Scan Time Exceeded: Still scanning files\" that means "
|
7367 |
+
"that the current scan that you are running is taking longer than the "
|
7368 |
+
"estimated scan time. The scan will complete successfully."
|
7369 |
+
msgstr ""
|
7370 |
+
|
7371 |
+
#: admin/mscan/mscan-help-text.php:18
|
7372 |
+
msgid "Processing Total File Count"
|
7373 |
+
msgstr ""
|
7374 |
+
|
7375 |
+
#: admin/mscan/mscan-help-text.php:18
|
7376 |
+
msgid ""
|
7377 |
+
"If you see \"Processing Total File Count: Still scanning files\" that means "
|
7378 |
+
"that the current scan that you are running has not yet processed the total "
|
7379 |
+
"number of files to scan yet. The scan will complete successfully."
|
7380 |
+
msgstr ""
|
7381 |
+
|
7382 |
+
#: admin/mscan/mscan-help-text.php:20
|
7383 |
+
msgid "New Hash Files Created: Run A New Scan"
|
7384 |
+
msgstr ""
|
7385 |
+
|
7386 |
+
#: admin/mscan/mscan-help-text.php:20
|
7387 |
+
msgid ""
|
7388 |
+
"If you see \"Total Files Scanned: New Hash Files Created: Run A New Scan\" "
|
7389 |
+
"that means that the current scan that you are running will create new Plugin "
|
7390 |
+
"or Theme Hash files and not scan any files. You will see this message "
|
7391 |
+
"instead of the total number of files scanned whenever new or updated Plugins "
|
7392 |
+
"or Themes need new Hash files created. Run another scan to scan the new/"
|
7393 |
+
"updated Plugin and Theme files. Note: This safety precaution ensures that "
|
7394 |
+
"Plugin and Theme hash files are not being created at the same time Plugin "
|
7395 |
+
"and Theme files are being scanned, which could result in false positive file "
|
7396 |
+
"hash comparison results for Plugin and Theme files."
|
7397 |
+
msgstr ""
|
7398 |
+
|
7399 |
+
#: admin/mscan/mscan-help-text.php:22
|
7400 |
+
msgid "Error: Files found in the plugin-hashes folder"
|
7401 |
+
msgstr ""
|
7402 |
+
|
7403 |
+
#: admin/mscan/mscan-help-text.php:22
|
7404 |
+
msgid ""
|
7405 |
+
"If you see \"Total Files Scanned: Error: Files found in the plugin-hashes "
|
7406 |
+
"folder\" that means that files (and probably folders too) were found in the /"
|
7407 |
+
"wp-content/bps-backup/plugin-hashes/ folder. This problem could be caused by "
|
7408 |
+
"uploading a plugin zip file that does not extract the entire plugin folder "
|
7409 |
+
"and instead extracts individual plugin folders and files. To fix this "
|
7410 |
+
"problem you will need to use FTP or your web host control panel file manager "
|
7411 |
+
"and delete all folders and files in the /plugin-hashes/ folder except for "
|
7412 |
+
"this file: plugin-hashes.php. To correctly make a plugin zip file that "
|
7413 |
+
"extracts the entire plugin folder you would right mouse click on the plugin "
|
7414 |
+
"folder, click \"send to\" and then click \"Compressed (zipped) folder\" on "
|
7415 |
+
"Windows."
|
7416 |
+
msgstr ""
|
7417 |
+
|
7418 |
+
#: admin/mscan/mscan-help-text.php:24
|
7419 |
+
msgid "Error: Files found in the theme-hashes folder"
|
7420 |
+
msgstr ""
|
7421 |
+
|
7422 |
+
#: admin/mscan/mscan-help-text.php:24
|
7423 |
+
msgid ""
|
7424 |
+
"If you see \"Total Files Scanned: Error: Files found in the theme-hashes "
|
7425 |
+
"folder\" that means that files (and probably folders too) were found in the /"
|
7426 |
+
"wp-content/bps-backup/theme-hashes/ folder. This problem could be caused by "
|
7427 |
+
"uploading a theme zip file that does not extract the entire theme folder and "
|
7428 |
+
"instead extracts individual theme folders and files. To fix this problem you "
|
7429 |
+
"will need to use FTP or your web host control panel file manager and delete "
|
7430 |
+
"all folders and files in the /theme-hashes/ folder except for this file: "
|
7431 |
+
"theme-hashes.php. To correctly make a theme zip file that extracts the "
|
7432 |
+
"entire theme folder you would right mouse click on the theme folder, click "
|
7433 |
+
"\"send to\" and then click \"Compressed (zipped) folder\" on Windows."
|
7434 |
+
msgstr ""
|
7435 |
+
|
7436 |
+
#: admin/mscan/mscan-help-text.php:26
|
7437 |
msgid "Start Scan"
|
7438 |
msgstr ""
|
7439 |
|
7440 |
+
#: admin/mscan/mscan-help-text.php:26
|
7441 |
msgid "Clicking the Start Scan button starts a scan."
|
7442 |
msgstr ""
|
7443 |
|
7444 |
+
#: admin/mscan/mscan-help-text.php:28
|
7445 |
msgid "Stop Scan"
|
7446 |
msgstr ""
|
7447 |
|
7448 |
+
#: admin/mscan/mscan-help-text.php:28
|
7449 |
+
msgid ""
|
7450 |
+
"Clicking the Stop Scan button stops a scan. You can also deactivate and "
|
7451 |
+
"activate the BPS Pro plugin on the WordPress Plugins page to stop a scan."
|
7452 |
msgstr ""
|
7453 |
|
7454 |
+
#: admin/mscan/mscan-help-text.php:30
|
7455 |
+
msgid "Reset MScan"
|
7456 |
msgstr ""
|
7457 |
|
7458 |
+
#: admin/mscan/mscan-help-text.php:30
|
7459 |
msgid ""
|
7460 |
+
"The Reset MScan button resets/deletes these things: MScan Status option "
|
7461 |
+
"values: The Scan Completed timestamp, Total Scan Time, Total Files Scanned, "
|
7462 |
+
"Skipped Files, Suspicious Files and Suspicious DB Entries status values will "
|
7463 |
+
"be deleted and will either display blank or 0. The scan data in the View|"
|
7464 |
+
"Ignore|Delete Suspicious Files and View|Ignore Suspicious DB Entries Forms "
|
7465 |
+
"will be deleted."
|
7466 |
msgstr ""
|
7467 |
|
7468 |
+
#: admin/mscan/mscan-help-text.php:32 admin/mscan/mscan.php:916
|
7469 |
+
msgid "Website Folders & Files To Scan"
|
7470 |
+
msgstr ""
|
7471 |
+
|
7472 |
+
#: admin/mscan/mscan-help-text.php:32
|
7473 |
+
msgid ""
|
7474 |
+
"Checking a checkbox means scan that folder. Unchecking a checkbox means do "
|
7475 |
+
"not scan that folder. \"Giving WordPress Its Own Directory\" site types: All "
|
7476 |
+
"scannable parent folders will be listed along with your WP installation "
|
7477 |
+
"folders. Both parent folders and files and WP installation folders and files "
|
7478 |
+
"that you select/check will be scanned. All other site types: All folders in "
|
7479 |
+
"your WP installation folder will be listed. All folders and files in your WP "
|
7480 |
+
"installation folder that you select/check will be scanned."
|
7481 |
+
msgstr ""
|
7482 |
+
|
7483 |
+
#: admin/mscan/mscan-help-text.php:34
|
7484 |
msgid "Max File Size Limit to Scan"
|
7485 |
msgstr ""
|
7486 |
|
7487 |
+
#: admin/mscan/mscan-help-text.php:34
|
7488 |
msgid ""
|
7489 |
+
"Files that are larger than the default file size setting of 1000KB will be "
|
7490 |
+
"skipped by default in a regular scan and can be scanned using a Skipped File "
|
7491 |
+
"scan. You can change the max file size limit option setting to a larger max "
|
7492 |
+
"file size limit."
|
7493 |
msgstr ""
|
7494 |
|
7495 |
+
#: admin/mscan/mscan-help-text.php:36
|
7496 |
msgid "Max Time Limit to Scan"
|
7497 |
msgstr ""
|
7498 |
|
7499 |
+
#: admin/mscan/mscan-help-text.php:36
|
7500 |
msgid ""
|
7501 |
"The default time limit for script execution on most web hosts is 300 "
|
7502 |
"seconds. The default time limit setting for MScan scanning is also set to "
|
7504 |
"than 300 seconds."
|
7505 |
msgstr ""
|
7506 |
|
7507 |
+
#: admin/mscan/mscan-help-text.php:38 admin/mscan/mscan.php:1024
|
7508 |
msgid "Exclude Individual Folders"
|
7509 |
msgstr ""
|
7510 |
|
7511 |
+
#: admin/mscan/mscan-help-text.php:38
|
7512 |
msgid ""
|
7513 |
"Enter relative folder paths one folder path per line. A relative folder path "
|
7514 |
"is this: /some-folder/some-subfolder. A literal path would be the full "
|
7521 |
"particular cache folder under the wp-content folder."
|
7522 |
msgstr ""
|
7523 |
|
7524 |
+
#: admin/mscan/mscan-help-text.php:40 admin/mscan/mscan.php:1030
|
7525 |
msgid "Scan Database"
|
7526 |
msgstr ""
|
7527 |
|
7528 |
+
#: admin/mscan/mscan-help-text.php:40
|
7529 |
msgid ""
|
7530 |
"When Database scan is turned on your WordPress database will be scanned for "
|
7531 |
"suspicious code."
|
7532 |
msgstr ""
|
7533 |
|
7534 |
+
#: admin/mscan/mscan-help-text.php:42 admin/mscan/mscan.php:1036
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7535 |
msgid "Scan Skipped Files Only"
|
7536 |
msgstr ""
|
7537 |
|
7538 |
+
#: admin/mscan/mscan-help-text.php:42
|
7539 |
msgid ""
|
7540 |
+
"Skipped files are files that are larger than the \"Max File Size Limit to "
|
7541 |
+
"Scan\" option setting file size. The default file size setting is 400KB. "
|
7542 |
+
"When Skipped File Scan is On only skipped files will be scanned. Note: No "
|
7543 |
+
"other MScan option settings have any effect while Skipped File Scan is set "
|
7544 |
+
"to On."
|
7545 |
msgstr ""
|
7546 |
|
7547 |
+
#: admin/mscan/mscan-help-text.php:44 admin/mscan/mscan.php:1042
|
7548 |
msgid "Automatically Delete /tmp Files"
|
7549 |
msgstr ""
|
7550 |
|
7551 |
+
#: admin/mscan/mscan-help-text.php:44
|
7552 |
msgid ""
|
7553 |
"When Delete Tmp Files is On, all temporary files will be deleted. Hackers "
|
7554 |
"commonly hide hacker files in the /tmp folder."
|
7555 |
msgstr ""
|
7556 |
|
7557 |
+
#: admin/mscan/mscan-help-text.php:46 admin/mscan/mscan.php:1048
|
7558 |
msgid "Exclude /tmp Files"
|
7559 |
msgstr ""
|
7560 |
|
7561 |
+
#: admin/mscan/mscan-help-text.php:46
|
7562 |
msgid ""
|
7563 |
"Enter 1 file name per line. Some web hosts store files such as, mysql.sock, ."
|
7564 |
"s.PGSQL.5432 and .per-user in the /tmp folder. These files cannot be deleted "
|
7565 |
"by MScan, but attempting to delete these files will generate php errors. To "
|
7566 |
"prevent php errors from occurring you would exclude files such as these "
|
7567 |
+
"using the MScan Exclude /tmp files option setting. You will need to ask your "
|
7568 |
+
"web host for the names of those tmp files to exclude."
|
7569 |
msgstr ""
|
7570 |
|
7571 |
+
#: admin/mscan/mscan-help-text.php:48
|
7572 |
+
msgid "Scheduled Scan Frequency"
|
7573 |
msgstr ""
|
7574 |
|
7575 |
+
#: admin/mscan/mscan-help-text.php:48
|
7576 |
msgid ""
|
7577 |
"You can choose to schedule ongoing automated scans. Note: The BPS Pro ARQ "
|
7578 |
"IDPS scanner is far superior to any/all Malware scanners including BPS Pro "
|
7579 |
+
"MScan. You can of course use both ARQ IDPS and MScan scheduled scans "
|
7580 |
+
"together."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7581 |
msgstr ""
|
7582 |
|
7583 |
+
#: admin/mscan/mscan-help-text.php:54
|
7584 |
+
msgid "Delete File Hashes Tool"
|
7585 |
+
msgstr ""
|
7586 |
+
|
7587 |
+
#: admin/mscan/mscan-help-text.php:54
|
7588 |
+
msgid ""
|
7589 |
+
"This tool allows you to delete the Plugin and Theme file hashes. This tool "
|
7590 |
+
"should ONLY be used if there is a problem when scanning Plugin and Theme "
|
7591 |
+
"files. Usages: If you downgrade a plugin to an older version then use this "
|
7592 |
+
"tool to delete Plugin and Theme file hashes. If the MScan file hash "
|
7593 |
+
"comparison results display a large number of Plugin or Theme files as "
|
7594 |
+
"suspicious: Example: Suspicious|Modified|Unknown Plugin or Theme file then "
|
7595 |
+
"use this tool to delete all Plugin and Theme file hashes. After using this "
|
7596 |
+
"tool, the next MScan scan that you perform will download new Plugin and "
|
7597 |
+
"Theme zip files, extract them, make new Plugin and Theme file hashes and "
|
7598 |
+
"then delete the zip files. Important Note: You should also click the MScan "
|
7599 |
+
"Reset button after using this tool to remove any old/bad scan data."
|
7600 |
+
msgstr ""
|
7601 |
+
|
7602 |
+
#: admin/mscan/mscan-help-text.php:56
|
7603 |
+
msgid "Upload Plugin Zip Files"
|
7604 |
+
msgstr ""
|
7605 |
+
|
7606 |
+
#: admin/mscan/mscan-help-text.php:56
|
7607 |
+
msgid ""
|
7608 |
+
"You can upload multiple zip files at the same time by using your Ctrl or "
|
7609 |
+
"Shift keyboard keys on Windows. This upload form allows you to upload "
|
7610 |
+
"premium, paid and custom plugin zip files that are not in the WordPress "
|
7611 |
+
"Plugin Repository on wordpress.org. MScan will automatically extract any "
|
7612 |
+
"uploaded plugin zip files, create file hashes and delete the plugin zip "
|
7613 |
+
"files on the next MScan scan. If you do not choose to upload premium, paid "
|
7614 |
+
"and custom plugin zip files then those premium, paid and custom plugin files "
|
7615 |
+
"will not be scanned. Important Note: Plugin zip files MUST be named/renamed "
|
7616 |
+
"using the version number in this exact format: plugin-name.x.x.zip where x "
|
7617 |
+
"is the actual current plugin version number. The reason for that is MScan "
|
7618 |
+
"keeps track of the version numbers for plugins in order to create new plugin "
|
7619 |
+
"file hashes for newer versions of plugins when you update them. This process "
|
7620 |
+
"is completely automated for any/all free plugins that you have installed "
|
7621 |
+
"from the WordPress Plugin Repository on wordpress.org. Important Note: Some "
|
7622 |
+
"plugin zip files in the WP Plugin Repository are not named with a version "
|
7623 |
+
"number. If you would like to scan those plugins you will need to download "
|
7624 |
+
"the plugin zip file and rename it using this exact format: plugin-name.x.x."
|
7625 |
+
"zip and then upload the renamed plugin zip file."
|
7626 |
+
msgstr ""
|
7627 |
+
|
7628 |
+
#: admin/mscan/mscan-help-text.php:58
|
7629 |
+
msgid "Upload Theme Zip Files"
|
7630 |
+
msgstr ""
|
7631 |
+
|
7632 |
+
#: admin/mscan/mscan-help-text.php:58
|
7633 |
+
msgid ""
|
7634 |
+
"You can upload multiple zip files at the same time by using your Ctrl or "
|
7635 |
+
"Shift keyboard keys on Windows. This upload form allows you to upload "
|
7636 |
+
"premium, paid and custom theme zip files that are not in the WordPress Theme "
|
7637 |
+
"Repository on wordpress.org. MScan will automatically extract any uploaded "
|
7638 |
+
"theme zip files, create file hashes and delete the theme zip files on the "
|
7639 |
+
"next MScan scan. If you do not choose to upload premium, paid and custom "
|
7640 |
+
"theme zip files then those premium, paid and custom theme files will not be "
|
7641 |
+
"scanned. Important Note: Theme zip files MUST be named/renamed using the "
|
7642 |
+
"version number in this exact format: theme-name.x.x.zip where x is the "
|
7643 |
+
"actual current theme version number. The reason for that is MScan keeps "
|
7644 |
+
"track of the version numbers for themes in order to create new theme file "
|
7645 |
+
"hashes for newer versions of themes when you update them. This process is "
|
7646 |
+
"completely automated for any/all free themes that you have installed from "
|
7647 |
+
"the WordPress Theme Repository on wordpress.org. Important Note: Some theme "
|
7648 |
+
"zip files in the WP Theme Repository are not named with a version number. If "
|
7649 |
+
"you would like to scan those themes you will need to download the theme zip "
|
7650 |
+
"file and rename it using this exact format: theme-name.x.x.zip and then "
|
7651 |
+
"upload the renamed theme zip file. Child Themes are a custom Theme. Zip a "
|
7652 |
+
"known good/clean copy of your Child Theme folder and upload it if you would "
|
7653 |
+
"like your Child Theme files scanned. Use the same zip file naming "
|
7654 |
+
"convention: tmeme-name-child.x.x.zip."
|
7655 |
+
msgstr ""
|
7656 |
+
|
7657 |
+
#: admin/mscan/mscan-help-text.php:60 admin/mscan/mscan.php:1365
|
7658 |
msgid "View|Ignore|Delete Suspicious Files"
|
7659 |
msgstr ""
|
7660 |
|
7661 |
+
#: admin/mscan/mscan-help-text.php:60
|
7662 |
msgid ""
|
7663 |
"This form allows you to view, ignore, unignore or delete suspicious and "
|
7664 |
"skipped files. If you are not sure if code is malicious or safe you can copy "
|
7669 |
"ignored file it will be scanned in future scans."
|
7670 |
msgstr ""
|
7671 |
|
7672 |
+
#: admin/mscan/mscan-help-text.php:62 admin/mscan/mscan.php:1712
|
7673 |
msgid "View|Ignore Suspicious DB Entries"
|
7674 |
msgstr ""
|
7675 |
|
7676 |
+
#: admin/mscan/mscan-help-text.php:62
|
7677 |
msgid ""
|
7678 |
"This form allows you to view, ignore or unignore suspicious DB Entries. "
|
7679 |
"Note: The view option displays the DB Table, Column, Row ID and the MScan "
|
7683 |
"When you unignore an ignored DB Entry it will be scanned in future scans."
|
7684 |
msgstr ""
|
7685 |
|
7686 |
+
#: admin/mscan/mscan-help-text.php:67
|
7687 |
msgid "MScan Log General Information"
|
7688 |
msgstr ""
|
7689 |
|
7690 |
+
#: admin/mscan/mscan-help-text.php:67
|
7691 |
msgid ""
|
7692 |
"Your MScan Log file is a plain text static file and not a dynamic file or "
|
7693 |
"dynamic display to keep your website resource usage at a bare minimum and "
|
7698 |
"a certain size (256KB, 500KB or 1MB)."
|
7699 |
msgstr ""
|
7700 |
|
7701 |
+
#: admin/mscan/mscan-help-text.php:69
|
7702 |
msgid "MScan Logging"
|
7703 |
msgstr ""
|
7704 |
|
7705 |
+
#: admin/mscan/mscan-help-text.php:69 admin/mscan/mscan.php:1992
|
7706 |
msgid "Logs extensive details about each scan that you run."
|
7707 |
msgstr ""
|
7708 |
|
7709 |
+
#: admin/mscan/mscan-help-text.php:71
|
7710 |
msgid "MScan Log File Size"
|
7711 |
msgstr ""
|
7712 |
|
7713 |
+
#: admin/mscan/mscan-help-text.php:71
|
7714 |
msgid ""
|
7715 |
"Displays the size of your MScan Log file. If your log file is larger than "
|
7716 |
"2MB then you will see a Red warning message displayed: The S-Monitor Email "
|
7720 |
"contents of this Log file."
|
7721 |
msgstr ""
|
7722 |
|
7723 |
+
#: admin/mscan/mscan-help-text.php:71
|
7724 |
msgid "MScan Log Last Modified Time"
|
7725 |
msgstr ""
|
7726 |
|
7727 |
+
#: admin/mscan/mscan-help-text.php:73
|
7728 |
msgid ""
|
7729 |
"The Reset Last Modified Time in DB option/feature is currently completely "
|
7730 |
"automated and does not require any manual steps performed by you."
|
7731 |
msgstr ""
|
7732 |
|
7733 |
+
#: admin/mscan/mscan-help-text.php:75
|
7734 |
msgid ""
|
7735 |
"Clicking the Delete Log button will delete the entire contents of your MScan "
|
7736 |
"Log File. If you have setup S-Monitor Email Alerting & Log Options then the "
|
7738 |
"MScan Log file exceeds 2MB in size."
|
7739 |
msgstr ""
|
7740 |
|
7741 |
+
#: admin/mscan/mscan-help-text.php:80
|
7742 |
+
msgid "MScan Report General Information"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7743 |
msgstr ""
|
7744 |
|
7745 |
+
#: admin/mscan/mscan-help-text.php:80
|
7746 |
msgid ""
|
7747 |
+
"After running a scan your extensive scan results data is displayed on this "
|
7748 |
+
"tab page. If you would like to save your scan results data click the Save "
|
7749 |
+
"MScan Report button. You can save up to 20 scan reports. You can view or "
|
7750 |
+
"delete scan reports on the MScan Saved Reports tab page using the MScan "
|
7751 |
+
"Saved Reports Form."
|
7752 |
msgstr ""
|
7753 |
|
7754 |
+
#: admin/mscan/mscan-help-text.php:82
|
7755 |
+
msgid "No File Hashes for This Plugin or No File Hashes for This Theme"
|
7756 |
msgstr ""
|
7757 |
|
7758 |
+
#: admin/mscan/mscan-help-text.php:82
|
7759 |
msgid ""
|
7760 |
+
"If you see either of these status messages under Plugin File Hashes or Theme "
|
7761 |
+
"File Hashes then go to the main MScan 2.0 tab page, click the MScan 2.0 Read "
|
7762 |
+
"Me help button and read the \"Upload Plugin Zip Files\" or \"Upload Theme "
|
7763 |
+
"Zip Files\" help section."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7764 |
msgstr ""
|
7765 |
|
7766 |
+
#: admin/mscan/mscan-help-text.php:87
|
7767 |
+
msgid "MScan Saved Reports General Information"
|
7768 |
msgstr ""
|
7769 |
|
7770 |
+
#: admin/mscan/mscan-help-text.php:87
|
7771 |
msgid ""
|
7772 |
+
"You can save up to 20 scan reports. You can view or delete scan reports. If "
|
7773 |
+
"you would like to view a saved scan report select the View Report checkbox "
|
7774 |
+
"for the scan report you would like to view and click the View|Delete Reports "
|
7775 |
+
"button. Scan report data is displayed below the MScan Saved Reports Form. If "
|
7776 |
+
"you would like to delete a saved scan report select the Delete Report "
|
7777 |
+
"checkbox for the scan report you would like to delete and click the View|"
|
7778 |
+
"Delete Reports button. Refresh/reload the MScan Saved Reports tab page when "
|
7779 |
+
"deleting scan reports to see the current MScan Saved Reports Form data."
|
7780 |
msgstr ""
|
7781 |
|
7782 |
+
#: admin/mscan/mscan.php:52
|
7783 |
+
msgid "The MScan pattern matching code does not exist in your database."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7784 |
msgstr ""
|
7785 |
|
7786 |
+
#: admin/mscan/mscan.php:52
|
7787 |
msgid ""
|
7788 |
+
"Most likely your web host saw the pattern matching code in the MScan /"
|
7789 |
+
"bulletproof-security/admin/htaccess/mscan-pattern-match.php file as "
|
7790 |
+
"malicious and has either deleted the file or made the file or folder "
|
7791 |
+
"unreadable."
|
|
|
|
|
|
|
|
|
|
|
7792 |
msgstr ""
|
7793 |
|
7794 |
+
#: admin/mscan/mscan.php:52
|
|
|
|
|
7795 |
msgid ""
|
7796 |
+
"Unfortunately that means you will not be able to use MScan on your website/"
|
7797 |
+
"server/web host."
|
7798 |
msgstr ""
|
7799 |
|
7800 |
+
#: admin/mscan/mscan.php:193
|
7801 |
+
msgid "BulletProof Security ~ MScan 2.0 Malware Scanner"
|
|
|
|
|
7802 |
msgstr ""
|
7803 |
|
7804 |
+
#: admin/mscan/mscan.php:199 admin/mscan/mscan.php:216
|
7805 |
+
#: admin/mscan/mscan.php:218
|
7806 |
+
msgid "MScan 2.0"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7807 |
msgstr ""
|
7808 |
|
7809 |
+
#: admin/mscan/mscan.php:200 admin/mscan/mscan.php:1997
|
7810 |
+
#: admin/mscan/mscan.php:1999
|
7811 |
+
msgid "MScan Log"
|
7812 |
msgstr ""
|
7813 |
|
7814 |
+
#: admin/mscan/mscan.php:201 admin/mscan/mscan.php:2204
|
7815 |
+
#: admin/mscan/mscan.php:2206
|
7816 |
+
msgid "MScan Report"
|
|
|
7817 |
msgstr ""
|
7818 |
|
7819 |
+
#: admin/mscan/mscan.php:202 admin/mscan/mscan.php:2890
|
7820 |
+
#: admin/mscan/mscan.php:2892
|
7821 |
+
msgid "MScan Saved Reports"
|
|
|
7822 |
msgstr ""
|
7823 |
|
7824 |
+
#: admin/mscan/mscan.php:210
|
7825 |
+
msgid "MScan 2.0 ~ "
|
7826 |
msgstr ""
|
7827 |
|
7828 |
+
#: admin/mscan/mscan.php:210
|
7829 |
+
msgid "Scans website files & your database for hacker files or code"
|
7830 |
msgstr ""
|
7831 |
|
7832 |
+
#: admin/mscan/mscan.php:226
|
7833 |
+
msgid "MScan Malware Scanner Guide"
|
7834 |
msgstr ""
|
7835 |
|
7836 |
+
#: admin/mscan/mscan.php:227
|
7837 |
+
msgid "MScan Troubleshooting & Code Posting"
|
|
|
|
|
|
|
7838 |
msgstr ""
|
7839 |
|
7840 |
+
#: admin/mscan/mscan.php:228
|
7841 |
+
msgid "BPS Pro Troubleshooting Steps"
|
7842 |
msgstr ""
|
7843 |
|
7844 |
+
#: admin/mscan/mscan.php:343
|
7845 |
msgid ""
|
7846 |
+
"MScan scan results and data has been deleted. Your MScan option settings "
|
7847 |
+
"have not been deleted."
|
|
|
7848 |
msgstr ""
|
7849 |
|
7850 |
+
#: admin/mscan/mscan.php:360
|
|
|
|
|
|
|
|
|
7851 |
msgid ""
|
7852 |
+
"MScan Plugin and Theme file hashes have been deleted. New Plugin and Theme "
|
7853 |
+
"file hashes will be created the next time you run a scan. You should also "
|
7854 |
+
"click the MScan Reset button after using this tool. Your MScan option "
|
7855 |
+
"settings have not been deleted."
|
7856 |
msgstr ""
|
7857 |
|
7858 |
+
#: admin/mscan/mscan.php:402 admin/mscan/mscan.php:422
|
7859 |
+
#: admin/mscan/mscan.php:706
|
7860 |
+
msgid "Skipped file scanning is turned On. Only skipped files will be scanned."
|
|
|
7861 |
msgstr ""
|
7862 |
|
7863 |
+
#: admin/mscan/mscan.php:406
|
7864 |
msgid ""
|
7865 |
+
"MScan scanning has been stopped. Note: The Stop Scan button also stops the "
|
7866 |
+
"Scan Time Estimate Tool from calculating estimated scan time."
|
7867 |
msgstr ""
|
7868 |
|
7869 |
+
#: admin/mscan/mscan.php:528
|
7870 |
+
msgid "First Time Scan or the Delete File Hashes Tool was used"
|
|
|
|
|
7871 |
msgstr ""
|
7872 |
|
7873 |
+
#: admin/mscan/mscan.php:528
|
7874 |
msgid ""
|
7875 |
+
"You will only see this message the first time you do a scan or if you use "
|
7876 |
+
"the Delete Files Hashes Tool. In order to make sure all Plugin and Theme "
|
7877 |
+
"hash files are created successfully no file scanning will occur during this "
|
7878 |
+
"scan. You can run a new scan after this scan has completed."
|
7879 |
msgstr ""
|
7880 |
|
7881 |
+
#: admin/mscan/mscan.php:549
|
7882 |
+
msgid "Click OK to start scanning or click Cancel."
|
|
|
|
|
7883 |
msgstr ""
|
7884 |
|
7885 |
+
#: admin/mscan/mscan.php:555
|
7886 |
+
msgid "Click OK to stop scanning or click Cancel."
|
|
|
|
|
|
|
|
|
|
|
7887 |
msgstr ""
|
7888 |
|
7889 |
+
#: admin/mscan/mscan.php:567
|
7890 |
msgid ""
|
7891 |
+
"Click OK to reset/delete all MScan scan results and data or click Cancel. "
|
7892 |
+
"Note: MScan option settings will not be reset/deleted."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7893 |
msgstr ""
|
7894 |
|
7895 |
+
#: admin/mscan/mscan.php:575
|
7896 |
msgid "MScan Options & Tools"
|
7897 |
msgstr ""
|
7898 |
|
7899 |
+
#: admin/mscan/mscan.php:587
|
7900 |
msgid "Save MScan Options"
|
7901 |
msgstr ""
|
7902 |
|
7903 |
+
#: admin/mscan/mscan.php:710
|
7904 |
msgid ""
|
7905 |
"Skipped file scanning is turned On. There are no skipped files to be "
|
7906 |
"scanned. Either there really are not any skipped files to scan or you have "
|
7907 |
"not run a regular scan yet with the Skipped File Scan option turned Off."
|
7908 |
msgstr ""
|
7909 |
|
7910 |
+
#: admin/mscan/mscan.php:714
|
7911 |
msgid "Warning: "
|
7912 |
msgstr ""
|
7913 |
|
7914 |
+
#: admin/mscan/mscan.php:714
|
7915 |
msgid ""
|
7916 |
"On some web hosts (Known host issues: SiteGround, Cyon) turning On the "
|
7917 |
"\"Automatically Delete /tmp Files\" option setting will cause your website/"
|
7918 |
"server to crash. If your website/server does crash contact your web host "
|
7919 |
"support folks, tell them that you deleted /tmp files and your website/server "
|
7920 |
+
"has crashed. You can use the MScan Exclude /tmp Files option to exclude "
|
7921 |
+
"certain tmp files from being deleted. You will need to ask your web host for "
|
7922 |
+
"the names of those tmp files to exclude."
|
7923 |
msgstr ""
|
7924 |
|
7925 |
+
#: admin/mscan/mscan.php:718
|
7926 |
msgid "MScan Options saved."
|
7927 |
msgstr ""
|
7928 |
|
7929 |
+
#: admin/mscan/mscan.php:916
|
7930 |
+
msgid "Files are not displayed, but will be scanned"
|
7931 |
+
msgstr ""
|
7932 |
+
|
7933 |
+
#: admin/mscan/mscan.php:917
|
7934 |
msgid "MScan Options"
|
7935 |
msgstr ""
|
7936 |
|
7937 |
+
#: admin/mscan/mscan.php:918
|
7938 |
msgid "MScan Tools"
|
7939 |
msgstr ""
|
7940 |
|
7941 |
+
#: admin/mscan/mscan.php:931
|
7942 |
msgid "Folder Name"
|
7943 |
msgstr ""
|
7944 |
|
7945 |
+
#: admin/mscan/mscan.php:950
|
7946 |
msgid "Folder is not readable"
|
7947 |
msgstr ""
|
7948 |
|
7949 |
+
#: admin/mscan/mscan.php:981
|
7950 |
msgid ""
|
7951 |
+
"This folder contains another WordPress website. This checkbox cannot be "
|
7952 |
+
"checked. To scan that site run MScan from that site. Click the MScan Read Me "
|
7953 |
+
"help button above and read the \"Scanning Other WordPress Sites\" help "
|
7954 |
+
"section."
|
7955 |
msgstr ""
|
7956 |
|
7957 |
+
#: admin/mscan/mscan.php:1015
|
7958 |
msgid "Max File Size Limit to Scan:"
|
7959 |
msgstr ""
|
7960 |
|
7961 |
+
#: admin/mscan/mscan.php:1020
|
7962 |
msgid "Max Time Limit to Scan:"
|
7963 |
msgstr ""
|
7964 |
|
7965 |
+
#: admin/mscan/mscan.php:1024
|
7966 |
msgid "Enter one folder path per line. Include folder slashes."
|
7967 |
msgstr ""
|
7968 |
|
7969 |
+
#: admin/mscan/mscan.php:1024 admin/mscan/mscan.php:1048
|
7970 |
msgid "Example:"
|
7971 |
msgstr ""
|
7972 |
|
7973 |
+
#: admin/mscan/mscan.php:1024 admin/mscan/mscan.php:1036
|
7974 |
+
#: admin/mscan/mscan.php:1048
|
7975 |
msgid "Click the MScan Read Me help button for more help info."
|
7976 |
msgstr ""
|
7977 |
|
7978 |
+
#: admin/mscan/mscan.php:1032
|
7979 |
msgid "Database Scan On"
|
7980 |
msgstr ""
|
7981 |
|
7982 |
+
#: admin/mscan/mscan.php:1033
|
7983 |
msgid "Database Scan Off"
|
7984 |
msgstr ""
|
7985 |
|
7986 |
+
#: admin/mscan/mscan.php:1036
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7987 |
msgid ""
|
7988 |
+
"When Skipped File Scan is On only skipped files will be scanned. Note: No "
|
7989 |
+
"other MScan option settings have any effect while Skipped File Scan is set "
|
7990 |
+
"to On."
|
7991 |
msgstr ""
|
7992 |
|
7993 |
+
#: admin/mscan/mscan.php:1038
|
7994 |
msgid "Skipped File Scan Off"
|
7995 |
msgstr ""
|
7996 |
|
7997 |
+
#: admin/mscan/mscan.php:1039
|
7998 |
msgid "Skipped File Scan On"
|
7999 |
msgstr ""
|
8000 |
|
8001 |
+
#: admin/mscan/mscan.php:1044
|
8002 |
msgid "Delete Tmp Files Off"
|
8003 |
msgstr ""
|
8004 |
|
8005 |
+
#: admin/mscan/mscan.php:1045
|
8006 |
msgid "Delete Tmp Files On"
|
8007 |
msgstr ""
|
8008 |
|
8009 |
+
#: admin/mscan/mscan.php:1048
|
8010 |
msgid "Enter one file name per line."
|
8011 |
msgstr ""
|
8012 |
|
8013 |
+
#: admin/mscan/mscan.php:1054
|
8014 |
+
msgid "Scheduled Scan Frequency (BPS Pro only)"
|
8015 |
+
msgstr ""
|
8016 |
+
|
8017 |
+
#: admin/mscan/mscan.php:1056
|
8018 |
msgid "Scheduled Scan Off"
|
8019 |
msgstr ""
|
8020 |
|
8021 |
+
#: admin/mscan/mscan.php:1057
|
8022 |
msgid "Run Scan Every 60 Minutes"
|
8023 |
msgstr ""
|
8024 |
|
8025 |
+
#: admin/mscan/mscan.php:1058
|
8026 |
msgid "Run Scan Every 3 Hours"
|
8027 |
msgstr ""
|
8028 |
|
8029 |
+
#: admin/mscan/mscan.php:1059
|
8030 |
msgid "Run Scan Every 6 Hours"
|
8031 |
msgstr ""
|
8032 |
|
8033 |
+
#: admin/mscan/mscan.php:1060
|
8034 |
msgid "Run Scan Every 12 Hours"
|
8035 |
msgstr ""
|
8036 |
|
8037 |
+
#: admin/mscan/mscan.php:1061
|
8038 |
msgid "Run Scan Every 24 Hours"
|
8039 |
msgstr ""
|
8040 |
|
8041 |
+
#: admin/mscan/mscan.php:1064
|
8042 |
msgid "Click OK to save MScan Options or click Cancel"
|
8043 |
msgstr ""
|
8044 |
|
8045 |
+
#: admin/mscan/mscan.php:1080
|
8046 |
msgid ""
|
8047 |
+
"CAUTION: Please click the MScan Read Me help button before using this tool. "
|
8048 |
+
"This tool allows you to delete the Plugin and Theme file hashes.\\n"
|
8049 |
"\\n-------------------------------------------------------------\\n\\nThis "
|
8050 |
+
"tool should ONLY be used if there is a problem when scanning Plugin and "
|
8051 |
+
"Theme files.\\n"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8052 |
"\\n-------------------------------------------------------------\\n\\nClick "
|
8053 |
+
"OK to delete Plugin and Theme file hashes or click Cancel"
|
8054 |
msgstr ""
|
8055 |
|
8056 |
+
#: admin/mscan/mscan.php:1090
|
8057 |
msgid ""
|
8058 |
+
"Clicking OK will upload Plugin Zip files to the /wp-content/bps-backup/"
|
8059 |
+
"plugin-hashes/ folder. The zip files will be extracted, MD5 file hashes will "
|
8060 |
+
"be created and the zip files will be deleted."
|
|
|
|
|
|
|
|
|
|
|
8061 |
msgstr ""
|
8062 |
|
8063 |
+
#: admin/mscan/mscan.php:1090
|
8064 |
msgid ""
|
8065 |
+
"Zip files MUST be named using this exact format: plugin-name.x.x.zip where x "
|
8066 |
+
"is the actual current version number of the plugin in the zip file."
|
8067 |
+
msgstr ""
|
8068 |
+
|
8069 |
+
#: admin/mscan/mscan.php:1090
|
8070 |
+
msgid "Click OK to upload Plugin Zip files or click Cancel."
|
8071 |
+
msgstr ""
|
8072 |
+
|
8073 |
+
#: admin/mscan/mscan.php:1100
|
8074 |
+
msgid ""
|
8075 |
+
"Clicking OK will upload Theme Zip files to the /wp-content/bps-backup/theme-"
|
8076 |
+
"hashes/ folder. The zip files will be extracted, MD5 file hashes will be "
|
8077 |
+
"created and the zip files will be deleted."
|
8078 |
+
msgstr ""
|
8079 |
+
|
8080 |
+
#: admin/mscan/mscan.php:1100
|
8081 |
+
msgid ""
|
8082 |
+
"Zip files MUST be named using this exact format: theme-name.x.x.zip where x "
|
8083 |
+
"is the actual current version number of the theme in the zip file."
|
8084 |
+
msgstr ""
|
8085 |
+
|
8086 |
+
#: admin/mscan/mscan.php:1100
|
8087 |
+
msgid "Click OK to upload Theme Zip files or click Cancel."
|
8088 |
+
msgstr ""
|
8089 |
+
|
8090 |
+
#: admin/mscan/mscan.php:1143
|
8091 |
+
msgid "Plugin Zip File Upload Successful: "
|
8092 |
+
msgstr ""
|
8093 |
+
|
8094 |
+
#: admin/mscan/mscan.php:1206 admin/mscan/mscan.php:1320
|
8095 |
+
msgid "Error: Zip File Upload Failed: "
|
8096 |
+
msgstr ""
|
8097 |
+
|
8098 |
+
#: admin/mscan/mscan.php:1206 admin/mscan/mscan.php:1320
|
8099 |
+
msgid "Unable to move this uploaded zip file: "
|
8100 |
+
msgstr ""
|
8101 |
+
|
8102 |
+
#: admin/mscan/mscan.php:1206 admin/mscan/mscan.php:1320
|
8103 |
+
msgid " to this folder: "
|
8104 |
+
msgstr ""
|
8105 |
+
|
8106 |
+
#: admin/mscan/mscan.php:1212 admin/mscan/mscan.php:1326
|
8107 |
+
msgid "File Extension/Type or Filename Error: "
|
8108 |
+
msgstr ""
|
8109 |
+
|
8110 |
+
#: admin/mscan/mscan.php:1212
|
8111 |
+
msgid ""
|
8112 |
+
" is either not a .zip file or the .zip file is not named correctly. Only ."
|
8113 |
+
"zip files are allowed to be uploaded. Zip files MUST be named using this "
|
8114 |
+
"exact filename format: plugin-name.x.x.zip where x is the actual current "
|
8115 |
+
"version of the plugin in the zip file."
|
8116 |
+
msgstr ""
|
8117 |
+
|
8118 |
+
#: admin/mscan/mscan.php:1218 admin/mscan/mscan.php:1332
|
8119 |
+
msgid "Error: No zip file chosen: "
|
8120 |
+
msgstr ""
|
8121 |
+
|
8122 |
+
#: admin/mscan/mscan.php:1218
|
8123 |
+
msgid ""
|
8124 |
+
"You need to choose zip files before clicking the Upload Plugin Zip Files "
|
8125 |
+
"button."
|
8126 |
msgstr ""
|
8127 |
|
8128 |
+
#: admin/mscan/mscan.php:1257
|
8129 |
+
msgid "Theme Zip File Upload Successful: "
|
8130 |
+
msgstr ""
|
8131 |
+
|
8132 |
+
#: admin/mscan/mscan.php:1326
|
8133 |
+
msgid ""
|
8134 |
+
" is either not a .zip file or the .zip file is not named correctly. Only ."
|
8135 |
+
"zip files are allowed to be uploaded. Zip files MUST be named using this "
|
8136 |
+
"exact filename format: theme-name.x.x.zip where x is the actual current "
|
8137 |
+
"version of the theme in the zip file."
|
8138 |
+
msgstr ""
|
8139 |
+
|
8140 |
+
#: admin/mscan/mscan.php:1332
|
8141 |
+
msgid ""
|
8142 |
+
"You need to choose zip files before clicking the Upload Theme Zip Files "
|
8143 |
+
"button."
|
8144 |
+
msgstr ""
|
8145 |
+
|
8146 |
+
#: admin/mscan/mscan.php:1479
|
8147 |
msgid " has been deleted."
|
8148 |
msgstr ""
|
8149 |
|
8150 |
+
#: admin/mscan/mscan.php:1500
|
8151 |
msgid ""
|
8152 |
" Current Status has been changed to Ignored File and this file will not be "
|
8153 |
"scanned in any future MScan Scans."
|
8154 |
msgstr ""
|
8155 |
|
8156 |
+
#: admin/mscan/mscan.php:1521
|
8157 |
msgid ""
|
8158 |
" Ignored File Status has been removed. The previous Status of the file will "
|
8159 |
"be displayed again and this file will be scanned in future MScan scans."
|
8160 |
msgstr ""
|
8161 |
|
8162 |
+
#: admin/mscan/mscan.php:1543 admin/mscan/mscan.php:1552
|
8163 |
msgid "Close File"
|
8164 |
msgstr ""
|
8165 |
|
8166 |
+
#: admin/mscan/mscan.php:1543 admin/mscan/mscan.php:1552
|
8167 |
+
#: admin/mscan/mscan.php:1859
|
8168 |
msgid "MScan Pattern Match"
|
8169 |
msgstr ""
|
8170 |
|
8171 |
+
#: admin/mscan/mscan.php:1543
|
8172 |
msgid ""
|
8173 |
"Only the MScan Pattern Match is displayed for images instead of the image "
|
8174 |
"file code."
|
8175 |
msgstr ""
|
8176 |
|
8177 |
+
#: admin/mscan/mscan.php:1543
|
8178 |
msgid ""
|
8179 |
"Opening image files to view image file code does not work well in a Browser."
|
8180 |
msgstr ""
|
8181 |
|
8182 |
+
#: admin/mscan/mscan.php:1543
|
8183 |
msgid ""
|
8184 |
"You can download suspicious image files and use a code editor like Notepad++ "
|
8185 |
"to check image file code for any malicious code."
|
8186 |
msgstr ""
|
8187 |
|
8188 |
+
#: admin/mscan/mscan.php:1543 admin/mscan/mscan.php:1552
|
8189 |
+
#: admin/mscan/mscan.php:1859
|
8190 |
msgid ""
|
8191 |
"If you are not sure what to check for or what is and is not malicious code "
|
8192 |
"then click the MScan Read Me help button."
|
8193 |
msgstr ""
|
8194 |
|
8195 |
+
#: admin/mscan/mscan.php:1552
|
8196 |
msgid ""
|
8197 |
"You can use your Browser's Search or Find feature to search the file "
|
8198 |
"contents/code displayed below using the MScan Pattern Match above for the "
|
8199 |
"suspicious code that was detected by MScan."
|
8200 |
msgstr ""
|
8201 |
|
8202 |
+
#: admin/mscan/mscan.php:1552
|
8203 |
msgid ""
|
8204 |
"You can download suspicious files if you would like to check the file "
|
8205 |
"contents/code more extensively with a code editor like Notepad++."
|
8206 |
msgstr ""
|
8207 |
|
8208 |
+
#: admin/mscan/mscan.php:1567 admin/mscan/mscan.php:2544
|
8209 |
+
#: admin/mscan/mscan.php:3366
|
8210 |
+
msgid ""
|
8211 |
+
"File hash comparison scan results are 100% accurate. WP Core, Plugin and "
|
8212 |
+
"Theme files are scanned using file hash comparison scanning."
|
8213 |
+
msgstr ""
|
8214 |
+
|
8215 |
+
#: admin/mscan/mscan.php:1567 admin/mscan/mscan.php:2544
|
8216 |
+
#: admin/mscan/mscan.php:3366
|
8217 |
+
msgid ""
|
8218 |
+
"Pattern matching scan results are less accurate and will usually detect some "
|
8219 |
+
"false positive matches. All other files that are not WP Core, Plugin and "
|
8220 |
+
"Theme files are scanned using pattern matching scanning."
|
8221 |
+
msgstr ""
|
8222 |
+
|
8223 |
+
#: admin/mscan/mscan.php:1567
|
8224 |
+
msgid ""
|
8225 |
+
"You can View, Ignore and Delete files detected as suspicious using the Form "
|
8226 |
+
"below. Before deleting any files make a backup of those files on your "
|
8227 |
+
"computer not on your hosting account."
|
8228 |
+
msgstr ""
|
8229 |
+
|
8230 |
+
#: admin/mscan/mscan.php:1567 admin/mscan/mscan.php:2544
|
8231 |
+
#: admin/mscan/mscan.php:3366
|
8232 |
+
msgid ""
|
8233 |
+
"And of course check the file contents of suspicious files to see if they "
|
8234 |
+
"contain hacker code or are false positive matches. Use the Ignore File "
|
8235 |
+
"checkbox option to ignore false postive matches."
|
8236 |
+
msgstr ""
|
8237 |
+
|
8238 |
+
#: admin/mscan/mscan.php:1567 admin/mscan/mscan.php:2544
|
8239 |
+
#: admin/mscan/mscan.php:3366
|
8240 |
+
msgid ""
|
8241 |
+
"When you ignore a file it will no longer be scanned in any future scans. "
|
8242 |
+
"When you unignore an ignored file it will be scanned in future scans."
|
8243 |
+
msgstr ""
|
8244 |
+
|
8245 |
+
#: admin/mscan/mscan.php:1583 admin/mscan/mscan.php:1884
|
8246 |
+
#: admin/mscan/mscan.php:2559 admin/mscan/mscan.php:2637
|
8247 |
+
#: admin/mscan/mscan.php:3373 admin/mscan/mscan.php:3419
|
8248 |
msgid "Current Status"
|
8249 |
msgstr ""
|
8250 |
|
8251 |
+
#: admin/mscan/mscan.php:1584
|
8252 |
msgid "View<br>File"
|
8253 |
msgstr ""
|
8254 |
|
8255 |
+
#: admin/mscan/mscan.php:1585
|
8256 |
msgid "Ignore<br>File"
|
8257 |
msgstr ""
|
8258 |
|
8259 |
+
#: admin/mscan/mscan.php:1586
|
8260 |
msgid "Unignore<br>File"
|
8261 |
msgstr ""
|
8262 |
|
8263 |
+
#: admin/mscan/mscan.php:1587
|
8264 |
msgid "Delete<br>File"
|
8265 |
msgstr ""
|
8266 |
|
8267 |
+
#: admin/mscan/mscan.php:1588 admin/mscan/mscan.php:2560
|
8268 |
+
#: admin/mscan/mscan.php:3374 admin/system-info/system-info.php:948
|
8269 |
#: admin/system-info/system-info.php:988
|
8270 |
msgid "File Path"
|
8271 |
msgstr ""
|
8272 |
|
8273 |
+
#: admin/mscan/mscan.php:1589
|
8274 |
+
msgid "File Hash or<br>Pattern Match"
|
8275 |
msgstr ""
|
8276 |
|
8277 |
+
#: admin/mscan/mscan.php:1590 admin/mscan/mscan.php:1892
|
8278 |
msgid "Scan<br>Time"
|
8279 |
msgstr ""
|
8280 |
|
8281 |
+
#: admin/mscan/mscan.php:1603 admin/mscan/mscan.php:2575
|
8282 |
msgid "Skipped File"
|
8283 |
msgstr ""
|
8284 |
|
8285 |
+
#: admin/mscan/mscan.php:1603 admin/mscan/mscan.php:2575
|
8286 |
msgid "Not Scanned"
|
8287 |
msgstr ""
|
8288 |
|
8289 |
+
#: admin/mscan/mscan.php:1607 admin/mscan/mscan.php:1614
|
8290 |
+
#: admin/mscan/mscan.php:2579 admin/mscan/mscan.php:2586
|
8291 |
msgid "Ignored File"
|
8292 |
msgstr ""
|
8293 |
|
8294 |
+
#: admin/mscan/mscan.php:1619 admin/mscan/mscan.php:2591
|
8295 |
msgid "Suspicious File"
|
8296 |
msgstr ""
|
8297 |
|
8298 |
+
#: admin/mscan/mscan.php:1625 admin/mscan/mscan.php:1913
|
8299 |
+
#: admin/mscan/mscan.php:3012
|
8300 |
msgid "View"
|
8301 |
msgstr ""
|
8302 |
|
8303 |
+
#: admin/mscan/mscan.php:1626 admin/mscan/mscan.php:1914
|
8304 |
msgid "Ignore"
|
8305 |
msgstr ""
|
8306 |
|
8307 |
+
#: admin/mscan/mscan.php:1628 admin/mscan/mscan.php:1915
|
8308 |
msgid "Unignore"
|
8309 |
msgstr ""
|
8310 |
|
8311 |
+
#: admin/mscan/mscan.php:1646 admin/mscan/mscan.php:2614
|
8312 |
msgid "No Suspicious Files were detected"
|
8313 |
msgstr ""
|
8314 |
|
8315 |
+
#: admin/mscan/mscan.php:1660
|
8316 |
msgid ""
|
8317 |
"View File Option: Selecting the View File Checkbox Form option will display "
|
8318 |
"the contents of the file that you have selected to view.\\n"
|
8332 |
"OK to proceed or click Cancel"
|
8333 |
msgstr ""
|
8334 |
|
8335 |
+
#: admin/mscan/mscan.php:1816
|
8336 |
msgid "Current Status has been changed to Ignored for DB Row ID"
|
8337 |
msgstr ""
|
8338 |
|
8339 |
+
#: admin/mscan/mscan.php:1816 admin/mscan/mscan.php:1835
|
8340 |
msgid "in DB Column"
|
8341 |
msgstr ""
|
8342 |
|
8343 |
+
#: admin/mscan/mscan.php:1816
|
8344 |
msgid "This DB Entry will not be scanned in any future MScan Scans."
|
8345 |
msgstr ""
|
8346 |
|
8347 |
+
#: admin/mscan/mscan.php:1835
|
8348 |
msgid "The Ignored DB Entry Status has been removed for DB Row ID"
|
8349 |
msgstr ""
|
8350 |
|
8351 |
+
#: admin/mscan/mscan.php:1835
|
8352 |
msgid ""
|
8353 |
"The previous Status of the DB Entry will be displayed again and this DB "
|
8354 |
"Entry will be scanned in future MScan scans."
|
8355 |
msgstr ""
|
8356 |
|
8357 |
+
#: admin/mscan/mscan.php:1854 admin/mscan/mscan.php:1859
|
8358 |
msgid "Close"
|
8359 |
msgstr ""
|
8360 |
|
8361 |
+
#: admin/mscan/mscan.php:1854
|
8362 |
msgid "Pharma Hack DB Table and Column"
|
8363 |
msgstr ""
|
8364 |
|
8365 |
+
#: admin/mscan/mscan.php:1854
|
8366 |
msgid "Pharma Hack cleanup/removal steps"
|
8367 |
msgstr ""
|
8368 |
|
8369 |
+
#: admin/mscan/mscan.php:1854
|
8370 |
msgid "Edit your theme's header.php file and delete this code: "
|
8371 |
msgstr ""
|
8372 |
|
8373 |
+
#: admin/mscan/mscan.php:1854
|
8374 |
msgid ""
|
8375 |
"Delete this file in your theme's root folder: nav.php. Login to your web "
|
8376 |
"host control panel, login to your WP Database using phpMyAdmin and delete "
|
8379 |
"any that you do see."
|
8380 |
msgstr ""
|
8381 |
|
8382 |
+
#: admin/mscan/mscan.php:1859
|
8383 |
msgid "DB Table, Column and Row ID"
|
8384 |
msgstr ""
|
8385 |
|
8386 |
+
#: admin/mscan/mscan.php:1859
|
8387 |
msgid "Steps to view the database data that MScan detected as suspicious"
|
8388 |
msgstr ""
|
8389 |
|
8390 |
+
#: admin/mscan/mscan.php:1859
|
8391 |
msgid ""
|
8392 |
"Login to your web host control panel, login to your WP Database using "
|
8393 |
"phpMyAdmin and check the data in the DB Table, Column and Row ID shown "
|
8394 |
"above. Note: Look for code that matches the MScan Pattern Match."
|
8395 |
msgstr ""
|
8396 |
|
8397 |
+
#: admin/mscan/mscan.php:1870 admin/mscan/mscan.php:2624
|
8398 |
+
#: admin/mscan/mscan.php:3410
|
8399 |
+
msgid "Database scanning uses pattern matching scanning."
|
8400 |
+
msgstr ""
|
8401 |
+
|
8402 |
+
#: admin/mscan/mscan.php:1870 admin/mscan/mscan.php:2624
|
8403 |
+
#: admin/mscan/mscan.php:3410
|
8404 |
+
msgid ""
|
8405 |
+
"Pattern matching scan results will usually detect some false positive "
|
8406 |
+
"matches."
|
8407 |
+
msgstr ""
|
8408 |
+
|
8409 |
+
#: admin/mscan/mscan.php:1870
|
8410 |
+
msgid ""
|
8411 |
+
"This form allows you to view, ignore or unignore suspicious DB Entries. "
|
8412 |
+
"Note: The view option displays the DB Table, Column, Row ID and the MScan "
|
8413 |
+
"Pattern Match that was detected by the MScan scan."
|
8414 |
+
msgstr ""
|
8415 |
+
|
8416 |
+
#: admin/mscan/mscan.php:1870
|
8417 |
+
msgid "Before deleting any database data make a backup of your database."
|
8418 |
+
msgstr ""
|
8419 |
+
|
8420 |
+
#: admin/mscan/mscan.php:1870 admin/mscan/mscan.php:2624
|
8421 |
+
#: admin/mscan/mscan.php:3410
|
8422 |
+
msgid ""
|
8423 |
+
"Use phpMyAdmin or a similar tool to check your database Row where the "
|
8424 |
+
"suspicious code was found."
|
8425 |
+
msgstr ""
|
8426 |
+
|
8427 |
+
#: admin/mscan/mscan.php:1870 admin/mscan/mscan.php:2624
|
8428 |
+
#: admin/mscan/mscan.php:3410
|
8429 |
+
msgid ""
|
8430 |
+
"When you ignore a DB Entry it will no longer be scanned in any future scans. "
|
8431 |
+
"When you unignore an ignored DB Entry it will be scanned in future scans."
|
8432 |
+
msgstr ""
|
8433 |
+
|
8434 |
+
#: admin/mscan/mscan.php:1885
|
8435 |
msgid "View<br>DB Entry"
|
8436 |
msgstr ""
|
8437 |
|
8438 |
+
#: admin/mscan/mscan.php:1886
|
8439 |
msgid "Ignore<br>DB Entry"
|
8440 |
msgstr ""
|
8441 |
|
8442 |
+
#: admin/mscan/mscan.php:1887
|
8443 |
msgid "Unignore<br>DB Entry"
|
8444 |
msgstr ""
|
8445 |
|
8446 |
+
#: admin/mscan/mscan.php:1888 admin/mscan/mscan.php:2638
|
8447 |
+
#: admin/mscan/mscan.php:3420
|
8448 |
msgid "DB Table"
|
8449 |
msgstr ""
|
8450 |
|
8451 |
+
#: admin/mscan/mscan.php:1889 admin/mscan/mscan.php:2639
|
8452 |
+
#: admin/mscan/mscan.php:3421
|
8453 |
msgid "DB Column"
|
8454 |
msgstr ""
|
8455 |
|
8456 |
+
#: admin/mscan/mscan.php:1890 admin/mscan/mscan.php:2640
|
8457 |
+
#: admin/mscan/mscan.php:3422
|
8458 |
msgid "DB Row ID"
|
8459 |
msgstr ""
|
8460 |
|
8461 |
+
#: admin/mscan/mscan.php:1891
|
8462 |
+
msgid "Pattern<br>Match"
|
8463 |
+
msgstr ""
|
8464 |
+
|
8465 |
+
#: admin/mscan/mscan.php:1903 admin/mscan/mscan.php:2653
|
8466 |
msgid "Ignored DB Entry"
|
8467 |
msgstr ""
|
8468 |
|
8469 |
+
#: admin/mscan/mscan.php:1908 admin/mscan/mscan.php:2658
|
8470 |
msgid "Suspicious DB Entry"
|
8471 |
msgstr ""
|
8472 |
|
8473 |
+
#: admin/mscan/mscan.php:1926 admin/mscan/mscan.php:2675
|
8474 |
msgid "No Suspicious DB Entries were detected"
|
8475 |
msgstr ""
|
8476 |
|
8477 |
+
#: admin/mscan/mscan.php:1941
|
8478 |
msgid ""
|
8479 |
"View DB Entry Option: Selecting the View DB Entry Checkbox Form option will "
|
8480 |
"display the contents of the DB Table, Column and Row ID that you have "
|
8492 |
"OK to proceed or click Cancel"
|
8493 |
msgstr ""
|
8494 |
|
8495 |
+
#: admin/mscan/mscan.php:1992
|
8496 |
msgid "MScan Log ~ "
|
8497 |
msgstr ""
|
8498 |
|
8499 |
+
#: admin/mscan/mscan.php:2023
|
|
|
|
|
|
|
|
|
|
|
|
|
8500 |
msgid "Click the Reset Last Modified Time in DB button"
|
8501 |
msgstr ""
|
8502 |
|
8503 |
+
#: admin/mscan/mscan.php:2023
|
8504 |
msgid "to set the"
|
8505 |
msgstr ""
|
8506 |
|
8507 |
+
#: admin/mscan/mscan.php:2028 admin/mscan/mscan.php:2033
|
8508 |
msgid "Last Modified Time in DB:"
|
8509 |
msgstr ""
|
8510 |
|
8511 |
+
#: admin/mscan/mscan.php:2046 admin/mscan/mscan.php:2049
|
8512 |
msgid "MScan Log File Size: "
|
8513 |
msgstr ""
|
8514 |
|
8515 |
+
#: admin/mscan/mscan.php:2049
|
8516 |
msgid ""
|
8517 |
"The S-Monitor Email Logging options will only send log files up to 2MB in "
|
8518 |
"size."
|
8519 |
msgstr ""
|
8520 |
|
8521 |
+
#: admin/mscan/mscan.php:2049
|
8522 |
msgid ""
|
8523 |
"Copy and paste the MScan Log file contents into a Notepad text file on your "
|
8524 |
"computer and save it."
|
8525 |
msgstr ""
|
8526 |
|
8527 |
+
#: admin/mscan/mscan.php:2062
|
8528 |
msgid "MScan Log Last Modified Time:"
|
8529 |
msgstr ""
|
8530 |
|
8531 |
+
#: admin/mscan/mscan.php:2064
|
8532 |
msgid "Last Modified Time in File:"
|
8533 |
msgstr ""
|
8534 |
|
8535 |
+
#: admin/mscan/mscan.php:2083
|
8536 |
msgid ""
|
8537 |
"Success! Your MScan Log has been deleted and replaced with a new blank MScan "
|
8538 |
"Log file."
|
8539 |
msgstr ""
|
8540 |
|
8541 |
+
#: admin/mscan/mscan.php:2093
|
8542 |
msgid "Clicking OK will delete the contents of your MScan Log file."
|
8543 |
msgstr ""
|
8544 |
|
8545 |
+
#: admin/mscan/mscan.php:2112
|
8546 |
msgid ""
|
8547 |
"The MScan Log File Was Not Found! Check that the file really exists here - /"
|
8548 |
msgstr ""
|
8549 |
|
8550 |
+
#: admin/mscan/mscan.php:2112
|
8551 |
msgid "/bps-backup/logs/mscan_log.txt and is named correctly."
|
8552 |
msgstr ""
|
8553 |
|
8554 |
+
#: admin/mscan/mscan.php:2131
|
8555 |
msgid "File Open and Write test successful! Your MScan Log file is writable."
|
8556 |
msgstr ""
|
8557 |
|
8558 |
+
#: admin/mscan/mscan.php:2143 admin/mscan/mscan.php:2147
|
8559 |
msgid "Success! Your MScan Log file has been updated."
|
8560 |
msgstr ""
|
8561 |
|
8562 |
+
#: admin/mscan/mscan.php:2199
|
8563 |
+
msgid "MScan Report ~ "
|
8564 |
+
msgstr ""
|
8565 |
+
|
8566 |
+
#: admin/mscan/mscan.php:2199
|
8567 |
+
msgid ""
|
8568 |
+
"Displays the current scan results data. Click the Save MScan Report button "
|
8569 |
+
"to save MScan Reports."
|
8570 |
+
msgstr ""
|
8571 |
+
|
8572 |
+
#: admin/mscan/mscan.php:2212
|
8573 |
+
msgid "Click OK to save the MScan Report or click Cancel."
|
8574 |
+
msgstr ""
|
8575 |
+
|
8576 |
+
#: admin/mscan/mscan.php:2233
|
8577 |
+
msgid ""
|
8578 |
+
"No Scan Results To Display: No scans have been run yet or you clicked the "
|
8579 |
+
"MScan Reset button."
|
8580 |
+
msgstr ""
|
8581 |
+
|
8582 |
+
#: admin/mscan/mscan.php:2247
|
8583 |
+
msgid "Scan Date|Time: "
|
8584 |
+
msgstr ""
|
8585 |
+
|
8586 |
+
#: admin/mscan/mscan.php:2250
|
8587 |
+
msgid "Website: "
|
8588 |
+
msgstr ""
|
8589 |
+
|
8590 |
+
#: admin/mscan/mscan.php:2253
|
8591 |
+
msgid "Scan Completion Time: "
|
8592 |
+
msgstr ""
|
8593 |
+
|
8594 |
+
#: admin/mscan/mscan.php:2256
|
8595 |
+
msgid "Total Files Scanned: "
|
8596 |
+
msgstr ""
|
8597 |
+
|
8598 |
+
#: admin/mscan/mscan.php:2259
|
8599 |
+
msgid "Total Skipped Files: "
|
8600 |
+
msgstr ""
|
8601 |
+
|
8602 |
+
#: admin/mscan/mscan.php:2268
|
8603 |
+
msgid "Total Suspicious Files: "
|
8604 |
+
msgstr ""
|
8605 |
+
|
8606 |
+
#: admin/mscan/mscan.php:2277
|
8607 |
+
msgid "Total Suspicious DB Entries: "
|
8608 |
+
msgstr ""
|
8609 |
+
|
8610 |
+
#: admin/mscan/mscan.php:2280 admin/mscan/mscan.php:3330
|
8611 |
+
msgid "MScan Option Settings: "
|
8612 |
+
msgstr ""
|
8613 |
+
|
8614 |
+
#: admin/mscan/mscan.php:2294 admin/mscan/mscan.php:2297
|
8615 |
+
msgid "Website Folders & Files To Scan: "
|
8616 |
+
msgstr ""
|
8617 |
+
|
8618 |
+
#: admin/mscan/mscan.php:2297 admin/mscan/mscan.php:2308
|
8619 |
+
#: admin/mscan/mscan.php:2335
|
8620 |
+
msgid "None"
|
8621 |
+
msgstr ""
|
8622 |
+
|
8623 |
+
#: admin/mscan/mscan.php:2305 admin/mscan/mscan.php:2308
|
8624 |
+
msgid "Excluded Folders: "
|
8625 |
+
msgstr ""
|
8626 |
+
|
8627 |
+
#: admin/mscan/mscan.php:2312
|
8628 |
+
msgid "Max File Size Limit to Scan: "
|
8629 |
+
msgstr ""
|
8630 |
+
|
8631 |
+
#: admin/mscan/mscan.php:2315
|
8632 |
+
msgid "Max Time Limit to Scan: "
|
8633 |
+
msgstr ""
|
8634 |
+
|
8635 |
+
#: admin/mscan/mscan.php:2318
|
8636 |
+
msgid "Scan Database: "
|
8637 |
+
msgstr ""
|
8638 |
+
|
8639 |
+
#: admin/mscan/mscan.php:2321
|
8640 |
+
msgid "Scan Skipped Files Only: "
|
8641 |
+
msgstr ""
|
8642 |
+
|
8643 |
+
#: admin/mscan/mscan.php:2324
|
8644 |
+
msgid "Automatically Delete /tmp Files: "
|
8645 |
+
msgstr ""
|
8646 |
+
|
8647 |
+
#: admin/mscan/mscan.php:2332 admin/mscan/mscan.php:2335
|
8648 |
+
msgid "Exclude /tmp Files: "
|
8649 |
+
msgstr ""
|
8650 |
+
|
8651 |
+
#: admin/mscan/mscan.php:2353
|
8652 |
+
msgid "Scheduled Scan Frequency: "
|
8653 |
+
msgstr ""
|
8654 |
+
|
8655 |
+
#: admin/mscan/mscan.php:2356 admin/mscan/mscan.php:3341
|
8656 |
+
msgid "WP Core|Plugin|Theme File Hashes: "
|
8657 |
+
msgstr ""
|
8658 |
+
|
8659 |
+
#: admin/mscan/mscan.php:2366
|
8660 |
+
msgid "WP Core Hash File Version: "
|
8661 |
+
msgstr ""
|
8662 |
+
|
8663 |
+
#: admin/mscan/mscan.php:2366
|
8664 |
+
msgid "WP Installed Version: "
|
8665 |
+
msgstr ""
|
8666 |
+
|
8667 |
+
#: admin/mscan/mscan.php:2371 admin/mscan/mscan.php:2391
|
8668 |
+
#: admin/mscan/mscan.php:2492
|
8669 |
+
msgid "Error|Problem: "
|
8670 |
+
msgstr ""
|
8671 |
+
|
8672 |
+
#: admin/mscan/mscan.php:2371
|
8673 |
+
msgid "The WP Core Hash File Does Not Exist"
|
8674 |
+
msgstr ""
|
8675 |
+
|
8676 |
+
#: admin/mscan/mscan.php:2385 admin/mscan/mscan.php:3344
|
8677 |
+
msgid "Plugin File Hashes: "
|
8678 |
+
msgstr ""
|
8679 |
+
|
8680 |
+
#: admin/mscan/mscan.php:2391
|
8681 |
+
msgid "The Plugin Hash File Does Not Exist"
|
8682 |
+
msgstr ""
|
8683 |
+
|
8684 |
+
#: admin/mscan/mscan.php:2451
|
8685 |
+
msgid ""
|
8686 |
+
"File hashes do not exist for this plugin. This plugin's files were not "
|
8687 |
+
"scanned. If you would like to scan this plugin's files then use the \"Upload "
|
8688 |
+
"Plugin Zip Files\" Form to upload a zip file for this plugin. Click the "
|
8689 |
+
"MScan 2.0 Read Me help button on the MScan 2.0 tab page and read the "
|
8690 |
+
"\"Upload Plugin Zip Files\" help section for more help info."
|
8691 |
+
msgstr ""
|
8692 |
+
|
8693 |
+
#: admin/mscan/mscan.php:2453
|
8694 |
+
msgid ""
|
8695 |
+
"File hashes do not exist for this theme. This theme's files were not "
|
8696 |
+
"scanned. If you would like to scan this themes's files then use the \"Upload "
|
8697 |
+
"Theme Zip Files\" Form to upload a zip file for this theme. Click the MScan "
|
8698 |
+
"2.0 Read Me help button on the MScan 2.0 tab page and read the \"Upload "
|
8699 |
+
"Theme Zip Files\" help section for more help info."
|
8700 |
+
msgstr ""
|
8701 |
+
|
8702 |
+
#: admin/mscan/mscan.php:2461 admin/mscan/mscan.php:2471
|
8703 |
+
#: admin/mscan/mscan.php:2477
|
8704 |
+
msgid " Plugin Hash File Version: "
|
8705 |
+
msgstr ""
|
8706 |
+
|
8707 |
+
#: admin/mscan/mscan.php:2461 admin/mscan/mscan.php:2471
|
8708 |
+
#: admin/mscan/mscan.php:2477 admin/mscan/mscan.php:2514
|
8709 |
+
#: admin/mscan/mscan.php:2523 admin/mscan/mscan.php:2529
|
8710 |
+
msgid " Installed Version: "
|
8711 |
+
msgstr ""
|
8712 |
+
|
8713 |
+
#: admin/mscan/mscan.php:2477
|
8714 |
+
msgid "No File Hashes for This Plugin"
|
8715 |
+
msgstr ""
|
8716 |
+
|
8717 |
+
#: admin/mscan/mscan.php:2486 admin/mscan/mscan.php:3352
|
8718 |
+
msgid "Theme File Hashes: "
|
8719 |
+
msgstr ""
|
8720 |
+
|
8721 |
+
#: admin/mscan/mscan.php:2492
|
8722 |
+
msgid "The Theme Hash File Does Not Exist"
|
8723 |
+
msgstr ""
|
8724 |
+
|
8725 |
+
#: admin/mscan/mscan.php:2514 admin/mscan/mscan.php:2523
|
8726 |
+
#: admin/mscan/mscan.php:2529
|
8727 |
+
msgid " Theme Hash File Version: "
|
8728 |
+
msgstr ""
|
8729 |
+
|
8730 |
+
#: admin/mscan/mscan.php:2529
|
8731 |
+
msgid "No File Hashes for This Theme"
|
8732 |
+
msgstr ""
|
8733 |
+
|
8734 |
+
#: admin/mscan/mscan.php:2541 admin/mscan/mscan.php:3363
|
8735 |
+
msgid "Scan Results "
|
8736 |
+
msgstr ""
|
8737 |
+
|
8738 |
+
#: admin/mscan/mscan.php:2544 admin/mscan/mscan.php:3366
|
8739 |
+
msgid ""
|
8740 |
+
"You can View, Ignore and Delete files detected as suspicious using the View|"
|
8741 |
+
"Ignore|Delete Suspicious Files Form on the MScan 2.0 tab page. Before "
|
8742 |
+
"deleting any files make a backup of those files on your computer not on your "
|
8743 |
+
"hosting account."
|
8744 |
+
msgstr ""
|
8745 |
+
|
8746 |
+
#: admin/mscan/mscan.php:2561 admin/mscan/mscan.php:3375
|
8747 |
+
msgid "File Hash or Pattern Match"
|
8748 |
+
msgstr ""
|
8749 |
+
|
8750 |
+
#: admin/mscan/mscan.php:2562 admin/mscan/mscan.php:2642
|
8751 |
+
#: admin/mscan/mscan.php:3376 admin/mscan/mscan.php:3424
|
8752 |
+
msgid "Scan Time"
|
8753 |
+
msgstr ""
|
8754 |
+
|
8755 |
+
#: admin/mscan/mscan.php:2624 admin/mscan/mscan.php:3410
|
8756 |
+
msgid ""
|
8757 |
+
"You can View, Ignore and Unignore suspicious DB Entries using the View|"
|
8758 |
+
"Ignore Suspicious DB Entries Form on the MScan 2.0 tab page. Before deleting "
|
8759 |
+
"any database data make a backup of your database."
|
8760 |
+
msgstr ""
|
8761 |
+
|
8762 |
+
#: admin/mscan/mscan.php:2641 admin/mscan/mscan.php:3423
|
8763 |
+
msgid "Pattern Match"
|
8764 |
+
msgstr ""
|
8765 |
+
|
8766 |
+
#: admin/mscan/mscan.php:2752 admin/mscan/mscan.php:2862
|
8767 |
+
msgid ""
|
8768 |
+
"The MScan Report was saved successfully. Saved MScan Reports can be viewed "
|
8769 |
+
"on the MScan Saved Reports tab page."
|
8770 |
+
msgstr ""
|
8771 |
+
|
8772 |
+
#: admin/mscan/mscan.php:2785
|
8773 |
+
msgid "The MScan Report was not saved"
|
8774 |
+
msgstr ""
|
8775 |
+
|
8776 |
+
#: admin/mscan/mscan.php:2785
|
8777 |
+
msgid ""
|
8778 |
+
"The maximum number of Reports that can be saved is 20 Reports. In order to "
|
8779 |
+
"save the current Report you will need to delete an older saved Report."
|
8780 |
+
msgstr ""
|
8781 |
+
|
8782 |
+
#: admin/mscan/mscan.php:2885
|
8783 |
+
msgid "MScan Saved Reports ~ "
|
8784 |
+
msgstr ""
|
8785 |
+
|
8786 |
+
#: admin/mscan/mscan.php:2885
|
8787 |
+
msgid "Saved reports can be viewed or deleted."
|
8788 |
+
msgstr ""
|
8789 |
+
|
8790 |
+
#: admin/mscan/mscan.php:2901
|
8791 |
+
msgid ""
|
8792 |
+
"No Saved MScan Reports To Display: No MScan Reports have been saved yet."
|
8793 |
+
msgstr ""
|
8794 |
+
|
8795 |
+
#: admin/mscan/mscan.php:2990
|
8796 |
+
msgid "MScan Saved Reports Form"
|
8797 |
+
msgstr ""
|
8798 |
+
|
8799 |
+
#: admin/mscan/mscan.php:2999
|
8800 |
+
msgid "Report Date"
|
8801 |
+
msgstr ""
|
8802 |
+
|
8803 |
+
#: admin/mscan/mscan.php:3000
|
8804 |
+
msgid "View Report"
|
8805 |
+
msgstr ""
|
8806 |
+
|
8807 |
+
#: admin/mscan/mscan.php:3001
|
8808 |
+
msgid "Delete Report"
|
8809 |
+
msgstr ""
|
8810 |
+
|
8811 |
+
#: admin/mscan/mscan.php:3022 admin/mscan/mscan.php:3048
|
8812 |
+
msgid "View|Delete Reports"
|
8813 |
+
msgstr ""
|
8814 |
+
|
8815 |
+
#: admin/mscan/mscan.php:3022
|
8816 |
+
msgid "Click OK to proceed or click Cancel"
|
8817 |
+
msgstr ""
|
8818 |
+
|
8819 |
+
#: admin/mscan/mscan.php:3067
|
8820 |
+
msgid "You did not select an MScan Report to view or delete"
|
8821 |
+
msgstr ""
|
8822 |
+
|
8823 |
+
#: admin/mscan/mscan.php:3067
|
8824 |
+
msgid ""
|
8825 |
+
"Click the checkbox for the MScan Report that you would like to view or "
|
8826 |
+
"delete and then click the View|Delete Reports button."
|
8827 |
+
msgstr ""
|
8828 |
+
|
8829 |
+
#: admin/mscan/mscan.php:3228
|
8830 |
+
msgid "Report: "
|
8831 |
+
msgstr ""
|
8832 |
+
|
8833 |
+
#: admin/mscan/mscan.php:3228
|
8834 |
+
msgid ""
|
8835 |
+
" has been deleted. Refresh/reload the page to see current MScan Saved "
|
8836 |
+
"Reports Form data."
|
8837 |
+
msgstr ""
|
8838 |
+
|
8839 |
+
#: admin/mscan/mscan.php:3236
|
8840 |
+
msgid ""
|
8841 |
+
"The MScan Saved Report scan data is displayed below the MScan Saved Reports "
|
8842 |
+
"Form."
|
8843 |
+
msgstr ""
|
8844 |
+
|
8845 |
#: admin/security-log/security-log.php:40
|
8846 |
msgid "BulletProof Security ~ Security Log"
|
8847 |
msgstr ""
|
9278 |
msgstr ""
|
9279 |
|
9280 |
#: admin/security-log/security-log.php:383
|
9281 |
+
#: admin/security-log/security-log.php:516 admin/wizard/wizard.php:305
|
9282 |
+
#: admin/wizard/wizard.php:311 admin/wizard/wizard.php:317
|
9283 |
+
#: admin/wizard/wizard.php:323 admin/wizard/wizard.php:329
|
9284 |
msgid "Error: The "
|
9285 |
msgstr ""
|
9286 |
|
11239 |
msgid "Link Whisper Premium Plugin wp-admin BPSQSE AutoWhitelist successful"
|
11240 |
msgstr ""
|
11241 |
|
11242 |
+
#: admin/wizard/wizard-backup.php:249 admin/wizard/wizard-backup.php:290
|
11243 |
msgid ""
|
11244 |
"Custom additional htaccess code was found in your current root htaccess "
|
11245 |
"file. Your root and wp-admin htaccess files have been backed up and zipped "
|
11248 |
"files.zip file to your computer."
|
11249 |
msgstr ""
|
11250 |
|
11251 |
+
#: admin/wizard/wizard-backup.php:249 admin/wizard/wizard-backup.php:290
|
11252 |
msgid "Click this forum link: "
|
11253 |
msgstr ""
|
11254 |
|
11255 |
+
#: admin/wizard/wizard-backup.php:249 admin/wizard/wizard-backup.php:290
|
11256 |
msgid "Setup Wizard Root and wp-admin htaccess File Backup"
|
11257 |
msgstr ""
|
11258 |
|
11259 |
+
#: admin/wizard/wizard-backup.php:249 admin/wizard/wizard-backup.php:290
|
11260 |
msgid " for help information about what this means and what to do."
|
11261 |
msgstr ""
|
11262 |
|
11263 |
+
#: admin/wizard/wizard-backup.php:249 admin/wizard/wizard-backup.php:290
|
11264 |
msgid ""
|
11265 |
" and select the Zip File Download Fix On setting for the Zile File Download "
|
11266 |
"Fix option. You should now be able to download the htaccess-files.zip file. "
|
11268 |
"above for what to do next."
|
11269 |
msgstr ""
|
11270 |
|
11271 |
+
#: admin/wizard/wizard-backup.php:249 admin/wizard/wizard-backup.php:290
|
11272 |
msgid "Download htaccess-files.zip File"
|
11273 |
msgstr ""
|
11274 |
|
11275 |
+
#: admin/wizard/wizard-backup.php:249 admin/wizard/wizard-backup.php:290
|
11276 |
msgid "Additional Plain Text htaccess file backups: "
|
11277 |
msgstr ""
|
11278 |
|
11279 |
+
#: admin/wizard/wizard-backup.php:249 admin/wizard/wizard-backup.php:290
|
11280 |
msgid "Root htaccess File: "
|
11281 |
msgstr ""
|
11282 |
|
11283 |
+
#: admin/wizard/wizard-backup.php:249 admin/wizard/wizard-backup.php:290
|
11284 |
msgid "wp-admin htaccess File: "
|
11285 |
msgstr ""
|
11286 |
|
11306 |
msgstr ""
|
11307 |
|
11308 |
#: admin/wizard/wizard-functions.php:111 admin/wizard/wizard-functions.php:633
|
11309 |
+
#: admin/wizard/wizard-functions.php:729
|
11310 |
msgid ""
|
11311 |
"If your Server configuration is DSO you must first make some one-time manual "
|
11312 |
"changes to your website before running the Setup Wizard. Please click this "
|
11314 |
msgstr ""
|
11315 |
|
11316 |
#: admin/wizard/wizard-functions.php:111 admin/wizard/wizard-functions.php:633
|
11317 |
+
#: admin/wizard/wizard-functions.php:729 admin/wizard/wizard.php:221
|
11318 |
+
#: admin/wizard/wizard.php:305 admin/wizard/wizard.php:311
|
11319 |
+
#: admin/wizard/wizard.php:317 admin/wizard/wizard.php:323
|
11320 |
+
#: admin/wizard/wizard.php:329
|
11321 |
msgid "DSO Setup Steps"
|
11322 |
msgstr ""
|
11323 |
|
11358 |
msgstr ""
|
11359 |
|
11360 |
#: admin/wizard/wizard-functions.php:607 admin/wizard/wizard-functions.php:616
|
11361 |
+
#: admin/wizard/wizard-functions.php:825 admin/wizard/wizard.php:655
|
11362 |
+
#: admin/wizard/wizard.php:693 admin/wizard/wizard.php:751
|
11363 |
+
#: admin/wizard/wizard.php:791 admin/wizard/wizard.php:843
|
11364 |
+
#: admin/wizard/wizard.php:941 includes/general-functions.php:1090
|
11365 |
msgid " DB Option created or updated Successfully!"
|
11366 |
msgstr ""
|
11367 |
|
11397 |
"allow wp-admin htaccess files."
|
11398 |
msgstr ""
|
11399 |
|
11400 |
+
#: admin/wizard/wizard-functions.php:666
|
11401 |
msgid " wp-admin .htaccess File backup Successful!"
|
11402 |
msgstr ""
|
11403 |
|
11404 |
+
#: admin/wizard/wizard-functions.php:727
|
11405 |
msgid "The default.htaccess Master htaccess file was created successfully."
|
11406 |
msgstr ""
|
11407 |
|
11408 |
+
#: admin/wizard/wizard-functions.php:729
|
11409 |
msgid "Error: The default.htaccess Master htaccess file cannot be created."
|
11410 |
msgstr ""
|
11411 |
|
11412 |
+
#: admin/wizard/wizard-functions.php:826 admin/wizard/wizard.php:466
|
11413 |
msgid " Folder created Successfully!"
|
11414 |
msgstr ""
|
11415 |
|
11416 |
+
#: admin/wizard/wizard-functions.php:933
|
11417 |
msgid ""
|
11418 |
"Security Log User Agent Filter Check Successful! 0 User Agent Filters to "
|
11419 |
"update."
|
11420 |
msgstr ""
|
11421 |
|
11422 |
+
#: admin/wizard/wizard-functions.php:943
|
11423 |
msgid "Security Log User Agent Filter "
|
11424 |
msgstr ""
|
11425 |
|
11426 |
+
#: admin/wizard/wizard-functions.php:943
|
11427 |
msgid " created or updated Successfully!"
|
11428 |
msgstr ""
|
11429 |
|
11445 |
"file, but was NOT found in BPS Custom Code. "
|
11446 |
msgstr ""
|
11447 |
|
11448 |
+
#: admin/wizard/wizard.php:160 includes/hud-dismiss-functions.php:354
|
11449 |
msgid ""
|
11450 |
" for the steps to fix this Wordfence problem before running the Setup Wizard."
|
11451 |
msgstr ""
|
11456 |
"Code"
|
11457 |
msgstr ""
|
11458 |
|
11459 |
+
#: admin/wizard/wizard.php:194 admin/wizard/wizard.php:361
|
11460 |
msgid " DB Table created Successfully!"
|
11461 |
msgstr ""
|
11462 |
|
11463 |
+
#: admin/wizard/wizard.php:197 admin/wizard/wizard.php:364
|
11464 |
msgid "Error: Unable to create DB Table "
|
11465 |
msgstr ""
|
11466 |
|
11531 |
"maximum memory limit setting allowed by your Host."
|
11532 |
msgstr ""
|
11533 |
|
11534 |
+
#: admin/wizard/wizard.php:258 includes/functions.php:1206
|
11535 |
msgid ""
|
11536 |
"mod_authz_core is Loaded|Order, Allow, Deny directives are supported|BC: Yes|"
|
11537 |
"IfModule: Yes"
|
11538 |
msgstr ""
|
11539 |
|
11540 |
+
#: admin/wizard/wizard.php:273
|
11541 |
msgid ""
|
11542 |
"Enable|Disable htaccess Files Option set to Enabled: mod_access_compat "
|
11543 |
"htaccess files will be created."
|
11544 |
msgstr ""
|
11545 |
|
11546 |
+
#: admin/wizard/wizard.php:275
|
11547 |
msgid ""
|
11548 |
"mod_access_compat is Loaded|Order, Allow, Deny directives are supported|"
|
11549 |
"IfModule: No"
|
11550 |
msgstr ""
|
11551 |
|
11552 |
+
#: admin/wizard/wizard.php:279
|
11553 |
msgid ""
|
11554 |
"Enable|Disable htaccess Files Option set to Disabled: All BPS htaccess "
|
11555 |
"features will be disabled."
|
11556 |
msgstr ""
|
11557 |
|
11558 |
+
#: admin/wizard/wizard.php:303 admin/wizard/wizard.php:309
|
11559 |
+
#: admin/wizard/wizard.php:315 admin/wizard/wizard.php:321
|
11560 |
+
#: admin/wizard/wizard.php:327
|
11561 |
msgid "Pass! The "
|
11562 |
msgstr ""
|
11563 |
|
11564 |
+
#: admin/wizard/wizard.php:303 admin/wizard/wizard.php:309
|
11565 |
msgid " Folder is writable."
|
11566 |
msgstr ""
|
11567 |
|
11568 |
+
#: admin/wizard/wizard.php:305 admin/wizard/wizard.php:311
|
11569 |
msgid ""
|
11570 |
" Folder is NOT writable. If your Server type is DSO and the WP Filesystem "
|
11571 |
"API Method is NOT \"direct\" you can use the Setup Wizard, but you must "
|
11573 |
"Setup Wizard. Please click this Forum Link for instructions: "
|
11574 |
msgstr ""
|
11575 |
|
11576 |
+
#: admin/wizard/wizard.php:305 admin/wizard/wizard.php:311
|
11577 |
msgid ""
|
11578 |
" If your Server type is CGI check the folder permissions. Folder permissions "
|
11579 |
"should be either 755 or 705."
|
11580 |
msgstr ""
|
11581 |
|
11582 |
+
#: admin/wizard/wizard.php:315 admin/wizard/wizard.php:321
|
11583 |
+
#: admin/wizard/wizard.php:327
|
11584 |
msgid " File is writable."
|
11585 |
msgstr ""
|
11586 |
|
11587 |
+
#: admin/wizard/wizard.php:317 admin/wizard/wizard.php:323
|
11588 |
+
#: admin/wizard/wizard.php:329
|
11589 |
msgid ""
|
11590 |
" File is NOT writable. If your Server type is DSO and the WP Filesystem API "
|
11591 |
"Method is NOT \"direct\" you can use the Setup Wizard, but you must first "
|
11593 |
"Wizard. Please click this Forum Link for instructions: "
|
11594 |
msgstr ""
|
11595 |
|
11596 |
+
#: admin/wizard/wizard.php:317 admin/wizard/wizard.php:323
|
11597 |
+
#: admin/wizard/wizard.php:329
|
11598 |
msgid ""
|
11599 |
" If your Server type is CGI check the file permissions. File permissions "
|
11600 |
"should be either 644 or 604."
|
11601 |
msgstr ""
|
11602 |
|
11603 |
+
#: admin/wizard/wizard.php:403
|
11604 |
msgid "BPS Setup Verification & Error Checks"
|
11605 |
msgstr ""
|
11606 |
|
11607 |
+
#: admin/wizard/wizard.php:405
|
11608 |
msgid ""
|
11609 |
"If you see all Green font messages displayed below, the Setup Wizard setup "
|
11610 |
"completed successfully."
|
11611 |
msgstr ""
|
11612 |
|
11613 |
+
#: admin/wizard/wizard.php:405
|
11614 |
msgid ""
|
11615 |
"If you see any Red font or Blue font messages displayed below, click the "
|
11616 |
"Read Me help button above and read the \"Notes\" help section."
|
11617 |
msgstr ""
|
11618 |
|
11619 |
+
#: admin/wizard/wizard.php:405
|
11620 |
msgid ""
|
11621 |
"Click the Read Me help button above for a list of recommended BPS Video "
|
11622 |
"Tutorials to watch."
|
11623 |
msgstr ""
|
11624 |
|
11625 |
+
#: admin/wizard/wizard.php:412 admin/wizard/wizard.php:1200
|
11626 |
msgid "AutoFix (AutoWhitelist|AutoSetup|AutoCleanup)"
|
11627 |
msgstr ""
|
11628 |
|
11629 |
+
#: admin/wizard/wizard.php:434
|
11630 |
msgid "BulletProof Security Database Tables Setup"
|
11631 |
msgstr ""
|
11632 |
|
11633 |
+
#: admin/wizard/wizard.php:463
|
11634 |
msgid "BulletProof Security Core Folders Setup"
|
11635 |
msgstr ""
|
11636 |
|
11637 |
+
#: admin/wizard/wizard.php:467
|
11638 |
msgid "Error: Unable to create Folder "
|
11639 |
msgstr ""
|
11640 |
|
11641 |
+
#: admin/wizard/wizard.php:495
|
11642 |
msgid "BulletProof Security Core Files Setup"
|
11643 |
msgstr ""
|
11644 |
|
11645 |
+
#: admin/wizard/wizard.php:498
|
11646 |
msgid " File created or updated Successfully!"
|
11647 |
msgstr ""
|
11648 |
|
11649 |
+
#: admin/wizard/wizard.php:499
|
11650 |
msgid "Error: Unable to create or update File "
|
11651 |
msgstr ""
|
11652 |
|
11653 |
+
#: admin/wizard/wizard.php:650
|
11654 |
msgid "BulletProof Security MScan Malware Scanner Setup"
|
11655 |
msgstr ""
|
11656 |
|
11657 |
+
#: admin/wizard/wizard.php:671
|
11658 |
msgid "BulletProof Security DB Backup Setup"
|
11659 |
msgstr ""
|
11660 |
|
11661 |
+
#: admin/wizard/wizard.php:690
|
11662 |
msgid "BulletProof Security Hidden Plugin Folders|Files (HPF) Setup"
|
11663 |
msgstr ""
|
11664 |
|
11665 |
+
#: admin/wizard/wizard.php:723
|
11666 |
msgid ""
|
11667 |
"Hidden Plugin Folders|Files (HPF) DB Options created or updated Successfully!"
|
11668 |
msgstr ""
|
11669 |
|
11670 |
+
#: admin/wizard/wizard.php:726
|
11671 |
msgid "BulletProof Security Security Log User Agent Filter Setup"
|
11672 |
msgstr ""
|
11673 |
|
11674 |
+
#: admin/wizard/wizard.php:747
|
11675 |
msgid "BulletProof Security Email Alerting & Log File Options Setup"
|
11676 |
msgstr ""
|
11677 |
|
11678 |
+
#: admin/wizard/wizard.php:788
|
11679 |
msgid "BulletProof Security Login Security & Monitoring Options Setup"
|
11680 |
msgstr ""
|
11681 |
|
11682 |
+
#: admin/wizard/wizard.php:838
|
11683 |
msgid "BulletProof Security JTC-Lite Options Setup"
|
11684 |
msgstr ""
|
11685 |
|
11686 |
+
#: admin/wizard/wizard.php:938
|
11687 |
msgid "BulletProof Security Force Strong Passwords Options Setup"
|
11688 |
msgstr ""
|
11689 |
|
11690 |
+
#: admin/wizard/wizard.php:992
|
11691 |
msgid "The Setup Wizard has completed BPS Setup."
|
11692 |
msgstr ""
|
11693 |
|
11694 |
+
#: admin/wizard/wizard.php:992
|
11695 |
msgid ""
|
11696 |
"Check the \"BPS Setup Verification & Error Checks\" section below for any "
|
11697 |
"errors in Red Font."
|
11698 |
msgstr ""
|
11699 |
|
11700 |
+
#: admin/wizard/wizard.php:992
|
11701 |
msgid ""
|
11702 |
"Your existing root htaccess file has been backed up here: /wp-content/bps-"
|
11703 |
"backup/master-backups/root.htaccess-[Date-Timestamp]. If you run into a "
|
11705 |
"forum topic: "
|
11706 |
msgstr ""
|
11707 |
|
11708 |
+
#: admin/wizard/wizard.php:992
|
11709 |
msgid "Setup Wizard Root htaccess File Backup"
|
11710 |
msgstr ""
|
11711 |
|
11712 |
+
#: admin/wizard/wizard.php:1012
|
11713 |
msgid "Setup Wizard Completion Time: "
|
11714 |
msgstr ""
|
11715 |
|
11716 |
+
#: admin/wizard/wizard.php:1029
|
11717 |
msgid "BulletProof Security ~ Setup Wizard"
|
11718 |
msgstr ""
|
11719 |
|
11720 |
+
#: admin/wizard/wizard.php:1084 admin/wizard/wizard.php:1694
|
11721 |
+
#: admin/wizard/wizard.php:1696
|
11722 |
msgid "Setup Wizard Export|Import"
|
11723 |
msgstr ""
|
11724 |
|
11725 |
+
#: admin/wizard/wizard.php:1095
|
11726 |
msgid "htaccess Files Disabled Notice: "
|
11727 |
msgstr ""
|
11728 |
|
11729 |
+
#: admin/wizard/wizard.php:1095
|
11730 |
msgid ""
|
11731 |
"BPS has detected that htaccess files cannot be used on your website/server. "
|
11732 |
"Click this "
|
11733 |
msgstr ""
|
11734 |
|
11735 |
+
#: admin/wizard/wizard.php:1095
|
11736 |
msgid ""
|
11737 |
" link for more information before running the Wizards. If you intentionally "
|
11738 |
"disabled htaccess files then disregard this Notice."
|
11739 |
msgstr ""
|
11740 |
|
11741 |
+
#: admin/wizard/wizard.php:1107
|
11742 |
msgid "Setup Wizard ~ "
|
11743 |
msgstr ""
|
11744 |
|
11745 |
+
#: admin/wizard/wizard.php:1107
|
11746 |
msgid "One-Click Complete Setup"
|
11747 |
msgstr ""
|
11748 |
|
11749 |
+
#: admin/wizard/wizard.php:1124
|
11750 |
msgid "Recommended Video Tutorials: "
|
11751 |
msgstr ""
|
11752 |
|
11753 |
+
#: admin/wizard/wizard.php:1129
|
11754 |
msgid "Security Log Video Tutorial"
|
11755 |
msgstr ""
|
11756 |
|
11757 |
+
#: admin/wizard/wizard.php:1132
|
11758 |
msgid "Setup Wizard Steps: "
|
11759 |
msgstr ""
|
11760 |
|
11761 |
+
#: admin/wizard/wizard.php:1132
|
11762 |
msgid "1. Click the Setup Wizard button."
|
11763 |
msgstr ""
|
11764 |
|
11765 |
+
#: admin/wizard/wizard.php:1136
|
11766 |
msgid ""
|
11767 |
"Setup Wizard Pre-Installation Checks are automatically performed and "
|
11768 |
"displayed on the Setup Wizard page. Green font messages mean everything is "
|
11773 |
"to be fixed before running the Setup Wizard."
|
11774 |
msgstr ""
|
11775 |
|
11776 |
+
#: admin/wizard/wizard.php:1136
|
11777 |
msgid ""
|
11778 |
"You can re-run the Setup Wizard again at any time. Your existing settings "
|
11779 |
"will NOT be overwritten and will be re-saved. Any new or additional settings "
|
11780 |
"that the Setup Wizard finds on your website will be saved/setup."
|
11781 |
msgstr ""
|
11782 |
|
11783 |
+
#: admin/wizard/wizard.php:1136
|
11784 |
msgid ""
|
11785 |
"When the Setup Wizard has completed you will see \"The Setup Wizard has "
|
11786 |
"completed BPS Setup.\""
|
11787 |
msgstr ""
|
11788 |
|
11789 |
+
#: admin/wizard/wizard.php:1136
|
11790 |
msgid ""
|
11791 |
"Your existing Root and wp-admin htaccess files are backed up before new Root "
|
11792 |
"and wp-admin htaccess files are created by the Setup Wizard. The BPS backup "
|
11793 |
"folder is here: "
|
11794 |
msgstr ""
|
11795 |
|
11796 |
+
#: admin/wizard/wizard.php:1139
|
11797 |
msgid ""
|
11798 |
" and the backed up htaccess file names are: root.htaccess and wpadmin."
|
11799 |
"htaccess."
|
11800 |
msgstr ""
|
11801 |
|
11802 |
+
#: admin/wizard/wizard.php:1149
|
11803 |
msgid "Setup Wizard & Overview Video Tutorial"
|
11804 |
msgstr ""
|
11805 |
|
11806 |
+
#: admin/wizard/wizard.php:1176
|
11807 |
msgid "Setup Wizard Options ~ "
|
11808 |
msgstr ""
|
11809 |
|
11810 |
+
#: admin/wizard/wizard.php:1176
|
11811 |
msgid ""
|
11812 |
"Click the Setup Wizard Options Read Me help button for help info about each "
|
11813 |
"option setting"
|
11814 |
msgstr ""
|
11815 |
|
11816 |
+
#: admin/wizard/wizard.php:1190
|
11817 |
msgid "Forum Help Links:"
|
11818 |
msgstr ""
|
11819 |
|
11820 |
+
#: admin/wizard/wizard.php:1194
|
11821 |
msgid "Go Daddy Managed WordPress Hosting (GDMW)"
|
11822 |
msgstr ""
|
11823 |
|
11824 |
+
#: admin/wizard/wizard.php:1195 admin/wizard/wizard.php:1200
|
11825 |
msgid "Enable|Disable htaccess Files"
|
11826 |
msgstr ""
|
11827 |
|
11828 |
+
#: admin/wizard/wizard.php:1196
|
11829 |
msgid "AutoFix Forum Topic"
|
11830 |
msgstr ""
|
11831 |
|
11832 |
+
#: admin/wizard/wizard.php:1197
|
11833 |
msgid "GDPR Compliance Forum Topic"
|
11834 |
msgstr ""
|
11835 |
|
11836 |
+
#: admin/wizard/wizard.php:1200
|
11837 |
msgid ""
|
11838 |
"Setup Wizard AutoFix is turned On by default. When AutoFix is turned On the "
|
11839 |
"Setup Wizard will automatically create htaccess whitelist rules in BPS "
|
11854 |
"AutoFix Debug information so that we can figure out what the problem is."
|
11855 |
msgstr ""
|
11856 |
|
11857 |
+
#: admin/wizard/wizard.php:1200
|
11858 |
msgid "GDPR Compliance (IP Address Logging On|Off)"
|
11859 |
msgstr ""
|
11860 |
|
11861 |
+
#: admin/wizard/wizard.php:1200
|
11862 |
msgid ""
|
11863 |
"The GDPR Compliance option setting is set to Off by default. Choosing the "
|
11864 |
"GDPR Compliance On option setting will disable IP address logging in all BPS "
|
11872 |
"at the top of this Read Me help window."
|
11873 |
msgstr ""
|
11874 |
|
11875 |
+
#: admin/wizard/wizard.php:1200 admin/wizard/wizard.php:1242
|
11876 |
msgid "Go Daddy Managed WordPress Hosting (GDMW):"
|
11877 |
msgstr ""
|
11878 |
|
11879 |
+
#: admin/wizard/wizard.php:1200
|
11880 |
msgid ""
|
11881 |
"This option is ONLY for a special type of Go Daddy Hosting account called "
|
11882 |
"\"Managed WordPress Hosting\" and is NOT for regular/standard Go Daddy "
|
11885 |
"section above for more information."
|
11886 |
msgstr ""
|
11887 |
|
11888 |
+
#: admin/wizard/wizard.php:1200 admin/wizard/wizard.php:1256
|
11889 |
msgid "Enable|Disable htaccess Files:"
|
11890 |
msgstr ""
|
11891 |
|
11892 |
+
#: admin/wizard/wizard.php:1200
|
11893 |
msgid "Before changing this option setting, click the "
|
11894 |
msgstr ""
|
11895 |
|
11896 |
+
#: admin/wizard/wizard.php:1200
|
11897 |
msgid ""
|
11898 |
" Forum Help Link at the top of this Read Me help window to find out exactly "
|
11899 |
"what this option setting does and when it should or should not be used. "
|
11901 |
"htaccess Files Enabled: Will enable all BPS htaccess freatures and files."
|
11902 |
msgstr ""
|
11903 |
|
11904 |
+
#: admin/wizard/wizard.php:1200
|
11905 |
msgid "Enable|Disable wp-admin BulletProof Mode"
|
11906 |
msgstr ""
|
11907 |
|
11908 |
+
#: admin/wizard/wizard.php:1200
|
11909 |
msgid ""
|
11910 |
"The default setting is already set to: wp-admin BulletProof Mode Enabled. If "
|
11911 |
"you would like to disable wp-admin BulletProof Mode select wp-admin "
|
11912 |
"BulletProof Mode Disabled."
|
11913 |
msgstr ""
|
11914 |
|
11915 |
+
#: admin/wizard/wizard.php:1200 admin/wizard/wizard.php:1285
|
11916 |
msgid "Zip File Download Fix (Incapsula, Proxy, Other Cause):"
|
11917 |
msgstr ""
|
11918 |
|
11919 |
+
#: admin/wizard/wizard.php:1200
|
11920 |
msgid ""
|
11921 |
"This option should only be set to On if you are seeing a 403 error and/or "
|
11922 |
"unable to download these Zip files: Custom Code Export Zip file, Login "
|
11932 |
"Firewall again."
|
11933 |
msgstr ""
|
11934 |
|
11935 |
+
#: admin/wizard/wizard.php:1200 admin/wizard/wizard.php:1299
|
11936 |
msgid "Multisite Hide|Display System Info Page for Subsites:"
|
11937 |
msgstr ""
|
11938 |
|
11939 |
+
#: admin/wizard/wizard.php:1200
|
11940 |
msgid ""
|
11941 |
"This option is for Network|Multisite sites only. Choosing Hide System Info "
|
11942 |
"Page will hide the System Info menu link under the BPS navigational menus. "
|
11944 |
"under the BPS navigational mensus."
|
11945 |
msgstr ""
|
11946 |
|
11947 |
+
#: admin/wizard/wizard.php:1200 admin/wizard/wizard.php:1310
|
11948 |
msgid "Network|Multisite Sitewide Login Security Settings"
|
11949 |
msgstr ""
|
11950 |
|
11951 |
+
#: admin/wizard/wizard.php:1200
|
11952 |
msgid ""
|
11953 |
"This option is for Network|Multisite sites only. This is an independent "
|
11954 |
"option Form that creates and saves Login Security DB option settings for all "
|
11965 |
"Reset, Sort DB Rows: Ascending - Show Oldest Login First."
|
11966 |
msgstr ""
|
11967 |
|
11968 |
+
#: admin/wizard/wizard.php:1200
|
11969 |
msgid "Network|Multisite Sitewide JTC-Lite Settings"
|
11970 |
msgstr ""
|
11971 |
|
11972 |
+
#: admin/wizard/wizard.php:1200
|
11973 |
msgid ""
|
11974 |
"This option is for Network|Multisite sites only. This is an independent "
|
11975 |
"option Form that creates and saves JTC-Lite DB option settings for all "
|
11984 |
"box on the Login Form."
|
11985 |
msgstr ""
|
11986 |
|
11987 |
+
#: admin/wizard/wizard.php:1200 admin/wizard/wizard.php:1328
|
11988 |
msgid "Network|Multisite Sitewide Force Strong Passwords Settings"
|
11989 |
msgstr ""
|
11990 |
|
11991 |
+
#: admin/wizard/wizard.php:1200
|
11992 |
msgid ""
|
11993 |
"This option is for Network|Multisite sites ONLY. This is an independent "
|
11994 |
"option Form that creates and saves FSP DB option settings for all Network "
|
12001 |
"all checked and Displayed Message/Error Message: default FSP message."
|
12002 |
msgstr ""
|
12003 |
|
12004 |
+
#: admin/wizard/wizard.php:1214
|
12005 |
msgid "AutoFix (AutoWhitelist|AutoSetup|AutoCleanup):"
|
12006 |
msgstr ""
|
12007 |
|
12008 |
+
#: admin/wizard/wizard.php:1216
|
12009 |
msgid "AutoFix On"
|
12010 |
msgstr ""
|
12011 |
|
12012 |
+
#: admin/wizard/wizard.php:1217
|
12013 |
msgid "AutoFix Off"
|
12014 |
msgstr ""
|
12015 |
|
12016 |
+
#: admin/wizard/wizard.php:1228
|
12017 |
msgid "GDPR Compliance (IP Address Logging On|Off):"
|
12018 |
msgstr ""
|
12019 |
|
12020 |
+
#: admin/wizard/wizard.php:1230
|
12021 |
msgid "GDPR Compliance Off"
|
12022 |
msgstr ""
|
12023 |
|
12024 |
+
#: admin/wizard/wizard.php:1231
|
12025 |
msgid "GDPR Compliance On"
|
12026 |
msgstr ""
|
12027 |
|
12028 |
+
#: admin/wizard/wizard.php:1244
|
12029 |
msgid "No (default setting)"
|
12030 |
msgstr ""
|
12031 |
|
12032 |
+
#: admin/wizard/wizard.php:1245
|
12033 |
msgid "Yes (ONLY if you have Managed WordPress Hosting)"
|
12034 |
msgstr ""
|
12035 |
|
12036 |
+
#: admin/wizard/wizard.php:1257
|
12037 |
msgid ""
|
12038 |
"CAUTION: Click the Read Me help button before changing this option setting"
|
12039 |
msgstr ""
|
12040 |
|
12041 |
+
#: admin/wizard/wizard.php:1259
|
12042 |
msgid "htaccess Files Enabled"
|
12043 |
msgstr ""
|
12044 |
|
12045 |
+
#: admin/wizard/wizard.php:1260
|
12046 |
msgid "htaccess Files Disabled"
|
12047 |
msgstr ""
|
12048 |
|
12049 |
+
#: admin/wizard/wizard.php:1271
|
12050 |
msgid "Enable|Disable wp-admin BulletProof Mode:"
|
12051 |
msgstr ""
|
12052 |
|
12053 |
+
#: admin/wizard/wizard.php:1273
|
12054 |
msgid "wp-admin BulletProof Mode Enabled"
|
12055 |
msgstr ""
|
12056 |
|
12057 |
+
#: admin/wizard/wizard.php:1274
|
12058 |
msgid "wp-admin BulletProof Mode Disabled"
|
12059 |
msgstr ""
|
12060 |
|
12061 |
+
#: admin/wizard/wizard.php:1287
|
12062 |
msgid "Zip File Download Fix Off"
|
12063 |
msgstr ""
|
12064 |
|
12065 |
+
#: admin/wizard/wizard.php:1288
|
12066 |
msgid "Zip File Download Fix On"
|
12067 |
msgstr ""
|
12068 |
|
12069 |
+
#: admin/wizard/wizard.php:1301
|
12070 |
msgid "Display System Info Page"
|
12071 |
msgstr ""
|
12072 |
|
12073 |
+
#: admin/wizard/wizard.php:1302
|
12074 |
msgid "Hide System Info Page"
|
12075 |
msgstr ""
|
12076 |
|
12077 |
+
#: admin/wizard/wizard.php:1319
|
12078 |
msgid "Network|Multisite Sitewide JTC Anti-Spam|Anti-Hacker Settings"
|
12079 |
msgstr ""
|
12080 |
|
12081 |
+
#: admin/wizard/wizard.php:1360
|
12082 |
msgid ""
|
12083 |
"The Zip File Download Fix option is set to On. This option should only be "
|
12084 |
"set to On if you are unable to download these Zip files: Custom Code Export "
|
12086 |
"htaccess file backup Zip file."
|
12087 |
msgstr ""
|
12088 |
|
12089 |
+
#: admin/wizard/wizard.php:1373
|
12090 |
msgid "The Zip File Download Fix option is set to Off."
|
12091 |
msgstr ""
|
12092 |
|
12093 |
+
#: admin/wizard/wizard.php:1397
|
12094 |
msgid "Multisite Hide|Display System Info Page for Subsites option saved."
|
12095 |
msgstr ""
|
12096 |
|
12097 |
+
#: admin/wizard/wizard.php:1412
|
12098 |
msgid ""
|
12099 |
"Error: Your Network site exceeds the default WP criteria for a large network "
|
12100 |
"site. Either you have more than 10,000 users or more than 10,000 sites. "
|
12102 |
"org for assistance."
|
12103 |
msgstr ""
|
12104 |
|
12105 |
+
#: admin/wizard/wizard.php:1419
|
12106 |
msgid " LSM DB Options created or updated Successfully!"
|
12107 |
msgstr ""
|
12108 |
|
12109 |
+
#: admin/wizard/wizard.php:1492 admin/wizard/wizard.php:1615
|
12110 |
msgid ""
|
12111 |
"Error: Your Network site exceeds the default WP criteria for a large network "
|
12112 |
"site. Either you have more than 10,000 users or more than 10,000 sites. "
|
12114 |
"line: Setup Wizard Options Large Network Site Help."
|
12115 |
msgstr ""
|
12116 |
|
12117 |
+
#: admin/wizard/wizard.php:1499
|
12118 |
msgid " JTC DB Options created or updated Successfully!"
|
12119 |
msgstr ""
|
12120 |
|
12121 |
+
#: admin/wizard/wizard.php:1622
|
12122 |
msgid " FSP DB Options created or updated Successfully!"
|
12123 |
msgstr ""
|
12124 |
|
12125 |
+
#: admin/wizard/wizard.php:1689
|
12126 |
msgid "Setup Wizard Export|Import ~ "
|
12127 |
msgstr ""
|
12128 |
|
12129 |
+
#: admin/wizard/wizard.php:1689
|
12130 |
msgid "Export or Import BPS plugin option settings."
|
12131 |
msgstr ""
|
12132 |
|
12133 |
+
#: admin/wizard/wizard.php:1706
|
12134 |
msgid "GDMW Hosting"
|
12135 |
msgstr ""
|
12136 |
|
12137 |
+
#: admin/wizard/wizard.php:1708
|
12138 |
msgid "Setup Wizard Export"
|
12139 |
msgstr ""
|
12140 |
|
12141 |
+
#: admin/wizard/wizard.php:1708
|
12142 |
msgid ""
|
12143 |
"The Setup Wizard Export feature exports all BPS plugin option settings "
|
12144 |
"except for website specific settings that need to be setup by running the "
|
12146 |
"new website. The name of the exported zip file is: bps-settings-export.zip"
|
12147 |
msgstr ""
|
12148 |
|
12149 |
+
#: admin/wizard/wizard.php:1708
|
12150 |
msgid "Setup Wizard Import"
|
12151 |
msgstr ""
|
12152 |
|
12153 |
+
#: admin/wizard/wizard.php:1708
|
12154 |
msgid ""
|
12155 |
"To import BPS plugin option settings click the Choose File button, navigate "
|
12156 |
"to where you downloaded/saved the bps-settings-export.zip file on your "
|
12164 |
"code or remove it from BPS Custom Code."
|
12165 |
msgstr ""
|
12166 |
|
12167 |
+
#: admin/wizard/wizard.php:1708
|
12168 |
msgid "Network|Multisite Help Info"
|
12169 |
msgstr ""
|
12170 |
|
12171 |
+
#: admin/wizard/wizard.php:1708
|
12172 |
msgid ""
|
12173 |
"Setup Wizard Export|Import works for Network|Multisite site types, but only "
|
12174 |
"the Primary site's BPS plugin option settings are exported and imported. BPS "
|
12180 |
"option settings from the Primary site to all Subsites."
|
12181 |
msgstr ""
|
12182 |
|
12183 |
+
#: admin/wizard/wizard.php:1715
|
12184 |
msgid ""
|
12185 |
"Clicking OK will Import BPS plugin settings from the bps-settings-export.zip "
|
12186 |
"file on your computer."
|
12187 |
msgstr ""
|
12188 |
|
12189 |
+
#: admin/wizard/wizard.php:1715
|
12190 |
msgid "Click OK to Import BPS plugin settings or click Cancel."
|
12191 |
msgstr ""
|
12192 |
|
12193 |
+
#: admin/wizard/wizard.php:1724
|
12194 |
msgid ""
|
12195 |
"Clicking OK will Export your BPS plugin settings into the bps-settings-"
|
12196 |
"export.zip file, which you can then download to your computer by clicking "
|
12198 |
"message."
|
12199 |
msgstr ""
|
12200 |
|
12201 |
+
#: admin/wizard/wizard.php:1724
|
12202 |
msgid "Click OK to Export BPS plugin settings or click Cancel."
|
12203 |
msgstr ""
|
12204 |
|
12205 |
+
#: admin/wizard/wizard.php:1859
|
12206 |
msgid ""
|
12207 |
"BPS plugin option settings exported successfully. Click the Download Zip "
|
12208 |
"Export button to download the Setup Wizard Export zip file: bps-settings-"
|
12209 |
"export.zip."
|
12210 |
msgstr ""
|
12211 |
|
12212 |
+
#: admin/wizard/wizard.php:1859
|
12213 |
msgid ""
|
12214 |
" and select the Zip File Download Fix On setting for the Zile File Download "
|
12215 |
"Fix option. You should now be able to download the bps-settings-export.zip "
|
12216 |
"file."
|
12217 |
msgstr ""
|
12218 |
|
12219 |
+
#: admin/wizard/wizard.php:2035 admin/wizard/wizard.php:2067
|
12220 |
msgid "BPS plugin settings imported successfully."
|
12221 |
msgstr ""
|
12222 |
|
12223 |
+
#: admin/wizard/wizard.php:2035 admin/wizard/wizard.php:2067
|
12224 |
msgid "IMPORTANT: Run the BPS Setup Wizard now."
|
12225 |
msgstr ""
|
12226 |
|
12227 |
+
#: admin/wizard/wizard.php:2035 admin/wizard/wizard.php:2067
|
12228 |
msgid ""
|
12229 |
"After running the Setup Wizard go to the BPS Security > htaccess Core > "
|
12230 |
"Custom Code tab page and check all of your custom htaccess code for any "
|
12234 |
"code or remove it from BPS Custom Code."
|
12235 |
msgstr ""
|
12236 |
|
12237 |
+
#: admin/wizard/wizard.php:2081
|
12238 |
msgid ""
|
12239 |
"Either the bps-settings-export.zip file has not been selected yet for Import "
|
12240 |
"or the file "
|
12241 |
msgstr ""
|
12242 |
|
12243 |
+
#: admin/wizard/wizard.php:2081
|
12244 |
msgid ""
|
12245 |
" is not a valid Setup Wizard Export file or file name. The BPS Setup Wizard "
|
12246 |
"Import feature only allows the bps-settings-export.zip file to be Uploaded/"
|
12247 |
"Imported. The filename MUST be named: bps-settings-export.zip."
|
12248 |
msgstr ""
|
12249 |
|
12250 |
+
#: bulletproof-security.php:158
|
12251 |
msgid "Uninstall Options"
|
12252 |
msgstr ""
|
12253 |
|
12254 |
+
#: bulletproof-security.php:180
|
12255 |
msgid "Forum - Support"
|
12256 |
msgstr ""
|
12257 |
|
12258 |
+
#: bulletproof-security.php:181
|
12259 |
msgid "Upgrade"
|
12260 |
msgstr ""
|
12261 |
|
12297 |
|
12298 |
#: includes/functions.php:349 includes/functions.php:587
|
12299 |
#: includes/functions.php:654 includes/hud-autofix-setup.php:70
|
12300 |
+
#: includes/hud-dismiss-functions.php:554
|
12301 |
msgid "Go to the "
|
12302 |
msgstr ""
|
12303 |
|
12343 |
msgstr ""
|
12344 |
|
12345 |
#: includes/functions.php:387 includes/hud-autofix-setup.php:70
|
12346 |
+
#: includes/hud-dismiss-functions.php:74 includes/hud-dismiss-functions.php:108
|
12347 |
+
#: includes/hud-dismiss-functions.php:141
|
12348 |
+
#: includes/hud-dismiss-functions.php:354
|
12349 |
+
#: includes/hud-dismiss-functions.php:359
|
12350 |
+
#: includes/hud-dismiss-functions.php:398
|
12351 |
+
#: includes/hud-dismiss-functions.php:403
|
12352 |
+
#: includes/hud-dismiss-functions.php:461
|
12353 |
+
#: includes/hud-dismiss-functions.php:503
|
12354 |
msgid ""
|
12355 |
"To Dismiss this Notice click the Dismiss Notice button below. To Reset "
|
12356 |
"Dismiss Notices click the Reset|Recheck Dismiss Notices button on the Custom "
|
12358 |
msgstr ""
|
12359 |
|
12360 |
#: includes/functions.php:387 includes/hud-autofix-setup.php:70
|
12361 |
+
#: includes/hud-dismiss-functions.php:74 includes/hud-dismiss-functions.php:108
|
12362 |
+
#: includes/hud-dismiss-functions.php:141
|
12363 |
+
#: includes/hud-dismiss-functions.php:206
|
12364 |
+
#: includes/hud-dismiss-functions.php:221
|
12365 |
+
#: includes/hud-dismiss-functions.php:227
|
12366 |
+
#: includes/hud-dismiss-functions.php:233
|
12367 |
+
#: includes/hud-dismiss-functions.php:239
|
12368 |
+
#: includes/hud-dismiss-functions.php:253
|
12369 |
+
#: includes/hud-dismiss-functions.php:259
|
12370 |
+
#: includes/hud-dismiss-functions.php:264
|
12371 |
+
#: includes/hud-dismiss-functions.php:354
|
12372 |
+
#: includes/hud-dismiss-functions.php:359
|
12373 |
+
#: includes/hud-dismiss-functions.php:398
|
12374 |
+
#: includes/hud-dismiss-functions.php:403
|
12375 |
+
#: includes/hud-dismiss-functions.php:461
|
12376 |
+
#: includes/hud-dismiss-functions.php:503
|
12377 |
+
#: includes/hud-dismiss-functions.php:593
|
12378 |
+
#: includes/hud-dismiss-functions.php:638
|
12379 |
+
#: includes/hud-dismiss-functions.php:681
|
12380 |
+
#: includes/hud-dismiss-functions.php:719
|
12381 |
+
#: includes/hud-dismiss-functions.php:757
|
12382 |
+
#: includes/hud-dismiss-functions.php:809
|
12383 |
+
#: includes/hud-dismiss-functions.php:857
|
12384 |
msgid "Dismiss Notice"
|
12385 |
msgstr ""
|
12386 |
|
12485 |
"ERROR: wp_remote_get() function is blocked or unable to get the URL path"
|
12486 |
msgstr ""
|
12487 |
|
12488 |
+
#: includes/functions.php:1190
|
|
|
|
|
|
|
|
|
12489 |
msgid ""
|
12490 |
"mod_access_compat is Loaded|Order, Allow, Deny directives are supported|"
|
12491 |
"IfModule: Yes"
|
12492 |
msgstr ""
|
12493 |
|
12494 |
+
#: includes/functions.php:1198
|
12495 |
msgid "mod_access_compat is not Loaded|IfModule: Yes"
|
12496 |
msgstr ""
|
12497 |
|
12498 |
+
#: includes/functions.php:1211
|
12499 |
msgid ""
|
12500 |
"mod_authz_core is Loaded|Order, Allow, Deny directives are not supported|BC: "
|
12501 |
"No|IfModule: Yes"
|
12502 |
msgstr ""
|
12503 |
|
12504 |
+
#: includes/functions.php:1216
|
12505 |
msgid "mod_authz_core is not Loaded|IfModule: Yes"
|
12506 |
msgstr ""
|
12507 |
|
12508 |
+
#: includes/functions.php:1225
|
12509 |
msgid ""
|
12510 |
"mod_authz_host is Loaded|Order, Allow, Deny directives are supported|BC: Yes|"
|
12511 |
"IfModule: Yes"
|
12512 |
msgstr ""
|
12513 |
|
12514 |
+
#: includes/functions.php:1230
|
12515 |
msgid ""
|
12516 |
"mod_authz_host is Loaded|Order, Allow, Deny directives are not supported|BC: "
|
12517 |
"No|IfModule: Yes"
|
12518 |
msgstr ""
|
12519 |
|
12520 |
+
#: includes/functions.php:1235
|
12521 |
msgid "mod_authz_host is not Loaded|IfModule: Yes"
|
12522 |
msgstr ""
|
12523 |
|
12524 |
+
#: includes/functions.php:1242
|
12525 |
msgid "mod_rewrite Module is Loaded|IfModule: Yes"
|
12526 |
msgstr ""
|
12527 |
|
12528 |
+
#: includes/functions.php:1247
|
12529 |
msgid "mod_rewrite Inconclusive: Status is not 200, 301, 302, 403 or 404"
|
12530 |
msgstr ""
|
12531 |
|
12532 |
+
#: includes/functions.php:1288
|
12533 |
msgid "mod_security Module is Loaded|Enabled|IfModule: Yes"
|
12534 |
msgstr ""
|
12535 |
|
12536 |
+
#: includes/functions.php:1291
|
12537 |
msgid "mod_security2 Module is Loaded|Enabled|IfModule: Yes"
|
12538 |
msgstr ""
|
12539 |
|
12540 |
+
#: includes/functions.php:1303
|
12541 |
msgid "mod_security Module is not Loaded|Enabled|IfModule: Yes"
|
12542 |
msgstr ""
|
12543 |
|
12812 |
"file."
|
12813 |
msgstr ""
|
12814 |
|
12815 |
+
#: includes/general-functions.php:1091
|
12816 |
msgid " Hosting Account Root Folder Option setup or updated Successfully!"
|
12817 |
msgstr ""
|
12818 |
|
13735 |
msgstr ""
|
13736 |
|
13737 |
#: includes/hud-autofix-whitelist.php:821
|
13738 |
+
#: includes/hud-dismiss-functions.php:757
|
13739 |
msgid "Click this "
|
13740 |
msgstr ""
|
13741 |
|
13781 |
msgid "No Plugin or Theme AutoFix Custom Code Whitelist Rules were found"
|
13782 |
msgstr ""
|
13783 |
|
13784 |
+
#: includes/hud-dismiss-functions.php:52
|
13785 |
msgid ""
|
13786 |
"WARNING! BPS requires at least PHP5 to function correctly. Your PHP version "
|
13787 |
"is: "
|
13788 |
msgstr ""
|
13789 |
|
13790 |
+
#: includes/hud-dismiss-functions.php:52
|
13791 |
msgid "BPS Guide - PHP5 Solution"
|
13792 |
msgstr ""
|
13793 |
|
13794 |
+
#: includes/hud-dismiss-functions.php:52
|
13795 |
msgid ""
|
13796 |
"The BPS Guide will open in a new browser window. You will not be directed "
|
13797 |
"away from your WordPress Dashboard."
|
13798 |
msgstr ""
|
13799 |
|
13800 |
+
#: includes/hud-dismiss-functions.php:74
|
13801 |
msgid ""
|
13802 |
"WARNING! BPS has detected that Safe Mode is set to On in your php.ini file."
|
13803 |
msgstr ""
|
13804 |
|
13805 |
+
#: includes/hud-dismiss-functions.php:74
|
13806 |
msgid ""
|
13807 |
"If you see errors that BPS was unable to automatically create the backup "
|
13808 |
"folders this is probably the reason why."
|
13809 |
msgstr ""
|
13810 |
|
13811 |
+
#: includes/hud-dismiss-functions.php:108
|
13812 |
msgid "HUD Check: Custom Permalinks are NOT being used."
|
13813 |
msgstr ""
|
13814 |
|
13815 |
+
#: includes/hud-dismiss-functions.php:108
|
13816 |
msgid "It is recommended that you use Custom Permalinks: "
|
13817 |
msgstr ""
|
13818 |
|
13819 |
+
#: includes/hud-dismiss-functions.php:108
|
13820 |
msgid "How to setup Custom Permalinks"
|
13821 |
msgstr ""
|
13822 |
|
13823 |
+
#: includes/hud-dismiss-functions.php:141
|
13824 |
msgid ""
|
13825 |
"WARNING! BPS has detected that your Server is a Windows IIS Server that does "
|
13826 |
"not support htaccess rewriting."
|
13827 |
msgstr ""
|
13828 |
|
13829 |
+
#: includes/hud-dismiss-functions.php:141
|
13830 |
msgid "Do NOT activate BulletProof Modes unless you know what you are doing."
|
13831 |
msgstr ""
|
13832 |
|
13833 |
+
#: includes/hud-dismiss-functions.php:141
|
13834 |
msgid "Your Server Type is: "
|
13835 |
msgstr ""
|
13836 |
|
13837 |
+
#: includes/hud-dismiss-functions.php:141
|
13838 |
msgid "WordPress Codex - Using Permalinks - see IIS section"
|
13839 |
msgstr ""
|
13840 |
|
13841 |
+
#: includes/hud-dismiss-functions.php:164
|
13842 |
+
#: includes/hud-dismiss-functions.php:169
|
13843 |
msgid "WARNING! BPS was unable to automatically create the /"
|
13844 |
msgstr ""
|
13845 |
|
13846 |
+
#: includes/hud-dismiss-functions.php:164
|
13847 |
msgid "/bps-backup folder."
|
13848 |
msgstr ""
|
13849 |
|
13850 |
+
#: includes/hud-dismiss-functions.php:164
|
13851 |
+
#: includes/hud-dismiss-functions.php:169
|
13852 |
msgid "You will need to create the /"
|
13853 |
msgstr ""
|
13854 |
|
13855 |
+
#: includes/hud-dismiss-functions.php:164
|
13856 |
msgid ""
|
13857 |
"/bps-backup folder manually via FTP. The folder permissions for the bps-"
|
13858 |
"backup folder need to be set to 755 in order to successfully perform "
|
13859 |
"permanent online backups."
|
13860 |
msgstr ""
|
13861 |
|
13862 |
+
#: includes/hud-dismiss-functions.php:164
|
13863 |
+
#: includes/hud-dismiss-functions.php:169
|
13864 |
msgid "To remove this message permanently click "
|
13865 |
msgstr ""
|
13866 |
|
13867 |
+
#: includes/hud-dismiss-functions.php:164
|
13868 |
+
#: includes/hud-dismiss-functions.php:169
|
13869 |
msgid "here."
|
13870 |
msgstr ""
|
13871 |
|
13872 |
+
#: includes/hud-dismiss-functions.php:169
|
13873 |
msgid "/bps-backup/master-backups folder."
|
13874 |
msgstr ""
|
13875 |
|
13876 |
+
#: includes/hud-dismiss-functions.php:169
|
13877 |
msgid ""
|
13878 |
"/bps-backup/master-backups folder manually via FTP. The folder permissions "
|
13879 |
"for the master-backups folder need to be set to 755 in order to successfully "
|
13880 |
"perform permanent online backups."
|
13881 |
msgstr ""
|
13882 |
|
13883 |
+
#: includes/hud-dismiss-functions.php:203
|
13884 |
+
#: includes/hud-dismiss-functions.php:215
|
13885 |
msgid "Bonus Custom Code:"
|
13886 |
msgstr ""
|
13887 |
|
13888 |
+
#: includes/hud-dismiss-functions.php:203
|
13889 |
+
#: includes/hud-dismiss-functions.php:215
|
13890 |
msgid ""
|
13891 |
"Click the links below to get Bonus Custom Code or click the Dismiss Notice "
|
13892 |
"links or click this "
|
13893 |
msgstr ""
|
13894 |
|
13895 |
+
#: includes/hud-dismiss-functions.php:203
|
13896 |
+
#: includes/hud-dismiss-functions.php:215
|
13897 |
msgid "Dismiss All Notices"
|
13898 |
msgstr ""
|
13899 |
|
13900 |
+
#: includes/hud-dismiss-functions.php:203
|
13901 |
+
#: includes/hud-dismiss-functions.php:215
|
13902 |
msgid ""
|
13903 |
" link. To Reset Dismiss Notices click the Reset|Recheck Dismiss Notices "
|
13904 |
"button on the Custom Code page."
|
13905 |
msgstr ""
|
13906 |
|
13907 |
+
#: includes/hud-dismiss-functions.php:206
|
13908 |
+
#: includes/hud-dismiss-functions.php:221
|
13909 |
+
#: includes/hud-dismiss-functions.php:227
|
13910 |
+
#: includes/hud-dismiss-functions.php:233
|
13911 |
+
#: includes/hud-dismiss-functions.php:239
|
13912 |
+
#: includes/hud-dismiss-functions.php:253
|
13913 |
+
#: includes/hud-dismiss-functions.php:259
|
13914 |
+
#: includes/hud-dismiss-functions.php:264
|
13915 |
msgid "Get "
|
13916 |
msgstr ""
|
13917 |
|
13918 |
+
#: includes/hud-dismiss-functions.php:206
|
13919 |
+
#: includes/hud-dismiss-functions.php:253
|
13920 |
msgid "POST Request Attack Protection Code"
|
13921 |
msgstr ""
|
13922 |
|
13923 |
+
#: includes/hud-dismiss-functions.php:206
|
13924 |
+
#: includes/hud-dismiss-functions.php:221
|
13925 |
+
#: includes/hud-dismiss-functions.php:227
|
13926 |
+
#: includes/hud-dismiss-functions.php:233
|
13927 |
+
#: includes/hud-dismiss-functions.php:239
|
13928 |
+
#: includes/hud-dismiss-functions.php:253
|
13929 |
+
#: includes/hud-dismiss-functions.php:259
|
13930 |
+
#: includes/hud-dismiss-functions.php:264
|
13931 |
msgid " or "
|
13932 |
msgstr ""
|
13933 |
|
13934 |
+
#: includes/hud-dismiss-functions.php:221
|
13935 |
msgid "Brute Force Login Protection Code"
|
13936 |
msgstr ""
|
13937 |
|
13938 |
+
#: includes/hud-dismiss-functions.php:227
|
13939 |
msgid "Speed Boost Cache Code"
|
13940 |
msgstr ""
|
13941 |
|
13942 |
+
#: includes/hud-dismiss-functions.php:233
|
13943 |
msgid "Author Enumeration BOT Probe Code"
|
13944 |
msgstr ""
|
13945 |
|
13946 |
+
#: includes/hud-dismiss-functions.php:239
|
13947 |
msgid "XML-RPC DDoS Protection Code"
|
13948 |
msgstr ""
|
13949 |
|
13950 |
+
#: includes/hud-dismiss-functions.php:259
|
13951 |
msgid "Mime Sniffing|Drive-by Download Attack Protection Code"
|
13952 |
msgstr ""
|
13953 |
|
13954 |
+
#: includes/hud-dismiss-functions.php:264
|
13955 |
msgid "External iFrame|Clickjacking Protection Code"
|
13956 |
msgstr ""
|
13957 |
|
13958 |
+
#: includes/hud-dismiss-functions.php:354
|
13959 |
+
#: includes/hud-dismiss-functions.php:398
|
13960 |
msgid "HUD Check: Wordfence PHP/php.ini handler htaccess code detected"
|
13961 |
msgstr ""
|
13962 |
|
13963 |
+
#: includes/hud-dismiss-functions.php:354
|
13964 |
+
#: includes/hud-dismiss-functions.php:398
|
13965 |
msgid ""
|
13966 |
"Wordfence PHP/php.ini handler htaccess code was found in your root .htaccess "
|
13967 |
"file, but was NOT found in BPS Custom Code."
|
13968 |
msgstr ""
|
13969 |
|
13970 |
+
#: includes/hud-dismiss-functions.php:354
|
13971 |
+
#: includes/hud-dismiss-functions.php:398
|
13972 |
msgid ""
|
13973 |
"Using the Wordfence WAF Firewall may cause serious/critical problems for "
|
13974 |
"your website and BPS."
|
13975 |
msgstr ""
|
13976 |
|
13977 |
+
#: includes/hud-dismiss-functions.php:359
|
13978 |
+
#: includes/hud-dismiss-functions.php:403
|
13979 |
msgid "HUD Check: PHP/php.ini handler htaccess code check"
|
13980 |
msgstr ""
|
13981 |
|
13982 |
+
#: includes/hud-dismiss-functions.php:359
|
13983 |
+
#: includes/hud-dismiss-functions.php:403
|
13984 |
msgid ""
|
13985 |
"PHP/php.ini handler htaccess code was found in your root .htaccess file, but "
|
13986 |
"was NOT found in BPS Custom Code."
|
13987 |
msgstr ""
|
13988 |
|
13989 |
+
#: includes/hud-dismiss-functions.php:359
|
13990 |
+
#: includes/hud-dismiss-functions.php:403
|
13991 |
msgid "To automatically fix this click here: "
|
13992 |
msgstr ""
|
13993 |
|
13994 |
+
#: includes/hud-dismiss-functions.php:359
|
13995 |
+
#: includes/hud-dismiss-functions.php:403
|
13996 |
msgid ""
|
13997 |
"The Setup Wizard Pre-Installation Checks feature will automatically fix this "
|
13998 |
"just by visiting the Setup Wizard page."
|
13999 |
msgstr ""
|
14000 |
|
14001 |
+
#: includes/hud-dismiss-functions.php:398
|
14002 |
msgid " for the steps to fix this Wordfence problem."
|
14003 |
msgstr ""
|
14004 |
|
14005 |
+
#: includes/hud-dismiss-functions.php:461
|
14006 |
msgid ""
|
14007 |
"An htaccess file has been detected in the wp-content folder that breaks BPS "
|
14008 |
"features and functionality"
|
14009 |
msgstr ""
|
14010 |
|
14011 |
+
#: includes/hud-dismiss-functions.php:461
|
14012 |
msgid ""
|
14013 |
"If you have or had the Sucuri, Defender or iThemes Security plugins "
|
14014 |
"installed, they create a wp-content htaccess file that breaks several things "
|
14015 |
"in BPS Pro and other plugins as well."
|
14016 |
msgstr ""
|
14017 |
|
14018 |
+
#: includes/hud-dismiss-functions.php:461
|
14019 |
msgid ""
|
14020 |
"To fix the Sucuri problem go to the Sucuri Settings page, click the "
|
14021 |
"Hardening tab and click the Revert Hardening button for the Block PHP Files "
|
14022 |
"in WP-CONTENT Directory option setting."
|
14023 |
msgstr ""
|
14024 |
|
14025 |
+
#: includes/hud-dismiss-functions.php:461
|
14026 |
msgid ""
|
14027 |
"To fix the Defender Security problem go to the Security Tweaks page, click "
|
14028 |
"the PHP Execution option setting and click the Revert button."
|
14029 |
msgstr ""
|
14030 |
|
14031 |
+
#: includes/hud-dismiss-functions.php:461
|
14032 |
msgid ""
|
14033 |
"o fix the iThemes problem go to the System Tweaks page, uncheck the Disable "
|
14034 |
"PHP in Plugins option setting."
|
14035 |
msgstr ""
|
14036 |
|
14037 |
+
#: includes/hud-dismiss-functions.php:503
|
14038 |
msgid "The WordPress Firewall 2 plugin is installed and activated"
|
14039 |
msgstr ""
|
14040 |
|
14041 |
+
#: includes/hud-dismiss-functions.php:503
|
14042 |
msgid "It is recommended that you delete the WordPress Firewall 2 plugin."
|
14043 |
msgstr ""
|
14044 |
|
14045 |
+
#: includes/hud-dismiss-functions.php:503
|
14046 |
msgid " for more information."
|
14047 |
msgstr ""
|
14048 |
|
14049 |
+
#: includes/hud-dismiss-functions.php:535
|
14050 |
msgid "Notice: BPS Query String Exploits Code Changes"
|
14051 |
msgstr ""
|
14052 |
|
14053 |
+
#: includes/hud-dismiss-functions.php:535
|
14054 |
msgid ""
|
14055 |
"Older BPS Query String Exploits code was found in BPS Custom Code. Several "
|
14056 |
"Query String Exploits rules were changed/added/modified in the root ."
|
14057 |
"htaccess file in BPS .49.6, .50.2 & .50.3."
|
14058 |
msgstr ""
|
14059 |
|
14060 |
+
#: includes/hud-dismiss-functions.php:535
|
14061 |
msgid ""
|
14062 |
"Copy the new Query String Exploits section of code from your root .htaccess "
|
14063 |
"file and paste it into this BPS Custom Code text box: CUSTOM CODE BPSQSE BPS "
|
14064 |
"QUERY STRING EXPLOITS and click the Save Root Custom Code button."
|
14065 |
msgstr ""
|
14066 |
|
14067 |
+
#: includes/hud-dismiss-functions.php:535
|
14068 |
msgid ""
|
14069 |
"This Notice will go away once you have copied the new Query String Exploits "
|
14070 |
"code to BPS Custom Code and clicked the Save Root Custom Code button."
|
14071 |
msgstr ""
|
14072 |
|
14073 |
+
#: includes/hud-dismiss-functions.php:554
|
14074 |
msgid "BPS Alert! A BPS htaccess file was NOT found in the BPS Backup folder: "
|
14075 |
msgstr ""
|
14076 |
|
14077 |
+
#: includes/hud-dismiss-functions.php:554
|
14078 |
msgid " and click the BPS Backup Folder BulletProof Mode Activate button."
|
14079 |
msgstr ""
|
14080 |
|
14081 |
+
#: includes/hud-dismiss-functions.php:593
|
14082 |
msgid "New Improved BPS Speed Boost Cache Code"
|
14083 |
msgstr ""
|
14084 |
|
14085 |
+
#: includes/hud-dismiss-functions.php:593
|
14086 |
msgid ""
|
14087 |
"Older BPS Speed Boost Cache Code was found saved in this BPS Custom Code "
|
14088 |
"text box: CUSTOM CODE TOP PHP/PHP.INI HANDLER/CACHE CODE"
|
14089 |
msgstr ""
|
14090 |
|
14091 |
+
#: includes/hud-dismiss-functions.php:593
|
14092 |
msgid ""
|
14093 |
"Newer improved BPS Speed Boost Cache Code has been created, which should "
|
14094 |
"improve website load speed performance even more."
|
14095 |
msgstr ""
|
14096 |
|
14097 |
+
#: includes/hud-dismiss-functions.php:593
|
14098 |
msgid "Get The New Improved BPS Speed Boost Cache Code"
|
14099 |
msgstr ""
|
14100 |
|
14101 |
+
#: includes/hud-dismiss-functions.php:593
|
14102 |
msgid ". To dismiss this Notice click the Dismiss Notice button below."
|
14103 |
msgstr ""
|
14104 |
|
14105 |
+
#: includes/hud-dismiss-functions.php:593
|
14106 |
msgid ""
|
14107 |
"To Reset Dismiss Notices click the Reset|Recheck Dismiss Notices button on "
|
14108 |
"the Custom Code page."
|
14109 |
msgstr ""
|
14110 |
|
14111 |
+
#: includes/hud-dismiss-functions.php:600
|
14112 |
msgid "BPS Speed Boost Cache Custom Code Notice"
|
14113 |
msgstr ""
|
14114 |
|
14115 |
+
#: includes/hud-dismiss-functions.php:600
|
14116 |
msgid ""
|
14117 |
"BPS Speed Boost Cache Code was found in this BPS Custom Code text box: "
|
14118 |
"CUSTOM CODE TOP PHP/PHP.INI HANDLER/CACHE CODE"
|
14119 |
msgstr ""
|
14120 |
|
14121 |
+
#: includes/hud-dismiss-functions.php:600
|
14122 |
msgid ""
|
14123 |
"and another caching plugin's Marker text was also found in this BPS Custom "
|
14124 |
"Code text box."
|
14125 |
msgstr ""
|
14126 |
|
14127 |
+
#: includes/hud-dismiss-functions.php:600
|
14128 |
msgid "Click this link: "
|
14129 |
msgstr ""
|
14130 |
|
14131 |
+
#: includes/hud-dismiss-functions.php:600
|
14132 |
msgid "BPS Speed Boost Cache Custom Code Notice Forum Topic"
|
14133 |
msgstr ""
|
14134 |
|
14135 |
+
#: includes/hud-dismiss-functions.php:600
|
14136 |
msgid " for help information on what this Notice means and what to do next."
|
14137 |
msgstr ""
|
14138 |
|
14139 |
+
#: includes/hud-dismiss-functions.php:638
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14140 |
msgid "BPS New Feature Notice: JTC-Lite"
|
14141 |
msgstr ""
|
14142 |
|
14143 |
+
#: includes/hud-dismiss-functions.php:638
|
14144 |
msgid ""
|
14145 |
"JTC-Lite protects the WordPress Login page Form against automated SpamBot "
|
14146 |
"and HackerBot Brute Force Login attacks"
|
14147 |
msgstr ""
|
14148 |
|
14149 |
+
#: includes/hud-dismiss-functions.php:638
|
14150 |
msgid ""
|
14151 |
"and also prevents User Accounts from being locked repeatedly by Brute Force "
|
14152 |
"Login Bot attacks on your Login page Form."
|
14153 |
msgstr ""
|
14154 |
|
14155 |
+
#: includes/hud-dismiss-functions.php:638
|
14156 |
msgid "To enable/turn On JTC-Lite, click this "
|
14157 |
msgstr ""
|
14158 |
|
14159 |
+
#: includes/hud-dismiss-functions.php:638
|
14160 |
msgid ""
|
14161 |
". Click/check the Login Form Checkbox and click the Save Options button."
|
14162 |
msgstr ""
|
14163 |
|
14164 |
+
#: includes/hud-dismiss-functions.php:638
|
14165 |
+
#: includes/hud-dismiss-functions.php:719
|
14166 |
+
#: includes/hud-dismiss-functions.php:757
|
14167 |
+
#: includes/hud-dismiss-functions.php:809
|
14168 |
+
#: includes/hud-dismiss-functions.php:857
|
14169 |
msgid ""
|
14170 |
"To Dismiss this Notice click the Dismiss Notice button below. To Reset "
|
14171 |
"Dismiss Notices click the Reset|Recheck Dismiss Notices button on the BPS "
|
14172 |
"Custom Code page."
|
14173 |
msgstr ""
|
14174 |
|
14175 |
+
#: includes/hud-dismiss-functions.php:681
|
14176 |
msgid "BPS Plugin Star Rating Request"
|
14177 |
msgstr ""
|
14178 |
|
14179 |
+
#: includes/hud-dismiss-functions.php:681
|
14180 |
msgid ""
|
14181 |
"A BPS star rating only takes a couple of minutes and would be very much "
|
14182 |
"appreciated. We are looking for 5 star ratings and not \"fancy\" reviews."
|
14183 |
msgstr ""
|
14184 |
|
14185 |
+
#: includes/hud-dismiss-functions.php:681
|
14186 |
msgid ""
|
14187 |
"A simple review like \"works great\" or \"has been protecting my website for "
|
14188 |
"X months or X years\" is perfect."
|
14189 |
msgstr ""
|
14190 |
|
14191 |
+
#: includes/hud-dismiss-functions.php:681
|
14192 |
msgid "Click this link to submit a BPS Plugin Star Rating: "
|
14193 |
msgstr ""
|
14194 |
|
14195 |
+
#: includes/hud-dismiss-functions.php:681
|
14196 |
msgid "BPS Plugin Star Rating"
|
14197 |
msgstr ""
|
14198 |
|
14199 |
+
#: includes/hud-dismiss-functions.php:681
|
14200 |
msgid ""
|
14201 |
"login to the WordPress.org site and scroll to the bottom of the Reviews page."
|
14202 |
msgstr ""
|
14203 |
|
14204 |
+
#: includes/hud-dismiss-functions.php:681
|
14205 |
msgid ""
|
14206 |
"To Dismiss this one-time Notice click the Dismiss Notice button below. To "
|
14207 |
"Reset Dismiss Notices click the Reset|Recheck Dismiss Notices button on the "
|
14208 |
"BPS Custom Code page."
|
14209 |
msgstr ""
|
14210 |
|
14211 |
+
#: includes/hud-dismiss-functions.php:719
|
14212 |
msgid "BPS Notice: Mod Security Module is Loaded|Enabled"
|
14213 |
msgstr ""
|
14214 |
|
14215 |
+
#: includes/hud-dismiss-functions.php:719
|
14216 |
msgid "Please take a minute to view this Mod Security help forum topic: "
|
14217 |
msgstr ""
|
14218 |
|
14219 |
+
#: includes/hud-dismiss-functions.php:719
|
14220 |
msgid "Mod Security Common Known Problems"
|
14221 |
msgstr ""
|
14222 |
|
14223 |
+
#: includes/hud-dismiss-functions.php:719
|
14224 |
msgid ""
|
14225 |
"If you are not experiencing any of the problems listed in the Mod Security "
|
14226 |
"help forum topic then you can dismiss this Dismiss Notice."
|
14227 |
msgstr ""
|
14228 |
|
14229 |
+
#: includes/hud-dismiss-functions.php:757
|
14230 |
msgid "BPS GDPR Compliance Notice"
|
14231 |
msgstr ""
|
14232 |
|
14233 |
+
#: includes/hud-dismiss-functions.php:757
|
14234 |
msgid ""
|
14235 |
"A new Setup Wizard Option has been created which allows you to turn off all "
|
14236 |
"IP address logging in BPS to make your website GDPR Compliant."
|
14237 |
msgstr ""
|
14238 |
|
14239 |
+
#: includes/hud-dismiss-functions.php:757
|
14240 |
msgid "GDPR Compliance Setup Wizard Option link"
|
14241 |
msgstr ""
|
14242 |
|
14243 |
+
#: includes/hud-dismiss-functions.php:757
|
14244 |
msgid "Choose the GDPR Compliance On setting."
|
14245 |
msgstr ""
|
14246 |
|
14247 |
+
#: includes/hud-dismiss-functions.php:757
|
14248 |
msgid "For more information about GDPR Compliance click this "
|
14249 |
msgstr ""
|
14250 |
|
14251 |
+
#: includes/hud-dismiss-functions.php:757
|
14252 |
msgid "GDPR Compliance Forum Topic link"
|
14253 |
msgstr ""
|
14254 |
|
14255 |
+
#: includes/hud-dismiss-functions.php:809
|
14256 |
msgid "BPS wp-config.php file WP Automatic Update constants detected"
|
14257 |
msgstr ""
|
14258 |
|
14259 |
+
#: includes/hud-dismiss-functions.php:809
|
14260 |
msgid ""
|
14261 |
"You are using the BPS MU Tools plugin option settings to handle WP Automatic "
|
14262 |
"Updates. BPS detected that you are also using one or both of these WP "
|
14267 |
"Notice after you have commented them out."
|
14268 |
msgstr ""
|
14269 |
|
14270 |
+
#: includes/hud-dismiss-functions.php:857
|
14271 |
+
msgid "MScan 2.0 Rebuild Notice"
|
14272 |
+
msgstr ""
|
14273 |
+
|
14274 |
+
#: includes/hud-dismiss-functions.php:857
|
14275 |
+
msgid ""
|
14276 |
+
"MScan has been completely rebuilt. MScan 2.0 is faster, very accurate and "
|
14277 |
+
"user friendly. "
|
14278 |
+
msgstr ""
|
14279 |
+
|
14280 |
+
#: includes/hud-dismiss-functions.php:857
|
14281 |
+
msgid "Check out MScan 2.0"
|
14282 |
+
msgstr ""
|
14283 |
+
|
14284 |
+
#: includes/hud-dismiss-functions.php:857
|
14285 |
+
msgid ""
|
14286 |
+
" Recommendation: Click the Reset MScan button before running a new scan."
|
14287 |
+
msgstr ""
|
14288 |
+
|
14289 |
#: includes/login-security.php:124 includes/login-security.php:130
|
14290 |
#: includes/login-security.php:343 includes/login-security.php:485
|
14291 |
#: includes/login-security.php:491 includes/login-security.php:617
|
readme.txt
CHANGED
@@ -4,15 +4,15 @@ Donate link: https://wordpress.org/support/view/plugin-reviews/bulletproof-secur
|
|
4 |
Tags: security, secure, malware scanner, login security, firewall, security plugin, wordpress security, login, bruteforce, backup, exploit, infection, protection, virus, anti-virus, logout, spam, anti-spam
|
5 |
Requires at least: 3.8
|
6 |
Tested up to: 5.7
|
7 |
-
Stable tag: 4.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
11 |
-
WordPress Security Protection: Malware scanner, Firewall, Login Security, DB Backup, Anti-Spam
|
12 |
|
13 |
== Description ==
|
14 |
|
15 |
-
WordPress Security Protection: Malware scanner, Firewall, Login Security, DB Backup, Anti-Spam
|
16 |
|
17 |
= BulletProof Security Installation and Setup Video Tutorial =
|
18 |
https://www.youtube.com/watch?v=FMv58aLUMT0
|
@@ -139,7 +139,7 @@ Security plugin features and frequently asked questions see the FAQ section belo
|
|
139 |
1. Add a checkmark in the Hosting Account Root Folders checkboxes to enable MScan to scan the folders that you have chosen.
|
140 |
2. Keep the default MScan Options settings or choose your own settings.
|
141 |
3. Click the Save MScan Options button.
|
142 |
-
4.
|
143 |
|
144 |
* <strong>Idle Session Logout (ISL) Setup Steps</strong>
|
145 |
1. Choose the ISL option settings you want to use.
|
@@ -275,6 +275,7 @@ The answer is very simple - .htaccess files (distributed Server configuration fi
|
|
275 |
|
276 |
<strong>Description:</strong> MScan is a malware scanner that scans website files for hacker files or code and scans the WP database for hacker code. MScan Scheduled
|
277 |
scanning is available in BPS Pro only. For more details see the <a href="https://forum.ait-pro.com/forums/topic/mscan-malware-scanner-guide/" title="MScan Malware Scanner Guide" rel="nofollow" target="_blank">MScan Malware Scanner Guide</a>.
|
|
|
278 |
|
279 |
= BulletProof Security System Info =
|
280 |
|
4 |
Tags: security, secure, malware scanner, login security, firewall, security plugin, wordpress security, login, bruteforce, backup, exploit, infection, protection, virus, anti-virus, logout, spam, anti-spam
|
5 |
Requires at least: 3.8
|
6 |
Tested up to: 5.7
|
7 |
+
Stable tag: 4.8
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
11 |
+
WordPress Security Protection: Malware scanner, Firewall, Login Security, DB Backup, Anti-Spam...
|
12 |
|
13 |
== Description ==
|
14 |
|
15 |
+
WordPress Security Protection: Malware scanner, Firewall, Login Security, DB Backup, Anti-Spam... View Security feature highlights below. View BulletProof Security feature details under the FAQ help section below. Secure your WordPress website even further by adding additional BulletProof Security Bonus Custom Code. See BulletProof Security Bonus Custom Code under the FAQ help section below. Effective, Reliable & Easy to use WordPress Security Plugin.
|
16 |
|
17 |
= BulletProof Security Installation and Setup Video Tutorial =
|
18 |
https://www.youtube.com/watch?v=FMv58aLUMT0
|
139 |
1. Add a checkmark in the Hosting Account Root Folders checkboxes to enable MScan to scan the folders that you have chosen.
|
140 |
2. Keep the default MScan Options settings or choose your own settings.
|
141 |
3. Click the Save MScan Options button.
|
142 |
+
4. Click the Start Scan button.
|
143 |
|
144 |
* <strong>Idle Session Logout (ISL) Setup Steps</strong>
|
145 |
1. Choose the ISL option settings you want to use.
|
275 |
|
276 |
<strong>Description:</strong> MScan is a malware scanner that scans website files for hacker files or code and scans the WP database for hacker code. MScan Scheduled
|
277 |
scanning is available in BPS Pro only. For more details see the <a href="https://forum.ait-pro.com/forums/topic/mscan-malware-scanner-guide/" title="MScan Malware Scanner Guide" rel="nofollow" target="_blank">MScan Malware Scanner Guide</a>.
|
278 |
+
* MScan 2.0 Rebuild: BPS Pro 15.4/BPS 4.8: MScan 2.0 now uses file hash comparisons for all WP files (WP Core, Plugins and Themes). File hash comparisons are 100% accurate, which means no false positives will occur for any WP files. All other non-WP files are scanned using standard conventional pattern matching. Now that WP Files are all scanned with file hash comparisons this allowed increasing the detection sensitivity for pattern matching scanning. Additional pattern matching rules have been added to MScan 2.0.
|
279 |
|
280 |
= BulletProof Security System Info =
|
281 |
|