Version Description
- Fix: Defender now can recognize and verify Bing Bot for whitelisting
- Fix: Lockout page now will use site title instead of the text 'WP Defender'
- Other minor enhancements and fixes
Download this release
Release Info
Developer | hoang1213 |
Plugin | Defender Security – Malware Scanner, Login Security & Firewall |
Version | 1.7.6 |
Comparing to | |
See all releases |
Code changes from version 1.7.4 to 1.7.6
- app/behavior/blacklist-free.php +7 -5
- app/behavior/report-free.php +1 -1
- app/behavior/utils.php +22 -0
- app/controller/dashboard.php +27 -9
- app/module/advanced-tools/controller/main.php +1 -1
- app/module/advanced-tools/view/login/enabled.php +1 -1
- app/module/audit.php +3 -0
- app/module/audit/behavior/audit-free.php +2 -2
- app/module/audit/view/free.php +1 -1
- app/module/hardener/component/login-duration.php +3 -2
- app/module/hardener/component/protect-information-service.php +6 -0
- app/module/hardener/component/servers/apache-service.php +102 -6
- app/module/hardener/view/rules/protect-information.php +6 -1
- app/module/ip-lockout/component/login-protection-api.php +38 -0
- app/module/ip-lockout/controller/main.php +8 -0
- app/module/ip-lockout/view/emails/404-lockout.php +1 -1
- app/module/ip-lockout/view/emails/login-lockout.php +1 -1
- app/module/ip-lockout/view/emails/login-username-ban.php +1 -1
- app/module/ip-lockout/view/locked.php +1 -1
- app/module/ip-lockout/view/notification/report-free.php +2 -2
- app/module/scan/behavior/core-result.php +10 -9
- app/module/scan/behavior/core-scan.php +13 -3
- app/module/scan/behavior/scan.php +2 -2
- app/module/scan/controller/main.php +1 -1
- app/module/scan/view/automation-free.php +2 -2
- app/module/scan/view/layouts/layout.php +2 -2
- app/module/scan/view/scanning.php +1 -1
- app/module/scan/view/setting-free.php +4 -4
- app/view/activator.php +1 -1
- app/view/dashboard.php +3 -2
- assets/css/styles.css +92 -83
- assets/img/scanning-man.png +0 -0
- changelog.txt +17 -1
- languages/wpdef-default.pot +130 -150
- main-activator.php +7 -3
- readme.txt +7 -2
- wp-defender.php +2 -2
app/behavior/blacklist-free.php
CHANGED
@@ -19,17 +19,19 @@ class Blacklist_Free extends Behavior {
|
|
19 |
<div class="box-title">
|
20 |
<span class="span-icon icon-blacklist"></span>
|
21 |
<h3><?php _e( "BLACKLIST MONITOR", "defender-security" ) ?></h3>
|
22 |
-
<a href="
|
23 |
-
|
24 |
-
|
25 |
-
|
|
|
26 |
</div>
|
27 |
<div class="box-content">
|
28 |
<div class="line">
|
29 |
<?php _e( "Automatically check if you’re on Google’s blacklist every 6 hours. If something’s
|
30 |
wrong, we’ll let you know via email.", "defender-security" ) ?>
|
31 |
</div>
|
32 |
-
<a href="
|
|
|
33 |
class="button button-green button-small"><?php esc_html_e( "Upgrade to Pro", "defender-security" ) ?></a>
|
34 |
</div>
|
35 |
</div>
|
19 |
<div class="box-title">
|
20 |
<span class="span-icon icon-blacklist"></span>
|
21 |
<h3><?php _e( "BLACKLIST MONITOR", "defender-security" ) ?></h3>
|
22 |
+
<a href="<?php echo Utils::instance()->campaignURL( 'defender_dash_blacklist_pro_tag' ) ?>"
|
23 |
+
target="_blank"
|
24 |
+
class="button button-small button-pre"
|
25 |
+
tooltip="<?php esc_attr_e( "Try Defender Pro free today", "defender-security" ) ?>">
|
26 |
+
<?php _e( "PRO FEATURE", "defender-security" ) ?></a>
|
27 |
</div>
|
28 |
<div class="box-content">
|
29 |
<div class="line">
|
30 |
<?php _e( "Automatically check if you’re on Google’s blacklist every 6 hours. If something’s
|
31 |
wrong, we’ll let you know via email.", "defender-security" ) ?>
|
32 |
</div>
|
33 |
+
<a href="<?php echo Utils::instance()->campaignURL( 'defender_dash_blacklist_upgrade_button' ) ?>"
|
34 |
+
target="_blank"
|
35 |
class="button button-green button-small"><?php esc_html_e( "Upgrade to Pro", "defender-security" ) ?></a>
|
36 |
</div>
|
37 |
</div>
|
app/behavior/report-free.php
CHANGED
@@ -60,7 +60,7 @@ class Report_Free extends Behavior {
|
|
60 |
<div>
|
61 |
<?php printf( __( " Automated reports are included in a WPMU DEV membership along with 100+ plugins
|
62 |
& themes, 24/7 support and lots of handy site management tools – <a target='_blank' href=\"%s\">Try
|
63 |
-
it all absolutely FREE</a>", "defender-security" ), '
|
64 |
</div>
|
65 |
</div>
|
66 |
<div class="clear"></div>
|
60 |
<div>
|
61 |
<?php printf( __( " Automated reports are included in a WPMU DEV membership along with 100+ plugins
|
62 |
& themes, 24/7 support and lots of handy site management tools – <a target='_blank' href=\"%s\">Try
|
63 |
+
it all absolutely FREE</a>", "defender-security" ), Utils::instance()->campaignURL( 'defender_dash_reports_upsell_link' ) ) ?>
|
64 |
</div>
|
65 |
</div>
|
66 |
<div class="clear"></div>
|
app/behavior/utils.php
CHANGED
@@ -701,4 +701,26 @@ class Utils extends Behavior {
|
|
701 |
|
702 |
return apply_filters( 'defender_current_page_url', $url );
|
703 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
704 |
}
|
701 |
|
702 |
return apply_filters( 'defender_current_page_url', $url );
|
703 |
}
|
704 |
+
|
705 |
+
/**
|
706 |
+
* site url with correct sheme
|
707 |
+
*
|
708 |
+
* @return string
|
709 |
+
*/
|
710 |
+
public function siteURLWithScheme() {
|
711 |
+
$current_scheme = ( is_ssl() ) ? 'https' : 'http';
|
712 |
+
|
713 |
+
return network_site_url( '', $current_scheme );
|
714 |
+
}
|
715 |
+
|
716 |
+
/**
|
717 |
+
* @param $campaign
|
718 |
+
*
|
719 |
+
* @return string
|
720 |
+
*/
|
721 |
+
public function campaignURL( $campaign ) {
|
722 |
+
$url = "https://premium.wpmudev.org/project/wp-defender/?utm_source=defender&utm_medium=plugin&utm_campaign=" . $campaign;
|
723 |
+
|
724 |
+
return $url;
|
725 |
+
}
|
726 |
}
|
app/controller/dashboard.php
CHANGED
@@ -86,17 +86,35 @@ class Dashboard extends Controller {
|
|
86 |
* @return mixed
|
87 |
*/
|
88 |
public function addMyEndpoint( $actions ) {
|
89 |
-
$actions['defender_new_scan']
|
90 |
-
$actions['defender_schedule_scan']
|
91 |
-
$actions['defender_manage_audit_log']
|
92 |
-
$actions['defender_manage_lockout']
|
93 |
-
$actions['defender_whitelist_ip']
|
94 |
-
$actions['defender_blacklist_ip']
|
95 |
-
$actions['defender_get_stats']
|
|
|
96 |
|
97 |
return $actions;
|
98 |
}
|
99 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
/**
|
101 |
* @param $params
|
102 |
* @param $action
|
@@ -303,9 +321,9 @@ class Dashboard extends Controller {
|
|
303 |
*/
|
304 |
public function admin_menu() {
|
305 |
$cap = is_multisite() ? 'manage_network_options' : 'manage_options';
|
306 |
-
$menu_title = esc_html__( "Defender", "defender-security" );
|
307 |
//$menu_title = sprintf( $menu_title, $indicator );
|
308 |
-
add_menu_page( esc_html__( "Defender", "defender-security" ), $menu_title, $cap, 'wp-defender', array(
|
309 |
&$this,
|
310 |
'actionIndex'
|
311 |
), $this->get_menu_icon() );
|
86 |
* @return mixed
|
87 |
*/
|
88 |
public function addMyEndpoint( $actions ) {
|
89 |
+
$actions['defender_new_scan'] = array( &$this, 'new_scan' );
|
90 |
+
$actions['defender_schedule_scan'] = array( &$this, 'schedule_scan' );
|
91 |
+
$actions['defender_manage_audit_log'] = array( &$this, 'manage_audit_log' );
|
92 |
+
$actions['defender_manage_lockout'] = array( &$this, 'manage_lockout' );
|
93 |
+
$actions['defender_whitelist_ip'] = array( &$this, 'whitelist_ip' );
|
94 |
+
$actions['defender_blacklist_ip'] = array( &$this, 'blacklist_ip' );
|
95 |
+
$actions['defender_get_stats'] = array( &$this, 'get_stats' );
|
96 |
+
$actions['defender_get_scan_progress'] = array( &$this, 'get_scan_progress' );
|
97 |
|
98 |
return $actions;
|
99 |
}
|
100 |
|
101 |
+
public function get_scan_progress() {
|
102 |
+
$ret = Scan_Api::processActiveScan();
|
103 |
+
if ( is_wp_error( $ret ) ) {
|
104 |
+
wp_send_json_error( array(
|
105 |
+
'message' => $ret->get_error_message()
|
106 |
+
) );
|
107 |
+
} else {
|
108 |
+
$percent = Scan_Api::getScanProgress();
|
109 |
+
if ( $ret == true ) {
|
110 |
+
$percent = 100;
|
111 |
+
}
|
112 |
+
wp_send_json_success( array(
|
113 |
+
'progress' => $percent
|
114 |
+
) );
|
115 |
+
}
|
116 |
+
}
|
117 |
+
|
118 |
/**
|
119 |
* @param $params
|
120 |
* @param $action
|
321 |
*/
|
322 |
public function admin_menu() {
|
323 |
$cap = is_multisite() ? 'manage_network_options' : 'manage_options';
|
324 |
+
$menu_title = wp_defender()->isFree ? esc_html__( "Defender", "defender-security" ) : esc_html__( "Defender Pro", "defender-security" );
|
325 |
//$menu_title = sprintf( $menu_title, $indicator );
|
326 |
+
add_menu_page( esc_html__( "Defender Pro", "defender-security" ), $menu_title, $cap, 'wp-defender', array(
|
327 |
&$this,
|
328 |
'actionIndex'
|
329 |
), $this->get_menu_icon() );
|
app/module/advanced-tools/controller/main.php
CHANGED
@@ -457,7 +457,7 @@ class Main extends Controller {
|
|
457 |
'message' => __( "Your settings have been updated.", "defender-security" )
|
458 |
);
|
459 |
$res['reload'] = 1;
|
460 |
-
|
461 |
wp_send_json_success( $res );
|
462 |
}
|
463 |
}
|
457 |
'message' => __( "Your settings have been updated.", "defender-security" )
|
458 |
);
|
459 |
$res['reload'] = 1;
|
460 |
+
Utils::instance()->submitStatsToDev();
|
461 |
wp_send_json_success( $res );
|
462 |
}
|
463 |
}
|
app/module/advanced-tools/view/login/enabled.php
CHANGED
@@ -9,7 +9,7 @@
|
|
9 |
<?php _e( "Two factor authentication is active.", "defender-security" ) ?>
|
10 |
</div>
|
11 |
<button type="button" class="button" id="disableOTP">
|
12 |
-
<?php _e( "
|
13 |
</button>
|
14 |
</td>
|
15 |
</tr>
|
9 |
<?php _e( "Two factor authentication is active.", "defender-security" ) ?>
|
10 |
</div>
|
11 |
<button type="button" class="button" id="disableOTP">
|
12 |
+
<?php _e( "Disable", "defender-security" ) ?>
|
13 |
</button>
|
14 |
</td>
|
15 |
</tr>
|
app/module/audit.php
CHANGED
@@ -11,6 +11,9 @@ use WP_Defender\Module\Audit\Controller\Main_Free;
|
|
11 |
|
12 |
class Audit extends Module {
|
13 |
public function __construct() {
|
|
|
|
|
|
|
14 |
if ( wp_defender()->isFree ) {
|
15 |
new Main_Free();
|
16 |
} else {
|
11 |
|
12 |
class Audit extends Module {
|
13 |
public function __construct() {
|
14 |
+
if ( file_exists( __DIR__ . '/audit/test' ) ) {
|
15 |
+
@unlink( __DIR__ . '/audit/test' );
|
16 |
+
}
|
17 |
if ( wp_defender()->isFree ) {
|
18 |
new Main_Free();
|
19 |
} else {
|
app/module/audit/behavior/audit-free.php
CHANGED
@@ -16,7 +16,7 @@ class Audit_Free extends Behavior {
|
|
16 |
<div class="box-title">
|
17 |
<span class="span-icon icon-blacklist"></span>
|
18 |
<h3><?php _e( "AUDIT LOGGING", "defender-security" ) ?></h3>
|
19 |
-
<a href="
|
20 |
tooltip="<?php esc_attr_e( "Try Defender Pro free today", "defender-security" ) ?>"><?php _e( "PRO FEATURE", "defender-security" ) ?></a>
|
21 |
</div>
|
22 |
<div class="box-content">
|
@@ -28,7 +28,7 @@ class Audit_Free extends Behavior {
|
|
28 |
<div class="presale-text">
|
29 |
<div>
|
30 |
<?php printf( __( "Audit logging is a pro feature included in a WPMU DEV membership along with 100+ plugins &
|
31 |
-
themes, 24/7 support and lots of handy site management tools – <a target='_blank' href=\"%s\">Try it all absolutely FREE</a>", "defender-security" ),
|
32 |
</a>
|
33 |
</div>
|
34 |
</div>
|
16 |
<div class="box-title">
|
17 |
<span class="span-icon icon-blacklist"></span>
|
18 |
<h3><?php _e( "AUDIT LOGGING", "defender-security" ) ?></h3>
|
19 |
+
<a href="<?php echo Utils::instance()->campaignURL('defender_dash_auditlogging_pro_tag') ?>" target="_blank" class="button button-small button-pre"
|
20 |
tooltip="<?php esc_attr_e( "Try Defender Pro free today", "defender-security" ) ?>"><?php _e( "PRO FEATURE", "defender-security" ) ?></a>
|
21 |
</div>
|
22 |
<div class="box-content">
|
28 |
<div class="presale-text">
|
29 |
<div>
|
30 |
<?php printf( __( "Audit logging is a pro feature included in a WPMU DEV membership along with 100+ plugins &
|
31 |
+
themes, 24/7 support and lots of handy site management tools – <a target='_blank' href=\"%s\">Try it all absolutely FREE</a>", "defender-security" ), Utils::instance()->campaignURL('defender_dash_auditlogging_upsell_link') ) ?>
|
32 |
</a>
|
33 |
</div>
|
34 |
</div>
|
app/module/audit/view/free.php
CHANGED
@@ -13,7 +13,7 @@
|
|
13 |
<div class="line max-600">
|
14 |
<?php _e( "Track and log each and every event when changes are made to your website and get details reports on everything from what your users are doing to hacking attempts. This is a pro feature that requires an active WPMU DEV membership. Try it free today!", "defender-security" ) ?>
|
15 |
</div>
|
16 |
-
<a href="
|
17 |
class="button button-green"><?php esc_html_e( "Upgrade to Pro", "defender-security" ) ?></a>
|
18 |
</div>
|
19 |
</div>
|
13 |
<div class="line max-600">
|
14 |
<?php _e( "Track and log each and every event when changes are made to your website and get details reports on everything from what your users are doing to hacking attempts. This is a pro feature that requires an active WPMU DEV membership. Try it free today!", "defender-security" ) ?>
|
15 |
</div>
|
16 |
+
<a href="<?php echo \WP_Defender\Behavior\Utils::instance()->campaignURL('defender_auditlogging_upgrade_button') ?>" target="_blank"
|
17 |
class="button button-green"><?php esc_html_e( "Upgrade to Pro", "defender-security" ) ?></a>
|
18 |
</div>
|
19 |
</div>
|
app/module/hardener/component/login-duration.php
CHANGED
@@ -116,9 +116,9 @@ class Login_Duration extends Rule {
|
|
116 |
function check_login() {
|
117 |
$defender_logout = HTTP_Helper::retrieve_get( 'defender_logout', false );
|
118 |
if( is_user_logged_in() ) {
|
|
|
|
|
119 |
if ( !$defender_logout ) {
|
120 |
-
$current_user = wp_get_current_user();
|
121 |
-
$user_id = $current_user->ID;
|
122 |
$current_time = current_time( 'mysql' );
|
123 |
$last_login_time = get_user_meta( $user_id, 'last_login_time', true );
|
124 |
$login_period = $this->getService()->getDuration( true );
|
@@ -145,6 +145,7 @@ class Login_Duration extends Rule {
|
|
145 |
update_user_meta( $user_id, 'last_login_time', $last_login_time );
|
146 |
}
|
147 |
} else{
|
|
|
148 |
wp_logout();
|
149 |
$after_logout = HTTP_Helper::retrieve_get( 'after_logout', false );
|
150 |
if ( $after_logout ) {
|
116 |
function check_login() {
|
117 |
$defender_logout = HTTP_Helper::retrieve_get( 'defender_logout', false );
|
118 |
if( is_user_logged_in() ) {
|
119 |
+
$current_user = wp_get_current_user();
|
120 |
+
$user_id = $current_user->ID;
|
121 |
if ( !$defender_logout ) {
|
|
|
|
|
122 |
$current_time = current_time( 'mysql' );
|
123 |
$last_login_time = get_user_meta( $user_id, 'last_login_time', true );
|
124 |
$login_period = $this->getService()->getDuration( true );
|
145 |
update_user_meta( $user_id, 'last_login_time', $last_login_time );
|
146 |
}
|
147 |
} else{
|
148 |
+
delete_user_meta( $user_id, 'last_login_time' );
|
149 |
wp_logout();
|
150 |
$after_logout = HTTP_Helper::retrieve_get( 'after_logout', false );
|
151 |
if ( $after_logout ) {
|
app/module/hardener/component/protect-information-service.php
CHANGED
@@ -103,6 +103,9 @@ class Protect_Information_Service extends Rule_Service implements IRule_Service
|
|
103 |
'<Files robots.txt>' . PHP_EOL .
|
104 |
'Require all granted' . PHP_EOL .
|
105 |
'</Files>' . PHP_EOL,
|
|
|
|
|
|
|
106 |
'## WP Defender - End ##'
|
107 |
);
|
108 |
} else {
|
@@ -115,6 +118,9 @@ class Protect_Information_Service extends Rule_Service implements IRule_Service
|
|
115 |
'<Files robots.txt>' . PHP_EOL .
|
116 |
'Allow from all' . PHP_EOL .
|
117 |
'</Files>' . PHP_EOL,
|
|
|
|
|
|
|
118 |
'## WP Defender - End ##'
|
119 |
);
|
120 |
}
|
103 |
'<Files robots.txt>' . PHP_EOL .
|
104 |
'Require all granted' . PHP_EOL .
|
105 |
'</Files>' . PHP_EOL,
|
106 |
+
'<Files ads.txt>' . PHP_EOL .
|
107 |
+
'Require all granted' . PHP_EOL .
|
108 |
+
'</Files>' . PHP_EOL,
|
109 |
'## WP Defender - End ##'
|
110 |
);
|
111 |
} else {
|
118 |
'<Files robots.txt>' . PHP_EOL .
|
119 |
'Allow from all' . PHP_EOL .
|
120 |
'</Files>' . PHP_EOL,
|
121 |
+
'<Files ads.txt>' . PHP_EOL .
|
122 |
+
'Allow from all' . PHP_EOL .
|
123 |
+
'</Files>' . PHP_EOL,
|
124 |
'## WP Defender - End ##'
|
125 |
);
|
126 |
}
|
app/module/hardener/component/servers/apache-service.php
CHANGED
@@ -47,6 +47,11 @@ class Apache_Service extends Rule_Service implements IRule_Service {
|
|
47 |
return $ret;
|
48 |
}
|
49 |
|
|
|
|
|
|
|
|
|
|
|
50 |
return true;
|
51 |
}
|
52 |
|
@@ -139,11 +144,6 @@ class Apache_Service extends Rule_Service implements IRule_Service {
|
|
139 |
}
|
140 |
}
|
141 |
|
142 |
-
/*$status = wp_remote_head( network_site_url() . 'wp-includes', array( 'user-agent' => $_SERVER['HTTP_USER_AGENT'] ) );
|
143 |
-
if ( 200 == wp_remote_retrieve_response_code( $status ) ) {
|
144 |
-
$default[] = 'Options -Indexes' . PHP_EOL;
|
145 |
-
}*/
|
146 |
-
|
147 |
$containsSearch = array_diff( $default, $htConfig );
|
148 |
if ( count( $containsSearch ) == 0 || ( count( $containsSearch ) == count( $default ) ) ) {
|
149 |
//append this
|
@@ -154,6 +154,64 @@ class Apache_Service extends Rule_Service implements IRule_Service {
|
|
154 |
return true;
|
155 |
}
|
156 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
157 |
public function unProtectContentDir() {
|
158 |
$htPath = WP_CONTENT_DIR . '/' . '.htaccess';
|
159 |
if ( ! is_writeable( $htPath ) ) {
|
@@ -218,6 +276,39 @@ class Apache_Service extends Rule_Service implements IRule_Service {
|
|
218 |
file_put_contents( $htPath, $htConfig, LOCK_EX );
|
219 |
}
|
220 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
221 |
/**
|
222 |
* @return bool|\WP_Error
|
223 |
*/
|
@@ -230,7 +321,12 @@ class Apache_Service extends Rule_Service implements IRule_Service {
|
|
230 |
$ret = $this->unProtectIncludeDir();
|
231 |
if ( is_wp_error( $ret ) ) {
|
232 |
return $ret;
|
233 |
-
|
|
|
|
|
|
|
|
|
|
|
234 |
return true;
|
235 |
}
|
236 |
|
47 |
return $ret;
|
48 |
}
|
49 |
|
50 |
+
$ret = $this->protectUploadsDir();
|
51 |
+
if ( is_wp_error( $ret ) ) {
|
52 |
+
return $ret;
|
53 |
+
}
|
54 |
+
|
55 |
return true;
|
56 |
}
|
57 |
|
144 |
}
|
145 |
}
|
146 |
|
|
|
|
|
|
|
|
|
|
|
147 |
$containsSearch = array_diff( $default, $htConfig );
|
148 |
if ( count( $containsSearch ) == 0 || ( count( $containsSearch ) == count( $default ) ) ) {
|
149 |
//append this
|
154 |
return true;
|
155 |
}
|
156 |
|
157 |
+
/**
|
158 |
+
* Protect uploads directory
|
159 |
+
* Sometimes a user will set a custom upload directory
|
160 |
+
*
|
161 |
+
* @return bool|\WP_Error
|
162 |
+
*/
|
163 |
+
public function protectUploadsDir() {
|
164 |
+
if ( defined( 'UPLOADS' ) ) {
|
165 |
+
$htPath = ABSPATH . UPLOADS . '/' . '.htaccess';
|
166 |
+
if ( ! file_exists( $htPath ) ) {
|
167 |
+
if ( ! file_put_contents( $htPath, '', LOCK_EX ) ) {
|
168 |
+
return new \WP_Error( Error_Code::NOT_WRITEABLE,
|
169 |
+
sprintf( __( "The file %s is not writeable", "defender-security" ), $htPath ) );
|
170 |
+
}
|
171 |
+
} elseif ( ! is_writeable( $htPath ) ) {
|
172 |
+
return new \WP_Error( Error_Code::NOT_WRITEABLE,
|
173 |
+
sprintf( __( "The file %s is not writeable", "defender-security" ), $htPath ) );
|
174 |
+
}
|
175 |
+
$htConfig = file( $htPath );
|
176 |
+
$deny = $this->generateHtAccessRule( false );
|
177 |
+
$allow = $this->generateHtAccessRule( true );
|
178 |
+
$default = array(
|
179 |
+
PHP_EOL . '## WP Defender - Protect PHP Executed ##' . PHP_EOL,
|
180 |
+
'<Files *.php>' . PHP_EOL .
|
181 |
+
$deny .
|
182 |
+
'</Files>' . PHP_EOL,
|
183 |
+
'## WP Defender - End ##' . PHP_EOL
|
184 |
+
);
|
185 |
+
|
186 |
+
if ( ! empty( $this->exclude_file_paths ) ) {
|
187 |
+
|
188 |
+
$custom_exclude = array();
|
189 |
+
|
190 |
+
foreach ( $this->exclude_file_paths as $file_path ) {
|
191 |
+
$file_path = trim( preg_replace('/\s\s+/', ' ', $file_path ) ); //remove trailing new lines
|
192 |
+
if ( !empty( $file_path ) ) {
|
193 |
+
$custom_exclude[] = '<Files ' . $file_path . '> '. PHP_EOL .
|
194 |
+
$allow .
|
195 |
+
'</Files>' . PHP_EOL;
|
196 |
+
}
|
197 |
+
}
|
198 |
+
|
199 |
+
if ( ! empty( $custom_exclude ) ) {
|
200 |
+
array_splice( $default, 2, 0, $custom_exclude ); //Add the excludes before the ## WP Defender - End ##
|
201 |
+
$this->new_htconfig = $default; //Set the new array structure for when we want to remove
|
202 |
+
}
|
203 |
+
}
|
204 |
+
|
205 |
+
$containsSearch = array_diff( $default, $htConfig );
|
206 |
+
if ( count( $containsSearch ) == 0 || ( count( $containsSearch ) == count( $default ) ) ) {
|
207 |
+
//append this
|
208 |
+
$htConfig = array_merge( $htConfig, array( implode( '', $default ) ) );
|
209 |
+
file_put_contents( $htPath, implode( '', $htConfig ), LOCK_EX );
|
210 |
+
}
|
211 |
+
}
|
212 |
+
return true;
|
213 |
+
}
|
214 |
+
|
215 |
public function unProtectContentDir() {
|
216 |
$htPath = WP_CONTENT_DIR . '/' . '.htaccess';
|
217 |
if ( ! is_writeable( $htPath ) ) {
|
276 |
file_put_contents( $htPath, $htConfig, LOCK_EX );
|
277 |
}
|
278 |
|
279 |
+
public function unProtectUploadDir() {
|
280 |
+
if ( defined( 'UPLOADS' ) ) {
|
281 |
+
$htPath = ABSPATH . UPLOADS . '/' . '.htaccess';
|
282 |
+
if ( ! is_writeable( $htPath ) ) {
|
283 |
+
return new \WP_Error( Error_Code::NOT_WRITEABLE,
|
284 |
+
sprintf( __( "The file %s is not writeable", "defender-security" ), $htPath ) );
|
285 |
+
}
|
286 |
+
$htConfig = file_get_contents( $htPath );
|
287 |
+
$deny = $this->generateHtAccessRule( false );
|
288 |
+
$default = array(
|
289 |
+
PHP_EOL .'## WP Defender - Protect PHP Executed ##' . PHP_EOL,
|
290 |
+
'<Files *.php>' . PHP_EOL .
|
291 |
+
$deny .
|
292 |
+
'</Files>' . PHP_EOL,
|
293 |
+
'## WP Defender - End ##' . PHP_EOL
|
294 |
+
);
|
295 |
+
|
296 |
+
if ( ! empty( $this->new_htconfig ) ) {
|
297 |
+
$default = $this->new_htconfig;
|
298 |
+
}
|
299 |
+
|
300 |
+
//Introduced regex
|
301 |
+
preg_match_all('/## WP Defender(.*?)## WP Defender - End ##/s', $htConfig, $matches);
|
302 |
+
if ( is_array( $matches ) && count( $matches ) > 0 ) {
|
303 |
+
$htConfig = str_replace( implode( '', $matches[0] ), '', $htConfig );
|
304 |
+
} else {
|
305 |
+
$htConfig = str_replace( implode( '', $default ), '', $htConfig );
|
306 |
+
}
|
307 |
+
$htConfig = trim( $htConfig );
|
308 |
+
file_put_contents( $htPath, $htConfig, LOCK_EX );
|
309 |
+
}
|
310 |
+
}
|
311 |
+
|
312 |
/**
|
313 |
* @return bool|\WP_Error
|
314 |
*/
|
321 |
$ret = $this->unProtectIncludeDir();
|
322 |
if ( is_wp_error( $ret ) ) {
|
323 |
return $ret;
|
324 |
+
}
|
325 |
+
$ret = $this->unProtectUploadDir();
|
326 |
+
if ( is_wp_error( $ret ) ) {
|
327 |
+
return $ret;
|
328 |
+
}
|
329 |
+
|
330 |
return true;
|
331 |
}
|
332 |
|
app/module/hardener/view/rules/protect-information.php
CHANGED
@@ -68,7 +68,12 @@
|
|
68 |
</div>
|
69 |
<div class="<?php echo ( $setting->active_server != 'nginx' ) ? 'wd-hide' : ''; ?> hardener-information hardener-information-nginx">
|
70 |
<?php
|
71 |
-
|
|
|
|
|
|
|
|
|
|
|
72 |
|
73 |
$rules = "# Turn off directory indexing
|
74 |
autoindex off;
|
68 |
</div>
|
69 |
<div class="<?php echo ( $setting->active_server != 'nginx' ) ? 'wd-hide' : ''; ?> hardener-information hardener-information-nginx">
|
70 |
<?php
|
71 |
+
if ( DIRECTORY_SEPARATOR == '\\' ) {
|
72 |
+
//Windows
|
73 |
+
$wp_content = str_replace( ABSPATH, '', WP_CONTENT_DIR );
|
74 |
+
} else {
|
75 |
+
$wp_content = str_replace( $_SERVER['DOCUMENT_ROOT'], '', WP_CONTENT_DIR );
|
76 |
+
}
|
77 |
|
78 |
$rules = "# Turn off directory indexing
|
79 |
autoindex off;
|
app/module/ip-lockout/component/login-protection-api.php
CHANGED
@@ -398,6 +398,44 @@ class Login_Protection_Api extends Component {
|
|
398 |
return false;
|
399 |
}
|
400 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
401 |
public static function maybeSendNotification( $type, $model, $settings ) {
|
402 |
$lastSentKey = $type == 'login' ? 'lastSentLockout' : 'lastSent404';
|
403 |
$stopTimeKey = $type == 'login' ? 'stopTimeLockout' : 'stopTime404';
|
398 |
return false;
|
399 |
}
|
400 |
|
401 |
+
/**
|
402 |
+
* Check if IP is from Bing, base on https://www.bing.com/webmaster/help/how-to-verify-bingbot-3905dc26
|
403 |
+
*
|
404 |
+
* @param $ip
|
405 |
+
*/
|
406 |
+
public static function isBingIP( $ip ) {
|
407 |
+
$hostname = gethostbyaddr( $ip );
|
408 |
+
if ( preg_match( '/\.msnbot|msn\.com$/i', $hostname ) ) {
|
409 |
+
$hosts = gethostbynamel( $hostname );
|
410 |
+
//check if this match the oringal ip
|
411 |
+
foreach ( $hosts as $host ) {
|
412 |
+
if ( $ip == $host ) {
|
413 |
+
return true;
|
414 |
+
}
|
415 |
+
}
|
416 |
+
}
|
417 |
+
return false;
|
418 |
+
}
|
419 |
+
|
420 |
+
public static function isBingUA( $userAgent = '' ) {
|
421 |
+
if ( empty( $userAgent ) ) {
|
422 |
+
$userAgent = isset( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT'] : null;
|
423 |
+
}
|
424 |
+
if ( function_exists( 'mb_strtolower' ) ) {
|
425 |
+
$userAgent = mb_strtolower( $userAgent, 'UTF-8' );
|
426 |
+
} else {
|
427 |
+
$userAgent = strtolower( $userAgent );
|
428 |
+
}
|
429 |
+
//MSN Bot Useragent https://www.bing.com/webmaster/help/which-crawlers-does-bing-use-8c184ec0
|
430 |
+
$msnUA = "Bingbot|MSNBot|MSNBot-Media|AdIdxBot|BingPreview";
|
431 |
+
|
432 |
+
if ( preg_match( '/' . $msnUA . '/i', $userAgent ) ) {
|
433 |
+
return true;
|
434 |
+
}
|
435 |
+
|
436 |
+
return false;
|
437 |
+
}
|
438 |
+
|
439 |
public static function maybeSendNotification( $type, $model, $settings ) {
|
440 |
$lastSentKey = $type == 'login' ? 'lastSentLockout' : 'lastSent404';
|
441 |
$stopTimeKey = $type == 'login' ? 'stopTimeLockout' : 'stopTime404';
|
app/module/ip-lockout/controller/main.php
CHANGED
@@ -230,6 +230,8 @@ class Main extends Controller {
|
|
230 |
if ( $settings->isWhitelist( $ip ) ) {
|
231 |
return;
|
232 |
} elseif ( $settings->isBlacklist( $ip ) ) {
|
|
|
|
|
233 |
$this->renderPartial( 'locked', array(
|
234 |
'message' => $settings->ip_lockout_message
|
235 |
) );
|
@@ -341,6 +343,11 @@ class Main extends Controller {
|
|
341 |
return;
|
342 |
}
|
343 |
|
|
|
|
|
|
|
|
|
|
|
344 |
if ( $settings->login_protection ) {
|
345 |
$this->add_action( 'wp_login_failed', 'recordFailLogin', 9999 );
|
346 |
$this->add_filter( 'authenticate', 'showAttemptLeft', 9999, 3 );
|
@@ -718,6 +725,7 @@ class Main extends Controller {
|
|
718 |
if ( $this->hasMethod( 'scheduleReport' ) ) {
|
719 |
$this->scheduleReport();
|
720 |
}
|
|
|
721 |
wp_send_json_success( $res );
|
722 |
} else {
|
723 |
wp_send_json_error( array(
|
230 |
if ( $settings->isWhitelist( $ip ) ) {
|
231 |
return;
|
232 |
} elseif ( $settings->isBlacklist( $ip ) ) {
|
233 |
+
header( 'HTTP/1.0 403 Forbidden' );
|
234 |
+
header( 'Cache-Control: private' );
|
235 |
$this->renderPartial( 'locked', array(
|
236 |
'message' => $settings->ip_lockout_message
|
237 |
) );
|
343 |
return;
|
344 |
}
|
345 |
|
346 |
+
//or bing
|
347 |
+
if ( Login_Protection_Api::isBingUA() && Login_Protection_Api::isBingIP( $ip ) ) {
|
348 |
+
return;
|
349 |
+
}
|
350 |
+
|
351 |
if ( $settings->login_protection ) {
|
352 |
$this->add_action( 'wp_login_failed', 'recordFailLogin', 9999 );
|
353 |
$this->add_filter( 'authenticate', 'showAttemptLeft', 9999, 3 );
|
725 |
if ( $this->hasMethod( 'scheduleReport' ) ) {
|
726 |
$this->scheduleReport();
|
727 |
}
|
728 |
+
Utils::instance()->submitStatsToDev();
|
729 |
wp_send_json_success( $res );
|
730 |
} else {
|
731 |
wp_send_json_error( array(
|
app/module/ip-lockout/view/emails/404-lockout.php
CHANGED
@@ -457,7 +457,7 @@
|
|
457 |
<?php $setting = \WP_Defender\Module\IP_Lockout\Model\Settings::instance() ?>
|
458 |
<?php $utils = \WP_Defender\Behavior\Utils::instance() ?>
|
459 |
<p style="Margin: 0; Margin-bottom: 0; color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 15px; font-weight: normal; line-height: 26px; margin: 0; margin-bottom: 0; padding: 0 0 24px; text-align: left;">
|
460 |
-
<?php printf( __( "We've just locked out the host <strong>%s</strong> from %s due to more than <strong>%s</strong> 404 requests for the file <strong>%s</strong>. They have been locked out for <strong>%s seconds.</strong>", "defender-security" ), $ip,
|
461 |
</p>
|
462 |
<p style="Margin: 0; Margin-bottom: 0; color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 15px; font-weight: normal; line-height: 26px; margin: 0; margin-bottom: 0; padding: 0 0 24px; text-align: left;">
|
463 |
<?php printf( __( "You can view the full lockout logs <a href=\"%s\">here</a>", "defender-security" ), network_admin_url( "admin.php?page=wdf-ip-lockout&view=logs" ) ) ?>
|
457 |
<?php $setting = \WP_Defender\Module\IP_Lockout\Model\Settings::instance() ?>
|
458 |
<?php $utils = \WP_Defender\Behavior\Utils::instance() ?>
|
459 |
<p style="Margin: 0; Margin-bottom: 0; color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 15px; font-weight: normal; line-height: 26px; margin: 0; margin-bottom: 0; padding: 0 0 24px; text-align: left;">
|
460 |
+
<?php printf( __( "We've just locked out the host <strong>%s</strong> from %s due to more than <strong>%s</strong> 404 requests for the file <strong>%s</strong>. They have been locked out for <strong>%s seconds.</strong>", "defender-security" ), $ip, network_site_url(), $setting->detect_404_threshold, $uri, $setting->detect_404_lockout_duration ) ?>
|
461 |
</p>
|
462 |
<p style="Margin: 0; Margin-bottom: 0; color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 15px; font-weight: normal; line-height: 26px; margin: 0; margin-bottom: 0; padding: 0 0 24px; text-align: left;">
|
463 |
<?php printf( __( "You can view the full lockout logs <a href=\"%s\">here</a>", "defender-security" ), network_admin_url( "admin.php?page=wdf-ip-lockout&view=logs" ) ) ?>
|
app/module/ip-lockout/view/emails/login-lockout.php
CHANGED
@@ -458,7 +458,7 @@
|
|
458 |
<p style="Margin: 0; Margin-bottom: 0; color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 15px; font-weight: normal; line-height: 26px; margin: 0; margin-bottom: 0; padding: 0 0 24px; text-align: left;">
|
459 |
<?php
|
460 |
$lockout_duration = $setting->login_protection_lockout_ban == true ? __( "They have been banned permanently.", "defender-security" ) : sprintf( __( "They have been locked out for <strong>%s seconds.</strong>", "defender-security" ), $setting->login_protection_lockout_duration );
|
461 |
-
printf( __( "We've just locked out the host <strong>%s</strong> from %s due to more than <strong>%s</strong> failed login attempts. %s", "defender-security" ), $ip,
|
462 |
) ?>
|
463 |
</p>
|
464 |
<p style="Margin: 0; Margin-bottom: 0; color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 15px; font-weight: normal; line-height: 26px; margin: 0; margin-bottom: 0; padding: 0 0 24px; text-align: left;">
|
458 |
<p style="Margin: 0; Margin-bottom: 0; color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 15px; font-weight: normal; line-height: 26px; margin: 0; margin-bottom: 0; padding: 0 0 24px; text-align: left;">
|
459 |
<?php
|
460 |
$lockout_duration = $setting->login_protection_lockout_ban == true ? __( "They have been banned permanently.", "defender-security" ) : sprintf( __( "They have been locked out for <strong>%s seconds.</strong>", "defender-security" ), $setting->login_protection_lockout_duration );
|
461 |
+
printf( __( "We've just locked out the host <strong>%s</strong> from %s due to more than <strong>%s</strong> failed login attempts. %s", "defender-security" ), $ip, network_site_url(), $setting->login_protection_login_attempt, $lockout_duration
|
462 |
) ?>
|
463 |
</p>
|
464 |
<p style="Margin: 0; Margin-bottom: 0; color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 15px; font-weight: normal; line-height: 26px; margin: 0; margin-bottom: 0; padding: 0 0 24px; text-align: left;">
|
app/module/ip-lockout/view/emails/login-username-ban.php
CHANGED
@@ -458,7 +458,7 @@
|
|
458 |
<p style="Margin: 0; Margin-bottom: 0; color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 15px; font-weight: normal; line-height: 26px; margin: 0; margin-bottom: 0; padding: 0 0 24px; text-align: left;">
|
459 |
<?php
|
460 |
$lockout_duration = $setting->login_protection_lockout_ban == true ? __( "They have been banned permanently.", "defender-security" ) : sprintf( __( "They have been locked out for <strong>%s seconds.</strong>", "defender-security" ), $setting->login_protection_lockout_duration );
|
461 |
-
printf( __( "We've just locked out the host <strong>%s</strong> from %s due to attempting to login with a banned username. They have been banned permanently.", "defender-security" ), $ip,
|
462 |
</p>
|
463 |
<p style="Margin: 0; Margin-bottom: 0; color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 15px; font-weight: normal; line-height: 26px; margin: 0; margin-bottom: 0; padding: 0 0 24px; text-align: left;">
|
464 |
<?php printf( __( "You can view the full lockout logs <a href=\"%s\">here</a>", "defender-security" ), network_admin_url( "admin.php?page=wdf-ip-lockout&view=logs" ) ) ?>
|
458 |
<p style="Margin: 0; Margin-bottom: 0; color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 15px; font-weight: normal; line-height: 26px; margin: 0; margin-bottom: 0; padding: 0 0 24px; text-align: left;">
|
459 |
<?php
|
460 |
$lockout_duration = $setting->login_protection_lockout_ban == true ? __( "They have been banned permanently.", "defender-security" ) : sprintf( __( "They have been locked out for <strong>%s seconds.</strong>", "defender-security" ), $setting->login_protection_lockout_duration );
|
461 |
+
printf( __( "We've just locked out the host <strong>%s</strong> from %s due to attempting to login with a banned username. They have been banned permanently.", "defender-security" ), $ip, network_site_url() ) ?>
|
462 |
</p>
|
463 |
<p style="Margin: 0; Margin-bottom: 0; color: #555555; font-family: Helvetica, Arial, sans-serif; font-size: 15px; font-weight: normal; line-height: 26px; margin: 0; margin-bottom: 0; padding: 0 0 24px; text-align: left;">
|
464 |
<?php printf( __( "You can view the full lockout logs <a href=\"%s\">here</a>", "defender-security" ), network_admin_url( "admin.php?page=wdf-ip-lockout&view=logs" ) ) ?>
|
app/module/ip-lockout/view/locked.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
<meta charset="UTF-8">
|
5 |
<meta name="viewport" content="width=device-width, initial-scale=1">
|
6 |
<meta http-equiv="Cache-control" content="max-age=0">
|
7 |
-
<title><?php
|
8 |
<link rel="stylesheet"
|
9 |
href="https://fonts.googleapis.com/css?family=Roboto+Condensed:400,700|Roboto:400,500,300,300italic">
|
10 |
<style type="text/css">
|
4 |
<meta charset="UTF-8">
|
5 |
<meta name="viewport" content="width=device-width, initial-scale=1">
|
6 |
<meta http-equiv="Cache-control" content="max-age=0">
|
7 |
+
<title><?php bloginfo( 'name' ) ?></title>
|
8 |
<link rel="stylesheet"
|
9 |
href="https://fonts.googleapis.com/css?family=Roboto+Condensed:400,700|Roboto:400,500,300,300italic">
|
10 |
<style type="text/css">
|
app/module/ip-lockout/view/notification/report-free.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
<div class="box-title">
|
3 |
<h3><?php esc_html_e( "Reporting", "defender-security" ) ?></h3>
|
4 |
<a class="button button-green button-small"
|
5 |
-
href="
|
6 |
</div>
|
7 |
<div class="box-content">
|
8 |
<form method="post" id="settings-frm" class="ip-frm">
|
@@ -76,7 +76,7 @@
|
|
76 |
</form>
|
77 |
<div class="presale-text">
|
78 |
<div>
|
79 |
-
<?php printf( __( "Schedule automated file scanning and email reporting for all your websites. This feature is included in a WPMU DEV membership along with 100+ plugins & themes, 24/7 support and lots of handy site management tools – <a href=\"%s\">Try it all FREE today!</a>", "defender-security" ),
|
80 |
</div>
|
81 |
</div>
|
82 |
</div>
|
2 |
<div class="box-title">
|
3 |
<h3><?php esc_html_e( "Reporting", "defender-security" ) ?></h3>
|
4 |
<a class="button button-green button-small"
|
5 |
+
href="<?php echo \WP_Defender\Behavior\Utils::instance()->campaignURL('defender_iplockouts_reports_upgrade_button') ?>" target="_blank"><?php _e( "Upgrade to Pro", "defender-security" ) ?></a>
|
6 |
</div>
|
7 |
<div class="box-content">
|
8 |
<form method="post" id="settings-frm" class="ip-frm">
|
76 |
</form>
|
77 |
<div class="presale-text">
|
78 |
<div>
|
79 |
+
<?php printf( __( "Schedule automated file scanning and email reporting for all your websites. This feature is included in a WPMU DEV membership along with 100+ plugins & themes, 24/7 support and lots of handy site management tools – <a target='_blank' href=\"%s\">Try it all FREE today!</a>", "defender-security" ), \WP_Defender\Behavior\Utils::instance()->campaignURL('defender_iplockouts_reports_upsell_link') ) ?>
|
80 |
</div>
|
81 |
</div>
|
82 |
</div>
|
app/module/scan/behavior/core-result.php
CHANGED
@@ -78,7 +78,7 @@ class Core_Result extends Behavior {
|
|
78 |
|
79 |
return true;
|
80 |
} elseif ( $raw['type'] == 'modified' ) {
|
81 |
-
return new \WP_Error( Error_Code::INVALID, __( "This file can't
|
82 |
} elseif ( $raw['type'] == 'dir' ) {
|
83 |
$res = $this->deleteFolder( $raw['file'] );
|
84 |
if ( is_wp_error( $res ) ) {
|
@@ -196,14 +196,15 @@ class Core_Result extends Behavior {
|
|
196 |
<button type="button" class="button button-small delete-mitem button-grey">
|
197 |
<?php _e( "Delete", "defender-security" ) ?></button>
|
198 |
<div class="confirm-box wd-hide">
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
|
|
207 |
</div>
|
208 |
</form>
|
209 |
<?php elseif ( $raw['type'] == 'modified' ): ?>
|
78 |
|
79 |
return true;
|
80 |
} elseif ( $raw['type'] == 'modified' ) {
|
81 |
+
return new \WP_Error( Error_Code::INVALID, __( "This file can't be removed", "defender-security" ) );
|
82 |
} elseif ( $raw['type'] == 'dir' ) {
|
83 |
$res = $this->deleteFolder( $raw['file'] );
|
84 |
if ( is_wp_error( $res ) ) {
|
196 |
<button type="button" class="button button-small delete-mitem button-grey">
|
197 |
<?php _e( "Delete", "defender-security" ) ?></button>
|
198 |
<div class="confirm-box wd-hide">
|
199 |
+
<span><?php _e( "This will permanently remove the selected file/folder. Are you sure you want to continue?", "defender-security" ) ?></span>
|
200 |
+
<div>
|
201 |
+
<button type="submit" class="button button-small button-grey">
|
202 |
+
<?php _e( "Yes", "defender-security" ) ?>
|
203 |
+
</button>
|
204 |
+
<button type="button" class="button button-small button-secondary">
|
205 |
+
<?php _e( "No", "defender-security" ) ?>
|
206 |
+
</button>
|
207 |
+
</div>
|
208 |
</div>
|
209 |
</form>
|
210 |
<?php elseif ( $raw['type'] == 'modified' ): ?>
|
app/module/scan/behavior/core-scan.php
CHANGED
@@ -34,11 +34,10 @@ class Core_Scan extends Behavior {
|
|
34 |
$item->parentId = $model->id;
|
35 |
$item->type = 'core';
|
36 |
$item->status = $status;
|
37 |
-
$relPath
|
38 |
-
$current_path
|
39 |
if ( is_file( $current ) ) {
|
40 |
//check if this is core or not
|
41 |
-
|
42 |
if ( isset( $checksums[ $relPath ] ) && strcmp( md5_file( $current ), $checksums[ $relPath ] ) !== 0 ) {
|
43 |
$item->raw = array(
|
44 |
'type' => 'modified',
|
@@ -46,6 +45,10 @@ class Core_Scan extends Behavior {
|
|
46 |
);
|
47 |
$id = $item->save();
|
48 |
} elseif ( ! isset( $checksums[ $relPath ] ) ) {
|
|
|
|
|
|
|
|
|
49 |
$item->raw = array(
|
50 |
'type' => 'unknown',
|
51 |
'file' => $current_path
|
@@ -53,6 +56,13 @@ class Core_Scan extends Behavior {
|
|
53 |
$id = $item->save();
|
54 |
}
|
55 |
} elseif ( is_dir( $current ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
//check if this empty then do nothing
|
57 |
$files = File_Helper::findFiles( $current, true, false );
|
58 |
if ( count( $files ) ) {
|
34 |
$item->parentId = $model->id;
|
35 |
$item->type = 'core';
|
36 |
$item->status = $status;
|
37 |
+
$relPath = Scan_Api::convertToUnixPath( $current ); //Windows File path fix set outside to be used in both file and dir checks
|
38 |
+
$current_path = Scan_Api::convertToWindowsAbsPath( $current ); //Windows needs fixing for the paths
|
39 |
if ( is_file( $current ) ) {
|
40 |
//check if this is core or not
|
|
|
41 |
if ( isset( $checksums[ $relPath ] ) && strcmp( md5_file( $current ), $checksums[ $relPath ] ) !== 0 ) {
|
42 |
$item->raw = array(
|
43 |
'type' => 'modified',
|
45 |
);
|
46 |
$id = $item->save();
|
47 |
} elseif ( ! isset( $checksums[ $relPath ] ) ) {
|
48 |
+
//we need to check if this is wp-config, a hot fix for windows
|
49 |
+
if ( DIRECTORY_SEPARATOR == '\\' && $relPath == 'wp-config.php' ) {
|
50 |
+
return null;
|
51 |
+
}
|
52 |
$item->raw = array(
|
53 |
'type' => 'unknown',
|
54 |
'file' => $current_path
|
56 |
$id = $item->save();
|
57 |
}
|
58 |
} elseif ( is_dir( $current ) ) {
|
59 |
+
if ( in_array( $relPath, array(
|
60 |
+
'wp-content',
|
61 |
+
'wp-admin',
|
62 |
+
'wp-includes'
|
63 |
+
) ) ) {
|
64 |
+
return null;
|
65 |
+
}
|
66 |
//check if this empty then do nothing
|
67 |
$files = File_Helper::findFiles( $current, true, false );
|
68 |
if ( count( $files ) ) {
|
app/module/scan/behavior/scan.php
CHANGED
@@ -132,7 +132,7 @@ class Scan extends Behavior {
|
|
132 |
<?php if ( Utils::instance()->getAPIKey() ): ?>
|
133 |
<?php echo $model->getCount( 'vuln' ) == 0 ? ' <i class="def-icon icon-tick"></i>' : '<span class="def-tag tag-error">' . $model->getCount( 'vuln' ) . '</span>' ?>
|
134 |
<?php else: ?>
|
135 |
-
<a href="
|
136 |
tooltip="<?php esc_attr_e( "Try Defender Pro free today", "defender-security" ) ?>">
|
137 |
<?php _e( "Pro Feature", "defender-security" ) ?>
|
138 |
</a>
|
@@ -147,7 +147,7 @@ class Scan extends Behavior {
|
|
147 |
<?php if ( Utils::instance()->getAPIKey() ): ?>
|
148 |
<?php echo $model->getCount( 'content' ) == 0 ? ' <i class="def-icon icon-tick"></i>' : '<span class="def-tag tag-error">' . $model->getCount( 'content' ) . '</span>' ?>
|
149 |
<?php else: ?>
|
150 |
-
<a href="
|
151 |
tooltip="<?php esc_attr_e( "Try Defender Pro free today", "defender-security" ) ?>">
|
152 |
<?php _e( "Pro Feature", "defender-security" ) ?>
|
153 |
</a>
|
132 |
<?php if ( Utils::instance()->getAPIKey() ): ?>
|
133 |
<?php echo $model->getCount( 'vuln' ) == 0 ? ' <i class="def-icon icon-tick"></i>' : '<span class="def-tag tag-error">' . $model->getCount( 'vuln' ) . '</span>' ?>
|
134 |
<?php else: ?>
|
135 |
+
<a href="<?php echo Utils::instance()->campaignURL('defender_dash_filescan_pro_tag') ?>" target="_blank" class="button button-pre button-small"
|
136 |
tooltip="<?php esc_attr_e( "Try Defender Pro free today", "defender-security" ) ?>">
|
137 |
<?php _e( "Pro Feature", "defender-security" ) ?>
|
138 |
</a>
|
147 |
<?php if ( Utils::instance()->getAPIKey() ): ?>
|
148 |
<?php echo $model->getCount( 'content' ) == 0 ? ' <i class="def-icon icon-tick"></i>' : '<span class="def-tag tag-error">' . $model->getCount( 'content' ) . '</span>' ?>
|
149 |
<?php else: ?>
|
150 |
+
<a href="<?php echo Utils::instance()->campaignURL('defender_dash_filescan_pro_tag') ?>" target="_blank" class="button button-pre button-small"
|
151 |
tooltip="<?php esc_attr_e( "Try Defender Pro free today", "defender-security" ) ?>">
|
152 |
<?php _e( "Pro Feature", "defender-security" ) ?>
|
153 |
</a>
|
app/module/scan/controller/main.php
CHANGED
@@ -378,7 +378,7 @@ class Main extends \WP_Defender\Controller {
|
|
378 |
} else {
|
379 |
wp_send_json_success( array(
|
380 |
'mid' => 'mid-' . $model->id,
|
381 |
-
'message' => __( "This item has been
|
382 |
'counts' => $this->getIssuesAndIgnoredCounts( $model->parentId )
|
383 |
) );
|
384 |
}
|
378 |
} else {
|
379 |
wp_send_json_success( array(
|
380 |
'mid' => 'mid-' . $model->id,
|
381 |
+
'message' => __( "This item has been permanently removed", "defender-security" ),
|
382 |
'counts' => $this->getIssuesAndIgnoredCounts( $model->parentId )
|
383 |
) );
|
384 |
}
|
app/module/scan/view/automation-free.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
<div class="box-title">
|
3 |
<h3><?php _e( "Reporting", "defender-security" ) ?></h3>
|
4 |
<a class="button button-green button-small"
|
5 |
-
href="
|
6 |
</div>
|
7 |
<div class="box-content">
|
8 |
<form method="post" class="">
|
@@ -60,7 +60,7 @@
|
|
60 |
</form>
|
61 |
<div class="presale-text">
|
62 |
<div>
|
63 |
-
<?php printf( __( "Schedule automated file scanning and email reporting for all your websites. This feature is included in a WPMU DEV membership along with 100+ plugins & themes, 24/7 support and lots of handy site management tools – <a href=\"%s\">Try it all FREE today!</a>", "defender-security" ),
|
64 |
</div>
|
65 |
</div>
|
66 |
</div>
|
2 |
<div class="box-title">
|
3 |
<h3><?php _e( "Reporting", "defender-security" ) ?></h3>
|
4 |
<a class="button button-green button-small"
|
5 |
+
href="<?php echo \WP_Defender\Behavior\Utils::instance()->campaignURL('defender_filescanning_reports_upgrade_button') ?>" target="_blank"><?php _e( "Upgrade to Pro", "defender-security" ) ?></a>
|
6 |
</div>
|
7 |
<div class="box-content">
|
8 |
<form method="post" class="">
|
60 |
</form>
|
61 |
<div class="presale-text">
|
62 |
<div>
|
63 |
+
<?php printf( __( "Schedule automated file scanning and email reporting for all your websites. This feature is included in a WPMU DEV membership along with 100+ plugins & themes, 24/7 support and lots of handy site management tools – <a target='_blank' href=\"%s\">Try it all FREE today!</a>", "defender-security" ), \WP_Defender\Behavior\Utils::instance()->campaignURL('defender_filescanning_reports_upsell_link') ) ?>
|
64 |
</div>
|
65 |
</div>
|
66 |
</div>
|
app/module/scan/view/layouts/layout.php
CHANGED
@@ -56,7 +56,7 @@
|
|
56 |
<?php if ( \WP_Defender\Behavior\Utils::instance()->getAPIKey() ): ?>
|
57 |
<?php echo $model->getCount( 'vuln' ) == 0 ? ' <i class="def-icon icon-tick"></i>' : '<span class="def-tag tag-error">' . $model->getCount( 'vuln' ) . '</span>' ?>
|
58 |
<?php else: ?>
|
59 |
-
<a href="
|
60 |
class="button button-pre button-small"
|
61 |
tooltip="<?php esc_attr_e( "Try Defender Pro free today", "defender-security" ) ?>">
|
62 |
<?php _e( "Pro Feature", "defender-security" ) ?>
|
@@ -72,7 +72,7 @@
|
|
72 |
<?php if ( \WP_Defender\Behavior\Utils::instance()->getAPIKey() ): ?>
|
73 |
<?php echo $model->getCount( 'content' ) == 0 ? ' <i class="def-icon icon-tick"></i>' : '<span class="def-tag tag-error">' . $model->getCount( 'content' ) . '</span>' ?>
|
74 |
<?php else: ?>
|
75 |
-
<a href="
|
76 |
class="button button-pre button-small"
|
77 |
tooltip="<?php esc_attr_e( "Try Defender Pro free today", "defender-security" ) ?>" >
|
78 |
<?php _e( "Pro Feature", "defender-security" ) ?>
|
56 |
<?php if ( \WP_Defender\Behavior\Utils::instance()->getAPIKey() ): ?>
|
57 |
<?php echo $model->getCount( 'vuln' ) == 0 ? ' <i class="def-icon icon-tick"></i>' : '<span class="def-tag tag-error">' . $model->getCount( 'vuln' ) . '</span>' ?>
|
58 |
<?php else: ?>
|
59 |
+
<a href="<?php echo \WP_Defender\Behavior\Utils::instance()->campaignURL('defender_filescanning_summary_pro_tag') ?>" target="_blank"
|
60 |
class="button button-pre button-small"
|
61 |
tooltip="<?php esc_attr_e( "Try Defender Pro free today", "defender-security" ) ?>">
|
62 |
<?php _e( "Pro Feature", "defender-security" ) ?>
|
72 |
<?php if ( \WP_Defender\Behavior\Utils::instance()->getAPIKey() ): ?>
|
73 |
<?php echo $model->getCount( 'content' ) == 0 ? ' <i class="def-icon icon-tick"></i>' : '<span class="def-tag tag-error">' . $model->getCount( 'content' ) . '</span>' ?>
|
74 |
<?php else: ?>
|
75 |
+
<a href="<?php echo \WP_Defender\Behavior\Utils::instance()->campaignURL('defender_filescanning_summary_pro_tag') ?>" target="_blank"
|
76 |
class="button button-pre button-small"
|
77 |
tooltip="<?php esc_attr_e( "Try Defender Pro free today", "defender-security" ) ?>" >
|
78 |
<?php _e( "Pro Feature", "defender-security" ) ?>
|
app/module/scan/view/scanning.php
CHANGED
@@ -47,7 +47,7 @@
|
|
47 |
<div>
|
48 |
<?php printf( __( "Did you know the Pro version of Defender comes with advanced full code scanning and automated reporting?
|
49 |
Get enhanced security protection as part of a WPMU DEV membership including 100+ plugins & themes, 24/7
|
50 |
-
support and lots of handy site management tools – <a href=\"%s\">Try Defender Pro today for FREE</a>", "defender-security" ),
|
51 |
</div>
|
52 |
</div>
|
53 |
<?php endif; ?>
|
47 |
<div>
|
48 |
<?php printf( __( "Did you know the Pro version of Defender comes with advanced full code scanning and automated reporting?
|
49 |
Get enhanced security protection as part of a WPMU DEV membership including 100+ plugins & themes, 24/7
|
50 |
+
support and lots of handy site management tools – <a target='_blank' href=\"%s\">Try Defender Pro today for FREE</a>", "defender-security" ), \WP_Defender\Behavior\Utils::instance()->campaignURL('defender_filescanning_modal_inprogress_upsell_link') ) ?>
|
51 |
</div>
|
52 |
</div>
|
53 |
<?php endif; ?>
|
app/module/scan/view/setting-free.php
CHANGED
@@ -25,7 +25,7 @@
|
|
25 |
<div class="clear mline"></div>
|
26 |
<div class="feature-pre-require">
|
27 |
<div></div>
|
28 |
-
<a href="
|
29 |
tooltip="<?php esc_attr_e( "Try Defender Pro free today", "defender-security" ) ?>" >
|
30 |
<?php _e( "Pro Feature", "defender-security" ) ?></a>
|
31 |
<span class="toggle" aria-hidden="true" role="presentation">
|
@@ -40,7 +40,7 @@
|
|
40 |
<div class="clear mline"></div>
|
41 |
<div class="feature-pre-require">
|
42 |
<div></div>
|
43 |
-
<a href="
|
44 |
tooltip="<?php esc_attr_e( "Try Defender Pro free today", "defender-security" ) ?>">
|
45 |
<?php _e( "Pro Feature", "defender-security" ) ?></a>
|
46 |
<span class="toggle" aria-hidden="true" role="presentation">
|
@@ -56,8 +56,8 @@
|
|
56 |
<div class="clear"></div>
|
57 |
<div class="presale-text">
|
58 |
<div>
|
59 |
-
<?php printf( __( "Defenders scans through every line of code on your website, searching for anything suspicious. This feature is included when you join WPMU DEV, along with 100+ plugins and themes, 24/7 support and lots of handy site management tools. – <a href=\"%s\" role='button'>Try it all FREE today!
|
60 |
-
</a>", "defender-security" ),
|
61 |
</div>
|
62 |
</div>
|
63 |
</div>
|
25 |
<div class="clear mline"></div>
|
26 |
<div class="feature-pre-require">
|
27 |
<div></div>
|
28 |
+
<a href="<?php echo \WP_Defender\Behavior\Utils::instance()->campaignURL('defender_filescanning_settings_pro_tag') ?>" role="button" target="_blank" class="button button-small button-pre"
|
29 |
tooltip="<?php esc_attr_e( "Try Defender Pro free today", "defender-security" ) ?>" >
|
30 |
<?php _e( "Pro Feature", "defender-security" ) ?></a>
|
31 |
<span class="toggle" aria-hidden="true" role="presentation">
|
40 |
<div class="clear mline"></div>
|
41 |
<div class="feature-pre-require">
|
42 |
<div></div>
|
43 |
+
<a href="<?php echo \WP_Defender\Behavior\Utils::instance()->campaignURL('defender_filescanning_settings_pro_tag') ?>" role="button" target="_blank" class="button button-small button-pre"
|
44 |
tooltip="<?php esc_attr_e( "Try Defender Pro free today", "defender-security" ) ?>">
|
45 |
<?php _e( "Pro Feature", "defender-security" ) ?></a>
|
46 |
<span class="toggle" aria-hidden="true" role="presentation">
|
56 |
<div class="clear"></div>
|
57 |
<div class="presale-text">
|
58 |
<div>
|
59 |
+
<?php printf( __( "Defenders scans through every line of code on your website, searching for anything suspicious. This feature is included when you join WPMU DEV, along with 100+ plugins and themes, 24/7 support and lots of handy site management tools. – <a href=\"%s\" target='_blank' role='button'>Try it all FREE today!
|
60 |
+
</a>", "defender-security" ), \WP_Defender\Behavior\Utils::instance()->campaignURL('defender_filescanning_settings_upsell_link') ) ?>
|
61 |
</div>
|
62 |
</div>
|
63 |
</div>
|
app/view/activator.php
CHANGED
@@ -15,7 +15,7 @@
|
|
15 |
_e( "Automatic File Scans & Reporting", "defender-security" );
|
16 |
} ?></strong>
|
17 |
<p class="sub">
|
18 |
-
<?php _e( "Scan your website for file changes, vulnerabilities and injected code and get
|
19 |
</p>
|
20 |
</div>
|
21 |
<div class="column is-2">
|
15 |
_e( "Automatic File Scans & Reporting", "defender-security" );
|
16 |
} ?></strong>
|
17 |
<p class="sub">
|
18 |
+
<?php _e( "Scan your website for file changes, vulnerabilities and injected code and get notified about anything suspicious.", "defender-security" ) ?>
|
19 |
</p>
|
20 |
</div>
|
21 |
<div class="column is-2">
|
app/view/dashboard.php
CHANGED
@@ -90,8 +90,9 @@
|
|
90 |
<div class="line">
|
91 |
<?php _e( "Get all this as part of a WPMU DEV Membership, and the best part is you can try everything absolutely free.", "defender-security" ) ?>
|
92 |
</div>
|
93 |
-
<a href="
|
94 |
-
class="button button-green"
|
|
|
95 |
</div>
|
96 |
</div>
|
97 |
<?php endif; ?>
|
90 |
<div class="line">
|
91 |
<?php _e( "Get all this as part of a WPMU DEV Membership, and the best part is you can try everything absolutely free.", "defender-security" ) ?>
|
92 |
</div>
|
93 |
+
<a href="#pro-feature" rel="dialog"
|
94 |
+
class="button button-green">
|
95 |
+
<?php _e( "FIND OUT MORE", "defender-security" ) ?></a>
|
96 |
</div>
|
97 |
</div>
|
98 |
<?php endif; ?>
|
assets/css/styles.css
CHANGED
@@ -352,7 +352,7 @@
|
|
352 |
z-index: 3;
|
353 |
opacity: 1;
|
354 |
position: absolute;
|
355 |
-
|
356 |
right: 0; }
|
357 |
.wpmud .presale-text {
|
358 |
overflow: hidden;
|
@@ -725,14 +725,14 @@
|
|
725 |
margin-left: 25%; }
|
726 |
.columns.is-mobile > .wp-defender .column.is-1 {
|
727 |
flex: none;
|
728 |
-
width: 8.
|
729 |
.columns.is-mobile > .wp-defender .column.is-offset-1 {
|
730 |
-
margin-left: 8.
|
731 |
.columns.is-mobile > .wp-defender .column.is-2 {
|
732 |
flex: none;
|
733 |
-
width: 16.
|
734 |
.columns.is-mobile > .wp-defender .column.is-offset-2 {
|
735 |
-
margin-left: 16.
|
736 |
.columns.is-mobile > .wp-defender .column.is-3 {
|
737 |
flex: none;
|
738 |
width: 25%; }
|
@@ -740,14 +740,14 @@
|
|
740 |
margin-left: 25%; }
|
741 |
.columns.is-mobile > .wp-defender .column.is-4 {
|
742 |
flex: none;
|
743 |
-
width: 33.
|
744 |
.columns.is-mobile > .wp-defender .column.is-offset-4 {
|
745 |
-
margin-left: 33.
|
746 |
.columns.is-mobile > .wp-defender .column.is-5 {
|
747 |
flex: none;
|
748 |
-
width: 41.
|
749 |
.columns.is-mobile > .wp-defender .column.is-offset-5 {
|
750 |
-
margin-left: 41.
|
751 |
.columns.is-mobile > .wp-defender .column.is-6 {
|
752 |
flex: none;
|
753 |
width: 50%; }
|
@@ -755,14 +755,14 @@
|
|
755 |
margin-left: 50%; }
|
756 |
.columns.is-mobile > .wp-defender .column.is-7 {
|
757 |
flex: none;
|
758 |
-
width: 58.
|
759 |
.columns.is-mobile > .wp-defender .column.is-offset-7 {
|
760 |
-
margin-left: 58.
|
761 |
.columns.is-mobile > .wp-defender .column.is-8 {
|
762 |
flex: none;
|
763 |
-
width: 66.
|
764 |
.columns.is-mobile > .wp-defender .column.is-offset-8 {
|
765 |
-
margin-left: 66.
|
766 |
.columns.is-mobile > .wp-defender .column.is-9 {
|
767 |
flex: none;
|
768 |
width: 75%; }
|
@@ -770,14 +770,14 @@
|
|
770 |
margin-left: 75%; }
|
771 |
.columns.is-mobile > .wp-defender .column.is-10 {
|
772 |
flex: none;
|
773 |
-
width: 83.
|
774 |
.columns.is-mobile > .wp-defender .column.is-offset-10 {
|
775 |
-
margin-left: 83.
|
776 |
.columns.is-mobile > .wp-defender .column.is-11 {
|
777 |
flex: none;
|
778 |
-
width: 91.
|
779 |
.columns.is-mobile > .wp-defender .column.is-offset-11 {
|
780 |
-
margin-left: 91.
|
781 |
.columns.is-mobile > .wp-defender .column.is-12 {
|
782 |
flex: none;
|
783 |
width: 100%; }
|
@@ -816,14 +816,14 @@
|
|
816 |
margin-left: 25%; }
|
817 |
.wp-defender .column.is-1-mobile {
|
818 |
flex: none;
|
819 |
-
width: 8.
|
820 |
.wp-defender .column.is-offset-1-mobile {
|
821 |
-
margin-left: 8.
|
822 |
.wp-defender .column.is-2-mobile {
|
823 |
flex: none;
|
824 |
-
width: 16.
|
825 |
.wp-defender .column.is-offset-2-mobile {
|
826 |
-
margin-left: 16.
|
827 |
.wp-defender .column.is-3-mobile {
|
828 |
flex: none;
|
829 |
width: 25%; }
|
@@ -831,14 +831,14 @@
|
|
831 |
margin-left: 25%; }
|
832 |
.wp-defender .column.is-4-mobile {
|
833 |
flex: none;
|
834 |
-
width: 33.
|
835 |
.wp-defender .column.is-offset-4-mobile {
|
836 |
-
margin-left: 33.
|
837 |
.wp-defender .column.is-5-mobile {
|
838 |
flex: none;
|
839 |
-
width: 41.
|
840 |
.wp-defender .column.is-offset-5-mobile {
|
841 |
-
margin-left: 41.
|
842 |
.wp-defender .column.is-6-mobile {
|
843 |
flex: none;
|
844 |
width: 50%; }
|
@@ -846,14 +846,14 @@
|
|
846 |
margin-left: 50%; }
|
847 |
.wp-defender .column.is-7-mobile {
|
848 |
flex: none;
|
849 |
-
width: 58.
|
850 |
.wp-defender .column.is-offset-7-mobile {
|
851 |
-
margin-left: 58.
|
852 |
.wp-defender .column.is-8-mobile {
|
853 |
flex: none;
|
854 |
-
width: 66.
|
855 |
.wp-defender .column.is-offset-8-mobile {
|
856 |
-
margin-left: 66.
|
857 |
.wp-defender .column.is-9-mobile {
|
858 |
flex: none;
|
859 |
width: 75%; }
|
@@ -861,14 +861,14 @@
|
|
861 |
margin-left: 75%; }
|
862 |
.wp-defender .column.is-10-mobile {
|
863 |
flex: none;
|
864 |
-
width: 83.
|
865 |
.wp-defender .column.is-offset-10-mobile {
|
866 |
-
margin-left: 83.
|
867 |
.wp-defender .column.is-11-mobile {
|
868 |
flex: none;
|
869 |
-
width: 91.
|
870 |
.wp-defender .column.is-offset-11-mobile {
|
871 |
-
margin-left: 91.
|
872 |
.wp-defender .column.is-12-mobile {
|
873 |
flex: none;
|
874 |
width: 100%; }
|
@@ -907,14 +907,14 @@
|
|
907 |
margin-left: 25%; }
|
908 |
.wp-defender .column.is-1, .wp-defender .column.is-1-tablet {
|
909 |
flex: none;
|
910 |
-
width: 8.
|
911 |
.wp-defender .column.is-offset-1, .wp-defender .column.is-offset-1-tablet {
|
912 |
-
margin-left: 8.
|
913 |
.wp-defender .column.is-2, .wp-defender .column.is-2-tablet {
|
914 |
flex: none;
|
915 |
-
width: 16.
|
916 |
.wp-defender .column.is-offset-2, .wp-defender .column.is-offset-2-tablet {
|
917 |
-
margin-left: 16.
|
918 |
.wp-defender .column.is-3, .wp-defender .column.is-3-tablet {
|
919 |
flex: none;
|
920 |
width: 25%; }
|
@@ -922,14 +922,14 @@
|
|
922 |
margin-left: 25%; }
|
923 |
.wp-defender .column.is-4, .wp-defender .column.is-4-tablet {
|
924 |
flex: none;
|
925 |
-
width: 33.
|
926 |
.wp-defender .column.is-offset-4, .wp-defender .column.is-offset-4-tablet {
|
927 |
-
margin-left: 33.
|
928 |
.wp-defender .column.is-5, .wp-defender .column.is-5-tablet {
|
929 |
flex: none;
|
930 |
-
width: 41.
|
931 |
.wp-defender .column.is-offset-5, .wp-defender .column.is-offset-5-tablet {
|
932 |
-
margin-left: 41.
|
933 |
.wp-defender .column.is-6, .wp-defender .column.is-6-tablet {
|
934 |
flex: none;
|
935 |
width: 50%; }
|
@@ -937,14 +937,14 @@
|
|
937 |
margin-left: 50%; }
|
938 |
.wp-defender .column.is-7, .wp-defender .column.is-7-tablet {
|
939 |
flex: none;
|
940 |
-
width: 58.
|
941 |
.wp-defender .column.is-offset-7, .wp-defender .column.is-offset-7-tablet {
|
942 |
-
margin-left: 58.
|
943 |
.wp-defender .column.is-8, .wp-defender .column.is-8-tablet {
|
944 |
flex: none;
|
945 |
-
width: 66.
|
946 |
.wp-defender .column.is-offset-8, .wp-defender .column.is-offset-8-tablet {
|
947 |
-
margin-left: 66.
|
948 |
.wp-defender .column.is-9, .wp-defender .column.is-9-tablet {
|
949 |
flex: none;
|
950 |
width: 75%; }
|
@@ -952,14 +952,14 @@
|
|
952 |
margin-left: 75%; }
|
953 |
.wp-defender .column.is-10, .wp-defender .column.is-10-tablet {
|
954 |
flex: none;
|
955 |
-
width: 83.
|
956 |
.wp-defender .column.is-offset-10, .wp-defender .column.is-offset-10-tablet {
|
957 |
-
margin-left: 83.
|
958 |
.wp-defender .column.is-11, .wp-defender .column.is-11-tablet {
|
959 |
flex: none;
|
960 |
-
width: 91.
|
961 |
.wp-defender .column.is-offset-11, .wp-defender .column.is-offset-11-tablet {
|
962 |
-
margin-left: 91.
|
963 |
.wp-defender .column.is-12, .wp-defender .column.is-12-tablet {
|
964 |
flex: none;
|
965 |
width: 100%; }
|
@@ -998,14 +998,14 @@
|
|
998 |
margin-left: 25%; }
|
999 |
.wp-defender .column.is-1-desktop {
|
1000 |
flex: none;
|
1001 |
-
width: 8.
|
1002 |
.wp-defender .column.is-offset-1-desktop {
|
1003 |
-
margin-left: 8.
|
1004 |
.wp-defender .column.is-2-desktop {
|
1005 |
flex: none;
|
1006 |
-
width: 16.
|
1007 |
.wp-defender .column.is-offset-2-desktop {
|
1008 |
-
margin-left: 16.
|
1009 |
.wp-defender .column.is-3-desktop {
|
1010 |
flex: none;
|
1011 |
width: 25%; }
|
@@ -1013,14 +1013,14 @@
|
|
1013 |
margin-left: 25%; }
|
1014 |
.wp-defender .column.is-4-desktop {
|
1015 |
flex: none;
|
1016 |
-
width: 33.
|
1017 |
.wp-defender .column.is-offset-4-desktop {
|
1018 |
-
margin-left: 33.
|
1019 |
.wp-defender .column.is-5-desktop {
|
1020 |
flex: none;
|
1021 |
-
width: 41.
|
1022 |
.wp-defender .column.is-offset-5-desktop {
|
1023 |
-
margin-left: 41.
|
1024 |
.wp-defender .column.is-6-desktop {
|
1025 |
flex: none;
|
1026 |
width: 50%; }
|
@@ -1028,14 +1028,14 @@
|
|
1028 |
margin-left: 50%; }
|
1029 |
.wp-defender .column.is-7-desktop {
|
1030 |
flex: none;
|
1031 |
-
width: 58.
|
1032 |
.wp-defender .column.is-offset-7-desktop {
|
1033 |
-
margin-left: 58.
|
1034 |
.wp-defender .column.is-8-desktop {
|
1035 |
flex: none;
|
1036 |
-
width: 66.
|
1037 |
.wp-defender .column.is-offset-8-desktop {
|
1038 |
-
margin-left: 66.
|
1039 |
.wp-defender .column.is-9-desktop {
|
1040 |
flex: none;
|
1041 |
width: 75%; }
|
@@ -1043,14 +1043,14 @@
|
|
1043 |
margin-left: 75%; }
|
1044 |
.wp-defender .column.is-10-desktop {
|
1045 |
flex: none;
|
1046 |
-
width: 83.
|
1047 |
.wp-defender .column.is-offset-10-desktop {
|
1048 |
-
margin-left: 83.
|
1049 |
.wp-defender .column.is-11-desktop {
|
1050 |
flex: none;
|
1051 |
-
width: 91.
|
1052 |
.wp-defender .column.is-offset-11-desktop {
|
1053 |
-
margin-left: 91.
|
1054 |
.wp-defender .column.is-12-desktop {
|
1055 |
flex: none;
|
1056 |
width: 100%; }
|
@@ -1089,14 +1089,14 @@
|
|
1089 |
margin-left: 25%; }
|
1090 |
.wp-defender .column.is-1-widescreen {
|
1091 |
flex: none;
|
1092 |
-
width: 8.
|
1093 |
.wp-defender .column.is-offset-1-widescreen {
|
1094 |
-
margin-left: 8.
|
1095 |
.wp-defender .column.is-2-widescreen {
|
1096 |
flex: none;
|
1097 |
-
width: 16.
|
1098 |
.wp-defender .column.is-offset-2-widescreen {
|
1099 |
-
margin-left: 16.
|
1100 |
.wp-defender .column.is-3-widescreen {
|
1101 |
flex: none;
|
1102 |
width: 25%; }
|
@@ -1104,14 +1104,14 @@
|
|
1104 |
margin-left: 25%; }
|
1105 |
.wp-defender .column.is-4-widescreen {
|
1106 |
flex: none;
|
1107 |
-
width: 33.
|
1108 |
.wp-defender .column.is-offset-4-widescreen {
|
1109 |
-
margin-left: 33.
|
1110 |
.wp-defender .column.is-5-widescreen {
|
1111 |
flex: none;
|
1112 |
-
width: 41.
|
1113 |
.wp-defender .column.is-offset-5-widescreen {
|
1114 |
-
margin-left: 41.
|
1115 |
.wp-defender .column.is-6-widescreen {
|
1116 |
flex: none;
|
1117 |
width: 50%; }
|
@@ -1119,14 +1119,14 @@
|
|
1119 |
margin-left: 50%; }
|
1120 |
.wp-defender .column.is-7-widescreen {
|
1121 |
flex: none;
|
1122 |
-
width: 58.
|
1123 |
.wp-defender .column.is-offset-7-widescreen {
|
1124 |
-
margin-left: 58.
|
1125 |
.wp-defender .column.is-8-widescreen {
|
1126 |
flex: none;
|
1127 |
-
width: 66.
|
1128 |
.wp-defender .column.is-offset-8-widescreen {
|
1129 |
-
margin-left: 66.
|
1130 |
.wp-defender .column.is-9-widescreen {
|
1131 |
flex: none;
|
1132 |
width: 75%; }
|
@@ -1134,14 +1134,14 @@
|
|
1134 |
margin-left: 75%; }
|
1135 |
.wp-defender .column.is-10-widescreen {
|
1136 |
flex: none;
|
1137 |
-
width: 83.
|
1138 |
.wp-defender .column.is-offset-10-widescreen {
|
1139 |
-
margin-left: 83.
|
1140 |
.wp-defender .column.is-11-widescreen {
|
1141 |
flex: none;
|
1142 |
-
width: 91.
|
1143 |
.wp-defender .column.is-offset-11-widescreen {
|
1144 |
-
margin-left: 91.
|
1145 |
.wp-defender .column.is-12-widescreen {
|
1146 |
flex: none;
|
1147 |
width: 100%; }
|
@@ -1234,7 +1234,7 @@
|
|
1234 |
clear: both;
|
1235 |
font-size: 50px;
|
1236 |
color: #333;
|
1237 |
-
margin: 0
|
1238 |
width: auto;
|
1239 |
position: relative;
|
1240 |
vertical-align: top; }
|
@@ -1723,7 +1723,8 @@
|
|
1723 |
color: #1ABC9C; }
|
1724 |
.wp-defender i.def-icon.icon-warning:before {
|
1725 |
content: '\0044';
|
1726 |
-
color: #FECF2F;
|
|
|
1727 |
.wp-defender i.def-icon.fill-blue:before {
|
1728 |
color: #17A8E3; }
|
1729 |
.wp-defender i.def-icon.fill-red:before {
|
@@ -2051,6 +2052,12 @@
|
|
2051 |
font-weight: normal; }
|
2052 |
.wp-defender .wdf-scanning .confirm-box, .wp-defender .scan-dialog .confirm-box {
|
2053 |
font-size: 13px; }
|
|
|
|
|
|
|
|
|
|
|
|
|
2054 |
.wp-defender .wdf-scanning .inner-nav li a, .wp-defender .scan-dialog .inner-nav li a {
|
2055 |
padding-right: 0; }
|
2056 |
.wp-defender .wdf-scanning .inner-nav li a span:not(.def-tag), .wp-defender .scan-dialog .inner-nav li a span:not(.def-tag) {
|
@@ -2416,3 +2423,5 @@
|
|
2416 |
.wp-defender.no-close {
|
2417 |
max-width: none;
|
2418 |
margin: 0; }
|
|
|
|
352 |
z-index: 3;
|
353 |
opacity: 1;
|
354 |
position: absolute;
|
355 |
+
top: 10px;
|
356 |
right: 0; }
|
357 |
.wpmud .presale-text {
|
358 |
overflow: hidden;
|
725 |
margin-left: 25%; }
|
726 |
.columns.is-mobile > .wp-defender .column.is-1 {
|
727 |
flex: none;
|
728 |
+
width: 8.3333333333%; }
|
729 |
.columns.is-mobile > .wp-defender .column.is-offset-1 {
|
730 |
+
margin-left: 8.3333333333%; }
|
731 |
.columns.is-mobile > .wp-defender .column.is-2 {
|
732 |
flex: none;
|
733 |
+
width: 16.6666666667%; }
|
734 |
.columns.is-mobile > .wp-defender .column.is-offset-2 {
|
735 |
+
margin-left: 16.6666666667%; }
|
736 |
.columns.is-mobile > .wp-defender .column.is-3 {
|
737 |
flex: none;
|
738 |
width: 25%; }
|
740 |
margin-left: 25%; }
|
741 |
.columns.is-mobile > .wp-defender .column.is-4 {
|
742 |
flex: none;
|
743 |
+
width: 33.3333333333%; }
|
744 |
.columns.is-mobile > .wp-defender .column.is-offset-4 {
|
745 |
+
margin-left: 33.3333333333%; }
|
746 |
.columns.is-mobile > .wp-defender .column.is-5 {
|
747 |
flex: none;
|
748 |
+
width: 41.6666666667%; }
|
749 |
.columns.is-mobile > .wp-defender .column.is-offset-5 {
|
750 |
+
margin-left: 41.6666666667%; }
|
751 |
.columns.is-mobile > .wp-defender .column.is-6 {
|
752 |
flex: none;
|
753 |
width: 50%; }
|
755 |
margin-left: 50%; }
|
756 |
.columns.is-mobile > .wp-defender .column.is-7 {
|
757 |
flex: none;
|
758 |
+
width: 58.3333333333%; }
|
759 |
.columns.is-mobile > .wp-defender .column.is-offset-7 {
|
760 |
+
margin-left: 58.3333333333%; }
|
761 |
.columns.is-mobile > .wp-defender .column.is-8 {
|
762 |
flex: none;
|
763 |
+
width: 66.6666666667%; }
|
764 |
.columns.is-mobile > .wp-defender .column.is-offset-8 {
|
765 |
+
margin-left: 66.6666666667%; }
|
766 |
.columns.is-mobile > .wp-defender .column.is-9 {
|
767 |
flex: none;
|
768 |
width: 75%; }
|
770 |
margin-left: 75%; }
|
771 |
.columns.is-mobile > .wp-defender .column.is-10 {
|
772 |
flex: none;
|
773 |
+
width: 83.3333333333%; }
|
774 |
.columns.is-mobile > .wp-defender .column.is-offset-10 {
|
775 |
+
margin-left: 83.3333333333%; }
|
776 |
.columns.is-mobile > .wp-defender .column.is-11 {
|
777 |
flex: none;
|
778 |
+
width: 91.6666666667%; }
|
779 |
.columns.is-mobile > .wp-defender .column.is-offset-11 {
|
780 |
+
margin-left: 91.6666666667%; }
|
781 |
.columns.is-mobile > .wp-defender .column.is-12 {
|
782 |
flex: none;
|
783 |
width: 100%; }
|
816 |
margin-left: 25%; }
|
817 |
.wp-defender .column.is-1-mobile {
|
818 |
flex: none;
|
819 |
+
width: 8.3333333333%; }
|
820 |
.wp-defender .column.is-offset-1-mobile {
|
821 |
+
margin-left: 8.3333333333%; }
|
822 |
.wp-defender .column.is-2-mobile {
|
823 |
flex: none;
|
824 |
+
width: 16.6666666667%; }
|
825 |
.wp-defender .column.is-offset-2-mobile {
|
826 |
+
margin-left: 16.6666666667%; }
|
827 |
.wp-defender .column.is-3-mobile {
|
828 |
flex: none;
|
829 |
width: 25%; }
|
831 |
margin-left: 25%; }
|
832 |
.wp-defender .column.is-4-mobile {
|
833 |
flex: none;
|
834 |
+
width: 33.3333333333%; }
|
835 |
.wp-defender .column.is-offset-4-mobile {
|
836 |
+
margin-left: 33.3333333333%; }
|
837 |
.wp-defender .column.is-5-mobile {
|
838 |
flex: none;
|
839 |
+
width: 41.6666666667%; }
|
840 |
.wp-defender .column.is-offset-5-mobile {
|
841 |
+
margin-left: 41.6666666667%; }
|
842 |
.wp-defender .column.is-6-mobile {
|
843 |
flex: none;
|
844 |
width: 50%; }
|
846 |
margin-left: 50%; }
|
847 |
.wp-defender .column.is-7-mobile {
|
848 |
flex: none;
|
849 |
+
width: 58.3333333333%; }
|
850 |
.wp-defender .column.is-offset-7-mobile {
|
851 |
+
margin-left: 58.3333333333%; }
|
852 |
.wp-defender .column.is-8-mobile {
|
853 |
flex: none;
|
854 |
+
width: 66.6666666667%; }
|
855 |
.wp-defender .column.is-offset-8-mobile {
|
856 |
+
margin-left: 66.6666666667%; }
|
857 |
.wp-defender .column.is-9-mobile {
|
858 |
flex: none;
|
859 |
width: 75%; }
|
861 |
margin-left: 75%; }
|
862 |
.wp-defender .column.is-10-mobile {
|
863 |
flex: none;
|
864 |
+
width: 83.3333333333%; }
|
865 |
.wp-defender .column.is-offset-10-mobile {
|
866 |
+
margin-left: 83.3333333333%; }
|
867 |
.wp-defender .column.is-11-mobile {
|
868 |
flex: none;
|
869 |
+
width: 91.6666666667%; }
|
870 |
.wp-defender .column.is-offset-11-mobile {
|
871 |
+
margin-left: 91.6666666667%; }
|
872 |
.wp-defender .column.is-12-mobile {
|
873 |
flex: none;
|
874 |
width: 100%; }
|
907 |
margin-left: 25%; }
|
908 |
.wp-defender .column.is-1, .wp-defender .column.is-1-tablet {
|
909 |
flex: none;
|
910 |
+
width: 8.3333333333%; }
|
911 |
.wp-defender .column.is-offset-1, .wp-defender .column.is-offset-1-tablet {
|
912 |
+
margin-left: 8.3333333333%; }
|
913 |
.wp-defender .column.is-2, .wp-defender .column.is-2-tablet {
|
914 |
flex: none;
|
915 |
+
width: 16.6666666667%; }
|
916 |
.wp-defender .column.is-offset-2, .wp-defender .column.is-offset-2-tablet {
|
917 |
+
margin-left: 16.6666666667%; }
|
918 |
.wp-defender .column.is-3, .wp-defender .column.is-3-tablet {
|
919 |
flex: none;
|
920 |
width: 25%; }
|
922 |
margin-left: 25%; }
|
923 |
.wp-defender .column.is-4, .wp-defender .column.is-4-tablet {
|
924 |
flex: none;
|
925 |
+
width: 33.3333333333%; }
|
926 |
.wp-defender .column.is-offset-4, .wp-defender .column.is-offset-4-tablet {
|
927 |
+
margin-left: 33.3333333333%; }
|
928 |
.wp-defender .column.is-5, .wp-defender .column.is-5-tablet {
|
929 |
flex: none;
|
930 |
+
width: 41.6666666667%; }
|
931 |
.wp-defender .column.is-offset-5, .wp-defender .column.is-offset-5-tablet {
|
932 |
+
margin-left: 41.6666666667%; }
|
933 |
.wp-defender .column.is-6, .wp-defender .column.is-6-tablet {
|
934 |
flex: none;
|
935 |
width: 50%; }
|
937 |
margin-left: 50%; }
|
938 |
.wp-defender .column.is-7, .wp-defender .column.is-7-tablet {
|
939 |
flex: none;
|
940 |
+
width: 58.3333333333%; }
|
941 |
.wp-defender .column.is-offset-7, .wp-defender .column.is-offset-7-tablet {
|
942 |
+
margin-left: 58.3333333333%; }
|
943 |
.wp-defender .column.is-8, .wp-defender .column.is-8-tablet {
|
944 |
flex: none;
|
945 |
+
width: 66.6666666667%; }
|
946 |
.wp-defender .column.is-offset-8, .wp-defender .column.is-offset-8-tablet {
|
947 |
+
margin-left: 66.6666666667%; }
|
948 |
.wp-defender .column.is-9, .wp-defender .column.is-9-tablet {
|
949 |
flex: none;
|
950 |
width: 75%; }
|
952 |
margin-left: 75%; }
|
953 |
.wp-defender .column.is-10, .wp-defender .column.is-10-tablet {
|
954 |
flex: none;
|
955 |
+
width: 83.3333333333%; }
|
956 |
.wp-defender .column.is-offset-10, .wp-defender .column.is-offset-10-tablet {
|
957 |
+
margin-left: 83.3333333333%; }
|
958 |
.wp-defender .column.is-11, .wp-defender .column.is-11-tablet {
|
959 |
flex: none;
|
960 |
+
width: 91.6666666667%; }
|
961 |
.wp-defender .column.is-offset-11, .wp-defender .column.is-offset-11-tablet {
|
962 |
+
margin-left: 91.6666666667%; }
|
963 |
.wp-defender .column.is-12, .wp-defender .column.is-12-tablet {
|
964 |
flex: none;
|
965 |
width: 100%; }
|
998 |
margin-left: 25%; }
|
999 |
.wp-defender .column.is-1-desktop {
|
1000 |
flex: none;
|
1001 |
+
width: 8.3333333333%; }
|
1002 |
.wp-defender .column.is-offset-1-desktop {
|
1003 |
+
margin-left: 8.3333333333%; }
|
1004 |
.wp-defender .column.is-2-desktop {
|
1005 |
flex: none;
|
1006 |
+
width: 16.6666666667%; }
|
1007 |
.wp-defender .column.is-offset-2-desktop {
|
1008 |
+
margin-left: 16.6666666667%; }
|
1009 |
.wp-defender .column.is-3-desktop {
|
1010 |
flex: none;
|
1011 |
width: 25%; }
|
1013 |
margin-left: 25%; }
|
1014 |
.wp-defender .column.is-4-desktop {
|
1015 |
flex: none;
|
1016 |
+
width: 33.3333333333%; }
|
1017 |
.wp-defender .column.is-offset-4-desktop {
|
1018 |
+
margin-left: 33.3333333333%; }
|
1019 |
.wp-defender .column.is-5-desktop {
|
1020 |
flex: none;
|
1021 |
+
width: 41.6666666667%; }
|
1022 |
.wp-defender .column.is-offset-5-desktop {
|
1023 |
+
margin-left: 41.6666666667%; }
|
1024 |
.wp-defender .column.is-6-desktop {
|
1025 |
flex: none;
|
1026 |
width: 50%; }
|
1028 |
margin-left: 50%; }
|
1029 |
.wp-defender .column.is-7-desktop {
|
1030 |
flex: none;
|
1031 |
+
width: 58.3333333333%; }
|
1032 |
.wp-defender .column.is-offset-7-desktop {
|
1033 |
+
margin-left: 58.3333333333%; }
|
1034 |
.wp-defender .column.is-8-desktop {
|
1035 |
flex: none;
|
1036 |
+
width: 66.6666666667%; }
|
1037 |
.wp-defender .column.is-offset-8-desktop {
|
1038 |
+
margin-left: 66.6666666667%; }
|
1039 |
.wp-defender .column.is-9-desktop {
|
1040 |
flex: none;
|
1041 |
width: 75%; }
|
1043 |
margin-left: 75%; }
|
1044 |
.wp-defender .column.is-10-desktop {
|
1045 |
flex: none;
|
1046 |
+
width: 83.3333333333%; }
|
1047 |
.wp-defender .column.is-offset-10-desktop {
|
1048 |
+
margin-left: 83.3333333333%; }
|
1049 |
.wp-defender .column.is-11-desktop {
|
1050 |
flex: none;
|
1051 |
+
width: 91.6666666667%; }
|
1052 |
.wp-defender .column.is-offset-11-desktop {
|
1053 |
+
margin-left: 91.6666666667%; }
|
1054 |
.wp-defender .column.is-12-desktop {
|
1055 |
flex: none;
|
1056 |
width: 100%; }
|
1089 |
margin-left: 25%; }
|
1090 |
.wp-defender .column.is-1-widescreen {
|
1091 |
flex: none;
|
1092 |
+
width: 8.3333333333%; }
|
1093 |
.wp-defender .column.is-offset-1-widescreen {
|
1094 |
+
margin-left: 8.3333333333%; }
|
1095 |
.wp-defender .column.is-2-widescreen {
|
1096 |
flex: none;
|
1097 |
+
width: 16.6666666667%; }
|
1098 |
.wp-defender .column.is-offset-2-widescreen {
|
1099 |
+
margin-left: 16.6666666667%; }
|
1100 |
.wp-defender .column.is-3-widescreen {
|
1101 |
flex: none;
|
1102 |
width: 25%; }
|
1104 |
margin-left: 25%; }
|
1105 |
.wp-defender .column.is-4-widescreen {
|
1106 |
flex: none;
|
1107 |
+
width: 33.3333333333%; }
|
1108 |
.wp-defender .column.is-offset-4-widescreen {
|
1109 |
+
margin-left: 33.3333333333%; }
|
1110 |
.wp-defender .column.is-5-widescreen {
|
1111 |
flex: none;
|
1112 |
+
width: 41.6666666667%; }
|
1113 |
.wp-defender .column.is-offset-5-widescreen {
|
1114 |
+
margin-left: 41.6666666667%; }
|
1115 |
.wp-defender .column.is-6-widescreen {
|
1116 |
flex: none;
|
1117 |
width: 50%; }
|
1119 |
margin-left: 50%; }
|
1120 |
.wp-defender .column.is-7-widescreen {
|
1121 |
flex: none;
|
1122 |
+
width: 58.3333333333%; }
|
1123 |
.wp-defender .column.is-offset-7-widescreen {
|
1124 |
+
margin-left: 58.3333333333%; }
|
1125 |
.wp-defender .column.is-8-widescreen {
|
1126 |
flex: none;
|
1127 |
+
width: 66.6666666667%; }
|
1128 |
.wp-defender .column.is-offset-8-widescreen {
|
1129 |
+
margin-left: 66.6666666667%; }
|
1130 |
.wp-defender .column.is-9-widescreen {
|
1131 |
flex: none;
|
1132 |
width: 75%; }
|
1134 |
margin-left: 75%; }
|
1135 |
.wp-defender .column.is-10-widescreen {
|
1136 |
flex: none;
|
1137 |
+
width: 83.3333333333%; }
|
1138 |
.wp-defender .column.is-offset-10-widescreen {
|
1139 |
+
margin-left: 83.3333333333%; }
|
1140 |
.wp-defender .column.is-11-widescreen {
|
1141 |
flex: none;
|
1142 |
+
width: 91.6666666667%; }
|
1143 |
.wp-defender .column.is-offset-11-widescreen {
|
1144 |
+
margin-left: 91.6666666667%; }
|
1145 |
.wp-defender .column.is-12-widescreen {
|
1146 |
flex: none;
|
1147 |
width: 100%; }
|
1234 |
clear: both;
|
1235 |
font-size: 50px;
|
1236 |
color: #333;
|
1237 |
+
margin: 0;
|
1238 |
width: auto;
|
1239 |
position: relative;
|
1240 |
vertical-align: top; }
|
1723 |
color: #1ABC9C; }
|
1724 |
.wp-defender i.def-icon.icon-warning:before {
|
1725 |
content: '\0044';
|
1726 |
+
color: #FECF2F;
|
1727 |
+
opacity: 0; }
|
1728 |
.wp-defender i.def-icon.fill-blue:before {
|
1729 |
color: #17A8E3; }
|
1730 |
.wp-defender i.def-icon.fill-red:before {
|
2052 |
font-weight: normal; }
|
2053 |
.wp-defender .wdf-scanning .confirm-box, .wp-defender .scan-dialog .confirm-box {
|
2054 |
font-size: 13px; }
|
2055 |
+
.wp-defender .wdf-scanning .confirm-box span, .wp-defender .scan-dialog .confirm-box span {
|
2056 |
+
display: inline-block;
|
2057 |
+
width: 70%;
|
2058 |
+
float: left; }
|
2059 |
+
.wp-defender .wdf-scanning .scan-frm.delete-item, .wp-defender .scan-dialog .scan-frm.delete-item {
|
2060 |
+
max-width: 85%; }
|
2061 |
.wp-defender .wdf-scanning .inner-nav li a, .wp-defender .scan-dialog .inner-nav li a {
|
2062 |
padding-right: 0; }
|
2063 |
.wp-defender .wdf-scanning .inner-nav li a span:not(.def-tag), .wp-defender .scan-dialog .inner-nav li a span:not(.def-tag) {
|
2423 |
.wp-defender.no-close {
|
2424 |
max-width: none;
|
2425 |
margin: 0; }
|
2426 |
+
|
2427 |
+
/*# sourceMappingURL=styles.css.map */
|
assets/img/scanning-man.png
ADDED
Binary file
|
changelog.txt
CHANGED
@@ -1,9 +1,25 @@
|
|
1 |
Plugin Name: WP Defender
|
2 |
Author: Hoang Ngo, Aaron Edwards
|
3 |
-
Tested up to: 4.
|
4 |
|
5 |
Change Log:
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
1.7.4 - 2017-20-11
|
8 |
----------------------------------------------------------------------
|
9 |
- Fix: Conflict with Jetpack where Defender 2FA module would not detect if Jetpack 2FA was disabled.
|
1 |
Plugin Name: WP Defender
|
2 |
Author: Hoang Ngo, Aaron Edwards
|
3 |
+
Tested up to: 4.9.4
|
4 |
|
5 |
Change Log:
|
6 |
|
7 |
+
1.7.6 - 2017-19-03
|
8 |
+
----------------------------------------------------------------------
|
9 |
+
- Fix: Defender now can recognize and verify Bing Bot for whitelisting
|
10 |
+
- Fix: Lockout page now will use site title instead of the text 'WP Defender'
|
11 |
+
- Other minor enhancements and fixes
|
12 |
+
|
13 |
+
1.7.5 - 2017-07-02
|
14 |
+
----------------------------------------------------------------------
|
15 |
+
- Fix: Report status missing in Hub Security tab
|
16 |
+
- Fix: Some themes/plugins shown as a vulnerability but no info available
|
17 |
+
- Other minor enhancements and fixes
|
18 |
+
|
19 |
+
1.7.4.1 - 2017-4-12
|
20 |
+
----------------------------------------------------------------------
|
21 |
+
- Added: Endpoint API so HUB can work with Defender natively through WPMU DEV Dashboard plugin
|
22 |
+
|
23 |
1.7.4 - 2017-20-11
|
24 |
----------------------------------------------------------------------
|
25 |
- Fix: Conflict with Jetpack where Defender 2FA module would not detect if Jetpack 2FA was disabled.
|
languages/wpdef-default.pot
CHANGED
@@ -1,14 +1,14 @@
|
|
1 |
-
# Copyright (C)
|
2 |
# This file is distributed under the GNU General Public License (Version 2 - GPLv2).
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version:
|
6 |
"Report-Msgid-Bugs-To: https://wpmudev.org\n"
|
7 |
-
"POT-Creation-Date:
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
11 |
-
"PO-Revision-Date:
|
12 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
13 |
"Language-Team: LANGUAGE <EMAIL@ADDRESS>\n"
|
14 |
"X-Generator: grunt-wp-i18n1.0.0\n"
|
@@ -19,7 +19,7 @@ msgstr ""
|
|
19 |
msgid "BLACKLIST MONITOR"
|
20 |
msgstr ""
|
21 |
|
22 |
-
#: app/behavior/blacklist-free.php:
|
23 |
#: app/module/audit/behavior/audit-free.php:20
|
24 |
#: app/module/scan/behavior/scan.php:136 app/module/scan/behavior/scan.php:151
|
25 |
#: app/module/scan/view/layouts/layout.php:61
|
@@ -29,12 +29,12 @@ msgstr ""
|
|
29 |
msgid "Try Defender Pro free today"
|
30 |
msgstr ""
|
31 |
|
32 |
-
#: app/behavior/blacklist-free.php:
|
33 |
#: app/module/audit/behavior/audit-free.php:20
|
34 |
msgid "PRO FEATURE"
|
35 |
msgstr ""
|
36 |
|
37 |
-
#: app/behavior/blacklist-free.php:
|
38 |
#: app/behavior/blacklist.php:66
|
39 |
msgid ""
|
40 |
"Automatically check if you’re on Google’s blacklist every 6 hours. If "
|
@@ -42,7 +42,7 @@ msgid ""
|
|
42 |
" wrong, we’ll let you know via email."
|
43 |
msgstr ""
|
44 |
|
45 |
-
#: app/behavior/blacklist-free.php:
|
46 |
#: app/module/audit/view/free.php:17
|
47 |
#: app/module/ip-lockout/view/notification/report-free.php:5
|
48 |
#: app/module/scan/view/automation-free.php:5
|
@@ -152,17 +152,17 @@ msgid "Lockout reports are active scheduled to send %s"
|
|
152 |
msgstr ""
|
153 |
|
154 |
#: app/behavior/report-free.php:129 app/behavior/report.php:224
|
155 |
-
#: app/behavior/utils.php:
|
156 |
msgid "daily"
|
157 |
msgstr ""
|
158 |
|
159 |
#: app/behavior/report-free.php:132 app/behavior/report.php:227
|
160 |
-
#: app/behavior/utils.php:
|
161 |
msgid "weekly"
|
162 |
msgstr ""
|
163 |
|
164 |
#: app/behavior/report-free.php:135 app/behavior/report.php:230
|
165 |
-
#: app/behavior/utils.php:
|
166 |
msgid "monthly"
|
167 |
msgstr ""
|
168 |
|
@@ -216,22 +216,27 @@ msgstr ""
|
|
216 |
msgid "Guest"
|
217 |
msgstr ""
|
218 |
|
219 |
-
#: app/behavior/utils.php:
|
220 |
msgid "WordPress Core Integrity"
|
221 |
msgstr ""
|
222 |
|
223 |
-
#: app/behavior/utils.php:
|
224 |
msgid "Plugins & Themes vulnerability"
|
225 |
msgstr ""
|
226 |
|
227 |
-
#: app/behavior/utils.php:
|
228 |
#: app/module/scan/view/layouts/layout.php:70
|
229 |
#: app/module/scan/view/setting-free.php:50 app/module/scan/view/setting.php:43
|
230 |
#: app/view/settings.php:98
|
231 |
msgid "Suspicious Code"
|
232 |
msgstr ""
|
233 |
|
234 |
-
#: app/behavior/utils.php:
|
|
|
|
|
|
|
|
|
|
|
235 |
msgid "Please upgrade to 5.3 or later"
|
236 |
msgstr ""
|
237 |
|
@@ -239,32 +244,36 @@ msgstr ""
|
|
239 |
msgid "Dashboard"
|
240 |
msgstr ""
|
241 |
|
242 |
-
#: app/controller/dashboard.php:
|
243 |
-
#: app/
|
244 |
msgid "Defender"
|
245 |
msgstr ""
|
246 |
|
247 |
-
|
|
|
|
|
|
|
|
|
248 |
msgid "QUICK SETUP"
|
249 |
msgstr ""
|
250 |
|
251 |
-
#: app/controller/dashboard.php:
|
252 |
msgid "Skip"
|
253 |
msgstr ""
|
254 |
|
255 |
-
#: app/controller/dashboard.php:
|
256 |
msgid "Activating File Scanning..."
|
257 |
msgstr ""
|
258 |
|
259 |
-
#: app/controller/dashboard.php:
|
260 |
msgid "Activating Audit Module..."
|
261 |
msgstr ""
|
262 |
|
263 |
-
#: app/controller/dashboard.php:
|
264 |
msgid "Activating IP Lockouts Module..."
|
265 |
msgstr ""
|
266 |
|
267 |
-
#: app/controller/dashboard.php:
|
268 |
msgid "Activating Blacklist Monitoring..."
|
269 |
msgstr ""
|
270 |
|
@@ -401,8 +410,8 @@ msgid "Whoops, the passcode you entered was incorrect or expired."
|
|
401 |
msgstr ""
|
402 |
|
403 |
#: app/module/advanced-tools/controller/main.php:457
|
404 |
-
#: app/module/audit/controller/main.php:
|
405 |
-
#: app/module/ip-lockout/controller/main.php:
|
406 |
#: app/module/scan/controller/main.php:306
|
407 |
msgid "Your settings have been updated."
|
408 |
msgstr ""
|
@@ -483,7 +492,7 @@ msgid "Two factor authentication is active."
|
|
483 |
msgstr ""
|
484 |
|
485 |
#: app/module/advanced-tools/view/login/enabled.php:12
|
486 |
-
msgid "
|
487 |
msgstr ""
|
488 |
|
489 |
#: app/module/advanced-tools/view/login/enabled.php:17
|
@@ -620,59 +629,59 @@ msgstr ""
|
|
620 |
msgid "Please hold on, Defender will update Audit information soon..."
|
621 |
msgstr ""
|
622 |
|
623 |
-
#: app/module/audit/component/audit-api.php:
|
624 |
-
#: app/module/audit/component/audit-api.php:
|
625 |
msgid ""
|
626 |
"Whoops, Defender had trouble loading up your event log. You can try a <a "
|
627 |
"href='%s'class=''>quick refresh</a> of this page or check back again "
|
628 |
"later."
|
629 |
msgstr ""
|
630 |
|
631 |
-
#: app/module/audit/component/audit-api.php:
|
632 |
msgid "trashed"
|
633 |
msgstr ""
|
634 |
|
635 |
-
#: app/module/audit/component/audit-api.php:
|
636 |
msgid "updated"
|
637 |
msgstr ""
|
638 |
|
639 |
-
#: app/module/audit/component/audit-api.php:
|
640 |
msgid "deleted"
|
641 |
msgstr ""
|
642 |
|
643 |
-
#: app/module/audit/component/audit-api.php:
|
644 |
msgid "created"
|
645 |
msgstr ""
|
646 |
|
647 |
-
#: app/module/audit/component/audit-api.php:
|
648 |
msgid "restored"
|
649 |
msgstr ""
|
650 |
|
651 |
-
#: app/module/audit/component/audit-api.php:
|
652 |
msgid "year"
|
653 |
msgstr ""
|
654 |
|
655 |
-
#: app/module/audit/component/audit-api.php:
|
656 |
msgid "month"
|
657 |
msgstr ""
|
658 |
|
659 |
-
#: app/module/audit/component/audit-api.php:
|
660 |
msgid "week"
|
661 |
msgstr ""
|
662 |
|
663 |
-
#: app/module/audit/component/audit-api.php:
|
664 |
msgid "day"
|
665 |
msgstr ""
|
666 |
|
667 |
-
#: app/module/audit/component/audit-api.php:
|
668 |
msgid "hour"
|
669 |
msgstr ""
|
670 |
|
671 |
-
#: app/module/audit/component/audit-api.php:
|
672 |
msgid "minute"
|
673 |
msgstr ""
|
674 |
|
675 |
-
#: app/module/audit/component/audit-api.php:
|
676 |
msgid "second"
|
677 |
msgstr ""
|
678 |
|
@@ -1065,7 +1074,7 @@ msgstr ""
|
|
1065 |
msgid "Login Name"
|
1066 |
msgstr ""
|
1067 |
|
1068 |
-
#: app/module/audit/component/options-audit.php:175
|
1069 |
msgid "Password"
|
1070 |
msgstr ""
|
1071 |
|
@@ -1164,7 +1173,7 @@ msgstr ""
|
|
1164 |
#: app/module/scan/view/layouts/layout.php:132
|
1165 |
#: app/module/scan/view/layouts/layout.php:149
|
1166 |
#: app/module/scan/view/setting-free.php:3 app/module/scan/view/setting.php:3
|
1167 |
-
#: app/view/settings.php:6 free/main-activator.php:
|
1168 |
msgid "Settings"
|
1169 |
msgstr ""
|
1170 |
|
@@ -1274,7 +1283,7 @@ msgid "password reset"
|
|
1274 |
msgstr ""
|
1275 |
|
1276 |
#: app/module/audit/controller/main-free.php:36
|
1277 |
-
#: app/module/audit/controller/main.php:
|
1278 |
#: app/module/audit/view/pro-feature.php:22
|
1279 |
#: app/module/ip-lockout/view/pro-feature.php:22
|
1280 |
#: app/module/scan/view/pro-feature.php:22 app/view/activator.php:33
|
@@ -1282,86 +1291,81 @@ msgstr ""
|
|
1282 |
msgid "Audit Logging"
|
1283 |
msgstr ""
|
1284 |
|
1285 |
-
#: app/module/audit/controller/main.php:
|
1286 |
msgid "Summary"
|
1287 |
msgstr ""
|
1288 |
|
1289 |
-
#: app/module/audit/controller/main.php:
|
1290 |
#: app/module/audit/view/table.php:154
|
1291 |
msgid "Date / Time"
|
1292 |
msgstr ""
|
1293 |
|
1294 |
-
#: app/module/audit/controller/main.php:
|
1295 |
#: app/module/audit/view/table.php:104
|
1296 |
msgid "Context"
|
1297 |
msgstr ""
|
1298 |
|
1299 |
-
#: app/module/audit/controller/main.php:
|
1300 |
#: app/module/audit/view/table.php:115
|
1301 |
msgid "Type"
|
1302 |
msgstr ""
|
1303 |
|
1304 |
-
#: app/module/audit/controller/main.php:
|
1305 |
#: app/module/audit/view/table.php:126
|
1306 |
msgid "IP address"
|
1307 |
msgstr ""
|
1308 |
|
1309 |
-
#: app/module/audit/controller/main.php:
|
1310 |
#: app/module/audit/view/table.php:137
|
1311 |
msgid "User"
|
1312 |
msgstr ""
|
1313 |
|
1314 |
-
#: app/module/audit/controller/main.php:
|
1315 |
-
#: app/module/ip-lockout/controller/main.php:92
|
1316 |
-
msgid "Never"
|
1317 |
-
msgstr ""
|
1318 |
-
|
1319 |
-
#: app/module/audit/controller/main.php:203
|
1320 |
#: app/module/audit/view/layouts/layout.php:39
|
1321 |
msgid "at %s"
|
1322 |
msgstr ""
|
1323 |
|
1324 |
-
#: app/module/audit/controller/main.php:
|
1325 |
#: app/module/audit/view/layouts/layout.php:42
|
1326 |
msgid "%s at %s"
|
1327 |
msgstr ""
|
1328 |
|
1329 |
-
#: app/module/audit/controller/main.php:
|
1330 |
msgid "Hi {USER_NAME},"
|
1331 |
msgstr ""
|
1332 |
|
1333 |
-
#: app/module/audit/controller/main.php:
|
1334 |
msgid ""
|
1335 |
"It’s WP Defender here, reporting from the frontline with a quick update on "
|
1336 |
"what’s been happening at <a href=\"%s\">%s</a>."
|
1337 |
msgstr ""
|
1338 |
|
1339 |
-
#: app/module/audit/controller/main.php:
|
1340 |
msgid "Event Type"
|
1341 |
msgstr ""
|
1342 |
|
1343 |
-
#: app/module/audit/controller/main.php:
|
1344 |
msgid "Action Summaries"
|
1345 |
msgstr ""
|
1346 |
|
1347 |
-
#: app/module/audit/controller/main.php:
|
1348 |
msgid "You can view the full audit report for your site here."
|
1349 |
msgstr ""
|
1350 |
|
1351 |
-
#: app/module/audit/controller/main.php:
|
1352 |
msgid "There were no events logged for %s"
|
1353 |
msgstr ""
|
1354 |
|
1355 |
-
#: app/module/audit/controller/main.php:
|
1356 |
-
#: app/module/audit/controller/main.php:
|
1357 |
msgid "Here’s what’s been happening at %s"
|
1358 |
msgstr ""
|
1359 |
|
1360 |
-
#: app/module/audit/controller/main.php:
|
1361 |
msgid "Type a user’s name"
|
1362 |
msgstr ""
|
1363 |
|
1364 |
-
#: app/module/audit/controller/main.php:
|
1365 |
msgid "We did not find an user with this name..."
|
1366 |
msgstr ""
|
1367 |
|
@@ -1433,6 +1437,7 @@ msgid "<a href=\"%s\">Configure reporting preferences</a>"
|
|
1433 |
msgstr ""
|
1434 |
|
1435 |
#: app/module/audit/view/free.php:9 free/main-activator.php:118
|
|
|
1436 |
msgid "Upgrade"
|
1437 |
msgstr ""
|
1438 |
|
@@ -1764,12 +1769,15 @@ msgstr ""
|
|
1764 |
#: app/module/hardener/component/protect-information-service.php:46
|
1765 |
#: app/module/hardener/component/protect-information-service.php:69
|
1766 |
#: app/module/hardener/component/security-key-service.php:48
|
1767 |
-
#: app/module/hardener/component/servers/apache-service.php:
|
1768 |
-
#: app/module/hardener/component/servers/apache-service.php:
|
1769 |
-
#: app/module/hardener/component/servers/apache-service.php:
|
1770 |
-
#: app/module/hardener/component/servers/apache-service.php:
|
1771 |
-
#: app/module/hardener/component/servers/apache-service.php:
|
1772 |
-
#: app/module/hardener/component/servers/apache-service.php:
|
|
|
|
|
|
|
1773 |
msgid "The file %s is not writeable"
|
1774 |
msgstr ""
|
1775 |
|
@@ -1852,7 +1860,7 @@ msgstr ""
|
|
1852 |
msgid "Duration can only be a number and greater than 0"
|
1853 |
msgstr ""
|
1854 |
|
1855 |
-
#: app/module/hardener/component/login-duration.php:
|
1856 |
msgid ""
|
1857 |
"Your session has expired because it has been over %d days since your last "
|
1858 |
"login. Please log back in to continue."
|
@@ -2265,38 +2273,38 @@ msgid "Add .htaccess file"
|
|
2265 |
msgstr ""
|
2266 |
|
2267 |
#: app/module/hardener/view/rules/prevent-php-executed.php:138
|
2268 |
-
#: app/module/hardener/view/rules/protect-information.php:
|
2269 |
msgid "For NGINX servers:"
|
2270 |
msgstr ""
|
2271 |
|
2272 |
#: app/module/hardener/view/rules/prevent-php-executed.php:141
|
2273 |
-
#: app/module/hardener/view/rules/protect-information.php:
|
2274 |
msgid ""
|
2275 |
"Copy the generated code into your site specific .conf file usually located "
|
2276 |
"in a subdirectory under /etc/nginx/... or /usr/local/nginx/conf/..."
|
2277 |
msgstr ""
|
2278 |
|
2279 |
#: app/module/hardener/view/rules/prevent-php-executed.php:144
|
2280 |
-
#: app/module/hardener/view/rules/protect-information.php:
|
2281 |
msgid ""
|
2282 |
"Add the code above inside the <strong>server</strong> section in the file, "
|
2283 |
"right before the php location block. Looks something like:"
|
2284 |
msgstr ""
|
2285 |
|
2286 |
#: app/module/hardener/view/rules/prevent-php-executed.php:148
|
2287 |
-
#: app/module/hardener/view/rules/protect-information.php:
|
2288 |
msgid "Reload NGINX."
|
2289 |
msgstr ""
|
2290 |
|
2291 |
#: app/module/hardener/view/rules/prevent-php-executed.php:151
|
2292 |
-
#: app/module/hardener/view/rules/protect-information.php:
|
2293 |
msgid ""
|
2294 |
"Still having trouble? <a target='_blank' href=\"%s\">Open a support "
|
2295 |
"ticket</a>."
|
2296 |
msgstr ""
|
2297 |
|
2298 |
#: app/module/hardener/view/rules/prevent-php-executed.php:161
|
2299 |
-
#: app/module/hardener/view/rules/protect-information.php:
|
2300 |
msgid "For IIS servers, <a href=\"%s\">visit Microsoft TechNet</a>"
|
2301 |
msgstr ""
|
2302 |
|
@@ -2340,7 +2348,7 @@ msgstr ""
|
|
2340 |
msgid "Your WordPress is protected."
|
2341 |
msgstr ""
|
2342 |
|
2343 |
-
#: app/module/hardener/view/rules/protect-information.php:
|
2344 |
msgid "For IIS 7 servers, <a href=\"%s\">visit Microsoft TechNet</a>"
|
2345 |
msgstr ""
|
2346 |
|
@@ -2451,8 +2459,8 @@ msgid "Lockout notifications are disabled"
|
|
2451 |
msgstr ""
|
2452 |
|
2453 |
#: app/module/ip-lockout/component/login-protection-api.php:61
|
2454 |
-
#: app/module/ip-lockout/controller/main.php:
|
2455 |
-
#: app/module/ip-lockout/controller/main.php:
|
2456 |
msgid ""
|
2457 |
"You have been locked out by the administrator for attempting to login with "
|
2458 |
"a banned username"
|
@@ -2591,64 +2599,64 @@ msgstr ""
|
|
2591 |
msgid "Demo"
|
2592 |
msgstr ""
|
2593 |
|
2594 |
-
#: app/module/ip-lockout/controller/main.php:
|
2595 |
msgid "404 lockout alert for %s"
|
2596 |
msgstr ""
|
2597 |
|
2598 |
-
#: app/module/ip-lockout/controller/main.php:
|
2599 |
msgid "Login lockout alert for %s"
|
2600 |
msgstr ""
|
2601 |
|
2602 |
-
#: app/module/ip-lockout/controller/main.php:
|
2603 |
msgid "Failed login attempt with username %s"
|
2604 |
msgstr ""
|
2605 |
|
2606 |
-
#: app/module/ip-lockout/controller/main.php:
|
2607 |
-
#: app/module/ip-lockout/controller/main.php:
|
2608 |
msgid "%d login attempts remaining"
|
2609 |
msgstr ""
|
2610 |
|
2611 |
-
#: app/module/ip-lockout/controller/main.php:
|
2612 |
msgid ""
|
2613 |
"Your settings have been updated, however some IPs were removed because "
|
2614 |
"invalid format, or you blacklist yourself"
|
2615 |
msgstr ""
|
2616 |
|
2617 |
-
#: app/module/ip-lockout/controller/main.php:
|
2618 |
msgid "Login Protection has been activated."
|
2619 |
msgstr ""
|
2620 |
|
2621 |
-
#: app/module/ip-lockout/controller/main.php:
|
2622 |
msgid "Login Protection has been deactivated."
|
2623 |
msgstr ""
|
2624 |
|
2625 |
-
#: app/module/ip-lockout/controller/main.php:
|
2626 |
msgid "404 Detection has been activated."
|
2627 |
msgstr ""
|
2628 |
|
2629 |
-
#: app/module/ip-lockout/controller/main.php:
|
2630 |
msgid "404 Detection has been deactivated."
|
2631 |
msgstr ""
|
2632 |
|
2633 |
-
#: app/module/ip-lockout/controller/main.php:
|
2634 |
#: app/view/activator-free.php:33 app/view/activator.php:49
|
2635 |
msgid "IP Lockouts"
|
2636 |
msgstr ""
|
2637 |
|
2638 |
-
#: app/module/ip-lockout/controller/main.php:
|
2639 |
-
#: app/module/ip-lockout/controller/main.php:
|
2640 |
msgid "Your file is invalid!"
|
2641 |
msgstr ""
|
2642 |
|
2643 |
-
#: app/module/ip-lockout/controller/main.php:
|
2644 |
msgid "Your file content is invalid!"
|
2645 |
msgstr ""
|
2646 |
|
2647 |
-
#: app/module/ip-lockout/controller/main.php:
|
2648 |
msgid "Your whitelist/blacklist has been successfully imported."
|
2649 |
msgstr ""
|
2650 |
|
2651 |
-
#: app/module/ip-lockout/controller/main.php:
|
2652 |
msgid "Thanks for your patience. All set."
|
2653 |
msgstr ""
|
2654 |
|
@@ -2892,7 +2900,6 @@ msgstr ""
|
|
2892 |
#: app/module/ip-lockout/view/emails/login-lockout.php:483
|
2893 |
#: app/module/ip-lockout/view/emails/login-username-ban.php:482
|
2894 |
#: app/module/ip-lockout/view/emails/report.php:515
|
2895 |
-
#: app/module/ip-lockout/view/locked.php:7
|
2896 |
msgid "WP Defender"
|
2897 |
msgstr ""
|
2898 |
|
@@ -3247,7 +3254,7 @@ msgid ""
|
|
3247 |
"Schedule automated file scanning and email reporting for all your websites. "
|
3248 |
"This feature is included in a WPMU DEV membership along with 100+ plugins & "
|
3249 |
"themes, 24/7 support and lots of handy site management tools – <a "
|
3250 |
-
"href=\"%s\">Try it all FREE today!</a>"
|
3251 |
msgstr ""
|
3252 |
|
3253 |
#: app/module/ip-lockout/view/settings.php:10
|
@@ -3313,8 +3320,8 @@ msgid "This WordPress core file appears modified"
|
|
3313 |
msgstr ""
|
3314 |
|
3315 |
#: app/module/scan/behavior/core-result.php:75
|
3316 |
-
#: app/module/scan/behavior/core-result.php:
|
3317 |
-
#: app/module/scan/behavior/core-result.php:
|
3318 |
#: app/module/scan/behavior/pro/content-result.php:209
|
3319 |
#: app/module/scan/behavior/pro/content-result.php:230
|
3320 |
#: app/module/scan/behavior/pro/content-result.php:235
|
@@ -3322,7 +3329,7 @@ msgid "Defender doesn't have enough permission to remove this file"
|
|
3322 |
msgstr ""
|
3323 |
|
3324 |
#: app/module/scan/behavior/core-result.php:81
|
3325 |
-
msgid "This file can't
|
3326 |
msgstr ""
|
3327 |
|
3328 |
#: app/module/scan/behavior/core-result.php:101
|
@@ -3362,8 +3369,8 @@ msgstr ""
|
|
3362 |
|
3363 |
#: app/module/scan/behavior/core-result.php:199
|
3364 |
msgid ""
|
3365 |
-
"This will
|
3366 |
-
"
|
3367 |
msgstr ""
|
3368 |
|
3369 |
#: app/module/scan/behavior/core-result.php:202
|
@@ -3376,11 +3383,11 @@ msgstr ""
|
|
3376 |
msgid "No"
|
3377 |
msgstr ""
|
3378 |
|
3379 |
-
#: app/module/scan/behavior/core-result.php:
|
3380 |
msgid "Restore to Original"
|
3381 |
msgstr ""
|
3382 |
|
3383 |
-
#: app/module/scan/behavior/core-result.php:
|
3384 |
msgid ""
|
3385 |
"A stray file has been found in your site directory, which your version of "
|
3386 |
"WordPress doesn't need. As far as we can tell, the file is harmless (and "
|
@@ -3389,21 +3396,21 @@ msgid ""
|
|
3389 |
"beforehand"
|
3390 |
msgstr ""
|
3391 |
|
3392 |
-
#: app/module/scan/behavior/core-result.php:
|
3393 |
-
#: app/module/scan/behavior/core-result.php:
|
3394 |
-
#: app/module/scan/behavior/core-result.php:
|
3395 |
#: app/module/scan/behavior/pro/content-result.php:93
|
3396 |
msgid "Pulling source file..."
|
3397 |
msgstr ""
|
3398 |
|
3399 |
-
#: app/module/scan/behavior/core-result.php:
|
3400 |
msgid ""
|
3401 |
"Compare your file with the original file in the WordPress repository. "
|
3402 |
"Pieces highlighted in red will be removed when you patch the file, and "
|
3403 |
"pieces highlighted in green will be added."
|
3404 |
msgstr ""
|
3405 |
|
3406 |
-
#: app/module/scan/behavior/core-result.php:
|
3407 |
msgid ""
|
3408 |
"We found this folder in your WordPress file list. Your current version of "
|
3409 |
"WordPress doesn’t use this folder so it might belong to another "
|
@@ -3678,7 +3685,7 @@ msgid "The item doesn't exist!"
|
|
3678 |
msgstr ""
|
3679 |
|
3680 |
#: app/module/scan/controller/main.php:381
|
3681 |
-
msgid "This item has been
|
3682 |
msgstr ""
|
3683 |
|
3684 |
#: app/module/scan/controller/main.php:520
|
@@ -3821,7 +3828,7 @@ msgid ""
|
|
3821 |
" Get enhanced security protection as part of a WPMU DEV "
|
3822 |
"membership including 100+ plugins & themes, 24/7\n"
|
3823 |
" support and lots of handy site management tools – <a "
|
3824 |
-
"href=\"%s\">Try Defender Pro today for FREE</a>"
|
3825 |
msgstr ""
|
3826 |
|
3827 |
#: app/module/scan/view/setting-free.php:9 app/module/scan/view/setting.php:9
|
@@ -3856,7 +3863,8 @@ msgid ""
|
|
3856 |
"Defenders scans through every line of code on your website, searching for "
|
3857 |
"anything suspicious. This feature is included when you join WPMU DEV, along "
|
3858 |
"with 100+ plugins and themes, 24/7 support and lots of handy site "
|
3859 |
-
"management tools. – <a href=\"%s\" role='button'>Try it
|
|
|
3860 |
" </a>"
|
3861 |
msgstr ""
|
3862 |
|
@@ -3971,7 +3979,7 @@ msgstr ""
|
|
3971 |
msgid "Automatic File Scans & Reporting"
|
3972 |
msgstr ""
|
3973 |
|
3974 |
-
#: app/view/activator-free.php:18
|
3975 |
msgid ""
|
3976 |
"Scan your website for file changes, vulnerabilities and injected code and "
|
3977 |
"get notified about anything suspicious."
|
@@ -4004,12 +4012,6 @@ msgid ""
|
|
4004 |
"are turned on by default."
|
4005 |
msgstr ""
|
4006 |
|
4007 |
-
#: app/view/activator.php:18
|
4008 |
-
msgid ""
|
4009 |
-
"Scan your website for file changes, vulnerabilities and injected code and "
|
4010 |
-
"get and get notified about anything suspicious."
|
4011 |
-
msgstr ""
|
4012 |
-
|
4013 |
#: app/view/activator.php:68
|
4014 |
msgid ""
|
4015 |
"Automatically check if you’re on Google’s blacklist every 6 hours. If "
|
@@ -4045,32 +4047,10 @@ msgid ""
|
|
4045 |
"try everything absolutely free."
|
4046 |
msgstr ""
|
4047 |
|
4048 |
-
#: app/view/dashboard.php:
|
4049 |
msgid "FIND OUT MORE"
|
4050 |
msgstr ""
|
4051 |
|
4052 |
-
#: app/view/login-modal.php:3
|
4053 |
-
msgid ""
|
4054 |
-
"To get access to our free API services you simply need to create a WPMU DEV "
|
4055 |
-
"account. It only takes two seconds and it’s absolutely free, forever."
|
4056 |
-
msgstr ""
|
4057 |
-
|
4058 |
-
#: app/view/login-modal.php:7
|
4059 |
-
msgid "First name"
|
4060 |
-
msgstr ""
|
4061 |
-
|
4062 |
-
#: app/view/login-modal.php:9
|
4063 |
-
msgid "Email address"
|
4064 |
-
msgstr ""
|
4065 |
-
|
4066 |
-
#: app/view/login-modal.php:12
|
4067 |
-
msgid "minimum 8 characters"
|
4068 |
-
msgstr ""
|
4069 |
-
|
4070 |
-
#: app/view/login-modal.php:22
|
4071 |
-
msgid "Create Account"
|
4072 |
-
msgstr ""
|
4073 |
-
|
4074 |
#: app/view/requirement.php:11
|
4075 |
msgid ""
|
4076 |
"Defender is currently scanning your files for malicious code, please be "
|
@@ -4223,6 +4203,10 @@ msgstr ""
|
|
4223 |
msgid "<br/>Something went wrong. Please try again later!"
|
4224 |
msgstr ""
|
4225 |
|
|
|
|
|
|
|
|
|
4226 |
#: free-dashboard/module.php:377
|
4227 |
msgid ""
|
4228 |
"We're happy that you've chosen to install %s! Are you interested in how to "
|
@@ -4259,7 +4243,7 @@ msgstr ""
|
|
4259 |
msgid "Rate %s"
|
4260 |
msgstr ""
|
4261 |
|
4262 |
-
#: main-activator.php:
|
4263 |
msgid ""
|
4264 |
"We noticed you have both the free and pro versions of Defender installed, "
|
4265 |
"so we've automatically deactivated the free version for you."
|
@@ -4273,10 +4257,6 @@ msgstr ""
|
|
4273 |
msgid "Remove"
|
4274 |
msgstr ""
|
4275 |
|
4276 |
-
#. Plugin Name of the plugin/theme
|
4277 |
-
msgid "WP Defender Pro"
|
4278 |
-
msgstr ""
|
4279 |
-
|
4280 |
#. Plugin URI of the plugin/theme
|
4281 |
msgid "https://premium.wpmudev.org/project/wp-defender/"
|
4282 |
msgstr ""
|
1 |
+
# Copyright (C) 2018 WPMU DEV
|
2 |
# This file is distributed under the GNU General Public License (Version 2 - GPLv2).
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Defender Pro 1.7.6\n"
|
6 |
"Report-Msgid-Bugs-To: https://wpmudev.org\n"
|
7 |
+
"POT-Creation-Date: 2018-03-19 04:30:34+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
11 |
+
"PO-Revision-Date: 2018-MO-DA HO:MI+ZONE\n"
|
12 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
13 |
"Language-Team: LANGUAGE <EMAIL@ADDRESS>\n"
|
14 |
"X-Generator: grunt-wp-i18n1.0.0\n"
|
19 |
msgid "BLACKLIST MONITOR"
|
20 |
msgstr ""
|
21 |
|
22 |
+
#: app/behavior/blacklist-free.php:25 app/behavior/blacklist.php:61
|
23 |
#: app/module/audit/behavior/audit-free.php:20
|
24 |
#: app/module/scan/behavior/scan.php:136 app/module/scan/behavior/scan.php:151
|
25 |
#: app/module/scan/view/layouts/layout.php:61
|
29 |
msgid "Try Defender Pro free today"
|
30 |
msgstr ""
|
31 |
|
32 |
+
#: app/behavior/blacklist-free.php:26 app/behavior/blacklist.php:62
|
33 |
#: app/module/audit/behavior/audit-free.php:20
|
34 |
msgid "PRO FEATURE"
|
35 |
msgstr ""
|
36 |
|
37 |
+
#: app/behavior/blacklist-free.php:30 app/behavior/blacklist.php:34
|
38 |
#: app/behavior/blacklist.php:66
|
39 |
msgid ""
|
40 |
"Automatically check if you’re on Google’s blacklist every 6 hours. If "
|
42 |
" wrong, we’ll let you know via email."
|
43 |
msgstr ""
|
44 |
|
45 |
+
#: app/behavior/blacklist-free.php:35 app/behavior/blacklist.php:70
|
46 |
#: app/module/audit/view/free.php:17
|
47 |
#: app/module/ip-lockout/view/notification/report-free.php:5
|
48 |
#: app/module/scan/view/automation-free.php:5
|
152 |
msgstr ""
|
153 |
|
154 |
#: app/behavior/report-free.php:129 app/behavior/report.php:224
|
155 |
+
#: app/behavior/utils.php:909 free/utils.php:656
|
156 |
msgid "daily"
|
157 |
msgstr ""
|
158 |
|
159 |
#: app/behavior/report-free.php:132 app/behavior/report.php:227
|
160 |
+
#: app/behavior/utils.php:912 free/utils.php:659
|
161 |
msgid "weekly"
|
162 |
msgstr ""
|
163 |
|
164 |
#: app/behavior/report-free.php:135 app/behavior/report.php:230
|
165 |
+
#: app/behavior/utils.php:915 free/utils.php:662
|
166 |
msgid "monthly"
|
167 |
msgstr ""
|
168 |
|
216 |
msgid "Guest"
|
217 |
msgstr ""
|
218 |
|
219 |
+
#: app/behavior/utils.php:737
|
220 |
msgid "WordPress Core Integrity"
|
221 |
msgstr ""
|
222 |
|
223 |
+
#: app/behavior/utils.php:738
|
224 |
msgid "Plugins & Themes vulnerability"
|
225 |
msgstr ""
|
226 |
|
227 |
+
#: app/behavior/utils.php:739 app/module/scan/behavior/scan.php:145
|
228 |
#: app/module/scan/view/layouts/layout.php:70
|
229 |
#: app/module/scan/view/setting-free.php:50 app/module/scan/view/setting.php:43
|
230 |
#: app/view/settings.php:98
|
231 |
msgid "Suspicious Code"
|
232 |
msgstr ""
|
233 |
|
234 |
+
#: app/behavior/utils.php:768 app/module/audit/controller/main.php:144
|
235 |
+
#: app/module/ip-lockout/controller/main.php:92
|
236 |
+
msgid "Never"
|
237 |
+
msgstr ""
|
238 |
+
|
239 |
+
#: app/behavior/utils.php:892 free/utils.php:639
|
240 |
msgid "Please upgrade to 5.3 or later"
|
241 |
msgstr ""
|
242 |
|
244 |
msgid "Dashboard"
|
245 |
msgstr ""
|
246 |
|
247 |
+
#: app/controller/dashboard.php:324 app/controller/requirement.php:69
|
248 |
+
#: app/module/ip-lockout/view/locked.php:75
|
249 |
msgid "Defender"
|
250 |
msgstr ""
|
251 |
|
252 |
+
#. Plugin Name of the plugin/theme
|
253 |
+
msgid "Defender Pro"
|
254 |
+
msgstr ""
|
255 |
+
|
256 |
+
#: app/controller/dashboard.php:358
|
257 |
msgid "QUICK SETUP"
|
258 |
msgstr ""
|
259 |
|
260 |
+
#: app/controller/dashboard.php:358
|
261 |
msgid "Skip"
|
262 |
msgstr ""
|
263 |
|
264 |
+
#: app/controller/dashboard.php:359
|
265 |
msgid "Activating File Scanning..."
|
266 |
msgstr ""
|
267 |
|
268 |
+
#: app/controller/dashboard.php:360
|
269 |
msgid "Activating Audit Module..."
|
270 |
msgstr ""
|
271 |
|
272 |
+
#: app/controller/dashboard.php:361
|
273 |
msgid "Activating IP Lockouts Module..."
|
274 |
msgstr ""
|
275 |
|
276 |
+
#: app/controller/dashboard.php:362
|
277 |
msgid "Activating Blacklist Monitoring..."
|
278 |
msgstr ""
|
279 |
|
410 |
msgstr ""
|
411 |
|
412 |
#: app/module/advanced-tools/controller/main.php:457
|
413 |
+
#: app/module/audit/controller/main.php:197
|
414 |
+
#: app/module/ip-lockout/controller/main.php:700
|
415 |
#: app/module/scan/controller/main.php:306
|
416 |
msgid "Your settings have been updated."
|
417 |
msgstr ""
|
492 |
msgstr ""
|
493 |
|
494 |
#: app/module/advanced-tools/view/login/enabled.php:12
|
495 |
+
msgid "Disable"
|
496 |
msgstr ""
|
497 |
|
498 |
#: app/module/advanced-tools/view/login/enabled.php:17
|
629 |
msgid "Please hold on, Defender will update Audit information soon..."
|
630 |
msgstr ""
|
631 |
|
632 |
+
#: app/module/audit/component/audit-api.php:58
|
633 |
+
#: app/module/audit/component/audit-api.php:90
|
634 |
msgid ""
|
635 |
"Whoops, Defender had trouble loading up your event log. You can try a <a "
|
636 |
"href='%s'class=''>quick refresh</a> of this page or check back again "
|
637 |
"later."
|
638 |
msgstr ""
|
639 |
|
640 |
+
#: app/module/audit/component/audit-api.php:115
|
641 |
msgid "trashed"
|
642 |
msgstr ""
|
643 |
|
644 |
+
#: app/module/audit/component/audit-api.php:116
|
645 |
msgid "updated"
|
646 |
msgstr ""
|
647 |
|
648 |
+
#: app/module/audit/component/audit-api.php:117
|
649 |
msgid "deleted"
|
650 |
msgstr ""
|
651 |
|
652 |
+
#: app/module/audit/component/audit-api.php:118
|
653 |
msgid "created"
|
654 |
msgstr ""
|
655 |
|
656 |
+
#: app/module/audit/component/audit-api.php:119
|
657 |
msgid "restored"
|
658 |
msgstr ""
|
659 |
|
660 |
+
#: app/module/audit/component/audit-api.php:162
|
661 |
msgid "year"
|
662 |
msgstr ""
|
663 |
|
664 |
+
#: app/module/audit/component/audit-api.php:163
|
665 |
msgid "month"
|
666 |
msgstr ""
|
667 |
|
668 |
+
#: app/module/audit/component/audit-api.php:164
|
669 |
msgid "week"
|
670 |
msgstr ""
|
671 |
|
672 |
+
#: app/module/audit/component/audit-api.php:165
|
673 |
msgid "day"
|
674 |
msgstr ""
|
675 |
|
676 |
+
#: app/module/audit/component/audit-api.php:166
|
677 |
msgid "hour"
|
678 |
msgstr ""
|
679 |
|
680 |
+
#: app/module/audit/component/audit-api.php:167
|
681 |
msgid "minute"
|
682 |
msgstr ""
|
683 |
|
684 |
+
#: app/module/audit/component/audit-api.php:168
|
685 |
msgid "second"
|
686 |
msgstr ""
|
687 |
|
1074 |
msgid "Login Name"
|
1075 |
msgstr ""
|
1076 |
|
1077 |
+
#: app/module/audit/component/options-audit.php:175
|
1078 |
msgid "Password"
|
1079 |
msgstr ""
|
1080 |
|
1173 |
#: app/module/scan/view/layouts/layout.php:132
|
1174 |
#: app/module/scan/view/layouts/layout.php:149
|
1175 |
#: app/module/scan/view/setting-free.php:3 app/module/scan/view/setting.php:3
|
1176 |
+
#: app/view/settings.php:6 free/main-activator.php:157 main-activator.php:98
|
1177 |
msgid "Settings"
|
1178 |
msgstr ""
|
1179 |
|
1283 |
msgstr ""
|
1284 |
|
1285 |
#: app/module/audit/controller/main-free.php:36
|
1286 |
+
#: app/module/audit/controller/main.php:506
|
1287 |
#: app/module/audit/view/pro-feature.php:22
|
1288 |
#: app/module/ip-lockout/view/pro-feature.php:22
|
1289 |
#: app/module/scan/view/pro-feature.php:22 app/view/activator.php:33
|
1291 |
msgid "Audit Logging"
|
1292 |
msgstr ""
|
1293 |
|
1294 |
+
#: app/module/audit/controller/main.php:84 app/module/audit/view/table.php:20
|
1295 |
msgid "Summary"
|
1296 |
msgstr ""
|
1297 |
|
1298 |
+
#: app/module/audit/controller/main.php:85 app/module/audit/view/table.php:58
|
1299 |
#: app/module/audit/view/table.php:154
|
1300 |
msgid "Date / Time"
|
1301 |
msgstr ""
|
1302 |
|
1303 |
+
#: app/module/audit/controller/main.php:86 app/module/audit/view/table.php:54
|
1304 |
#: app/module/audit/view/table.php:104
|
1305 |
msgid "Context"
|
1306 |
msgstr ""
|
1307 |
|
1308 |
+
#: app/module/audit/controller/main.php:87 app/module/audit/view/table.php:55
|
1309 |
#: app/module/audit/view/table.php:115
|
1310 |
msgid "Type"
|
1311 |
msgstr ""
|
1312 |
|
1313 |
+
#: app/module/audit/controller/main.php:88 app/module/audit/view/table.php:56
|
1314 |
#: app/module/audit/view/table.php:126
|
1315 |
msgid "IP address"
|
1316 |
msgstr ""
|
1317 |
|
1318 |
+
#: app/module/audit/controller/main.php:89 app/module/audit/view/table.php:57
|
1319 |
#: app/module/audit/view/table.php:137
|
1320 |
msgid "User"
|
1321 |
msgstr ""
|
1322 |
|
1323 |
+
#: app/module/audit/controller/main.php:204
|
|
|
|
|
|
|
|
|
|
|
1324 |
#: app/module/audit/view/layouts/layout.php:39
|
1325 |
msgid "at %s"
|
1326 |
msgstr ""
|
1327 |
|
1328 |
+
#: app/module/audit/controller/main.php:206
|
1329 |
#: app/module/audit/view/layouts/layout.php:42
|
1330 |
msgid "%s at %s"
|
1331 |
msgstr ""
|
1332 |
|
1333 |
+
#: app/module/audit/controller/main.php:346
|
1334 |
msgid "Hi {USER_NAME},"
|
1335 |
msgstr ""
|
1336 |
|
1337 |
+
#: app/module/audit/controller/main.php:348
|
1338 |
msgid ""
|
1339 |
"It’s WP Defender here, reporting from the frontline with a quick update on "
|
1340 |
"what’s been happening at <a href=\"%s\">%s</a>."
|
1341 |
msgstr ""
|
1342 |
|
1343 |
+
#: app/module/audit/controller/main.php:360
|
1344 |
msgid "Event Type"
|
1345 |
msgstr ""
|
1346 |
|
1347 |
+
#: app/module/audit/controller/main.php:364
|
1348 |
msgid "Action Summaries"
|
1349 |
msgstr ""
|
1350 |
|
1351 |
+
#: app/module/audit/controller/main.php:405
|
1352 |
msgid "You can view the full audit report for your site here."
|
1353 |
msgstr ""
|
1354 |
|
1355 |
+
#: app/module/audit/controller/main.php:438
|
1356 |
msgid "There were no events logged for %s"
|
1357 |
msgstr ""
|
1358 |
|
1359 |
+
#: app/module/audit/controller/main.php:443
|
1360 |
+
#: app/module/audit/controller/main.php:469
|
1361 |
msgid "Here’s what’s been happening at %s"
|
1362 |
msgstr ""
|
1363 |
|
1364 |
+
#: app/module/audit/controller/main.php:562 app/view/settings.php:209
|
1365 |
msgid "Type a user’s name"
|
1366 |
msgstr ""
|
1367 |
|
1368 |
+
#: app/module/audit/controller/main.php:563
|
1369 |
msgid "We did not find an user with this name..."
|
1370 |
msgstr ""
|
1371 |
|
1437 |
msgstr ""
|
1438 |
|
1439 |
#: app/module/audit/view/free.php:9 free/main-activator.php:118
|
1440 |
+
#: free/main-activator.php:163
|
1441 |
msgid "Upgrade"
|
1442 |
msgstr ""
|
1443 |
|
1769 |
#: app/module/hardener/component/protect-information-service.php:46
|
1770 |
#: app/module/hardener/component/protect-information-service.php:69
|
1771 |
#: app/module/hardener/component/security-key-service.php:48
|
1772 |
+
#: app/module/hardener/component/servers/apache-service.php:67
|
1773 |
+
#: app/module/hardener/component/servers/apache-service.php:71
|
1774 |
+
#: app/module/hardener/component/servers/apache-service.php:111
|
1775 |
+
#: app/module/hardener/component/servers/apache-service.php:115
|
1776 |
+
#: app/module/hardener/component/servers/apache-service.php:169
|
1777 |
+
#: app/module/hardener/component/servers/apache-service.php:173
|
1778 |
+
#: app/module/hardener/component/servers/apache-service.php:219
|
1779 |
+
#: app/module/hardener/component/servers/apache-service.php:250
|
1780 |
+
#: app/module/hardener/component/servers/apache-service.php:284
|
1781 |
msgid "The file %s is not writeable"
|
1782 |
msgstr ""
|
1783 |
|
1860 |
msgid "Duration can only be a number and greater than 0"
|
1861 |
msgstr ""
|
1862 |
|
1863 |
+
#: app/module/hardener/component/login-duration.php:195
|
1864 |
msgid ""
|
1865 |
"Your session has expired because it has been over %d days since your last "
|
1866 |
"login. Please log back in to continue."
|
2273 |
msgstr ""
|
2274 |
|
2275 |
#: app/module/hardener/view/rules/prevent-php-executed.php:138
|
2276 |
+
#: app/module/hardener/view/rules/protect-information.php:98
|
2277 |
msgid "For NGINX servers:"
|
2278 |
msgstr ""
|
2279 |
|
2280 |
#: app/module/hardener/view/rules/prevent-php-executed.php:141
|
2281 |
+
#: app/module/hardener/view/rules/protect-information.php:101
|
2282 |
msgid ""
|
2283 |
"Copy the generated code into your site specific .conf file usually located "
|
2284 |
"in a subdirectory under /etc/nginx/... or /usr/local/nginx/conf/..."
|
2285 |
msgstr ""
|
2286 |
|
2287 |
#: app/module/hardener/view/rules/prevent-php-executed.php:144
|
2288 |
+
#: app/module/hardener/view/rules/protect-information.php:104
|
2289 |
msgid ""
|
2290 |
"Add the code above inside the <strong>server</strong> section in the file, "
|
2291 |
"right before the php location block. Looks something like:"
|
2292 |
msgstr ""
|
2293 |
|
2294 |
#: app/module/hardener/view/rules/prevent-php-executed.php:148
|
2295 |
+
#: app/module/hardener/view/rules/protect-information.php:108
|
2296 |
msgid "Reload NGINX."
|
2297 |
msgstr ""
|
2298 |
|
2299 |
#: app/module/hardener/view/rules/prevent-php-executed.php:151
|
2300 |
+
#: app/module/hardener/view/rules/protect-information.php:111
|
2301 |
msgid ""
|
2302 |
"Still having trouble? <a target='_blank' href=\"%s\">Open a support "
|
2303 |
"ticket</a>."
|
2304 |
msgstr ""
|
2305 |
|
2306 |
#: app/module/hardener/view/rules/prevent-php-executed.php:161
|
2307 |
+
#: app/module/hardener/view/rules/protect-information.php:117
|
2308 |
msgid "For IIS servers, <a href=\"%s\">visit Microsoft TechNet</a>"
|
2309 |
msgstr ""
|
2310 |
|
2348 |
msgid "Your WordPress is protected."
|
2349 |
msgstr ""
|
2350 |
|
2351 |
+
#: app/module/hardener/view/rules/protect-information.php:122
|
2352 |
msgid "For IIS 7 servers, <a href=\"%s\">visit Microsoft TechNet</a>"
|
2353 |
msgstr ""
|
2354 |
|
2459 |
msgstr ""
|
2460 |
|
2461 |
#: app/module/ip-lockout/component/login-protection-api.php:61
|
2462 |
+
#: app/module/ip-lockout/controller/main.php:595
|
2463 |
+
#: app/module/ip-lockout/controller/main.php:604
|
2464 |
msgid ""
|
2465 |
"You have been locked out by the administrator for attempting to login with "
|
2466 |
"a banned username"
|
2599 |
msgid "Demo"
|
2600 |
msgstr ""
|
2601 |
|
2602 |
+
#: app/module/ip-lockout/controller/main.php:409
|
2603 |
msgid "404 lockout alert for %s"
|
2604 |
msgstr ""
|
2605 |
|
2606 |
+
#: app/module/ip-lockout/controller/main.php:436
|
2607 |
msgid "Login lockout alert for %s"
|
2608 |
msgstr ""
|
2609 |
|
2610 |
+
#: app/module/ip-lockout/controller/main.php:534
|
2611 |
msgid "Failed login attempt with username %s"
|
2612 |
msgstr ""
|
2613 |
|
2614 |
+
#: app/module/ip-lockout/controller/main.php:597
|
2615 |
+
#: app/module/ip-lockout/controller/main.php:607
|
2616 |
msgid "%d login attempts remaining"
|
2617 |
msgstr ""
|
2618 |
|
2619 |
+
#: app/module/ip-lockout/controller/main.php:696
|
2620 |
msgid ""
|
2621 |
"Your settings have been updated, however some IPs were removed because "
|
2622 |
"invalid format, or you blacklist yourself"
|
2623 |
msgstr ""
|
2624 |
|
2625 |
+
#: app/module/ip-lockout/controller/main.php:707
|
2626 |
msgid "Login Protection has been activated."
|
2627 |
msgstr ""
|
2628 |
|
2629 |
+
#: app/module/ip-lockout/controller/main.php:709
|
2630 |
msgid "Login Protection has been deactivated."
|
2631 |
msgstr ""
|
2632 |
|
2633 |
+
#: app/module/ip-lockout/controller/main.php:714
|
2634 |
msgid "404 Detection has been activated."
|
2635 |
msgstr ""
|
2636 |
|
2637 |
+
#: app/module/ip-lockout/controller/main.php:716
|
2638 |
msgid "404 Detection has been deactivated."
|
2639 |
msgstr ""
|
2640 |
|
2641 |
+
#: app/module/ip-lockout/controller/main.php:746 app/module/ip-lockout.php:35
|
2642 |
#: app/view/activator-free.php:33 app/view/activator.php:49
|
2643 |
msgid "IP Lockouts"
|
2644 |
msgstr ""
|
2645 |
|
2646 |
+
#: app/module/ip-lockout/controller/main.php:763
|
2647 |
+
#: app/module/ip-lockout/controller/main.php:769
|
2648 |
msgid "Your file is invalid!"
|
2649 |
msgstr ""
|
2650 |
|
2651 |
+
#: app/module/ip-lockout/controller/main.php:775
|
2652 |
msgid "Your file content is invalid!"
|
2653 |
msgstr ""
|
2654 |
|
2655 |
+
#: app/module/ip-lockout/controller/main.php:784
|
2656 |
msgid "Your whitelist/blacklist has been successfully imported."
|
2657 |
msgstr ""
|
2658 |
|
2659 |
+
#: app/module/ip-lockout/controller/main.php:969
|
2660 |
msgid "Thanks for your patience. All set."
|
2661 |
msgstr ""
|
2662 |
|
2900 |
#: app/module/ip-lockout/view/emails/login-lockout.php:483
|
2901 |
#: app/module/ip-lockout/view/emails/login-username-ban.php:482
|
2902 |
#: app/module/ip-lockout/view/emails/report.php:515
|
|
|
2903 |
msgid "WP Defender"
|
2904 |
msgstr ""
|
2905 |
|
3254 |
"Schedule automated file scanning and email reporting for all your websites. "
|
3255 |
"This feature is included in a WPMU DEV membership along with 100+ plugins & "
|
3256 |
"themes, 24/7 support and lots of handy site management tools – <a "
|
3257 |
+
"target='_blank' href=\"%s\">Try it all FREE today!</a>"
|
3258 |
msgstr ""
|
3259 |
|
3260 |
#: app/module/ip-lockout/view/settings.php:10
|
3320 |
msgstr ""
|
3321 |
|
3322 |
#: app/module/scan/behavior/core-result.php:75
|
3323 |
+
#: app/module/scan/behavior/core-result.php:406
|
3324 |
+
#: app/module/scan/behavior/core-result.php:411
|
3325 |
#: app/module/scan/behavior/pro/content-result.php:209
|
3326 |
#: app/module/scan/behavior/pro/content-result.php:230
|
3327 |
#: app/module/scan/behavior/pro/content-result.php:235
|
3329 |
msgstr ""
|
3330 |
|
3331 |
#: app/module/scan/behavior/core-result.php:81
|
3332 |
+
msgid "This file can't be removed"
|
3333 |
msgstr ""
|
3334 |
|
3335 |
#: app/module/scan/behavior/core-result.php:101
|
3369 |
|
3370 |
#: app/module/scan/behavior/core-result.php:199
|
3371 |
msgid ""
|
3372 |
+
"This will permanently remove the selected file/folder. Are you sure you "
|
3373 |
+
"want to continue?"
|
3374 |
msgstr ""
|
3375 |
|
3376 |
#: app/module/scan/behavior/core-result.php:202
|
3383 |
msgid "No"
|
3384 |
msgstr ""
|
3385 |
|
3386 |
+
#: app/module/scan/behavior/core-result.php:216
|
3387 |
msgid "Restore to Original"
|
3388 |
msgstr ""
|
3389 |
|
3390 |
+
#: app/module/scan/behavior/core-result.php:265
|
3391 |
msgid ""
|
3392 |
"A stray file has been found in your site directory, which your version of "
|
3393 |
"WordPress doesn't need. As far as we can tell, the file is harmless (and "
|
3396 |
"beforehand"
|
3397 |
msgstr ""
|
3398 |
|
3399 |
+
#: app/module/scan/behavior/core-result.php:281
|
3400 |
+
#: app/module/scan/behavior/core-result.php:303
|
3401 |
+
#: app/module/scan/behavior/core-result.php:325
|
3402 |
#: app/module/scan/behavior/pro/content-result.php:93
|
3403 |
msgid "Pulling source file..."
|
3404 |
msgstr ""
|
3405 |
|
3406 |
+
#: app/module/scan/behavior/core-result.php:298
|
3407 |
msgid ""
|
3408 |
"Compare your file with the original file in the WordPress repository. "
|
3409 |
"Pieces highlighted in red will be removed when you patch the file, and "
|
3410 |
"pieces highlighted in green will be added."
|
3411 |
msgstr ""
|
3412 |
|
3413 |
+
#: app/module/scan/behavior/core-result.php:320
|
3414 |
msgid ""
|
3415 |
"We found this folder in your WordPress file list. Your current version of "
|
3416 |
"WordPress doesn’t use this folder so it might belong to another "
|
3685 |
msgstr ""
|
3686 |
|
3687 |
#: app/module/scan/controller/main.php:381
|
3688 |
+
msgid "This item has been permanently removed"
|
3689 |
msgstr ""
|
3690 |
|
3691 |
#: app/module/scan/controller/main.php:520
|
3828 |
" Get enhanced security protection as part of a WPMU DEV "
|
3829 |
"membership including 100+ plugins & themes, 24/7\n"
|
3830 |
" support and lots of handy site management tools – <a "
|
3831 |
+
"target='_blank' href=\"%s\">Try Defender Pro today for FREE</a>"
|
3832 |
msgstr ""
|
3833 |
|
3834 |
#: app/module/scan/view/setting-free.php:9 app/module/scan/view/setting.php:9
|
3863 |
"Defenders scans through every line of code on your website, searching for "
|
3864 |
"anything suspicious. This feature is included when you join WPMU DEV, along "
|
3865 |
"with 100+ plugins and themes, 24/7 support and lots of handy site "
|
3866 |
+
"management tools. – <a href=\"%s\" target='_blank' role='button'>Try it "
|
3867 |
+
"all FREE today!\n"
|
3868 |
" </a>"
|
3869 |
msgstr ""
|
3870 |
|
3979 |
msgid "Automatic File Scans & Reporting"
|
3980 |
msgstr ""
|
3981 |
|
3982 |
+
#: app/view/activator-free.php:18 app/view/activator.php:18
|
3983 |
msgid ""
|
3984 |
"Scan your website for file changes, vulnerabilities and injected code and "
|
3985 |
"get notified about anything suspicious."
|
4012 |
"are turned on by default."
|
4013 |
msgstr ""
|
4014 |
|
|
|
|
|
|
|
|
|
|
|
|
|
4015 |
#: app/view/activator.php:68
|
4016 |
msgid ""
|
4017 |
"Automatically check if you’re on Google’s blacklist every 6 hours. If "
|
4047 |
"try everything absolutely free."
|
4048 |
msgstr ""
|
4049 |
|
4050 |
+
#: app/view/dashboard.php:95
|
4051 |
msgid "FIND OUT MORE"
|
4052 |
msgstr ""
|
4053 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4054 |
#: app/view/requirement.php:11
|
4055 |
msgid ""
|
4056 |
"Defender is currently scanning your files for malicious code, please be "
|
4203 |
msgid "<br/>Something went wrong. Please try again later!"
|
4204 |
msgstr ""
|
4205 |
|
4206 |
+
#: free/main-activator.php:162 main-activator.php:103
|
4207 |
+
msgid "Docs"
|
4208 |
+
msgstr ""
|
4209 |
+
|
4210 |
#: free-dashboard/module.php:377
|
4211 |
msgid ""
|
4212 |
"We're happy that you've chosen to install %s! Are you interested in how to "
|
4243 |
msgid "Rate %s"
|
4244 |
msgstr ""
|
4245 |
|
4246 |
+
#: main-activator.php:87
|
4247 |
msgid ""
|
4248 |
"We noticed you have both the free and pro versions of Defender installed, "
|
4249 |
"so we've automatically deactivated the free version for you."
|
4257 |
msgid "Remove"
|
4258 |
msgstr ""
|
4259 |
|
|
|
|
|
|
|
|
|
4260 |
#. Plugin URI of the plugin/theme
|
4261 |
msgid "https://premium.wpmudev.org/project/wp-defender/"
|
4262 |
msgstr ""
|
main-activator.php
CHANGED
@@ -40,7 +40,7 @@ class WD_Main_Activator {
|
|
40 |
update_site_option( 'wd_db_version', "1.7.1" );
|
41 |
}
|
42 |
|
43 |
-
add_filter( 'plugin_action_links_' . plugin_basename(
|
44 |
add_action( 'admin_enqueue_scripts', array( &$this, 'register_styles' ) );
|
45 |
if ( ! \WP_Defender\Behavior\Utils::instance()->checkRequirement() ) {
|
46 |
} else {
|
@@ -146,7 +146,6 @@ class WD_Main_Activator {
|
|
146 |
'message' => __( "<br/>Something went wrong. Please try again later!", "defender-security" )
|
147 |
) );
|
148 |
}
|
149 |
-
|
150 |
}
|
151 |
|
152 |
/**
|
@@ -158,7 +157,12 @@ class WD_Main_Activator {
|
|
158 |
'<a href="' . admin_url( 'admin.php?page=wp-defender' ) . '">' . __( "Settings", "defender-security" ) . '</a>',
|
159 |
);
|
160 |
|
161 |
-
|
|
|
|
|
|
|
|
|
|
|
162 |
}
|
163 |
|
164 |
/**
|
40 |
update_site_option( 'wd_db_version', "1.7.1" );
|
41 |
}
|
42 |
|
43 |
+
add_filter( 'plugin_action_links_' . plugin_basename( wp_defender()->plugin_slug ), array( &$this, 'addSettingsLink' ) );
|
44 |
add_action( 'admin_enqueue_scripts', array( &$this, 'register_styles' ) );
|
45 |
if ( ! \WP_Defender\Behavior\Utils::instance()->checkRequirement() ) {
|
46 |
} else {
|
146 |
'message' => __( "<br/>Something went wrong. Please try again later!", "defender-security" )
|
147 |
) );
|
148 |
}
|
|
|
149 |
}
|
150 |
|
151 |
/**
|
157 |
'<a href="' . admin_url( 'admin.php?page=wp-defender' ) . '">' . __( "Settings", "defender-security" ) . '</a>',
|
158 |
);
|
159 |
|
160 |
+
$mylinks = array_merge( $mylinks, $links );
|
161 |
+
$mylinks = array_merge( $mylinks, array(
|
162 |
+
'<a target="_blank" href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/defender/">' . __( "Docs", "defender-security" ) . '</a>',
|
163 |
+
'<a style="color: #1ABC9C" target="_blank" href="'.\WP_Defender\Behavior\Utils::instance()->campaignURL('defender_wppluginslist_upgrade').'">' . __( "Upgrade", "defender-security" ) . '</a>',
|
164 |
+
) );
|
165 |
+
return $mylinks;
|
166 |
}
|
167 |
|
168 |
/**
|
readme.txt
CHANGED
@@ -1,13 +1,13 @@
|
|
1 |
=== Defender Security, Monitoring, and Hack Protection ===
|
2 |
Plugin Name: Defender Security, Monitoring, and Hack Protection
|
3 |
-
Version: 1.7.
|
4 |
Author: WPMU DEV
|
5 |
Author URI: http://premium.wpmudev.org/
|
6 |
Contributors: WPMUDEV
|
7 |
Tags: Security, Security Tweaks, Hardening, IP lockout, Monitoring, Blacklist, Site Protection, Hacked, Security Scan
|
8 |
Requires at least: 4.6
|
9 |
Tested up to: 4.9.2
|
10 |
-
Stable tag: 1.7.
|
11 |
License: GPL v2 - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
12 |
|
13 |
Protect WordPress from hackers with security tweaks, code scans, 2-Step Verification, IP lockouts, and monitoring.
|
@@ -117,6 +117,11 @@ Hackers and bot attacks are not the only threat to your site. No matter what se
|
|
117 |
|
118 |
== Changelog ==
|
119 |
|
|
|
|
|
|
|
|
|
|
|
120 |
= 1.7.4 =
|
121 |
- Fix: Conflict with Jetpack where Defender 2FA module would not detect if Jetpack 2FA was disabled.
|
122 |
- Fix: Visitor would get a 404 lockout if landing on a page with many dead links.
|
1 |
=== Defender Security, Monitoring, and Hack Protection ===
|
2 |
Plugin Name: Defender Security, Monitoring, and Hack Protection
|
3 |
+
Version: 1.7.6
|
4 |
Author: WPMU DEV
|
5 |
Author URI: http://premium.wpmudev.org/
|
6 |
Contributors: WPMUDEV
|
7 |
Tags: Security, Security Tweaks, Hardening, IP lockout, Monitoring, Blacklist, Site Protection, Hacked, Security Scan
|
8 |
Requires at least: 4.6
|
9 |
Tested up to: 4.9.2
|
10 |
+
Stable tag: 1.7.6
|
11 |
License: GPL v2 - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
12 |
|
13 |
Protect WordPress from hackers with security tweaks, code scans, 2-Step Verification, IP lockouts, and monitoring.
|
117 |
|
118 |
== Changelog ==
|
119 |
|
120 |
+
= 1.7.6 =
|
121 |
+
- Fix: Defender now can recognize and verify Bing Bot for whitelisting
|
122 |
+
- Fix: Lockout page now will use site title instead of the text 'WP Defender'
|
123 |
+
- Other minor enhancements and fixes
|
124 |
+
|
125 |
= 1.7.4 =
|
126 |
- Fix: Conflict with Jetpack where Defender 2FA module would not detect if Jetpack 2FA was disabled.
|
127 |
- Fix: Visitor would get a 404 lockout if landing on a page with many dead links.
|
wp-defender.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<?php
|
2 |
|
3 |
/**
|
4 |
-
* Plugin Name:
|
5 |
* Plugin URI: https://premium.wpmudev.org/project/wp-defender/
|
6 |
-
* Version: 1.7.
|
7 |
* Description: Get regular security scans, vulnerability reports, safety recommendations and customized hardening for your site in just a few clicks. Defender is the analyst and enforcer who never sleeps.
|
8 |
* Author: WPMU DEV
|
9 |
* Author URI: http://premium.wpmudev.org/
|
1 |
<?php
|
2 |
|
3 |
/**
|
4 |
+
* Plugin Name: Defender
|
5 |
* Plugin URI: https://premium.wpmudev.org/project/wp-defender/
|
6 |
+
* Version: 1.7.6
|
7 |
* Description: Get regular security scans, vulnerability reports, safety recommendations and customized hardening for your site in just a few clicks. Defender is the analyst and enforcer who never sleeps.
|
8 |
* Author: WPMU DEV
|
9 |
* Author URI: http://premium.wpmudev.org/
|