Version Description
- Added a new action hook "aiopws_before_set_404" which triggers just before the AIOWPS sets a 404. (handy for cases when rename login page is used which affects some themes when accessing "wp-admin" directly)
- Fixed some potential SQL injection vulnerabilities.
- Thanks to @chesio for submitting the following changes and applying the fixes.
- Sub-directory install fixes.
- Improve behavior of WP File Access tab.
- Fix invalid nesting of HTML elements.
- Do not block HTTP requests that contain "tag=" in query string.
- Option to enable the 6G firewall.
Download this release
Release Info
Developer | mra13 |
Plugin | All In One WP Security & Firewall |
Version | 4.0.7 |
Comparing to | |
See all releases |
Code changes from version 4.0.3 to 4.0.7
- admin/wp-security-admin-init.php +1 -1
- admin/wp-security-blacklist-menu.php +1 -1
- admin/wp-security-brute-force-menu.php +2 -2
- admin/wp-security-dashboard-menu.php +799 -634
- admin/wp-security-database-menu.php +3 -6
- admin/wp-security-filescan-menu.php +19 -11
- admin/wp-security-filesystem-menu.php +9 -2
- admin/wp-security-firewall-menu.php +56 -17
- admin/wp-security-list-404.php +5 -0
- admin/wp-security-list-acct-activity.php +1 -0
- admin/wp-security-list-comment-spammer-ip.php +48 -1
- admin/wp-security-list-locked-ip.php +3 -1
- admin/wp-security-list-login-fails.php +1 -0
- admin/wp-security-list-permanent-blocked-ip.php +179 -0
- admin/wp-security-misc-options-menu.php +1 -1
- admin/wp-security-settings-menu.php +19 -19
- admin/wp-security-spam-menu.php +140 -10
- admin/wp-security-user-login-menu.php +2 -1
- classes/grade-system/wp-security-feature-item-manager.php +7 -4
- classes/wp-security-backup.php +1 -1
- classes/wp-security-blocking.php +116 -0
- classes/wp-security-configure-settings.php +9 -0
- classes/wp-security-file-scan.php +21 -13
- classes/wp-security-general-init-tasks.php +48 -1
- classes/wp-security-installer.php +56 -49
- classes/wp-security-process-renamed-login-page.php +17 -3
- classes/wp-security-user-login.php +2 -1
- classes/wp-security-utility-htaccess.php +84 -5
- classes/wp-security-utility.php +162 -186
- css/wp-security-admin-styles.css +15 -0
- languages/all-in-one-wp-security-and-firewall-nl_NL.mo +0 -0
- languages/all-in-one-wp-security-and-firewall-nl_NL.po +4748 -0
- languages/index.html +0 -0
- lib/whois/whois.client.php +1 -1
- other-includes/wp-security-stop-users-enumeration.php +7 -9
- readme.txt +32 -4
- wp-security-core.php +7 -3
- wp-security.php +1 -1
admin/wp-security-admin-init.php
CHANGED
@@ -35,7 +35,7 @@ class AIOWPSecurity_Admin_Init
|
|
35 |
add_action('init', array( &$this, 'init_hook_handler_for_admin_side'));
|
36 |
}
|
37 |
}
|
38 |
-
|
39 |
function admin_includes()
|
40 |
{
|
41 |
include_once('wp-security-admin-menu.php');
|
35 |
add_action('init', array( &$this, 'init_hook_handler_for_admin_side'));
|
36 |
}
|
37 |
}
|
38 |
+
|
39 |
function admin_includes()
|
40 |
{
|
41 |
include_once('wp-security-admin-menu.php');
|
admin/wp-security-blacklist-menu.php
CHANGED
@@ -172,7 +172,7 @@ class AIOWPSecurity_Blacklist_Menu extends AIOWPSecurity_Admin_Menu
|
|
172 |
<tr valign="top">
|
173 |
<th scope="row"><?php _e('Enter IP Addresses:', 'all-in-one-wp-security-and-firewall')?></th>
|
174 |
<td>
|
175 |
-
<textarea name="aiowps_banned_ip_addresses" rows="5" cols="50"><?php echo ($result == -1)
|
176 |
<br />
|
177 |
<span class="description"><?php _e('Enter one or more IP addresses or IP ranges.','all-in-one-wp-security-and-firewall');?></span>
|
178 |
<span class="aiowps_more_info_anchor"><span class="aiowps_more_info_toggle_char">+</span><span class="aiowps_more_info_toggle_text"><?php _e('More Info', 'all-in-one-wp-security-and-firewall'); ?></span></span>
|
172 |
<tr valign="top">
|
173 |
<th scope="row"><?php _e('Enter IP Addresses:', 'all-in-one-wp-security-and-firewall')?></th>
|
174 |
<td>
|
175 |
+
<textarea name="aiowps_banned_ip_addresses" rows="5" cols="50"><?php echo ($result == -1)?htmlspecialchars($_POST['aiowps_banned_ip_addresses']):htmlspecialchars($aio_wp_security->configs->get_value('aiowps_banned_ip_addresses')); ?></textarea>
|
176 |
<br />
|
177 |
<span class="description"><?php _e('Enter one or more IP addresses or IP ranges.','all-in-one-wp-security-and-firewall');?></span>
|
178 |
<span class="aiowps_more_info_anchor"><span class="aiowps_more_info_toggle_char">+</span><span class="aiowps_more_info_toggle_text"><?php _e('More Info', 'all-in-one-wp-security-and-firewall'); ?></span></span>
|
admin/wp-security-brute-force-menu.php
CHANGED
@@ -610,7 +610,7 @@ class AIOWPSecurity_Brute_Force_Menu extends AIOWPSecurity_Admin_Menu
|
|
610 |
}
|
611 |
else{
|
612 |
$result = -1;
|
613 |
-
$error_msg = $payload[1][0];
|
614 |
$this->show_msg_error($error_msg);
|
615 |
}
|
616 |
|
@@ -687,7 +687,7 @@ class AIOWPSecurity_Brute_Force_Menu extends AIOWPSecurity_Admin_Menu
|
|
687 |
<tr valign="top">
|
688 |
<th scope="row"><?php _e('Enter Whitelisted IP Addresses:', 'all-in-one-wp-security-and-firewall')?></th>
|
689 |
<td>
|
690 |
-
<textarea name="aiowps_allowed_ip_addresses" rows="5" cols="50"><?php echo ($result == -1)
|
691 |
<br />
|
692 |
<span class="description"><?php _e('Enter one or more IP addresses or IP ranges you wish to include in your whitelist. Only the addresses specified here will have access to the WordPress login page.','all-in-one-wp-security-and-firewall');?></span>
|
693 |
<span class="aiowps_more_info_anchor"><span class="aiowps_more_info_toggle_char">+</span><span class="aiowps_more_info_toggle_text"><?php _e('More Info', 'all-in-one-wp-security-and-firewall'); ?></span></span>
|
610 |
}
|
611 |
else{
|
612 |
$result = -1;
|
613 |
+
$error_msg = htmlspecialchars($payload[1][0]);
|
614 |
$this->show_msg_error($error_msg);
|
615 |
}
|
616 |
|
687 |
<tr valign="top">
|
688 |
<th scope="row"><?php _e('Enter Whitelisted IP Addresses:', 'all-in-one-wp-security-and-firewall')?></th>
|
689 |
<td>
|
690 |
+
<textarea name="aiowps_allowed_ip_addresses" rows="5" cols="50"><?php echo ($result == -1)?htmlspecialchars($_POST['aiowps_allowed_ip_addresses']):htmlspecialchars($aio_wp_security->configs->get_value('aiowps_allowed_ip_addresses')); ?></textarea>
|
691 |
<br />
|
692 |
<span class="description"><?php _e('Enter one or more IP addresses or IP ranges you wish to include in your whitelist. Only the addresses specified here will have access to the WordPress login page.','all-in-one-wp-security-and-firewall');?></span>
|
693 |
<span class="aiowps_more_info_anchor"><span class="aiowps_more_info_toggle_char">+</span><span class="aiowps_more_info_toggle_text"><?php _e('More Info', 'all-in-one-wp-security-and-firewall'); ?></span></span>
|
admin/wp-security-dashboard-menu.php
CHANGED
@@ -3,67 +3,68 @@
|
|
3 |
class AIOWPSecurity_Dashboard_Menu extends AIOWPSecurity_Admin_Menu
|
4 |
{
|
5 |
var $dashboard_menu_page_slug = AIOWPSEC_MAIN_MENU_SLUG;
|
6 |
-
|
7 |
-
|
8 |
|
9 |
var $menu_tabs_handler = array(
|
10 |
-
'tab1' => 'render_tab1',
|
11 |
'tab2' => 'render_tab2',
|
12 |
'tab3' => 'render_tab3',
|
13 |
'tab4' => 'render_tab4',
|
14 |
-
|
15 |
-
|
16 |
-
|
|
|
17 |
{
|
18 |
$this->render_menu_page();
|
19 |
}
|
20 |
|
21 |
-
function set_menu_tabs()
|
22 |
{
|
23 |
$this->menu_tabs = array(
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
|
|
28 |
);
|
29 |
}
|
30 |
|
31 |
-
function get_current_tab()
|
32 |
{
|
33 |
$tab_keys = array_keys($this->menu_tabs);
|
34 |
-
$tab = isset(
|
35 |
return $tab;
|
36 |
}
|
37 |
|
38 |
/*
|
39 |
* Renders our tabs of this menu as nav items
|
40 |
*/
|
41 |
-
function render_menu_tabs()
|
42 |
{
|
43 |
$current_tab = $this->get_current_tab();
|
44 |
|
45 |
echo '<h2 class="nav-tab-wrapper">';
|
46 |
-
foreach (
|
47 |
-
{
|
48 |
$active = $current_tab == $tab_key ? 'nav-tab-active' : '';
|
49 |
-
echo '<a class="nav-tab ' . $active . '" href="?page=' . $this->dashboard_menu_page_slug . '&tab=' . $tab_key . '">' . $tab_caption . '</a>';
|
50 |
}
|
51 |
echo '</h2>';
|
52 |
}
|
53 |
-
|
54 |
/*
|
55 |
* The menu rendering goes here
|
56 |
*/
|
57 |
-
function render_menu_page()
|
58 |
{
|
59 |
echo '<div class="wrap">';
|
60 |
-
echo '<h2>'.__('Dashboard','all-in-one-wp-security-and-firewall').'</h2>';//Interface title
|
61 |
$this->set_menu_tabs();
|
62 |
$tab = $this->get_current_tab();
|
63 |
$this->render_menu_tabs();
|
64 |
?>
|
65 |
<div id="poststuff"><div id="post-body">
|
66 |
-
<?php
|
67 |
//$tab_keys = array_keys($this->menu_tabs);
|
68 |
call_user_func(array(&$this, $this->menu_tabs_handler[$tab]));
|
69 |
?>
|
@@ -71,570 +72,654 @@ class AIOWPSecurity_Dashboard_Menu extends AIOWPSecurity_Admin_Menu
|
|
71 |
</div><!-- end of wrap -->
|
72 |
<?php
|
73 |
}
|
74 |
-
|
75 |
function render_tab1()
|
76 |
{
|
77 |
echo '<div class="aio_grey_box">';
|
78 |
-
|
79 |
-
echo '<p><a href="https://www.tipsandtricks-hq.com/development-center" target="_blank">'.__('Follow us','all-in-one-wp-security-and-firewall').'</a> on '.__('Twitter, Google+ or via Email to stay up to date about the new security features of this plugin.','all-in-one-wp-security-and-firewall').'</p>';
|
80 |
echo '</div>';
|
81 |
|
82 |
echo "<script type='text/javascript' src='https://www.google.com/jsapi'></script>";//Include the google chart library
|
83 |
-
|
84 |
global $aiowps_feature_mgr;
|
85 |
global $aio_wp_security;
|
86 |
$feature_mgr = $aiowps_feature_mgr;
|
87 |
$total_site_security_points = $feature_mgr->get_total_site_points();
|
88 |
$total_security_points_achievable = $feature_mgr->get_total_achievable_points();
|
89 |
-
|
90 |
?>
|
91 |
<div id="aiowps_dashboard_widget_content">
|
92 |
-
|
93 |
-
<div class="aiowps_dashboard_box_small">
|
94 |
-
<div class="postbox">
|
95 |
-
<h3 class="hndle"><label for="title"><?php _e('Security Strength Meter', 'all-in-one-wp-security-and-firewall');?></label></h3>
|
96 |
-
<div class="inside">
|
97 |
-
|
98 |
-
<script type='text/javascript'>
|
99 |
-
google.load('visualization', '1', {packages:['gauge']});
|
100 |
-
google.setOnLoadCallback(drawChart);
|
101 |
-
function drawChart() {
|
102 |
-
var data = google.visualization.arrayToDataTable([
|
103 |
-
['Label', 'Value'],
|
104 |
-
['Strength', <?php echo $total_site_security_points; ?>]
|
105 |
-
]);
|
106 |
-
|
107 |
-
var options = {
|
108 |
-
width: 320, height: 200, max: <?php echo $total_security_points_achievable; ?>,
|
109 |
-
greenColor: '8EFA9B', yellowColor: 'F5EE90', redColor: 'FA7373',
|
110 |
-
redFrom: 0, redTo: 10,
|
111 |
-
yellowFrom:10, yellowTo: 50,
|
112 |
-
greenFrom:50, greenTo: <?php echo $total_security_points_achievable; ?>,
|
113 |
-
minorTicks: 5
|
114 |
-
};
|
115 |
-
|
116 |
-
var chart = new google.visualization.Gauge(document.getElementById('security_strength_chart_div'));
|
117 |
-
chart.draw(data, options);
|
118 |
-
}
|
119 |
-
</script>
|
120 |
-
<div id='security_strength_chart_div'></div>
|
121 |
-
|
122 |
-
<div class="aiowps_dashboard_widget_footer">
|
123 |
-
<?php
|
124 |
-
_e('Total Achievable Points: ','all-in-one-wp-security-and-firewall');
|
125 |
-
echo '<strong>'.$total_security_points_achievable.'</strong><br />';
|
126 |
-
_e('Current Score of Your Site: ','all-in-one-wp-security-and-firewall');
|
127 |
-
echo '<strong>'.$total_site_security_points.'</strong>';
|
128 |
-
?>
|
129 |
-
</div>
|
130 |
-
|
131 |
-
</div></div>
|
132 |
-
</div><!-- aiowps_dashboard_box -->
|
133 |
-
|
134 |
-
<div class="aiowps_dashboard_box_small">
|
135 |
-
<div class="postbox">
|
136 |
-
<h3 class="hndle"><label for="title"><?php _e('Security Points Breakdown', 'all-in-one-wp-security-and-firewall');?></label></h3>
|
137 |
-
<div class="inside">
|
138 |
-
|
139 |
-
<?php
|
140 |
-
$feature_items = $feature_mgr->feature_items;
|
141 |
-
$pt_src_chart_data = "";
|
142 |
-
$pt_src_chart_data .= "['Feature Name', 'Points'],";
|
143 |
-
foreach($feature_items as $item)
|
144 |
-
{
|
145 |
-
if($item->feature_status == $feature_mgr->feature_active)
|
146 |
-
{
|
147 |
-
$pt_src_chart_data .= "['".$item->feature_name."', ".$item->item_points."],";
|
148 |
-
}
|
149 |
-
}
|
150 |
-
|
151 |
-
?>
|
152 |
-
<script type="text/javascript">
|
153 |
-
google.load("visualization", "1", {packages:["corechart"]});
|
154 |
-
google.setOnLoadCallback(drawChart);
|
155 |
-
function drawChart() {
|
156 |
-
var data = google.visualization.arrayToDataTable([
|
157 |
-
<?php echo $pt_src_chart_data; ?>
|
158 |
-
]);
|
159 |
-
|
160 |
-
var options = {
|
161 |
-
height: '250',
|
162 |
-
width: '320',
|
163 |
-
backgroundColor: 'F6F6F6'
|
164 |
-
};
|
165 |
-
|
166 |
-
var chart = new google.visualization.PieChart(document.getElementById('points_source_breakdown_chart_div'));
|
167 |
-
chart.draw(data, options);
|
168 |
-
}
|
169 |
-
</script>
|
170 |
-
<div id='points_source_breakdown_chart_div'></div>
|
171 |
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
<h3 class="hndle"><label for="title"><?php _e('Spread the Word', 'all-in-one-wp-security-and-firewall');?></label></h3>
|
178 |
-
<div class="inside">
|
179 |
-
|
180 |
-
<p><?php _e('We are working hard to make your WordPress site more secure. Please support us, here is how:', 'all-in-one-wp-security-and-firewall');?></p>
|
181 |
-
<p>
|
182 |
-
<a href="https://plus.google.com/+Tipsandtricks-hq/" target="_blank">Follow us on Google+</a>
|
183 |
-
</p>
|
184 |
-
<p>
|
185 |
-
<a href="http://twitter.com/intent/tweet?url=https://www.tipsandtricks-hq.com/wordpress-security-and-firewall-plugin&text=I love the All In One WP Security and Firewall plugin!" target="_blank" class="aio_tweet_link">Post to Twitter</a>
|
186 |
-
</p>
|
187 |
-
<p>
|
188 |
-
<a href="http://wordpress.org/support/view/plugin-reviews/all-in-one-wp-security-and-firewall/" target="_blank" class="aio_rate_us_link">Give us a Good Rating</a>
|
189 |
-
</p>
|
190 |
-
|
191 |
-
</div></div>
|
192 |
-
</div><!-- aiowps_dashboard_box -->
|
193 |
-
|
194 |
-
<div class="aiowps_dashboard_box_small">
|
195 |
-
<div class="postbox">
|
196 |
-
<h3 class="hndle"><label for="title"><?php _e('Critical Feature Status', 'all-in-one-wp-security-and-firewall');?></label></h3>
|
197 |
-
<div class="inside">
|
198 |
-
|
199 |
-
<?php
|
200 |
-
_e('Below is the current status of the critical features that you should activate on your site to achieve a minimum level of recommended security','all-in-one-wp-security-and-firewall');
|
201 |
-
$feature_items = $feature_mgr->feature_items;
|
202 |
-
$username_admin_feature = $feature_mgr->get_feature_item_by_id("user-accounts-change-admin-user");
|
203 |
-
echo '<div class="aiowps_feature_status_container">';
|
204 |
-
echo '<div class="aiowps_feature_status_name">'.__('Admin Username','all-in-one-wp-security-and-firewall').'</div>';
|
205 |
-
echo '<a href="admin.php?page='.AIOWPSEC_USER_ACCOUNTS_MENU_SLUG.'">';
|
206 |
-
echo '<div class="aiowps_feature_status_bar">';
|
207 |
-
if($username_admin_feature->feature_status == $feature_mgr->feature_active){
|
208 |
-
echo '<div class="aiowps_feature_status_label aiowps_feature_status_on">On</div>';
|
209 |
-
echo '<div class="aiowps_feature_status_label">Off</div>';
|
210 |
-
}else{
|
211 |
-
echo '<div class="aiowps_feature_status_label">On</div>';
|
212 |
-
echo '<div class="aiowps_feature_status_label aiowps_feature_status_off">Off</div>';
|
213 |
-
}
|
214 |
-
echo '</div></div></a>';
|
215 |
-
echo '<div class="aio_clear_float"></div>';
|
216 |
-
|
217 |
-
$login_lockdown_feature = $feature_mgr->get_feature_item_by_id("user-login-login-lockdown");
|
218 |
-
echo '<div class="aiowps_feature_status_container">';
|
219 |
-
echo '<div class="aiowps_feature_status_name">'.__('Login Lockdown','all-in-one-wp-security-and-firewall').'</div>';
|
220 |
-
echo '<a href="admin.php?page='.AIOWPSEC_USER_LOGIN_MENU_SLUG.'">';
|
221 |
-
echo '<div class="aiowps_feature_status_bar">';
|
222 |
-
if($login_lockdown_feature->feature_status == $feature_mgr->feature_active){
|
223 |
-
echo '<div class="aiowps_feature_status_label aiowps_feature_status_on">On</div>';
|
224 |
-
echo '<div class="aiowps_feature_status_label">Off</div>';
|
225 |
-
}else{
|
226 |
-
echo '<div class="aiowps_feature_status_label">On</div>';
|
227 |
-
echo '<div class="aiowps_feature_status_label aiowps_feature_status_off">Off</div>';
|
228 |
-
}
|
229 |
-
echo '</div></div></a>';
|
230 |
-
echo '<div class="aio_clear_float"></div>';
|
231 |
-
|
232 |
-
$filesystem_feature = $feature_mgr->get_feature_item_by_id("filesystem-file-permissions");
|
233 |
-
echo '<div class="aiowps_feature_status_container">';
|
234 |
-
echo '<div class="aiowps_feature_status_name">'.__('File Permission','all-in-one-wp-security-and-firewall').'</div>';
|
235 |
-
echo '<a href="admin.php?page='.AIOWPSEC_FILESYSTEM_MENU_SLUG.'">';
|
236 |
-
echo '<div class="aiowps_feature_status_bar">';
|
237 |
-
if($filesystem_feature->feature_status == $feature_mgr->feature_active){
|
238 |
-
echo '<div class="aiowps_feature_status_label aiowps_feature_status_on">On</div>';
|
239 |
-
echo '<div class="aiowps_feature_status_label">Off</div>';
|
240 |
-
}else{
|
241 |
-
echo '<div class="aiowps_feature_status_label">On</div>';
|
242 |
-
echo '<div class="aiowps_feature_status_label aiowps_feature_status_off">Off</div>';
|
243 |
-
}
|
244 |
-
echo '</div></div></a>';
|
245 |
-
echo '<div class="aio_clear_float"></div>';
|
246 |
-
|
247 |
-
$basic_firewall_feature = $feature_mgr->get_feature_item_by_id("firewall-basic-rules");
|
248 |
-
echo '<div class="aiowps_feature_status_container">';
|
249 |
-
echo '<div class="aiowps_feature_status_name">'.__('Basic Firewall','all-in-one-wp-security-and-firewall').'</div>';
|
250 |
-
echo '<a href="admin.php?page='.AIOWPSEC_FIREWALL_MENU_SLUG.'">';
|
251 |
-
echo '<div class="aiowps_feature_status_bar">';
|
252 |
-
if($basic_firewall_feature->feature_status == $feature_mgr->feature_active){
|
253 |
-
echo '<div class="aiowps_feature_status_label aiowps_feature_status_on">On</div>';
|
254 |
-
echo '<div class="aiowps_feature_status_label">Off</div>';
|
255 |
-
}else{
|
256 |
-
echo '<div class="aiowps_feature_status_label">On</div>';
|
257 |
-
echo '<div class="aiowps_feature_status_label aiowps_feature_status_off">Off</div>';
|
258 |
-
}
|
259 |
-
echo '</div></div></a>';
|
260 |
-
echo '<div class="aio_clear_float"></div>';
|
261 |
-
?>
|
262 |
-
</div></div>
|
263 |
-
</div><!-- aiowps_dashboard_box -->
|
264 |
|
265 |
-
|
266 |
-
<div class="postbox">
|
267 |
-
<h3 class="hndle"><label for="title"><?php _e('Last 5 Logins', 'all-in-one-wp-security-and-firewall');?></label></h3>
|
268 |
-
<div class="inside">
|
269 |
-
<?php
|
270 |
-
global $wpdb;
|
271 |
-
$login_activity_table = AIOWPSEC_TBL_USER_LOGIN_ACTIVITY;
|
272 |
-
|
273 |
-
/* -- Ordering parameters -- */
|
274 |
-
//Parameters that are going to be used to order the result
|
275 |
-
isset($_GET["orderby"]) ? $orderby = strip_tags($_GET["orderby"]): $orderby = '';
|
276 |
-
isset($_GET["order"]) ? $order = strip_tags($_GET["order"]): $order = '';
|
277 |
-
|
278 |
-
$orderby = !empty($orderby) ? $orderby : 'login_date';
|
279 |
-
$order = !empty($order) ? $order : 'DESC';
|
280 |
-
|
281 |
-
$data = $wpdb->get_results($wpdb->prepare("SELECT * FROM $login_activity_table ORDER BY login_date DESC LIMIT %d", 5), ARRAY_A); //Get the last 5 records
|
282 |
-
|
283 |
-
if ($data == NULL){
|
284 |
-
echo '<p>'.__('No data found!','all-in-one-wp-security-and-firewall').'</p>';
|
285 |
-
|
286 |
-
}else{
|
287 |
-
$login_summary_table = '';
|
288 |
-
echo '<p>'.__('Last 5 logins summary:','all-in-one-wp-security-and-firewall').'</p>';
|
289 |
-
$login_summary_table .= '<table class="widefat">';
|
290 |
-
$login_summary_table .= '<thead>';
|
291 |
-
$login_summary_table .= '<tr>';
|
292 |
-
$login_summary_table .= '<th>'.__('User','all-in-one-wp-security-and-firewall').'</th>';
|
293 |
-
$login_summary_table .= '<th>'.__('Date','all-in-one-wp-security-and-firewall').'</th>';
|
294 |
-
$login_summary_table .= '<th>'.__('IP','all-in-one-wp-security-and-firewall').'</th>';
|
295 |
-
$login_summary_table .= '</tr>';
|
296 |
-
$login_summary_table .= '</thead>';
|
297 |
-
foreach ($data as $entry) {
|
298 |
-
$login_summary_table .= '<tr>';
|
299 |
-
$login_summary_table .= '<td>'.$entry['user_login'].'</td>';
|
300 |
-
$login_summary_table .= '<td>'.$entry['login_date'].'</td>';
|
301 |
-
$login_summary_table .= '<td>'.$entry['login_ip'].'</td>';
|
302 |
-
$login_summary_table .= '</tr>';
|
303 |
-
}
|
304 |
-
$login_summary_table .= '</table>';
|
305 |
-
echo $login_summary_table;
|
306 |
-
}
|
307 |
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
<div class="inside">
|
317 |
-
<?php
|
318 |
-
if($aio_wp_security->configs->get_value('aiowps_site_lockout') == '1'){
|
319 |
-
echo '<p>'.__('Maintenance mode is currently enabled. Remember to turn it off when you are done','all-in-one-wp-security-and-firewall').'</p>';
|
320 |
-
}
|
321 |
-
else{
|
322 |
-
echo '<p>'.__('Maintenance mode is currently off.','all-in-one-wp-security-and-firewall').'</p>';
|
323 |
-
}
|
324 |
-
|
325 |
-
echo '<div class="aiowps_feature_status_container">';
|
326 |
-
echo '<div class="aiowps_feature_status_name">'.__('Maintenance Mode','all-in-one-wp-security-and-firewall').'</div>';
|
327 |
-
echo '<a href="admin.php?page='.AIOWPSEC_MAINTENANCE_MENU_SLUG.'">';
|
328 |
-
echo '<div class="aiowps_feature_status_bar">';
|
329 |
-
if($aio_wp_security->configs->get_value('aiowps_site_lockout') == '1'){//Maintenance mode is enabled
|
330 |
-
echo '<div class="aiowps_feature_status_label aiowps_feature_status_off">On</div>';//If enabled show red by usign the "off" class
|
331 |
-
echo '<div class="aiowps_feature_status_label">Off</div>';
|
332 |
-
}else{
|
333 |
-
echo '<div class="aiowps_feature_status_label">On</div>';
|
334 |
-
echo '<div class="aiowps_feature_status_label aiowps_feature_status_on">Off</div>';
|
335 |
-
}
|
336 |
-
echo '</div></div></a>';
|
337 |
-
echo '<div class="aio_clear_float"></div>';
|
338 |
-
?>
|
339 |
-
</div></div>
|
340 |
-
</div><!-- aiowps_dashboard_box -->
|
341 |
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
<?php
|
351 |
-
$brute_force_login_feature_link = '<a href="admin.php?page='.AIOWPSEC_BRUTE_FORCE_MENU_SLUG.'&tab=tab2" target="_blank">'.__('Cookie-Based Brute Force','all-in-one-wp-security-and-firewall').'</a>';
|
352 |
-
$brute_force_feature_secret_word = $aio_wp_security->configs->get_value('aiowps_brute_force_secret_word');
|
353 |
-
echo '<div class="aio_yellow_box">';
|
354 |
-
|
355 |
-
echo '<p>'.sprintf( __('The %s feature is currently active.', 'all-in-one-wp-security-and-firewall'), $brute_force_login_feature_link).'</p>';
|
356 |
-
echo '<p>'.__('Your new WordPress login URL is now:','all-in-one-wp-security-and-firewall').'</p>';
|
357 |
-
echo '<p><strong>'.AIOWPSEC_WP_URL.'/?'.$brute_force_feature_secret_word.'=1</strong></p>';
|
358 |
-
echo '</div>'; //yellow box div
|
359 |
-
echo '<div class="aio_clear_float"></div>';
|
360 |
-
?>
|
361 |
-
</div></div>
|
362 |
-
</div><!-- aiowps_dashboard_box -->
|
363 |
-
<?php
|
364 |
-
}//End if statement for Cookie Based Brute Prevention box
|
365 |
-
|
366 |
-
//Insert Rename Login Page feature box if this feature is active
|
367 |
-
if($aio_wp_security->configs->get_value('aiowps_enable_rename_login_page')=='1'){
|
368 |
-
?>
|
369 |
-
<div class="aiowps_dashboard_box_small">
|
370 |
-
<div class="postbox">
|
371 |
-
<h3 class="hndle"><label for="title"><?php _e('Rename Login Page', 'all-in-one-wp-security-and-firewall');?></label></h3>
|
372 |
-
<div class="inside">
|
373 |
-
<?php
|
374 |
-
if (get_option('permalink_structure')){
|
375 |
-
$home_url = trailingslashit(home_url());
|
376 |
-
}else{
|
377 |
-
$home_url = trailingslashit(home_url()) . '?';
|
378 |
-
}
|
379 |
-
|
380 |
-
$rename_login_feature_link = '<a href="admin.php?page='.AIOWPSEC_BRUTE_FORCE_MENU_SLUG.'&tab=tab1" target="_blank">'.__('Rename Login Page','all-in-one-wp-security-and-firewall').'</a>';
|
381 |
-
echo '<div class="aio_yellow_box">';
|
382 |
-
|
383 |
-
echo '<p>'.sprintf( __('The %s feature is currently active.', 'all-in-one-wp-security-and-firewall'), $rename_login_feature_link).'</p>';
|
384 |
-
echo '<p>'.__('Your new WordPress login URL is now:','all-in-one-wp-security-and-firewall').'</p>';
|
385 |
-
echo '<p><strong>'.$home_url.$aio_wp_security->configs->get_value('aiowps_login_page_slug').'</strong></p>';
|
386 |
-
echo '</div>'; //yellow box div
|
387 |
-
echo '<div class="aio_clear_float"></div>';
|
388 |
-
?>
|
389 |
-
</div></div>
|
390 |
-
</div><!-- aiowps_dashboard_box -->
|
391 |
-
<?php
|
392 |
-
}//End if statement for Rename Login box
|
393 |
-
|
394 |
-
if($aio_wp_security->configs->get_value('aiowps_enable_automated_fcd_scan') == '1'){
|
395 |
-
|
396 |
-
echo '<div class="aiowps_dashboard_box_small">';
|
397 |
-
echo '<div class="postbox">';
|
398 |
-
echo '<h3 class="hndle"><label for="title">File Change Detection</label></h3>';
|
399 |
-
echo '<div class="inside">';
|
400 |
-
|
401 |
-
if($aio_wp_security->configs->get_value('aiowps_fcds_change_detected')){
|
402 |
-
echo '<div class="aio_red_box aio_padding_10">File change detected!</div>';
|
403 |
-
echo '<p>Please review the changes from the <a href="admin.php?page='.AIOWPSEC_FILESCAN_MENU_SLUG.'">scanner menu</a></p>';
|
404 |
-
}
|
405 |
-
else{
|
406 |
-
echo '<div class="aio_green_box aio_padding_10">No recent file changes detected.</div>';
|
407 |
-
}
|
408 |
-
|
409 |
-
echo '</div></div>';
|
410 |
-
echo '</div>';//<!-- aiowps_dashboard_box -->
|
411 |
-
}//End if statement for automated scan box
|
412 |
-
?>
|
413 |
-
|
414 |
-
<div class="aiowps_dashboard_box_small">
|
415 |
-
<div class="postbox">
|
416 |
-
<h3 class="hndle"><label for="title"><?php _e('Logged In Users', 'all-in-one-wp-security-and-firewall');?></label></h3>
|
417 |
-
<div class="inside">
|
418 |
-
<?php
|
419 |
-
$users_online_link = '<a href="admin.php?page='.AIOWPSEC_USER_LOGIN_MENU_SLUG.'&tab=tab5">Logged In Users</a>';
|
420 |
-
if (AIOWPSecurity_Utility::is_multisite_install())
|
421 |
-
{
|
422 |
-
$logged_in_users = get_site_transient('users_online');
|
423 |
-
$num_users = count($logged_in_users);
|
424 |
-
if($num_users > 1)
|
425 |
-
{
|
426 |
-
echo '<div class="aio_red_box"><p>'.__('Number of users currently logged in site-wide is:','all-in-one-wp-security-and-firewall').' <strong>'.$num_users.'</strong></p>';
|
427 |
-
$info_msg = '<p>'.sprintf( __('Go to the %s menu to see more details', 'all-in-one-wp-security-and-firewall'), $users_online_link).'</p>';
|
428 |
-
echo $info_msg.'</div>';
|
429 |
-
}
|
430 |
-
else
|
431 |
-
{
|
432 |
-
echo '<div class="aio_green_box"><p>'.__('There are no other site-wide users currently logged in.','all-in-one-wp-security-and-firewall').'</p></div>';
|
433 |
-
}
|
434 |
-
}
|
435 |
-
else
|
436 |
-
{
|
437 |
-
$logged_in_users = get_transient('users_online');
|
438 |
-
if ($logged_in_users === false || $logged_in_users == NULL)
|
439 |
-
{
|
440 |
-
$num_users = 0;
|
441 |
-
}
|
442 |
-
else
|
443 |
-
{
|
444 |
-
$num_users = count($logged_in_users);
|
445 |
-
}
|
446 |
-
if($num_users > 1)
|
447 |
-
{
|
448 |
-
echo '<div class="aio_red_box"><p>'.__('Number of users currently logged into your site (including you) is:','all-in-one-wp-security-and-firewall').' <strong>'.$num_users.'</strong></p>';
|
449 |
-
$info_msg = '<p>'.sprintf( __('Go to the %s menu to see more details', 'all-in-one-wp-security-and-firewall'), $users_online_link).'</p>';
|
450 |
-
echo $info_msg.'</div>';
|
451 |
-
}
|
452 |
-
else
|
453 |
-
{
|
454 |
-
echo '<div class="aio_green_box"><p>'.__('There are no other users currently logged in.','all-in-one-wp-security-and-firewall').'</p></div>';
|
455 |
-
}
|
456 |
-
}
|
457 |
-
?>
|
458 |
-
</div></div>
|
459 |
-
</div><!-- aiowps_dashboard_box -->
|
460 |
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
484 |
|
485 |
-
<div class="aio_clear_float"></div>
|
486 |
-
|
487 |
</div>
|
488 |
-
<!-- Masonry stuff -->
|
489 |
<?php
|
490 |
//wp_enqueue_script('masonry');
|
491 |
-
echo '<script type="text/javascript" src="'.AIO_WP_SECURITY_URL.'/js/masonry.pkgd.min.js?ver='.AIO_WP_SECURITY_VERSION.'"></script>';
|
492 |
-
?>
|
493 |
-
<style>
|
494 |
-
.aiowps_dashboard_box_small {
|
495 |
-
|
496 |
-
}
|
497 |
-
</style>
|
498 |
-
<script type="text/javascript">
|
499 |
-
window.onload = function(){
|
500 |
-
var container = document.querySelector('#aiowps_dashboard_widget_content');
|
501 |
-
var msnry = new Masonry(
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
});
|
506 |
-
}
|
507 |
-
</script>
|
508 |
-
<!-- End Masonry stuff -->
|
509 |
-
|
510 |
-
|
511 |
}
|
512 |
-
|
513 |
-
|
514 |
function render_tab2()
|
515 |
{
|
516 |
global $wpdb;
|
517 |
?>
|
518 |
<div class="postbox">
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
535 |
<div class="postbox">
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
610 |
<div class="postbox">
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
|
|
|
|
638 |
}
|
639 |
|
640 |
function render_tab3()
|
@@ -643,111 +728,191 @@ var msnry = new Masonry( container, {
|
|
643 |
include_once 'wp-security-list-locked-ip.php'; //For rendering the AIOWPSecurity_List_Table in tab1
|
644 |
$locked_ip_list = new AIOWPSecurity_List_Locked_IP(); //For rendering the AIOWPSecurity_List_Table in tab1
|
645 |
|
646 |
-
if(isset($_REQUEST['action'])) //Do list table form row action tasks
|
647 |
{
|
648 |
-
if($_REQUEST['action'] == 'delete_blocked_ip'){ //Delete link was clicked for a row in list table
|
649 |
$locked_ip_list->delete_lockdown_records(strip_tags($_REQUEST['lockdown_id']));
|
650 |
}
|
651 |
-
|
652 |
-
if($_REQUEST['action'] == 'unlock_ip'){ //Unlock link was clicked for a row in list table
|
653 |
$locked_ip_list->unlock_ip_range(strip_tags($_REQUEST['lockdown_id']));
|
654 |
}
|
655 |
}
|
656 |
-
|
657 |
?>
|
658 |
-
<div class="
|
659 |
-
<h3 class="hndle"><label for="title"><?php _e('Currently Locked Out IP Addresses and Ranges', 'all-in-one-wp-security-and-firewall');?></label></h3>
|
660 |
-
<div class="inside">
|
661 |
-
<?php
|
662 |
-
//Fetch, prepare, sort, and filter our data...
|
663 |
-
$locked_ip_list->prepare_items();
|
664 |
-
//echo "put table of locked entries here";
|
665 |
-
?>
|
666 |
-
<form id="tables-filter" method="get" onSubmit="return confirm('Are you sure you want to perform this bulk operation on the selected entries?');">
|
667 |
-
<!-- For plugins, we also need to ensure that the form posts back to our current page -->
|
668 |
-
<input type="hidden" name="page" value="<?php echo esc_attr($_REQUEST['page']); ?>" />
|
669 |
<?php
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
}
|
674 |
?>
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
681 |
}
|
682 |
|
683 |
function render_tab4()
|
684 |
{
|
685 |
global $wpdb;
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
<div class="inside">
|
691 |
-
<form action="" method="POST">
|
692 |
-
<?php wp_nonce_field('aiowpsec-dashboard-logs-nonce'); ?>
|
693 |
-
<table class="form-table">
|
694 |
-
<tr valign="top">
|
695 |
-
<th scope="row"><?php _e('Log File', 'all-in-one-wp-security-and-firewall')?>:</th>
|
696 |
-
<td>
|
697 |
-
<select id="aiowps_log_file" name="aiowps_log_file">
|
698 |
-
<option value=""><?php _e('--Select a file--', 'all-in-one-wp-security-and-firewall')?></option>
|
699 |
-
<option value="wp-security-log.txt" <?php selected($file_selected, 'wp-security-log.txt'); ?>>wp-security-log</option>
|
700 |
-
<option value="wp-security-log-cron-job.txt" <?php selected($file_selected, 'wp-security-log-cron-job.txt'); ?>>wp-security-log-cron-job</option>
|
701 |
-
</select>
|
702 |
-
<span class="description"><?php _e('Select one of the log files to view the contents', 'all-in-one-wp-security-and-firewall'); ?></span>
|
703 |
-
</td>
|
704 |
-
</tr>
|
705 |
-
</table>
|
706 |
-
<input type="submit" name="aiowps_view_logs" value="<?php _e('View Logs', 'all-in-one-wp-security-and-firewall')?>" class="button-primary" />
|
707 |
-
</form>
|
708 |
-
|
709 |
-
</div></div>
|
710 |
-
<?php
|
711 |
-
if(isset($_POST['aiowps_view_logs']))//Do form submission tasks
|
712 |
{
|
713 |
-
$
|
714 |
-
|
715 |
-
if (!wp_verify_nonce($nonce, 'aiowpsec-dashboard-logs-nonce'))
|
716 |
-
{
|
717 |
-
$aio_wp_security->debug_logger->log_debug("Nonce check failed on dashboard view logs!",4);
|
718 |
-
die("Nonce check failed on dashboard view logs!");
|
719 |
}
|
720 |
-
|
721 |
-
|
722 |
?>
|
723 |
-
<div class="
|
724 |
-
<h3 class="hndle"><label for="title"><?php echo __('Log File Contents For', 'all-in-one-wp-security-and-firewall').': '.$file_selected;?></label></h3>
|
725 |
-
<div class="inside">
|
726 |
<?php
|
727 |
-
|
728 |
-
|
729 |
-
if(file_exists($log_file)){
|
730 |
-
$log_contents = AIOWPSecurity_Utility_File::get_file_contents($log_file);
|
731 |
-
}else{
|
732 |
-
$log_contents = '';
|
733 |
-
}
|
734 |
-
|
735 |
-
if(empty($log_contents)){$log_contents = $file_selected.': '.__('Log file is empty!','all-in-one-wp-security-and-firewall');}
|
736 |
?>
|
737 |
-
<textarea class="aio_text_area_file_output aio_half_width aio_spacer_10_tb" rows="15" readonly><?php echo $log_contents; ?></textarea>
|
738 |
-
|
739 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
740 |
</div>
|
741 |
-
|
742 |
<?php
|
743 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
744 |
}
|
745 |
}
|
746 |
?>
|
747 |
|
748 |
|
749 |
-
|
750 |
-
|
751 |
}
|
752 |
-
|
753 |
} //end class
|
3 |
class AIOWPSecurity_Dashboard_Menu extends AIOWPSecurity_Admin_Menu
|
4 |
{
|
5 |
var $dashboard_menu_page_slug = AIOWPSEC_MAIN_MENU_SLUG;
|
6 |
+
|
7 |
+
var $menu_tabs;
|
8 |
|
9 |
var $menu_tabs_handler = array(
|
10 |
+
'tab1' => 'render_tab1',
|
11 |
'tab2' => 'render_tab2',
|
12 |
'tab3' => 'render_tab3',
|
13 |
'tab4' => 'render_tab4',
|
14 |
+
'tab5' => 'render_tab5',
|
15 |
+
);
|
16 |
+
|
17 |
+
function __construct()
|
18 |
{
|
19 |
$this->render_menu_page();
|
20 |
}
|
21 |
|
22 |
+
function set_menu_tabs()
|
23 |
{
|
24 |
$this->menu_tabs = array(
|
25 |
+
'tab1' => __('Dashboard', 'all-in-one-wp-security-and-firewall'),
|
26 |
+
'tab2' => __('System Info', 'all-in-one-wp-security-and-firewall'),
|
27 |
+
'tab3' => __('Locked IP Addresses', 'all-in-one-wp-security-and-firewall'),
|
28 |
+
'tab4' => __('Permanent Block List', 'all-in-one-wp-security-and-firewall'),
|
29 |
+
'tab5' => __('AIOWPS Logs', 'all-in-one-wp-security-and-firewall'),
|
30 |
);
|
31 |
}
|
32 |
|
33 |
+
function get_current_tab()
|
34 |
{
|
35 |
$tab_keys = array_keys($this->menu_tabs);
|
36 |
+
$tab = isset($_GET['tab']) ? $_GET['tab'] : $tab_keys[0];
|
37 |
return $tab;
|
38 |
}
|
39 |
|
40 |
/*
|
41 |
* Renders our tabs of this menu as nav items
|
42 |
*/
|
43 |
+
function render_menu_tabs()
|
44 |
{
|
45 |
$current_tab = $this->get_current_tab();
|
46 |
|
47 |
echo '<h2 class="nav-tab-wrapper">';
|
48 |
+
foreach ($this->menu_tabs as $tab_key => $tab_caption) {
|
|
|
49 |
$active = $current_tab == $tab_key ? 'nav-tab-active' : '';
|
50 |
+
echo '<a class="nav-tab ' . $active . '" href="?page=' . $this->dashboard_menu_page_slug . '&tab=' . $tab_key . '">' . $tab_caption . '</a>';
|
51 |
}
|
52 |
echo '</h2>';
|
53 |
}
|
54 |
+
|
55 |
/*
|
56 |
* The menu rendering goes here
|
57 |
*/
|
58 |
+
function render_menu_page()
|
59 |
{
|
60 |
echo '<div class="wrap">';
|
61 |
+
echo '<h2>' . __('Dashboard', 'all-in-one-wp-security-and-firewall') . '</h2>';//Interface title
|
62 |
$this->set_menu_tabs();
|
63 |
$tab = $this->get_current_tab();
|
64 |
$this->render_menu_tabs();
|
65 |
?>
|
66 |
<div id="poststuff"><div id="post-body">
|
67 |
+
<?php
|
68 |
//$tab_keys = array_keys($this->menu_tabs);
|
69 |
call_user_func(array(&$this, $this->menu_tabs_handler[$tab]));
|
70 |
?>
|
72 |
</div><!-- end of wrap -->
|
73 |
<?php
|
74 |
}
|
75 |
+
|
76 |
function render_tab1()
|
77 |
{
|
78 |
echo '<div class="aio_grey_box">';
|
79 |
+
echo '<p>' . __('For information, updates and documentation, please visit the', 'all-in-one-wp-security-and-firewall') . ' <a href="https://www.tipsandtricks-hq.com/wordpress-security-and-firewall-plugin" target="_blank">' . __('AIO WP Security & Firewall Plugin', 'all-in-one-wp-security-and-firewall') . '</a> ' . __('Page', 'all-in-one-wp-security-and-firewall') . '</p>';
|
80 |
+
echo '<p><a href="https://www.tipsandtricks-hq.com/development-center" target="_blank">' . __('Follow us', 'all-in-one-wp-security-and-firewall') . '</a> on ' . __('Twitter, Google+ or via Email to stay up to date about the new security features of this plugin.', 'all-in-one-wp-security-and-firewall') . '</p>';
|
81 |
echo '</div>';
|
82 |
|
83 |
echo "<script type='text/javascript' src='https://www.google.com/jsapi'></script>";//Include the google chart library
|
84 |
+
|
85 |
global $aiowps_feature_mgr;
|
86 |
global $aio_wp_security;
|
87 |
$feature_mgr = $aiowps_feature_mgr;
|
88 |
$total_site_security_points = $feature_mgr->get_total_site_points();
|
89 |
$total_security_points_achievable = $feature_mgr->get_total_achievable_points();
|
90 |
+
|
91 |
?>
|
92 |
<div id="aiowps_dashboard_widget_content">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
|
94 |
+
<div class="aiowps_dashboard_box_small">
|
95 |
+
<div class="postbox">
|
96 |
+
<h3 class="hndle"><label
|
97 |
+
for="title"><?php _e('Security Strength Meter', 'all-in-one-wp-security-and-firewall');?></label>
|
98 |
+
</h3>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
99 |
|
100 |
+
<div class="inside">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
|
102 |
+
<script type='text/javascript'>
|
103 |
+
google.load('visualization', '1', {packages: ['gauge']});
|
104 |
+
google.setOnLoadCallback(drawChart);
|
105 |
+
function drawChart() {
|
106 |
+
var data = google.visualization.arrayToDataTable([
|
107 |
+
['Label', 'Value'],
|
108 |
+
['Strength', <?php echo $total_site_security_points; ?>]
|
109 |
+
]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
110 |
|
111 |
+
var options = {
|
112 |
+
width: 320, height: 200, max: <?php echo $total_security_points_achievable; ?>,
|
113 |
+
greenColor: '8EFA9B', yellowColor: 'F5EE90', redColor: 'FA7373',
|
114 |
+
redFrom: 0, redTo: 10,
|
115 |
+
yellowFrom: 10, yellowTo: 50,
|
116 |
+
greenFrom: 50, greenTo: <?php echo $total_security_points_achievable; ?>,
|
117 |
+
minorTicks: 5
|
118 |
+
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
119 |
|
120 |
+
var chart = new google.visualization.Gauge(document.getElementById('security_strength_chart_div'));
|
121 |
+
chart.draw(data, options);
|
122 |
+
}
|
123 |
+
</script>
|
124 |
+
<div id='security_strength_chart_div'></div>
|
125 |
+
|
126 |
+
<div class="aiowps_dashboard_widget_footer">
|
127 |
+
<?php
|
128 |
+
_e('Total Achievable Points: ', 'all-in-one-wp-security-and-firewall');
|
129 |
+
echo '<strong>' . $total_security_points_achievable . '</strong><br />';
|
130 |
+
_e('Current Score of Your Site: ', 'all-in-one-wp-security-and-firewall');
|
131 |
+
echo '<strong>' . $total_site_security_points . '</strong>';
|
132 |
+
?>
|
133 |
+
</div>
|
134 |
+
|
135 |
+
</div>
|
136 |
+
</div>
|
137 |
+
</div>
|
138 |
+
<!-- aiowps_dashboard_box -->
|
139 |
+
|
140 |
+
<div class="aiowps_dashboard_box_small">
|
141 |
+
<div class="postbox">
|
142 |
+
<h3 class="hndle"><label
|
143 |
+
for="title"><?php _e('Security Points Breakdown', 'all-in-one-wp-security-and-firewall');?></label>
|
144 |
+
</h3>
|
145 |
+
|
146 |
+
<div class="inside">
|
147 |
+
|
148 |
+
<?php
|
149 |
+
$feature_items = $feature_mgr->feature_items;
|
150 |
+
$pt_src_chart_data = "";
|
151 |
+
$pt_src_chart_data .= "['Feature Name', 'Points'],";
|
152 |
+
foreach ($feature_items as $item) {
|
153 |
+
if ($item->feature_status == $feature_mgr->feature_active) {
|
154 |
+
$pt_src_chart_data .= "['" . $item->feature_name . "', " . $item->item_points . "],";
|
155 |
+
}
|
156 |
+
}
|
157 |
+
|
158 |
+
?>
|
159 |
+
<script type="text/javascript">
|
160 |
+
google.load("visualization", "1", {packages: ["corechart"]});
|
161 |
+
google.setOnLoadCallback(drawChart);
|
162 |
+
function drawChart() {
|
163 |
+
var data = google.visualization.arrayToDataTable([
|
164 |
+
<?php echo $pt_src_chart_data; ?>
|
165 |
+
]);
|
166 |
+
|
167 |
+
var options = {
|
168 |
+
height: '250',
|
169 |
+
width: '320',
|
170 |
+
backgroundColor: 'F6F6F6'
|
171 |
+
};
|
172 |
+
|
173 |
+
var chart = new google.visualization.PieChart(document.getElementById('points_source_breakdown_chart_div'));
|
174 |
+
chart.draw(data, options);
|
175 |
+
}
|
176 |
+
</script>
|
177 |
+
<div id='points_source_breakdown_chart_div'></div>
|
178 |
+
|
179 |
+
</div>
|
180 |
+
</div>
|
181 |
+
</div>
|
182 |
+
<!-- aiowps_dashboard_box -->
|
183 |
+
|
184 |
+
<div class="aiowps_dashboard_box_small aiowps_spread_the_word_widget">
|
185 |
+
<div class="postbox">
|
186 |
+
<h3 class="hndle"><label
|
187 |
+
for="title"><?php _e('Spread the Word', 'all-in-one-wp-security-and-firewall');?></label>
|
188 |
+
</h3>
|
189 |
+
|
190 |
+
<div class="inside">
|
191 |
+
|
192 |
+
<p><?php _e('We are working hard to make your WordPress site more secure. Please support us, here is how:', 'all-in-one-wp-security-and-firewall');?></p>
|
193 |
+
|
194 |
+
<p>
|
195 |
+
<a href="https://plus.google.com/+Tipsandtricks-hq/" target="_blank">Follow us on
|
196 |
+
Google+</a>
|
197 |
+
</p>
|
198 |
+
|
199 |
+
<p>
|
200 |
+
<a href="http://twitter.com/intent/tweet?url=https://www.tipsandtricks-hq.com/wordpress-security-and-firewall-plugin&text=I love the All In One WP Security and Firewall plugin!"
|
201 |
+
target="_blank" class="aio_tweet_link">Post to Twitter</a>
|
202 |
+
</p>
|
203 |
+
|
204 |
+
<p>
|
205 |
+
<a href="http://wordpress.org/support/view/plugin-reviews/all-in-one-wp-security-and-firewall/"
|
206 |
+
target="_blank" class="aio_rate_us_link">Give us a Good Rating</a>
|
207 |
+
</p>
|
208 |
+
|
209 |
+
</div>
|
210 |
+
</div>
|
211 |
+
</div>
|
212 |
+
<!-- aiowps_dashboard_box -->
|
213 |
+
|
214 |
+
<div class="aiowps_dashboard_box_small aiowps_spread_the_word_widget">
|
215 |
+
<div class="postbox">
|
216 |
+
<h3 class="hndle"><label
|
217 |
+
for="title"><?php _e('Get To Know The Developers', 'all-in-one-wp-security-and-firewall');?></label>
|
218 |
+
</h3>
|
219 |
+
|
220 |
+
<div class="inside">
|
221 |
+
<p><?php _e('Wanna know more about the developers behind this plugin?', 'all-in-one-wp-security-and-firewall');?></p>
|
222 |
+
|
223 |
+
<p>
|
224 |
+
<a href="http://wpsolutions-hq.com/" target="_blank">WPSolutions</a>
|
225 |
+
</p>
|
226 |
+
|
227 |
+
<p>
|
228 |
+
<a href="https://www.tipsandtricks-hq.com/" target="_blank">Tips and Tricks HQ</a>
|
229 |
+
</p>
|
230 |
+
</div>
|
231 |
+
</div>
|
232 |
+
</div>
|
233 |
+
<!-- aiowps_dashboard_box -->
|
234 |
+
|
235 |
+
<div class="aiowps_dashboard_box_small">
|
236 |
+
<div class="postbox">
|
237 |
+
<h3 class="hndle"><label
|
238 |
+
for="title"><?php _e('Critical Feature Status', 'all-in-one-wp-security-and-firewall');?></label>
|
239 |
+
</h3>
|
240 |
+
|
241 |
+
<div class="inside">
|
242 |
+
|
243 |
+
<?php
|
244 |
+
_e('Below is the current status of the critical features that you should activate on your site to achieve a minimum level of recommended security', 'all-in-one-wp-security-and-firewall');
|
245 |
+
$feature_items = $feature_mgr->feature_items;
|
246 |
+
$username_admin_feature = $feature_mgr->get_feature_item_by_id("user-accounts-change-admin-user");
|
247 |
+
echo '<div class="aiowps_feature_status_container">';
|
248 |
+
echo '<div class="aiowps_feature_status_name">' . __('Admin Username', 'all-in-one-wp-security-and-firewall') . '</div>';
|
249 |
+
echo '<a href="admin.php?page=' . AIOWPSEC_USER_ACCOUNTS_MENU_SLUG . '">';
|
250 |
+
echo '<div class="aiowps_feature_status_bar">';
|
251 |
+
if ($username_admin_feature->feature_status == $feature_mgr->feature_active) {
|
252 |
+
echo '<div class="aiowps_feature_status_label aiowps_feature_status_on">On</div>';
|
253 |
+
echo '<div class="aiowps_feature_status_label">Off</div>';
|
254 |
+
} else {
|
255 |
+
echo '<div class="aiowps_feature_status_label">On</div>';
|
256 |
+
echo '<div class="aiowps_feature_status_label aiowps_feature_status_off">Off</div>';
|
257 |
+
}
|
258 |
+
echo '</div></div></a>';
|
259 |
+
echo '<div class="aio_clear_float"></div>';
|
260 |
+
|
261 |
+
$login_lockdown_feature = $feature_mgr->get_feature_item_by_id("user-login-login-lockdown");
|
262 |
+
echo '<div class="aiowps_feature_status_container">';
|
263 |
+
echo '<div class="aiowps_feature_status_name">' . __('Login Lockdown', 'all-in-one-wp-security-and-firewall') . '</div>';
|
264 |
+
echo '<a href="admin.php?page=' . AIOWPSEC_USER_LOGIN_MENU_SLUG . '">';
|
265 |
+
echo '<div class="aiowps_feature_status_bar">';
|
266 |
+
if ($login_lockdown_feature->feature_status == $feature_mgr->feature_active) {
|
267 |
+
echo '<div class="aiowps_feature_status_label aiowps_feature_status_on">On</div>';
|
268 |
+
echo '<div class="aiowps_feature_status_label">Off</div>';
|
269 |
+
} else {
|
270 |
+
echo '<div class="aiowps_feature_status_label">On</div>';
|
271 |
+
echo '<div class="aiowps_feature_status_label aiowps_feature_status_off">Off</div>';
|
272 |
+
}
|
273 |
+
echo '</div></div></a>';
|
274 |
+
echo '<div class="aio_clear_float"></div>';
|
275 |
+
|
276 |
+
$filesystem_feature = $feature_mgr->get_feature_item_by_id("filesystem-file-permissions");
|
277 |
+
echo '<div class="aiowps_feature_status_container">';
|
278 |
+
echo '<div class="aiowps_feature_status_name">' . __('File Permission', 'all-in-one-wp-security-and-firewall') . '</div>';
|
279 |
+
echo '<a href="admin.php?page=' . AIOWPSEC_FILESYSTEM_MENU_SLUG . '">';
|
280 |
+
echo '<div class="aiowps_feature_status_bar">';
|
281 |
+
if ($filesystem_feature->feature_status == $feature_mgr->feature_active) {
|
282 |
+
echo '<div class="aiowps_feature_status_label aiowps_feature_status_on">On</div>';
|
283 |
+
echo '<div class="aiowps_feature_status_label">Off</div>';
|
284 |
+
} else {
|
285 |
+
echo '<div class="aiowps_feature_status_label">On</div>';
|
286 |
+
echo '<div class="aiowps_feature_status_label aiowps_feature_status_off">Off</div>';
|
287 |
+
}
|
288 |
+
echo '</div></div></a>';
|
289 |
+
echo '<div class="aio_clear_float"></div>';
|
290 |
+
|
291 |
+
$basic_firewall_feature = $feature_mgr->get_feature_item_by_id("firewall-basic-rules");
|
292 |
+
echo '<div class="aiowps_feature_status_container">';
|
293 |
+
echo '<div class="aiowps_feature_status_name">' . __('Basic Firewall', 'all-in-one-wp-security-and-firewall') . '</div>';
|
294 |
+
echo '<a href="admin.php?page=' . AIOWPSEC_FIREWALL_MENU_SLUG . '">';
|
295 |
+
echo '<div class="aiowps_feature_status_bar">';
|
296 |
+
if ($basic_firewall_feature->feature_status == $feature_mgr->feature_active) {
|
297 |
+
echo '<div class="aiowps_feature_status_label aiowps_feature_status_on">On</div>';
|
298 |
+
echo '<div class="aiowps_feature_status_label">Off</div>';
|
299 |
+
} else {
|
300 |
+
echo '<div class="aiowps_feature_status_label">On</div>';
|
301 |
+
echo '<div class="aiowps_feature_status_label aiowps_feature_status_off">Off</div>';
|
302 |
+
}
|
303 |
+
echo '</div></div></a>';
|
304 |
+
echo '<div class="aio_clear_float"></div>';
|
305 |
+
?>
|
306 |
+
</div>
|
307 |
+
</div>
|
308 |
+
</div>
|
309 |
+
<!-- aiowps_dashboard_box -->
|
310 |
+
|
311 |
+
<div class="aiowps_dashboard_box_small">
|
312 |
+
<div class="postbox">
|
313 |
+
<h3 class="hndle"><label
|
314 |
+
for="title"><?php _e('Last 5 Logins', 'all-in-one-wp-security-and-firewall');?></label></h3>
|
315 |
+
|
316 |
+
<div class="inside">
|
317 |
+
<?php
|
318 |
+
global $wpdb;
|
319 |
+
$login_activity_table = AIOWPSEC_TBL_USER_LOGIN_ACTIVITY;
|
320 |
+
|
321 |
+
/* -- Ordering parameters -- */
|
322 |
+
//Parameters that are going to be used to order the result
|
323 |
+
isset($_GET["orderby"]) ? $orderby = strip_tags($_GET["orderby"]) : $orderby = '';
|
324 |
+
isset($_GET["order"]) ? $order = strip_tags($_GET["order"]) : $order = '';
|
325 |
+
|
326 |
+
$orderby = !empty($orderby) ? $orderby : 'login_date';
|
327 |
+
$order = !empty($order) ? $order : 'DESC';
|
328 |
+
|
329 |
+
$data = $wpdb->get_results($wpdb->prepare("SELECT * FROM $login_activity_table ORDER BY login_date DESC LIMIT %d", 5), ARRAY_A); //Get the last 5 records
|
330 |
+
|
331 |
+
if ($data == NULL) {
|
332 |
+
echo '<p>' . __('No data found!', 'all-in-one-wp-security-and-firewall') . '</p>';
|
333 |
+
|
334 |
+
} else {
|
335 |
+
$login_summary_table = '';
|
336 |
+
echo '<p>' . __('Last 5 logins summary:', 'all-in-one-wp-security-and-firewall') . '</p>';
|
337 |
+
$login_summary_table .= '<table class="widefat aiowps_dashboard_table">';
|
338 |
+
$login_summary_table .= '<thead>';
|
339 |
+
$login_summary_table .= '<tr>';
|
340 |
+
$login_summary_table .= '<th>' . __('User', 'all-in-one-wp-security-and-firewall') . '</th>';
|
341 |
+
$login_summary_table .= '<th>' . __('Date', 'all-in-one-wp-security-and-firewall') . '</th>';
|
342 |
+
$login_summary_table .= '<th>' . __('IP', 'all-in-one-wp-security-and-firewall') . '</th>';
|
343 |
+
$login_summary_table .= '</tr>';
|
344 |
+
$login_summary_table .= '</thead>';
|
345 |
+
foreach ($data as $entry) {
|
346 |
+
$login_summary_table .= '<tr>';
|
347 |
+
$login_summary_table .= '<td>' . $entry['user_login'] . '</td>';
|
348 |
+
$login_summary_table .= '<td>' . $entry['login_date'] . '</td>';
|
349 |
+
$login_summary_table .= '<td>' . $entry['login_ip'] . '</td>';
|
350 |
+
$login_summary_table .= '</tr>';
|
351 |
+
}
|
352 |
+
$login_summary_table .= '</table>';
|
353 |
+
echo $login_summary_table;
|
354 |
+
}
|
355 |
+
|
356 |
+
echo '<div class="aio_clear_float"></div>';
|
357 |
+
?>
|
358 |
+
</div>
|
359 |
+
</div>
|
360 |
+
</div>
|
361 |
+
<!-- aiowps_dashboard_box -->
|
362 |
+
|
363 |
+
<div class="aiowps_dashboard_box_small">
|
364 |
+
<div class="postbox">
|
365 |
+
<h3 class="hndle"><label
|
366 |
+
for="title"><?php _e('Maintenance Mode Status', 'all-in-one-wp-security-and-firewall');?></label>
|
367 |
+
</h3>
|
368 |
+
|
369 |
+
<div class="inside">
|
370 |
+
<?php
|
371 |
+
if ($aio_wp_security->configs->get_value('aiowps_site_lockout') == '1') {
|
372 |
+
echo '<p>' . __('Maintenance mode is currently enabled. Remember to turn it off when you are done', 'all-in-one-wp-security-and-firewall') . '</p>';
|
373 |
+
} else {
|
374 |
+
echo '<p>' . __('Maintenance mode is currently off.', 'all-in-one-wp-security-and-firewall') . '</p>';
|
375 |
+
}
|
376 |
+
|
377 |
+
echo '<div class="aiowps_feature_status_container">';
|
378 |
+
echo '<div class="aiowps_feature_status_name">' . __('Maintenance Mode', 'all-in-one-wp-security-and-firewall') . '</div>';
|
379 |
+
echo '<a href="admin.php?page=' . AIOWPSEC_MAINTENANCE_MENU_SLUG . '">';
|
380 |
+
echo '<div class="aiowps_feature_status_bar">';
|
381 |
+
if ($aio_wp_security->configs->get_value('aiowps_site_lockout') == '1') {//Maintenance mode is enabled
|
382 |
+
echo '<div class="aiowps_feature_status_label aiowps_feature_status_off">On</div>';//If enabled show red by usign the "off" class
|
383 |
+
echo '<div class="aiowps_feature_status_label">Off</div>';
|
384 |
+
} else {
|
385 |
+
echo '<div class="aiowps_feature_status_label">On</div>';
|
386 |
+
echo '<div class="aiowps_feature_status_label aiowps_feature_status_on">Off</div>';
|
387 |
+
}
|
388 |
+
echo '</div></div></a>';
|
389 |
+
echo '<div class="aio_clear_float"></div>';
|
390 |
+
?>
|
391 |
+
</div>
|
392 |
+
</div>
|
393 |
+
</div>
|
394 |
+
<!-- aiowps_dashboard_box -->
|
395 |
+
|
396 |
+
<?php
|
397 |
+
//Insert Cookie Based Brute Force feature box if this feature is active
|
398 |
+
if ($aio_wp_security->configs->get_value('aiowps_enable_brute_force_attack_prevention') == '1') {
|
399 |
+
?>
|
400 |
+
<div class="aiowps_dashboard_box_small">
|
401 |
+
<div class="postbox">
|
402 |
+
<h3 class="hndle"><label
|
403 |
+
for="title"><?php _e('Cookie Based Brute Prevention', 'all-in-one-wp-security-and-firewall');?></label>
|
404 |
+
</h3>
|
405 |
+
|
406 |
+
<div class="inside">
|
407 |
+
<?php
|
408 |
+
$brute_force_login_feature_link = '<a href="admin.php?page=' . AIOWPSEC_BRUTE_FORCE_MENU_SLUG . '&tab=tab2" target="_blank">' . __('Cookie-Based Brute Force', 'all-in-one-wp-security-and-firewall') . '</a>';
|
409 |
+
$brute_force_feature_secret_word = $aio_wp_security->configs->get_value('aiowps_brute_force_secret_word');
|
410 |
+
echo '<div class="aio_yellow_box">';
|
411 |
+
|
412 |
+
echo '<p>' . sprintf(__('The %s feature is currently active.', 'all-in-one-wp-security-and-firewall'), $brute_force_login_feature_link) . '</p>';
|
413 |
+
echo '<p>' . __('Your new WordPress login URL is now:', 'all-in-one-wp-security-and-firewall') . '</p>';
|
414 |
+
echo '<p><strong>' . AIOWPSEC_WP_URL . '/?' . $brute_force_feature_secret_word . '=1</strong></p>';
|
415 |
+
echo '</div>'; //yellow box div
|
416 |
+
echo '<div class="aio_clear_float"></div>';
|
417 |
+
?>
|
418 |
+
</div>
|
419 |
+
</div>
|
420 |
+
</div><!-- aiowps_dashboard_box -->
|
421 |
+
<?php
|
422 |
+
}//End if statement for Cookie Based Brute Prevention box
|
423 |
+
|
424 |
+
//Insert Rename Login Page feature box if this feature is active
|
425 |
+
if ($aio_wp_security->configs->get_value('aiowps_enable_rename_login_page') == '1') {
|
426 |
+
?>
|
427 |
+
<div class="aiowps_dashboard_box_small">
|
428 |
+
<div class="postbox">
|
429 |
+
<h3 class="hndle"><label
|
430 |
+
for="title"><?php _e('Rename Login Page', 'all-in-one-wp-security-and-firewall');?></label>
|
431 |
+
</h3>
|
432 |
+
|
433 |
+
<div class="inside">
|
434 |
+
<?php
|
435 |
+
if (get_option('permalink_structure')) {
|
436 |
+
$home_url = trailingslashit(home_url());
|
437 |
+
} else {
|
438 |
+
$home_url = trailingslashit(home_url()) . '?';
|
439 |
+
}
|
440 |
+
|
441 |
+
$rename_login_feature_link = '<a href="admin.php?page=' . AIOWPSEC_BRUTE_FORCE_MENU_SLUG . '&tab=tab1" target="_blank">' . __('Rename Login Page', 'all-in-one-wp-security-and-firewall') . '</a>';
|
442 |
+
echo '<div class="aio_yellow_box">';
|
443 |
+
|
444 |
+
echo '<p>' . sprintf(__('The %s feature is currently active.', 'all-in-one-wp-security-and-firewall'), $rename_login_feature_link) . '</p>';
|
445 |
+
echo '<p>' . __('Your new WordPress login URL is now:', 'all-in-one-wp-security-and-firewall') . '</p>';
|
446 |
+
echo '<p><strong>' . $home_url . $aio_wp_security->configs->get_value('aiowps_login_page_slug') . '</strong></p>';
|
447 |
+
echo '</div>'; //yellow box div
|
448 |
+
echo '<div class="aio_clear_float"></div>';
|
449 |
+
?>
|
450 |
+
</div>
|
451 |
+
</div>
|
452 |
+
</div><!-- aiowps_dashboard_box -->
|
453 |
+
<?php
|
454 |
+
}//End if statement for Rename Login box
|
455 |
+
|
456 |
+
if ($aio_wp_security->configs->get_value('aiowps_enable_automated_fcd_scan') == '1') {
|
457 |
+
|
458 |
+
echo '<div class="aiowps_dashboard_box_small">';
|
459 |
+
echo '<div class="postbox">';
|
460 |
+
echo '<h3 class="hndle"><label for="title">File Change Detection</label></h3>';
|
461 |
+
echo '<div class="inside">';
|
462 |
+
|
463 |
+
if ($aio_wp_security->configs->get_value('aiowps_fcds_change_detected')) {
|
464 |
+
echo '<div class="aio_red_box aio_padding_10">File change detected!</div>';
|
465 |
+
echo '<p>Please review the changes from the <a href="admin.php?page=' . AIOWPSEC_FILESCAN_MENU_SLUG . '">scanner menu</a></p>';
|
466 |
+
} else {
|
467 |
+
echo '<div class="aio_green_box aio_padding_10">No recent file changes detected.</div>';
|
468 |
+
}
|
469 |
+
|
470 |
+
echo '</div></div>';
|
471 |
+
echo '</div>';//<!-- aiowps_dashboard_box -->
|
472 |
+
}//End if statement for automated scan box
|
473 |
+
?>
|
474 |
+
|
475 |
+
<div class="aiowps_dashboard_box_small">
|
476 |
+
<div class="postbox">
|
477 |
+
<h3 class="hndle"><label
|
478 |
+
for="title"><?php _e('Logged In Users', 'all-in-one-wp-security-and-firewall');?></label>
|
479 |
+
</h3>
|
480 |
+
|
481 |
+
<div class="inside">
|
482 |
+
<?php
|
483 |
+
$users_online_link = '<a href="admin.php?page=' . AIOWPSEC_USER_LOGIN_MENU_SLUG . '&tab=tab5">Logged In Users</a>';
|
484 |
+
if (AIOWPSecurity_Utility::is_multisite_install()) {
|
485 |
+
$logged_in_users = get_site_transient('users_online');
|
486 |
+
$num_users = count($logged_in_users);
|
487 |
+
if ($num_users > 1) {
|
488 |
+
echo '<div class="aio_red_box"><p>' . __('Number of users currently logged in site-wide is:', 'all-in-one-wp-security-and-firewall') . ' <strong>' . $num_users . '</strong></p>';
|
489 |
+
$info_msg = '<p>' . sprintf(__('Go to the %s menu to see more details', 'all-in-one-wp-security-and-firewall'), $users_online_link) . '</p>';
|
490 |
+
echo $info_msg . '</div>';
|
491 |
+
} else {
|
492 |
+
echo '<div class="aio_green_box"><p>' . __('There are no other site-wide users currently logged in.', 'all-in-one-wp-security-and-firewall') . '</p></div>';
|
493 |
+
}
|
494 |
+
} else {
|
495 |
+
$logged_in_users = get_transient('users_online');
|
496 |
+
if ($logged_in_users === false || $logged_in_users == NULL) {
|
497 |
+
$num_users = 0;
|
498 |
+
} else {
|
499 |
+
$num_users = count($logged_in_users);
|
500 |
+
}
|
501 |
+
if ($num_users > 1) {
|
502 |
+
echo '<div class="aio_red_box"><p>' . __('Number of users currently logged into your site (including you) is:', 'all-in-one-wp-security-and-firewall') . ' <strong>' . $num_users . '</strong></p>';
|
503 |
+
$info_msg = '<p>' . sprintf(__('Go to the %s menu to see more details', 'all-in-one-wp-security-and-firewall'), $users_online_link) . '</p>';
|
504 |
+
echo $info_msg . '</div>';
|
505 |
+
} else {
|
506 |
+
echo '<div class="aio_green_box"><p>' . __('There are no other users currently logged in.', 'all-in-one-wp-security-and-firewall') . '</p></div>';
|
507 |
+
}
|
508 |
+
}
|
509 |
+
?>
|
510 |
+
</div>
|
511 |
+
</div>
|
512 |
+
</div>
|
513 |
+
<!-- aiowps_dashboard_box -->
|
514 |
+
|
515 |
+
<div class="aiowps_dashboard_box_small">
|
516 |
+
<div class="postbox">
|
517 |
+
<h3 class="hndle"><label
|
518 |
+
for="title"><?php _e('Locked IP Addresses', 'all-in-one-wp-security-and-firewall');?></label>
|
519 |
+
</h3>
|
520 |
+
|
521 |
+
<div class="inside">
|
522 |
+
<?php
|
523 |
+
$locked_ips_link = '<a href="admin.php?page=' . AIOWPSEC_MAIN_MENU_SLUG . '&tab=tab3">Locked IP Addresses</a>';
|
524 |
+
|
525 |
+
$locked_ips = AIOWPSecurity_Utility::get_locked_ips();
|
526 |
+
if ($locked_ips === FALSE) {
|
527 |
+
echo '<div class="aio_green_box"><p>' . __('There are no IP addresses currently locked out.', 'all-in-one-wp-security-and-firewall') . '</p></div>';
|
528 |
+
} else {
|
529 |
+
$num_ips = count($locked_ips);
|
530 |
+
echo '<div class="aio_red_box"><p>' . __('Number of temporarily locked out IP addresses: ', 'all-in-one-wp-security-and-firewall') . ' <strong>' . $num_ips . '</strong></p>';
|
531 |
+
$info_msg = '<p>' . sprintf(__('Go to the %s menu to see more details', 'all-in-one-wp-security-and-firewall'), $locked_ips_link) . '</p>';
|
532 |
+
echo $info_msg . '</div>';
|
533 |
+
}
|
534 |
+
|
535 |
+
?>
|
536 |
+
</div>
|
537 |
+
</div>
|
538 |
+
</div>
|
539 |
+
<!-- aiowps_dashboard_box -->
|
540 |
+
<?php do_action('end_main_dashboard_content'); ?>
|
541 |
+
|
542 |
+
<div class="aio_clear_float"></div>
|
543 |
|
|
|
|
|
544 |
</div>
|
545 |
+
<!-- Masonry stuff -->
|
546 |
<?php
|
547 |
//wp_enqueue_script('masonry');
|
548 |
+
echo '<script type="text/javascript" src="' . AIO_WP_SECURITY_URL . '/js/masonry.pkgd.min.js?ver=' . AIO_WP_SECURITY_VERSION . '"></script>';
|
549 |
+
?>
|
550 |
+
<style>
|
551 |
+
.aiowps_dashboard_box_small {
|
552 |
+
width: 350px;
|
553 |
+
}
|
554 |
+
</style>
|
555 |
+
<script type="text/javascript">
|
556 |
+
window.onload = function () {
|
557 |
+
var container = document.querySelector('#aiowps_dashboard_widget_content');
|
558 |
+
var msnry = new Masonry(container, {
|
559 |
+
// options
|
560 |
+
columnWidth: 100,
|
561 |
+
itemSelector: '.aiowps_dashboard_box_small'
|
562 |
+
});
|
563 |
+
}
|
564 |
+
</script>
|
565 |
+
<!-- End Masonry stuff -->
|
566 |
+
|
567 |
+
<?php
|
568 |
}
|
569 |
+
|
570 |
+
|
571 |
function render_tab2()
|
572 |
{
|
573 |
global $wpdb;
|
574 |
?>
|
575 |
<div class="postbox">
|
576 |
+
<h3 class="hndle"><label for="title"><?php _e('Site Info', 'all-in-one-wp-security-and-firewall');?></label>
|
577 |
+
</h3>
|
578 |
+
|
579 |
+
<div class="inside">
|
580 |
+
<strong><?php _e('Plugin Version', 'all-in-one-wp-security-and-firewall');?>
|
581 |
+
: </strong><code><?php echo AIO_WP_SECURITY_VERSION;?></code><br/>
|
582 |
+
<strong><?php _e('WP Version', 'all-in-one-wp-security-and-firewall');?>
|
583 |
+
: </strong><code><?php echo get_bloginfo("version"); ?></code><br/>
|
584 |
+
<strong>WPMU: </strong><code><?php echo (!defined('MULTISITE') || !MULTISITE) ? "No" : "Yes"; ?></code><br/>
|
585 |
+
<strong>MySQL <?php _e('Version', 'all-in-one-wp-security-and-firewall');?>
|
586 |
+
: </strong><code><?php echo $wpdb->db_version();?></code><br/>
|
587 |
+
<strong>WP <?php _e('Table Prefix', 'all-in-one-wp-security-and-firewall');?>
|
588 |
+
: </strong><code><?php echo $wpdb->prefix; ?></code><br/>
|
589 |
+
<strong>PHP <?php _e('Version', 'all-in-one-wp-security-and-firewall');?>
|
590 |
+
: </strong><code><?php echo phpversion(); ?></code><br/>
|
591 |
+
<strong><?php _e('Session Save Path', 'all-in-one-wp-security-and-firewall');?>
|
592 |
+
: </strong><code><?php echo ini_get("session.save_path"); ?></code><br/>
|
593 |
+
<strong>WP URL: </strong><code><?php echo get_bloginfo('wpurl'); ?></code><br/>
|
594 |
+
<strong><?php _e('Server Name', 'all-in-one-wp-security-and-firewall');?>
|
595 |
+
: </strong><code><?php echo $_SERVER['SERVER_NAME']; ?></code><br/>
|
596 |
+
<strong><?php _e('Cookie Domain', 'all-in-one-wp-security-and-firewall');?>
|
597 |
+
: </strong><code><?php $cookieDomain = parse_url(strtolower(get_bloginfo('wpurl')));
|
598 |
+
echo $cookieDomain['host']; ?></code><br/>
|
599 |
+
<strong>CURL <?php _e('Library Present', 'all-in-one-wp-security-and-firewall');?>
|
600 |
+
: </strong><code><?php echo (function_exists('curl_init')) ? "Yes" : "No"; ?></code><br/>
|
601 |
+
<strong><?php _e('Debug File Write Permissions', 'all-in-one-wp-security-and-firewall');?>
|
602 |
+
: </strong><code><?php echo (is_writable(AIO_WP_SECURITY_PATH)) ? "Writable" : "Not Writable"; ?></code><br/>
|
603 |
+
</div>
|
604 |
+
</div><!-- End of Site Info -->
|
605 |
+
|
606 |
<div class="postbox">
|
607 |
+
<h3 class="hndle"><label for="title"><?php _e('PHP Info', 'all-in-one-wp-security-and-firewall');?></label>
|
608 |
+
</h3>
|
609 |
+
|
610 |
+
<div class="inside">
|
611 |
+
<strong><?php _e('PHP Version', 'all-in-one-wp-security-and-firewall'); ?>
|
612 |
+
: </strong><code><?php echo PHP_VERSION; ?></code><br/>
|
613 |
+
<strong><?php _e('PHP Memory Usage', 'all-in-one-wp-security-and-firewall'); ?>:
|
614 |
+
</strong><code><?php echo round(memory_get_usage() / 1024 / 1024, 2) . __(' MB', 'all-in-one-wp-security-and-firewall'); ?></code>
|
615 |
+
<br/>
|
616 |
+
<?php
|
617 |
+
if (ini_get('memory_limit')) {
|
618 |
+
$memory_limit = filter_var(ini_get('memory_limit'), FILTER_SANITIZE_STRING);
|
619 |
+
} else {
|
620 |
+
$memory_limit = __('N/A', 'all-in-one-wp-security-and-firewall');
|
621 |
+
}
|
622 |
+
?>
|
623 |
+
<strong><?php _e('PHP Memory Limit', 'all-in-one-wp-security-and-firewall'); ?>
|
624 |
+
: </strong><code><?php echo $memory_limit; ?></code><br/>
|
625 |
+
<?php
|
626 |
+
if (ini_get('upload_max_filesize')) {
|
627 |
+
$upload_max = filter_var(ini_get('upload_max_filesize'), FILTER_SANITIZE_STRING);
|
628 |
+
} else {
|
629 |
+
$upload_max = __('N/A', 'all-in-one-wp-security-and-firewall');
|
630 |
+
}
|
631 |
+
?>
|
632 |
+
<strong><?php _e('PHP Max Upload Size', 'all-in-one-wp-security-and-firewall'); ?>
|
633 |
+
: </strong><code><?php echo $upload_max; ?></code><br/>
|
634 |
+
<?php
|
635 |
+
if (ini_get('post_max_size')) {
|
636 |
+
$post_max = filter_var(ini_get('post_max_size'), FILTER_SANITIZE_STRING);
|
637 |
+
} else {
|
638 |
+
$post_max = __('N/A', 'all-in-one-wp-security-and-firewall');
|
639 |
+
}
|
640 |
+
?>
|
641 |
+
<strong><?php _e('PHP Max Post Size', 'all-in-one-wp-security-and-firewall'); ?>
|
642 |
+
: </strong><code><?php echo $post_max; ?></code><br/>
|
643 |
+
<?php
|
644 |
+
if (ini_get('safe_mode')) {
|
645 |
+
$safe_mode = __('On', 'all-in-one-wp-security-and-firewall');
|
646 |
+
} else {
|
647 |
+
$safe_mode = __('Off', 'all-in-one-wp-security-and-firewall');
|
648 |
+
}
|
649 |
+
?>
|
650 |
+
<strong><?php _e('PHP Safe Mode', 'all-in-one-wp-security-and-firewall'); ?>
|
651 |
+
: </strong><code><?php echo $safe_mode; ?></code><br/>
|
652 |
+
<?php
|
653 |
+
if (ini_get('allow_url_fopen')) {
|
654 |
+
$allow_url_fopen = __('On', 'all-in-one-wp-security-and-firewall');
|
655 |
+
} else {
|
656 |
+
$allow_url_fopen = __('Off', 'all-in-one-wp-security-and-firewall');
|
657 |
+
}
|
658 |
+
?>
|
659 |
+
<strong><?php _e('PHP Allow URL fopen', 'all-in-one-wp-security-and-firewall'); ?>
|
660 |
+
: </strong><code><?php echo $allow_url_fopen; ?></code>
|
661 |
+
<br/>
|
662 |
+
<?php
|
663 |
+
if (ini_get('allow_url_include')) {
|
664 |
+
$allow_url_include = __('On', 'all-in-one-wp-security-and-firewall');
|
665 |
+
} else {
|
666 |
+
$allow_url_include = __('Off', 'all-in-one-wp-security-and-firewall');
|
667 |
+
}
|
668 |
+
?>
|
669 |
+
<strong><?php _e('PHP Allow URL Include'); ?>
|
670 |
+
: </strong><code><?php echo $allow_url_include; ?></code><br/>
|
671 |
+
<?php
|
672 |
+
if (ini_get('display_errors')) {
|
673 |
+
$display_errors = __('On', 'all-in-one-wp-security-and-firewall');
|
674 |
+
} else {
|
675 |
+
$display_errors = __('Off', 'all-in-one-wp-security-and-firewall');
|
676 |
+
}
|
677 |
+
?>
|
678 |
+
<strong><?php _e('PHP Display Errors', 'all-in-one-wp-security-and-firewall'); ?>
|
679 |
+
: </strong><code><?php echo $display_errors; ?></code>
|
680 |
+
<br/>
|
681 |
+
<?php
|
682 |
+
if (ini_get('max_execution_time')) {
|
683 |
+
$max_execute = filter_var(ini_get('max_execution_time'));
|
684 |
+
} else {
|
685 |
+
$max_execute = __('N/A', 'all-in-one-wp-security-and-firewall');
|
686 |
+
}
|
687 |
+
?>
|
688 |
+
<strong><?php _e('PHP Max Script Execution Time', 'all-in-one-wp-security-and-firewall'); ?>
|
689 |
+
: </strong><code><?php echo $max_execute; ?> <?php _e('Seconds'); ?></code><br/>
|
690 |
+
</div>
|
691 |
+
</div><!-- End of PHP Info -->
|
692 |
+
|
693 |
<div class="postbox">
|
694 |
+
<h3 class="hndle"><label
|
695 |
+
for="title"><?php _e('Active Plugins', 'all-in-one-wp-security-and-firewall');?></label></h3>
|
696 |
+
|
697 |
+
<div class="inside">
|
698 |
+
<?php
|
699 |
+
$all_plugins = get_plugins();
|
700 |
+
$active_plugins = get_option('active_plugins');
|
701 |
+
//var_dump($all_plugins);
|
702 |
+
?>
|
703 |
+
<table class="widefat aio_spacer_10_tb">
|
704 |
+
<thead>
|
705 |
+
<tr>
|
706 |
+
<th><?php _e('Name', 'all-in-one-wp-security-and-firewall') ?></th>
|
707 |
+
<th><?php _e('Version', 'all-in-one-wp-security-and-firewall') ?></th>
|
708 |
+
<th><?php _e('Plugin URL', 'all-in-one-wp-security-and-firewall') ?></th>
|
709 |
+
</tr>
|
710 |
+
</thead>
|
711 |
+
<tbody>
|
712 |
+
<?php
|
713 |
+
foreach ($active_plugins as $plugin_key) {
|
714 |
+
$plugin_details = $all_plugins[$plugin_key];
|
715 |
+
echo '<tr><td>' . $plugin_details['Name'] . '</td><td>' . $plugin_details['Version'] . '</td><td>' . $plugin_details['PluginURI'] . '</td></tr>';
|
716 |
+
}
|
717 |
+
?>
|
718 |
+
</tbody>
|
719 |
+
</table>
|
720 |
+
</div>
|
721 |
+
</div><!-- End of Active Plugins -->
|
722 |
+
<?php
|
723 |
}
|
724 |
|
725 |
function render_tab3()
|
728 |
include_once 'wp-security-list-locked-ip.php'; //For rendering the AIOWPSecurity_List_Table in tab1
|
729 |
$locked_ip_list = new AIOWPSecurity_List_Locked_IP(); //For rendering the AIOWPSecurity_List_Table in tab1
|
730 |
|
731 |
+
if (isset($_REQUEST['action'])) //Do list table form row action tasks
|
732 |
{
|
733 |
+
if ($_REQUEST['action'] == 'delete_blocked_ip') { //Delete link was clicked for a row in list table
|
734 |
$locked_ip_list->delete_lockdown_records(strip_tags($_REQUEST['lockdown_id']));
|
735 |
}
|
736 |
+
|
737 |
+
if ($_REQUEST['action'] == 'unlock_ip') { //Unlock link was clicked for a row in list table
|
738 |
$locked_ip_list->unlock_ip_range(strip_tags($_REQUEST['lockdown_id']));
|
739 |
}
|
740 |
}
|
741 |
+
|
742 |
?>
|
743 |
+
<div class="aio_blue_box">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
744 |
<?php
|
745 |
+
$login_lockdown_feature_url = '<a href="admin.php?page=' . AIOWPSEC_USER_LOGIN_MENU_SLUG . '&tab=tab1" target="_blank">Login Lockdown</a>';
|
746 |
+
echo '<p>' . __('This tab displays the list of all IP addresses which are currently temporarily locked out due to the Login Lockdown feature:', 'all-in-one-wp-security-and-firewall') . '</p>' .
|
747 |
+
'<p>' . $login_lockdown_feature_url . '</p>';
|
|
|
748 |
?>
|
749 |
+
</div>
|
750 |
+
|
751 |
+
<div class="postbox">
|
752 |
+
<h3 class="hndle"><label
|
753 |
+
for="title"><?php _e('Currently Locked Out IP Addresses and Ranges', 'all-in-one-wp-security-and-firewall');?></label>
|
754 |
+
</h3>
|
755 |
+
|
756 |
+
<div class="inside">
|
757 |
+
<?php
|
758 |
+
//Fetch, prepare, sort, and filter our data...
|
759 |
+
$locked_ip_list->prepare_items();
|
760 |
+
//echo "put table of locked entries here";
|
761 |
+
?>
|
762 |
+
<form id="tables-filter" method="get"
|
763 |
+
onSubmit="return confirm('Are you sure you want to perform this bulk operation on the selected entries?');">
|
764 |
+
<!-- For plugins, we also need to ensure that the form posts back to our current page -->
|
765 |
+
<input type="hidden" name="page" value="<?php echo esc_attr($_REQUEST['page']); ?>"/>
|
766 |
+
<?php
|
767 |
+
if (isset($_REQUEST["tab"])) {
|
768 |
+
echo '<input type="hidden" name="tab" value="' . $_REQUEST["tab"] . '" />';
|
769 |
+
}
|
770 |
+
?>
|
771 |
+
<!-- Now we can render the completed list table -->
|
772 |
+
<?php $locked_ip_list->display(); ?>
|
773 |
+
</form>
|
774 |
+
</div>
|
775 |
+
</div>
|
776 |
+
|
777 |
+
<?php
|
778 |
}
|
779 |
|
780 |
function render_tab4()
|
781 |
{
|
782 |
global $wpdb;
|
783 |
+
include_once 'wp-security-list-permanent-blocked-ip.php'; //For rendering the AIOWPSecurity_List_Table
|
784 |
+
$blocked_ip_list = new AIOWPSecurity_List_Blocked_IP(); //For rendering the AIOWPSecurity_List_Table
|
785 |
+
|
786 |
+
if (isset($_REQUEST['action'])) //Do list table form row action tasks
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
787 |
{
|
788 |
+
if ($_REQUEST['action'] == 'unblock_ip') { //Unblock link was clicked for a row in list table
|
789 |
+
$blocked_ip_list->unblock_ip_address(strip_tags($_REQUEST['blocked_id']));
|
|
|
|
|
|
|
|
|
790 |
}
|
791 |
+
}
|
792 |
+
|
793 |
?>
|
794 |
+
<div class="aio_blue_box">
|
|
|
|
|
795 |
<?php
|
796 |
+
echo '<p>' . __('This tab displays the list of all permanently blocked IP addresses.', 'all-in-one-wp-security-and-firewall') . '</p>' .
|
797 |
+
'<p>' . __('NOTE: This feature does NOT use the .htaccess file to permanently block the IP addresses so it should be compatible with all web servers running WordPress.', 'all-in-one-wp-security-and-firewall') . '</p>';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
798 |
?>
|
|
|
|
|
799 |
</div>
|
800 |
+
|
801 |
+
<div class="postbox">
|
802 |
+
<h3 class="hndle"><label
|
803 |
+
for="title"><?php _e('Permanently Blocked IP Addresses', 'all-in-one-wp-security-and-firewall');?></label>
|
804 |
+
</h3>
|
805 |
+
|
806 |
+
<div class="inside">
|
807 |
+
<?php
|
808 |
+
//Fetch, prepare, sort, and filter our data...
|
809 |
+
$blocked_ip_list->prepare_items();
|
810 |
+
?>
|
811 |
+
<form id="tables-filter" method="post">
|
812 |
+
<!-- For plugins, we also need to ensure that the form posts back to our current page -->
|
813 |
+
<input type="hidden" name="page" value="<?php echo esc_attr($_REQUEST['page']); ?>"/>
|
814 |
+
<?php
|
815 |
+
$blocked_ip_list->search_box('Search', 'search_permanent_block');
|
816 |
+
if (isset($_REQUEST["tab"])) {
|
817 |
+
echo '<input type="hidden" name="tab" value="' . $_REQUEST["tab"] . '" />';
|
818 |
+
}
|
819 |
+
?>
|
820 |
+
<!-- Now we can render the completed list table -->
|
821 |
+
<?php $blocked_ip_list->display(); ?>
|
822 |
+
</form>
|
823 |
+
</div>
|
824 |
+
</div>
|
825 |
+
|
826 |
+
<?php
|
827 |
+
}
|
828 |
+
|
829 |
+
function render_tab5()
|
830 |
+
{
|
831 |
+
global $wpdb;
|
832 |
+
$file_selected = isset($_POST["aiowps_log_file"]) ? $_POST["aiowps_log_file"] : '';
|
833 |
+
?>
|
834 |
+
<div class="postbox">
|
835 |
+
<h3 class="hndle"><label
|
836 |
+
for="title"><?php _e('View Logs for All In WP Security & Firewall Plugin', 'all-in-one-wp-security-and-firewall');?></label>
|
837 |
+
</h3>
|
838 |
+
|
839 |
+
<div class="inside">
|
840 |
+
<form action="" method="POST">
|
841 |
+
<?php wp_nonce_field('aiowpsec-dashboard-logs-nonce'); ?>
|
842 |
+
<table class="form-table">
|
843 |
+
<tr valign="top">
|
844 |
+
<th scope="row"><?php _e('Log File', 'all-in-one-wp-security-and-firewall')?>:</th>
|
845 |
+
<td>
|
846 |
+
<select id="aiowps_log_file" name="aiowps_log_file">
|
847 |
+
<option
|
848 |
+
value=""><?php _e('--Select a file--', 'all-in-one-wp-security-and-firewall')?></option>
|
849 |
+
<option
|
850 |
+
value="wp-security-log.txt" <?php selected($file_selected, 'wp-security-log.txt'); ?>>
|
851 |
+
wp-security-log
|
852 |
+
</option>
|
853 |
+
<option
|
854 |
+
value="wp-security-log-cron-job.txt" <?php selected($file_selected, 'wp-security-log-cron-job.txt'); ?>>
|
855 |
+
wp-security-log-cron-job
|
856 |
+
</option>
|
857 |
+
</select>
|
858 |
+
<span
|
859 |
+
class="description"><?php _e('Select one of the log files to view the contents', 'all-in-one-wp-security-and-firewall'); ?></span>
|
860 |
+
</td>
|
861 |
+
</tr>
|
862 |
+
</table>
|
863 |
+
<input type="submit" name="aiowps_view_logs"
|
864 |
+
value="<?php _e('View Logs', 'all-in-one-wp-security-and-firewall')?>"
|
865 |
+
class="button-primary"/>
|
866 |
+
</form>
|
867 |
+
|
868 |
+
</div>
|
869 |
</div>
|
|
|
870 |
<?php
|
871 |
+
if (isset($_POST['aiowps_view_logs']))//Do form submission tasks
|
872 |
+
{
|
873 |
+
$error = '';
|
874 |
+
$nonce = $_REQUEST['_wpnonce'];
|
875 |
+
if (!wp_verify_nonce($nonce, 'aiowpsec-dashboard-logs-nonce')) {
|
876 |
+
$aio_wp_security->debug_logger->log_debug("Nonce check failed on dashboard view logs!", 4);
|
877 |
+
die("Nonce check failed on dashboard view logs!");
|
878 |
+
}
|
879 |
+
|
880 |
+
if (!empty($file_selected)) {
|
881 |
+
?>
|
882 |
+
<div class="postbox">
|
883 |
+
<h3 class="hndle"><label
|
884 |
+
for="title"><?php echo __('Log File Contents For', 'all-in-one-wp-security-and-firewall') . ': ' . $file_selected;?></label>
|
885 |
+
</h3>
|
886 |
+
|
887 |
+
<div class="inside">
|
888 |
+
<?php
|
889 |
+
$aiowps_log_dir = AIO_WP_SECURITY_PATH . '/logs';
|
890 |
+
$log_file = $aiowps_log_dir . '/' . $file_selected;
|
891 |
+
if (file_exists($log_file)) {
|
892 |
+
$log_contents = AIOWPSecurity_Utility_File::get_file_contents($log_file);
|
893 |
+
} else {
|
894 |
+
$log_contents = '';
|
895 |
+
}
|
896 |
+
|
897 |
+
if (empty($log_contents)) {
|
898 |
+
$log_contents = $file_selected . ': ' . __('Log file is empty!', 'all-in-one-wp-security-and-firewall');
|
899 |
+
}
|
900 |
+
?>
|
901 |
+
<textarea class="aio_text_area_file_output aio_half_width aio_spacer_10_tb" rows="15"
|
902 |
+
readonly><?php echo $log_contents; ?></textarea>
|
903 |
+
|
904 |
+
</div>
|
905 |
+
</div>
|
906 |
+
|
907 |
+
<?php
|
908 |
+
|
909 |
}
|
910 |
}
|
911 |
?>
|
912 |
|
913 |
|
914 |
+
|
915 |
+
<?php
|
916 |
}
|
917 |
+
|
918 |
} //end class
|
admin/wp-security-database-menu.php
CHANGED
@@ -223,10 +223,9 @@ class AIOWPSecurity_Database_Menu extends AIOWPSecurity_Admin_Menu
|
|
223 |
}
|
224 |
echo '<div id="message" class="updated fade"><p>';
|
225 |
_e('DB Backup was successfully completed! You will receive the backup file via email if you have enabled "Send Backup File Via Email", otherwise you can retrieve it via FTP from the following directory:','all-in-one-wp-security-and-firewall');
|
226 |
-
echo '
|
227 |
_e('Your DB Backup File location: ');
|
228 |
echo '<strong>'.$aiowps_backup_file_path.'</strong>';
|
229 |
-
echo '</p>';
|
230 |
echo '</p></div>';
|
231 |
}
|
232 |
else
|
@@ -300,11 +299,9 @@ class AIOWPSecurity_Database_Menu extends AIOWPSecurity_Admin_Menu
|
|
300 |
<div class="inside">
|
301 |
<form action="" method="POST">
|
302 |
<?php wp_nonce_field('aiowpsec-db-manual-change-nonce'); ?>
|
303 |
-
<
|
304 |
-
<tr valign="top">
|
305 |
<span class="description"><?php _e('To create a new DB backup just click on the button below.', 'all-in-one-wp-security-and-firewall'); ?></span>
|
306 |
-
|
307 |
-
</table>
|
308 |
<input type="submit" name="aiowps_manual_db_backup" value="<?php _e('Create DB Backup Now', 'all-in-one-wp-security-and-firewall')?>" class="button-primary" />
|
309 |
</form>
|
310 |
</div></div>
|
223 |
}
|
224 |
echo '<div id="message" class="updated fade"><p>';
|
225 |
_e('DB Backup was successfully completed! You will receive the backup file via email if you have enabled "Send Backup File Via Email", otherwise you can retrieve it via FTP from the following directory:','all-in-one-wp-security-and-firewall');
|
226 |
+
echo '</p><p>';
|
227 |
_e('Your DB Backup File location: ');
|
228 |
echo '<strong>'.$aiowps_backup_file_path.'</strong>';
|
|
|
229 |
echo '</p></div>';
|
230 |
}
|
231 |
else
|
299 |
<div class="inside">
|
300 |
<form action="" method="POST">
|
301 |
<?php wp_nonce_field('aiowpsec-db-manual-change-nonce'); ?>
|
302 |
+
<p>
|
|
|
303 |
<span class="description"><?php _e('To create a new DB backup just click on the button below.', 'all-in-one-wp-security-and-firewall'); ?></span>
|
304 |
+
</p>
|
|
|
305 |
<input type="submit" name="aiowps_manual_db_backup" value="<?php _e('Create DB Backup Now', 'all-in-one-wp-security-and-firewall')?>" class="button-primary" />
|
306 |
</form>
|
307 |
</div></div>
|
admin/wp-security-filescan-menu.php
CHANGED
@@ -75,7 +75,6 @@ class AIOWPSecurity_Filescan_Menu extends AIOWPSecurity_Admin_Menu
|
|
75 |
{
|
76 |
global $wpdb, $aio_wp_security;
|
77 |
global $aiowps_feature_mgr;
|
78 |
-
|
79 |
if (isset($_POST['fcd_scan_info']))
|
80 |
{
|
81 |
//Display scan file change info and clear the global alert variable
|
@@ -160,13 +159,20 @@ class AIOWPSecurity_Filescan_Menu extends AIOWPSecurity_Admin_Menu
|
|
160 |
|
161 |
}
|
162 |
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
$
|
168 |
-
|
|
|
|
|
|
|
|
|
|
|
169 |
|
|
|
|
|
170 |
if($error)
|
171 |
{
|
172 |
$this->show_msg_error(__('Attention!','all-in-one-wp-security-and-firewall').$error);
|
@@ -288,7 +294,7 @@ class AIOWPSecurity_Filescan_Menu extends AIOWPSecurity_Admin_Menu
|
|
288 |
</tr>
|
289 |
<tr valign="top">
|
290 |
<th scope="row"><?php _e('File Types To Ignore', 'all-in-one-wp-security-and-firewall')?>:</th>
|
291 |
-
<td><textarea name="aiowps_fcd_exclude_filetypes" rows="5" cols="50"><?php echo $aio_wp_security->configs->get_value('aiowps_fcd_exclude_filetypes'); ?></textarea>
|
292 |
<br />
|
293 |
<span class="description"><?php _e('Enter each file type or extension on a new line which you wish to exclude from the file change detection scan.', 'all-in-one-wp-security-and-firewall'); ?></span>
|
294 |
<span class="aiowps_more_info_anchor"><span class="aiowps_more_info_toggle_char">+</span><span class="aiowps_more_info_toggle_text"><?php _e('More Info', 'all-in-one-wp-security-and-firewall'); ?></span></span>
|
@@ -305,7 +311,7 @@ class AIOWPSecurity_Filescan_Menu extends AIOWPSecurity_Admin_Menu
|
|
305 |
</tr>
|
306 |
<tr valign="top">
|
307 |
<th scope="row"><?php _e('Files/Directories To Ignore', 'all-in-one-wp-security-and-firewall')?>:</th>
|
308 |
-
<td><textarea name="aiowps_fcd_exclude_files" rows="5" cols="50"><?php echo $aio_wp_security->configs->get_value('aiowps_fcd_exclude_files'); ?></textarea>
|
309 |
<br />
|
310 |
<span class="description"><?php _e('Enter each file or directory on a new line which you wish to exclude from the file change detection scan.', 'all-in-one-wp-security-and-firewall'); ?></span>
|
311 |
<span class="aiowps_more_info_anchor"><span class="aiowps_more_info_toggle_char">+</span><span class="aiowps_more_info_toggle_text"><?php _e('More Info', 'all-in-one-wp-security-and-firewall'); ?></span></span>
|
@@ -324,8 +330,10 @@ class AIOWPSecurity_Filescan_Menu extends AIOWPSecurity_Admin_Menu
|
|
324 |
<td>
|
325 |
<input name="aiowps_send_fcd_scan_email" type="checkbox"<?php if($aio_wp_security->configs->get_value('aiowps_send_fcd_scan_email')=='1') echo ' checked="checked"'; ?> value="1"/>
|
326 |
<span class="description"><?php _e('Check this if you want the system to email you if a file change was detected', 'all-in-one-wp-security-and-firewall'); ?></span>
|
327 |
-
<br
|
328 |
-
|
|
|
|
|
329 |
</td>
|
330 |
</tr>
|
331 |
</table>
|
75 |
{
|
76 |
global $wpdb, $aio_wp_security;
|
77 |
global $aiowps_feature_mgr;
|
|
|
78 |
if (isset($_POST['fcd_scan_info']))
|
79 |
{
|
80 |
//Display scan file change info and clear the global alert variable
|
159 |
|
160 |
}
|
161 |
|
162 |
+
//$email_address = sanitize_email($_POST['aiowps_fcd_scan_email_address']);
|
163 |
+
$email_address = $_POST['aiowps_fcd_scan_email_address'];
|
164 |
+
$email_list_array = explode(PHP_EOL, $email_address);
|
165 |
+
foreach($email_list_array as $key=>$value){
|
166 |
+
$email_sane = sanitize_email($value);
|
167 |
+
if(!is_email($email_sane))
|
168 |
+
{
|
169 |
+
$err_msg = 'The following address was removed because it is not a valid email address: '.htmlspecialchars($value);
|
170 |
+
$error .= '<p>'.__($err_msg,'all-in-one-wp-security-and-firewall').'</p>';
|
171 |
+
unset($email_list_array[$key]);
|
172 |
+
}
|
173 |
|
174 |
+
}
|
175 |
+
$email_address = implode(PHP_EOL, $email_list_array);
|
176 |
if($error)
|
177 |
{
|
178 |
$this->show_msg_error(__('Attention!','all-in-one-wp-security-and-firewall').$error);
|
294 |
</tr>
|
295 |
<tr valign="top">
|
296 |
<th scope="row"><?php _e('File Types To Ignore', 'all-in-one-wp-security-and-firewall')?>:</th>
|
297 |
+
<td><textarea name="aiowps_fcd_exclude_filetypes" rows="5" cols="50"><?php echo htmlspecialchars($aio_wp_security->configs->get_value('aiowps_fcd_exclude_filetypes')); ?></textarea>
|
298 |
<br />
|
299 |
<span class="description"><?php _e('Enter each file type or extension on a new line which you wish to exclude from the file change detection scan.', 'all-in-one-wp-security-and-firewall'); ?></span>
|
300 |
<span class="aiowps_more_info_anchor"><span class="aiowps_more_info_toggle_char">+</span><span class="aiowps_more_info_toggle_text"><?php _e('More Info', 'all-in-one-wp-security-and-firewall'); ?></span></span>
|
311 |
</tr>
|
312 |
<tr valign="top">
|
313 |
<th scope="row"><?php _e('Files/Directories To Ignore', 'all-in-one-wp-security-and-firewall')?>:</th>
|
314 |
+
<td><textarea name="aiowps_fcd_exclude_files" rows="5" cols="50"><?php echo htmlspecialchars($aio_wp_security->configs->get_value('aiowps_fcd_exclude_files')); ?></textarea>
|
315 |
<br />
|
316 |
<span class="description"><?php _e('Enter each file or directory on a new line which you wish to exclude from the file change detection scan.', 'all-in-one-wp-security-and-firewall'); ?></span>
|
317 |
<span class="aiowps_more_info_anchor"><span class="aiowps_more_info_toggle_char">+</span><span class="aiowps_more_info_toggle_text"><?php _e('More Info', 'all-in-one-wp-security-and-firewall'); ?></span></span>
|
330 |
<td>
|
331 |
<input name="aiowps_send_fcd_scan_email" type="checkbox"<?php if($aio_wp_security->configs->get_value('aiowps_send_fcd_scan_email')=='1') echo ' checked="checked"'; ?> value="1"/>
|
332 |
<span class="description"><?php _e('Check this if you want the system to email you if a file change was detected', 'all-in-one-wp-security-and-firewall'); ?></span>
|
333 |
+
<br />
|
334 |
+
<textarea name="aiowps_fcd_scan_email_address" rows="5" cols="50"><?php echo htmlspecialchars($aio_wp_security->configs->get_value('aiowps_fcd_scan_email_address')); ?></textarea>
|
335 |
+
<br />
|
336 |
+
<span class="description"><?php _e('Enter one or more email addresses on a new line.', 'all-in-one-wp-security-and-firewall'); ?></span>
|
337 |
</td>
|
338 |
</tr>
|
339 |
</table>
|
admin/wp-security-filesystem-menu.php
CHANGED
@@ -198,6 +198,13 @@ class AIOWPSecurity_Filesystem_Menu extends AIOWPSecurity_Admin_Menu
|
|
198 |
//$this->show_msg_settings_updated();
|
199 |
|
200 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
201 |
?>
|
202 |
<h2><?php _e('File Editing', 'all-in-one-wp-security-and-firewall')?></h2>
|
203 |
<div class="aio_blue_box">
|
@@ -317,7 +324,7 @@ class AIOWPSecurity_Filesystem_Menu extends AIOWPSecurity_Admin_Menu
|
|
317 |
|
318 |
if (isset($_POST['aiowps_system_log_file'])){
|
319 |
if ($_POST['aiowps_system_log_file'] != NULL){
|
320 |
-
$sys_log_file =
|
321 |
$aio_wp_security->configs->set_value('aiowps_system_log_file',$sys_log_file);
|
322 |
}else{
|
323 |
$sys_log_file = 'error_log';
|
@@ -346,7 +353,7 @@ class AIOWPSecurity_Filesystem_Menu extends AIOWPSecurity_Admin_Menu
|
|
346 |
<form action="" method="POST">
|
347 |
<?php wp_nonce_field('aiowpsec-view-system-logs-nonce'); ?>
|
348 |
<div><?php _e('Enter System Log File Name', 'all-in-one-wp-security-and-firewall')?>:
|
349 |
-
<input type="text" size="25" name="aiowps_system_log_file" value="<?php echo
|
350 |
<span class="description"><?php _e('Enter your system log file name. (Defaults to error_log)', 'all-in-one-wp-security-and-firewall'); ?></span>
|
351 |
</div>
|
352 |
<div class="aio_spacer_15"></div>
|
198 |
//$this->show_msg_settings_updated();
|
199 |
|
200 |
}
|
201 |
+
else {
|
202 |
+
// Make sure the setting value is up-to-date with current value in WP config
|
203 |
+
$aio_wp_security->configs->set_value('aiowps_disable_file_editing', defined('DISALLOW_FILE_EDIT') && DISALLOW_FILE_EDIT ? '1' : '');
|
204 |
+
$aio_wp_security->configs->save_config();
|
205 |
+
//Recalculate points after the feature status/options have been altered
|
206 |
+
$aiowps_feature_mgr->check_feature_status_and_recalculate_points();
|
207 |
+
}
|
208 |
?>
|
209 |
<h2><?php _e('File Editing', 'all-in-one-wp-security-and-firewall')?></h2>
|
210 |
<div class="aio_blue_box">
|
324 |
|
325 |
if (isset($_POST['aiowps_system_log_file'])){
|
326 |
if ($_POST['aiowps_system_log_file'] != NULL){
|
327 |
+
$sys_log_file = esc_html($_POST['aiowps_system_log_file']);
|
328 |
$aio_wp_security->configs->set_value('aiowps_system_log_file',$sys_log_file);
|
329 |
}else{
|
330 |
$sys_log_file = 'error_log';
|
353 |
<form action="" method="POST">
|
354 |
<?php wp_nonce_field('aiowpsec-view-system-logs-nonce'); ?>
|
355 |
<div><?php _e('Enter System Log File Name', 'all-in-one-wp-security-and-firewall')?>:
|
356 |
+
<input type="text" size="25" name="aiowps_system_log_file" value="<?php echo esc_html($sys_log_file); ?>" />
|
357 |
<span class="description"><?php _e('Enter your system log file name. (Defaults to error_log)', 'all-in-one-wp-security-and-firewall'); ?></span>
|
358 |
</div>
|
359 |
<div class="aio_spacer_15"></div>
|
admin/wp-security-firewall-menu.php
CHANGED
@@ -27,7 +27,7 @@ class AIOWPSecurity_Firewall_Menu extends AIOWPSecurity_Admin_Menu
|
|
27 |
$this->menu_tabs = array(
|
28 |
'tab1' => __('Basic Firewall Rules', 'all-in-one-wp-security-and-firewall'),
|
29 |
'tab2' => __('Additional Firewall Rules', 'all-in-one-wp-security-and-firewall'),
|
30 |
-
'tab3' => __('
|
31 |
'tab4' => __('Internet Bots', 'all-in-one-wp-security-and-firewall'),
|
32 |
'tab5' => __('Prevent Hotlinks', 'all-in-one-wp-security-and-firewall'),
|
33 |
'tab6' => __('404 Detection', 'all-in-one-wp-security-and-firewall'),
|
@@ -493,14 +493,14 @@ class AIOWPSecurity_Firewall_Menu extends AIOWPSecurity_Admin_Menu
|
|
493 |
|
494 |
function render_tab3()
|
495 |
{
|
496 |
-
global $aio_wp_security;
|
497 |
-
if(isset($_POST['
|
498 |
{
|
499 |
$nonce=$_REQUEST['_wpnonce'];
|
500 |
-
if (!wp_verify_nonce($nonce, 'aiowpsec-enable-5g-firewall-nonce'))
|
501 |
{
|
502 |
-
$aio_wp_security->debug_logger->log_debug("Nonce check failed on enable 5G firewall settings!",4);
|
503 |
-
die("Nonce check failed on enable 5G firewall settings!");
|
504 |
}
|
505 |
|
506 |
//Save settings
|
@@ -512,6 +512,14 @@ class AIOWPSecurity_Firewall_Menu extends AIOWPSecurity_Admin_Menu
|
|
512 |
{
|
513 |
$aio_wp_security->configs->set_value('aiowps_enable_5g_firewall','');
|
514 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
515 |
|
516 |
//Commit the config settings
|
517 |
$aio_wp_security->configs->save_config();
|
@@ -521,7 +529,9 @@ class AIOWPSecurity_Firewall_Menu extends AIOWPSecurity_Admin_Menu
|
|
521 |
|
522 |
if ($res)
|
523 |
{
|
524 |
-
$this->show_msg_updated(__('You have successfully saved the 5G Firewall Protection configuration', 'all-in-one-wp-security-and-firewall'));
|
|
|
|
|
525 |
}
|
526 |
else if($res == -1)
|
527 |
{
|
@@ -534,28 +544,47 @@ class AIOWPSecurity_Firewall_Menu extends AIOWPSecurity_Admin_Menu
|
|
534 |
<div class="aio_blue_box">
|
535 |
<?php
|
536 |
$backup_tab_link = '<a href="admin.php?page='.AIOWPSEC_SETTINGS_MENU_SLUG.'&tab=tab2" target="_blank">backup</a>';
|
537 |
-
$info_msg = '<p>'.sprintf( __('This feature allows you to activate the
|
538 |
-
|
539 |
-
$info_msg .= '<p>'.__('The
|
540 |
-
$info_msg .= '<p>'.
|
|
|
541 |
echo $info_msg;
|
542 |
?>
|
543 |
</div>
|
544 |
|
545 |
<div class="postbox">
|
546 |
-
<h3 class="hndle"><label for="title"><?php _e('
|
547 |
<div class="inside">
|
548 |
<?php
|
549 |
//Display security info badge
|
550 |
global $aiowps_feature_mgr;
|
551 |
-
$aiowps_feature_mgr->output_feature_details_badge("firewall-enable-5g-blacklist");
|
552 |
?>
|
553 |
|
554 |
<form action="" method="POST">
|
555 |
-
<?php wp_nonce_field('aiowpsec-enable-5g-firewall-nonce'); ?>
|
556 |
<table class="form-table">
|
557 |
<tr valign="top">
|
558 |
-
<th scope="row"><?php _e('Enable
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
559 |
<td>
|
560 |
<input name="aiowps_enable_5g_firewall" type="checkbox"<?php if($aio_wp_security->configs->get_value('aiowps_enable_5g_firewall')=='1') echo ' checked="checked"'; ?> value="1"/>
|
561 |
<span class="description"><?php _e('Check this if you want to apply the 5G Blacklist firewall protection from perishablepress.com to your site.', 'all-in-one-wp-security-and-firewall'); ?></span>
|
@@ -573,7 +602,7 @@ class AIOWPSecurity_Firewall_Menu extends AIOWPSecurity_Admin_Menu
|
|
573 |
</td>
|
574 |
</tr>
|
575 |
</table>
|
576 |
-
<input type="submit" name="
|
577 |
</form>
|
578 |
</div></div>
|
579 |
<?php
|
@@ -834,6 +863,16 @@ class AIOWPSecurity_Firewall_Menu extends AIOWPSecurity_Admin_Menu
|
|
834 |
<br />'.__('If you want to temporarily block an IP address, simply click the "Temp Block" link for the applicable IP entry in the "404 Event Logs" table below.', 'all-in-one-wp-security-and-firewall').'</p>';
|
835 |
?>
|
836 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
837 |
|
838 |
<div class="postbox">
|
839 |
<h3 class="hndle"><label for="title"><?php _e('404 Detection Options', 'all-in-one-wp-security-and-firewall'); ?></label></h3>
|
@@ -1020,7 +1059,7 @@ class AIOWPSecurity_Firewall_Menu extends AIOWPSecurity_Admin_Menu
|
|
1020 |
<tr valign="top">
|
1021 |
<th scope="row"><?php _e('Enter Custom .htaccess Rules:', 'all-in-one-wp-security-and-firewall')?></th>
|
1022 |
<td>
|
1023 |
-
<textarea name="aiowps_custom_rules" rows="35" cols="50"><?php echo $aio_wp_security->configs->get_value('aiowps_custom_rules'); ?></textarea>
|
1024 |
<br />
|
1025 |
<span class="description"><?php _e('Enter your custom .htaccess rules/directives.','all-in-one-wp-security-and-firewall');?></span>
|
1026 |
</td>
|
27 |
$this->menu_tabs = array(
|
28 |
'tab1' => __('Basic Firewall Rules', 'all-in-one-wp-security-and-firewall'),
|
29 |
'tab2' => __('Additional Firewall Rules', 'all-in-one-wp-security-and-firewall'),
|
30 |
+
'tab3' => __('6G Blacklist Firewall Rules', 'all-in-one-wp-security-and-firewall'),
|
31 |
'tab4' => __('Internet Bots', 'all-in-one-wp-security-and-firewall'),
|
32 |
'tab5' => __('Prevent Hotlinks', 'all-in-one-wp-security-and-firewall'),
|
33 |
'tab6' => __('404 Detection', 'all-in-one-wp-security-and-firewall'),
|
493 |
|
494 |
function render_tab3()
|
495 |
{
|
496 |
+
global $aio_wp_security, $aiowps_feature_mgr;
|
497 |
+
if(isset($_POST['aiowps_apply_5g_6g_firewall_settings']))//Do form submission tasks
|
498 |
{
|
499 |
$nonce=$_REQUEST['_wpnonce'];
|
500 |
+
if (!wp_verify_nonce($nonce, 'aiowpsec-enable-5g-6g-firewall-nonce'))
|
501 |
{
|
502 |
+
$aio_wp_security->debug_logger->log_debug("Nonce check failed on enable 5G/6G firewall settings!",4);
|
503 |
+
die("Nonce check failed on enable 5G/6G firewall settings!");
|
504 |
}
|
505 |
|
506 |
//Save settings
|
512 |
{
|
513 |
$aio_wp_security->configs->set_value('aiowps_enable_5g_firewall','');
|
514 |
}
|
515 |
+
if(isset($_POST['aiowps_enable_6g_firewall']))
|
516 |
+
{
|
517 |
+
$aio_wp_security->configs->set_value('aiowps_enable_6g_firewall','1');
|
518 |
+
}
|
519 |
+
else
|
520 |
+
{
|
521 |
+
$aio_wp_security->configs->set_value('aiowps_enable_6g_firewall','');
|
522 |
+
}
|
523 |
|
524 |
//Commit the config settings
|
525 |
$aio_wp_security->configs->save_config();
|
529 |
|
530 |
if ($res)
|
531 |
{
|
532 |
+
$this->show_msg_updated(__('You have successfully saved the 5G/6G Firewall Protection configuration', 'all-in-one-wp-security-and-firewall'));
|
533 |
+
// Recalculate points after the feature status/options have been altered
|
534 |
+
$aiowps_feature_mgr->check_feature_status_and_recalculate_points();
|
535 |
}
|
536 |
else if($res == -1)
|
537 |
{
|
544 |
<div class="aio_blue_box">
|
545 |
<?php
|
546 |
$backup_tab_link = '<a href="admin.php?page='.AIOWPSEC_SETTINGS_MENU_SLUG.'&tab=tab2" target="_blank">backup</a>';
|
547 |
+
$info_msg = '<p>'.sprintf( __('This feature allows you to activate the %s (or legacy %s) firewall security protection rules designed and produced by %s.', 'all-in-one-wp-security-and-firewall'), '<a href="http://perishablepress.com/6g/" target="_blank">6G</a>', '<a href="http://perishablepress.com/5g-blacklist-2013/" target="_blank">5G</a>', '<a href="http://perishablepress.com/" target="_blank">Perishable Press</a>').'</p>';
|
548 |
+
$info_msg .= '<p>'.__('The 6G Blacklist is updated and improved version of 5G Blacklist. If you have 5G Blacklist active, you might consider activating 6G Blacklist instead.', 'all-in-one-wp-security-and-firewall').'</p>';
|
549 |
+
$info_msg .= '<p>'.__('The 6G Blacklist is a simple, flexible blacklist that helps reduce the number of malicious URL requests that hit your website.', 'all-in-one-wp-security-and-firewall').'</p>';
|
550 |
+
$info_msg .= '<p>'.__('The added advantage of applying the 6G firewall to your site is that it has been tested and confirmed by the people at PerishablePress.com to be an optimal and least disruptive set of .htaccess security rules for general WP sites running on an Apache server or similar.', 'all-in-one-wp-security-and-firewall').'</p>';
|
551 |
+
$info_msg .= '<p>'.sprintf( __('Therefore the 6G firewall rules should not have any impact on your site\'s general functionality but if you wish you can take a %s of your .htaccess file before proceeding.', 'all-in-one-wp-security-and-firewall'), $backup_tab_link).'</p>';
|
552 |
echo $info_msg;
|
553 |
?>
|
554 |
</div>
|
555 |
|
556 |
<div class="postbox">
|
557 |
+
<h3 class="hndle"><label for="title"><?php _e('6G Blacklist/Firewall Settings', 'all-in-one-wp-security-and-firewall'); ?></label></h3>
|
558 |
<div class="inside">
|
559 |
<?php
|
560 |
//Display security info badge
|
561 |
global $aiowps_feature_mgr;
|
562 |
+
$aiowps_feature_mgr->output_feature_details_badge("firewall-enable-5g-6g-blacklist");
|
563 |
?>
|
564 |
|
565 |
<form action="" method="POST">
|
566 |
+
<?php wp_nonce_field('aiowpsec-enable-5g-6g-firewall-nonce'); ?>
|
567 |
<table class="form-table">
|
568 |
<tr valign="top">
|
569 |
+
<th scope="row"><?php _e('Enable 6G Firewall Protection', 'all-in-one-wp-security-and-firewall')?>:</th>
|
570 |
+
<td>
|
571 |
+
<input name="aiowps_enable_6g_firewall" type="checkbox"<?php if($aio_wp_security->configs->get_value('aiowps_enable_6g_firewall')=='1') echo ' checked="checked"'; ?> value="1"/>
|
572 |
+
<span class="description"><?php _e('Check this if you want to apply the 6G Blacklist firewall protection from perishablepress.com to your site.', 'all-in-one-wp-security-and-firewall'); ?></span>
|
573 |
+
<span class="aiowps_more_info_anchor"><span class="aiowps_more_info_toggle_char">+</span><span class="aiowps_more_info_toggle_text"><?php _e('More Info', 'all-in-one-wp-security-and-firewall'); ?></span></span>
|
574 |
+
<div class="aiowps_more_info_body">
|
575 |
+
<?php
|
576 |
+
echo '<p class="description">'.__('This setting will implement the 6G security firewall protection mechanisms on your site which include the following things:', 'all-in-one-wp-security-and-firewall').'</p>';
|
577 |
+
echo '<p class="description">'.__('1) Block forbidden characters commonly used in exploitative attacks.', 'all-in-one-wp-security-and-firewall').'</p>';
|
578 |
+
echo '<p class="description">'.__('2) Block malicious encoded URL characters such as the ".css(" string.', 'all-in-one-wp-security-and-firewall').'</p>';
|
579 |
+
echo '<p class="description">'.__('3) Guard against the common patterns and specific exploits in the root portion of targeted URLs.', 'all-in-one-wp-security-and-firewall').'</p>';
|
580 |
+
echo '<p class="description">'.__('4) Stop attackers from manipulating query strings by disallowing illicit characters.', 'all-in-one-wp-security-and-firewall').'</p>';
|
581 |
+
echo '<p class="description">'.__('....and much more.', 'all-in-one-wp-security-and-firewall').'</p>';
|
582 |
+
?>
|
583 |
+
</div>
|
584 |
+
</td>
|
585 |
+
</tr>
|
586 |
+
<tr valign="top">
|
587 |
+
<th scope="row"><?php _e('Enable legacy 5G Firewall Protection', 'all-in-one-wp-security-and-firewall')?>:</th>
|
588 |
<td>
|
589 |
<input name="aiowps_enable_5g_firewall" type="checkbox"<?php if($aio_wp_security->configs->get_value('aiowps_enable_5g_firewall')=='1') echo ' checked="checked"'; ?> value="1"/>
|
590 |
<span class="description"><?php _e('Check this if you want to apply the 5G Blacklist firewall protection from perishablepress.com to your site.', 'all-in-one-wp-security-and-firewall'); ?></span>
|
602 |
</td>
|
603 |
</tr>
|
604 |
</table>
|
605 |
+
<input type="submit" name="aiowps_apply_5g_6g_firewall_settings" value="<?php _e('Save 5G/6G Firewall Settings', 'all-in-one-wp-security-and-firewall')?>" class="button-primary" />
|
606 |
</form>
|
607 |
</div></div>
|
608 |
<?php
|
863 |
<br />'.__('If you want to temporarily block an IP address, simply click the "Temp Block" link for the applicable IP entry in the "404 Event Logs" table below.', 'all-in-one-wp-security-and-firewall').'</p>';
|
864 |
?>
|
865 |
</div>
|
866 |
+
<div class="aio_grey_box">
|
867 |
+
<?php
|
868 |
+
$addon_link = '<strong><a href="http://www.site-scanners.com/smart-404-security-blocking-addon/" target="_blank">Smart404 Blocking Addon</a></strong>';
|
869 |
+
$info_msg = sprintf( __('You may also be interested in our %s.', 'all-in-one-wp-security-and-firewall'), $addon_link);
|
870 |
+
$info_msg2 = __('This addon allows you to automatically and permanently block IP addresses based on how many 404 errors they produce.', 'all-in-one-wp-security-and-firewall');
|
871 |
+
|
872 |
+
echo '<p>'.$info_msg.
|
873 |
+
'<br />'.$info_msg2.'</p>';
|
874 |
+
?>
|
875 |
+
</div>
|
876 |
|
877 |
<div class="postbox">
|
878 |
<h3 class="hndle"><label for="title"><?php _e('404 Detection Options', 'all-in-one-wp-security-and-firewall'); ?></label></h3>
|
1059 |
<tr valign="top">
|
1060 |
<th scope="row"><?php _e('Enter Custom .htaccess Rules:', 'all-in-one-wp-security-and-firewall')?></th>
|
1061 |
<td>
|
1062 |
+
<textarea name="aiowps_custom_rules" rows="35" cols="50"><?php echo htmlspecialchars($aio_wp_security->configs->get_value('aiowps_custom_rules')); ?></textarea>
|
1063 |
<br />
|
1064 |
<span class="description"><?php _e('Enter your custom .htaccess rules/directives.','all-in-one-wp-security-and-firewall');?></span>
|
1065 |
</td>
|
admin/wp-security-list-404.php
CHANGED
@@ -85,6 +85,7 @@ class AIOWPSecurity_List_404 extends AIOWPSecurity_List_Table {
|
|
85 |
'event_date' => 'Date',
|
86 |
'status' => 'Lock Status',
|
87 |
);
|
|
|
88 |
return $columns;
|
89 |
}
|
90 |
|
@@ -97,6 +98,7 @@ class AIOWPSecurity_List_404 extends AIOWPSecurity_List_Table {
|
|
97 |
'referer_info' => array('referer_info', false),
|
98 |
'event_date' => array('event_date', false),
|
99 |
);
|
|
|
100 |
return $sortable_columns;
|
101 |
}
|
102 |
|
@@ -144,6 +146,7 @@ class AIOWPSecurity_List_404 extends AIOWPSecurity_List_Table {
|
|
144 |
$events_table = AIOWPSEC_TBL_LOGIN_LOCKDOWN;
|
145 |
if (is_array($entries)) {
|
146 |
//lock multiple records
|
|
|
147 |
$id_list = "(" .implode(",",$entries) .")"; //Create comma separate list for DB operation
|
148 |
$events_table = AIOWPSEC_TBL_EVENTS;
|
149 |
$query = "SELECT ip_or_host FROM $events_table WHERE ID IN ".$id_list;
|
@@ -181,6 +184,7 @@ class AIOWPSecurity_List_404 extends AIOWPSecurity_List_Table {
|
|
181 |
|
182 |
if (is_array($entries)) {
|
183 |
//Get the selected IP addresses
|
|
|
184 |
$id_list = "(" .implode(",",$entries) .")"; //Create comma separate list for DB operation
|
185 |
$events_table = AIOWPSEC_TBL_EVENTS;
|
186 |
$query = "SELECT ip_or_host FROM $events_table WHERE ID IN ".$id_list;
|
@@ -236,6 +240,7 @@ class AIOWPSecurity_List_404 extends AIOWPSecurity_List_Table {
|
|
236 |
{
|
237 |
//Delete multiple records
|
238 |
$entries = array_map( 'esc_sql', $entries); //escape every array element
|
|
|
239 |
$id_list = "(" . implode(",", $entries) . ")"; //Create comma separate list for DB operation
|
240 |
$delete_command = "DELETE FROM " . $events_table . " WHERE id IN " . $id_list;
|
241 |
$result = $wpdb->query($delete_command);
|
85 |
'event_date' => 'Date',
|
86 |
'status' => 'Lock Status',
|
87 |
);
|
88 |
+
$columns = apply_filters('list_404_get_columns', $columns);
|
89 |
return $columns;
|
90 |
}
|
91 |
|
98 |
'referer_info' => array('referer_info', false),
|
99 |
'event_date' => array('event_date', false),
|
100 |
);
|
101 |
+
$sortable_columns = apply_filters('list_404_get_sortable_columns', $sortable_columns);
|
102 |
return $sortable_columns;
|
103 |
}
|
104 |
|
146 |
$events_table = AIOWPSEC_TBL_LOGIN_LOCKDOWN;
|
147 |
if (is_array($entries)) {
|
148 |
//lock multiple records
|
149 |
+
$entries = array_filter($entries, 'is_numeric'); //discard non-numeric ID values
|
150 |
$id_list = "(" .implode(",",$entries) .")"; //Create comma separate list for DB operation
|
151 |
$events_table = AIOWPSEC_TBL_EVENTS;
|
152 |
$query = "SELECT ip_or_host FROM $events_table WHERE ID IN ".$id_list;
|
184 |
|
185 |
if (is_array($entries)) {
|
186 |
//Get the selected IP addresses
|
187 |
+
$entries = array_filter($entries, 'is_numeric'); //discard non-numeric ID values
|
188 |
$id_list = "(" .implode(",",$entries) .")"; //Create comma separate list for DB operation
|
189 |
$events_table = AIOWPSEC_TBL_EVENTS;
|
190 |
$query = "SELECT ip_or_host FROM $events_table WHERE ID IN ".$id_list;
|
240 |
{
|
241 |
//Delete multiple records
|
242 |
$entries = array_map( 'esc_sql', $entries); //escape every array element
|
243 |
+
$entries = array_filter($entries, 'is_numeric'); //discard non-numeric ID values
|
244 |
$id_list = "(" . implode(",", $entries) . ")"; //Create comma separate list for DB operation
|
245 |
$delete_command = "DELETE FROM " . $events_table . " WHERE id IN " . $id_list;
|
246 |
$result = $wpdb->query($delete_command);
|
admin/wp-security-list-acct-activity.php
CHANGED
@@ -104,6 +104,7 @@ class AIOWPSecurity_List_Account_Activity extends AIOWPSecurity_List_Table {
|
|
104 |
if (isset($_REQUEST['_wp_http_referer']))
|
105 |
{
|
106 |
//Delete multiple records
|
|
|
107 |
$id_list = "(" .implode(",",$entries) .")"; //Create comma separate list for DB operation
|
108 |
$delete_command = "DELETE FROM ".$login_activity_table." WHERE id IN ".$id_list;
|
109 |
$result = $wpdb->query($delete_command);
|
104 |
if (isset($_REQUEST['_wp_http_referer']))
|
105 |
{
|
106 |
//Delete multiple records
|
107 |
+
$entries = array_filter($entries, 'is_numeric'); //discard non-numeric ID values
|
108 |
$id_list = "(" .implode(",",$entries) .")"; //Create comma separate list for DB operation
|
109 |
$delete_command = "DELETE FROM ".$login_activity_table." WHERE id IN ".$id_list;
|
110 |
$result = $wpdb->query($delete_command);
|
admin/wp-security-list-comment-spammer-ip.php
CHANGED
@@ -30,7 +30,7 @@ class AIOWPSecurity_List_Comment_Spammer_IP extends AIOWPSecurity_List_Table {
|
|
30 |
$block_url_nonce = wp_nonce_url($block_url, "block_spammer_ip", "aiowps_nonce");
|
31 |
|
32 |
$actions = array(
|
33 |
-
'block' => '<a href="'.$block_url_nonce.'" onclick="return confirm(\'Are you sure you want to
|
34 |
);
|
35 |
}
|
36 |
|
@@ -55,6 +55,7 @@ class AIOWPSecurity_List_Comment_Spammer_IP extends AIOWPSecurity_List_Table {
|
|
55 |
'cb' => '<input type="checkbox" />', //Render a checkbox
|
56 |
'comment_author_IP' => 'Spammer IP',
|
57 |
'amount' => 'Number of SPAM Comments From This IP',
|
|
|
58 |
);
|
59 |
return $columns;
|
60 |
}
|
@@ -63,6 +64,7 @@ class AIOWPSecurity_List_Comment_Spammer_IP extends AIOWPSecurity_List_Table {
|
|
63 |
$sortable_columns = array(
|
64 |
'comment_author_IP' => array('comment_author_IP',false),
|
65 |
'amount' => array('amount',false),
|
|
|
66 |
);
|
67 |
return $sortable_columns;
|
68 |
}
|
@@ -103,6 +105,41 @@ class AIOWPSecurity_List_Comment_Spammer_IP extends AIOWPSecurity_List_Table {
|
|
103 |
* The function accepts either an array of IDs or a single ID
|
104 |
*/
|
105 |
function block_spammer_ip_records($entries)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
106 |
{
|
107 |
global $wpdb, $aio_wp_security;
|
108 |
$raw_banned_ip_list = $aio_wp_security->configs->get_value('aiowps_banned_ip_addresses');
|
@@ -213,6 +250,16 @@ class AIOWPSecurity_List_Comment_Spammer_IP extends AIOWPSecurity_List_Table {
|
|
213 |
ORDER BY $orderby $order
|
214 |
", $minimum_comments_per_ip);
|
215 |
$data = $wpdb->get_results($sql, ARRAY_A);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
216 |
$current_page = $this->get_pagenum();
|
217 |
$total_items = count($data);
|
218 |
$data = array_slice($data, (($current_page - 1) * $per_page), $per_page);
|
30 |
$block_url_nonce = wp_nonce_url($block_url, "block_spammer_ip", "aiowps_nonce");
|
31 |
|
32 |
$actions = array(
|
33 |
+
'block' => '<a href="'.$block_url_nonce.'" onclick="return confirm(\'Are you sure you want to permanently block this IP address?\')">Block</a>',
|
34 |
);
|
35 |
}
|
36 |
|
55 |
'cb' => '<input type="checkbox" />', //Render a checkbox
|
56 |
'comment_author_IP' => 'Spammer IP',
|
57 |
'amount' => 'Number of SPAM Comments From This IP',
|
58 |
+
'status' => 'Status',
|
59 |
);
|
60 |
return $columns;
|
61 |
}
|
64 |
$sortable_columns = array(
|
65 |
'comment_author_IP' => array('comment_author_IP',false),
|
66 |
'amount' => array('amount',false),
|
67 |
+
'status' => array('status',false),
|
68 |
);
|
69 |
return $sortable_columns;
|
70 |
}
|
105 |
* The function accepts either an array of IDs or a single ID
|
106 |
*/
|
107 |
function block_spammer_ip_records($entries)
|
108 |
+
{
|
109 |
+
global $wpdb, $aio_wp_security;
|
110 |
+
if (is_array($entries))
|
111 |
+
{
|
112 |
+
if (isset($_REQUEST['_wp_http_referer']))
|
113 |
+
{
|
114 |
+
//Bulk selection using checkboxes were used
|
115 |
+
foreach ($entries as $ip_add)
|
116 |
+
{
|
117 |
+
AIOWPSecurity_Blocking::add_ip_to_block_list($ip_add, 'spam');
|
118 |
+
}
|
119 |
+
}
|
120 |
+
}
|
121 |
+
else if ($entries != NULL)
|
122 |
+
{
|
123 |
+
$nonce=isset($_GET['aiowps_nonce'])?$_GET['aiowps_nonce']:'';
|
124 |
+
if (!isset($nonce) ||!wp_verify_nonce($nonce, 'block_spammer_ip'))
|
125 |
+
{
|
126 |
+
$aio_wp_security->debug_logger->log_debug("Nonce check failed for delete selected blocked IP operation!",4);
|
127 |
+
die(__('Nonce check failed for delete selected blocked IP operation!','all-in-one-wp-security-and-firewall'));
|
128 |
+
}
|
129 |
+
|
130 |
+
//individual entry where "block" link was clicked
|
131 |
+
AIOWPSecurity_Blocking::add_ip_to_block_list($entries, 'spam');
|
132 |
+
}
|
133 |
+
|
134 |
+
AIOWPSecurity_Admin_Menu::show_msg_updated_st(__('The selected IP addresses are now permanently blocked!','all-in-one-wp-security-and-firewall'));
|
135 |
+
}
|
136 |
+
|
137 |
+
/*
|
138 |
+
* (Old function which uses .htaccess blacklist - replaced by new method which uses php blocking code)
|
139 |
+
* This function will add the selected IP addresses to the .htaccess blacklist.
|
140 |
+
* The function accepts either an array of IDs or a single ID
|
141 |
+
*/
|
142 |
+
function block_spammer_ip_records_old($entries)
|
143 |
{
|
144 |
global $wpdb, $aio_wp_security;
|
145 |
$raw_banned_ip_list = $aio_wp_security->configs->get_value('aiowps_banned_ip_addresses');
|
250 |
ORDER BY $orderby $order
|
251 |
", $minimum_comments_per_ip);
|
252 |
$data = $wpdb->get_results($sql, ARRAY_A);
|
253 |
+
|
254 |
+
//Get all permamnetly blocked IP addresses
|
255 |
+
$block_list = AIOWPSecurity_Blocking::get_list_blocked_ips();
|
256 |
+
if(!empty($block_list)){
|
257 |
+
foreach($data as $key=>$value){
|
258 |
+
if(in_array($value['comment_author_IP'],$block_list)){
|
259 |
+
$data[$key]['status'] = 'blocked';
|
260 |
+
}
|
261 |
+
}
|
262 |
+
}
|
263 |
$current_page = $this->get_pagenum();
|
264 |
$total_items = count($data);
|
265 |
$data = array_slice($data, (($current_page - 1) * $per_page), $per_page);
|
admin/wp-security-list-locked-ip.php
CHANGED
@@ -112,13 +112,14 @@ class AIOWPSecurity_List_Locked_IP extends AIOWPSecurity_List_Table {
|
|
112 |
*/
|
113 |
function unlock_ip_range($entries)
|
114 |
{
|
115 |
-
global $wpdb;
|
116 |
$lockdown_table = AIOWPSEC_TBL_LOGIN_LOCKDOWN;
|
117 |
if (is_array($entries))
|
118 |
{
|
119 |
if (isset($_REQUEST['_wp_http_referer']))
|
120 |
{
|
121 |
//Unlock multiple records
|
|
|
122 |
$id_list = "(" .implode(",",$entries) .")"; //Create comma separate list for DB operation
|
123 |
$unlock_command = "UPDATE ".$lockdown_table." SET release_date = now() WHERE id IN ".$id_list;
|
124 |
$result = $wpdb->query($unlock_command);
|
@@ -159,6 +160,7 @@ class AIOWPSecurity_List_Locked_IP extends AIOWPSecurity_List_Table {
|
|
159 |
if (isset($_REQUEST['_wp_http_referer']))
|
160 |
{
|
161 |
//Delete multiple records
|
|
|
162 |
$id_list = "(" .implode(",",$entries) .")"; //Create comma separate list for DB operation
|
163 |
$delete_command = "DELETE FROM ".$lockdown_table." WHERE id IN ".$id_list;
|
164 |
$result = $wpdb->query($delete_command);
|
112 |
*/
|
113 |
function unlock_ip_range($entries)
|
114 |
{
|
115 |
+
global $wpdb,$aio_wp_security;
|
116 |
$lockdown_table = AIOWPSEC_TBL_LOGIN_LOCKDOWN;
|
117 |
if (is_array($entries))
|
118 |
{
|
119 |
if (isset($_REQUEST['_wp_http_referer']))
|
120 |
{
|
121 |
//Unlock multiple records
|
122 |
+
$entries = array_filter($entries, 'is_numeric'); //discard non-numeric ID values
|
123 |
$id_list = "(" .implode(",",$entries) .")"; //Create comma separate list for DB operation
|
124 |
$unlock_command = "UPDATE ".$lockdown_table." SET release_date = now() WHERE id IN ".$id_list;
|
125 |
$result = $wpdb->query($unlock_command);
|
160 |
if (isset($_REQUEST['_wp_http_referer']))
|
161 |
{
|
162 |
//Delete multiple records
|
163 |
+
$entries = array_filter($entries, 'is_numeric'); //discard non-numeric ID values
|
164 |
$id_list = "(" .implode(",",$entries) .")"; //Create comma separate list for DB operation
|
165 |
$delete_command = "DELETE FROM ".$lockdown_table." WHERE id IN ".$id_list;
|
166 |
$result = $wpdb->query($delete_command);
|
admin/wp-security-list-login-fails.php
CHANGED
@@ -104,6 +104,7 @@ class AIOWPSecurity_List_Login_Failed_Attempts extends AIOWPSecurity_List_Table
|
|
104 |
if (isset($_REQUEST['_wp_http_referer']))
|
105 |
{
|
106 |
//Delete multiple records
|
|
|
107 |
$id_list = "(" .implode(",",$entries) .")"; //Create comma separate list for DB operation
|
108 |
$delete_command = "DELETE FROM ".$failed_login_table." WHERE ID IN ".$id_list;
|
109 |
$result = $wpdb->query($delete_command);
|
104 |
if (isset($_REQUEST['_wp_http_referer']))
|
105 |
{
|
106 |
//Delete multiple records
|
107 |
+
$entries = array_filter($entries, 'is_numeric'); //discard non-numeric ID values
|
108 |
$id_list = "(" .implode(",",$entries) .")"; //Create comma separate list for DB operation
|
109 |
$delete_command = "DELETE FROM ".$failed_login_table." WHERE ID IN ".$id_list;
|
110 |
$result = $wpdb->query($delete_command);
|
admin/wp-security-list-permanent-blocked-ip.php
ADDED
@@ -0,0 +1,179 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class AIOWPSecurity_List_Blocked_IP extends AIOWPSecurity_List_Table
|
4 |
+
{
|
5 |
+
|
6 |
+
function __construct()
|
7 |
+
{
|
8 |
+
global $status, $page;
|
9 |
+
|
10 |
+
//Set parent defaults
|
11 |
+
parent::__construct(array(
|
12 |
+
'singular' => 'item', //singular name of the listed records
|
13 |
+
'plural' => 'items', //plural name of the listed records
|
14 |
+
'ajax' => false //does this table support ajax?
|
15 |
+
));
|
16 |
+
|
17 |
+
}
|
18 |
+
|
19 |
+
function column_default($item, $column_name)
|
20 |
+
{
|
21 |
+
return $item[$column_name];
|
22 |
+
}
|
23 |
+
|
24 |
+
function column_id($item)
|
25 |
+
{
|
26 |
+
$tab = isset($_REQUEST['tab']) ? strip_tags($_REQUEST['tab']) : '';
|
27 |
+
//Add nonce to delete URL
|
28 |
+
$unblock_ip_url = sprintf('admin.php?page=%s&tab=%s&action=%s&blocked_id=%s', AIOWPSEC_MAIN_MENU_SLUG, $tab, 'unblock_ip', $item['id']);
|
29 |
+
//Add nonce to unlock IP URL
|
30 |
+
$unblock_ip_nonce = wp_nonce_url($unblock_ip_url, "unblock_ip", "aiowps_nonce");
|
31 |
+
|
32 |
+
//Build row actions
|
33 |
+
$actions = array(
|
34 |
+
'unblock' => '<a href="' . $unblock_ip_nonce . '" onclick="return confirm(\'Are you sure you want to unblock this IP address?\')">Unblock</a>',
|
35 |
+
);
|
36 |
+
|
37 |
+
//Return the user_login contents
|
38 |
+
return sprintf('%1$s <span style="color:silver"></span>%2$s',
|
39 |
+
/*$1%s*/
|
40 |
+
$item['id'],
|
41 |
+
/*$2%s*/
|
42 |
+
$this->row_actions($actions)
|
43 |
+
);
|
44 |
+
}
|
45 |
+
|
46 |
+
|
47 |
+
function column_cb($item)
|
48 |
+
{
|
49 |
+
return sprintf(
|
50 |
+
'<input type="checkbox" name="%1$s[]" value="%2$s" />',
|
51 |
+
/*$1%s*/
|
52 |
+
$this->_args['singular'], //Let's simply repurpose the table's singular label
|
53 |
+
/*$2%s*/
|
54 |
+
$item['id'] //The value of the checkbox should be the record's id
|
55 |
+
);
|
56 |
+
}
|
57 |
+
|
58 |
+
function get_columns()
|
59 |
+
{
|
60 |
+
$columns = array(
|
61 |
+
'cb' => '<input type="checkbox" />', //Render a checkbox
|
62 |
+
'id' => 'ID',
|
63 |
+
'blocked_ip' => 'Blocked IP',
|
64 |
+
'block_reason' => 'Reason',
|
65 |
+
'blocked_date' => 'Date'
|
66 |
+
);
|
67 |
+
return $columns;
|
68 |
+
}
|
69 |
+
|
70 |
+
function get_sortable_columns()
|
71 |
+
{
|
72 |
+
$sortable_columns = array(
|
73 |
+
'id' => array('id', false),
|
74 |
+
'blocked_ip' => array('blocked_ip', false),
|
75 |
+
'block_reason' => array('block_reason', false),
|
76 |
+
'blocked_date' => array('blocked_date', false)
|
77 |
+
);
|
78 |
+
return $sortable_columns;
|
79 |
+
}
|
80 |
+
|
81 |
+
function get_bulk_actions()
|
82 |
+
{
|
83 |
+
$actions = array(
|
84 |
+
'unblock' => 'Unblock'
|
85 |
+
);
|
86 |
+
return $actions;
|
87 |
+
}
|
88 |
+
|
89 |
+
function process_bulk_action()
|
90 |
+
{
|
91 |
+
if ('unblock' === $this->current_action()) {//Process unlock bulk actions
|
92 |
+
if (!isset($_REQUEST['item'])) {
|
93 |
+
AIOWPSecurity_Admin_Menu::show_msg_error_st(__('Please select some records using the checkboxes', 'all-in-one-wp-security-and-firewall'));
|
94 |
+
} else {
|
95 |
+
$this->unblock_ip_address(($_REQUEST['item']));
|
96 |
+
}
|
97 |
+
}
|
98 |
+
}
|
99 |
+
|
100 |
+
|
101 |
+
/*
|
102 |
+
* This function will delete selected records from the "AIOWPSEC_TBL_PERM_BLOCK" table.
|
103 |
+
* The function accepts either an array of IDs or a single ID
|
104 |
+
*/
|
105 |
+
function unblock_ip_address($entries)
|
106 |
+
{
|
107 |
+
global $wpdb, $aio_wp_security;
|
108 |
+
if (is_array($entries)) {
|
109 |
+
if (isset($_REQUEST['_wp_http_referer'])) {
|
110 |
+
//Delete multiple records
|
111 |
+
$entries = array_filter($entries, 'is_numeric'); //discard non-numeric ID values
|
112 |
+
$id_list = "(" . implode(",", $entries) . ")"; //Create comma separate list for DB operation
|
113 |
+
$delete_command = "DELETE FROM " . AIOWPSEC_TBL_PERM_BLOCK . " WHERE id IN " . $id_list;
|
114 |
+
$result = $wpdb->query($delete_command);
|
115 |
+
if ($result != NULL) {
|
116 |
+
AIOWPSecurity_Admin_Menu::show_msg_record_deleted_st();
|
117 |
+
}
|
118 |
+
}
|
119 |
+
} elseif ($entries != NULL) {
|
120 |
+
$nonce = isset($_GET['aiowps_nonce']) ? $_GET['aiowps_nonce'] : '';
|
121 |
+
if (!isset($nonce) || !wp_verify_nonce($nonce, 'unblock_ip')) {
|
122 |
+
$aio_wp_security->debug_logger->log_debug("Nonce check failed for unblock IP operation!", 4);
|
123 |
+
die(__('Nonce check failed for unblock IP operation!', 'all-in-one-wp-security-and-firewall'));
|
124 |
+
}
|
125 |
+
//Delete single record
|
126 |
+
$delete_command = "DELETE FROM " . AIOWPSEC_TBL_PERM_BLOCK . " WHERE id = '" . absint($entries) . "'";
|
127 |
+
$result = $wpdb->query($delete_command);
|
128 |
+
if ($result != NULL) {
|
129 |
+
AIOWPSecurity_Admin_Menu::show_msg_record_deleted_st();
|
130 |
+
}
|
131 |
+
}
|
132 |
+
}
|
133 |
+
|
134 |
+
function prepare_items()
|
135 |
+
{
|
136 |
+
/**
|
137 |
+
* First, lets decide how many records per page to show
|
138 |
+
*/
|
139 |
+
$per_page = 20;
|
140 |
+
$columns = $this->get_columns();
|
141 |
+
$hidden = array();
|
142 |
+
$sortable = $this->get_sortable_columns();
|
143 |
+
|
144 |
+
$this->_column_headers = array($columns, $hidden, $sortable);
|
145 |
+
|
146 |
+
$this->process_bulk_action();
|
147 |
+
|
148 |
+
global $wpdb;
|
149 |
+
$block_table_name = AIOWPSEC_TBL_PERM_BLOCK;
|
150 |
+
|
151 |
+
/* -- Ordering parameters -- */
|
152 |
+
//Parameters that are going to be used to order the result
|
153 |
+
isset($_GET["orderby"]) ? $orderby = strip_tags($_GET["orderby"]) : $orderby = '';
|
154 |
+
isset($_GET["order"]) ? $order = strip_tags($_GET["order"]) : $order = '';
|
155 |
+
|
156 |
+
$orderby = !empty($orderby) ? esc_sql($orderby) : 'id';
|
157 |
+
$order = !empty($order) ? esc_sql($order) : 'DESC';
|
158 |
+
|
159 |
+
$orderby = AIOWPSecurity_Utility::sanitize_value_by_array($orderby, $sortable);
|
160 |
+
$order = AIOWPSecurity_Utility::sanitize_value_by_array($order, array('DESC' => '1', 'ASC' => '1'));
|
161 |
+
|
162 |
+
if (isset($_POST['s'])) {
|
163 |
+
$search_term = trim($_POST['s']);
|
164 |
+
$data = $wpdb->get_results($wpdb->prepare("SELECT * FROM " . $block_table_name . " WHERE `blocked_ip` LIKE '%%%s%%' OR `block_reason` LIKE '%%%s%%' OR `country_origin` LIKE '%%%s%%' OR `blocked_date` LIKE '%%%s%%'", $search_term, $search_term, $search_term, $search_term), ARRAY_A);
|
165 |
+
} else {
|
166 |
+
$data = $wpdb->get_results($wpdb->prepare("SELECT * FROM " . $block_table_name . " WHERE id > %d ORDER BY $orderby $order", -1), ARRAY_A);
|
167 |
+
}
|
168 |
+
|
169 |
+
$current_page = $this->get_pagenum();
|
170 |
+
$total_items = count($data);
|
171 |
+
$data = array_slice($data, (($current_page - 1) * $per_page), $per_page);
|
172 |
+
$this->items = $data;
|
173 |
+
$this->set_pagination_args(array(
|
174 |
+
'total_items' => $total_items, //WE have to calculate the total number of items
|
175 |
+
'per_page' => $per_page, //WE have to determine how many items to show on a page
|
176 |
+
'total_pages' => ceil($total_items / $per_page) //WE have to calculate the total number of pages
|
177 |
+
));
|
178 |
+
}
|
179 |
+
}
|
admin/wp-security-misc-options-menu.php
CHANGED
@@ -182,7 +182,7 @@ class AIOWPSecurity_Misc_Options_Menu extends AIOWPSecurity_Admin_Menu
|
|
182 |
if (!wp_verify_nonce($nonce, 'aiowpsec-users-enumeration'))
|
183 |
{
|
184 |
$aio_wp_security->debug_logger->log_debug("Nonce check failed on prevent users enumeration feature settings save!",4);
|
185 |
-
die("Nonce check failed on prevent users enumeration
|
186 |
}
|
187 |
|
188 |
//Save settings
|
182 |
if (!wp_verify_nonce($nonce, 'aiowpsec-users-enumeration'))
|
183 |
{
|
184 |
$aio_wp_security->debug_logger->log_debug("Nonce check failed on prevent users enumeration feature settings save!",4);
|
185 |
+
die("Nonce check failed on prevent users enumeration feature settings save!");
|
186 |
}
|
187 |
|
188 |
//Save settings
|
admin/wp-security-settings-menu.php
CHANGED
@@ -357,16 +357,16 @@ class AIOWPSecurity_Settings_Menu extends AIOWPSecurity_Admin_Menu
|
|
357 |
<input type="submit" name="aiowps_restore_htaccess_button" value="<?php _e('Restore .htaccess File', 'all-in-one-wp-security-and-firewall')?>" class="button-primary" />
|
358 |
</form>
|
359 |
</div></div>
|
360 |
-
<div class="postbox"
|
361 |
-
<h3 class="hndle"><label for="title"
|
362 |
-
<div class="inside"
|
363 |
-
|
364 |
-
$ht_file = ABSPATH . '.htaccess';
|
365 |
-
$ht_contents = AIOWPSecurity_Utility_File::get_file_contents($ht_file);
|
366 |
-
//echo $ht_contents;
|
367 |
-
?>
|
368 |
-
<textarea class="aio_text_area_file_output aio_half_width aio_spacer_10_tb" rows="15" readonly
|
369 |
-
</div></div
|
370 |
|
371 |
<?php
|
372 |
} // End if statement
|
@@ -469,15 +469,15 @@ class AIOWPSecurity_Settings_Menu extends AIOWPSecurity_Admin_Menu
|
|
469 |
<input type="submit" name="aiowps_restore_wp_config_button" value="<?php _e('Restore wp-config File', 'all-in-one-wp-security-and-firewall')?>" class="button-primary" />
|
470 |
</form>
|
471 |
</div></div>
|
472 |
-
<div class="postbox"
|
473 |
-
<h3 class="hndle"><label for="title"
|
474 |
-
<div class="inside"
|
475 |
-
|
476 |
-
$wp_config_file = AIOWPSecurity_Utility_File::get_wp_config_file_path();
|
477 |
-
$wp_config_contents = AIOWPSecurity_Utility_File::get_file_contents($wp_config_file);
|
478 |
-
?>
|
479 |
-
<textarea class="aio_text_area_file_output aio_width_80 aio_spacer_10_tb" rows="20" readonly
|
480 |
-
</div></div
|
481 |
|
482 |
<?php
|
483 |
} //End if statement
|
357 |
<input type="submit" name="aiowps_restore_htaccess_button" value="<?php _e('Restore .htaccess File', 'all-in-one-wp-security-and-firewall')?>" class="button-primary" />
|
358 |
</form>
|
359 |
</div></div>
|
360 |
+
<!-- <div class="postbox">-->
|
361 |
+
<!-- <h3 class="hndle"><label for="title">--><?php //_e('View Contents of the currently active .htaccess file', 'all-in-one-wp-security-and-firewall'); ?><!--</label></h3>-->
|
362 |
+
<!-- <div class="inside">-->
|
363 |
+
<!-- --><?php
|
364 |
+
// $ht_file = ABSPATH . '.htaccess';
|
365 |
+
// $ht_contents = AIOWPSecurity_Utility_File::get_file_contents($ht_file);
|
366 |
+
// //echo $ht_contents;
|
367 |
+
// ?>
|
368 |
+
<!-- <textarea class="aio_text_area_file_output aio_half_width aio_spacer_10_tb" rows="15" readonly>--><?php //echo $ht_contents; ?><!--</textarea>-->
|
369 |
+
<!-- </div></div>-->
|
370 |
|
371 |
<?php
|
372 |
} // End if statement
|
469 |
<input type="submit" name="aiowps_restore_wp_config_button" value="<?php _e('Restore wp-config File', 'all-in-one-wp-security-and-firewall')?>" class="button-primary" />
|
470 |
</form>
|
471 |
</div></div>
|
472 |
+
<!-- <div class="postbox">-->
|
473 |
+
<!-- <h3 class="hndle"><label for="title">--><?php //_e('View Contents of the currently active wp-config.php file', 'all-in-one-wp-security-and-firewall'); ?><!--</label></h3>-->
|
474 |
+
<!-- <div class="inside">-->
|
475 |
+
<!-- --><?php
|
476 |
+
// $wp_config_file = AIOWPSecurity_Utility_File::get_wp_config_file_path();
|
477 |
+
// $wp_config_contents = AIOWPSecurity_Utility_File::get_file_contents($wp_config_file);
|
478 |
+
// ?>
|
479 |
+
<!-- <textarea class="aio_text_area_file_output aio_width_80 aio_spacer_10_tb" rows="20" readonly>--><?php //echo $wp_config_contents; ?><!--</textarea>-->
|
480 |
+
<!-- </div></div>-->
|
481 |
|
482 |
<?php
|
483 |
} //End if statement
|
admin/wp-security-spam-menu.php
CHANGED
@@ -189,9 +189,49 @@ class AIOWPSecurity_Spam_Menu extends AIOWPSecurity_Admin_Menu
|
|
189 |
function render_tab2()
|
190 |
{
|
191 |
global $aio_wp_security;
|
|
|
192 |
include_once 'wp-security-list-comment-spammer-ip.php'; //For rendering the AIOWPSecurity_List_Table in tab2
|
193 |
$spammer_ip_list = new AIOWPSecurity_List_Comment_Spammer_IP();
|
194 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
195 |
if (isset($_POST['aiowps_ip_spam_comment_search']))
|
196 |
{
|
197 |
$error = '';
|
@@ -231,19 +271,109 @@ class AIOWPSecurity_Spam_Menu extends AIOWPSecurity_Admin_Menu
|
|
231 |
}
|
232 |
|
233 |
?>
|
234 |
-
<div class="
|
235 |
-
|
236 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
237 |
<br />'.__('This information can be handy for identifying the most persistent IP addresses or ranges used by spammers.', 'all-in-one-wp-security-and-firewall').'
|
238 |
<br />'.__('By inspecting the IP address data coming from spammers you will be in a better position to determine which addresses or address ranges you should block by adding them to your blacklist.', 'all-in-one-wp-security-and-firewall').'
|
239 |
-
<br />'.__('To add one or more of the IP addresses displayed in the table below to your blacklist, simply click the "Block" link for the individual row or select more than one address
|
240 |
using the checkboxes and then choose the "block" option from the Bulk Actions dropdown list and click the "Apply" button.', 'all-in-one-wp-security-and-firewall').'
|
241 |
</p>';
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
<h3 class="hndle"><label for="title"><?php _e('List SPAMMER IP Addresses', 'all-in-one-wp-security-and-firewall'); ?></label></h3>
|
246 |
-
<div class="inside">
|
247 |
<form action="" method="POST">
|
248 |
<?php wp_nonce_field('aiowpsec-spammer-ip-list-nonce'); ?>
|
249 |
<table class="form-table">
|
189 |
function render_tab2()
|
190 |
{
|
191 |
global $aio_wp_security;
|
192 |
+
global $aiowps_feature_mgr;
|
193 |
include_once 'wp-security-list-comment-spammer-ip.php'; //For rendering the AIOWPSecurity_List_Table in tab2
|
194 |
$spammer_ip_list = new AIOWPSecurity_List_Comment_Spammer_IP();
|
195 |
+
|
196 |
+
//Do form submission tasks for auto block spam IP
|
197 |
+
if(isset($_POST['aiowps_auto_spam_block']))
|
198 |
+
{
|
199 |
+
$error = '';
|
200 |
+
$nonce=$_REQUEST['_wpnonce'];
|
201 |
+
if (!wp_verify_nonce($nonce, 'aiowpsec-auto-block-spam-ip-nonce'))
|
202 |
+
{
|
203 |
+
$aio_wp_security->debug_logger->log_debug("Nonce check failed on auto block SPAM IPs options save!",4);
|
204 |
+
die("Nonce check failed on auto block SPAM IPs options save!");
|
205 |
+
}
|
206 |
+
|
207 |
+
$spam_ip_min_comments = sanitize_text_field($_POST['aiowps_spam_ip_min_comments_block']);
|
208 |
+
if(!is_numeric($spam_ip_min_comments))
|
209 |
+
{
|
210 |
+
$error .= '<br />'.__('You entered a non numeric value for the minimum number of spam comments field. It has been set to the default value.','all-in-one-wp-security-and-firewall');
|
211 |
+
$spam_ip_min_comments = '3';//Set it to the default value for this field
|
212 |
+
}elseif(empty($spam_ip_min_comments)){
|
213 |
+
$error .= '<br />'.__('You must enter an integer greater than zero for minimum number of spam comments field. It has been set to the default value.','all-in-one-wp-security-and-firewall');
|
214 |
+
$spam_ip_min_comments = '3';//Set it to the default value for this field
|
215 |
+
|
216 |
+
}
|
217 |
+
|
218 |
+
if($error)
|
219 |
+
{
|
220 |
+
$this->show_msg_error(__('Attention!','all-in-one-wp-security-and-firewall').$error);
|
221 |
+
}
|
222 |
+
|
223 |
+
//Save all the form values to the options
|
224 |
+
$aio_wp_security->configs->set_value('aiowps_enable_autoblock_spam_ip',isset($_POST["aiowps_enable_autoblock_spam_ip"])?'1':'');
|
225 |
+
$aio_wp_security->configs->set_value('aiowps_spam_ip_min_comments_block',absint($spam_ip_min_comments));
|
226 |
+
$aio_wp_security->configs->save_config();
|
227 |
+
|
228 |
+
//Recalculate points after the feature status/options have been altered
|
229 |
+
$aiowps_feature_mgr->check_feature_status_and_recalculate_points();
|
230 |
+
|
231 |
+
$this->show_msg_settings_updated();
|
232 |
+
}
|
233 |
+
|
234 |
+
|
235 |
if (isset($_POST['aiowps_ip_spam_comment_search']))
|
236 |
{
|
237 |
$error = '';
|
271 |
}
|
272 |
|
273 |
?>
|
274 |
+
<div class="postbox">
|
275 |
+
<h3 class="hndle"><label for="title"><?php _e('Auto Block SPAMMER IPs', 'all-in-one-wp-security-and-firewall'); ?></label></h3>
|
276 |
+
<div class="inside">
|
277 |
+
<?php
|
278 |
+
if($aio_wp_security->configs->get_value('aiowps_enable_autoblock_spam_ip')=='1' && !class_exists('Akismet')){
|
279 |
+
$akismet_link = '<a href="https://wordpress.org/plugins/akismet/" target="_blank">Akismet</a>';
|
280 |
+
$info_msg = sprintf( __('This feature has detected that %s is not active. It is highly recommended that you activate the Akismet plugin to make the most of this feature.', 'all-in-one-wp-security-and-firewall'), $akismet_link);
|
281 |
+
|
282 |
+
echo '<div class="aio_orange_box" id="message"><p><strong>'.$info_msg.'</strong></p></div>';
|
283 |
+
}
|
284 |
+
|
285 |
+
?>
|
286 |
+
<form action="" method="POST">
|
287 |
+
<div class="aio_blue_box">
|
288 |
+
<?php
|
289 |
+
echo '<p>'.__('This feature allows you to automatically and permanently block IP addresses which have exceeded a certain number of comments labelled as SPAM.', 'all-in-one-wp-security-and-firewall').'</p>'.
|
290 |
+
'<p>'.__('Comments are usually labelled as SPAM either by the Akismet plugin or manually by the WP administrator when they mark a comment as "spam" from the WordPress Comments menu.', 'all-in-one-wp-security-and-firewall').'</p>'.
|
291 |
+
'<p><strong>'.__('NOTE: This feature does NOT use the .htaccess file to permanently block the IP addresses so it should be compatible with all web servers running WordPress.', 'all-in-one-wp-security-and-firewall').'</strong></p>';
|
292 |
+
?>
|
293 |
+
</div>
|
294 |
+
<?php
|
295 |
+
$min_block_comments = $aio_wp_security->configs->get_value('aiowps_spam_ip_min_comments_block');
|
296 |
+
if(!empty($min_block_comments)){
|
297 |
+
global $wpdb;
|
298 |
+
$sql = $wpdb->prepare('SELECT * FROM '.AIOWPSEC_TBL_PERM_BLOCK.' WHERE block_reason=%s', 'spam');
|
299 |
+
$total_res = $wpdb->get_results($sql);
|
300 |
+
?>
|
301 |
+
<div class="aio_yellow_box">
|
302 |
+
<?php
|
303 |
+
if(empty($total_res)){
|
304 |
+
echo '<p><strong>'.__('You currently have no IP addresses permanently blocked due to SPAM.', 'all-in-one-wp-security-and-firewall').'</strong></p>';
|
305 |
+
}else{
|
306 |
+
$total_count = count($total_res);
|
307 |
+
$todays_blocked_count = 0;
|
308 |
+
foreach($total_res as $blocked_item){
|
309 |
+
$now = current_time('mysql');
|
310 |
+
$now_date_time = new DateTime($now);
|
311 |
+
$blocked_date = new DateTime($blocked_item->blocked_date);
|
312 |
+
if($blocked_date->format('Y-m-d') == $now_date_time->format('Y-m-d')) {
|
313 |
+
//there was an IP added to permanent block list today
|
314 |
+
++$todays_blocked_count;
|
315 |
+
}
|
316 |
+
}
|
317 |
+
echo '<p><strong>'.__('Spammer IPs Added To Permanent Block List Today: ', 'all-in-one-wp-security-and-firewall').$todays_blocked_count.'</strong></p>'.
|
318 |
+
'<hr><p><strong>'.__('All Time Total: ', 'all-in-one-wp-security-and-firewall').$total_count.'</strong></p>'.
|
319 |
+
'<p><a class="button" href="admin.php?page='.AIOWPSEC_MAIN_MENU_SLUG.'&tab=tab4" target="_blank">'.__('View Blocked IPs','all-in-one-wp-security-and-firewall').'</a></p>';
|
320 |
+
}
|
321 |
+
?>
|
322 |
+
</div>
|
323 |
+
|
324 |
+
<?php
|
325 |
+
}
|
326 |
+
//Display security info badge
|
327 |
+
//$aiowps_feature_mgr->output_feature_details_badge("auto-block-spam-ip");
|
328 |
+
?>
|
329 |
+
<?php wp_nonce_field('aiowpsec-auto-block-spam-ip-nonce'); ?>
|
330 |
+
<table class="form-table">
|
331 |
+
<tr valign="top">
|
332 |
+
<th scope="row"><?php _e('Enable Auto Block of SPAM Comment IPs', 'all-in-one-wp-security-and-firewall')?>:</th>
|
333 |
+
<td>
|
334 |
+
<input name="aiowps_enable_autoblock_spam_ip" type="checkbox"<?php if($aio_wp_security->configs->get_value('aiowps_enable_autoblock_spam_ip')=='1') echo ' checked="checked"'; ?> value="1"/>
|
335 |
+
<span class="description"><?php _e('Check this box if you want this plugin to automatically block IP addresses which submit SPAM comments.', 'all-in-one-wp-security-and-firewall'); ?></span>
|
336 |
+
</td>
|
337 |
+
</tr>
|
338 |
+
<tr valign="top">
|
339 |
+
<th scope="row"><?php _e('Minimum number of SPAM comments', 'all-in-one-wp-security-and-firewall')?>:</th>
|
340 |
+
<td><input type="text" size="5" name="aiowps_spam_ip_min_comments_block" value="<?php echo $aio_wp_security->configs->get_value('aiowps_spam_ip_min_comments_block'); ?>" />
|
341 |
+
<span class="description"><?php _e('Specify the minimum number of SPAM comments for an IP address before it is permanently blocked.', 'all-in-one-wp-security-and-firewall');?></span>
|
342 |
+
<span class="aiowps_more_info_anchor"><span class="aiowps_more_info_toggle_char">+</span><span class="aiowps_more_info_toggle_text"><?php _e('More Info', 'all-in-one-wp-security-and-firewall'); ?></span></span>
|
343 |
+
<div class="aiowps_more_info_body">
|
344 |
+
<?php
|
345 |
+
echo '<p class="description">'.__('Example 1: Setting this value to "1" will block ALL IP addresses which were used to submit at least one SPAM comment.', 'all-in-one-wp-security-and-firewall').'</p>';
|
346 |
+
echo '<p class="description">'.__('Example 2: Setting this value to "5" will block only those IP addresses which were used to submit 5 SPAM comments or more on your site.', 'all-in-one-wp-security-and-firewall').'</p>';
|
347 |
+
?>
|
348 |
+
</div>
|
349 |
+
</td>
|
350 |
+
</tr>
|
351 |
+
<!-- <tr valign="top">-->
|
352 |
+
<!-- <th scope="row">--><?php //_e('Run Now', 'all-in-one-wp-security-and-firewall')?><!--:</th>-->
|
353 |
+
<!-- <td><input type="submit" name="aiowps_auto_spam_block_run" value="--><?php //_e('Run SPAM IP Blocking Now', 'all-in-one-wp-security-and-firewall')?><!--" class="button-secondary" />-->
|
354 |
+
<!-- <span class="description">--><?php //_e('This feature normally runs automatically whenever a comment is submitted but you can run it manually by clicking this button. (useful for older comments)', 'all-in-one-wp-security-and-firewall');?><!--</span>-->
|
355 |
+
<!-- </td>-->
|
356 |
+
<!-- </tr>-->
|
357 |
+
|
358 |
+
</table>
|
359 |
+
<input type="submit" name="aiowps_auto_spam_block" value="<?php _e('Save Settings', 'all-in-one-wp-security-and-firewall')?>" class="button-primary" />
|
360 |
+
</form>
|
361 |
+
</div></div>
|
362 |
+
|
363 |
+
<div class="postbox">
|
364 |
+
<h3 class="hndle"><label for="title"><?php _e('List SPAMMER IP Addresses', 'all-in-one-wp-security-and-firewall'); ?></label></h3>
|
365 |
+
<div class="inside">
|
366 |
+
<div class="aio_blue_box">
|
367 |
+
<?php
|
368 |
+
echo '<p>'.__('This section displays a list of the IP addresses of the people or bots who have left SPAM comments on your site.', 'all-in-one-wp-security-and-firewall').'
|
369 |
<br />'.__('This information can be handy for identifying the most persistent IP addresses or ranges used by spammers.', 'all-in-one-wp-security-and-firewall').'
|
370 |
<br />'.__('By inspecting the IP address data coming from spammers you will be in a better position to determine which addresses or address ranges you should block by adding them to your blacklist.', 'all-in-one-wp-security-and-firewall').'
|
371 |
+
<br />'.__('To add one or more of the IP addresses displayed in the table below to your blacklist, simply click the "Block" link for the individual row or select more than one address
|
372 |
using the checkboxes and then choose the "block" option from the Bulk Actions dropdown list and click the "Apply" button.', 'all-in-one-wp-security-and-firewall').'
|
373 |
</p>';
|
374 |
+
?>
|
375 |
+
</div>
|
376 |
+
|
|
|
|
|
377 |
<form action="" method="POST">
|
378 |
<?php wp_nonce_field('aiowpsec-spammer-ip-list-nonce'); ?>
|
379 |
<table class="form-table">
|
admin/wp-security-user-login-menu.php
CHANGED
@@ -173,7 +173,6 @@ class AIOWPSecurity_User_Login_Menu extends AIOWPSecurity_Admin_Menu
|
|
173 |
<div class="inside">
|
174 |
<?php
|
175 |
//Display security info badge
|
176 |
-
global $aiowps_feature_mgr;
|
177 |
$aiowps_feature_mgr->output_feature_details_badge("user-login-login-lockdown");
|
178 |
?>
|
179 |
|
@@ -522,6 +521,7 @@ class AIOWPSecurity_User_Login_Menu extends AIOWPSecurity_Admin_Menu
|
|
522 |
if (is_array($entries))
|
523 |
{
|
524 |
//Unlock multiple records
|
|
|
525 |
$id_list = "(" .implode(",",$entries) .")"; //Create comma separate list for DB operation
|
526 |
$unlock_command = "UPDATE ".$lockdown_table." SET release_date = now() WHERE ID IN ".$id_list;
|
527 |
$result = $wpdb->query($unlock_command);
|
@@ -553,6 +553,7 @@ class AIOWPSecurity_User_Login_Menu extends AIOWPSecurity_Admin_Menu
|
|
553 |
if (is_array($entries))
|
554 |
{
|
555 |
//Delete multiple records
|
|
|
556 |
$id_list = "(" .implode(",",$entries) .")"; //Create comma separate list for DB operation
|
557 |
$delete_command = "DELETE FROM ".$lockdown_table." WHERE ID IN ".$id_list;
|
558 |
$result = $wpdb->query($delete_command);
|
173 |
<div class="inside">
|
174 |
<?php
|
175 |
//Display security info badge
|
|
|
176 |
$aiowps_feature_mgr->output_feature_details_badge("user-login-login-lockdown");
|
177 |
?>
|
178 |
|
521 |
if (is_array($entries))
|
522 |
{
|
523 |
//Unlock multiple records
|
524 |
+
$entries = array_filter($entries, 'is_numeric'); //discard non-numeric ID values
|
525 |
$id_list = "(" .implode(",",$entries) .")"; //Create comma separate list for DB operation
|
526 |
$unlock_command = "UPDATE ".$lockdown_table." SET release_date = now() WHERE ID IN ".$id_list;
|
527 |
$result = $wpdb->query($unlock_command);
|
553 |
if (is_array($entries))
|
554 |
{
|
555 |
//Delete multiple records
|
556 |
+
$entries = array_filter($entries, 'is_numeric'); //discard non-numeric ID values
|
557 |
$id_list = "(" .implode(",",$entries) .")"; //Create comma separate list for DB operation
|
558 |
$delete_command = "DELETE FROM ".$lockdown_table." WHERE ID IN ".$id_list;
|
559 |
$result = $wpdb->query($delete_command);
|
classes/grade-system/wp-security-feature-item-manager.php
CHANGED
@@ -94,7 +94,7 @@ class AIOWPSecurity_Feature_Item_Manager
|
|
94 |
$this->feature_items[] = new AIOWPSecurity_Feature_Item("firewall-forbid-proxy-comments", __("Forbid Proxy Comments", "all-in-one-wp-security-and-firewall"), $this->feature_point_2, $this->sec_level_advanced);
|
95 |
$this->feature_items[] = new AIOWPSecurity_Feature_Item("firewall-deny-bad-queries", __("Deny Bad Queries", "all-in-one-wp-security-and-firewall"), $this->feature_point_3, $this->sec_level_advanced);
|
96 |
$this->feature_items[] = new AIOWPSecurity_Feature_Item("firewall-advanced-character-string-filter", __("Advanced Character String Filter", "all-in-one-wp-security-and-firewall"), $this->feature_point_3, $this->sec_level_advanced);
|
97 |
-
$this->feature_items[] = new AIOWPSecurity_Feature_Item("firewall-enable-5g-blacklist", __("5G Blacklist", "all-in-one-wp-security-and-firewall"), $this->feature_point_4, $this->sec_level_advanced);
|
98 |
$this->feature_items[] = new AIOWPSecurity_Feature_Item("firewall-block-fake-googlebots", __("Block Fake Googlebots", "all-in-one-wp-security-and-firewall"), $this->feature_point_1, $this->sec_level_advanced);
|
99 |
//SPAM Prevention
|
100 |
$this->feature_items[] = new AIOWPSecurity_Feature_Item("block-spambots", __("Block Spambots", "all-in-one-wp-security-and-firewall"), $this->feature_point_2, $this->sec_level_basic);
|
@@ -286,9 +286,9 @@ class AIOWPSecurity_Feature_Item_Manager
|
|
286 |
{
|
287 |
$this->check_advanced_char_string_filter_firewall_feature($item);
|
288 |
}
|
289 |
-
if($item->feature_id == "firewall-enable-5g-blacklist")
|
290 |
{
|
291 |
-
$this->
|
292 |
}
|
293 |
if($item->feature_id == "firewall-block-fake-googlebots")
|
294 |
{
|
@@ -701,12 +701,15 @@ class AIOWPSecurity_Feature_Item_Manager
|
|
701 |
}
|
702 |
}
|
703 |
|
704 |
-
function
|
705 |
{
|
706 |
global $aio_wp_security;
|
707 |
if ($aio_wp_security->configs->get_value('aiowps_enable_5g_firewall') == '1') {
|
708 |
$item->set_feature_status($this->feature_active);
|
709 |
}
|
|
|
|
|
|
|
710 |
else
|
711 |
{
|
712 |
$item->set_feature_status($this->feature_inactive);
|
94 |
$this->feature_items[] = new AIOWPSecurity_Feature_Item("firewall-forbid-proxy-comments", __("Forbid Proxy Comments", "all-in-one-wp-security-and-firewall"), $this->feature_point_2, $this->sec_level_advanced);
|
95 |
$this->feature_items[] = new AIOWPSecurity_Feature_Item("firewall-deny-bad-queries", __("Deny Bad Queries", "all-in-one-wp-security-and-firewall"), $this->feature_point_3, $this->sec_level_advanced);
|
96 |
$this->feature_items[] = new AIOWPSecurity_Feature_Item("firewall-advanced-character-string-filter", __("Advanced Character String Filter", "all-in-one-wp-security-and-firewall"), $this->feature_point_3, $this->sec_level_advanced);
|
97 |
+
$this->feature_items[] = new AIOWPSecurity_Feature_Item("firewall-enable-5g-6g-blacklist", __("5G/6G Blacklist", "all-in-one-wp-security-and-firewall"), $this->feature_point_4, $this->sec_level_advanced);
|
98 |
$this->feature_items[] = new AIOWPSecurity_Feature_Item("firewall-block-fake-googlebots", __("Block Fake Googlebots", "all-in-one-wp-security-and-firewall"), $this->feature_point_1, $this->sec_level_advanced);
|
99 |
//SPAM Prevention
|
100 |
$this->feature_items[] = new AIOWPSecurity_Feature_Item("block-spambots", __("Block Spambots", "all-in-one-wp-security-and-firewall"), $this->feature_point_2, $this->sec_level_basic);
|
286 |
{
|
287 |
$this->check_advanced_char_string_filter_firewall_feature($item);
|
288 |
}
|
289 |
+
if($item->feature_id == "firewall-enable-5g-6g-blacklist")
|
290 |
{
|
291 |
+
$this->check_enable_5G_6G_blacklist_firewall_feature($item);
|
292 |
}
|
293 |
if($item->feature_id == "firewall-block-fake-googlebots")
|
294 |
{
|
701 |
}
|
702 |
}
|
703 |
|
704 |
+
function check_enable_5G_6G_blacklist_firewall_feature($item)
|
705 |
{
|
706 |
global $aio_wp_security;
|
707 |
if ($aio_wp_security->configs->get_value('aiowps_enable_5g_firewall') == '1') {
|
708 |
$item->set_feature_status($this->feature_active);
|
709 |
}
|
710 |
+
else if ($aio_wp_security->configs->get_value('aiowps_enable_6g_firewall') == '1') {
|
711 |
+
$item->set_feature_status($this->feature_active);
|
712 |
+
}
|
713 |
else
|
714 |
{
|
715 |
$item->set_feature_status($this->feature_inactive);
|
classes/wp-security-backup.php
CHANGED
@@ -300,7 +300,7 @@ class AIOWPSecurity_Backup
|
|
300 |
//Check the global meta table
|
301 |
$global_meta_table_name = AIOWPSEC_TBL_GLOBAL_META_DATA;
|
302 |
$max_rows_global_meta_table = '5000'; //Keep a max of 5000 rows in this table
|
303 |
-
$max_rows_global_meta_table = apply_filters( 'aiowps_max_rows_global_meta_table', $
|
304 |
AIOWPSecurity_Utility::cleanup_table($global_meta_table_name, $max_rows_global_meta_table);
|
305 |
|
306 |
|
300 |
//Check the global meta table
|
301 |
$global_meta_table_name = AIOWPSEC_TBL_GLOBAL_META_DATA;
|
302 |
$max_rows_global_meta_table = '5000'; //Keep a max of 5000 rows in this table
|
303 |
+
$max_rows_global_meta_table = apply_filters( 'aiowps_max_rows_global_meta_table', $max_rows_global_meta_table );
|
304 |
AIOWPSecurity_Utility::cleanup_table($global_meta_table_name, $max_rows_global_meta_table);
|
305 |
|
306 |
|
classes/wp-security-blocking.php
ADDED
@@ -0,0 +1,116 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class AIOWPSecurity_Blocking
|
4 |
+
{
|
5 |
+
function __construct(){
|
6 |
+
//NOP
|
7 |
+
}
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Will return an array of blocked IPs in the AIOWPSEC_TBL_PERM_BLOCK table
|
11 |
+
* @param string $block_reason - spam, etc
|
12 |
+
* @param string $output_type
|
13 |
+
* @return single dimensional array
|
14 |
+
*/
|
15 |
+
static function get_list_blocked_ips($block_reason='', $output_type='ARRAY_A')
|
16 |
+
{
|
17 |
+
global $wpdb;
|
18 |
+
$blocked_ip_array = array();
|
19 |
+
if(empty($block_reason)){
|
20 |
+
$sql = 'SELECT blocked_ip FROM '.AIOWPSEC_TBL_PERM_BLOCK;
|
21 |
+
}else{
|
22 |
+
$sql = $wpdb->prepare('SELECT blocked_ip FROM '.AIOWPSEC_TBL_PERM_BLOCK.' WHERE block_reason=%s',$block_reason);
|
23 |
+
}
|
24 |
+
|
25 |
+
$result = $wpdb->get_results($sql,$output_type);
|
26 |
+
//The result returned by wp function is multi-dim array. Let's return a simple single dimensional array of ip addresses
|
27 |
+
if(!empty($result)){
|
28 |
+
foreach($result as $item){
|
29 |
+
$blocked_ip_array[] = $item['blocked_ip'];
|
30 |
+
}
|
31 |
+
}
|
32 |
+
return $blocked_ip_array;
|
33 |
+
}
|
34 |
+
|
35 |
+
/**
|
36 |
+
* Checks if an IP address is blocked permanently
|
37 |
+
* @param $ip_address
|
38 |
+
* @return bool
|
39 |
+
*/
|
40 |
+
static function is_ip_blocked($ip_address)
|
41 |
+
{
|
42 |
+
global $wpdb;
|
43 |
+
$blocked_record = $wpdb->get_row($wpdb->prepare('SELECT * FROM '.AIOWPSEC_TBL_PERM_BLOCK.' WHERE blocked_ip=%s', $ip_address));
|
44 |
+
if(empty($blocked_record)){
|
45 |
+
return false;
|
46 |
+
}else{
|
47 |
+
return true;
|
48 |
+
}
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Will add an IP address to the permament block list
|
53 |
+
* @param $ip_address
|
54 |
+
* @param string $reason
|
55 |
+
* @return bool - TRUE or FALSE on error
|
56 |
+
*/
|
57 |
+
static function add_ip_to_block_list($ip_address, $reason='')
|
58 |
+
{
|
59 |
+
global $wpdb, $aio_wp_security;
|
60 |
+
//Check if this IP address is already in the block list
|
61 |
+
$blocked = AIOWPSecurity_Blocking::is_ip_blocked($ip_address);
|
62 |
+
if(empty($blocked)){
|
63 |
+
//Add this IP to the blocked table
|
64 |
+
$data = array(
|
65 |
+
'blocked_ip'=>$ip_address,
|
66 |
+
'block_reason'=>$reason,
|
67 |
+
'blocked_date'=>current_time('mysql')
|
68 |
+
);
|
69 |
+
$data = apply_filters('pre_add_to_permanent_block', $data);
|
70 |
+
$res = $wpdb->insert(AIOWPSEC_TBL_PERM_BLOCK, $data);
|
71 |
+
if($res === false){
|
72 |
+
$aio_wp_security->debug_logger->log_debug("AIOWPSecurity_Blocking::add_ip_to_block_list - Error inserting record into AIOWPSEC_TBL_PERM_BLOCK table for IP ".$ip_address);
|
73 |
+
return false;
|
74 |
+
}
|
75 |
+
return true;
|
76 |
+
}
|
77 |
+
return true;
|
78 |
+
}
|
79 |
+
|
80 |
+
static function unblock_ip($ip_address)
|
81 |
+
{
|
82 |
+
global $wpdb;
|
83 |
+
$where = array('blocked_ip'=>$ip_address);
|
84 |
+
$result = $wpdb->delete(AIOWPSEC_TBL_PERM_BLOCK,$where);
|
85 |
+
return $result;
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
* Will check the current visitor IP against the blocked table
|
90 |
+
* If IP present will block the visitor from viewing the site
|
91 |
+
*/
|
92 |
+
static function check_visitor_ip_and_perform_blocking()
|
93 |
+
{
|
94 |
+
global $aio_wp_security, $wpdb;
|
95 |
+
$visitor_ip = AIOWPSecurity_Utility_IP::get_user_ip_address();
|
96 |
+
$ip_type = WP_Http::is_ip_address($visitor_ip);
|
97 |
+
if(empty($ip_type)){
|
98 |
+
$aio_wp_security->debug_logger->log_debug("do_general_ip_blocking_tasks: ".$visitor_ip." is not a valid IP!",4);
|
99 |
+
return;
|
100 |
+
}
|
101 |
+
|
102 |
+
//Check if this IP address is in the block list
|
103 |
+
$blocked = AIOWPSecurity_Blocking::is_ip_blocked($visitor_ip);
|
104 |
+
//TODO - future feature: add blocking whitelist and check
|
105 |
+
|
106 |
+
if(empty($blocked)){
|
107 |
+
return; //Visitor IP is not blocked - allow page to load
|
108 |
+
}else{
|
109 |
+
//block this visitor!!
|
110 |
+
AIOWPSecurity_Utility::redirect_to_url('http://127.0.0.1');
|
111 |
+
}
|
112 |
+
return;
|
113 |
+
|
114 |
+
}
|
115 |
+
|
116 |
+
}
|
classes/wp-security-configure-settings.php
CHANGED
@@ -80,6 +80,7 @@ class AIOWPSecurity_Configure_Settings
|
|
80 |
$aio_wp_security->configs->set_value('aiowps_deny_bad_query_strings','');//Checkbox
|
81 |
$aio_wp_security->configs->set_value('aiowps_advanced_char_string_filter','');//Checkbox
|
82 |
$aio_wp_security->configs->set_value('aiowps_enable_5g_firewall','');//Checkbox
|
|
|
83 |
$aio_wp_security->configs->set_value('aiowps_enable_custom_rules','');//Checkbox
|
84 |
$aio_wp_security->configs->set_value('aiowps_custom_rules','');
|
85 |
|
@@ -107,6 +108,8 @@ class AIOWPSecurity_Configure_Settings
|
|
107 |
//SPAM Prevention menu
|
108 |
$aio_wp_security->configs->set_value('aiowps_enable_spambot_blocking','');//Checkbox
|
109 |
$aio_wp_security->configs->set_value('aiowps_enable_comment_captcha','');//Checkbox
|
|
|
|
|
110 |
|
111 |
//Filescan features
|
112 |
//File change detection feature
|
@@ -208,6 +211,7 @@ class AIOWPSecurity_Configure_Settings
|
|
208 |
$aio_wp_security->configs->add_value('aiowps_deny_bad_query_strings','');//Checkbox
|
209 |
$aio_wp_security->configs->add_value('aiowps_advanced_char_string_filter','');//Checkbox
|
210 |
$aio_wp_security->configs->add_value('aiowps_enable_5g_firewall','');//Checkbox
|
|
|
211 |
$aio_wp_security->configs->add_value('aiowps_enable_custom_rules','');//Checkbox
|
212 |
$aio_wp_security->configs->add_value('aiowps_custom_rules','');
|
213 |
|
@@ -235,6 +239,9 @@ class AIOWPSecurity_Configure_Settings
|
|
235 |
//SPAM Prevention menu
|
236 |
$aio_wp_security->configs->add_value('aiowps_enable_spambot_blocking','');//Checkbox
|
237 |
$aio_wp_security->configs->add_value('aiowps_enable_comment_captcha','');//Checkbox
|
|
|
|
|
|
|
238 |
|
239 |
//Filescan features
|
240 |
//File change detection feature
|
@@ -264,6 +271,7 @@ class AIOWPSecurity_Configure_Settings
|
|
264 |
|
265 |
static function turn_off_all_security_features()
|
266 |
{
|
|
|
267 |
AIOWPSecurity_Configure_Settings::set_default_settings();
|
268 |
|
269 |
//Refresh the .htaccess file based on the new settings
|
@@ -289,6 +297,7 @@ class AIOWPSecurity_Configure_Settings
|
|
289 |
$aio_wp_security->configs->set_value('aiowps_deny_bad_query_strings','');//Checkbox
|
290 |
$aio_wp_security->configs->set_value('aiowps_advanced_char_string_filter','');//Checkbox
|
291 |
$aio_wp_security->configs->set_value('aiowps_enable_5g_firewall','');//Checkbox
|
|
|
292 |
$aio_wp_security->configs->set_value('aiowps_enable_brute_force_attack_prevention','');//Checkbox
|
293 |
$aio_wp_security->configs->set_value('aiowps_enable_custom_rules','');//Checkbox
|
294 |
$aio_wp_security->configs->set_value('aiowps_custom_rules','');
|
80 |
$aio_wp_security->configs->set_value('aiowps_deny_bad_query_strings','');//Checkbox
|
81 |
$aio_wp_security->configs->set_value('aiowps_advanced_char_string_filter','');//Checkbox
|
82 |
$aio_wp_security->configs->set_value('aiowps_enable_5g_firewall','');//Checkbox
|
83 |
+
$aio_wp_security->configs->set_value('aiowps_enable_6g_firewall','');//Checkbox
|
84 |
$aio_wp_security->configs->set_value('aiowps_enable_custom_rules','');//Checkbox
|
85 |
$aio_wp_security->configs->set_value('aiowps_custom_rules','');
|
86 |
|
108 |
//SPAM Prevention menu
|
109 |
$aio_wp_security->configs->set_value('aiowps_enable_spambot_blocking','');//Checkbox
|
110 |
$aio_wp_security->configs->set_value('aiowps_enable_comment_captcha','');//Checkbox
|
111 |
+
$aio_wp_security->configs->set_value('aiowps_enable_autoblock_spam_ip','');//Checkbox
|
112 |
+
$aio_wp_security->configs->set_value('aiowps_spam_ip_min_comments_block','');
|
113 |
|
114 |
//Filescan features
|
115 |
//File change detection feature
|
211 |
$aio_wp_security->configs->add_value('aiowps_deny_bad_query_strings','');//Checkbox
|
212 |
$aio_wp_security->configs->add_value('aiowps_advanced_char_string_filter','');//Checkbox
|
213 |
$aio_wp_security->configs->add_value('aiowps_enable_5g_firewall','');//Checkbox
|
214 |
+
$aio_wp_security->configs->add_value('aiowps_enable_6g_firewall','');//Checkbox
|
215 |
$aio_wp_security->configs->add_value('aiowps_enable_custom_rules','');//Checkbox
|
216 |
$aio_wp_security->configs->add_value('aiowps_custom_rules','');
|
217 |
|
239 |
//SPAM Prevention menu
|
240 |
$aio_wp_security->configs->add_value('aiowps_enable_spambot_blocking','');//Checkbox
|
241 |
$aio_wp_security->configs->add_value('aiowps_enable_comment_captcha','');//Checkbox
|
242 |
+
$aio_wp_security->configs->add_value('aiowps_enable_autoblock_spam_ip','');//Checkbox
|
243 |
+
$aio_wp_security->configs->add_value('aiowps_spam_ip_min_comments_block','');
|
244 |
+
|
245 |
|
246 |
//Filescan features
|
247 |
//File change detection feature
|
271 |
|
272 |
static function turn_off_all_security_features()
|
273 |
{
|
274 |
+
global $aio_wp_security;
|
275 |
AIOWPSecurity_Configure_Settings::set_default_settings();
|
276 |
|
277 |
//Refresh the .htaccess file based on the new settings
|
297 |
$aio_wp_security->configs->set_value('aiowps_deny_bad_query_strings','');//Checkbox
|
298 |
$aio_wp_security->configs->set_value('aiowps_advanced_char_string_filter','');//Checkbox
|
299 |
$aio_wp_security->configs->set_value('aiowps_enable_5g_firewall','');//Checkbox
|
300 |
+
$aio_wp_security->configs->set_value('aiowps_enable_6g_firewall','');//Checkbox
|
301 |
$aio_wp_security->configs->set_value('aiowps_enable_brute_force_attack_prevention','');//Checkbox
|
302 |
$aio_wp_security->configs->set_value('aiowps_enable_custom_rules','');//Checkbox
|
303 |
$aio_wp_security->configs->set_value('aiowps_custom_rules','');
|
classes/wp-security-file-scan.php
CHANGED
@@ -48,16 +48,6 @@ class AIOWPSecurity_Scan
|
|
48 |
global $aio_wp_security;
|
49 |
if ( $aio_wp_security->configs->get_value('aiowps_send_fcd_scan_email') == '1' )
|
50 |
{
|
51 |
-
//Get the right email address.
|
52 |
-
if ( is_email( $aio_wp_security->configs->get_value('aiowps_fcd_scan_email_address') ) )
|
53 |
-
{
|
54 |
-
$toaddress = $aio_wp_security->configs->get_value('aiowps_fcd_scan_email_address');
|
55 |
-
} else
|
56 |
-
{
|
57 |
-
$toaddress = get_site_option( 'admin_email' );
|
58 |
-
}
|
59 |
-
|
60 |
-
$to = $toaddress;
|
61 |
$site_title = get_bloginfo( 'name' );
|
62 |
$from_name = empty($site_title)?'WordPress':$site_title;
|
63 |
|
@@ -76,10 +66,28 @@ class AIOWPSecurity_Scan
|
|
76 |
$message .= $scan_results_message;
|
77 |
$message .= "\r\n".__( 'Login to your site to view the scan details.', 'all-in-one-wp-security-and-firewall' );
|
78 |
|
79 |
-
|
80 |
-
|
81 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
}
|
|
|
83 |
}
|
84 |
}
|
85 |
|
48 |
global $aio_wp_security;
|
49 |
if ( $aio_wp_security->configs->get_value('aiowps_send_fcd_scan_email') == '1' )
|
50 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
$site_title = get_bloginfo( 'name' );
|
52 |
$from_name = empty($site_title)?'WordPress':$site_title;
|
53 |
|
66 |
$message .= $scan_results_message;
|
67 |
$message .= "\r\n".__( 'Login to your site to view the scan details.', 'all-in-one-wp-security-and-firewall' );
|
68 |
|
69 |
+
//Get the email address(es).
|
70 |
+
$addresses = $aio_wp_security->configs->get_value('aiowps_fcd_scan_email_address');
|
71 |
+
if ( empty( $addresses ) )
|
72 |
+
{
|
73 |
+
$toaddress = get_site_option( 'admin_email' );
|
74 |
+
$sendMail = wp_mail( $toaddress, $subject, $message, $headers );
|
75 |
+
if(FALSE === $sendMail){
|
76 |
+
$aio_wp_security->debug_logger->log_debug("File change notification email failed to send to ".$toaddress,4);
|
77 |
+
}
|
78 |
+
|
79 |
+
} else
|
80 |
+
{
|
81 |
+
$email_list_array = explode(PHP_EOL, $addresses);
|
82 |
+
foreach($email_list_array as $key=>$value){
|
83 |
+
$toaddress = $value;
|
84 |
+
$sendMail = wp_mail( $toaddress, $subject, $message, $headers );
|
85 |
+
if(FALSE === $sendMail){
|
86 |
+
$aio_wp_security->debug_logger->log_debug("File change notification email failed to send to ".$toaddress,4);
|
87 |
+
}
|
88 |
+
}
|
89 |
}
|
90 |
+
|
91 |
}
|
92 |
}
|
93 |
|
classes/wp-security-general-init-tasks.php
CHANGED
@@ -7,6 +7,15 @@ class AIOWPSecurity_General_Init_Tasks
|
|
7 |
|
8 |
add_action( 'permalink_structure_changed', array(&$this, 'refresh_firewall_rules' ), 10, 2);
|
9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
if ($aio_wp_security->configs->get_value('aiowps_enable_rename_login_page') == '1') {
|
11 |
add_action( 'widgets_init', array(&$this, 'remove_standard_wp_meta_widget' ));
|
12 |
add_filter( 'retrieve_password_message', array(&$this, 'decode_reset_pw_msg'), 10, 4); //Fix for non decoded html entities in password reset link
|
@@ -194,7 +203,45 @@ class AIOWPSecurity_General_Init_Tasks
|
|
194 |
}
|
195 |
}
|
196 |
}
|
197 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
198 |
function remove_standard_wp_meta_widget()
|
199 |
{
|
200 |
unregister_widget('WP_Widget_Meta');
|
7 |
|
8 |
add_action( 'permalink_structure_changed', array(&$this, 'refresh_firewall_rules' ), 10, 2);
|
9 |
|
10 |
+
if ($aio_wp_security->configs->get_value('aiowps_enable_autoblock_spam_ip') == '1') {
|
11 |
+
AIOWPSecurity_Blocking::check_visitor_ip_and_perform_blocking();
|
12 |
+
|
13 |
+
//add_action( 'spammed_comment', array(&$this, 'process_spammed_comment' )); //this hook gets fired when admin marks comment as spam
|
14 |
+
//add_action( 'akismet_submit_spam_comment', array(&$this, 'process_akismet_submit_spam_comment' ), 10, 2); //this hook gets fired when akismet marks a comment as spam
|
15 |
+
add_action( 'comment_post', array(&$this, 'spam_detect_process_comment_post' ), 10, 2); //this hook gets fired just after comment is saved to DB
|
16 |
+
add_action( 'transition_comment_status', array(&$this, 'process_transition_comment_status' ), 10, 3); //this hook gets fired when a comment's status changes
|
17 |
+
}
|
18 |
+
|
19 |
if ($aio_wp_security->configs->get_value('aiowps_enable_rename_login_page') == '1') {
|
20 |
add_action( 'widgets_init', array(&$this, 'remove_standard_wp_meta_widget' ));
|
21 |
add_filter( 'retrieve_password_message', array(&$this, 'decode_reset_pw_msg'), 10, 4); //Fix for non decoded html entities in password reset link
|
203 |
}
|
204 |
}
|
205 |
}
|
206 |
+
|
207 |
+
function spam_detect_process_comment_post($comment_id, $comment_approved)
|
208 |
+
{
|
209 |
+
if($comment_approved == 'spam'){
|
210 |
+
$this->block_comment_ip($comment_id);
|
211 |
+
}
|
212 |
+
|
213 |
+
}
|
214 |
+
|
215 |
+
function process_transition_comment_status($new_status, $old_status, $comment)
|
216 |
+
{
|
217 |
+
if($new_status == 'spam'){
|
218 |
+
$this->block_comment_ip($comment->comment_ID);
|
219 |
+
}
|
220 |
+
|
221 |
+
}
|
222 |
+
|
223 |
+
/**
|
224 |
+
* Will check auto-spam blocking settings and will add IP to blocked table accordingly
|
225 |
+
* @param $comment_id
|
226 |
+
*/
|
227 |
+
function block_comment_ip($comment_id)
|
228 |
+
{
|
229 |
+
global $aio_wp_security, $wpdb;
|
230 |
+
$comment_obj = get_comment( $comment_id );
|
231 |
+
$comment_ip = $comment_obj->comment_author_IP;
|
232 |
+
//Get number of spam comments from this IP
|
233 |
+
$sql = $wpdb->prepare("SELECT * FROM $wpdb->comments
|
234 |
+
WHERE comment_approved = 'spam'
|
235 |
+
AND comment_author_IP = %s
|
236 |
+
", $comment_ip);
|
237 |
+
$comment_data = $wpdb->get_results($sql, ARRAY_A);
|
238 |
+
$spam_count = count($comment_data);
|
239 |
+
$min_comment_before_block = $aio_wp_security->configs->get_value('aiowps_spam_ip_min_comments_block');
|
240 |
+
if(!empty($min_comment_before_block) && $spam_count >= ($min_comment_before_block - 1)){
|
241 |
+
AIOWPSecurity_Blocking::add_ip_to_block_list($comment_ip, 'spam');
|
242 |
+
}
|
243 |
+
}
|
244 |
+
|
245 |
function remove_standard_wp_meta_widget()
|
246 |
{
|
247 |
unregister_widget('WP_Widget_Meta');
|
classes/wp-security-installer.php
CHANGED
@@ -5,13 +5,11 @@ include_once(dirname(__FILE__) . '/wp-security-configure-settings.php');//Allows
|
|
5 |
class AIOWPSecurity_Installer
|
6 |
{
|
7 |
static function run_installer()
|
8 |
-
{
|
9 |
global $wpdb;
|
10 |
-
if (function_exists('is_multisite') && is_multisite())
|
11 |
-
{
|
12 |
// check if it is a network activation - if so, run the activation function for each blog id
|
13 |
-
if (isset($_GET['networkwide']) && ($_GET['networkwide'] == 1))
|
14 |
-
{
|
15 |
$old_blog = $wpdb->blogid;
|
16 |
// Get all blog ids
|
17 |
$blogids = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs");
|
@@ -30,30 +28,31 @@ class AIOWPSecurity_Installer
|
|
30 |
AIOWPSecurity_Installer::create_db_backup_dir(); //Create a backup dir in the WP uploads directory
|
31 |
AIOWPSecurity_Installer::miscellaneous_tasks();
|
32 |
}
|
33 |
-
|
34 |
static function create_db_tables()
|
35 |
{
|
36 |
global $wpdb;
|
37 |
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
|
38 |
-
|
39 |
//"User Login" related tables
|
40 |
-
|
41 |
$failed_login_tbl_name = AIOWPSEC_TBL_FAILED_LOGINS;
|
42 |
$user_login_activity_tbl_name = AIOWPSEC_TBL_USER_LOGIN_ACTIVITY;
|
43 |
$aiowps_global_meta_tbl_name = AIOWPSEC_TBL_GLOBAL_META_DATA;
|
44 |
$aiowps_event_tbl_name = AIOWPSEC_TBL_EVENTS;
|
|
|
45 |
|
46 |
$charset_collate = '';
|
47 |
-
if (!empty($wpdb->charset)){
|
48 |
$charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
|
49 |
-
}else{
|
50 |
$charset_collate = "DEFAULT CHARSET=utf8";
|
51 |
}
|
52 |
-
if (!empty($wpdb->collate)){
|
53 |
$charset_collate .= " COLLATE $wpdb->collate";
|
54 |
}
|
55 |
-
|
56 |
-
|
57 |
id bigint(20) NOT NULL AUTO_INCREMENT,
|
58 |
user_id bigint(20) NOT NULL,
|
59 |
user_login VARCHAR(150) NOT NULL,
|
@@ -64,9 +63,9 @@ class AIOWPSecurity_Installer
|
|
64 |
unlock_key varchar(128) NOT NULL DEFAULT '',
|
65 |
PRIMARY KEY (id)
|
66 |
)" . $charset_collate . ";";
|
67 |
-
|
68 |
|
69 |
-
|
70 |
id bigint(20) NOT NULL AUTO_INCREMENT,
|
71 |
user_id bigint(20) NOT NULL,
|
72 |
user_login VARCHAR(150) NOT NULL,
|
@@ -74,8 +73,8 @@ class AIOWPSecurity_Installer
|
|
74 |
login_attempt_ip varchar(100) NOT NULL DEFAULT '',
|
75 |
PRIMARY KEY (id)
|
76 |
)" . $charset_collate . ";";
|
77 |
-
|
78 |
-
|
79 |
$ula_tbl_sql = "CREATE TABLE " . $user_login_activity_tbl_name . " (
|
80 |
id bigint(20) NOT NULL AUTO_INCREMENT,
|
81 |
user_id bigint(20) NOT NULL,
|
@@ -87,7 +86,7 @@ class AIOWPSecurity_Installer
|
|
87 |
browser_type varchar(150) NOT NULL DEFAULT '',
|
88 |
PRIMARY KEY (id)
|
89 |
)" . $charset_collate . ";";
|
90 |
-
|
91 |
|
92 |
$gm_tbl_sql = "CREATE TABLE " . $aiowps_global_meta_tbl_name . " (
|
93 |
meta_id bigint(20) NOT NULL auto_increment,
|
@@ -105,7 +104,7 @@ class AIOWPSecurity_Installer
|
|
105 |
PRIMARY KEY (meta_id)
|
106 |
)" . $charset_collate . ";";
|
107 |
dbDelta($gm_tbl_sql);
|
108 |
-
|
109 |
$evt_tbl_sql = "CREATE TABLE " . $aiowps_event_tbl_name . " (
|
110 |
id bigint(20) NOT NULL AUTO_INCREMENT,
|
111 |
event_type VARCHAR(150) NOT NULL DEFAULT '',
|
@@ -115,101 +114,109 @@ class AIOWPSecurity_Installer
|
|
115 |
ip_or_host varchar(100),
|
116 |
referer_info varchar(255),
|
117 |
url varchar(255),
|
|
|
118 |
event_data longtext,
|
119 |
PRIMARY KEY (id)
|
120 |
)" . $charset_collate . ";";
|
121 |
dbDelta($evt_tbl_sql);
|
122 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
123 |
update_option("aiowpsec_db_version", AIO_WP_SECURITY_DB_VERSION);
|
124 |
}
|
125 |
-
|
126 |
static function create_db_backup_dir()
|
127 |
{
|
128 |
global $aio_wp_security;
|
129 |
//Create our folder in the "wp-content" directory
|
130 |
-
$aiowps_dir = WP_CONTENT_DIR.'/'.AIO_WP_SECURITY_BACKUPS_DIR_NAME;
|
131 |
-
if(!is_dir($aiowps_dir)) {
|
132 |
-
mkdir($aiowps_dir
|
133 |
//Let's also create an empty index.html file in this folder
|
134 |
-
$index_file = $aiowps_dir.'/index.html';
|
135 |
$handle = fopen($index_file, 'w'); //or die('Cannot open file: '.$index_file);
|
136 |
fclose($handle);
|
137 |
}
|
138 |
$server_type = AIOWPSecurity_Utility::get_server_type();
|
139 |
//Only create .htaccess if server is the right type
|
140 |
-
if($server_type == 'apache' || $server_type == 'litespeed'){
|
141 |
-
$file = $aiowps_dir.'/.htaccess';
|
142 |
-
if(!file_exists($file)){
|
143 |
//Create an .htacces file
|
144 |
//Write some rules which will only allow people originating from wp admin page to download the DB backup
|
145 |
$rules = '';
|
146 |
$rules .= 'order deny,allow' . PHP_EOL;
|
147 |
$rules .= 'deny from all' . PHP_EOL;
|
148 |
$write_result = file_put_contents($file, $rules);
|
149 |
-
if ($write_result === false)
|
150 |
-
|
151 |
-
$aio_wp_security->debug_logger->log_debug("Creation of .htaccess file in ".AIO_WP_SECURITY_BACKUPS_DIR_NAME." directory failed!",4);
|
152 |
}
|
153 |
}
|
154 |
}
|
155 |
}
|
156 |
-
|
157 |
static function reactivation_tasks()
|
158 |
{
|
159 |
global $aio_wp_security;
|
160 |
$temp_cfgs = get_option('aiowps_temp_configs');
|
161 |
-
if($temp_cfgs !== FALSE){
|
162 |
//Case where previously installed plugin was reactivated
|
163 |
//Let's copy the original configs back to the options table
|
164 |
$updated = update_option('aio_wp_security_configs', $temp_cfgs);
|
165 |
-
if($updated === FALSE){
|
166 |
-
$aio_wp_security->debug_logger->log_debug("AIOWPSecurity_Installer::run_installer() - Update of option settings failed upon plugin activation!",4);
|
167 |
}
|
168 |
$aio_wp_security->configs->configs = $temp_cfgs; //copy the original configs to memory
|
169 |
//Now let's write any rules to the .htaccess file if necessary
|
170 |
$res = AIOWPSecurity_Utility_Htaccess::write_to_htaccess();
|
171 |
|
172 |
-
if($res == -1)
|
173 |
-
|
174 |
-
$aio_wp_security->debug_logger->log_debug("AIOWPSecurity_Deactivation::run_deactivation_tasks() - Could not write to the .htaccess file. Please check the file permissions.",4);
|
175 |
return false;
|
176 |
}
|
177 |
delete_option('aiowps_temp_configs');
|
178 |
return true;
|
179 |
-
}else{
|
180 |
-
$aio_wp_security->debug_logger->log_debug("AIOWPSecurity_Deactivation::run_deactivation_tasks() - Original config settings not found!",4);
|
181 |
return false;
|
182 |
}
|
183 |
}
|
184 |
-
|
185 |
static function miscellaneous_tasks()
|
186 |
{
|
187 |
//Create .htaccess file to protect log files in "logs" dir
|
188 |
self::create_htaccess_logs_dir();
|
189 |
}
|
190 |
-
|
191 |
static function create_htaccess_logs_dir()
|
192 |
{
|
193 |
global $aio_wp_security;
|
194 |
-
$aiowps_log_dir = AIO_WP_SECURITY_PATH.'/logs';
|
195 |
$server_type = AIOWPSecurity_Utility::get_server_type();
|
196 |
//Only create .htaccess if server is the right type
|
197 |
-
if($server_type == 'apache' || $server_type == 'litespeed'){
|
198 |
-
$file = $aiowps_log_dir.'/.htaccess';
|
199 |
-
if(!file_exists($file)){
|
200 |
//Write some rules which will stop people from viewing the log files publicly
|
201 |
$rules = '';
|
202 |
$rules .= 'order deny,allow' . PHP_EOL;
|
203 |
$rules .= 'deny from all' . PHP_EOL;
|
204 |
$write_result = file_put_contents($file, $rules);
|
205 |
-
if ($write_result === false)
|
206 |
-
|
207 |
-
$aio_wp_security->debug_logger->log_debug("Creation of .htaccess file in ".$aiowps_log_dir." directory failed!",4);
|
208 |
}
|
209 |
}
|
210 |
}
|
211 |
}
|
212 |
-
|
213 |
|
214 |
// //Read entire contents of file at activation time and store serialized contents in our global_meta table
|
215 |
// static function backup_file_contents_to_db_at_activation($src_file, $key_description)
|
5 |
class AIOWPSecurity_Installer
|
6 |
{
|
7 |
static function run_installer()
|
8 |
+
{
|
9 |
global $wpdb;
|
10 |
+
if (function_exists('is_multisite') && is_multisite()) {
|
|
|
11 |
// check if it is a network activation - if so, run the activation function for each blog id
|
12 |
+
if (isset($_GET['networkwide']) && ($_GET['networkwide'] == 1)) {
|
|
|
13 |
$old_blog = $wpdb->blogid;
|
14 |
// Get all blog ids
|
15 |
$blogids = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs");
|
28 |
AIOWPSecurity_Installer::create_db_backup_dir(); //Create a backup dir in the WP uploads directory
|
29 |
AIOWPSecurity_Installer::miscellaneous_tasks();
|
30 |
}
|
31 |
+
|
32 |
static function create_db_tables()
|
33 |
{
|
34 |
global $wpdb;
|
35 |
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
|
36 |
+
|
37 |
//"User Login" related tables
|
38 |
+
$lockdown_tbl_name = AIOWPSEC_TBL_LOGIN_LOCKDOWN;
|
39 |
$failed_login_tbl_name = AIOWPSEC_TBL_FAILED_LOGINS;
|
40 |
$user_login_activity_tbl_name = AIOWPSEC_TBL_USER_LOGIN_ACTIVITY;
|
41 |
$aiowps_global_meta_tbl_name = AIOWPSEC_TBL_GLOBAL_META_DATA;
|
42 |
$aiowps_event_tbl_name = AIOWPSEC_TBL_EVENTS;
|
43 |
+
$perm_block_tbl_name = AIOWPSEC_TBL_PERM_BLOCK;
|
44 |
|
45 |
$charset_collate = '';
|
46 |
+
if (!empty($wpdb->charset)) {
|
47 |
$charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
|
48 |
+
} else {
|
49 |
$charset_collate = "DEFAULT CHARSET=utf8";
|
50 |
}
|
51 |
+
if (!empty($wpdb->collate)) {
|
52 |
$charset_collate .= " COLLATE $wpdb->collate";
|
53 |
}
|
54 |
+
|
55 |
+
$ld_tbl_sql = "CREATE TABLE " . $lockdown_tbl_name . " (
|
56 |
id bigint(20) NOT NULL AUTO_INCREMENT,
|
57 |
user_id bigint(20) NOT NULL,
|
58 |
user_login VARCHAR(150) NOT NULL,
|
63 |
unlock_key varchar(128) NOT NULL DEFAULT '',
|
64 |
PRIMARY KEY (id)
|
65 |
)" . $charset_collate . ";";
|
66 |
+
dbDelta($ld_tbl_sql);
|
67 |
|
68 |
+
$fl_tbl_sql = "CREATE TABLE " . $failed_login_tbl_name . " (
|
69 |
id bigint(20) NOT NULL AUTO_INCREMENT,
|
70 |
user_id bigint(20) NOT NULL,
|
71 |
user_login VARCHAR(150) NOT NULL,
|
73 |
login_attempt_ip varchar(100) NOT NULL DEFAULT '',
|
74 |
PRIMARY KEY (id)
|
75 |
)" . $charset_collate . ";";
|
76 |
+
dbDelta($fl_tbl_sql);
|
77 |
+
|
78 |
$ula_tbl_sql = "CREATE TABLE " . $user_login_activity_tbl_name . " (
|
79 |
id bigint(20) NOT NULL AUTO_INCREMENT,
|
80 |
user_id bigint(20) NOT NULL,
|
86 |
browser_type varchar(150) NOT NULL DEFAULT '',
|
87 |
PRIMARY KEY (id)
|
88 |
)" . $charset_collate . ";";
|
89 |
+
dbDelta($ula_tbl_sql);
|
90 |
|
91 |
$gm_tbl_sql = "CREATE TABLE " . $aiowps_global_meta_tbl_name . " (
|
92 |
meta_id bigint(20) NOT NULL auto_increment,
|
104 |
PRIMARY KEY (meta_id)
|
105 |
)" . $charset_collate . ";";
|
106 |
dbDelta($gm_tbl_sql);
|
107 |
+
|
108 |
$evt_tbl_sql = "CREATE TABLE " . $aiowps_event_tbl_name . " (
|
109 |
id bigint(20) NOT NULL AUTO_INCREMENT,
|
110 |
event_type VARCHAR(150) NOT NULL DEFAULT '',
|
114 |
ip_or_host varchar(100),
|
115 |
referer_info varchar(255),
|
116 |
url varchar(255),
|
117 |
+
country_code varchar(50),
|
118 |
event_data longtext,
|
119 |
PRIMARY KEY (id)
|
120 |
)" . $charset_collate . ";";
|
121 |
dbDelta($evt_tbl_sql);
|
122 |
|
123 |
+
$pb_tbl_sql = "CREATE TABLE " . $perm_block_tbl_name . " (
|
124 |
+
id bigint(20) NOT NULL AUTO_INCREMENT,
|
125 |
+
blocked_ip varchar(100) NOT NULL DEFAULT '',
|
126 |
+
block_reason varchar(128) NOT NULL DEFAULT '',
|
127 |
+
country_origin varchar(50) NOT NULL DEFAULT '',
|
128 |
+
blocked_date datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
129 |
+
PRIMARY KEY (id)
|
130 |
+
)" . $charset_collate . ";";
|
131 |
+
dbDelta($pb_tbl_sql);
|
132 |
+
|
133 |
update_option("aiowpsec_db_version", AIO_WP_SECURITY_DB_VERSION);
|
134 |
}
|
135 |
+
|
136 |
static function create_db_backup_dir()
|
137 |
{
|
138 |
global $aio_wp_security;
|
139 |
//Create our folder in the "wp-content" directory
|
140 |
+
$aiowps_dir = WP_CONTENT_DIR . '/' . AIO_WP_SECURITY_BACKUPS_DIR_NAME;
|
141 |
+
if (!is_dir($aiowps_dir)) {
|
142 |
+
mkdir($aiowps_dir, 0755, true);
|
143 |
//Let's also create an empty index.html file in this folder
|
144 |
+
$index_file = $aiowps_dir . '/index.html';
|
145 |
$handle = fopen($index_file, 'w'); //or die('Cannot open file: '.$index_file);
|
146 |
fclose($handle);
|
147 |
}
|
148 |
$server_type = AIOWPSecurity_Utility::get_server_type();
|
149 |
//Only create .htaccess if server is the right type
|
150 |
+
if ($server_type == 'apache' || $server_type == 'litespeed') {
|
151 |
+
$file = $aiowps_dir . '/.htaccess';
|
152 |
+
if (!file_exists($file)) {
|
153 |
//Create an .htacces file
|
154 |
//Write some rules which will only allow people originating from wp admin page to download the DB backup
|
155 |
$rules = '';
|
156 |
$rules .= 'order deny,allow' . PHP_EOL;
|
157 |
$rules .= 'deny from all' . PHP_EOL;
|
158 |
$write_result = file_put_contents($file, $rules);
|
159 |
+
if ($write_result === false) {
|
160 |
+
$aio_wp_security->debug_logger->log_debug("Creation of .htaccess file in " . AIO_WP_SECURITY_BACKUPS_DIR_NAME . " directory failed!", 4);
|
|
|
161 |
}
|
162 |
}
|
163 |
}
|
164 |
}
|
165 |
+
|
166 |
static function reactivation_tasks()
|
167 |
{
|
168 |
global $aio_wp_security;
|
169 |
$temp_cfgs = get_option('aiowps_temp_configs');
|
170 |
+
if ($temp_cfgs !== FALSE) {
|
171 |
//Case where previously installed plugin was reactivated
|
172 |
//Let's copy the original configs back to the options table
|
173 |
$updated = update_option('aio_wp_security_configs', $temp_cfgs);
|
174 |
+
if ($updated === FALSE) {
|
175 |
+
$aio_wp_security->debug_logger->log_debug("AIOWPSecurity_Installer::run_installer() - Update of option settings failed upon plugin activation!", 4);
|
176 |
}
|
177 |
$aio_wp_security->configs->configs = $temp_cfgs; //copy the original configs to memory
|
178 |
//Now let's write any rules to the .htaccess file if necessary
|
179 |
$res = AIOWPSecurity_Utility_Htaccess::write_to_htaccess();
|
180 |
|
181 |
+
if ($res == -1) {
|
182 |
+
$aio_wp_security->debug_logger->log_debug("AIOWPSecurity_Deactivation::run_deactivation_tasks() - Could not write to the .htaccess file. Please check the file permissions.", 4);
|
|
|
183 |
return false;
|
184 |
}
|
185 |
delete_option('aiowps_temp_configs');
|
186 |
return true;
|
187 |
+
} else {
|
188 |
+
$aio_wp_security->debug_logger->log_debug("AIOWPSecurity_Deactivation::run_deactivation_tasks() - Original config settings not found!", 4);
|
189 |
return false;
|
190 |
}
|
191 |
}
|
192 |
+
|
193 |
static function miscellaneous_tasks()
|
194 |
{
|
195 |
//Create .htaccess file to protect log files in "logs" dir
|
196 |
self::create_htaccess_logs_dir();
|
197 |
}
|
198 |
+
|
199 |
static function create_htaccess_logs_dir()
|
200 |
{
|
201 |
global $aio_wp_security;
|
202 |
+
$aiowps_log_dir = AIO_WP_SECURITY_PATH . '/logs';
|
203 |
$server_type = AIOWPSecurity_Utility::get_server_type();
|
204 |
//Only create .htaccess if server is the right type
|
205 |
+
if ($server_type == 'apache' || $server_type == 'litespeed') {
|
206 |
+
$file = $aiowps_log_dir . '/.htaccess';
|
207 |
+
if (!file_exists($file)) {
|
208 |
//Write some rules which will stop people from viewing the log files publicly
|
209 |
$rules = '';
|
210 |
$rules .= 'order deny,allow' . PHP_EOL;
|
211 |
$rules .= 'deny from all' . PHP_EOL;
|
212 |
$write_result = file_put_contents($file, $rules);
|
213 |
+
if ($write_result === false) {
|
214 |
+
$aio_wp_security->debug_logger->log_debug("Creation of .htaccess file in " . $aiowps_log_dir . " directory failed!", 4);
|
|
|
215 |
}
|
216 |
}
|
217 |
}
|
218 |
}
|
219 |
+
|
220 |
|
221 |
// //Read entire contents of file at activation time and store serialized contents in our global_meta table
|
222 |
// static function backup_file_contents_to_db_at_activation($src_file, $key_description)
|
classes/wp-security-process-renamed-login-page.php
CHANGED
@@ -75,7 +75,7 @@ class AIOWPSecurity_Process_Renamed_Login_Page
|
|
75 |
static function renamed_login_init_tasks()
|
76 |
{
|
77 |
global $aio_wp_security;
|
78 |
-
|
79 |
//The following will process the native wordpress post password protection form
|
80 |
//Normally this is done by wp-login.php file but we cannot use that since the login page has been renamed
|
81 |
$action = isset($_GET['action'])?strip_tags($_GET['action']):'';
|
@@ -134,8 +134,20 @@ class AIOWPSecurity_Process_Renamed_Login_Page
|
|
134 |
$parsed_url = parse_url($_SERVER['REQUEST_URI']);
|
135 |
|
136 |
$login_slug = $aio_wp_security->configs->get_value('aiowps_login_page_slug');
|
137 |
-
|
138 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
139 |
|| (!get_option('permalink_structure') && isset($_GET[$login_slug]))){
|
140 |
status_header( 200 );
|
141 |
require_once(AIO_WP_SECURITY_PATH . '/other-includes/wp-security-rename-login-feature.php' );
|
@@ -157,6 +169,8 @@ class AIOWPSecurity_Process_Renamed_Login_Page
|
|
157 |
static function aiowps_set_404()
|
158 |
{
|
159 |
global $wp_query;
|
|
|
|
|
160 |
status_header(404);
|
161 |
$wp_query->set_404();
|
162 |
if ((($template = get_404_template()) || ($template = get_index_template()))
|
75 |
static function renamed_login_init_tasks()
|
76 |
{
|
77 |
global $aio_wp_security;
|
78 |
+
|
79 |
//The following will process the native wordpress post password protection form
|
80 |
//Normally this is done by wp-login.php file but we cannot use that since the login page has been renamed
|
81 |
$action = isset($_GET['action'])?strip_tags($_GET['action']):'';
|
134 |
$parsed_url = parse_url($_SERVER['REQUEST_URI']);
|
135 |
|
136 |
$login_slug = $aio_wp_security->configs->get_value('aiowps_login_page_slug');
|
137 |
+
$home_url_with_slug = home_url($login_slug, 'relative');
|
138 |
+
/*
|
139 |
+
* *** Compatibility fix for qTranslate-X plugin ***
|
140 |
+
* qTranslate-X plugin modifies the result for the following command by adding the protocol and host to the url path:
|
141 |
+
* home_url($login_slug, 'relative');
|
142 |
+
* Therefore we will remove the protocol and host for the following cases:
|
143 |
+
* qTranslate-X is active AND the URL being accessed contains the secret slug
|
144 |
+
*/
|
145 |
+
if (function_exists('qtranxf_init_language') && strpos($home_url_with_slug,$login_slug)){
|
146 |
+
$parsed_home_url_with_slug = parse_url($home_url_with_slug);
|
147 |
+
$home_url_with_slug = $parsed_home_url_with_slug['path']; //this will return just the path minus the protocol and host
|
148 |
+
}
|
149 |
+
|
150 |
+
if(untrailingslashit($parsed_url['path']) === $home_url_with_slug
|
151 |
|| (!get_option('permalink_structure') && isset($_GET[$login_slug]))){
|
152 |
status_header( 200 );
|
153 |
require_once(AIO_WP_SECURITY_PATH . '/other-includes/wp-security-rename-login-feature.php' );
|
169 |
static function aiowps_set_404()
|
170 |
{
|
171 |
global $wp_query;
|
172 |
+
do_action('aiopws_before_set_404'); //This hook is for themes which produce a fatal error when the rename login feature is enabled and someone visits "wp-admin" slug directly
|
173 |
+
|
174 |
status_header(404);
|
175 |
$wp_query->set_404();
|
176 |
if ((($template = get_404_template()) || ($template = get_index_template()))
|
classes/wp-security-user-login.php
CHANGED
@@ -38,6 +38,7 @@ class AIOWPSecurity_User_Login
|
|
38 |
if($aio_wp_security->configs->get_value('aiowps_allow_unlock_requests')=='1')
|
39 |
{
|
40 |
add_action('login_form', array(&$this, 'insert_unlock_request_form'));
|
|
|
41 |
}
|
42 |
$aio_wp_security->debug_logger->log_debug("Login attempt from blocked IP range - ".$user_locked['failed_login_ip'],2);
|
43 |
return new WP_Error('authentication_failed', __('<strong>ERROR</strong>: Login failed because your IP address has been blocked. Please contact the administrator.', 'all-in-one-wp-security-and-firewall'));
|
@@ -551,7 +552,7 @@ class AIOWPSecurity_User_Login
|
|
551 |
|
552 |
$unlock_request_form .= '<div style="padding-bottom:10px;"><input type="hidden" name="aiowps-unlock-string-info" id="aiowps-unlock-string-info" value="'.$enc_result.'" />';
|
553 |
$unlock_request_form .= '<input type="hidden" name="aiowps-unlock-temp-string" id="aiowps-unlock-temp-string" value="'.$current_time.'" />';
|
554 |
-
$unlock_request_form .= '<button type="submit" name="aiowps_unlock_request" class="button">'.__('Request Unlock', 'all-in-one-wp-security-and-firewall').'</button></div>';
|
555 |
echo $unlock_request_form;
|
556 |
}
|
557 |
|
38 |
if($aio_wp_security->configs->get_value('aiowps_allow_unlock_requests')=='1')
|
39 |
{
|
40 |
add_action('login_form', array(&$this, 'insert_unlock_request_form'));
|
41 |
+
add_action('woocommerce_login_form', array(&$this, 'insert_unlock_request_form'));
|
42 |
}
|
43 |
$aio_wp_security->debug_logger->log_debug("Login attempt from blocked IP range - ".$user_locked['failed_login_ip'],2);
|
44 |
return new WP_Error('authentication_failed', __('<strong>ERROR</strong>: Login failed because your IP address has been blocked. Please contact the administrator.', 'all-in-one-wp-security-and-firewall'));
|
552 |
|
553 |
$unlock_request_form .= '<div style="padding-bottom:10px;"><input type="hidden" name="aiowps-unlock-string-info" id="aiowps-unlock-string-info" value="'.$enc_result.'" />';
|
554 |
$unlock_request_form .= '<input type="hidden" name="aiowps-unlock-temp-string" id="aiowps-unlock-temp-string" value="'.$current_time.'" />';
|
555 |
+
$unlock_request_form .= '<button type="submit" name="aiowps_unlock_request" id="aiowps_unlock_request" class="button">'.__('Request Unlock', 'all-in-one-wp-security-and-firewall').'</button></div>';
|
556 |
echo $unlock_request_form;
|
557 |
}
|
558 |
|
classes/wp-security-utility-htaccess.php
CHANGED
@@ -43,6 +43,9 @@ class AIOWPSecurity_Utility_Htaccess
|
|
43 |
public static $five_g_blacklist_marker_start = '#AIOWPS_FIVE_G_BLACKLIST_START';
|
44 |
public static $five_g_blacklist_marker_end = '#AIOWPS_FIVE_G_BLACKLIST_END';
|
45 |
|
|
|
|
|
|
|
46 |
public static $block_spambots_marker_start = '#AIOWPS_BLOCK_SPAMBOTS_START';
|
47 |
public static $block_spambots_marker_end = '#AIOWPS_BLOCK_SPAMBOTS_END';
|
48 |
|
@@ -185,6 +188,7 @@ class AIOWPSecurity_Utility_Htaccess
|
|
185 |
$rules .= AIOWPSecurity_Utility_Htaccess::getrules_forbid_proxy_comment_posting();
|
186 |
$rules .= AIOWPSecurity_Utility_Htaccess::getrules_deny_bad_query_strings();
|
187 |
$rules .= AIOWPSecurity_Utility_Htaccess::getrules_advanced_character_string_filter();
|
|
|
188 |
$rules .= AIOWPSecurity_Utility_Htaccess::getrules_5g_blacklist();
|
189 |
$rules .= AIOWPSecurity_Utility_Htaccess::getrules_enable_brute_force_prevention();
|
190 |
$rules .= AIOWPSecurity_Utility_Htaccess::getrules_block_spambots();
|
@@ -644,7 +648,7 @@ class AIOWPSecurity_Utility_Htaccess
|
|
644 |
$rules .= AIOWPSecurity_Utility_Htaccess::$deny_bad_query_strings_marker_start . PHP_EOL; //Add feature marker start
|
645 |
//$rules .= 'RewriteCond %{QUERY_STRING} ../ [NC,OR]' . PHP_EOL;
|
646 |
//$rules .= 'RewriteCond %{QUERY_STRING} boot.ini [NC,OR]' . PHP_EOL;
|
647 |
-
|
648 |
$rules .= 'RewriteCond %{QUERY_STRING} ftp: [NC,OR]' . PHP_EOL;
|
649 |
$rules .= 'RewriteCond %{QUERY_STRING} http: [NC,OR]' . PHP_EOL;
|
650 |
$rules .= 'RewriteCond %{QUERY_STRING} https: [NC,OR]' . PHP_EOL;
|
@@ -850,6 +854,81 @@ class AIOWPSecurity_Utility_Htaccess
|
|
850 |
return $rules;
|
851 |
}
|
852 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
853 |
/*
|
854 |
* This function will write some directives to block all comments which do not originate from the blog's domain
|
855 |
* OR if the user agent is empty. All blocked requests will be redirected to 127.0.0.1
|
@@ -859,9 +938,9 @@ class AIOWPSecurity_Utility_Htaccess
|
|
859 |
global $aio_wp_security;
|
860 |
$rules = '';
|
861 |
if ($aio_wp_security->configs->get_value('aiowps_enable_spambot_blocking') == '1') {
|
862 |
-
$url_string = AIOWPSecurity_Utility_Htaccess::return_regularized_url(
|
863 |
if ($url_string == FALSE) {
|
864 |
-
$url_string =
|
865 |
}
|
866 |
$rules .= AIOWPSecurity_Utility_Htaccess::$block_spambots_marker_start . PHP_EOL; //Add feature marker start
|
867 |
$rules .= '<IfModule mod_rewrite.c>
|
@@ -885,9 +964,9 @@ class AIOWPSecurity_Utility_Htaccess
|
|
885 |
global $aio_wp_security;
|
886 |
$rules = '';
|
887 |
if ($aio_wp_security->configs->get_value('aiowps_prevent_hotlinking') == '1') {
|
888 |
-
$url_string = AIOWPSecurity_Utility_Htaccess::return_regularized_url(
|
889 |
if ($url_string == FALSE) {
|
890 |
-
$url_string =
|
891 |
}
|
892 |
$rules .= AIOWPSecurity_Utility_Htaccess::$prevent_image_hotlinks_marker_start . PHP_EOL; //Add feature marker start
|
893 |
$rules .= '<IfModule mod_rewrite.c>
|
43 |
public static $five_g_blacklist_marker_start = '#AIOWPS_FIVE_G_BLACKLIST_START';
|
44 |
public static $five_g_blacklist_marker_end = '#AIOWPS_FIVE_G_BLACKLIST_END';
|
45 |
|
46 |
+
public static $six_g_blacklist_marker_start = '#AIOWPS_SIX_G_BLACKLIST_START';
|
47 |
+
public static $six_g_blacklist_marker_end = '#AIOWPS_SIX_G_BLACKLIST_END';
|
48 |
+
|
49 |
public static $block_spambots_marker_start = '#AIOWPS_BLOCK_SPAMBOTS_START';
|
50 |
public static $block_spambots_marker_end = '#AIOWPS_BLOCK_SPAMBOTS_END';
|
51 |
|
188 |
$rules .= AIOWPSecurity_Utility_Htaccess::getrules_forbid_proxy_comment_posting();
|
189 |
$rules .= AIOWPSecurity_Utility_Htaccess::getrules_deny_bad_query_strings();
|
190 |
$rules .= AIOWPSecurity_Utility_Htaccess::getrules_advanced_character_string_filter();
|
191 |
+
$rules .= AIOWPSecurity_Utility_Htaccess::getrules_6g_blacklist();
|
192 |
$rules .= AIOWPSecurity_Utility_Htaccess::getrules_5g_blacklist();
|
193 |
$rules .= AIOWPSecurity_Utility_Htaccess::getrules_enable_brute_force_prevention();
|
194 |
$rules .= AIOWPSecurity_Utility_Htaccess::getrules_block_spambots();
|
648 |
$rules .= AIOWPSecurity_Utility_Htaccess::$deny_bad_query_strings_marker_start . PHP_EOL; //Add feature marker start
|
649 |
//$rules .= 'RewriteCond %{QUERY_STRING} ../ [NC,OR]' . PHP_EOL;
|
650 |
//$rules .= 'RewriteCond %{QUERY_STRING} boot.ini [NC,OR]' . PHP_EOL;
|
651 |
+
//$rules .= 'RewriteCond %{QUERY_STRING} tag= [NC,OR]' . PHP_EOL;
|
652 |
$rules .= 'RewriteCond %{QUERY_STRING} ftp: [NC,OR]' . PHP_EOL;
|
653 |
$rules .= 'RewriteCond %{QUERY_STRING} http: [NC,OR]' . PHP_EOL;
|
654 |
$rules .= 'RewriteCond %{QUERY_STRING} https: [NC,OR]' . PHP_EOL;
|
854 |
return $rules;
|
855 |
}
|
856 |
|
857 |
+
/*
|
858 |
+
* This function contains the rules for the 6G blacklist produced by Jeff Starr:
|
859 |
+
* https://perishablepress.com/6g/
|
860 |
+
*/
|
861 |
+
static function getrules_6g_blacklist()
|
862 |
+
{
|
863 |
+
global $aio_wp_security;
|
864 |
+
$rules = '';
|
865 |
+
if ($aio_wp_security->configs->get_value('aiowps_enable_6g_firewall') == '1') {
|
866 |
+
$rules .= AIOWPSecurity_Utility_Htaccess::$six_g_blacklist_marker_start . PHP_EOL; //Add feature marker start
|
867 |
+
|
868 |
+
$rules .= '# 6G BLACKLIST/FIREWALL (2016)
|
869 |
+
# @ https://perishablepress.com/6g/
|
870 |
+
|
871 |
+
# 6G:[QUERY STRINGS]
|
872 |
+
<IfModule mod_rewrite.c>
|
873 |
+
RewriteEngine On
|
874 |
+
RewriteCond %{QUERY_STRING} (eval\() [NC,OR]
|
875 |
+
RewriteCond %{QUERY_STRING} (127\.0\.0\.1) [NC,OR]
|
876 |
+
RewriteCond %{QUERY_STRING} ([a-z0-9]{2000}) [NC,OR]
|
877 |
+
RewriteCond %{QUERY_STRING} (javascript:)(.*)(;) [NC,OR]
|
878 |
+
RewriteCond %{QUERY_STRING} (base64_encode)(.*)(\() [NC,OR]
|
879 |
+
RewriteCond %{QUERY_STRING} (GLOBALS|REQUEST)(=|\[|%) [NC,OR]
|
880 |
+
RewriteCond %{QUERY_STRING} (<|%3C)(.*)script(.*)(>|%3) [NC,OR]
|
881 |
+
RewriteCond %{QUERY_STRING} (\\|\.\.\.|\.\./|~|`|<|>|\|) [NC,OR]
|
882 |
+
RewriteCond %{QUERY_STRING} (boot\.ini|etc/passwd|self/environ) [NC,OR]
|
883 |
+
RewriteCond %{QUERY_STRING} (thumbs?(_editor|open)?|tim(thumb)?)\.php [NC,OR]
|
884 |
+
RewriteCond %{QUERY_STRING} (\'|\")(.*)(drop|insert|md5|select|union) [NC]
|
885 |
+
RewriteRule .* - [F]
|
886 |
+
</IfModule>
|
887 |
+
|
888 |
+
# 6G:[REQUEST METHOD]
|
889 |
+
<ifModule mod_rewrite.c>
|
890 |
+
RewriteCond %{REQUEST_METHOD} ^(connect|debug|delete|move|put|trace|track) [NC]
|
891 |
+
RewriteRule .* - [F]
|
892 |
+
</IfModule>
|
893 |
+
|
894 |
+
# 6G:[REFERRERS]
|
895 |
+
<IfModule mod_rewrite.c>
|
896 |
+
RewriteCond %{HTTP_REFERER} ([a-z0-9]{2000}) [NC,OR]
|
897 |
+
RewriteCond %{HTTP_REFERER} (semalt.com|todaperfeita) [NC]
|
898 |
+
RewriteRule .* - [F]
|
899 |
+
</IfModule>
|
900 |
+
|
901 |
+
# 6G:[REQUEST STRINGS]
|
902 |
+
<IfModule mod_alias.c>
|
903 |
+
RedirectMatch 403 (?i)([a-z0-9]{2000})
|
904 |
+
RedirectMatch 403 (?i)(https?|ftp|php):/
|
905 |
+
RedirectMatch 403 (?i)(base64_encode)(.*)(\()
|
906 |
+
RedirectMatch 403 (?i)(=\\\'|=\\%27|/\\\'/?)\.
|
907 |
+
RedirectMatch 403 (?i)/(\$(\&)?|\*|\"|\.|,|&|&?)/?$
|
908 |
+
RedirectMatch 403 (?i)(\{0\}|\(/\(|\.\.\.|\+\+\+|\\\"\\\")
|
909 |
+
RedirectMatch 403 (?i)(~|`|<|>|:|;|,|%|\\|\s|\{|\}|\[|\]|\|)
|
910 |
+
RedirectMatch 403 (?i)/(=|\$&|_mm|cgi-|etc/passwd|muieblack)
|
911 |
+
RedirectMatch 403 (?i)(&pws=0|_vti_|\(null\)|\{\$itemURL\}|echo(.*)kae|etc/passwd|eval\(|self/environ)
|
912 |
+
RedirectMatch 403 (?i)\.(aspx?|bash|bak?|cfg|cgi|dll|exe|git|hg|ini|jsp|log|mdb|out|sql|svn|swp|tar|rar|rdf)$
|
913 |
+
RedirectMatch 403 (?i)/(^$|(wp-)?config|mobiquo|phpinfo|shell|sqlpatch|thumb|thumb_editor|thumbopen|timthumb|webshell)\.php
|
914 |
+
</IfModule>
|
915 |
+
|
916 |
+
# 6G:[USER AGENTS]
|
917 |
+
<IfModule mod_setenvif.c>
|
918 |
+
SetEnvIfNoCase User-Agent ([a-z0-9]{2000}) bad_bot
|
919 |
+
SetEnvIfNoCase User-Agent (archive.org|binlar|casper|checkpriv|choppy|clshttp|cmsworld|diavol|dotbot|extract|feedfinder|flicky|g00g1e|harvest|heritrix|httrack|kmccrew|loader|miner|nikto|nutch|planetwork|postrank|purebot|pycurl|python|seekerspider|siclab|skygrid|sqlmap|sucker|turnit|vikspider|winhttp|xxxyy|youda|zmeu|zune) bad_bot
|
920 |
+
<limit GET POST PUT>
|
921 |
+
Order Allow,Deny
|
922 |
+
Allow from all
|
923 |
+
Deny from env=bad_bot
|
924 |
+
</limit>
|
925 |
+
</IfModule>' . PHP_EOL;
|
926 |
+
$rules .= AIOWPSecurity_Utility_Htaccess::$six_g_blacklist_marker_end . PHP_EOL; //Add feature marker end
|
927 |
+
}
|
928 |
+
|
929 |
+
return $rules;
|
930 |
+
}
|
931 |
+
|
932 |
/*
|
933 |
* This function will write some directives to block all comments which do not originate from the blog's domain
|
934 |
* OR if the user agent is empty. All blocked requests will be redirected to 127.0.0.1
|
938 |
global $aio_wp_security;
|
939 |
$rules = '';
|
940 |
if ($aio_wp_security->configs->get_value('aiowps_enable_spambot_blocking') == '1') {
|
941 |
+
$url_string = AIOWPSecurity_Utility_Htaccess::return_regularized_url(AIOWPSEC_WP_HOME_URL);
|
942 |
if ($url_string == FALSE) {
|
943 |
+
$url_string = AIOWPSEC_WP_HOME_URL;
|
944 |
}
|
945 |
$rules .= AIOWPSecurity_Utility_Htaccess::$block_spambots_marker_start . PHP_EOL; //Add feature marker start
|
946 |
$rules .= '<IfModule mod_rewrite.c>
|
964 |
global $aio_wp_security;
|
965 |
$rules = '';
|
966 |
if ($aio_wp_security->configs->get_value('aiowps_prevent_hotlinking') == '1') {
|
967 |
+
$url_string = AIOWPSecurity_Utility_Htaccess::return_regularized_url(AIOWPSEC_WP_HOME_URL);
|
968 |
if ($url_string == FALSE) {
|
969 |
+
$url_string = AIOWPSEC_WP_HOME_URL;
|
970 |
}
|
971 |
$rules .= AIOWPSecurity_Utility_Htaccess::$prevent_image_hotlinks_marker_start . PHP_EOL; //Add feature marker start
|
972 |
$rules .= '<IfModule mod_rewrite.c>
|
classes/wp-security-utility.php
CHANGED
@@ -2,106 +2,105 @@
|
|
2 |
|
3 |
class AIOWPSecurity_Utility
|
4 |
{
|
5 |
-
function __construct()
|
|
|
6 |
//NOP
|
7 |
}
|
8 |
-
|
9 |
-
static function get_current_page_url()
|
10 |
{
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
|
|
21 |
}
|
22 |
-
|
23 |
-
static function redirect_to_url($url
|
24 |
{
|
25 |
-
if(empty($url)){
|
26 |
echo "<br /><strong>Error! The URL value is empty. Please specify a correct URL value to redirect to!</strong>";
|
27 |
exit;
|
28 |
}
|
29 |
-
if (!headers_sent()){
|
30 |
header('Location: ' . $url);
|
|
|
|
|
31 |
}
|
32 |
-
|
33 |
-
echo '<meta http-equiv="refresh" content="'.$delay.';url='.$url.'" />';
|
34 |
-
}
|
35 |
-
if($exit == '1'){
|
36 |
exit;
|
37 |
}
|
38 |
}
|
39 |
|
40 |
static function get_logout_url_with_after_logout_url_value($after_logout_url)
|
41 |
{
|
42 |
-
return AIOWPSEC_WP_URL.'?aiowpsec_do_log_out=1&after_logout='
|
43 |
}
|
44 |
-
|
45 |
/*
|
46 |
* Checks if a particular username exists in the WP Users table
|
47 |
*/
|
48 |
-
static function check_user_exists($username)
|
49 |
{
|
50 |
global $wpdb;
|
51 |
|
52 |
//if username is empty just return false
|
53 |
-
if (
|
54 |
return false;
|
55 |
}
|
56 |
-
|
57 |
//If multisite
|
58 |
-
if (AIOWPSecurity_Utility::is_multisite_install()){
|
59 |
$blog_id = get_current_blog_id();
|
60 |
-
$admin_users = get_users('blog_id='
|
61 |
$acct_name_exists = false;
|
62 |
-
foreach ($admin_users as $user)
|
63 |
-
|
64 |
-
if ($user->user_login == $username){
|
65 |
$acct_name_exists = true;
|
66 |
break;
|
67 |
}
|
68 |
}
|
69 |
return $acct_name_exists;
|
70 |
}
|
71 |
-
|
72 |
//check users table
|
73 |
-
$sanitized_username = sanitize_text_field(
|
74 |
-
$sql_1 = $wpdb->prepare(
|
75 |
-
$user_login = $wpdb->get_var(
|
76 |
-
if (
|
77 |
$users_table_value_exists = true;
|
78 |
-
}
|
79 |
-
else {
|
80 |
//make sure that the sanitized username is an integer before comparing it to the users table's ID column
|
81 |
-
$sanitized_username_is_an_integer = (
|
82 |
-
if (
|
83 |
-
$sql_2 = $wpdb->prepare(
|
84 |
-
$userid = $wpdb->get_var(
|
85 |
-
$users_table_value_exists = (
|
86 |
-
}
|
87 |
-
else {
|
88 |
$users_table_value_exists = false;
|
89 |
}
|
90 |
}
|
91 |
return $users_table_value_exists;
|
92 |
|
93 |
}
|
94 |
-
|
95 |
/*
|
96 |
* This function will return a list of user accounts which have login and nick names which are identical
|
97 |
*/
|
98 |
-
static function check_identical_login_and_nick_names()
|
|
|
99 |
global $wpdb;
|
100 |
-
$accounts_found = $wpdb->get_results(
|
101 |
return $accounts_found;
|
102 |
}
|
103 |
|
104 |
-
|
105 |
static function add_query_data_to_url($url, $name, $value)
|
106 |
{
|
107 |
if (strpos($url, '?') === false) {
|
@@ -109,11 +108,11 @@ class AIOWPSecurity_Utility
|
|
109 |
} else {
|
110 |
$url .= '&';
|
111 |
}
|
112 |
-
$url .= $name . '='. urlencode($value);
|
113 |
return $url;
|
114 |
}
|
115 |
|
116 |
-
|
117 |
/*
|
118 |
* Generates a random alpha-numeric number
|
119 |
*/
|
@@ -128,8 +127,8 @@ class AIOWPSecurity_Utility
|
|
128 |
}
|
129 |
return $string;
|
130 |
}
|
131 |
-
|
132 |
-
|
133 |
/*
|
134 |
* Generates a random number using a-z characters
|
135 |
*/
|
@@ -144,42 +143,42 @@ class AIOWPSecurity_Utility
|
|
144 |
}
|
145 |
return $string;
|
146 |
}
|
147 |
-
|
148 |
static function set_cookie_value($cookie_name, $cookie_value, $expiry_seconds = 86400, $path = '/', $cookie_domain = '')
|
149 |
{
|
150 |
$expiry_time = time() + intval($expiry_seconds);
|
151 |
-
if(empty($cookie_domain)){
|
152 |
$cookie_domain = COOKIE_DOMAIN;
|
153 |
}
|
154 |
setcookie($cookie_name, $cookie_value, $expiry_time, $path, $cookie_domain);
|
155 |
}
|
156 |
-
|
157 |
static function get_cookie_value($cookie_name)
|
158 |
{
|
159 |
-
if(isset($_COOKIE[$cookie_name])){
|
160 |
return $_COOKIE[$cookie_name];
|
161 |
}
|
162 |
return "";
|
163 |
}
|
164 |
-
|
165 |
static function is_multisite_install()
|
166 |
{
|
167 |
-
|
168 |
return true;
|
169 |
-
|
170 |
return false;
|
171 |
-
|
172 |
}
|
173 |
-
|
174 |
//This is a general yellow box message for when we want to suppress a feature's config items because site is subsite of multi-site
|
175 |
static function display_multisite_message()
|
176 |
{
|
177 |
echo '<div class="aio_yellow_box">';
|
178 |
-
echo '<p>'.__('The plugin has detected that you are using a Multi-Site WordPress installation.', 'all-in-one-wp-security-and-firewall').'</p>
|
179 |
-
<p>'.__('This feature can only be configured by the "superadmin" on the main site.', 'all-in-one-wp-security-and-firewall').'</p>';
|
180 |
echo '</div>';
|
181 |
}
|
182 |
-
|
183 |
/*
|
184 |
* Modifies the wp-config.php file to disable PHP file editing from the admin panel
|
185 |
* This func will add the following code:
|
@@ -191,63 +190,54 @@ class AIOWPSecurity_Utility
|
|
191 |
{
|
192 |
global $aio_wp_security;
|
193 |
$edit_file_config_entry_exists = false;
|
194 |
-
|
195 |
//Config file path
|
196 |
$config_file = AIOWPSecurity_Utility_File::get_wp_config_file_path();
|
197 |
|
198 |
//Get wp-config.php file contents so we can check if the "DISALLOW_FILE_EDIT" variable already exists
|
199 |
$config_contents = file($config_file);
|
200 |
|
201 |
-
foreach ($config_contents as $line_num => $line)
|
202 |
-
|
203 |
-
if (strpos($line, "'DISALLOW_FILE_EDIT', false"))
|
204 |
-
{
|
205 |
$config_contents[$line_num] = str_replace('false', 'true', $line);
|
206 |
$edit_file_config_entry_exists = true;
|
207 |
//$this->show_msg_updated(__('Settings Saved - The ability to edit PHP files via the admin the panel has been DISABLED.', 'all-in-one-wp-security-and-firewall'));
|
208 |
-
} else if(strpos($line, "'DISALLOW_FILE_EDIT', true"))
|
209 |
-
{
|
210 |
$edit_file_config_entry_exists = true;
|
211 |
//$this->show_msg_updated(__('Your system config file is already configured to disallow PHP file editing.', 'all-in-one-wp-security-and-firewall'));
|
212 |
return true;
|
213 |
-
|
214 |
}
|
215 |
-
|
216 |
//For wp-config.php files originating from early WP versions we will remove the closing php tag
|
217 |
-
if (strpos($line, "?>") !== false)
|
218 |
-
{
|
219 |
$config_contents[$line_num] = str_replace("?>", "", $line);
|
220 |
}
|
221 |
-
|
222 |
-
|
223 |
-
if (!$edit_file_config_entry_exists)
|
224 |
-
{
|
225 |
//Construct the config code which we will insert into wp-config.php
|
226 |
$new_snippet = '//Disable File Edits' . PHP_EOL;
|
227 |
$new_snippet .= 'define(\'DISALLOW_FILE_EDIT\', true);';
|
228 |
$config_contents[] = $new_snippet; //Append the new snippet to the end of the array
|
229 |
}
|
230 |
-
|
231 |
//Make a backup of the config file
|
232 |
-
if(!AIOWPSecurity_Utility_File::backup_and_rename_wp_config($config_file))
|
233 |
-
{
|
234 |
AIOWPSecurity_Admin_Menu::show_msg_error_st(__('Failed to make a backup of the wp-config.php file. This operation will not go ahead.', 'all-in-one-wp-security-and-firewall'));
|
235 |
//$aio_wp_security->debug_logger->log_debug("Disable PHP File Edit - Failed to make a backup of the wp-config.php file.",4);
|
236 |
return false;
|
237 |
-
}
|
238 |
-
else{
|
239 |
//$this->show_msg_updated(__('A backup copy of your wp-config.php file was created successfully....', 'all-in-one-wp-security-and-firewall'));
|
240 |
}
|
241 |
|
242 |
//Now let's modify the wp-config.php file
|
243 |
-
if (AIOWPSecurity_Utility_File::write_content_to_file($config_file, $config_contents))
|
244 |
-
{
|
245 |
//$this->show_msg_updated(__('Settings Saved - Your system is now configured to not allow PHP file editing.', 'all-in-one-wp-security-and-firewall'));
|
246 |
return true;
|
247 |
-
}else
|
248 |
-
{
|
249 |
//$this->show_msg_error(__('Operation failed! Unable to modify wp-config.php file!', 'all-in-one-wp-security-and-firewall'));
|
250 |
-
$aio_wp_security->debug_logger->log_debug("Disable PHP File Edit - Unable to modify wp-config.php",4);
|
251 |
return false;
|
252 |
}
|
253 |
}
|
@@ -257,64 +247,59 @@ class AIOWPSecurity_Utility
|
|
257 |
* This func will modify the following code by replacing "true" with "false":
|
258 |
* define('DISALLOW_FILE_EDIT', true);
|
259 |
*/
|
260 |
-
|
261 |
static function enable_file_edits()
|
262 |
{
|
263 |
global $aio_wp_security;
|
264 |
$edit_file_config_entry_exists = false;
|
265 |
-
|
266 |
//Config file path
|
267 |
$config_file = AIOWPSecurity_Utility_File::get_wp_config_file_path();
|
268 |
|
269 |
//Get wp-config.php file contents
|
270 |
$config_contents = file($config_file);
|
271 |
-
|
272 |
-
|
273 |
-
if (strpos($line, "'DISALLOW_FILE_EDIT', true"))
|
274 |
-
{
|
275 |
$config_contents[$line_num] = str_replace('true', 'false', $line);
|
276 |
$edit_file_config_entry_exists = true;
|
277 |
-
} else if(strpos($line, "'DISALLOW_FILE_EDIT', false"))
|
278 |
-
{
|
279 |
$edit_file_config_entry_exists = true;
|
280 |
//$this->show_msg_updated(__('Your system config file is already configured to allow PHP file editing.', 'all-in-one-wp-security-and-firewall'));
|
281 |
return true;
|
282 |
}
|
283 |
}
|
284 |
-
|
285 |
-
if (!$edit_file_config_entry_exists)
|
286 |
-
{
|
287 |
//if the DISALLOW_FILE_EDIT settings don't exist in wp-config.php then we don't need to do anything
|
288 |
//$this->show_msg_updated(__('Your system config file is already configured to allow PHP file editing.', 'all-in-one-wp-security-and-firewall'));
|
289 |
return true;
|
290 |
-
} else
|
291 |
-
{
|
292 |
//Now let's modify the wp-config.php file
|
293 |
-
if (AIOWPSecurity_Utility_File::write_content_to_file($config_file, $config_contents))
|
294 |
-
{
|
295 |
//$this->show_msg_updated(__('Settings Saved - Your system is now configured to allow PHP file editing.', 'all-in-one-wp-security-and-firewall'));
|
296 |
return true;
|
297 |
-
}else
|
298 |
-
{
|
299 |
//$this->show_msg_error(__('Operation failed! Unable to modify wp-config.php file!', 'all-in-one-wp-security-and-firewall'));
|
300 |
//$aio_wp_security->debug_logger->log_debug("Disable PHP File Edit - Unable to modify wp-config.php",4);
|
301 |
return false;
|
302 |
}
|
303 |
}
|
304 |
}
|
305 |
-
|
306 |
-
|
307 |
/**
|
308 |
* Inserts event logs to the database
|
309 |
* For now we are using for 404 events but in future will expand for other events
|
310 |
*
|
311 |
-
* @param string $event_type: Event type, eg, 404 (see below for list of event types)
|
312 |
* @param string $username (optional): username
|
313 |
-
*
|
314 |
-
* Event types: 404 (...add more as we expand this)
|
315 |
*
|
316 |
-
|
317 |
-
|
|
|
|
|
|
|
|
|
318 |
{
|
319 |
global $wpdb, $aio_wp_security;
|
320 |
|
@@ -323,50 +308,51 @@ class AIOWPSecurity_Utility
|
|
323 |
$ip_or_host = '';
|
324 |
$referer_info = '';
|
325 |
$event_data = '';
|
326 |
-
|
327 |
$events_table_name = AIOWPSEC_TBL_EVENTS;
|
328 |
-
|
329 |
$ip_or_host = AIOWPSecurity_Utility_IP::get_user_ip_address(); //Get the IP address of user
|
330 |
$username = sanitize_user($username);
|
331 |
-
|
332 |
-
if($user)
|
333 |
-
{
|
334 |
//If valid user set variables for DB storage later on
|
335 |
$user_id = (absint($user->ID) > 0) ? $user->ID : 0;
|
336 |
-
}else{
|
337 |
//If the login attempt was made using a non-existent user then let's set user_id to blank and record the attempted user login name for DB storage later on
|
338 |
$user_id = 0;
|
339 |
}
|
340 |
-
|
341 |
-
if ($event_type == '404'){
|
342 |
//if 404 event get some relevant data
|
343 |
-
$url = isset($_SERVER['REQUEST_URI'])?esc_attr($_SERVER['REQUEST_URI']):'';
|
344 |
-
$referer_info = isset($_SERVER['HTTP_REFERER'])?esc_attr($_SERVER['HTTP_REFERER']):'';
|
345 |
}
|
346 |
|
347 |
$data = array(
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
|
|
|
358 |
//log to database
|
359 |
$result = $wpdb->insert($events_table_name, $data);
|
360 |
-
if ($result === FALSE)
|
361 |
-
|
362 |
-
|
363 |
}
|
|
|
364 |
}
|
365 |
-
|
366 |
/**
|
367 |
* Checks if IP address is locked
|
368 |
*
|
369 |
-
* @param string $ip: ip address
|
370 |
* @returns TRUE if locked, FALSE otherwise
|
371 |
*
|
372 |
**/
|
@@ -375,15 +361,15 @@ class AIOWPSecurity_Utility
|
|
375 |
global $wpdb;
|
376 |
$login_lockdown_table = AIOWPSEC_TBL_LOGIN_LOCKDOWN;
|
377 |
$locked_ip = $wpdb->get_row("SELECT * FROM $login_lockdown_table " .
|
378 |
-
|
379 |
-
|
380 |
-
if($locked_ip != NULL){
|
381 |
return TRUE;
|
382 |
-
}else{
|
383 |
return FALSE;
|
384 |
}
|
385 |
-
}
|
386 |
-
|
387 |
/**
|
388 |
* Returns list of IP addresses locked out
|
389 |
*
|
@@ -395,25 +381,25 @@ class AIOWPSecurity_Utility
|
|
395 |
global $wpdb;
|
396 |
$login_lockdown_table = AIOWPSEC_TBL_LOGIN_LOCKDOWN;
|
397 |
$locked_ips = $wpdb->get_results("SELECT * FROM $login_lockdown_table " .
|
398 |
-
|
399 |
-
if($locked_ips != NULL){
|
400 |
return $locked_ips;
|
401 |
-
}else{
|
402 |
return FALSE;
|
403 |
}
|
404 |
-
}
|
405 |
-
|
406 |
-
|
407 |
/*
|
408 |
* Locks an IP address - Adds an entry to the aiowps_lockdowns table
|
409 |
*/
|
410 |
-
static function lock_IP($ip, $lock_reason='', $username='')
|
411 |
{
|
412 |
global $wpdb, $aio_wp_security;
|
413 |
$login_lockdown_table = AIOWPSEC_TBL_LOGIN_LOCKDOWN;
|
414 |
$lockout_time_length = $aio_wp_security->configs->get_value('aiowps_lockout_time_length'); //TODO add a setting for this feature
|
415 |
$username = sanitize_user($username);
|
416 |
-
|
417 |
|
418 |
if (FALSE == $user) {
|
419 |
// Not logged in.
|
@@ -427,18 +413,15 @@ class AIOWPSecurity_Utility
|
|
427 |
|
428 |
$ip_str = esc_sql($ip);
|
429 |
$insert = "INSERT INTO " . $login_lockdown_table . " (user_id, user_login, lockdown_date, release_date, failed_login_IP, lock_reason) " .
|
430 |
-
|
431 |
-
|
432 |
$result = $wpdb->query($insert);
|
433 |
-
if ($result > 0)
|
434 |
-
{
|
435 |
-
|
436 |
-
else if ($result === FALSE)
|
437 |
-
{
|
438 |
-
$aio_wp_security->debug_logger->log_debug("lock_IP: Error inserting record into ".$login_lockdown_table,4);//Log the highly unlikely event of DB error
|
439 |
}
|
440 |
}
|
441 |
-
|
442 |
/*
|
443 |
* Returns an array of blog_ids for a multisite install
|
444 |
* If site is not multisite returns empty array
|
@@ -448,14 +431,14 @@ class AIOWPSecurity_Utility
|
|
448 |
global $wpdb, $aio_wp_security;
|
449 |
if (AIOWPSecurity_Utility::is_multisite_install()) {
|
450 |
global $wpdb;
|
451 |
-
$blog_ids = $wpdb->get_col("SELECT blog_id FROM "
|
452 |
-
}else{
|
453 |
$blog_ids = array();
|
454 |
}
|
455 |
return $blog_ids;
|
456 |
}
|
457 |
-
|
458 |
-
|
459 |
//This function will delete the oldest rows from a table which are over the max amount of rows specified
|
460 |
static function cleanup_table($table_name, $max_rows = '10000')
|
461 |
{
|
@@ -463,9 +446,9 @@ class AIOWPSecurity_Utility
|
|
463 |
|
464 |
$num_rows = $wpdb->get_var("select count(*) from $table_name");
|
465 |
$result = true;
|
466 |
-
if($num_rows > $max_rows){
|
467 |
//if the table has more than max entries delete oldest rows
|
468 |
-
|
469 |
$del_sql = "DELETE FROM $table_name
|
470 |
WHERE id <= (
|
471 |
SELECT id
|
@@ -476,38 +459,31 @@ class AIOWPSecurity_Utility
|
|
476 |
LIMIT 1 OFFSET $max_rows
|
477 |
) foo_tmp
|
478 |
)";
|
479 |
-
|
480 |
$result = $wpdb->query($del_sql);
|
481 |
-
if($result === false){
|
482 |
-
$aio_wp_security->debug_logger->log_debug("AIOWPSecurity_Utility::cleanup_table failed for table name: "
|
483 |
}
|
484 |
}
|
485 |
-
return ($result === false)?false:true;
|
486 |
}
|
487 |
|
488 |
//Gets server type. Returns -1 if server is not supported
|
489 |
static function get_server_type()
|
490 |
{
|
491 |
//figure out what server they're using
|
492 |
-
if (strstr(strtolower(filter_var($_SERVER['SERVER_SOFTWARE'], FILTER_SANITIZE_STRING)), 'apache'))
|
493 |
-
{
|
494 |
return 'apache';
|
495 |
-
}
|
496 |
-
else if (strstr(strtolower(filter_var($_SERVER['SERVER_SOFTWARE'], FILTER_SANITIZE_STRING)), 'nginx'))
|
497 |
-
{
|
498 |
return 'nginx';
|
499 |
-
}
|
500 |
-
else if (strstr(strtolower(filter_var($_SERVER['SERVER_SOFTWARE'], FILTER_SANITIZE_STRING)), 'litespeed'))
|
501 |
-
{
|
502 |
return 'litespeed';
|
503 |
-
}
|
504 |
-
else
|
505 |
-
{ //unsupported server
|
506 |
return -1;
|
507 |
}
|
508 |
-
|
509 |
}
|
510 |
-
|
511 |
/*
|
512 |
* Checks if the string exists in the array key value of the provided array. If it doesn't exist, it returns the first key element from the valid values.
|
513 |
*/
|
@@ -515,10 +491,10 @@ class AIOWPSecurity_Utility
|
|
515 |
{
|
516 |
$keys = array_keys($valid_values);
|
517 |
$keys = array_map('strtolower', $keys);
|
518 |
-
if (
|
519 |
return $to_check;
|
520 |
}
|
521 |
return reset($keys);//Return he first element from the valid values
|
522 |
}
|
523 |
-
|
524 |
}
|
2 |
|
3 |
class AIOWPSecurity_Utility
|
4 |
{
|
5 |
+
function __construct()
|
6 |
+
{
|
7 |
//NOP
|
8 |
}
|
9 |
+
|
10 |
+
static function get_current_page_url()
|
11 |
{
|
12 |
+
$pageURL = 'http';
|
13 |
+
if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") {
|
14 |
+
$pageURL .= "s";
|
15 |
+
}
|
16 |
+
$pageURL .= "://";
|
17 |
+
if ($_SERVER["SERVER_PORT"] != "80") {
|
18 |
+
$pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"];
|
19 |
+
} else {
|
20 |
+
$pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
|
21 |
+
}
|
22 |
+
return $pageURL;
|
23 |
}
|
24 |
+
|
25 |
+
static function redirect_to_url($url, $delay = '0', $exit = '1')
|
26 |
{
|
27 |
+
if (empty($url)) {
|
28 |
echo "<br /><strong>Error! The URL value is empty. Please specify a correct URL value to redirect to!</strong>";
|
29 |
exit;
|
30 |
}
|
31 |
+
if (!headers_sent()) {
|
32 |
header('Location: ' . $url);
|
33 |
+
} else {
|
34 |
+
echo '<meta http-equiv="refresh" content="' . $delay . ';url=' . $url . '" />';
|
35 |
}
|
36 |
+
if ($exit == '1') {
|
|
|
|
|
|
|
37 |
exit;
|
38 |
}
|
39 |
}
|
40 |
|
41 |
static function get_logout_url_with_after_logout_url_value($after_logout_url)
|
42 |
{
|
43 |
+
return AIOWPSEC_WP_URL . '?aiowpsec_do_log_out=1&after_logout=' . $after_logout_url;
|
44 |
}
|
45 |
+
|
46 |
/*
|
47 |
* Checks if a particular username exists in the WP Users table
|
48 |
*/
|
49 |
+
static function check_user_exists($username)
|
50 |
{
|
51 |
global $wpdb;
|
52 |
|
53 |
//if username is empty just return false
|
54 |
+
if ($username == '') {
|
55 |
return false;
|
56 |
}
|
57 |
+
|
58 |
//If multisite
|
59 |
+
if (AIOWPSecurity_Utility::is_multisite_install()) {
|
60 |
$blog_id = get_current_blog_id();
|
61 |
+
$admin_users = get_users('blog_id=' . $blog_id . 'orderby=login&role=administrator');
|
62 |
$acct_name_exists = false;
|
63 |
+
foreach ($admin_users as $user) {
|
64 |
+
if ($user->user_login == $username) {
|
|
|
65 |
$acct_name_exists = true;
|
66 |
break;
|
67 |
}
|
68 |
}
|
69 |
return $acct_name_exists;
|
70 |
}
|
71 |
+
|
72 |
//check users table
|
73 |
+
$sanitized_username = sanitize_text_field($username);
|
74 |
+
$sql_1 = $wpdb->prepare("SELECT user_login FROM $wpdb->users WHERE user_login=%s", $sanitized_username);
|
75 |
+
$user_login = $wpdb->get_var($sql_1);
|
76 |
+
if ($user_login == $sanitized_username) {
|
77 |
$users_table_value_exists = true;
|
78 |
+
} else {
|
|
|
79 |
//make sure that the sanitized username is an integer before comparing it to the users table's ID column
|
80 |
+
$sanitized_username_is_an_integer = (1 === preg_match('/^\d+$/', $sanitized_username)) ? true : false;
|
81 |
+
if ($sanitized_username_is_an_integer) {
|
82 |
+
$sql_2 = $wpdb->prepare("SELECT ID FROM $wpdb->users WHERE ID=%d", intval($sanitized_username));
|
83 |
+
$userid = $wpdb->get_var($sql_2);
|
84 |
+
$users_table_value_exists = ($userid == $sanitized_username) ? true : false;
|
85 |
+
} else {
|
|
|
86 |
$users_table_value_exists = false;
|
87 |
}
|
88 |
}
|
89 |
return $users_table_value_exists;
|
90 |
|
91 |
}
|
92 |
+
|
93 |
/*
|
94 |
* This function will return a list of user accounts which have login and nick names which are identical
|
95 |
*/
|
96 |
+
static function check_identical_login_and_nick_names()
|
97 |
+
{
|
98 |
global $wpdb;
|
99 |
+
$accounts_found = $wpdb->get_results("SELECT ID,user_login FROM `" . $wpdb->users . "` WHERE user_login<=>display_name;", ARRAY_A);
|
100 |
return $accounts_found;
|
101 |
}
|
102 |
|
103 |
+
|
104 |
static function add_query_data_to_url($url, $name, $value)
|
105 |
{
|
106 |
if (strpos($url, '?') === false) {
|
108 |
} else {
|
109 |
$url .= '&';
|
110 |
}
|
111 |
+
$url .= $name . '=' . urlencode($value);
|
112 |
return $url;
|
113 |
}
|
114 |
|
115 |
+
|
116 |
/*
|
117 |
* Generates a random alpha-numeric number
|
118 |
*/
|
127 |
}
|
128 |
return $string;
|
129 |
}
|
130 |
+
|
131 |
+
|
132 |
/*
|
133 |
* Generates a random number using a-z characters
|
134 |
*/
|
143 |
}
|
144 |
return $string;
|
145 |
}
|
146 |
+
|
147 |
static function set_cookie_value($cookie_name, $cookie_value, $expiry_seconds = 86400, $path = '/', $cookie_domain = '')
|
148 |
{
|
149 |
$expiry_time = time() + intval($expiry_seconds);
|
150 |
+
if (empty($cookie_domain)) {
|
151 |
$cookie_domain = COOKIE_DOMAIN;
|
152 |
}
|
153 |
setcookie($cookie_name, $cookie_value, $expiry_time, $path, $cookie_domain);
|
154 |
}
|
155 |
+
|
156 |
static function get_cookie_value($cookie_name)
|
157 |
{
|
158 |
+
if (isset($_COOKIE[$cookie_name])) {
|
159 |
return $_COOKIE[$cookie_name];
|
160 |
}
|
161 |
return "";
|
162 |
}
|
163 |
+
|
164 |
static function is_multisite_install()
|
165 |
{
|
166 |
+
if (function_exists('is_multisite') && is_multisite()) {
|
167 |
return true;
|
168 |
+
} else {
|
169 |
return false;
|
170 |
+
}
|
171 |
}
|
172 |
+
|
173 |
//This is a general yellow box message for when we want to suppress a feature's config items because site is subsite of multi-site
|
174 |
static function display_multisite_message()
|
175 |
{
|
176 |
echo '<div class="aio_yellow_box">';
|
177 |
+
echo '<p>' . __('The plugin has detected that you are using a Multi-Site WordPress installation.', 'all-in-one-wp-security-and-firewall') . '</p>
|
178 |
+
<p>' . __('This feature can only be configured by the "superadmin" on the main site.', 'all-in-one-wp-security-and-firewall') . '</p>';
|
179 |
echo '</div>';
|
180 |
}
|
181 |
+
|
182 |
/*
|
183 |
* Modifies the wp-config.php file to disable PHP file editing from the admin panel
|
184 |
* This func will add the following code:
|
190 |
{
|
191 |
global $aio_wp_security;
|
192 |
$edit_file_config_entry_exists = false;
|
193 |
+
|
194 |
//Config file path
|
195 |
$config_file = AIOWPSecurity_Utility_File::get_wp_config_file_path();
|
196 |
|
197 |
//Get wp-config.php file contents so we can check if the "DISALLOW_FILE_EDIT" variable already exists
|
198 |
$config_contents = file($config_file);
|
199 |
|
200 |
+
foreach ($config_contents as $line_num => $line) {
|
201 |
+
if (strpos($line, "'DISALLOW_FILE_EDIT', false")) {
|
|
|
|
|
202 |
$config_contents[$line_num] = str_replace('false', 'true', $line);
|
203 |
$edit_file_config_entry_exists = true;
|
204 |
//$this->show_msg_updated(__('Settings Saved - The ability to edit PHP files via the admin the panel has been DISABLED.', 'all-in-one-wp-security-and-firewall'));
|
205 |
+
} else if (strpos($line, "'DISALLOW_FILE_EDIT', true")) {
|
|
|
206 |
$edit_file_config_entry_exists = true;
|
207 |
//$this->show_msg_updated(__('Your system config file is already configured to disallow PHP file editing.', 'all-in-one-wp-security-and-firewall'));
|
208 |
return true;
|
209 |
+
|
210 |
}
|
211 |
+
|
212 |
//For wp-config.php files originating from early WP versions we will remove the closing php tag
|
213 |
+
if (strpos($line, "?>") !== false) {
|
|
|
214 |
$config_contents[$line_num] = str_replace("?>", "", $line);
|
215 |
}
|
216 |
+
}
|
217 |
+
|
218 |
+
if (!$edit_file_config_entry_exists) {
|
|
|
219 |
//Construct the config code which we will insert into wp-config.php
|
220 |
$new_snippet = '//Disable File Edits' . PHP_EOL;
|
221 |
$new_snippet .= 'define(\'DISALLOW_FILE_EDIT\', true);';
|
222 |
$config_contents[] = $new_snippet; //Append the new snippet to the end of the array
|
223 |
}
|
224 |
+
|
225 |
//Make a backup of the config file
|
226 |
+
if (!AIOWPSecurity_Utility_File::backup_and_rename_wp_config($config_file)) {
|
|
|
227 |
AIOWPSecurity_Admin_Menu::show_msg_error_st(__('Failed to make a backup of the wp-config.php file. This operation will not go ahead.', 'all-in-one-wp-security-and-firewall'));
|
228 |
//$aio_wp_security->debug_logger->log_debug("Disable PHP File Edit - Failed to make a backup of the wp-config.php file.",4);
|
229 |
return false;
|
230 |
+
} else {
|
|
|
231 |
//$this->show_msg_updated(__('A backup copy of your wp-config.php file was created successfully....', 'all-in-one-wp-security-and-firewall'));
|
232 |
}
|
233 |
|
234 |
//Now let's modify the wp-config.php file
|
235 |
+
if (AIOWPSecurity_Utility_File::write_content_to_file($config_file, $config_contents)) {
|
|
|
236 |
//$this->show_msg_updated(__('Settings Saved - Your system is now configured to not allow PHP file editing.', 'all-in-one-wp-security-and-firewall'));
|
237 |
return true;
|
238 |
+
} else {
|
|
|
239 |
//$this->show_msg_error(__('Operation failed! Unable to modify wp-config.php file!', 'all-in-one-wp-security-and-firewall'));
|
240 |
+
$aio_wp_security->debug_logger->log_debug("Disable PHP File Edit - Unable to modify wp-config.php", 4);
|
241 |
return false;
|
242 |
}
|
243 |
}
|
247 |
* This func will modify the following code by replacing "true" with "false":
|
248 |
* define('DISALLOW_FILE_EDIT', true);
|
249 |
*/
|
250 |
+
|
251 |
static function enable_file_edits()
|
252 |
{
|
253 |
global $aio_wp_security;
|
254 |
$edit_file_config_entry_exists = false;
|
255 |
+
|
256 |
//Config file path
|
257 |
$config_file = AIOWPSecurity_Utility_File::get_wp_config_file_path();
|
258 |
|
259 |
//Get wp-config.php file contents
|
260 |
$config_contents = file($config_file);
|
261 |
+
foreach ($config_contents as $line_num => $line) {
|
262 |
+
if (strpos($line, "'DISALLOW_FILE_EDIT', true")) {
|
|
|
|
|
263 |
$config_contents[$line_num] = str_replace('true', 'false', $line);
|
264 |
$edit_file_config_entry_exists = true;
|
265 |
+
} else if (strpos($line, "'DISALLOW_FILE_EDIT', false")) {
|
|
|
266 |
$edit_file_config_entry_exists = true;
|
267 |
//$this->show_msg_updated(__('Your system config file is already configured to allow PHP file editing.', 'all-in-one-wp-security-and-firewall'));
|
268 |
return true;
|
269 |
}
|
270 |
}
|
271 |
+
|
272 |
+
if (!$edit_file_config_entry_exists) {
|
|
|
273 |
//if the DISALLOW_FILE_EDIT settings don't exist in wp-config.php then we don't need to do anything
|
274 |
//$this->show_msg_updated(__('Your system config file is already configured to allow PHP file editing.', 'all-in-one-wp-security-and-firewall'));
|
275 |
return true;
|
276 |
+
} else {
|
|
|
277 |
//Now let's modify the wp-config.php file
|
278 |
+
if (AIOWPSecurity_Utility_File::write_content_to_file($config_file, $config_contents)) {
|
|
|
279 |
//$this->show_msg_updated(__('Settings Saved - Your system is now configured to allow PHP file editing.', 'all-in-one-wp-security-and-firewall'));
|
280 |
return true;
|
281 |
+
} else {
|
|
|
282 |
//$this->show_msg_error(__('Operation failed! Unable to modify wp-config.php file!', 'all-in-one-wp-security-and-firewall'));
|
283 |
//$aio_wp_security->debug_logger->log_debug("Disable PHP File Edit - Unable to modify wp-config.php",4);
|
284 |
return false;
|
285 |
}
|
286 |
}
|
287 |
}
|
288 |
+
|
289 |
+
|
290 |
/**
|
291 |
* Inserts event logs to the database
|
292 |
* For now we are using for 404 events but in future will expand for other events
|
293 |
*
|
294 |
+
* @param string $event_type : Event type, eg, 404 (see below for list of event types)
|
295 |
* @param string $username (optional): username
|
|
|
|
|
296 |
*
|
297 |
+
* Event types: 404 (...add more as we expand this)
|
298 |
+
* @param $event_type
|
299 |
+
* @param string $username
|
300 |
+
* @return bool
|
301 |
+
*/
|
302 |
+
static function event_logger($event_type, $username = '')
|
303 |
{
|
304 |
global $wpdb, $aio_wp_security;
|
305 |
|
308 |
$ip_or_host = '';
|
309 |
$referer_info = '';
|
310 |
$event_data = '';
|
311 |
+
|
312 |
$events_table_name = AIOWPSEC_TBL_EVENTS;
|
313 |
+
|
314 |
$ip_or_host = AIOWPSecurity_Utility_IP::get_user_ip_address(); //Get the IP address of user
|
315 |
$username = sanitize_user($username);
|
316 |
+
$user = get_user_by('login', $username); //Returns WP_User object if exists
|
317 |
+
if ($user) {
|
|
|
318 |
//If valid user set variables for DB storage later on
|
319 |
$user_id = (absint($user->ID) > 0) ? $user->ID : 0;
|
320 |
+
} else {
|
321 |
//If the login attempt was made using a non-existent user then let's set user_id to blank and record the attempted user login name for DB storage later on
|
322 |
$user_id = 0;
|
323 |
}
|
324 |
+
|
325 |
+
if ($event_type == '404') {
|
326 |
//if 404 event get some relevant data
|
327 |
+
$url = isset($_SERVER['REQUEST_URI']) ? esc_attr($_SERVER['REQUEST_URI']) : '';
|
328 |
+
$referer_info = isset($_SERVER['HTTP_REFERER']) ? esc_attr($_SERVER['HTTP_REFERER']) : '';
|
329 |
}
|
330 |
|
331 |
$data = array(
|
332 |
+
'event_type' => $event_type,
|
333 |
+
'username' => $username,
|
334 |
+
'user_id' => $user_id,
|
335 |
+
'event_date' => current_time('mysql'),
|
336 |
+
'ip_or_host' => $ip_or_host,
|
337 |
+
'referer_info' => $referer_info,
|
338 |
+
'url' => $url,
|
339 |
+
'event_data' => '',
|
340 |
+
);
|
341 |
|
342 |
+
$data = apply_filters( 'filter_event_logger_data', $data );
|
343 |
//log to database
|
344 |
$result = $wpdb->insert($events_table_name, $data);
|
345 |
+
if ($result === FALSE) {
|
346 |
+
$aio_wp_security->debug_logger->log_debug("event_logger: Error inserting record into " . $events_table_name, 4);//Log the highly unlikely event of DB error
|
347 |
+
return false;
|
348 |
}
|
349 |
+
return true;
|
350 |
}
|
351 |
+
|
352 |
/**
|
353 |
* Checks if IP address is locked
|
354 |
*
|
355 |
+
* @param string $ip : ip address
|
356 |
* @returns TRUE if locked, FALSE otherwise
|
357 |
*
|
358 |
**/
|
361 |
global $wpdb;
|
362 |
$login_lockdown_table = AIOWPSEC_TBL_LOGIN_LOCKDOWN;
|
363 |
$locked_ip = $wpdb->get_row("SELECT * FROM $login_lockdown_table " .
|
364 |
+
"WHERE release_date > now() AND " .
|
365 |
+
"failed_login_ip = '" . esc_sql($ip) . "'", ARRAY_A);
|
366 |
+
if ($locked_ip != NULL) {
|
367 |
return TRUE;
|
368 |
+
} else {
|
369 |
return FALSE;
|
370 |
}
|
371 |
+
}
|
372 |
+
|
373 |
/**
|
374 |
* Returns list of IP addresses locked out
|
375 |
*
|
381 |
global $wpdb;
|
382 |
$login_lockdown_table = AIOWPSEC_TBL_LOGIN_LOCKDOWN;
|
383 |
$locked_ips = $wpdb->get_results("SELECT * FROM $login_lockdown_table " .
|
384 |
+
"WHERE release_date > now()", ARRAY_A);
|
385 |
+
if ($locked_ips != NULL) {
|
386 |
return $locked_ips;
|
387 |
+
} else {
|
388 |
return FALSE;
|
389 |
}
|
390 |
+
}
|
391 |
+
|
392 |
+
|
393 |
/*
|
394 |
* Locks an IP address - Adds an entry to the aiowps_lockdowns table
|
395 |
*/
|
396 |
+
static function lock_IP($ip, $lock_reason = '', $username = '')
|
397 |
{
|
398 |
global $wpdb, $aio_wp_security;
|
399 |
$login_lockdown_table = AIOWPSEC_TBL_LOGIN_LOCKDOWN;
|
400 |
$lockout_time_length = $aio_wp_security->configs->get_value('aiowps_lockout_time_length'); //TODO add a setting for this feature
|
401 |
$username = sanitize_user($username);
|
402 |
+
$user = get_user_by('login', $username); //Returns WP_User object if exists
|
403 |
|
404 |
if (FALSE == $user) {
|
405 |
// Not logged in.
|
413 |
|
414 |
$ip_str = esc_sql($ip);
|
415 |
$insert = "INSERT INTO " . $login_lockdown_table . " (user_id, user_login, lockdown_date, release_date, failed_login_IP, lock_reason) " .
|
416 |
+
"VALUES ('" . $user_id . "', '" . $username . "', now(), date_add(now(), INTERVAL " .
|
417 |
+
$lockout_time_length . " MINUTE), '" . $ip_str . "', '" . $lock_reason . "')";
|
418 |
$result = $wpdb->query($insert);
|
419 |
+
if ($result > 0) {
|
420 |
+
} else if ($result === FALSE) {
|
421 |
+
$aio_wp_security->debug_logger->log_debug("lock_IP: Error inserting record into " . $login_lockdown_table, 4);//Log the highly unlikely event of DB error
|
|
|
|
|
|
|
422 |
}
|
423 |
}
|
424 |
+
|
425 |
/*
|
426 |
* Returns an array of blog_ids for a multisite install
|
427 |
* If site is not multisite returns empty array
|
431 |
global $wpdb, $aio_wp_security;
|
432 |
if (AIOWPSecurity_Utility::is_multisite_install()) {
|
433 |
global $wpdb;
|
434 |
+
$blog_ids = $wpdb->get_col("SELECT blog_id FROM " . $wpdb->prefix . "blogs");
|
435 |
+
} else {
|
436 |
$blog_ids = array();
|
437 |
}
|
438 |
return $blog_ids;
|
439 |
}
|
440 |
+
|
441 |
+
|
442 |
//This function will delete the oldest rows from a table which are over the max amount of rows specified
|
443 |
static function cleanup_table($table_name, $max_rows = '10000')
|
444 |
{
|
446 |
|
447 |
$num_rows = $wpdb->get_var("select count(*) from $table_name");
|
448 |
$result = true;
|
449 |
+
if ($num_rows > $max_rows) {
|
450 |
//if the table has more than max entries delete oldest rows
|
451 |
+
|
452 |
$del_sql = "DELETE FROM $table_name
|
453 |
WHERE id <= (
|
454 |
SELECT id
|
459 |
LIMIT 1 OFFSET $max_rows
|
460 |
) foo_tmp
|
461 |
)";
|
462 |
+
|
463 |
$result = $wpdb->query($del_sql);
|
464 |
+
if ($result === false) {
|
465 |
+
$aio_wp_security->debug_logger->log_debug("AIOWPSecurity_Utility::cleanup_table failed for table name: " . $table_name, 4);
|
466 |
}
|
467 |
}
|
468 |
+
return ($result === false) ? false : true;
|
469 |
}
|
470 |
|
471 |
//Gets server type. Returns -1 if server is not supported
|
472 |
static function get_server_type()
|
473 |
{
|
474 |
//figure out what server they're using
|
475 |
+
if (strstr(strtolower(filter_var($_SERVER['SERVER_SOFTWARE'], FILTER_SANITIZE_STRING)), 'apache')) {
|
|
|
476 |
return 'apache';
|
477 |
+
} else if (strstr(strtolower(filter_var($_SERVER['SERVER_SOFTWARE'], FILTER_SANITIZE_STRING)), 'nginx')) {
|
|
|
|
|
478 |
return 'nginx';
|
479 |
+
} else if (strstr(strtolower(filter_var($_SERVER['SERVER_SOFTWARE'], FILTER_SANITIZE_STRING)), 'litespeed')) {
|
|
|
|
|
480 |
return 'litespeed';
|
481 |
+
} else { //unsupported server
|
|
|
|
|
482 |
return -1;
|
483 |
}
|
484 |
+
|
485 |
}
|
486 |
+
|
487 |
/*
|
488 |
* Checks if the string exists in the array key value of the provided array. If it doesn't exist, it returns the first key element from the valid values.
|
489 |
*/
|
491 |
{
|
492 |
$keys = array_keys($valid_values);
|
493 |
$keys = array_map('strtolower', $keys);
|
494 |
+
if (in_array($to_check, $keys)) {
|
495 |
return $to_check;
|
496 |
}
|
497 |
return reset($keys);//Return he first element from the valid values
|
498 |
}
|
499 |
+
|
500 |
}
|
css/wp-security-admin-styles.css
CHANGED
@@ -66,6 +66,17 @@
|
|
66 |
padding: 0 1em 0 1em;
|
67 |
}
|
68 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
69 |
.aio_success_with_icon {
|
70 |
background-image: url("../images/success.png");
|
71 |
background-repeat: no-repeat;
|
@@ -351,4 +362,8 @@
|
|
351 |
padding-right: 6.25%;
|
352 |
text-align: center;
|
353 |
color: darkorange;
|
|
|
|
|
|
|
|
|
354 |
}
|
66 |
padding: 0 1em 0 1em;
|
67 |
}
|
68 |
|
69 |
+
.aio_orange_box{
|
70 |
+
margin: 10px 0 15px;
|
71 |
+
background-color: #FFB900;
|
72 |
+
border-color: #D64500;
|
73 |
+
border-radius: 3px 3px 3px 3px;
|
74 |
+
border-style: solid;
|
75 |
+
border-width: 1px;
|
76 |
+
padding: 0 0 0 1em;
|
77 |
+
}
|
78 |
+
|
79 |
+
|
80 |
.aio_success_with_icon {
|
81 |
background-image: url("../images/success.png");
|
82 |
background-repeat: no-repeat;
|
362 |
padding-right: 6.25%;
|
363 |
text-align: center;
|
364 |
color: darkorange;
|
365 |
+
}
|
366 |
+
|
367 |
+
.aiowps_dashboard_table{
|
368 |
+
table-layout: fixed;
|
369 |
}
|
languages/all-in-one-wp-security-and-firewall-nl_NL.mo
ADDED
Binary file
|
languages/all-in-one-wp-security-and-firewall-nl_NL.po
ADDED
@@ -0,0 +1,4748 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: All In One WP Security vv3.7.2\n"
|
4 |
+
"Report-Msgid-Bugs-To: \n"
|
5 |
+
"POT-Creation-Date: \n"
|
6 |
+
"PO-Revision-Date: 2015-12-31 09:57+0100\n"
|
7 |
+
"Last-Translator: Jeroen van der Linde <jvanderlinde@angarde.nl>\n"
|
8 |
+
"Language-Team: \n"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
13 |
+
"X-Generator: Poedit 1.8.6\n"
|
14 |
+
"X-Poedit-SourceCharset: utf-8\n"
|
15 |
+
"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
|
16 |
+
"X-Poedit-Basepath: ..\n"
|
17 |
+
"X-Textdomain-Support: yes\n"
|
18 |
+
"Language: nl_NL\n"
|
19 |
+
"X-Poedit-SearchPath-0: .\n"
|
20 |
+
|
21 |
+
# @ default
|
22 |
+
#: admin/general/wp-security-list-table.php:178
|
23 |
+
msgid "No items found."
|
24 |
+
msgstr ""
|
25 |
+
|
26 |
+
# @ default
|
27 |
+
#: admin/general/wp-security-list-table.php:281
|
28 |
+
msgid "Bulk Actions"
|
29 |
+
msgstr ""
|
30 |
+
|
31 |
+
# @ default
|
32 |
+
#: admin/general/wp-security-list-table.php:291
|
33 |
+
msgid "Apply"
|
34 |
+
msgstr ""
|
35 |
+
|
36 |
+
# @ default
|
37 |
+
#: admin/general/wp-security-list-table.php:365
|
38 |
+
msgid "Show all dates"
|
39 |
+
msgstr ""
|
40 |
+
|
41 |
+
# @ default
|
42 |
+
#. translators: 1: month name, 2: 4-digit year
|
43 |
+
#: admin/general/wp-security-list-table.php:378
|
44 |
+
#, php-format
|
45 |
+
msgid "%1$s %2$d"
|
46 |
+
msgstr ""
|
47 |
+
|
48 |
+
# @ default
|
49 |
+
#: admin/general/wp-security-list-table.php:394
|
50 |
+
msgid "List View"
|
51 |
+
msgstr ""
|
52 |
+
|
53 |
+
# @ default
|
54 |
+
#: admin/general/wp-security-list-table.php:395
|
55 |
+
msgid "Excerpt View"
|
56 |
+
msgstr ""
|
57 |
+
|
58 |
+
# @ default
|
59 |
+
#: admin/general/wp-security-list-table.php:421
|
60 |
+
#, php-format
|
61 |
+
msgid "%s pending"
|
62 |
+
msgstr ""
|
63 |
+
|
64 |
+
# @ default
|
65 |
+
#: admin/general/wp-security-list-table.php:477
|
66 |
+
#: admin/general/wp-security-list-table.php:881
|
67 |
+
#, php-format
|
68 |
+
msgid "1 item"
|
69 |
+
msgid_plural "%s items"
|
70 |
+
msgstr[0] ""
|
71 |
+
msgstr[1] ""
|
72 |
+
|
73 |
+
# @ default
|
74 |
+
#: admin/general/wp-security-list-table.php:495
|
75 |
+
msgid "Go to the first page"
|
76 |
+
msgstr ""
|
77 |
+
|
78 |
+
# @ default
|
79 |
+
#: admin/general/wp-security-list-table.php:502
|
80 |
+
msgid "Go to the previous page"
|
81 |
+
msgstr ""
|
82 |
+
|
83 |
+
# @ default
|
84 |
+
#: admin/general/wp-security-list-table.php:511
|
85 |
+
msgid "Current page"
|
86 |
+
msgstr ""
|
87 |
+
|
88 |
+
# @ default
|
89 |
+
#: admin/general/wp-security-list-table.php:517
|
90 |
+
#, php-format
|
91 |
+
msgctxt "paging"
|
92 |
+
msgid "%1$s of %2$s"
|
93 |
+
msgstr ""
|
94 |
+
|
95 |
+
# @ default
|
96 |
+
#: admin/general/wp-security-list-table.php:521
|
97 |
+
msgid "Go to the next page"
|
98 |
+
msgstr ""
|
99 |
+
|
100 |
+
# @ default
|
101 |
+
#: admin/general/wp-security-list-table.php:528
|
102 |
+
msgid "Go to the last page"
|
103 |
+
msgstr ""
|
104 |
+
|
105 |
+
# @ default
|
106 |
+
#: admin/general/wp-security-list-table.php:653
|
107 |
+
msgid "Select All"
|
108 |
+
msgstr ""
|
109 |
+
|
110 |
+
# @ all-in-one-wp-security-and-firewall
|
111 |
+
#: admin/wp-security-admin-init.php:157
|
112 |
+
msgid "WP Security"
|
113 |
+
msgstr ""
|
114 |
+
|
115 |
+
# @ all-in-one-wp-security-and-firewall
|
116 |
+
#: admin/wp-security-admin-init.php:158 admin/wp-security-dashboard-menu.php:23
|
117 |
+
msgid "Dashboard"
|
118 |
+
msgstr ""
|
119 |
+
|
120 |
+
# @ all-in-one-wp-security-and-firewall
|
121 |
+
#: admin/wp-security-admin-init.php:159
|
122 |
+
msgid "Settings"
|
123 |
+
msgstr ""
|
124 |
+
|
125 |
+
# @ all-in-one-wp-security-and-firewall
|
126 |
+
#: admin/wp-security-admin-init.php:160
|
127 |
+
msgid "User Accounts"
|
128 |
+
msgstr ""
|
129 |
+
|
130 |
+
# @ all-in-one-wp-security-and-firewall
|
131 |
+
#: admin/wp-security-admin-init.php:161
|
132 |
+
msgid "User Login"
|
133 |
+
msgstr ""
|
134 |
+
|
135 |
+
# @ all-in-one-wp-security-and-firewall
|
136 |
+
#: admin/wp-security-admin-init.php:162
|
137 |
+
msgid "User Registration"
|
138 |
+
msgstr ""
|
139 |
+
|
140 |
+
# @ all-in-one-wp-security-and-firewall
|
141 |
+
#: admin/wp-security-admin-init.php:163
|
142 |
+
msgid "Database Security"
|
143 |
+
msgstr ""
|
144 |
+
|
145 |
+
# @ all-in-one-wp-security-and-firewall
|
146 |
+
#: admin/wp-security-admin-init.php:167
|
147 |
+
msgid "Filesystem Security"
|
148 |
+
msgstr ""
|
149 |
+
|
150 |
+
# @ all-in-one-wp-security-and-firewall
|
151 |
+
#: admin/wp-security-admin-init.php:169
|
152 |
+
msgid "WHOIS Lookup"
|
153 |
+
msgstr ""
|
154 |
+
|
155 |
+
# @ all-in-one-wp-security-and-firewall
|
156 |
+
#: admin/wp-security-admin-init.php:173
|
157 |
+
msgid "Blacklist Manager"
|
158 |
+
msgstr ""
|
159 |
+
|
160 |
+
# @ all-in-one-wp-security-and-firewall
|
161 |
+
#: admin/wp-security-admin-init.php:178
|
162 |
+
msgid "Firewall"
|
163 |
+
msgstr ""
|
164 |
+
|
165 |
+
# @ all-in-one-wp-security-and-firewall
|
166 |
+
#: admin/wp-security-admin-init.php:183
|
167 |
+
msgid "Brute Force"
|
168 |
+
msgstr ""
|
169 |
+
|
170 |
+
# @ all-in-one-wp-security-and-firewall
|
171 |
+
#: admin/wp-security-admin-init.php:185
|
172 |
+
msgid "SPAM Prevention"
|
173 |
+
msgstr ""
|
174 |
+
|
175 |
+
# @ all-in-one-wp-security-and-firewall
|
176 |
+
#: admin/wp-security-admin-init.php:189
|
177 |
+
msgid "Scanner"
|
178 |
+
msgstr ""
|
179 |
+
|
180 |
+
# @ all-in-one-wp-security-and-firewall
|
181 |
+
#: admin/wp-security-admin-init.php:191
|
182 |
+
msgid "Maintenance"
|
183 |
+
msgstr ""
|
184 |
+
|
185 |
+
# @ all-in-one-wp-security-and-firewall
|
186 |
+
#: admin/wp-security-admin-menu.php:43
|
187 |
+
msgid "Settings successfully updated."
|
188 |
+
msgstr ""
|
189 |
+
|
190 |
+
# @ all-in-one-wp-security-and-firewall
|
191 |
+
#: admin/wp-security-admin-menu.php:50
|
192 |
+
msgid "The selected record(s) deleted successfully!"
|
193 |
+
msgstr ""
|
194 |
+
|
195 |
+
# @ all-in-one-wp-security-and-firewall
|
196 |
+
#: admin/wp-security-blacklist-menu.php:22
|
197 |
+
msgid "Ban Users"
|
198 |
+
msgstr ""
|
199 |
+
|
200 |
+
# @ all-in-one-wp-security-and-firewall
|
201 |
+
#: admin/wp-security-blacklist-menu.php:80
|
202 |
+
msgid "Nonce check failed for save blacklist settings!"
|
203 |
+
msgstr ""
|
204 |
+
|
205 |
+
# @ all-in-one-wp-security-and-firewall
|
206 |
+
#: admin/wp-security-blacklist-menu.php:132
|
207 |
+
#: admin/wp-security-brute-force-menu.php:608
|
208 |
+
#: admin/wp-security-list-comment-spammer-ip.php:147
|
209 |
+
msgid "The plugin was unable to write to the .htaccess file. Please edit file manually."
|
210 |
+
msgstr ""
|
211 |
+
|
212 |
+
# @ all-in-one-wp-security-and-firewall
|
213 |
+
#: admin/wp-security-blacklist-menu.php:139
|
214 |
+
msgid "Ban IPs or User Agents"
|
215 |
+
msgstr ""
|
216 |
+
|
217 |
+
# @ all-in-one-wp-security-and-firewall
|
218 |
+
#: admin/wp-security-blacklist-menu.php:142
|
219 |
+
msgid "The All In One WP Security Blacklist feature gives you the option of banning certain host IP addresses or ranges and also user agents."
|
220 |
+
msgstr ""
|
221 |
+
|
222 |
+
# @ all-in-one-wp-security-and-firewall
|
223 |
+
#: admin/wp-security-blacklist-menu.php:143
|
224 |
+
msgid "This feature will deny total site access for users which have IP addresses or user agents matching those which you have configured in the settings below."
|
225 |
+
msgstr ""
|
226 |
+
|
227 |
+
# @ all-in-one-wp-security-and-firewall
|
228 |
+
#: admin/wp-security-blacklist-menu.php:144
|
229 |
+
msgid "The plugin achieves this by making appropriate modifications to your .htaccess file."
|
230 |
+
msgstr ""
|
231 |
+
|
232 |
+
# @ all-in-one-wp-security-and-firewall
|
233 |
+
#: admin/wp-security-blacklist-menu.php:145
|
234 |
+
msgid "By blocking people via the .htaccess file your are using the most secure first line of defence which denies all access to blacklisted visitors as soon as they hit your hosting server."
|
235 |
+
msgstr ""
|
236 |
+
|
237 |
+
# @ all-in-one-wp-security-and-firewall
|
238 |
+
#: admin/wp-security-blacklist-menu.php:151
|
239 |
+
msgid "IP Hosts and User Agent Blacklist Settings"
|
240 |
+
msgstr ""
|
241 |
+
|
242 |
+
# @ all-in-one-wp-security-and-firewall
|
243 |
+
#: admin/wp-security-blacklist-menu.php:162
|
244 |
+
msgid "Enable IP or User Agent Blacklisting"
|
245 |
+
msgstr ""
|
246 |
+
|
247 |
+
# @ all-in-one-wp-security-and-firewall
|
248 |
+
#: admin/wp-security-blacklist-menu.php:165
|
249 |
+
msgid "Check this if you want to enable the banning (or blacklisting) of selected IP addresses and/or user agents specified in the settings below"
|
250 |
+
msgstr ""
|
251 |
+
|
252 |
+
# @ all-in-one-wp-security-and-firewall
|
253 |
+
#: admin/wp-security-blacklist-menu.php:169
|
254 |
+
msgid "Enter IP Addresses:"
|
255 |
+
msgstr ""
|
256 |
+
|
257 |
+
# @ all-in-one-wp-security-and-firewall
|
258 |
+
#: admin/wp-security-blacklist-menu.php:173
|
259 |
+
msgid "Enter one or more IP addresses or IP ranges."
|
260 |
+
msgstr ""
|
261 |
+
|
262 |
+
# @ all-in-one-wp-security-and-firewall
|
263 |
+
#: admin/wp-security-blacklist-menu.php:174
|
264 |
+
#: admin/wp-security-blacklist-menu.php:194
|
265 |
+
#: admin/wp-security-brute-force-menu.php:343
|
266 |
+
#: admin/wp-security-brute-force-menu.php:377
|
267 |
+
#: admin/wp-security-brute-force-menu.php:400
|
268 |
+
#: admin/wp-security-brute-force-menu.php:421
|
269 |
+
#: admin/wp-security-brute-force-menu.php:664
|
270 |
+
#: admin/wp-security-filescan-menu.php:291
|
271 |
+
#: admin/wp-security-filescan-menu.php:308
|
272 |
+
#: admin/wp-security-firewall-menu.php:165
|
273 |
+
#: admin/wp-security-firewall-menu.php:195
|
274 |
+
#: admin/wp-security-firewall-menu.php:326
|
275 |
+
#: admin/wp-security-firewall-menu.php:356
|
276 |
+
#: admin/wp-security-firewall-menu.php:387
|
277 |
+
#: admin/wp-security-firewall-menu.php:415
|
278 |
+
#: admin/wp-security-firewall-menu.php:444
|
279 |
+
#: admin/wp-security-firewall-menu.php:532
|
280 |
+
#: admin/wp-security-firewall-menu.php:622
|
281 |
+
#: admin/wp-security-firewall-menu.php:824
|
282 |
+
#: admin/wp-security-firewall-menu.php:847 admin/wp-security-spam-menu.php:174
|
283 |
+
#: admin/wp-security-spam-menu.php:259
|
284 |
+
msgid "More Info"
|
285 |
+
msgstr ""
|
286 |
+
|
287 |
+
# @ all-in-one-wp-security-and-firewall
|
288 |
+
#: admin/wp-security-blacklist-menu.php:177
|
289 |
+
#: admin/wp-security-brute-force-menu.php:667
|
290 |
+
msgid "Each IP address must be on a new line."
|
291 |
+
msgstr ""
|
292 |
+
|
293 |
+
# @ all-in-one-wp-security-and-firewall
|
294 |
+
#: admin/wp-security-blacklist-menu.php:178
|
295 |
+
#: admin/wp-security-brute-force-menu.php:668
|
296 |
+
msgid "To specify an IP range use a wildcard \"*\" character. Acceptable ways to use wildcards is shown in the examples below:"
|
297 |
+
msgstr ""
|
298 |
+
|
299 |
+
# @ all-in-one-wp-security-and-firewall
|
300 |
+
#: admin/wp-security-blacklist-menu.php:179
|
301 |
+
#: admin/wp-security-brute-force-menu.php:669
|
302 |
+
msgid "Example 1: 195.47.89.*"
|
303 |
+
msgstr ""
|
304 |
+
|
305 |
+
# @ all-in-one-wp-security-and-firewall
|
306 |
+
#: admin/wp-security-blacklist-menu.php:180
|
307 |
+
#: admin/wp-security-brute-force-menu.php:670
|
308 |
+
msgid "Example 2: 195.47.*.*"
|
309 |
+
msgstr ""
|
310 |
+
|
311 |
+
# @ all-in-one-wp-security-and-firewall
|
312 |
+
#: admin/wp-security-blacklist-menu.php:181
|
313 |
+
#: admin/wp-security-brute-force-menu.php:671
|
314 |
+
msgid "Example 3: 195.*.*.*"
|
315 |
+
msgstr ""
|
316 |
+
|
317 |
+
# @ all-in-one-wp-security-and-firewall
|
318 |
+
#: admin/wp-security-blacklist-menu.php:188
|
319 |
+
msgid "Enter User Agents:"
|
320 |
+
msgstr ""
|
321 |
+
|
322 |
+
# @ all-in-one-wp-security-and-firewall
|
323 |
+
#: admin/wp-security-blacklist-menu.php:193
|
324 |
+
msgid "Enter one or more user agent strings."
|
325 |
+
msgstr ""
|
326 |
+
|
327 |
+
# @ all-in-one-wp-security-and-firewall
|
328 |
+
#: admin/wp-security-blacklist-menu.php:197
|
329 |
+
msgid "Each user agent string must be on a new line."
|
330 |
+
msgstr ""
|
331 |
+
|
332 |
+
# @ all-in-one-wp-security-and-firewall
|
333 |
+
#: admin/wp-security-blacklist-menu.php:198
|
334 |
+
msgid "Example 1 - A single user agent string to block:"
|
335 |
+
msgstr ""
|
336 |
+
|
337 |
+
# @ all-in-one-wp-security-and-firewall
|
338 |
+
#: admin/wp-security-blacklist-menu.php:200
|
339 |
+
msgid "Example 2 - A list of more than 1 user agent strings to block"
|
340 |
+
msgstr ""
|
341 |
+
|
342 |
+
# @ all-in-one-wp-security-and-firewall
|
343 |
+
#: admin/wp-security-blacklist-menu.php:208
|
344 |
+
#: admin/wp-security-brute-force-menu.php:188
|
345 |
+
#: admin/wp-security-brute-force-menu.php:544
|
346 |
+
#: admin/wp-security-brute-force-menu.php:678
|
347 |
+
#: admin/wp-security-database-menu.php:356
|
348 |
+
#: admin/wp-security-filescan-menu.php:329
|
349 |
+
#: admin/wp-security-filesystem-menu.php:231
|
350 |
+
#: admin/wp-security-firewall-menu.php:700
|
351 |
+
#: admin/wp-security-firewall-menu.php:866
|
352 |
+
#: admin/wp-security-settings-menu.php:493 admin/wp-security-spam-menu.php:189
|
353 |
+
#: admin/wp-security-user-login-menu.php:239
|
354 |
+
#: admin/wp-security-user-login-menu.php:407
|
355 |
+
#: admin/wp-security-user-registration-menu.php:146
|
356 |
+
#: admin/wp-security-user-registration-menu.php:221
|
357 |
+
msgid "Save Settings"
|
358 |
+
msgstr ""
|
359 |
+
|
360 |
+
# @ all-in-one-wp-security-and-firewall
|
361 |
+
#: admin/wp-security-brute-force-menu.php:25
|
362 |
+
#: admin/wp-security-dashboard-menu.php:344
|
363 |
+
#: admin/wp-security-dashboard-menu.php:353
|
364 |
+
msgid "Rename Login Page"
|
365 |
+
msgstr ""
|
366 |
+
|
367 |
+
# @ all-in-one-wp-security-and-firewall
|
368 |
+
#: admin/wp-security-brute-force-menu.php:26
|
369 |
+
msgid "Cookie Based Brute Force Prevention"
|
370 |
+
msgstr ""
|
371 |
+
|
372 |
+
# @ all-in-one-wp-security-and-firewall
|
373 |
+
#: admin/wp-security-brute-force-menu.php:27
|
374 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:44
|
375 |
+
msgid "Login Captcha"
|
376 |
+
msgstr ""
|
377 |
+
|
378 |
+
# @ all-in-one-wp-security-and-firewall
|
379 |
+
#: admin/wp-security-brute-force-menu.php:28
|
380 |
+
#: admin/wp-security-brute-force-menu.php:615
|
381 |
+
msgid "Login Whitelist"
|
382 |
+
msgstr ""
|
383 |
+
|
384 |
+
# @ all-in-one-wp-security-and-firewall
|
385 |
+
#: admin/wp-security-brute-force-menu.php:99
|
386 |
+
msgid "Please enter a value for your login page slug."
|
387 |
+
msgstr ""
|
388 |
+
|
389 |
+
# @ all-in-one-wp-security-and-firewall
|
390 |
+
#: admin/wp-security-brute-force-menu.php:103
|
391 |
+
msgid "You cannot use the value \"wp-admin\" for your login page slug."
|
392 |
+
msgstr ""
|
393 |
+
|
394 |
+
# @ all-in-one-wp-security-and-firewall
|
395 |
+
#: admin/wp-security-brute-force-menu.php:108
|
396 |
+
#: admin/wp-security-database-menu.php:271
|
397 |
+
#: admin/wp-security-filescan-menu.php:169
|
398 |
+
#: admin/wp-security-firewall-menu.php:769 admin/wp-security-spam-menu.php:219
|
399 |
+
#: admin/wp-security-user-login-menu.php:123
|
400 |
+
#: admin/wp-security-user-login-menu.php:360
|
401 |
+
msgid "Attention!"
|
402 |
+
msgstr ""
|
403 |
+
|
404 |
+
# @ all-in-one-wp-security-and-firewall
|
405 |
+
#: admin/wp-security-brute-force-menu.php:127
|
406 |
+
msgid "Could not delete the Cookie-based directives from the .htaccess file. Please check the file permissions."
|
407 |
+
msgstr ""
|
408 |
+
|
409 |
+
# @ all-in-one-wp-security-and-firewall
|
410 |
+
#: admin/wp-security-brute-force-menu.php:137
|
411 |
+
msgid "An effective Brute Force prevention technique is to change the default WordPress login page URL."
|
412 |
+
msgstr ""
|
413 |
+
|
414 |
+
# @ all-in-one-wp-security-and-firewall
|
415 |
+
#: admin/wp-security-brute-force-menu.php:138
|
416 |
+
msgid "Normally if you wanted to login to WordPress you would type your site's home URL followed by wp-login.php."
|
417 |
+
msgstr ""
|
418 |
+
|
419 |
+
# @ all-in-one-wp-security-and-firewall
|
420 |
+
#: admin/wp-security-brute-force-menu.php:139
|
421 |
+
msgid "This feature allows you to change the login URL by setting your own slug and renaming the last portion of the login URL which contains the <strong>wp-login.php</strong> to any string that you like."
|
422 |
+
msgstr ""
|
423 |
+
|
424 |
+
# @ all-in-one-wp-security-and-firewall
|
425 |
+
#: admin/wp-security-brute-force-menu.php:140
|
426 |
+
msgid "By doing this, malicious bots and hackers will not be able to access your login page because they will not know the correct login page URL."
|
427 |
+
msgstr ""
|
428 |
+
|
429 |
+
# @ all-in-one-wp-security-and-firewall
|
430 |
+
#: admin/wp-security-brute-force-menu.php:142
|
431 |
+
msgid "You may also be interested in the following alternative brute force prevention features:"
|
432 |
+
msgstr ""
|
433 |
+
|
434 |
+
# @ all-in-one-wp-security-and-firewall
|
435 |
+
#: admin/wp-security-brute-force-menu.php:153
|
436 |
+
msgid "Your WordPress login page URL has been renamed."
|
437 |
+
msgstr ""
|
438 |
+
|
439 |
+
# @ all-in-one-wp-security-and-firewall
|
440 |
+
#: admin/wp-security-brute-force-menu.php:154
|
441 |
+
msgid "Your current login URL is:"
|
442 |
+
msgstr ""
|
443 |
+
|
444 |
+
# @ all-in-one-wp-security-and-firewall
|
445 |
+
#: admin/wp-security-brute-force-menu.php:156
|
446 |
+
msgid "NOTE: If you already had the Cookie-Based Brute Force Prevention feature active, the plugin has automatically deactivated it because only one of these features can be active at any one time."
|
447 |
+
msgstr ""
|
448 |
+
|
449 |
+
# @ all-in-one-wp-security-and-firewall
|
450 |
+
#: admin/wp-security-brute-force-menu.php:163
|
451 |
+
msgid "Rename Login Page Settings"
|
452 |
+
msgstr ""
|
453 |
+
|
454 |
+
# @ all-in-one-wp-security-and-firewall
|
455 |
+
#: admin/wp-security-brute-force-menu.php:175
|
456 |
+
msgid "Enable Rename Login Page Feature"
|
457 |
+
msgstr ""
|
458 |
+
|
459 |
+
# @ all-in-one-wp-security-and-firewall
|
460 |
+
#: admin/wp-security-brute-force-menu.php:178
|
461 |
+
msgid "Check this if you want to enable the rename login page feature"
|
462 |
+
msgstr ""
|
463 |
+
|
464 |
+
# @ all-in-one-wp-security-and-firewall
|
465 |
+
#: admin/wp-security-brute-force-menu.php:182
|
466 |
+
msgid "Login Page URL"
|
467 |
+
msgstr ""
|
468 |
+
|
469 |
+
# @ all-in-one-wp-security-and-firewall
|
470 |
+
#: admin/wp-security-brute-force-menu.php:184
|
471 |
+
msgid "Enter a string which will represent your secure login page slug. You are enouraged to choose something which is hard to guess and only you will remember."
|
472 |
+
msgstr ""
|
473 |
+
|
474 |
+
# @ all-in-one-wp-security-and-firewall
|
475 |
+
#: admin/wp-security-brute-force-menu.php:217
|
476 |
+
msgid "Settings have not been saved - your secret word must consist only of alphanumeric characters, ie, letters and/or numbers only!"
|
477 |
+
msgstr ""
|
478 |
+
|
479 |
+
# @ all-in-one-wp-security-and-firewall
|
480 |
+
#: admin/wp-security-brute-force-menu.php:236
|
481 |
+
msgid "You have successfully enabled the cookie based brute force prevention feature"
|
482 |
+
msgstr ""
|
483 |
+
|
484 |
+
# @ all-in-one-wp-security-and-firewall
|
485 |
+
#: admin/wp-security-brute-force-menu.php:237
|
486 |
+
msgid "From now on you will need to log into your WP Admin using the following URL:"
|
487 |
+
msgstr ""
|
488 |
+
|
489 |
+
# @ all-in-one-wp-security-and-firewall
|
490 |
+
#: admin/wp-security-brute-force-menu.php:239
|
491 |
+
msgid "It is important that you save this URL value somewhere in case you forget it, OR,"
|
492 |
+
msgstr ""
|
493 |
+
|
494 |
+
# @ all-in-one-wp-security-and-firewall
|
495 |
+
#: admin/wp-security-brute-force-menu.php:240
|
496 |
+
#, php-format
|
497 |
+
msgid "simply remember to add a \"?%s=1\" to your current site URL address."
|
498 |
+
msgstr ""
|
499 |
+
|
500 |
+
# @ all-in-one-wp-security-and-firewall
|
501 |
+
#: admin/wp-security-brute-force-menu.php:246
|
502 |
+
msgid "You have successfully saved cookie based brute force prevention feature settings."
|
503 |
+
msgstr ""
|
504 |
+
|
505 |
+
# @ all-in-one-wp-security-and-firewall
|
506 |
+
#: admin/wp-security-brute-force-menu.php:281
|
507 |
+
#: admin/wp-security-filesystem-menu.php:275
|
508 |
+
#: admin/wp-security-firewall-menu.php:119
|
509 |
+
#: admin/wp-security-firewall-menu.php:287
|
510 |
+
#: admin/wp-security-firewall-menu.php:498
|
511 |
+
#: admin/wp-security-firewall-menu.php:667 admin/wp-security-spam-menu.php:106
|
512 |
+
msgid "Could not write to the .htaccess file. Please check the file permissions."
|
513 |
+
msgstr ""
|
514 |
+
|
515 |
+
# @ all-in-one-wp-security-and-firewall
|
516 |
+
#: admin/wp-security-brute-force-menu.php:291
|
517 |
+
msgid "Brute Force Prevention Firewall Settings"
|
518 |
+
msgstr ""
|
519 |
+
|
520 |
+
# @ all-in-one-wp-security-and-firewall
|
521 |
+
#: admin/wp-security-brute-force-menu.php:296
|
522 |
+
msgid "A Brute Force Attack is when a hacker tries many combinations of usernames and passwords until they succeed in guessing the right combination."
|
523 |
+
msgstr ""
|
524 |
+
|
525 |
+
# @ all-in-one-wp-security-and-firewall
|
526 |
+
#: admin/wp-security-brute-force-menu.php:297
|
527 |
+
msgid "Due to the fact that at any one time there may be many concurrent login attempts occurring on your site via malicious automated robots, this also has a negative impact on your server's memory and performance."
|
528 |
+
msgstr ""
|
529 |
+
|
530 |
+
# @ all-in-one-wp-security-and-firewall
|
531 |
+
#: admin/wp-security-brute-force-menu.php:298
|
532 |
+
msgid "The features in this tab will stop the majority of Brute Force Login Attacks at the .htaccess level thus providing even better protection for your WP login page and also reducing the load on your server because the system does not have to run PHP code to process the login attempts."
|
533 |
+
msgstr ""
|
534 |
+
|
535 |
+
# @ all-in-one-wp-security-and-firewall
|
536 |
+
#: admin/wp-security-brute-force-menu.php:305
|
537 |
+
#, php-format
|
538 |
+
msgid "Even though this feature should not have any impact on your site's general functionality <strong>you are strongly encouraged to take a %s of your .htaccess file before proceeding</strong>."
|
539 |
+
msgstr ""
|
540 |
+
|
541 |
+
# @ all-in-one-wp-security-and-firewall
|
542 |
+
#: admin/wp-security-brute-force-menu.php:306
|
543 |
+
msgid "If this feature is not used correctly, you can get locked out of your site. A backed up .htaccess file will come in handy if that happens."
|
544 |
+
msgstr ""
|
545 |
+
|
546 |
+
# @ all-in-one-wp-security-and-firewall
|
547 |
+
#: admin/wp-security-brute-force-menu.php:307
|
548 |
+
#, php-format
|
549 |
+
msgid "To learn more about how to use this feature please watch the following %s."
|
550 |
+
msgstr ""
|
551 |
+
|
552 |
+
# @ all-in-one-wp-security-and-firewall
|
553 |
+
#: admin/wp-security-brute-force-menu.php:320
|
554 |
+
msgid "NOTE: If you already had the Rename Login Page feature active, the plugin has automatically deactivated it because only one of these features can be active at any one time."
|
555 |
+
msgstr ""
|
556 |
+
|
557 |
+
# @ all-in-one-wp-security-and-firewall
|
558 |
+
#: admin/wp-security-brute-force-menu.php:328
|
559 |
+
msgid "Cookie Based Brute Force Login Prevention"
|
560 |
+
msgstr ""
|
561 |
+
|
562 |
+
# @ all-in-one-wp-security-and-firewall
|
563 |
+
#: admin/wp-security-brute-force-menu.php:339
|
564 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:87
|
565 |
+
msgid "Enable Brute Force Attack Prevention"
|
566 |
+
msgstr ""
|
567 |
+
|
568 |
+
# @ all-in-one-wp-security-and-firewall
|
569 |
+
#: admin/wp-security-brute-force-menu.php:342
|
570 |
+
msgid "Check this if you want to protect your login page from Brute Force Attack."
|
571 |
+
msgstr ""
|
572 |
+
|
573 |
+
# @ all-in-one-wp-security-and-firewall
|
574 |
+
#: admin/wp-security-brute-force-menu.php:347
|
575 |
+
msgid "This feature will deny access to your WordPress login page for all people except those who have a special cookie in their browser."
|
576 |
+
msgstr ""
|
577 |
+
|
578 |
+
# @ all-in-one-wp-security-and-firewall
|
579 |
+
#: admin/wp-security-brute-force-menu.php:349
|
580 |
+
msgid "To use this feature do the following:"
|
581 |
+
msgstr ""
|
582 |
+
|
583 |
+
# @ all-in-one-wp-security-and-firewall
|
584 |
+
#: admin/wp-security-brute-force-menu.php:351
|
585 |
+
msgid "1) Enable the checkbox."
|
586 |
+
msgstr ""
|
587 |
+
|
588 |
+
# @ all-in-one-wp-security-and-firewall
|
589 |
+
#: admin/wp-security-brute-force-menu.php:353
|
590 |
+
msgid "2) Enter a secret word consisting of alphanumeric characters which will be difficult to guess. This secret word will be useful whenever you need to know the special URL which you will use to access the login page (see point below)."
|
591 |
+
msgstr ""
|
592 |
+
|
593 |
+
# @ all-in-one-wp-security-and-firewall
|
594 |
+
#: admin/wp-security-brute-force-menu.php:355
|
595 |
+
msgid "3) You will then be provided with a special login URL. You will need to use this URL to login to your WordPress site instead of the usual login URL. NOTE: The system will deposit a special cookie in your browser which will allow you access to the WordPress administration login page."
|
596 |
+
msgstr ""
|
597 |
+
|
598 |
+
# @ all-in-one-wp-security-and-firewall
|
599 |
+
#: admin/wp-security-brute-force-menu.php:357
|
600 |
+
msgid "Any person trying to access your login page who does not have the special cookie in their browser will be automatically blocked."
|
601 |
+
msgstr ""
|
602 |
+
|
603 |
+
# @ all-in-one-wp-security-and-firewall
|
604 |
+
#: admin/wp-security-brute-force-menu.php:364
|
605 |
+
msgid "Secret Word"
|
606 |
+
msgstr ""
|
607 |
+
|
608 |
+
# @ all-in-one-wp-security-and-firewall
|
609 |
+
#: admin/wp-security-brute-force-menu.php:366
|
610 |
+
msgid "Choose a secret word consisting of alphanumeric characters which you can use to access your special URL. Your are highly encouraged to choose a word which will be difficult to guess."
|
611 |
+
msgstr ""
|
612 |
+
|
613 |
+
# @ all-in-one-wp-security-and-firewall
|
614 |
+
#: admin/wp-security-brute-force-menu.php:370
|
615 |
+
msgid "Re-direct URL"
|
616 |
+
msgstr ""
|
617 |
+
|
618 |
+
# @ all-in-one-wp-security-and-firewall
|
619 |
+
#: admin/wp-security-brute-force-menu.php:374
|
620 |
+
msgid "Specify a URL to redirect a hacker to when they try to access your WordPress login page."
|
621 |
+
msgstr ""
|
622 |
+
|
623 |
+
# @ all-in-one-wp-security-and-firewall
|
624 |
+
#: admin/wp-security-brute-force-menu.php:381
|
625 |
+
msgid "The URL specified here can be any site's URL and does not have to be your own. For example you can be as creative as you like and send hackers to the CIA or NSA home page."
|
626 |
+
msgstr ""
|
627 |
+
|
628 |
+
# @ all-in-one-wp-security-and-firewall
|
629 |
+
#: admin/wp-security-brute-force-menu.php:383
|
630 |
+
msgid "This field will default to: http://127.0.0.1 if you do not enter a value."
|
631 |
+
msgstr ""
|
632 |
+
|
633 |
+
# @ all-in-one-wp-security-and-firewall
|
634 |
+
#: admin/wp-security-brute-force-menu.php:385
|
635 |
+
msgid "Useful Tip:"
|
636 |
+
msgstr ""
|
637 |
+
|
638 |
+
# @ all-in-one-wp-security-and-firewall
|
639 |
+
#: admin/wp-security-brute-force-menu.php:387
|
640 |
+
msgid "It's a good idea to not redirect attempted brute force login attempts to your site because it increases the load on your server."
|
641 |
+
msgstr ""
|
642 |
+
|
643 |
+
# @ all-in-one-wp-security-and-firewall
|
644 |
+
#: admin/wp-security-brute-force-menu.php:389
|
645 |
+
msgid "Redirecting a hacker or malicious bot back to \"http://127.0.0.1\" is ideal because it deflects them back to their own local host and puts the load on their server instead of yours."
|
646 |
+
msgstr ""
|
647 |
+
|
648 |
+
# @ all-in-one-wp-security-and-firewall
|
649 |
+
#: admin/wp-security-brute-force-menu.php:396
|
650 |
+
msgid "My Site Has Posts Or Pages Which Are Password Protected"
|
651 |
+
msgstr ""
|
652 |
+
|
653 |
+
# @ all-in-one-wp-security-and-firewall
|
654 |
+
#: admin/wp-security-brute-force-menu.php:399
|
655 |
+
msgid "Check this if you are using the native WordPress password protection feature for some or all of your blog posts or pages."
|
656 |
+
msgstr ""
|
657 |
+
|
658 |
+
# @ all-in-one-wp-security-and-firewall
|
659 |
+
#: admin/wp-security-brute-force-menu.php:404
|
660 |
+
msgid "In the cases where you are protecting some of your posts or pages using the in-built WordPress password protection feature, a few extra lines of directives and exceptions need to be added to your .htacces file so that people trying to access pages are not automatically blocked."
|
661 |
+
msgstr ""
|
662 |
+
|
663 |
+
# @ all-in-one-wp-security-and-firewall
|
664 |
+
#: admin/wp-security-brute-force-menu.php:406
|
665 |
+
msgid "By enabling this checkbox the plugin will add the necessary rules and exceptions to your .htacces file so that people trying to access these pages are not automatically blocked."
|
666 |
+
msgstr ""
|
667 |
+
|
668 |
+
# @ all-in-one-wp-security-and-firewall
|
669 |
+
#: admin/wp-security-brute-force-menu.php:408
|
670 |
+
msgid "Helpful Tip:"
|
671 |
+
msgstr ""
|
672 |
+
|
673 |
+
# @ all-in-one-wp-security-and-firewall
|
674 |
+
#: admin/wp-security-brute-force-menu.php:410
|
675 |
+
msgid "If you do not use the WordPress password protection feature for your posts or pages then it is highly recommended that you leave this checkbox disabled."
|
676 |
+
msgstr ""
|
677 |
+
|
678 |
+
# @ all-in-one-wp-security-and-firewall
|
679 |
+
#: admin/wp-security-brute-force-menu.php:417
|
680 |
+
msgid "My Site Has a Theme or Plugins Which Use AJAX"
|
681 |
+
msgstr ""
|
682 |
+
|
683 |
+
# @ all-in-one-wp-security-and-firewall
|
684 |
+
#: admin/wp-security-brute-force-menu.php:420
|
685 |
+
msgid "Check this if your site uses AJAX functionality."
|
686 |
+
msgstr ""
|
687 |
+
|
688 |
+
# @ all-in-one-wp-security-and-firewall
|
689 |
+
#: admin/wp-security-brute-force-menu.php:425
|
690 |
+
msgid "In the cases where your WordPress installation has a theme or plugins which use AJAX, a few extra lines of directives and exceptions need to be added to your .htacces file to prevent AJAX requests from being automatically blocked by the brute force prevention feature."
|
691 |
+
msgstr ""
|
692 |
+
|
693 |
+
# @ all-in-one-wp-security-and-firewall
|
694 |
+
#: admin/wp-security-brute-force-menu.php:427
|
695 |
+
msgid "By enabling this checkbox the plugin will add the necessary rules and exceptions to your .htacces file so that AJAX operations will work as expected."
|
696 |
+
msgstr ""
|
697 |
+
|
698 |
+
# @ all-in-one-wp-security-and-firewall
|
699 |
+
#: admin/wp-security-brute-force-menu.php:442
|
700 |
+
msgid "The cookie test was successful. You can now enable this feature."
|
701 |
+
msgstr ""
|
702 |
+
|
703 |
+
# @ all-in-one-wp-security-and-firewall
|
704 |
+
#: admin/wp-security-brute-force-menu.php:445
|
705 |
+
msgid "Save Feature Settings"
|
706 |
+
msgstr ""
|
707 |
+
|
708 |
+
# @ all-in-one-wp-security-and-firewall
|
709 |
+
#: admin/wp-security-brute-force-menu.php:452
|
710 |
+
msgid "The cookie test failed on this server. So this feature cannot be used on this site."
|
711 |
+
msgstr ""
|
712 |
+
|
713 |
+
# @ all-in-one-wp-security-and-firewall
|
714 |
+
#: admin/wp-security-brute-force-menu.php:457
|
715 |
+
msgid "Before using this feature you are required to perform a cookie test first. This is to make sure that your browser cookie is working correctly and that you won't lock yourself out."
|
716 |
+
msgstr ""
|
717 |
+
|
718 |
+
# @ all-in-one-wp-security-and-firewall
|
719 |
+
#: admin/wp-security-brute-force-menu.php:459
|
720 |
+
msgid "Perform Cookie Test"
|
721 |
+
msgstr ""
|
722 |
+
|
723 |
+
# @ all-in-one-wp-security-and-firewall
|
724 |
+
#: admin/wp-security-brute-force-menu.php:498
|
725 |
+
msgid "This feature allows you to add a captcha form on the WordPress login page."
|
726 |
+
msgstr ""
|
727 |
+
|
728 |
+
# @ all-in-one-wp-security-and-firewall
|
729 |
+
#: admin/wp-security-brute-force-menu.php:499
|
730 |
+
msgid "Users who attempt to login will also need to enter the answer to a simple mathematical question - if they enter the wrong answer, the plugin will not allow them login even if they entered the correct username and password."
|
731 |
+
msgstr ""
|
732 |
+
|
733 |
+
# @ all-in-one-wp-security-and-firewall
|
734 |
+
#: admin/wp-security-brute-force-menu.php:500
|
735 |
+
msgid "Therefore, adding a captcha form on the login page is another effective yet simple \"Brute Force\" prevention technique."
|
736 |
+
msgstr ""
|
737 |
+
|
738 |
+
# @ all-in-one-wp-security-and-firewall
|
739 |
+
#: admin/wp-security-brute-force-menu.php:506
|
740 |
+
msgid "Login Form Captcha Settings"
|
741 |
+
msgstr ""
|
742 |
+
|
743 |
+
# @ all-in-one-wp-security-and-firewall
|
744 |
+
#: admin/wp-security-brute-force-menu.php:517
|
745 |
+
msgid "Enable Captcha On Login Page"
|
746 |
+
msgstr ""
|
747 |
+
|
748 |
+
# @ all-in-one-wp-security-and-firewall
|
749 |
+
#: admin/wp-security-brute-force-menu.php:520
|
750 |
+
msgid "Check this if you want to insert a captcha form on the login page"
|
751 |
+
msgstr ""
|
752 |
+
|
753 |
+
# @ all-in-one-wp-security-and-firewall
|
754 |
+
#: admin/wp-security-brute-force-menu.php:526
|
755 |
+
msgid "Lost Password Form Captcha Settings"
|
756 |
+
msgstr ""
|
757 |
+
|
758 |
+
# @ all-in-one-wp-security-and-firewall
|
759 |
+
#: admin/wp-security-brute-force-menu.php:536
|
760 |
+
msgid "Enable Captcha On Lost Password Page"
|
761 |
+
msgstr ""
|
762 |
+
|
763 |
+
# @ all-in-one-wp-security-and-firewall
|
764 |
+
#: admin/wp-security-brute-force-menu.php:539
|
765 |
+
msgid "Check this if you want to insert a captcha form on the lost password page"
|
766 |
+
msgstr ""
|
767 |
+
|
768 |
+
# @ all-in-one-wp-security-and-firewall
|
769 |
+
#: admin/wp-security-brute-force-menu.php:561
|
770 |
+
msgid "Nonce check failed for save whitelist settings!"
|
771 |
+
msgstr ""
|
772 |
+
|
773 |
+
# @ all-in-one-wp-security-and-firewall
|
774 |
+
#: admin/wp-security-brute-force-menu.php:618
|
775 |
+
msgid "The All In One WP Security Whitelist feature gives you the option of only allowing certain IP addresses or ranges to have access to your WordPress login page."
|
776 |
+
msgstr ""
|
777 |
+
|
778 |
+
# @ all-in-one-wp-security-and-firewall
|
779 |
+
#: admin/wp-security-brute-force-menu.php:619
|
780 |
+
msgid "This feature will deny login access for all IP addresses which are not in your whitelist as configured in the settings below."
|
781 |
+
msgstr ""
|
782 |
+
|
783 |
+
# @ all-in-one-wp-security-and-firewall
|
784 |
+
#: admin/wp-security-brute-force-menu.php:620
|
785 |
+
msgid "The plugin achieves this by writing the appropriate directives to your .htaccess file."
|
786 |
+
msgstr ""
|
787 |
+
|
788 |
+
# @ all-in-one-wp-security-and-firewall
|
789 |
+
#: admin/wp-security-brute-force-menu.php:621
|
790 |
+
msgid "By allowing/blocking IP addresses via the .htaccess file your are using the most secure first line of defence because login access will only be granted to whitelisted IP addresses and other addresses will be blocked as soon as they try to access your login page."
|
791 |
+
msgstr ""
|
792 |
+
|
793 |
+
# @ all-in-one-wp-security-and-firewall
|
794 |
+
#: admin/wp-security-brute-force-menu.php:628
|
795 |
+
#, php-format
|
796 |
+
msgid "Attention: If in addition to enabling the white list feature, you also have the %s feature enabled, <strong>you will still need to use your secret word in the URL when trying to access your WordPress login page</strong>."
|
797 |
+
msgstr ""
|
798 |
+
|
799 |
+
# @ all-in-one-wp-security-and-firewall
|
800 |
+
#: admin/wp-security-brute-force-menu.php:629
|
801 |
+
msgid "These features are NOT functionally related. Having both of them enabled on your site means you are creating 2 layers of security."
|
802 |
+
msgstr ""
|
803 |
+
|
804 |
+
# @ all-in-one-wp-security-and-firewall
|
805 |
+
#: admin/wp-security-brute-force-menu.php:634
|
806 |
+
msgid "Login IP Whitelist Settings"
|
807 |
+
msgstr ""
|
808 |
+
|
809 |
+
# @ all-in-one-wp-security-and-firewall
|
810 |
+
#: admin/wp-security-brute-force-menu.php:645
|
811 |
+
msgid "Enable IP Whitelisting"
|
812 |
+
msgstr ""
|
813 |
+
|
814 |
+
# @ all-in-one-wp-security-and-firewall
|
815 |
+
#: admin/wp-security-brute-force-menu.php:648
|
816 |
+
msgid "Check this if you want to enable the whitelisting of selected IP addresses specified in the settings below"
|
817 |
+
msgstr ""
|
818 |
+
|
819 |
+
# @ all-in-one-wp-security-and-firewall
|
820 |
+
#: admin/wp-security-brute-force-menu.php:652
|
821 |
+
msgid "Your Current IP Address"
|
822 |
+
msgstr ""
|
823 |
+
|
824 |
+
# @ all-in-one-wp-security-and-firewall
|
825 |
+
#: admin/wp-security-brute-force-menu.php:655
|
826 |
+
msgid "You can copy and paste this address in the text box below if you want to include it in your login whitelist."
|
827 |
+
msgstr ""
|
828 |
+
|
829 |
+
# @ all-in-one-wp-security-and-firewall
|
830 |
+
#: admin/wp-security-brute-force-menu.php:659
|
831 |
+
msgid "Enter Whitelisted IP Addresses:"
|
832 |
+
msgstr ""
|
833 |
+
|
834 |
+
# @ all-in-one-wp-security-and-firewall
|
835 |
+
#: admin/wp-security-brute-force-menu.php:663
|
836 |
+
msgid "Enter one or more IP addresses or IP ranges you wish to include in your whitelist. Only the addresses specified here will have access to the WordPress login page."
|
837 |
+
msgstr ""
|
838 |
+
|
839 |
+
# @ all-in-one-wp-security-and-firewall
|
840 |
+
#: admin/wp-security-dashboard-menu.php:24
|
841 |
+
msgid "System Info"
|
842 |
+
msgstr ""
|
843 |
+
|
844 |
+
# @ all-in-one-wp-security-and-firewall
|
845 |
+
#: admin/wp-security-dashboard-menu.php:25
|
846 |
+
#: admin/wp-security-dashboard-menu.php:436
|
847 |
+
msgid "Locked IP Addresses"
|
848 |
+
msgstr ""
|
849 |
+
|
850 |
+
# @ all-in-one-wp-security-and-firewall
|
851 |
+
#: admin/wp-security-dashboard-menu.php:75
|
852 |
+
msgid "For information, updates and documentation, please visit the"
|
853 |
+
msgstr ""
|
854 |
+
|
855 |
+
# @ all-in-one-wp-security-and-firewall
|
856 |
+
#: admin/wp-security-dashboard-menu.php:75
|
857 |
+
msgid "AIO WP Security & Firewall Plugin"
|
858 |
+
msgstr ""
|
859 |
+
|
860 |
+
# @ all-in-one-wp-security-and-firewall
|
861 |
+
#: admin/wp-security-dashboard-menu.php:75
|
862 |
+
msgid "Page"
|
863 |
+
msgstr ""
|
864 |
+
|
865 |
+
# @ all-in-one-wp-security-and-firewall
|
866 |
+
#: admin/wp-security-dashboard-menu.php:76
|
867 |
+
msgid "Follow us"
|
868 |
+
msgstr ""
|
869 |
+
|
870 |
+
# @ all-in-one-wp-security-and-firewall
|
871 |
+
#: admin/wp-security-dashboard-menu.php:76
|
872 |
+
msgid "Twitter, Google+ or via Email to stay up to date about the new security features of this plugin."
|
873 |
+
msgstr ""
|
874 |
+
|
875 |
+
# @ all-in-one-wp-security-and-firewall
|
876 |
+
#: admin/wp-security-dashboard-menu.php:90
|
877 |
+
msgid "Security Strength Meter"
|
878 |
+
msgstr ""
|
879 |
+
|
880 |
+
# @ all-in-one-wp-security-and-firewall
|
881 |
+
#: admin/wp-security-dashboard-menu.php:119
|
882 |
+
msgid "Total Achievable Points: "
|
883 |
+
msgstr ""
|
884 |
+
|
885 |
+
# @ all-in-one-wp-security-and-firewall
|
886 |
+
#: admin/wp-security-dashboard-menu.php:121
|
887 |
+
msgid "Current Score of Your Site: "
|
888 |
+
msgstr ""
|
889 |
+
|
890 |
+
# @ all-in-one-wp-security-and-firewall
|
891 |
+
#: admin/wp-security-dashboard-menu.php:131
|
892 |
+
msgid "Security Points Breakdown"
|
893 |
+
msgstr ""
|
894 |
+
|
895 |
+
# @ all-in-one-wp-security-and-firewall
|
896 |
+
#: admin/wp-security-dashboard-menu.php:172
|
897 |
+
msgid "Critical Feature Status"
|
898 |
+
msgstr ""
|
899 |
+
|
900 |
+
# @ all-in-one-wp-security-and-firewall
|
901 |
+
#: admin/wp-security-dashboard-menu.php:176
|
902 |
+
msgid "Below is the current status of the critical features that you should activate on your site to achieve a minimum level of recommended security"
|
903 |
+
msgstr ""
|
904 |
+
|
905 |
+
# @ all-in-one-wp-security-and-firewall
|
906 |
+
#: admin/wp-security-dashboard-menu.php:180
|
907 |
+
msgid "Admin Username"
|
908 |
+
msgstr ""
|
909 |
+
|
910 |
+
# @ all-in-one-wp-security-and-firewall
|
911 |
+
#: admin/wp-security-dashboard-menu.php:195
|
912 |
+
#: admin/wp-security-user-login-menu.php:25
|
913 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:42
|
914 |
+
msgid "Login Lockdown"
|
915 |
+
msgstr ""
|
916 |
+
|
917 |
+
# @ all-in-one-wp-security-and-firewall
|
918 |
+
#: admin/wp-security-dashboard-menu.php:210
|
919 |
+
msgid "File Permission"
|
920 |
+
msgstr ""
|
921 |
+
|
922 |
+
# @ all-in-one-wp-security-and-firewall
|
923 |
+
#: admin/wp-security-dashboard-menu.php:225
|
924 |
+
msgid "Basic Firewall"
|
925 |
+
msgstr ""
|
926 |
+
|
927 |
+
# @ all-in-one-wp-security-and-firewall
|
928 |
+
#: admin/wp-security-dashboard-menu.php:243
|
929 |
+
msgid "Last 5 Logins"
|
930 |
+
msgstr ""
|
931 |
+
|
932 |
+
# @ all-in-one-wp-security-and-firewall
|
933 |
+
#: admin/wp-security-dashboard-menu.php:257
|
934 |
+
msgid "No data found!"
|
935 |
+
msgstr ""
|
936 |
+
|
937 |
+
# @ all-in-one-wp-security-and-firewall
|
938 |
+
#: admin/wp-security-dashboard-menu.php:261
|
939 |
+
msgid "Last 5 logins summary:"
|
940 |
+
msgstr ""
|
941 |
+
|
942 |
+
# @ all-in-one-wp-security-and-firewall
|
943 |
+
#: admin/wp-security-dashboard-menu.php:265
|
944 |
+
msgid "User"
|
945 |
+
msgstr ""
|
946 |
+
|
947 |
+
# @ all-in-one-wp-security-and-firewall
|
948 |
+
#: admin/wp-security-dashboard-menu.php:266
|
949 |
+
msgid "Date"
|
950 |
+
msgstr ""
|
951 |
+
|
952 |
+
# @ all-in-one-wp-security-and-firewall
|
953 |
+
#: admin/wp-security-dashboard-menu.php:267
|
954 |
+
msgid "IP"
|
955 |
+
msgstr ""
|
956 |
+
|
957 |
+
# @ all-in-one-wp-security-and-firewall
|
958 |
+
#: admin/wp-security-dashboard-menu.php:288
|
959 |
+
msgid "Maintenance Mode Status"
|
960 |
+
msgstr ""
|
961 |
+
|
962 |
+
# @ all-in-one-wp-security-and-firewall
|
963 |
+
#: admin/wp-security-dashboard-menu.php:292
|
964 |
+
msgid "Maintenance mode is currently enabled. Remember to turn it off when you are done"
|
965 |
+
msgstr ""
|
966 |
+
|
967 |
+
# @ all-in-one-wp-security-and-firewall
|
968 |
+
#: admin/wp-security-dashboard-menu.php:295
|
969 |
+
msgid "Maintenance mode is currently off."
|
970 |
+
msgstr ""
|
971 |
+
|
972 |
+
# @ all-in-one-wp-security-and-firewall
|
973 |
+
#: admin/wp-security-dashboard-menu.php:299
|
974 |
+
msgid "Maintenance Mode"
|
975 |
+
msgstr ""
|
976 |
+
|
977 |
+
# @ all-in-one-wp-security-and-firewall
|
978 |
+
#: admin/wp-security-dashboard-menu.php:321
|
979 |
+
msgid "Cookie Based Brute Prevention"
|
980 |
+
msgstr ""
|
981 |
+
|
982 |
+
# @ all-in-one-wp-security-and-firewall
|
983 |
+
#: admin/wp-security-dashboard-menu.php:324
|
984 |
+
msgid "Cookie-Based Brute Force"
|
985 |
+
msgstr ""
|
986 |
+
|
987 |
+
# @ all-in-one-wp-security-and-firewall
|
988 |
+
#: admin/wp-security-dashboard-menu.php:328
|
989 |
+
#: admin/wp-security-dashboard-menu.php:356
|
990 |
+
#, php-format
|
991 |
+
msgid "The %s feature is currently active."
|
992 |
+
msgstr ""
|
993 |
+
|
994 |
+
# @ all-in-one-wp-security-and-firewall
|
995 |
+
#: admin/wp-security-dashboard-menu.php:329
|
996 |
+
#: admin/wp-security-dashboard-menu.php:357
|
997 |
+
msgid "Your new WordPress login URL is now:"
|
998 |
+
msgstr ""
|
999 |
+
|
1000 |
+
# @ all-in-one-wp-security-and-firewall
|
1001 |
+
#: admin/wp-security-dashboard-menu.php:389
|
1002 |
+
#: admin/wp-security-user-login-menu.php:29
|
1003 |
+
msgid "Logged In Users"
|
1004 |
+
msgstr ""
|
1005 |
+
|
1006 |
+
# @ all-in-one-wp-security-and-firewall
|
1007 |
+
#: admin/wp-security-dashboard-menu.php:399
|
1008 |
+
msgid "Number of users currently logged in site-wide is:"
|
1009 |
+
msgstr ""
|
1010 |
+
|
1011 |
+
# @ all-in-one-wp-security-and-firewall
|
1012 |
+
#: admin/wp-security-dashboard-menu.php:400
|
1013 |
+
#: admin/wp-security-dashboard-menu.php:422
|
1014 |
+
#: admin/wp-security-dashboard-menu.php:450
|
1015 |
+
#, php-format
|
1016 |
+
msgid "Go to the %s menu to see more details"
|
1017 |
+
msgstr ""
|
1018 |
+
|
1019 |
+
# @ all-in-one-wp-security-and-firewall
|
1020 |
+
#: admin/wp-security-dashboard-menu.php:405
|
1021 |
+
msgid "There are no other site-wide users currently logged in."
|
1022 |
+
msgstr ""
|
1023 |
+
|
1024 |
+
# @ all-in-one-wp-security-and-firewall
|
1025 |
+
#: admin/wp-security-dashboard-menu.php:421
|
1026 |
+
msgid "Number of users currently logged into your site (including you) is:"
|
1027 |
+
msgstr ""
|
1028 |
+
|
1029 |
+
# @ all-in-one-wp-security-and-firewall
|
1030 |
+
#: admin/wp-security-dashboard-menu.php:427
|
1031 |
+
msgid "There are no other users currently logged in."
|
1032 |
+
msgstr ""
|
1033 |
+
|
1034 |
+
# @ all-in-one-wp-security-and-firewall
|
1035 |
+
#: admin/wp-security-dashboard-menu.php:444
|
1036 |
+
msgid "There are no IP addresses currently locked out."
|
1037 |
+
msgstr ""
|
1038 |
+
|
1039 |
+
# @ all-in-one-wp-security-and-firewall
|
1040 |
+
#: admin/wp-security-dashboard-menu.php:449
|
1041 |
+
msgid "Number of temporarily locked out IP addresses: "
|
1042 |
+
msgstr ""
|
1043 |
+
|
1044 |
+
# @ all-in-one-wp-security-and-firewall
|
1045 |
+
#: admin/wp-security-dashboard-menu.php:462
|
1046 |
+
msgid "Spread the Word"
|
1047 |
+
msgstr ""
|
1048 |
+
|
1049 |
+
# @ all-in-one-wp-security-and-firewall
|
1050 |
+
#: admin/wp-security-dashboard-menu.php:465
|
1051 |
+
msgid "We are working hard to make your WordPress site more secure. Please support us, here is how:"
|
1052 |
+
msgstr ""
|
1053 |
+
|
1054 |
+
# @ all-in-one-wp-security-and-firewall
|
1055 |
+
#: admin/wp-security-dashboard-menu.php:489
|
1056 |
+
msgid "Site Info"
|
1057 |
+
msgstr ""
|
1058 |
+
|
1059 |
+
# @ all-in-one-wp-security-and-firewall
|
1060 |
+
#: admin/wp-security-dashboard-menu.php:491
|
1061 |
+
msgid "Plugin Version"
|
1062 |
+
msgstr ""
|
1063 |
+
|
1064 |
+
# @ all-in-one-wp-security-and-firewall
|
1065 |
+
#: admin/wp-security-dashboard-menu.php:492
|
1066 |
+
msgid "WP Version"
|
1067 |
+
msgstr ""
|
1068 |
+
|
1069 |
+
# @ all-in-one-wp-security-and-firewall
|
1070 |
+
#: admin/wp-security-dashboard-menu.php:494
|
1071 |
+
#: admin/wp-security-dashboard-menu.php:496
|
1072 |
+
#: admin/wp-security-dashboard-menu.php:592
|
1073 |
+
msgid "Version"
|
1074 |
+
msgstr ""
|
1075 |
+
|
1076 |
+
# @ all-in-one-wp-security-and-firewall
|
1077 |
+
#: admin/wp-security-dashboard-menu.php:495
|
1078 |
+
msgid "Table Prefix"
|
1079 |
+
msgstr ""
|
1080 |
+
|
1081 |
+
# @ all-in-one-wp-security-and-firewall
|
1082 |
+
#: admin/wp-security-dashboard-menu.php:497
|
1083 |
+
msgid "Session Save Path"
|
1084 |
+
msgstr ""
|
1085 |
+
|
1086 |
+
# @ all-in-one-wp-security-and-firewall
|
1087 |
+
#: admin/wp-security-dashboard-menu.php:499
|
1088 |
+
msgid "Server Name"
|
1089 |
+
msgstr ""
|
1090 |
+
|
1091 |
+
# @ all-in-one-wp-security-and-firewall
|
1092 |
+
#: admin/wp-security-dashboard-menu.php:500
|
1093 |
+
msgid "Cookie Domain"
|
1094 |
+
msgstr ""
|
1095 |
+
|
1096 |
+
# @ all-in-one-wp-security-and-firewall
|
1097 |
+
#: admin/wp-security-dashboard-menu.php:501
|
1098 |
+
msgid "Library Present"
|
1099 |
+
msgstr ""
|
1100 |
+
|
1101 |
+
# @ all-in-one-wp-security-and-firewall
|
1102 |
+
#: admin/wp-security-dashboard-menu.php:502
|
1103 |
+
msgid "Debug File Write Permissions"
|
1104 |
+
msgstr ""
|
1105 |
+
|
1106 |
+
# @ all-in-one-wp-security-and-firewall
|
1107 |
+
#: admin/wp-security-dashboard-menu.php:506
|
1108 |
+
msgid "PHP Info"
|
1109 |
+
msgstr ""
|
1110 |
+
|
1111 |
+
# @ all-in-one-wp-security-and-firewall
|
1112 |
+
#: admin/wp-security-dashboard-menu.php:508
|
1113 |
+
msgid "PHP Version"
|
1114 |
+
msgstr ""
|
1115 |
+
|
1116 |
+
# @ all-in-one-wp-security-and-firewall
|
1117 |
+
#: admin/wp-security-dashboard-menu.php:509
|
1118 |
+
msgid "PHP Memory Usage"
|
1119 |
+
msgstr ""
|
1120 |
+
|
1121 |
+
# @ all-in-one-wp-security-and-firewall
|
1122 |
+
#: admin/wp-security-dashboard-menu.php:510
|
1123 |
+
msgid " MB"
|
1124 |
+
msgstr ""
|
1125 |
+
|
1126 |
+
# @ all-in-one-wp-security-and-firewall
|
1127 |
+
#: admin/wp-security-dashboard-menu.php:516
|
1128 |
+
#: admin/wp-security-dashboard-menu.php:524
|
1129 |
+
#: admin/wp-security-dashboard-menu.php:532
|
1130 |
+
#: admin/wp-security-dashboard-menu.php:574
|
1131 |
+
msgid "N/A"
|
1132 |
+
msgstr ""
|
1133 |
+
|
1134 |
+
# @ all-in-one-wp-security-and-firewall
|
1135 |
+
#: admin/wp-security-dashboard-menu.php:519
|
1136 |
+
msgid "PHP Memory Limit"
|
1137 |
+
msgstr ""
|
1138 |
+
|
1139 |
+
# @ all-in-one-wp-security-and-firewall
|
1140 |
+
#: admin/wp-security-dashboard-menu.php:527
|
1141 |
+
msgid "PHP Max Upload Size"
|
1142 |
+
msgstr ""
|
1143 |
+
|
1144 |
+
# @ all-in-one-wp-security-and-firewall
|
1145 |
+
#: admin/wp-security-dashboard-menu.php:535
|
1146 |
+
msgid "PHP Max Post Size"
|
1147 |
+
msgstr ""
|
1148 |
+
|
1149 |
+
# @ all-in-one-wp-security-and-firewall
|
1150 |
+
#: admin/wp-security-dashboard-menu.php:538
|
1151 |
+
#: admin/wp-security-dashboard-menu.php:546
|
1152 |
+
#: admin/wp-security-dashboard-menu.php:555
|
1153 |
+
#: admin/wp-security-dashboard-menu.php:563
|
1154 |
+
msgid "On"
|
1155 |
+
msgstr ""
|
1156 |
+
|
1157 |
+
# @ all-in-one-wp-security-and-firewall
|
1158 |
+
#: admin/wp-security-dashboard-menu.php:540
|
1159 |
+
#: admin/wp-security-dashboard-menu.php:548
|
1160 |
+
#: admin/wp-security-dashboard-menu.php:557
|
1161 |
+
#: admin/wp-security-dashboard-menu.php:565
|
1162 |
+
msgid "Off"
|
1163 |
+
msgstr ""
|
1164 |
+
|
1165 |
+
# @ all-in-one-wp-security-and-firewall
|
1166 |
+
#: admin/wp-security-dashboard-menu.php:543
|
1167 |
+
msgid "PHP Safe Mode"
|
1168 |
+
msgstr ""
|
1169 |
+
|
1170 |
+
# @ all-in-one-wp-security-and-firewall
|
1171 |
+
#: admin/wp-security-dashboard-menu.php:551
|
1172 |
+
msgid "PHP Allow URL fopen"
|
1173 |
+
msgstr ""
|
1174 |
+
|
1175 |
+
# @ default
|
1176 |
+
#: admin/wp-security-dashboard-menu.php:560
|
1177 |
+
msgid "PHP Allow URL Include"
|
1178 |
+
msgstr ""
|
1179 |
+
|
1180 |
+
# @ all-in-one-wp-security-and-firewall
|
1181 |
+
#: admin/wp-security-dashboard-menu.php:568
|
1182 |
+
msgid "PHP Display Errors"
|
1183 |
+
msgstr ""
|
1184 |
+
|
1185 |
+
# @ all-in-one-wp-security-and-firewall
|
1186 |
+
#: admin/wp-security-dashboard-menu.php:577
|
1187 |
+
msgid "PHP Max Script Execution Time"
|
1188 |
+
msgstr ""
|
1189 |
+
|
1190 |
+
# @ default
|
1191 |
+
#: admin/wp-security-dashboard-menu.php:577
|
1192 |
+
msgid "Seconds"
|
1193 |
+
msgstr ""
|
1194 |
+
|
1195 |
+
# @ all-in-one-wp-security-and-firewall
|
1196 |
+
#: admin/wp-security-dashboard-menu.php:581
|
1197 |
+
msgid "Active Plugins"
|
1198 |
+
msgstr ""
|
1199 |
+
|
1200 |
+
# @ all-in-one-wp-security-and-firewall
|
1201 |
+
#: admin/wp-security-dashboard-menu.php:591
|
1202 |
+
#: admin/wp-security-filesystem-menu.php:130
|
1203 |
+
#: admin/wp-security-filesystem-menu.php:149
|
1204 |
+
msgid "Name"
|
1205 |
+
msgstr ""
|
1206 |
+
|
1207 |
+
# @ all-in-one-wp-security-and-firewall
|
1208 |
+
#: admin/wp-security-dashboard-menu.php:593
|
1209 |
+
msgid "Plugin URL"
|
1210 |
+
msgstr ""
|
1211 |
+
|
1212 |
+
# @ all-in-one-wp-security-and-firewall
|
1213 |
+
#: admin/wp-security-dashboard-menu.php:629
|
1214 |
+
msgid "Currently Locked Out IP Addresses and Ranges"
|
1215 |
+
msgstr ""
|
1216 |
+
|
1217 |
+
# @ all-in-one-wp-security-and-firewall
|
1218 |
+
#: admin/wp-security-database-menu.php:26
|
1219 |
+
#: admin/wp-security-database-menu.php:31
|
1220 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:62
|
1221 |
+
msgid "DB Backup"
|
1222 |
+
msgstr ""
|
1223 |
+
|
1224 |
+
# @ all-in-one-wp-security-and-firewall
|
1225 |
+
#: admin/wp-security-database-menu.php:30
|
1226 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:60
|
1227 |
+
msgid "DB Prefix"
|
1228 |
+
msgstr ""
|
1229 |
+
|
1230 |
+
# @ all-in-one-wp-security-and-firewall
|
1231 |
+
#: admin/wp-security-database-menu.php:93
|
1232 |
+
msgid "Nonce check failed for DB prefix change operation!"
|
1233 |
+
msgstr ""
|
1234 |
+
|
1235 |
+
# @ all-in-one-wp-security-and-firewall
|
1236 |
+
#: admin/wp-security-database-menu.php:101
|
1237 |
+
msgid "The plugin has detected that it cannot write to the wp-config.php file. This feature can only be used if the plugin can successfully write to the wp-config.php file."
|
1238 |
+
msgstr ""
|
1239 |
+
|
1240 |
+
# @ all-in-one-wp-security-and-firewall
|
1241 |
+
#: admin/wp-security-database-menu.php:114
|
1242 |
+
msgid "Please enter a value for the DB prefix."
|
1243 |
+
msgstr ""
|
1244 |
+
|
1245 |
+
# @ all-in-one-wp-security-and-firewall
|
1246 |
+
#: admin/wp-security-database-menu.php:123
|
1247 |
+
msgid "<strong>ERROR</strong>: The table prefix can only contain numbers, letters, and underscores."
|
1248 |
+
msgstr ""
|
1249 |
+
|
1250 |
+
# @ all-in-one-wp-security-and-firewall
|
1251 |
+
#: admin/wp-security-database-menu.php:131
|
1252 |
+
msgid "Change Database Prefix"
|
1253 |
+
msgstr ""
|
1254 |
+
|
1255 |
+
# @ all-in-one-wp-security-and-firewall
|
1256 |
+
#: admin/wp-security-database-menu.php:134
|
1257 |
+
msgid "Your WordPress DB is the most important asset of your website because it contains a lot of your site's precious information."
|
1258 |
+
msgstr ""
|
1259 |
+
|
1260 |
+
# @ all-in-one-wp-security-and-firewall
|
1261 |
+
#: admin/wp-security-database-menu.php:135
|
1262 |
+
msgid "The DB is also a target for hackers via methods such as SQL injections and malicious and automated code which targets certain tables."
|
1263 |
+
msgstr ""
|
1264 |
+
|
1265 |
+
# @ all-in-one-wp-security-and-firewall
|
1266 |
+
#: admin/wp-security-database-menu.php:136
|
1267 |
+
msgid "One way to add a layer of protection for your DB is to change the default WordPress table prefix from \"wp_\" to something else which will be difficult for hackers to guess."
|
1268 |
+
msgstr ""
|
1269 |
+
|
1270 |
+
# @ all-in-one-wp-security-and-firewall
|
1271 |
+
#: admin/wp-security-database-menu.php:137
|
1272 |
+
msgid "This feature allows you to easily change the prefix to a value of your choice or to a random value set by this plugin."
|
1273 |
+
msgstr ""
|
1274 |
+
|
1275 |
+
# @ all-in-one-wp-security-and-firewall
|
1276 |
+
#: admin/wp-security-database-menu.php:143
|
1277 |
+
msgid "DB Prefix Options"
|
1278 |
+
msgstr ""
|
1279 |
+
|
1280 |
+
# @ all-in-one-wp-security-and-firewall
|
1281 |
+
#: admin/wp-security-database-menu.php:154
|
1282 |
+
#, php-format
|
1283 |
+
msgid "It is recommended that you perform a %s before using this feature"
|
1284 |
+
msgstr ""
|
1285 |
+
|
1286 |
+
# @ all-in-one-wp-security-and-firewall
|
1287 |
+
#: admin/wp-security-database-menu.php:163
|
1288 |
+
msgid "Current DB Table Prefix"
|
1289 |
+
msgstr ""
|
1290 |
+
|
1291 |
+
# @ all-in-one-wp-security-and-firewall
|
1292 |
+
#: admin/wp-security-database-menu.php:169
|
1293 |
+
msgid ""
|
1294 |
+
"Your site is currently using the default WordPress DB prefix value of \"wp_\". \n"
|
1295 |
+
" To increase your site's security you should consider changing the DB prefix value to another value."
|
1296 |
+
msgstr ""
|
1297 |
+
|
1298 |
+
# @ all-in-one-wp-security-and-firewall
|
1299 |
+
#: admin/wp-security-database-menu.php:176
|
1300 |
+
msgid "Generate New DB Table Prefix"
|
1301 |
+
msgstr ""
|
1302 |
+
|
1303 |
+
# @ all-in-one-wp-security-and-firewall
|
1304 |
+
#: admin/wp-security-database-menu.php:179
|
1305 |
+
msgid "Check this if you want the plugin to generate a random 6 character string for the table prefix"
|
1306 |
+
msgstr ""
|
1307 |
+
|
1308 |
+
# @ all-in-one-wp-security-and-firewall
|
1309 |
+
#: admin/wp-security-database-menu.php:180
|
1310 |
+
msgid "OR"
|
1311 |
+
msgstr ""
|
1312 |
+
|
1313 |
+
# @ all-in-one-wp-security-and-firewall
|
1314 |
+
#: admin/wp-security-database-menu.php:182
|
1315 |
+
msgid "Choose your own DB prefix by specifying a string which contains letters and/or numbers and/or underscores. Example: xyz_"
|
1316 |
+
msgstr ""
|
1317 |
+
|
1318 |
+
# @ all-in-one-wp-security-and-firewall
|
1319 |
+
#: admin/wp-security-database-menu.php:186
|
1320 |
+
msgid "Change DB Prefix"
|
1321 |
+
msgstr ""
|
1322 |
+
|
1323 |
+
# @ all-in-one-wp-security-and-firewall
|
1324 |
+
#: admin/wp-security-database-menu.php:207
|
1325 |
+
#: admin/wp-security-filesystem-menu.php:86
|
1326 |
+
msgid "Nonce check failed for manual DB backup operation!"
|
1327 |
+
msgstr ""
|
1328 |
+
|
1329 |
+
# @ all-in-one-wp-security-and-firewall
|
1330 |
+
#: admin/wp-security-database-menu.php:224
|
1331 |
+
msgid "DB Backup was successfully completed! You will receive the backup file via email if you have enabled \"Send Backup File Via Email\", otherwise you can retrieve it via FTP from the following directory:"
|
1332 |
+
msgstr ""
|
1333 |
+
|
1334 |
+
# @ default
|
1335 |
+
#: admin/wp-security-database-menu.php:226
|
1336 |
+
msgid "Your DB Backup File location: "
|
1337 |
+
msgstr ""
|
1338 |
+
|
1339 |
+
# @ all-in-one-wp-security-and-firewall
|
1340 |
+
#: admin/wp-security-database-menu.php:234
|
1341 |
+
msgid "DB Backup failed. Please check the permissions of the backup directory."
|
1342 |
+
msgstr ""
|
1343 |
+
|
1344 |
+
# @ all-in-one-wp-security-and-firewall
|
1345 |
+
#: admin/wp-security-database-menu.php:251
|
1346 |
+
#: admin/wp-security-filescan-menu.php:133
|
1347 |
+
msgid "You entered a non numeric value for the \"backup time interval\" field. It has been set to the default value."
|
1348 |
+
msgstr ""
|
1349 |
+
|
1350 |
+
# @ all-in-one-wp-security-and-firewall
|
1351 |
+
#: admin/wp-security-database-menu.php:258
|
1352 |
+
msgid "You entered a non numeric value for the \"number of backup files to keep\" field. It has been set to the default value."
|
1353 |
+
msgstr ""
|
1354 |
+
|
1355 |
+
# @ all-in-one-wp-security-and-firewall
|
1356 |
+
#: admin/wp-security-database-menu.php:265
|
1357 |
+
#: admin/wp-security-filescan-menu.php:163
|
1358 |
+
#: admin/wp-security-user-login-menu.php:117
|
1359 |
+
msgid "You have entered an incorrect email address format. It has been set to your WordPress admin email as default."
|
1360 |
+
msgstr ""
|
1361 |
+
|
1362 |
+
# @ all-in-one-wp-security-and-firewall
|
1363 |
+
#: admin/wp-security-database-menu.php:298
|
1364 |
+
msgid "Manual Backup"
|
1365 |
+
msgstr ""
|
1366 |
+
|
1367 |
+
# @ all-in-one-wp-security-and-firewall
|
1368 |
+
#: admin/wp-security-database-menu.php:304
|
1369 |
+
msgid "To create a new DB backup just click on the button below."
|
1370 |
+
msgstr ""
|
1371 |
+
|
1372 |
+
# @ all-in-one-wp-security-and-firewall
|
1373 |
+
#: admin/wp-security-database-menu.php:307
|
1374 |
+
msgid "Create DB Backup Now"
|
1375 |
+
msgstr ""
|
1376 |
+
|
1377 |
+
# @ all-in-one-wp-security-and-firewall
|
1378 |
+
#: admin/wp-security-database-menu.php:311
|
1379 |
+
msgid "Automated Scheduled Backups"
|
1380 |
+
msgstr ""
|
1381 |
+
|
1382 |
+
# @ all-in-one-wp-security-and-firewall
|
1383 |
+
#: admin/wp-security-database-menu.php:323
|
1384 |
+
msgid "Enable Automated Scheduled Backups"
|
1385 |
+
msgstr ""
|
1386 |
+
|
1387 |
+
# @ all-in-one-wp-security-and-firewall
|
1388 |
+
#: admin/wp-security-database-menu.php:326
|
1389 |
+
msgid "Check this if you want the system to automatically generate backups periodically based on the settings below"
|
1390 |
+
msgstr ""
|
1391 |
+
|
1392 |
+
# @ all-in-one-wp-security-and-firewall
|
1393 |
+
#: admin/wp-security-database-menu.php:330
|
1394 |
+
msgid "Backup Time Interval"
|
1395 |
+
msgstr ""
|
1396 |
+
|
1397 |
+
# @ all-in-one-wp-security-and-firewall
|
1398 |
+
#: admin/wp-security-database-menu.php:333
|
1399 |
+
#: admin/wp-security-filescan-menu.php:279
|
1400 |
+
msgid "Hours"
|
1401 |
+
msgstr ""
|
1402 |
+
|
1403 |
+
# @ all-in-one-wp-security-and-firewall
|
1404 |
+
#: admin/wp-security-database-menu.php:334
|
1405 |
+
#: admin/wp-security-filescan-menu.php:280
|
1406 |
+
msgid "Days"
|
1407 |
+
msgstr ""
|
1408 |
+
|
1409 |
+
# @ all-in-one-wp-security-and-firewall
|
1410 |
+
#: admin/wp-security-database-menu.php:335
|
1411 |
+
#: admin/wp-security-filescan-menu.php:281
|
1412 |
+
msgid "Weeks"
|
1413 |
+
msgstr ""
|
1414 |
+
|
1415 |
+
# @ all-in-one-wp-security-and-firewall
|
1416 |
+
#: admin/wp-security-database-menu.php:337
|
1417 |
+
msgid "Set the value for how often you would like an automated backup to occur"
|
1418 |
+
msgstr ""
|
1419 |
+
|
1420 |
+
# @ all-in-one-wp-security-and-firewall
|
1421 |
+
#: admin/wp-security-database-menu.php:341
|
1422 |
+
msgid "Number of Backup Files To Keep"
|
1423 |
+
msgstr ""
|
1424 |
+
|
1425 |
+
# @ all-in-one-wp-security-and-firewall
|
1426 |
+
#: admin/wp-security-database-menu.php:343
|
1427 |
+
msgid "Thie field allows you to choose the number of backup files you would like to keep in the backup directory"
|
1428 |
+
msgstr ""
|
1429 |
+
|
1430 |
+
# @ all-in-one-wp-security-and-firewall
|
1431 |
+
#: admin/wp-security-database-menu.php:347
|
1432 |
+
msgid "Send Backup File Via Email"
|
1433 |
+
msgstr ""
|
1434 |
+
|
1435 |
+
# @ all-in-one-wp-security-and-firewall
|
1436 |
+
#: admin/wp-security-database-menu.php:350
|
1437 |
+
msgid "Check this if you want the system to email you the backup file after a DB backup has been performed"
|
1438 |
+
msgstr ""
|
1439 |
+
|
1440 |
+
# @ all-in-one-wp-security-and-firewall
|
1441 |
+
#: admin/wp-security-database-menu.php:352
|
1442 |
+
#: admin/wp-security-filescan-menu.php:325
|
1443 |
+
#: admin/wp-security-user-login-menu.php:235
|
1444 |
+
msgid "Enter an email address"
|
1445 |
+
msgstr ""
|
1446 |
+
|
1447 |
+
# @ all-in-one-wp-security-and-firewall
|
1448 |
+
#: admin/wp-security-database-menu.php:383
|
1449 |
+
msgid "Error - Could not get tables or no tables found!"
|
1450 |
+
msgstr ""
|
1451 |
+
|
1452 |
+
# @ all-in-one-wp-security-and-firewall
|
1453 |
+
#: admin/wp-security-database-menu.php:388
|
1454 |
+
msgid "Starting DB prefix change operations....."
|
1455 |
+
msgstr ""
|
1456 |
+
|
1457 |
+
# @ all-in-one-wp-security-and-firewall
|
1458 |
+
#: admin/wp-security-database-menu.php:390
|
1459 |
+
#, php-format
|
1460 |
+
msgid "Your WordPress system has a total of %s tables and your new DB prefix will be: %s"
|
1461 |
+
msgstr ""
|
1462 |
+
|
1463 |
+
# @ all-in-one-wp-security-and-firewall
|
1464 |
+
#: admin/wp-security-database-menu.php:396 classes/wp-security-utility.php:206
|
1465 |
+
msgid "Failed to make a backup of the wp-config.php file. This operation will not go ahead."
|
1466 |
+
msgstr ""
|
1467 |
+
|
1468 |
+
# @ all-in-one-wp-security-and-firewall
|
1469 |
+
#: admin/wp-security-database-menu.php:400
|
1470 |
+
msgid "A backup copy of your wp-config.php file was created successfully!"
|
1471 |
+
msgstr ""
|
1472 |
+
|
1473 |
+
# @ all-in-one-wp-security-and-firewall
|
1474 |
+
#: admin/wp-security-database-menu.php:422
|
1475 |
+
#, php-format
|
1476 |
+
msgid "%s table name update failed"
|
1477 |
+
msgstr ""
|
1478 |
+
|
1479 |
+
# @ all-in-one-wp-security-and-firewall
|
1480 |
+
#: admin/wp-security-database-menu.php:434
|
1481 |
+
#, php-format
|
1482 |
+
msgid "Please change the prefix manually for the above tables to: %s"
|
1483 |
+
msgstr ""
|
1484 |
+
|
1485 |
+
# @ all-in-one-wp-security-and-firewall
|
1486 |
+
#: admin/wp-security-database-menu.php:437
|
1487 |
+
#, php-format
|
1488 |
+
msgid "%s tables had their prefix updated successfully!"
|
1489 |
+
msgstr ""
|
1490 |
+
|
1491 |
+
# @ all-in-one-wp-security-and-firewall
|
1492 |
+
#: admin/wp-security-database-menu.php:452
|
1493 |
+
msgid "wp-config.php file was updated successfully!"
|
1494 |
+
msgstr ""
|
1495 |
+
|
1496 |
+
# @ all-in-one-wp-security-and-firewall
|
1497 |
+
#: admin/wp-security-database-menu.php:455
|
1498 |
+
#, php-format
|
1499 |
+
msgid ""
|
1500 |
+
"The \"wp-config.php\" file was not able to be modified. Please modify this file manually using your favourite editor and search \n"
|
1501 |
+
" for variable \"$table_prefix\" and assign the following value to that variable: %s"
|
1502 |
+
msgstr ""
|
1503 |
+
|
1504 |
+
# @ all-in-one-wp-security-and-firewall
|
1505 |
+
#: admin/wp-security-database-menu.php:476
|
1506 |
+
msgid "There was an error when updating the options table."
|
1507 |
+
msgstr ""
|
1508 |
+
|
1509 |
+
# @ all-in-one-wp-security-and-firewall
|
1510 |
+
#: admin/wp-security-database-menu.php:480
|
1511 |
+
msgid "The options table records which had references to the old DB prefix were updated successfully!"
|
1512 |
+
msgstr ""
|
1513 |
+
|
1514 |
+
# @ all-in-one-wp-security-and-firewall
|
1515 |
+
#: admin/wp-security-database-menu.php:505
|
1516 |
+
#, php-format
|
1517 |
+
msgid "Error updating user_meta table where new meta_key = %s, old meta_key = %s and user_id = %s."
|
1518 |
+
msgstr ""
|
1519 |
+
|
1520 |
+
# @ all-in-one-wp-security-and-firewall
|
1521 |
+
#: admin/wp-security-database-menu.php:511
|
1522 |
+
msgid "The usermeta table records which had references to the old DB prefix were updated successfully!"
|
1523 |
+
msgstr ""
|
1524 |
+
|
1525 |
+
# @ all-in-one-wp-security-and-firewall
|
1526 |
+
#: admin/wp-security-database-menu.php:513
|
1527 |
+
msgid "DB prefix change tasks have been completed."
|
1528 |
+
msgstr ""
|
1529 |
+
|
1530 |
+
# @ all-in-one-wp-security-and-firewall
|
1531 |
+
#: admin/wp-security-filescan-menu.php:23
|
1532 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:102
|
1533 |
+
msgid "File Change Detection"
|
1534 |
+
msgstr ""
|
1535 |
+
|
1536 |
+
# @ all-in-one-wp-security-and-firewall
|
1537 |
+
#: admin/wp-security-filescan-menu.php:24
|
1538 |
+
msgid "Malware Scan"
|
1539 |
+
msgstr ""
|
1540 |
+
|
1541 |
+
# @ all-in-one-wp-security-and-firewall
|
1542 |
+
#: admin/wp-security-filescan-menu.php:93
|
1543 |
+
msgid "There have been no file changes since the last scan."
|
1544 |
+
msgstr ""
|
1545 |
+
|
1546 |
+
# @ all-in-one-wp-security-and-firewall
|
1547 |
+
#: admin/wp-security-filescan-menu.php:103
|
1548 |
+
msgid "Nonce check failed for manual file change detection scan operation!"
|
1549 |
+
msgstr ""
|
1550 |
+
|
1551 |
+
# @ all-in-one-wp-security-and-firewall
|
1552 |
+
#: admin/wp-security-filescan-menu.php:110
|
1553 |
+
msgid "The plugin has detected that this is your first file change detection scan. The file details from this scan will be used to detect file changes for future scans!"
|
1554 |
+
msgstr ""
|
1555 |
+
|
1556 |
+
# @ all-in-one-wp-security-and-firewall
|
1557 |
+
#: admin/wp-security-filescan-menu.php:112
|
1558 |
+
msgid "Scan Complete - There were no file changes detected!"
|
1559 |
+
msgstr ""
|
1560 |
+
|
1561 |
+
# @ all-in-one-wp-security-and-firewall
|
1562 |
+
#: admin/wp-security-filescan-menu.php:201
|
1563 |
+
msgid ""
|
1564 |
+
"NEW SCAN COMPLETED: The plugin has detected that you have made changes to the \"File Types To Ignore\" or \"Files To Ignore\" fields.\n"
|
1565 |
+
" In order to ensure that future scan results are accurate, the old scan data has been refreshed."
|
1566 |
+
msgstr ""
|
1567 |
+
|
1568 |
+
# @ all-in-one-wp-security-and-firewall
|
1569 |
+
#: admin/wp-security-filescan-menu.php:211
|
1570 |
+
msgid "All In One WP Security & Firewall has detected that there was a change in your host's files."
|
1571 |
+
msgstr ""
|
1572 |
+
|
1573 |
+
# @ all-in-one-wp-security-and-firewall
|
1574 |
+
#: admin/wp-security-filescan-menu.php:213
|
1575 |
+
msgid "View Scan Details & Clear This Message"
|
1576 |
+
msgstr ""
|
1577 |
+
|
1578 |
+
# @ all-in-one-wp-security-and-firewall
|
1579 |
+
#: admin/wp-security-filescan-menu.php:222
|
1580 |
+
msgid "If given an opportunity hackers can insert their code or files into your system which they can then use to carry out malicious acts on your site."
|
1581 |
+
msgstr ""
|
1582 |
+
|
1583 |
+
# @ all-in-one-wp-security-and-firewall
|
1584 |
+
#: admin/wp-security-filescan-menu.php:223
|
1585 |
+
msgid "Being informed of any changes in your files can be a good way to quickly prevent a hacker from causing damage to your website."
|
1586 |
+
msgstr ""
|
1587 |
+
|
1588 |
+
# @ all-in-one-wp-security-and-firewall
|
1589 |
+
#: admin/wp-security-filescan-menu.php:224
|
1590 |
+
msgid "In general, WordPress core and plugin files and file types such as \".php\" or \".js\" should not change often and when they do, it is important that you are made aware when a change occurs and which file was affected."
|
1591 |
+
msgstr ""
|
1592 |
+
|
1593 |
+
# @ all-in-one-wp-security-and-firewall
|
1594 |
+
#: admin/wp-security-filescan-menu.php:225
|
1595 |
+
msgid "The \"File Change Detection Feature\" will notify you of any file change which occurs on your system, including the addition and deletion of files by performing a regular automated or manual scan of your system's files."
|
1596 |
+
msgstr ""
|
1597 |
+
|
1598 |
+
# @ all-in-one-wp-security-and-firewall
|
1599 |
+
#: admin/wp-security-filescan-menu.php:226
|
1600 |
+
msgid "This feature also allows you to exclude certain files or folders from the scan in cases where you know that they change often as part of their normal operation. (For example log files and certain caching plugin files may change often and hence you may choose to exclude such files from the file change detection scan)"
|
1601 |
+
msgstr ""
|
1602 |
+
|
1603 |
+
# @ all-in-one-wp-security-and-firewall
|
1604 |
+
#: admin/wp-security-filescan-menu.php:231
|
1605 |
+
msgid "Manual File Change Detection Scan"
|
1606 |
+
msgstr ""
|
1607 |
+
|
1608 |
+
# @ all-in-one-wp-security-and-firewall
|
1609 |
+
#: admin/wp-security-filescan-menu.php:237
|
1610 |
+
msgid "To perform a manual file change detection scan click on the button below."
|
1611 |
+
msgstr ""
|
1612 |
+
|
1613 |
+
# @ all-in-one-wp-security-and-firewall
|
1614 |
+
#: admin/wp-security-filescan-menu.php:240
|
1615 |
+
msgid "Perform Scan Now"
|
1616 |
+
msgstr ""
|
1617 |
+
|
1618 |
+
# @ all-in-one-wp-security-and-firewall
|
1619 |
+
#: admin/wp-security-filescan-menu.php:244
|
1620 |
+
msgid "View Last Saved File Change Results"
|
1621 |
+
msgstr ""
|
1622 |
+
|
1623 |
+
# @ all-in-one-wp-security-and-firewall
|
1624 |
+
#: admin/wp-security-filescan-menu.php:250
|
1625 |
+
msgid "Click the button below to view the saved file change results from the last scan."
|
1626 |
+
msgstr ""
|
1627 |
+
|
1628 |
+
# @ all-in-one-wp-security-and-firewall
|
1629 |
+
#: admin/wp-security-filescan-menu.php:253
|
1630 |
+
msgid "View Last File Change"
|
1631 |
+
msgstr ""
|
1632 |
+
|
1633 |
+
# @ all-in-one-wp-security-and-firewall
|
1634 |
+
#: admin/wp-security-filescan-menu.php:257
|
1635 |
+
msgid "File Change Detection Settings"
|
1636 |
+
msgstr ""
|
1637 |
+
|
1638 |
+
# @ all-in-one-wp-security-and-firewall
|
1639 |
+
#: admin/wp-security-filescan-menu.php:269
|
1640 |
+
msgid "Enable Automated File Change Detection Scan"
|
1641 |
+
msgstr ""
|
1642 |
+
|
1643 |
+
# @ all-in-one-wp-security-and-firewall
|
1644 |
+
#: admin/wp-security-filescan-menu.php:272
|
1645 |
+
msgid "Check this if you want the system to automatically/periodically scan your files to check for file changes based on the settings below"
|
1646 |
+
msgstr ""
|
1647 |
+
|
1648 |
+
# @ all-in-one-wp-security-and-firewall
|
1649 |
+
#: admin/wp-security-filescan-menu.php:276
|
1650 |
+
msgid "Scan Time Interval"
|
1651 |
+
msgstr ""
|
1652 |
+
|
1653 |
+
# @ all-in-one-wp-security-and-firewall
|
1654 |
+
#: admin/wp-security-filescan-menu.php:283
|
1655 |
+
msgid "Set the value for how often you would like a scan to occur"
|
1656 |
+
msgstr ""
|
1657 |
+
|
1658 |
+
# @ all-in-one-wp-security-and-firewall
|
1659 |
+
#: admin/wp-security-filescan-menu.php:287
|
1660 |
+
msgid "File Types To Ignore"
|
1661 |
+
msgstr ""
|
1662 |
+
|
1663 |
+
# @ all-in-one-wp-security-and-firewall
|
1664 |
+
#: admin/wp-security-filescan-menu.php:290
|
1665 |
+
msgid "Enter each file type or extension on a new line which you wish to exclude from the file change detection scan."
|
1666 |
+
msgstr ""
|
1667 |
+
|
1668 |
+
# @ all-in-one-wp-security-and-firewall
|
1669 |
+
#: admin/wp-security-filescan-menu.php:294
|
1670 |
+
msgid "You can exclude file types from the scan which would not normally pose any security threat if they were changed. These can include things such as image files."
|
1671 |
+
msgstr ""
|
1672 |
+
|
1673 |
+
# @ all-in-one-wp-security-and-firewall
|
1674 |
+
#: admin/wp-security-filescan-menu.php:295
|
1675 |
+
msgid "Example: If you want the scanner to ignore files of type jpg, png, and bmp, then you would enter the following:"
|
1676 |
+
msgstr ""
|
1677 |
+
|
1678 |
+
# @ all-in-one-wp-security-and-firewall
|
1679 |
+
#: admin/wp-security-filescan-menu.php:296
|
1680 |
+
msgid "jpg"
|
1681 |
+
msgstr ""
|
1682 |
+
|
1683 |
+
# @ all-in-one-wp-security-and-firewall
|
1684 |
+
#: admin/wp-security-filescan-menu.php:297
|
1685 |
+
msgid "png"
|
1686 |
+
msgstr ""
|
1687 |
+
|
1688 |
+
# @ all-in-one-wp-security-and-firewall
|
1689 |
+
#: admin/wp-security-filescan-menu.php:298
|
1690 |
+
msgid "bmp"
|
1691 |
+
msgstr ""
|
1692 |
+
|
1693 |
+
# @ all-in-one-wp-security-and-firewall
|
1694 |
+
#: admin/wp-security-filescan-menu.php:304
|
1695 |
+
msgid "Files/Directories To Ignore"
|
1696 |
+
msgstr ""
|
1697 |
+
|
1698 |
+
# @ all-in-one-wp-security-and-firewall
|
1699 |
+
#: admin/wp-security-filescan-menu.php:307
|
1700 |
+
msgid "Enter each file or directory on a new line which you wish to exclude from the file change detection scan."
|
1701 |
+
msgstr ""
|
1702 |
+
|
1703 |
+
# @ all-in-one-wp-security-and-firewall
|
1704 |
+
#: admin/wp-security-filescan-menu.php:311
|
1705 |
+
msgid "You can exclude specific files/directories from the scan which would not normally pose any security threat if they were changed. These can include things such as log files."
|
1706 |
+
msgstr ""
|
1707 |
+
|
1708 |
+
# @ all-in-one-wp-security-and-firewall
|
1709 |
+
#: admin/wp-security-filescan-menu.php:312
|
1710 |
+
msgid "Example: If you want the scanner to ignore certain files in different directories or whole directories, then you would enter the following:"
|
1711 |
+
msgstr ""
|
1712 |
+
|
1713 |
+
# @ all-in-one-wp-security-and-firewall
|
1714 |
+
#: admin/wp-security-filescan-menu.php:313
|
1715 |
+
msgid "cache/config/master.php"
|
1716 |
+
msgstr ""
|
1717 |
+
|
1718 |
+
# @ all-in-one-wp-security-and-firewall
|
1719 |
+
#: admin/wp-security-filescan-menu.php:314
|
1720 |
+
msgid "somedirectory"
|
1721 |
+
msgstr ""
|
1722 |
+
|
1723 |
+
# @ all-in-one-wp-security-and-firewall
|
1724 |
+
#: admin/wp-security-filescan-menu.php:320
|
1725 |
+
msgid "Send Email When Change Detected"
|
1726 |
+
msgstr ""
|
1727 |
+
|
1728 |
+
# @ all-in-one-wp-security-and-firewall
|
1729 |
+
#: admin/wp-security-filescan-menu.php:323
|
1730 |
+
msgid "Check this if you want the system to email you if a file change was detected"
|
1731 |
+
msgstr ""
|
1732 |
+
|
1733 |
+
# @ all-in-one-wp-security-and-firewall
|
1734 |
+
#: admin/wp-security-filescan-menu.php:341
|
1735 |
+
msgid "What is Malware?"
|
1736 |
+
msgstr ""
|
1737 |
+
|
1738 |
+
# @ all-in-one-wp-security-and-firewall
|
1739 |
+
#: admin/wp-security-filescan-menu.php:342
|
1740 |
+
msgid "The word Malware stands for Malicious Software. It can consist of things like trojan horses, adware, worms, spyware and any other undesirable code which a hacker will try to inject into your website."
|
1741 |
+
msgstr ""
|
1742 |
+
|
1743 |
+
# @ all-in-one-wp-security-and-firewall
|
1744 |
+
#: admin/wp-security-filescan-menu.php:343
|
1745 |
+
msgid "Often when malware code has been inserted into your site you will normally not notice anything out of the ordinary based on appearances, but it can have a dramatic effect on your site’s search ranking."
|
1746 |
+
msgstr ""
|
1747 |
+
|
1748 |
+
# @ all-in-one-wp-security-and-firewall
|
1749 |
+
#: admin/wp-security-filescan-menu.php:344
|
1750 |
+
msgid "This is because the bots and spiders from search engines such as Google have the capability to detect malware when they are indexing the pages on your site, and consequently they can blacklist your website which will in turn affect your search rankings."
|
1751 |
+
msgstr ""
|
1752 |
+
|
1753 |
+
# @ all-in-one-wp-security-and-firewall
|
1754 |
+
#: admin/wp-security-filescan-menu.php:348
|
1755 |
+
msgid "Scanning For Malware"
|
1756 |
+
msgstr ""
|
1757 |
+
|
1758 |
+
# @ all-in-one-wp-security-and-firewall
|
1759 |
+
#: admin/wp-security-filescan-menu.php:349
|
1760 |
+
msgid "Due to the constantly changing and complex nature of Malware, scanning for such things using a standalone plugin will not work reliably. This is something best done via an external scan of your site regularly."
|
1761 |
+
msgstr ""
|
1762 |
+
|
1763 |
+
# @ all-in-one-wp-security-and-firewall
|
1764 |
+
#: admin/wp-security-filescan-menu.php:350
|
1765 |
+
msgid "This is why we have created an easy-to-use scanning service which is hosted off our own server which will scan your site for malware once every day and notify you if it finds anything."
|
1766 |
+
msgstr ""
|
1767 |
+
|
1768 |
+
# @ all-in-one-wp-security-and-firewall
|
1769 |
+
#: admin/wp-security-filescan-menu.php:351
|
1770 |
+
msgid "When you sign up for this service you will get the following:"
|
1771 |
+
msgstr ""
|
1772 |
+
|
1773 |
+
# @ all-in-one-wp-security-and-firewall
|
1774 |
+
#: admin/wp-security-filescan-menu.php:353
|
1775 |
+
msgid "Automatic Daily Scan of 1 Website"
|
1776 |
+
msgstr ""
|
1777 |
+
|
1778 |
+
# @ all-in-one-wp-security-and-firewall
|
1779 |
+
#: admin/wp-security-filescan-menu.php:354
|
1780 |
+
msgid "Automatic Malware & Blacklist Monitoring"
|
1781 |
+
msgstr ""
|
1782 |
+
|
1783 |
+
# @ all-in-one-wp-security-and-firewall
|
1784 |
+
#: admin/wp-security-filescan-menu.php:355
|
1785 |
+
msgid "Automatic Email Alerting"
|
1786 |
+
msgstr ""
|
1787 |
+
|
1788 |
+
# @ all-in-one-wp-security-and-firewall
|
1789 |
+
#: admin/wp-security-filescan-menu.php:356
|
1790 |
+
msgid "Site uptime monitoring"
|
1791 |
+
msgstr ""
|
1792 |
+
|
1793 |
+
# @ all-in-one-wp-security-and-firewall
|
1794 |
+
#: admin/wp-security-filescan-menu.php:357
|
1795 |
+
msgid "Site response time monitoring"
|
1796 |
+
msgstr ""
|
1797 |
+
|
1798 |
+
# @ all-in-one-wp-security-and-firewall
|
1799 |
+
#: admin/wp-security-filescan-menu.php:358
|
1800 |
+
msgid "Malware Cleanup"
|
1801 |
+
msgstr ""
|
1802 |
+
|
1803 |
+
# @ all-in-one-wp-security-and-firewall
|
1804 |
+
#: admin/wp-security-filescan-menu.php:359
|
1805 |
+
msgid "Blacklist Removal"
|
1806 |
+
msgstr ""
|
1807 |
+
|
1808 |
+
# @ all-in-one-wp-security-and-firewall
|
1809 |
+
#: admin/wp-security-filescan-menu.php:360
|
1810 |
+
msgid "No Contract (Cancel Anytime)"
|
1811 |
+
msgstr ""
|
1812 |
+
|
1813 |
+
# @ all-in-one-wp-security-and-firewall
|
1814 |
+
#: admin/wp-security-filescan-menu.php:362
|
1815 |
+
#, php-format
|
1816 |
+
msgid "To learn more please %s."
|
1817 |
+
msgstr ""
|
1818 |
+
|
1819 |
+
# @ all-in-one-wp-security-and-firewall
|
1820 |
+
#: admin/wp-security-filescan-menu.php:391
|
1821 |
+
msgid "Latest File Change Scan Results"
|
1822 |
+
msgstr ""
|
1823 |
+
|
1824 |
+
# @ all-in-one-wp-security-and-firewall
|
1825 |
+
#: admin/wp-security-filescan-menu.php:400
|
1826 |
+
msgid "The following files were added to your host."
|
1827 |
+
msgstr ""
|
1828 |
+
|
1829 |
+
# @ all-in-one-wp-security-and-firewall
|
1830 |
+
#: admin/wp-security-filescan-menu.php:403
|
1831 |
+
#: admin/wp-security-filescan-menu.php:424
|
1832 |
+
#: admin/wp-security-filescan-menu.php:448
|
1833 |
+
#: admin/wp-security-settings-menu.php:26
|
1834 |
+
#: admin/wp-security-settings-menu.php:27
|
1835 |
+
msgid "File"
|
1836 |
+
msgstr ""
|
1837 |
+
|
1838 |
+
# @ all-in-one-wp-security-and-firewall
|
1839 |
+
#: admin/wp-security-filescan-menu.php:404
|
1840 |
+
#: admin/wp-security-filescan-menu.php:425
|
1841 |
+
#: admin/wp-security-filescan-menu.php:449
|
1842 |
+
msgid "File Size"
|
1843 |
+
msgstr ""
|
1844 |
+
|
1845 |
+
# @ all-in-one-wp-security-and-firewall
|
1846 |
+
#: admin/wp-security-filescan-menu.php:405
|
1847 |
+
#: admin/wp-security-filescan-menu.php:426
|
1848 |
+
#: admin/wp-security-filescan-menu.php:450
|
1849 |
+
msgid "File Modified"
|
1850 |
+
msgstr ""
|
1851 |
+
|
1852 |
+
# @ all-in-one-wp-security-and-firewall
|
1853 |
+
#: admin/wp-security-filescan-menu.php:421
|
1854 |
+
msgid "The following files were removed from your host."
|
1855 |
+
msgstr ""
|
1856 |
+
|
1857 |
+
# @ all-in-one-wp-security-and-firewall
|
1858 |
+
#: admin/wp-security-filescan-menu.php:445
|
1859 |
+
msgid "The following files were changed on your host."
|
1860 |
+
msgstr ""
|
1861 |
+
|
1862 |
+
# @ all-in-one-wp-security-and-firewall
|
1863 |
+
#: admin/wp-security-filesystem-menu.php:26
|
1864 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:66
|
1865 |
+
msgid "File Permissions"
|
1866 |
+
msgstr ""
|
1867 |
+
|
1868 |
+
# @ all-in-one-wp-security-and-firewall
|
1869 |
+
#: admin/wp-security-filesystem-menu.php:27
|
1870 |
+
msgid "PHP File Editing"
|
1871 |
+
msgstr ""
|
1872 |
+
|
1873 |
+
# @ all-in-one-wp-security-and-firewall
|
1874 |
+
#: admin/wp-security-filesystem-menu.php:28
|
1875 |
+
msgid "WP File Access"
|
1876 |
+
msgstr ""
|
1877 |
+
|
1878 |
+
# @ all-in-one-wp-security-and-firewall
|
1879 |
+
#: admin/wp-security-filesystem-menu.php:29
|
1880 |
+
msgid "Host System Logs"
|
1881 |
+
msgstr ""
|
1882 |
+
|
1883 |
+
# @ all-in-one-wp-security-and-firewall
|
1884 |
+
#: admin/wp-security-filesystem-menu.php:96
|
1885 |
+
#, php-format
|
1886 |
+
msgid "The permissions for %s were succesfully changed to %s"
|
1887 |
+
msgstr ""
|
1888 |
+
|
1889 |
+
# @ all-in-one-wp-security-and-firewall
|
1890 |
+
#: admin/wp-security-filesystem-menu.php:100
|
1891 |
+
#, php-format
|
1892 |
+
msgid "Unable to change permissions for %s!"
|
1893 |
+
msgstr ""
|
1894 |
+
|
1895 |
+
# @ all-in-one-wp-security-and-firewall
|
1896 |
+
#: admin/wp-security-filesystem-menu.php:106
|
1897 |
+
msgid "File Permissions Scan"
|
1898 |
+
msgstr ""
|
1899 |
+
|
1900 |
+
# @ all-in-one-wp-security-and-firewall
|
1901 |
+
#: admin/wp-security-filesystem-menu.php:109
|
1902 |
+
msgid "Your WordPress file and folder permission settings govern the accessability and read/write privileges of the files and folders which make up your WP installation."
|
1903 |
+
msgstr ""
|
1904 |
+
|
1905 |
+
# @ all-in-one-wp-security-and-firewall
|
1906 |
+
#: admin/wp-security-filesystem-menu.php:110
|
1907 |
+
msgid "Your WP installation already comes with reasonably secure file permission settings for the filesystem."
|
1908 |
+
msgstr ""
|
1909 |
+
|
1910 |
+
# @ all-in-one-wp-security-and-firewall
|
1911 |
+
#: admin/wp-security-filesystem-menu.php:111
|
1912 |
+
msgid "However, sometimes people or other plugins modify the various permission settings of certain core WP folders or files such that they end up making their site less secure because they chose the wrong permission values."
|
1913 |
+
msgstr ""
|
1914 |
+
|
1915 |
+
# @ all-in-one-wp-security-and-firewall
|
1916 |
+
#: admin/wp-security-filesystem-menu.php:112
|
1917 |
+
msgid "This feature will scan the critical WP core folders and files and will highlight any permission settings which are insecure."
|
1918 |
+
msgstr ""
|
1919 |
+
|
1920 |
+
# @ all-in-one-wp-security-and-firewall
|
1921 |
+
#: admin/wp-security-filesystem-menu.php:118
|
1922 |
+
msgid "WP Directory and File Permissions Scan Results"
|
1923 |
+
msgstr ""
|
1924 |
+
|
1925 |
+
# @ all-in-one-wp-security-and-firewall
|
1926 |
+
#: admin/wp-security-filesystem-menu.php:131
|
1927 |
+
#: admin/wp-security-filesystem-menu.php:150
|
1928 |
+
msgid "File/Folder"
|
1929 |
+
msgstr ""
|
1930 |
+
|
1931 |
+
# @ all-in-one-wp-security-and-firewall
|
1932 |
+
#: admin/wp-security-filesystem-menu.php:132
|
1933 |
+
#: admin/wp-security-filesystem-menu.php:151
|
1934 |
+
msgid "Current Permissions"
|
1935 |
+
msgstr ""
|
1936 |
+
|
1937 |
+
# @ all-in-one-wp-security-and-firewall
|
1938 |
+
#: admin/wp-security-filesystem-menu.php:133
|
1939 |
+
#: admin/wp-security-filesystem-menu.php:152
|
1940 |
+
msgid "Recommended Permissions"
|
1941 |
+
msgstr ""
|
1942 |
+
|
1943 |
+
# @ all-in-one-wp-security-and-firewall
|
1944 |
+
#: admin/wp-security-filesystem-menu.php:134
|
1945 |
+
#: admin/wp-security-filesystem-menu.php:153
|
1946 |
+
msgid "Recommended Action"
|
1947 |
+
msgstr ""
|
1948 |
+
|
1949 |
+
# @ all-in-one-wp-security-and-firewall
|
1950 |
+
#: admin/wp-security-filesystem-menu.php:191
|
1951 |
+
msgid "Your PHP file editing settings were saved successfully."
|
1952 |
+
msgstr ""
|
1953 |
+
|
1954 |
+
# @ all-in-one-wp-security-and-firewall
|
1955 |
+
#: admin/wp-security-filesystem-menu.php:195
|
1956 |
+
msgid "Operation failed! Unable to modify or make a backup of wp-config.php file!"
|
1957 |
+
msgstr ""
|
1958 |
+
|
1959 |
+
# @ all-in-one-wp-security-and-firewall
|
1960 |
+
#: admin/wp-security-filesystem-menu.php:201
|
1961 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:68
|
1962 |
+
msgid "File Editing"
|
1963 |
+
msgstr ""
|
1964 |
+
|
1965 |
+
# @ all-in-one-wp-security-and-firewall
|
1966 |
+
#: admin/wp-security-filesystem-menu.php:204
|
1967 |
+
msgid "The Wordpress Dashboard by default allows administrators to edit PHP files, such as plugin and theme files."
|
1968 |
+
msgstr ""
|
1969 |
+
|
1970 |
+
# @ all-in-one-wp-security-and-firewall
|
1971 |
+
#: admin/wp-security-filesystem-menu.php:205
|
1972 |
+
msgid "This is often the first tool an attacker will use if able to login, since it allows code execution."
|
1973 |
+
msgstr ""
|
1974 |
+
|
1975 |
+
# @ all-in-one-wp-security-and-firewall
|
1976 |
+
#: admin/wp-security-filesystem-menu.php:206
|
1977 |
+
msgid "This feature will disable the ability for people to edit PHP files via the dashboard."
|
1978 |
+
msgstr ""
|
1979 |
+
|
1980 |
+
# @ all-in-one-wp-security-and-firewall
|
1981 |
+
#: admin/wp-security-filesystem-menu.php:212
|
1982 |
+
msgid "Disable PHP File Editing"
|
1983 |
+
msgstr ""
|
1984 |
+
|
1985 |
+
# @ all-in-one-wp-security-and-firewall
|
1986 |
+
#: admin/wp-security-filesystem-menu.php:224
|
1987 |
+
msgid "Disable Ability To Edit PHP Files"
|
1988 |
+
msgstr ""
|
1989 |
+
|
1990 |
+
# @ all-in-one-wp-security-and-firewall
|
1991 |
+
#: admin/wp-security-filesystem-menu.php:227
|
1992 |
+
msgid "Check this if you want to remove the ability for people to edit PHP files via the WP dashboard"
|
1993 |
+
msgstr ""
|
1994 |
+
|
1995 |
+
# @ all-in-one-wp-security-and-firewall
|
1996 |
+
#: admin/wp-security-filesystem-menu.php:271
|
1997 |
+
msgid "You have successfully saved the Prevent Access to Default WP Files configuration."
|
1998 |
+
msgstr ""
|
1999 |
+
|
2000 |
+
# @ all-in-one-wp-security-and-firewall
|
2001 |
+
#: admin/wp-security-filesystem-menu.php:280
|
2002 |
+
msgid "WordPress Files"
|
2003 |
+
msgstr ""
|
2004 |
+
|
2005 |
+
# @ all-in-one-wp-security-and-firewall
|
2006 |
+
#: admin/wp-security-filesystem-menu.php:283
|
2007 |
+
#, php-format
|
2008 |
+
msgid "This feature allows you to prevent access to files such as %s, %s and %s which are delivered with all WP installations."
|
2009 |
+
msgstr ""
|
2010 |
+
|
2011 |
+
# @ all-in-one-wp-security-and-firewall
|
2012 |
+
#: admin/wp-security-filesystem-menu.php:284
|
2013 |
+
msgid "By preventing access to these files you are hiding some key pieces of information (such as WordPress version info) from potential hackers."
|
2014 |
+
msgstr ""
|
2015 |
+
|
2016 |
+
# @ all-in-one-wp-security-and-firewall
|
2017 |
+
#: admin/wp-security-filesystem-menu.php:289
|
2018 |
+
msgid "Prevent Access to Default WP Files"
|
2019 |
+
msgstr ""
|
2020 |
+
|
2021 |
+
# @ all-in-one-wp-security-and-firewall
|
2022 |
+
#: admin/wp-security-filesystem-menu.php:300
|
2023 |
+
msgid "Prevent Access to WP Default Install Files"
|
2024 |
+
msgstr ""
|
2025 |
+
|
2026 |
+
# @ all-in-one-wp-security-and-firewall
|
2027 |
+
#: admin/wp-security-filesystem-menu.php:303
|
2028 |
+
msgid "Check this if you want to prevent access to readme.html, license.txt and wp-config-sample.php."
|
2029 |
+
msgstr ""
|
2030 |
+
|
2031 |
+
# @ all-in-one-wp-security-and-firewall
|
2032 |
+
#: admin/wp-security-filesystem-menu.php:307
|
2033 |
+
msgid "Save Setting"
|
2034 |
+
msgstr ""
|
2035 |
+
|
2036 |
+
# @ all-in-one-wp-security-and-firewall
|
2037 |
+
#: admin/wp-security-filesystem-menu.php:331
|
2038 |
+
msgid "System Logs"
|
2039 |
+
msgstr ""
|
2040 |
+
|
2041 |
+
# @ all-in-one-wp-security-and-firewall
|
2042 |
+
#: admin/wp-security-filesystem-menu.php:334
|
2043 |
+
msgid "Sometimes your hosting platform will produce error or warning logs in a file called \"error_log\"."
|
2044 |
+
msgstr ""
|
2045 |
+
|
2046 |
+
# @ all-in-one-wp-security-and-firewall
|
2047 |
+
#: admin/wp-security-filesystem-menu.php:335
|
2048 |
+
msgid "Depending on the nature and cause of the error or warning, your hosting server can create multiple instances of this file in numerous directory locations of your WordPress installation."
|
2049 |
+
msgstr ""
|
2050 |
+
|
2051 |
+
# @ all-in-one-wp-security-and-firewall
|
2052 |
+
#: admin/wp-security-filesystem-menu.php:336
|
2053 |
+
msgid "By occassionally viewing the contents of these logs files you can keep informed of any underlying problems on your system which you might need to address."
|
2054 |
+
msgstr ""
|
2055 |
+
|
2056 |
+
# @ all-in-one-wp-security-and-firewall
|
2057 |
+
#: admin/wp-security-filesystem-menu.php:342
|
2058 |
+
msgid "View System Logs"
|
2059 |
+
msgstr ""
|
2060 |
+
|
2061 |
+
# @ all-in-one-wp-security-and-firewall
|
2062 |
+
#: admin/wp-security-filesystem-menu.php:347
|
2063 |
+
msgid "Enter System Log File Name"
|
2064 |
+
msgstr ""
|
2065 |
+
|
2066 |
+
# @ all-in-one-wp-security-and-firewall
|
2067 |
+
#: admin/wp-security-filesystem-menu.php:349
|
2068 |
+
msgid "Enter your system log file name. (Defaults to error_log)"
|
2069 |
+
msgstr ""
|
2070 |
+
|
2071 |
+
# @ all-in-one-wp-security-and-firewall
|
2072 |
+
#: admin/wp-security-filesystem-menu.php:352
|
2073 |
+
msgid "View Latest System Logs"
|
2074 |
+
msgstr ""
|
2075 |
+
|
2076 |
+
# @ all-in-one-wp-security-and-firewall
|
2077 |
+
#: admin/wp-security-filesystem-menu.php:354
|
2078 |
+
msgid "Loading..."
|
2079 |
+
msgstr ""
|
2080 |
+
|
2081 |
+
# @ all-in-one-wp-security-and-firewall
|
2082 |
+
#: admin/wp-security-filesystem-menu.php:371
|
2083 |
+
msgid "No system logs were found!"
|
2084 |
+
msgstr ""
|
2085 |
+
|
2086 |
+
# @ all-in-one-wp-security-and-firewall
|
2087 |
+
#: admin/wp-security-filesystem-menu.php:424
|
2088 |
+
msgid "Set Recommended Permissions"
|
2089 |
+
msgstr ""
|
2090 |
+
|
2091 |
+
# @ all-in-one-wp-security-and-firewall
|
2092 |
+
#: admin/wp-security-filesystem-menu.php:430
|
2093 |
+
msgid "No Action Required"
|
2094 |
+
msgstr ""
|
2095 |
+
|
2096 |
+
# @ all-in-one-wp-security-and-firewall
|
2097 |
+
#: admin/wp-security-filesystem-menu.php:470
|
2098 |
+
#, php-format
|
2099 |
+
msgid "Showing latest entries of error_log file: %s"
|
2100 |
+
msgstr ""
|
2101 |
+
|
2102 |
+
# @ all-in-one-wp-security-and-firewall
|
2103 |
+
#: admin/wp-security-firewall-menu.php:27
|
2104 |
+
msgid "Basic Firewall Rules"
|
2105 |
+
msgstr ""
|
2106 |
+
|
2107 |
+
# @ all-in-one-wp-security-and-firewall
|
2108 |
+
#: admin/wp-security-firewall-menu.php:28
|
2109 |
+
msgid "Additional Firewall Rules"
|
2110 |
+
msgstr ""
|
2111 |
+
|
2112 |
+
# @ all-in-one-wp-security-and-firewall
|
2113 |
+
#: admin/wp-security-firewall-menu.php:29
|
2114 |
+
msgid "5G Blacklist Firewall Rules"
|
2115 |
+
msgstr ""
|
2116 |
+
|
2117 |
+
# @ all-in-one-wp-security-and-firewall
|
2118 |
+
#: admin/wp-security-firewall-menu.php:30
|
2119 |
+
msgid "Internet Bots"
|
2120 |
+
msgstr ""
|
2121 |
+
|
2122 |
+
# @ all-in-one-wp-security-and-firewall
|
2123 |
+
#: admin/wp-security-firewall-menu.php:31
|
2124 |
+
msgid "Prevent Hotlinks"
|
2125 |
+
msgstr ""
|
2126 |
+
|
2127 |
+
# @ all-in-one-wp-security-and-firewall
|
2128 |
+
#: admin/wp-security-firewall-menu.php:32
|
2129 |
+
msgid "404 Detection"
|
2130 |
+
msgstr ""
|
2131 |
+
|
2132 |
+
# @ all-in-one-wp-security-and-firewall
|
2133 |
+
#: admin/wp-security-firewall-menu.php:115
|
2134 |
+
#: admin/wp-security-firewall-menu.php:663 admin/wp-security-spam-menu.php:102
|
2135 |
+
#: admin/wp-security-user-registration-menu.php:96
|
2136 |
+
msgid "Settings were successfully saved"
|
2137 |
+
msgstr ""
|
2138 |
+
|
2139 |
+
# @ all-in-one-wp-security-and-firewall
|
2140 |
+
#: admin/wp-security-firewall-menu.php:124
|
2141 |
+
#: admin/wp-security-firewall-menu.php:503
|
2142 |
+
msgid "Firewall Settings"
|
2143 |
+
msgstr ""
|
2144 |
+
|
2145 |
+
# @ all-in-one-wp-security-and-firewall
|
2146 |
+
#: admin/wp-security-firewall-menu.php:131
|
2147 |
+
#, php-format
|
2148 |
+
msgid "This should not have any impact on your site's general functionality but if you wish you can take a %s of your .htaccess file before proceeding."
|
2149 |
+
msgstr ""
|
2150 |
+
|
2151 |
+
# @ all-in-one-wp-security-and-firewall
|
2152 |
+
#: admin/wp-security-firewall-menu.php:132
|
2153 |
+
msgid "The features in this tab allow you to activate some basic firewall security protection rules for your site."
|
2154 |
+
msgstr ""
|
2155 |
+
|
2156 |
+
# @ all-in-one-wp-security-and-firewall
|
2157 |
+
#: admin/wp-security-firewall-menu.php:133
|
2158 |
+
msgid "The firewall functionality is achieved via the insertion of special code into your currently active .htaccess file."
|
2159 |
+
msgstr ""
|
2160 |
+
|
2161 |
+
# @ all-in-one-wp-security-and-firewall
|
2162 |
+
#: admin/wp-security-firewall-menu.php:143
|
2163 |
+
msgid "Attention:"
|
2164 |
+
msgstr ""
|
2165 |
+
|
2166 |
+
# @ all-in-one-wp-security-and-firewall
|
2167 |
+
#: admin/wp-security-firewall-menu.php:144
|
2168 |
+
msgid "Currently the "
|
2169 |
+
msgstr ""
|
2170 |
+
|
2171 |
+
# @ all-in-one-wp-security-and-firewall
|
2172 |
+
#: admin/wp-security-firewall-menu.php:144
|
2173 |
+
#: admin/wp-security-firewall-menu.php:191
|
2174 |
+
msgid "Enable Pingback Protection"
|
2175 |
+
msgstr ""
|
2176 |
+
|
2177 |
+
# @ all-in-one-wp-security-and-firewall
|
2178 |
+
#: admin/wp-security-firewall-menu.php:144
|
2179 |
+
msgid " is active."
|
2180 |
+
msgstr ""
|
2181 |
+
|
2182 |
+
# @ all-in-one-wp-security-and-firewall
|
2183 |
+
#: admin/wp-security-firewall-menu.php:145
|
2184 |
+
msgid "Please beware that if you are using the WordPress iOS App, then you will need to deactivate this feature in order for the app to work properly."
|
2185 |
+
msgstr ""
|
2186 |
+
|
2187 |
+
# @ all-in-one-wp-security-and-firewall
|
2188 |
+
#: admin/wp-security-firewall-menu.php:153
|
2189 |
+
msgid "Basic Firewall Settings"
|
2190 |
+
msgstr ""
|
2191 |
+
|
2192 |
+
# @ all-in-one-wp-security-and-firewall
|
2193 |
+
#: admin/wp-security-firewall-menu.php:161
|
2194 |
+
msgid "Enable Basic Firewall Protection"
|
2195 |
+
msgstr ""
|
2196 |
+
|
2197 |
+
# @ all-in-one-wp-security-and-firewall
|
2198 |
+
#: admin/wp-security-firewall-menu.php:164
|
2199 |
+
msgid "Check this if you want to apply basic firewall protection to your site."
|
2200 |
+
msgstr ""
|
2201 |
+
|
2202 |
+
# @ all-in-one-wp-security-and-firewall
|
2203 |
+
#: admin/wp-security-firewall-menu.php:168
|
2204 |
+
msgid "This setting will implement the following basic firewall protection mechanisms on your site:"
|
2205 |
+
msgstr ""
|
2206 |
+
|
2207 |
+
# @ all-in-one-wp-security-and-firewall
|
2208 |
+
#: admin/wp-security-firewall-menu.php:169
|
2209 |
+
msgid "1) Protect your htaccess file by denying access to it."
|
2210 |
+
msgstr ""
|
2211 |
+
|
2212 |
+
# @ all-in-one-wp-security-and-firewall
|
2213 |
+
#: admin/wp-security-firewall-menu.php:170
|
2214 |
+
msgid "2) Disable the server signature."
|
2215 |
+
msgstr ""
|
2216 |
+
|
2217 |
+
# @ all-in-one-wp-security-and-firewall
|
2218 |
+
#: admin/wp-security-firewall-menu.php:171
|
2219 |
+
msgid "3) Limit file upload size (10MB)."
|
2220 |
+
msgstr ""
|
2221 |
+
|
2222 |
+
# @ all-in-one-wp-security-and-firewall
|
2223 |
+
#: admin/wp-security-firewall-menu.php:172
|
2224 |
+
msgid "4) Protect your wp-config.php file by denying access to it."
|
2225 |
+
msgstr ""
|
2226 |
+
|
2227 |
+
# @ all-in-one-wp-security-and-firewall
|
2228 |
+
#: admin/wp-security-firewall-menu.php:173
|
2229 |
+
msgid "The above firewall features will be applied via your .htaccess file and should not affect your site's overall functionality."
|
2230 |
+
msgstr ""
|
2231 |
+
|
2232 |
+
# @ all-in-one-wp-security-and-firewall
|
2233 |
+
#: admin/wp-security-firewall-menu.php:174
|
2234 |
+
msgid "You are still advised to take a backup of your active .htaccess file just in case."
|
2235 |
+
msgstr ""
|
2236 |
+
|
2237 |
+
# @ all-in-one-wp-security-and-firewall
|
2238 |
+
#: admin/wp-security-firewall-menu.php:183
|
2239 |
+
msgid "WordPress Pingback Vulnerability Protection"
|
2240 |
+
msgstr ""
|
2241 |
+
|
2242 |
+
# @ all-in-one-wp-security-and-firewall
|
2243 |
+
#: admin/wp-security-firewall-menu.php:194
|
2244 |
+
msgid "Check this if you are not using the WP XML-RPC functionality and you want to enable protection against WordPress pingback vulnerabilities."
|
2245 |
+
msgstr ""
|
2246 |
+
|
2247 |
+
# @ all-in-one-wp-security-and-firewall
|
2248 |
+
#: admin/wp-security-firewall-menu.php:198
|
2249 |
+
msgid "This setting will add a directive in your .htaccess to disable access to the WordPress xmlrpc.php file which is responsible for the XML-RPC functionality such as pingbacks in WordPress."
|
2250 |
+
msgstr ""
|
2251 |
+
|
2252 |
+
# @ all-in-one-wp-security-and-firewall
|
2253 |
+
#: admin/wp-security-firewall-menu.php:199
|
2254 |
+
msgid "Hackers can exploit various pingback vulnerabilities in the WordPress XML-RPC API in a number of ways such as:"
|
2255 |
+
msgstr ""
|
2256 |
+
|
2257 |
+
# @ all-in-one-wp-security-and-firewall
|
2258 |
+
#: admin/wp-security-firewall-menu.php:200
|
2259 |
+
msgid "1) Denial of Service (DoS) attacks"
|
2260 |
+
msgstr ""
|
2261 |
+
|
2262 |
+
# @ all-in-one-wp-security-and-firewall
|
2263 |
+
#: admin/wp-security-firewall-menu.php:201
|
2264 |
+
msgid "2) Hacking internal routers."
|
2265 |
+
msgstr ""
|
2266 |
+
|
2267 |
+
# @ all-in-one-wp-security-and-firewall
|
2268 |
+
#: admin/wp-security-firewall-menu.php:202
|
2269 |
+
msgid "3) Scanning ports in internal networks to get info from various hosts."
|
2270 |
+
msgstr ""
|
2271 |
+
|
2272 |
+
# @ all-in-one-wp-security-and-firewall
|
2273 |
+
#: admin/wp-security-firewall-menu.php:203
|
2274 |
+
msgid "Apart from the security protection benefit, this feature may also help reduce load on your server, particularly if your site currently has a lot of unwanted traffic hitting the XML-RPC API on your installation."
|
2275 |
+
msgstr ""
|
2276 |
+
|
2277 |
+
# @ all-in-one-wp-security-and-firewall
|
2278 |
+
#: admin/wp-security-firewall-menu.php:204
|
2279 |
+
msgid "NOTE: You should only enable this feature if you are not currently using the XML-RPC functionality on your WordPress installation."
|
2280 |
+
msgstr ""
|
2281 |
+
|
2282 |
+
# @ all-in-one-wp-security-and-firewall
|
2283 |
+
#: admin/wp-security-firewall-menu.php:211
|
2284 |
+
msgid "Save Basic Firewall Settings"
|
2285 |
+
msgstr ""
|
2286 |
+
|
2287 |
+
# @ all-in-one-wp-security-and-firewall
|
2288 |
+
#: admin/wp-security-firewall-menu.php:283
|
2289 |
+
msgid "You have successfully saved the Additional Firewall Protection configuration"
|
2290 |
+
msgstr ""
|
2291 |
+
|
2292 |
+
# @ all-in-one-wp-security-and-firewall
|
2293 |
+
#: admin/wp-security-firewall-menu.php:297
|
2294 |
+
msgid "Additional Firewall Protection"
|
2295 |
+
msgstr ""
|
2296 |
+
|
2297 |
+
# @ all-in-one-wp-security-and-firewall
|
2298 |
+
#: admin/wp-security-firewall-menu.php:301
|
2299 |
+
#, php-format
|
2300 |
+
msgid "Due to the nature of the code being inserted to the .htaccess file, this feature may break some functionality for certain plugins and you are therefore advised to take a %s of .htaccess before applying this configuration."
|
2301 |
+
msgstr ""
|
2302 |
+
|
2303 |
+
# @ all-in-one-wp-security-and-firewall
|
2304 |
+
#: admin/wp-security-firewall-menu.php:303
|
2305 |
+
msgid "This feature allows you to activate more advanced firewall settings to your site."
|
2306 |
+
msgstr ""
|
2307 |
+
|
2308 |
+
# @ all-in-one-wp-security-and-firewall
|
2309 |
+
#: admin/wp-security-firewall-menu.php:304
|
2310 |
+
msgid "The advanced firewall rules are applied via the insertion of special code to your currently active .htaccess file."
|
2311 |
+
msgstr ""
|
2312 |
+
|
2313 |
+
# @ all-in-one-wp-security-and-firewall
|
2314 |
+
#: admin/wp-security-firewall-menu.php:313
|
2315 |
+
msgid "Listing of Directory Contents"
|
2316 |
+
msgstr ""
|
2317 |
+
|
2318 |
+
# @ all-in-one-wp-security-and-firewall
|
2319 |
+
#: admin/wp-security-firewall-menu.php:322
|
2320 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:88
|
2321 |
+
msgid "Disable Index Views"
|
2322 |
+
msgstr ""
|
2323 |
+
|
2324 |
+
# @ all-in-one-wp-security-and-firewall
|
2325 |
+
#: admin/wp-security-firewall-menu.php:325
|
2326 |
+
msgid "Check this if you want to disable directory and file listing."
|
2327 |
+
msgstr ""
|
2328 |
+
|
2329 |
+
# @ all-in-one-wp-security-and-firewall
|
2330 |
+
#: admin/wp-security-firewall-menu.php:330
|
2331 |
+
msgid "By default, an Apache server will allow the listing of the contents of a directory if it doesn't contain an index.php file."
|
2332 |
+
msgstr ""
|
2333 |
+
|
2334 |
+
# @ all-in-one-wp-security-and-firewall
|
2335 |
+
#: admin/wp-security-firewall-menu.php:332
|
2336 |
+
msgid "This feature will prevent the listing of contents for all directories."
|
2337 |
+
msgstr ""
|
2338 |
+
|
2339 |
+
# @ all-in-one-wp-security-and-firewall
|
2340 |
+
#: admin/wp-security-firewall-menu.php:334
|
2341 |
+
msgid "NOTE: In order for this feature to work \"AllowOverride\" of the Indexes directive must be enabled in your httpd.conf file. Ask your hosting provider to check this if you don't have access to httpd.conf"
|
2342 |
+
msgstr ""
|
2343 |
+
|
2344 |
+
# @ all-in-one-wp-security-and-firewall
|
2345 |
+
#: admin/wp-security-firewall-menu.php:343
|
2346 |
+
msgid "Trace and Track"
|
2347 |
+
msgstr ""
|
2348 |
+
|
2349 |
+
# @ all-in-one-wp-security-and-firewall
|
2350 |
+
#: admin/wp-security-firewall-menu.php:352
|
2351 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:89
|
2352 |
+
msgid "Disable Trace and Track"
|
2353 |
+
msgstr ""
|
2354 |
+
|
2355 |
+
# @ all-in-one-wp-security-and-firewall
|
2356 |
+
#: admin/wp-security-firewall-menu.php:355
|
2357 |
+
msgid "Check this if you want to disable trace and track."
|
2358 |
+
msgstr ""
|
2359 |
+
|
2360 |
+
# @ all-in-one-wp-security-and-firewall
|
2361 |
+
#: admin/wp-security-firewall-menu.php:360
|
2362 |
+
msgid "HTTP Trace attack (XST) can be used to return header requests and grab cookies and other information."
|
2363 |
+
msgstr ""
|
2364 |
+
|
2365 |
+
# @ all-in-one-wp-security-and-firewall
|
2366 |
+
#: admin/wp-security-firewall-menu.php:362
|
2367 |
+
msgid "This hacking technique is usually used together with cross site scripting attacks (XSS)."
|
2368 |
+
msgstr ""
|
2369 |
+
|
2370 |
+
# @ all-in-one-wp-security-and-firewall
|
2371 |
+
#: admin/wp-security-firewall-menu.php:364
|
2372 |
+
msgid "Disabling trace and track on your site will help prevent HTTP Trace attacks."
|
2373 |
+
msgstr ""
|
2374 |
+
|
2375 |
+
# @ all-in-one-wp-security-and-firewall
|
2376 |
+
#: admin/wp-security-firewall-menu.php:373
|
2377 |
+
msgid "Proxy Comment Posting"
|
2378 |
+
msgstr ""
|
2379 |
+
|
2380 |
+
# @ all-in-one-wp-security-and-firewall
|
2381 |
+
#: admin/wp-security-firewall-menu.php:383
|
2382 |
+
msgid "Forbid Proxy Comment Posting"
|
2383 |
+
msgstr ""
|
2384 |
+
|
2385 |
+
# @ all-in-one-wp-security-and-firewall
|
2386 |
+
#: admin/wp-security-firewall-menu.php:386
|
2387 |
+
msgid "Check this if you want to forbid proxy comment posting."
|
2388 |
+
msgstr ""
|
2389 |
+
|
2390 |
+
# @ all-in-one-wp-security-and-firewall
|
2391 |
+
#: admin/wp-security-firewall-menu.php:391
|
2392 |
+
msgid "This setting will deny any requests that use a proxy server when posting comments."
|
2393 |
+
msgstr ""
|
2394 |
+
|
2395 |
+
# @ all-in-one-wp-security-and-firewall
|
2396 |
+
#: admin/wp-security-firewall-menu.php:392
|
2397 |
+
msgid "By forbidding proxy comments you are in effect eliminating some SPAM and other proxy requests."
|
2398 |
+
msgstr ""
|
2399 |
+
|
2400 |
+
# @ all-in-one-wp-security-and-firewall
|
2401 |
+
#: admin/wp-security-firewall-menu.php:401
|
2402 |
+
msgid "Bad Query Strings"
|
2403 |
+
msgstr ""
|
2404 |
+
|
2405 |
+
# @ all-in-one-wp-security-and-firewall
|
2406 |
+
#: admin/wp-security-firewall-menu.php:411
|
2407 |
+
msgid "Deny Bad Query Strings"
|
2408 |
+
msgstr ""
|
2409 |
+
|
2410 |
+
# @ all-in-one-wp-security-and-firewall
|
2411 |
+
#: admin/wp-security-firewall-menu.php:414
|
2412 |
+
msgid "This will help protect you against malicious queries via XSS."
|
2413 |
+
msgstr ""
|
2414 |
+
|
2415 |
+
# @ all-in-one-wp-security-and-firewall
|
2416 |
+
#: admin/wp-security-firewall-menu.php:419
|
2417 |
+
msgid "This feature will write rules in your .htaccess file to prevent malicious string attacks on your site using XSS."
|
2418 |
+
msgstr ""
|
2419 |
+
|
2420 |
+
# @ all-in-one-wp-security-and-firewall
|
2421 |
+
#: admin/wp-security-firewall-menu.php:420
|
2422 |
+
msgid "NOTE: Some of these strings might be used for plugins or themes and hence this might break some functionality."
|
2423 |
+
msgstr ""
|
2424 |
+
|
2425 |
+
# @ all-in-one-wp-security-and-firewall
|
2426 |
+
#: admin/wp-security-firewall-menu.php:421
|
2427 |
+
#: admin/wp-security-firewall-menu.php:451
|
2428 |
+
msgid "You are therefore strongly advised to take a backup of your active .htaccess file before applying this feature."
|
2429 |
+
msgstr ""
|
2430 |
+
|
2431 |
+
# @ all-in-one-wp-security-and-firewall
|
2432 |
+
#: admin/wp-security-firewall-menu.php:430
|
2433 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:92
|
2434 |
+
msgid "Advanced Character String Filter"
|
2435 |
+
msgstr ""
|
2436 |
+
|
2437 |
+
# @ all-in-one-wp-security-and-firewall
|
2438 |
+
#: admin/wp-security-firewall-menu.php:440
|
2439 |
+
msgid "Enable Advanced Character String Filter"
|
2440 |
+
msgstr ""
|
2441 |
+
|
2442 |
+
# @ all-in-one-wp-security-and-firewall
|
2443 |
+
#: admin/wp-security-firewall-menu.php:443
|
2444 |
+
msgid "This will block bad character matches from XSS."
|
2445 |
+
msgstr ""
|
2446 |
+
|
2447 |
+
# @ all-in-one-wp-security-and-firewall
|
2448 |
+
#: admin/wp-security-firewall-menu.php:448
|
2449 |
+
msgid "This is an advanced character string filter to prevent malicious string attacks on your site coming from Cross Site Scripting (XSS)."
|
2450 |
+
msgstr ""
|
2451 |
+
|
2452 |
+
# @ all-in-one-wp-security-and-firewall
|
2453 |
+
#: admin/wp-security-firewall-menu.php:449
|
2454 |
+
msgid "This setting matches for common malicious string patterns and exploits and will produce a 403 error for the hacker attempting the query."
|
2455 |
+
msgstr ""
|
2456 |
+
|
2457 |
+
# @ all-in-one-wp-security-and-firewall
|
2458 |
+
#: admin/wp-security-firewall-menu.php:450
|
2459 |
+
msgid "NOTE: Some strings for this setting might break some functionality."
|
2460 |
+
msgstr ""
|
2461 |
+
|
2462 |
+
# @ all-in-one-wp-security-and-firewall
|
2463 |
+
#: admin/wp-security-firewall-menu.php:459
|
2464 |
+
msgid "Save Additional Firewall Settings"
|
2465 |
+
msgstr ""
|
2466 |
+
|
2467 |
+
# @ all-in-one-wp-security-and-firewall
|
2468 |
+
#: admin/wp-security-firewall-menu.php:494
|
2469 |
+
msgid "You have successfully saved the 5G Firewall Protection configuration"
|
2470 |
+
msgstr ""
|
2471 |
+
|
2472 |
+
# @ all-in-one-wp-security-and-firewall
|
2473 |
+
#: admin/wp-security-firewall-menu.php:507
|
2474 |
+
#, php-format
|
2475 |
+
msgid "This feature allows you to activate the 5G firewall security protection rules designed and produced by %s."
|
2476 |
+
msgstr ""
|
2477 |
+
|
2478 |
+
# @ all-in-one-wp-security-and-firewall
|
2479 |
+
#: admin/wp-security-firewall-menu.php:508
|
2480 |
+
msgid "The 5G Blacklist is a simple, flexible blacklist that helps reduce the number of malicious URL requests that hit your website."
|
2481 |
+
msgstr ""
|
2482 |
+
|
2483 |
+
# @ all-in-one-wp-security-and-firewall
|
2484 |
+
#: admin/wp-security-firewall-menu.php:509
|
2485 |
+
msgid "The added advantage of applying the 5G firewall to your site is that it has been tested and confirmed by the people at PerishablePress.com to be an optimal and least disruptive set of .htaccess security rules for general WP sites running on an Apache server or similar."
|
2486 |
+
msgstr ""
|
2487 |
+
|
2488 |
+
# @ all-in-one-wp-security-and-firewall
|
2489 |
+
#: admin/wp-security-firewall-menu.php:510
|
2490 |
+
#, php-format
|
2491 |
+
msgid "Therefore the 5G firewall rules should not have any impact on your site's general functionality but if you wish you can take a %s of your .htaccess file before proceeding."
|
2492 |
+
msgstr ""
|
2493 |
+
|
2494 |
+
# @ all-in-one-wp-security-and-firewall
|
2495 |
+
#: admin/wp-security-firewall-menu.php:516
|
2496 |
+
msgid "5G Blacklist/Firewall Settings"
|
2497 |
+
msgstr ""
|
2498 |
+
|
2499 |
+
# @ all-in-one-wp-security-and-firewall
|
2500 |
+
#: admin/wp-security-firewall-menu.php:528
|
2501 |
+
msgid "Enable 5G Firewall Protection"
|
2502 |
+
msgstr ""
|
2503 |
+
|
2504 |
+
# @ all-in-one-wp-security-and-firewall
|
2505 |
+
#: admin/wp-security-firewall-menu.php:531
|
2506 |
+
msgid "Check this if you want to apply the 5G Blacklist firewall protection from perishablepress.com to your site."
|
2507 |
+
msgstr ""
|
2508 |
+
|
2509 |
+
# @ all-in-one-wp-security-and-firewall
|
2510 |
+
#: admin/wp-security-firewall-menu.php:535
|
2511 |
+
msgid "This setting will implement the 5G security firewall protection mechanisms on your site which include the following things:"
|
2512 |
+
msgstr ""
|
2513 |
+
|
2514 |
+
# @ all-in-one-wp-security-and-firewall
|
2515 |
+
#: admin/wp-security-firewall-menu.php:536
|
2516 |
+
msgid "1) Block forbidden characters commonly used in exploitative attacks."
|
2517 |
+
msgstr ""
|
2518 |
+
|
2519 |
+
# @ all-in-one-wp-security-and-firewall
|
2520 |
+
#: admin/wp-security-firewall-menu.php:537
|
2521 |
+
msgid "2) Block malicious encoded URL characters such as the \".css(\" string."
|
2522 |
+
msgstr ""
|
2523 |
+
|
2524 |
+
# @ all-in-one-wp-security-and-firewall
|
2525 |
+
#: admin/wp-security-firewall-menu.php:538
|
2526 |
+
msgid "3) Guard against the common patterns and specific exploits in the root portion of targeted URLs."
|
2527 |
+
msgstr ""
|
2528 |
+
|
2529 |
+
# @ all-in-one-wp-security-and-firewall
|
2530 |
+
#: admin/wp-security-firewall-menu.php:539
|
2531 |
+
msgid "4) Stop attackers from manipulating query strings by disallowing illicit characters."
|
2532 |
+
msgstr ""
|
2533 |
+
|
2534 |
+
# @ all-in-one-wp-security-and-firewall
|
2535 |
+
#: admin/wp-security-firewall-menu.php:540
|
2536 |
+
msgid "....and much more."
|
2537 |
+
msgstr ""
|
2538 |
+
|
2539 |
+
# @ all-in-one-wp-security-and-firewall
|
2540 |
+
#: admin/wp-security-firewall-menu.php:546
|
2541 |
+
msgid "Save 5G Firewall Settings"
|
2542 |
+
msgstr ""
|
2543 |
+
|
2544 |
+
# @ all-in-one-wp-security-and-firewall
|
2545 |
+
#: admin/wp-security-firewall-menu.php:577
|
2546 |
+
msgid "The Internet bot settings were successfully saved"
|
2547 |
+
msgstr ""
|
2548 |
+
|
2549 |
+
# @ all-in-one-wp-security-and-firewall
|
2550 |
+
#: admin/wp-security-firewall-menu.php:581
|
2551 |
+
msgid "Internet Bot Settings"
|
2552 |
+
msgstr ""
|
2553 |
+
|
2554 |
+
# @ all-in-one-wp-security-and-firewall
|
2555 |
+
#: admin/wp-security-firewall-menu.php:588
|
2556 |
+
#, php-format
|
2557 |
+
msgid "%s?"
|
2558 |
+
msgstr ""
|
2559 |
+
|
2560 |
+
# @ all-in-one-wp-security-and-firewall
|
2561 |
+
#: admin/wp-security-firewall-menu.php:590
|
2562 |
+
msgid "A bot is a piece of software which runs on the Internet and performs automatic tasks. For example when Google indexes your pages it uses automatic bots to achieve this task."
|
2563 |
+
msgstr ""
|
2564 |
+
|
2565 |
+
# @ all-in-one-wp-security-and-firewall
|
2566 |
+
#: admin/wp-security-firewall-menu.php:591
|
2567 |
+
msgid "A lot of bots are legitimate and non-malicous but not all bots are good and often you will find some which try to impersonate legitimate bots such as \"Googlebot\" but in reality they have nohing to do with Google at all."
|
2568 |
+
msgstr ""
|
2569 |
+
|
2570 |
+
# @ all-in-one-wp-security-and-firewall
|
2571 |
+
#: admin/wp-security-firewall-menu.php:592
|
2572 |
+
msgid "Although most of the bots out there are relatively harmless sometimes website owners want to have more control over which bots they allow into their site."
|
2573 |
+
msgstr ""
|
2574 |
+
|
2575 |
+
# @ all-in-one-wp-security-and-firewall
|
2576 |
+
#: admin/wp-security-firewall-menu.php:593
|
2577 |
+
msgid "This feature allows you to block bots which are impersonating as a Googlebot but actually aren't. (In other words they are fake Google bots)"
|
2578 |
+
msgstr ""
|
2579 |
+
|
2580 |
+
# @ all-in-one-wp-security-and-firewall
|
2581 |
+
#: admin/wp-security-firewall-menu.php:594
|
2582 |
+
msgid "Googlebots have a unique indentity which cannot easily be forged and this feature will indentify any fake Google bots and block them from reading your site's pages."
|
2583 |
+
msgstr ""
|
2584 |
+
|
2585 |
+
# @ all-in-one-wp-security-and-firewall
|
2586 |
+
#: admin/wp-security-firewall-menu.php:600
|
2587 |
+
msgid "<strong>Attention</strong>: Sometimes non-malicious Internet organizations might have bots which impersonate as a \"Googlebot\"."
|
2588 |
+
msgstr ""
|
2589 |
+
|
2590 |
+
# @ all-in-one-wp-security-and-firewall
|
2591 |
+
#: admin/wp-security-firewall-menu.php:601
|
2592 |
+
msgid "Just be aware that if you activate this feature the plugin will block all bots which use the \"Googlebot\" string in their User Agent information but are NOT officially from Google (irrespective whether they are malicious or not)."
|
2593 |
+
msgstr ""
|
2594 |
+
|
2595 |
+
# @ all-in-one-wp-security-and-firewall
|
2596 |
+
#: admin/wp-security-firewall-menu.php:602
|
2597 |
+
msgid "All other bots from other organizations such as \"Yahoo\", \"Bing\" etc will not be affected by this feature."
|
2598 |
+
msgstr ""
|
2599 |
+
|
2600 |
+
# @ all-in-one-wp-security-and-firewall
|
2601 |
+
#: admin/wp-security-firewall-menu.php:608
|
2602 |
+
#: admin/wp-security-firewall-menu.php:618
|
2603 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:94
|
2604 |
+
msgid "Block Fake Googlebots"
|
2605 |
+
msgstr ""
|
2606 |
+
|
2607 |
+
# @ all-in-one-wp-security-and-firewall
|
2608 |
+
#: admin/wp-security-firewall-menu.php:621
|
2609 |
+
msgid "Check this if you want to block all fake Googlebots."
|
2610 |
+
msgstr ""
|
2611 |
+
|
2612 |
+
# @ all-in-one-wp-security-and-firewall
|
2613 |
+
#: admin/wp-security-firewall-menu.php:625
|
2614 |
+
msgid "This feature will check if the User Agent information of a bot contains the string \"Googlebot\"."
|
2615 |
+
msgstr ""
|
2616 |
+
|
2617 |
+
# @ all-in-one-wp-security-and-firewall
|
2618 |
+
#: admin/wp-security-firewall-menu.php:626
|
2619 |
+
msgid "It will then perform a few tests to verify if the bot is legitimately from Google and if so it will allow the bot to proceed."
|
2620 |
+
msgstr ""
|
2621 |
+
|
2622 |
+
# @ all-in-one-wp-security-and-firewall
|
2623 |
+
#: admin/wp-security-firewall-menu.php:627
|
2624 |
+
msgid "If the bot fails the checks then the plugin will mark it as being a fake Googlebot and it will block it"
|
2625 |
+
msgstr ""
|
2626 |
+
|
2627 |
+
# @ all-in-one-wp-security-and-firewall
|
2628 |
+
#: admin/wp-security-firewall-menu.php:634
|
2629 |
+
msgid "Save Internet Bot Settings"
|
2630 |
+
msgstr ""
|
2631 |
+
|
2632 |
+
# @ all-in-one-wp-security-and-firewall
|
2633 |
+
#: admin/wp-security-firewall-menu.php:671
|
2634 |
+
#: admin/wp-security-firewall-menu.php:693
|
2635 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:32
|
2636 |
+
msgid "Prevent Image Hotlinking"
|
2637 |
+
msgstr ""
|
2638 |
+
|
2639 |
+
# @ all-in-one-wp-security-and-firewall
|
2640 |
+
#: admin/wp-security-firewall-menu.php:674
|
2641 |
+
msgid "A Hotlink is where someone displays an image on their site which is actually located on your site by using a direct link to the source of the image on your server."
|
2642 |
+
msgstr ""
|
2643 |
+
|
2644 |
+
# @ all-in-one-wp-security-and-firewall
|
2645 |
+
#: admin/wp-security-firewall-menu.php:675
|
2646 |
+
msgid "Due to the fact that the image being displayed on the other person's site is coming from your server, this can cause leaking of bandwidth and resources for you because your server has to present this image for the people viewing it on someone elses's site."
|
2647 |
+
msgstr ""
|
2648 |
+
|
2649 |
+
# @ all-in-one-wp-security-and-firewall
|
2650 |
+
#: admin/wp-security-firewall-menu.php:676
|
2651 |
+
msgid "This feature will prevent people from directly hotlinking images from your site's pages by writing some directives in your .htaccess file."
|
2652 |
+
msgstr ""
|
2653 |
+
|
2654 |
+
# @ all-in-one-wp-security-and-firewall
|
2655 |
+
#: admin/wp-security-firewall-menu.php:681
|
2656 |
+
msgid "Prevent Hotlinking"
|
2657 |
+
msgstr ""
|
2658 |
+
|
2659 |
+
# @ all-in-one-wp-security-and-firewall
|
2660 |
+
#: admin/wp-security-firewall-menu.php:696
|
2661 |
+
msgid "Check this if you want to prevent hotlinking to images on your site."
|
2662 |
+
msgstr ""
|
2663 |
+
|
2664 |
+
# @ all-in-one-wp-security-and-firewall
|
2665 |
+
#: admin/wp-security-firewall-menu.php:716
|
2666 |
+
msgid "Nonce check failed for delete all 404 event logs operation!"
|
2667 |
+
msgstr ""
|
2668 |
+
|
2669 |
+
# @ all-in-one-wp-security-and-firewall
|
2670 |
+
#: admin/wp-security-firewall-menu.php:727
|
2671 |
+
msgid "404 Detection Feature - Delete all 404 event logs operation failed!"
|
2672 |
+
msgstr ""
|
2673 |
+
|
2674 |
+
# @ all-in-one-wp-security-and-firewall
|
2675 |
+
#: admin/wp-security-firewall-menu.php:731
|
2676 |
+
msgid "All 404 event logs were deleted from the DB successfully!"
|
2677 |
+
msgstr ""
|
2678 |
+
|
2679 |
+
# @ all-in-one-wp-security-and-firewall
|
2680 |
+
#: admin/wp-security-firewall-menu.php:757
|
2681 |
+
#: admin/wp-security-user-login-menu.php:110
|
2682 |
+
msgid "You entered a non numeric value for the lockout time length field. It has been set to the default value."
|
2683 |
+
msgstr ""
|
2684 |
+
|
2685 |
+
# @ all-in-one-wp-security-and-firewall
|
2686 |
+
#: admin/wp-security-firewall-menu.php:763
|
2687 |
+
msgid "You entered an incorrect format for the \"Redirect URL\" field. It has been set to the default value."
|
2688 |
+
msgstr ""
|
2689 |
+
|
2690 |
+
# @ all-in-one-wp-security-and-firewall
|
2691 |
+
#: admin/wp-security-firewall-menu.php:795
|
2692 |
+
msgid "404 Detection Configuration"
|
2693 |
+
msgstr ""
|
2694 |
+
|
2695 |
+
# @ all-in-one-wp-security-and-firewall
|
2696 |
+
#: admin/wp-security-firewall-menu.php:798
|
2697 |
+
msgid "A 404 or Not Found error occurs when somebody tries to access a non-existent page on your website."
|
2698 |
+
msgstr ""
|
2699 |
+
|
2700 |
+
# @ all-in-one-wp-security-and-firewall
|
2701 |
+
#: admin/wp-security-firewall-menu.php:799
|
2702 |
+
msgid "Typically, most 404 errors happen quite innocently when people have mis-typed a URL or used an old link to page which doesn't exist anymore."
|
2703 |
+
msgstr ""
|
2704 |
+
|
2705 |
+
# @ all-in-one-wp-security-and-firewall
|
2706 |
+
#: admin/wp-security-firewall-menu.php:800
|
2707 |
+
msgid "However, in some cases you may find many repeated 404 errors which occur in a relatively short space of time and from the same IP address which are all attempting to access a variety of non-existent page URLs."
|
2708 |
+
msgstr ""
|
2709 |
+
|
2710 |
+
# @ all-in-one-wp-security-and-firewall
|
2711 |
+
#: admin/wp-security-firewall-menu.php:801
|
2712 |
+
msgid "Such behaviour can mean that a hacker might be trying to find a particular page or URL for sinister reasons."
|
2713 |
+
msgstr ""
|
2714 |
+
|
2715 |
+
# @ all-in-one-wp-security-and-firewall
|
2716 |
+
#: admin/wp-security-firewall-menu.php:802
|
2717 |
+
msgid "This feature allows you to monitor all 404 events which occur on your site, and it also gives you the option of blocking IP addresses for a configured length of time."
|
2718 |
+
msgstr ""
|
2719 |
+
|
2720 |
+
# @ all-in-one-wp-security-and-firewall
|
2721 |
+
#: admin/wp-security-firewall-menu.php:803
|
2722 |
+
msgid "If you want to temporarily block an IP address, simply click the \"Temp Block\" link for the applicable IP entry in the \"404 Event Logs\" table below."
|
2723 |
+
msgstr ""
|
2724 |
+
|
2725 |
+
# @ all-in-one-wp-security-and-firewall
|
2726 |
+
#: admin/wp-security-firewall-menu.php:808
|
2727 |
+
msgid "404 Detection Options"
|
2728 |
+
msgstr ""
|
2729 |
+
|
2730 |
+
# @ all-in-one-wp-security-and-firewall
|
2731 |
+
#: admin/wp-security-firewall-menu.php:820
|
2732 |
+
msgid "Enable IP Lockout For 404 Events"
|
2733 |
+
msgstr ""
|
2734 |
+
|
2735 |
+
# @ all-in-one-wp-security-and-firewall
|
2736 |
+
#: admin/wp-security-firewall-menu.php:823
|
2737 |
+
msgid "Check this if you want to enable the lockout of selected IP addresses."
|
2738 |
+
msgstr ""
|
2739 |
+
|
2740 |
+
# @ all-in-one-wp-security-and-firewall
|
2741 |
+
#: admin/wp-security-firewall-menu.php:828
|
2742 |
+
msgid "When you enable this checkbox, all 404 events on your site will be logged in the table below. You can monitor these events and select some IP addresses to be blocked in the table. All IP addresses you select to be blocked from the \"404 Event Logs\" table section will be unable to access your site."
|
2743 |
+
msgstr ""
|
2744 |
+
|
2745 |
+
# @ all-in-one-wp-security-and-firewall
|
2746 |
+
#: admin/wp-security-firewall-menu.php:836
|
2747 |
+
msgid "Enable 404 Event Logging"
|
2748 |
+
msgstr ""
|
2749 |
+
|
2750 |
+
# @ all-in-one-wp-security-and-firewall
|
2751 |
+
#: admin/wp-security-firewall-menu.php:839
|
2752 |
+
msgid "Check this if you want to enable the logging of 404 events"
|
2753 |
+
msgstr ""
|
2754 |
+
|
2755 |
+
# @ all-in-one-wp-security-and-firewall
|
2756 |
+
#: admin/wp-security-firewall-menu.php:844
|
2757 |
+
msgid "Time Length of 404 Lockout (min)"
|
2758 |
+
msgstr ""
|
2759 |
+
|
2760 |
+
# @ all-in-one-wp-security-and-firewall
|
2761 |
+
#: admin/wp-security-firewall-menu.php:846
|
2762 |
+
msgid "Set the length of time for which a blocked IP address will be prevented from visiting your site"
|
2763 |
+
msgstr ""
|
2764 |
+
|
2765 |
+
# @ all-in-one-wp-security-and-firewall
|
2766 |
+
#: admin/wp-security-firewall-menu.php:851
|
2767 |
+
msgid "You can lock any IP address which is recorded in the \"404 Event Logs\" table section below."
|
2768 |
+
msgstr ""
|
2769 |
+
|
2770 |
+
# @ all-in-one-wp-security-and-firewall
|
2771 |
+
#: admin/wp-security-firewall-menu.php:853
|
2772 |
+
msgid "To temporarily lock an IP address, hover over the ID column and click the \"Temp Block\" link for the applicable IP entry."
|
2773 |
+
msgstr ""
|
2774 |
+
|
2775 |
+
# @ all-in-one-wp-security-and-firewall
|
2776 |
+
#: admin/wp-security-firewall-menu.php:860
|
2777 |
+
msgid "404 Lockout Redirect URL"
|
2778 |
+
msgstr ""
|
2779 |
+
|
2780 |
+
# @ all-in-one-wp-security-and-firewall
|
2781 |
+
#: admin/wp-security-firewall-menu.php:862
|
2782 |
+
msgid "A blocked visitor will be automatically redirected to this URL."
|
2783 |
+
msgstr ""
|
2784 |
+
|
2785 |
+
# @ all-in-one-wp-security-and-firewall
|
2786 |
+
#: admin/wp-security-firewall-menu.php:871
|
2787 |
+
msgid "404 Event Logs"
|
2788 |
+
msgstr ""
|
2789 |
+
|
2790 |
+
# @ all-in-one-wp-security-and-firewall
|
2791 |
+
#: admin/wp-security-firewall-menu.php:892
|
2792 |
+
#: admin/wp-security-firewall-menu.php:901
|
2793 |
+
msgid "Delete All 404 Event Logs"
|
2794 |
+
msgstr ""
|
2795 |
+
|
2796 |
+
# @ all-in-one-wp-security-and-firewall
|
2797 |
+
#: admin/wp-security-firewall-menu.php:898
|
2798 |
+
msgid "Click this button if you wish to purge all 404 event logs from the DB."
|
2799 |
+
msgstr ""
|
2800 |
+
|
2801 |
+
# @ all-in-one-wp-security-and-firewall
|
2802 |
+
#: admin/wp-security-list-404.php:108
|
2803 |
+
#: admin/wp-security-list-acct-activity.php:79
|
2804 |
+
#: admin/wp-security-list-comment-spammer-ip.php:86
|
2805 |
+
#: admin/wp-security-list-locked-ip.php:82
|
2806 |
+
#: admin/wp-security-list-locked-ip.php:93
|
2807 |
+
#: admin/wp-security-list-login-fails.php:78
|
2808 |
+
#: admin/wp-security-list-registered-users.php:82
|
2809 |
+
#: admin/wp-security-list-registered-users.php:93
|
2810 |
+
msgid "Please select some records using the checkboxes"
|
2811 |
+
msgstr ""
|
2812 |
+
|
2813 |
+
# @ all-in-one-wp-security-and-firewall
|
2814 |
+
#: admin/wp-security-list-acct-activity.php:107
|
2815 |
+
#: admin/wp-security-list-login-fails.php:107
|
2816 |
+
msgid "The selected entries were deleted successfully!"
|
2817 |
+
msgstr ""
|
2818 |
+
|
2819 |
+
# @ all-in-one-wp-security-and-firewall
|
2820 |
+
#: admin/wp-security-list-acct-activity.php:120
|
2821 |
+
#: admin/wp-security-list-login-fails.php:119
|
2822 |
+
msgid "The selected entry was deleted successfully!"
|
2823 |
+
msgstr ""
|
2824 |
+
|
2825 |
+
# @ all-in-one-wp-security-and-firewall
|
2826 |
+
#: admin/wp-security-list-comment-spammer-ip.php:139
|
2827 |
+
msgid "The selected IP addresses were saved in the blacklist configuration settings."
|
2828 |
+
msgstr ""
|
2829 |
+
|
2830 |
+
# @ all-in-one-wp-security-and-firewall
|
2831 |
+
#: admin/wp-security-list-comment-spammer-ip.php:153
|
2832 |
+
msgid "The .htaccess file was successfully modified to include the selected IP addresses."
|
2833 |
+
msgstr ""
|
2834 |
+
|
2835 |
+
# @ all-in-one-wp-security-and-firewall
|
2836 |
+
#: admin/wp-security-list-comment-spammer-ip.php:159
|
2837 |
+
msgid "NOTE: The .htaccess file was not modified because you have disabled the \"Enable IP or User Agent Blacklisting\" check box."
|
2838 |
+
msgstr ""
|
2839 |
+
|
2840 |
+
# @ all-in-one-wp-security-and-firewall
|
2841 |
+
#: admin/wp-security-list-comment-spammer-ip.php:160
|
2842 |
+
#, php-format
|
2843 |
+
msgid "To block these IP addresses you will need to enable the above flag in the %s menu"
|
2844 |
+
msgstr ""
|
2845 |
+
|
2846 |
+
# @ all-in-one-wp-security-and-firewall
|
2847 |
+
#: admin/wp-security-list-locked-ip.php:117
|
2848 |
+
#: admin/wp-security-user-login-menu.php:527
|
2849 |
+
msgid "The selected IP entries were unlocked successfully!"
|
2850 |
+
msgstr ""
|
2851 |
+
|
2852 |
+
# @ all-in-one-wp-security-and-firewall
|
2853 |
+
#: admin/wp-security-list-locked-ip.php:126
|
2854 |
+
#: admin/wp-security-user-login-menu.php:536
|
2855 |
+
msgid "The selected IP entry was unlocked successfully!"
|
2856 |
+
msgstr ""
|
2857 |
+
|
2858 |
+
# @ all-in-one-wp-security-and-firewall
|
2859 |
+
#: admin/wp-security-list-registered-users.php:127
|
2860 |
+
#: admin/wp-security-list-registered-users.php:151
|
2861 |
+
msgid "Your account is now active"
|
2862 |
+
msgstr ""
|
2863 |
+
|
2864 |
+
# @ all-in-one-wp-security-and-firewall
|
2865 |
+
#: admin/wp-security-list-registered-users.php:128
|
2866 |
+
msgid "Your account with username:"
|
2867 |
+
msgstr ""
|
2868 |
+
|
2869 |
+
# @ all-in-one-wp-security-and-firewall
|
2870 |
+
#: admin/wp-security-list-registered-users.php:135
|
2871 |
+
msgid "The selected accounts were approved successfully!"
|
2872 |
+
msgstr ""
|
2873 |
+
|
2874 |
+
# @ all-in-one-wp-security-and-firewall
|
2875 |
+
#: admin/wp-security-list-registered-users.php:139
|
2876 |
+
msgid "The following accounts failed to update successfully: "
|
2877 |
+
msgstr ""
|
2878 |
+
|
2879 |
+
# @ all-in-one-wp-security-and-firewall
|
2880 |
+
#: admin/wp-security-list-registered-users.php:147
|
2881 |
+
msgid "The selected account was approved successfully!"
|
2882 |
+
msgstr ""
|
2883 |
+
|
2884 |
+
# @ all-in-one-wp-security-and-firewall
|
2885 |
+
#: admin/wp-security-list-registered-users.php:152
|
2886 |
+
msgid "Your account with username: "
|
2887 |
+
msgstr ""
|
2888 |
+
|
2889 |
+
# @ all-in-one-wp-security-and-firewall
|
2890 |
+
#: admin/wp-security-list-registered-users.php:176
|
2891 |
+
msgid "The selected accounts were deleted successfully!"
|
2892 |
+
msgstr ""
|
2893 |
+
|
2894 |
+
# @ all-in-one-wp-security-and-firewall
|
2895 |
+
#: admin/wp-security-list-registered-users.php:184
|
2896 |
+
msgid "The selected account was deleted successfully!"
|
2897 |
+
msgstr ""
|
2898 |
+
|
2899 |
+
# @ all-in-one-wp-security-and-firewall
|
2900 |
+
#: admin/wp-security-maintenance-menu.php:22
|
2901 |
+
msgid "Visitor Lockout"
|
2902 |
+
msgstr ""
|
2903 |
+
|
2904 |
+
# @ all-in-one-wp-security-and-firewall
|
2905 |
+
#: admin/wp-security-maintenance-menu.php:88
|
2906 |
+
msgid "Site lockout feature settings saved!"
|
2907 |
+
msgstr ""
|
2908 |
+
|
2909 |
+
# @ all-in-one-wp-security-and-firewall
|
2910 |
+
#: admin/wp-security-maintenance-menu.php:93
|
2911 |
+
msgid "General Visitor Lockout"
|
2912 |
+
msgstr ""
|
2913 |
+
|
2914 |
+
# @ all-in-one-wp-security-and-firewall
|
2915 |
+
#: admin/wp-security-maintenance-menu.php:99
|
2916 |
+
msgid "This feature allows you to put your site into \"maintenance mode\" by locking down the front-end to all visitors except logged in users with super admin privileges."
|
2917 |
+
msgstr ""
|
2918 |
+
|
2919 |
+
# @ all-in-one-wp-security-and-firewall
|
2920 |
+
#: admin/wp-security-maintenance-menu.php:100
|
2921 |
+
msgid "Locking your site down to general visitors can be useful if you are investigating some issues on your site or perhaps you might be doing some maintenance and wish to keep out all traffic for security reasons."
|
2922 |
+
msgstr ""
|
2923 |
+
|
2924 |
+
# @ all-in-one-wp-security-and-firewall
|
2925 |
+
#: admin/wp-security-maintenance-menu.php:105
|
2926 |
+
msgid "Enable Front-end Lockout"
|
2927 |
+
msgstr ""
|
2928 |
+
|
2929 |
+
# @ all-in-one-wp-security-and-firewall
|
2930 |
+
#: admin/wp-security-maintenance-menu.php:108
|
2931 |
+
msgid "Check this if you want all visitors except those who are logged in as administrator to be locked out of the front-end of your site."
|
2932 |
+
msgstr ""
|
2933 |
+
|
2934 |
+
# @ all-in-one-wp-security-and-firewall
|
2935 |
+
#: admin/wp-security-maintenance-menu.php:112
|
2936 |
+
msgid "Enter a Message:"
|
2937 |
+
msgstr ""
|
2938 |
+
|
2939 |
+
# @ all-in-one-wp-security-and-firewall
|
2940 |
+
#: admin/wp-security-maintenance-menu.php:124
|
2941 |
+
msgid "Enter a message you wish to display to visitors when your site is in maintenance mode."
|
2942 |
+
msgstr ""
|
2943 |
+
|
2944 |
+
# @ default
|
2945 |
+
#: admin/wp-security-maintenance-menu.php:131
|
2946 |
+
msgid "Save Site Lockout Settings"
|
2947 |
+
msgstr ""
|
2948 |
+
|
2949 |
+
# @ all-in-one-wp-security-and-firewall
|
2950 |
+
#: admin/wp-security-settings-menu.php:25
|
2951 |
+
msgid "General Settings"
|
2952 |
+
msgstr ""
|
2953 |
+
|
2954 |
+
# @ all-in-one-wp-security-and-firewall
|
2955 |
+
#: admin/wp-security-settings-menu.php:28
|
2956 |
+
msgid "WP Meta Info"
|
2957 |
+
msgstr ""
|
2958 |
+
|
2959 |
+
# @ all-in-one-wp-security-and-firewall
|
2960 |
+
#: admin/wp-security-settings-menu.php:95
|
2961 |
+
msgid "All the security features have been disabled successfully!"
|
2962 |
+
msgstr ""
|
2963 |
+
|
2964 |
+
# @ all-in-one-wp-security-and-firewall
|
2965 |
+
#: admin/wp-security-settings-menu.php:99
|
2966 |
+
#: admin/wp-security-settings-menu.php:126
|
2967 |
+
msgid "Could not write to the .htaccess file. Please restore your .htaccess file manually using the restore functionality in the \".htaccess File\"."
|
2968 |
+
msgstr ""
|
2969 |
+
|
2970 |
+
# @ all-in-one-wp-security-and-firewall
|
2971 |
+
#: admin/wp-security-settings-menu.php:104
|
2972 |
+
msgid "Could not write to the wp-config.php. Please restore your wp-config.php file manually using the restore functionality in the \"wp-config.php File\"."
|
2973 |
+
msgstr ""
|
2974 |
+
|
2975 |
+
# @ all-in-one-wp-security-and-firewall
|
2976 |
+
#: admin/wp-security-settings-menu.php:122
|
2977 |
+
msgid "All firewall rules have been disabled successfully!"
|
2978 |
+
msgstr ""
|
2979 |
+
|
2980 |
+
# @ all-in-one-wp-security-and-firewall
|
2981 |
+
#: admin/wp-security-settings-menu.php:136
|
2982 |
+
msgid "WP Security Plugin"
|
2983 |
+
msgstr ""
|
2984 |
+
|
2985 |
+
# @ all-in-one-wp-security-and-firewall
|
2986 |
+
#: admin/wp-security-settings-menu.php:138
|
2987 |
+
msgid "Thank you for using our WordPress security plugin. There are a lot of security features in this plugin."
|
2988 |
+
msgstr ""
|
2989 |
+
|
2990 |
+
# @ all-in-one-wp-security-and-firewall
|
2991 |
+
#: admin/wp-security-settings-menu.php:139
|
2992 |
+
msgid "Go through each menu items and enable the security options to add more security to your site. Start by activating the basic features first."
|
2993 |
+
msgstr ""
|
2994 |
+
|
2995 |
+
# @ all-in-one-wp-security-and-firewall
|
2996 |
+
#: admin/wp-security-settings-menu.php:140
|
2997 |
+
msgid "It is a good practice to take a backup of your .htaccess file, database and wp-config.php file before activating the security features. This plugin has options that you can use to backup those resources easily."
|
2998 |
+
msgstr ""
|
2999 |
+
|
3000 |
+
# @ all-in-one-wp-security-and-firewall
|
3001 |
+
#: admin/wp-security-settings-menu.php:143
|
3002 |
+
msgid "Backup your database"
|
3003 |
+
msgstr ""
|
3004 |
+
|
3005 |
+
# @ all-in-one-wp-security-and-firewall
|
3006 |
+
#: admin/wp-security-settings-menu.php:144
|
3007 |
+
msgid "Backup .htaccess file"
|
3008 |
+
msgstr ""
|
3009 |
+
|
3010 |
+
# @ all-in-one-wp-security-and-firewall
|
3011 |
+
#: admin/wp-security-settings-menu.php:145
|
3012 |
+
msgid "Backup wp-config.php file"
|
3013 |
+
msgstr ""
|
3014 |
+
|
3015 |
+
# @ all-in-one-wp-security-and-firewall
|
3016 |
+
#: admin/wp-security-settings-menu.php:151
|
3017 |
+
msgid "Disable Security Features"
|
3018 |
+
msgstr ""
|
3019 |
+
|
3020 |
+
# @ all-in-one-wp-security-and-firewall
|
3021 |
+
#: admin/wp-security-settings-menu.php:157
|
3022 |
+
msgid "If you think that some plugin functionality on your site is broken due to a security feature you enabled in this plugin, then use the following option to turn off all the security features of this plugin."
|
3023 |
+
msgstr ""
|
3024 |
+
|
3025 |
+
# @ default
|
3026 |
+
#: admin/wp-security-settings-menu.php:161
|
3027 |
+
msgid "Disable All Security Features"
|
3028 |
+
msgstr ""
|
3029 |
+
|
3030 |
+
# @ all-in-one-wp-security-and-firewall
|
3031 |
+
# @ default
|
3032 |
+
#: admin/wp-security-settings-menu.php:167
|
3033 |
+
#: admin/wp-security-settings-menu.php:177
|
3034 |
+
msgid "Disable All Firewall Rules"
|
3035 |
+
msgstr ""
|
3036 |
+
|
3037 |
+
# @ all-in-one-wp-security-and-firewall
|
3038 |
+
#: admin/wp-security-settings-menu.php:173
|
3039 |
+
msgid "This feature will disable all firewall rules which are currently active in this plugin and it will also delete these rules from your .htacess file. Use it if you think one of the firewall rules is causing an issue on your site."
|
3040 |
+
msgstr ""
|
3041 |
+
|
3042 |
+
# @ all-in-one-wp-security-and-firewall
|
3043 |
+
#: admin/wp-security-settings-menu.php:206
|
3044 |
+
msgid "Your .htaccess file was successfully backed up! Using an FTP program go to the \"/wp-content/aiowps_backups\" directory to save a copy of the file to your computer."
|
3045 |
+
msgstr ""
|
3046 |
+
|
3047 |
+
# @ all-in-one-wp-security-and-firewall
|
3048 |
+
#: admin/wp-security-settings-menu.php:212
|
3049 |
+
msgid "htaccess file rename failed during backup. Please check your root directory for the backup file using FTP."
|
3050 |
+
msgstr ""
|
3051 |
+
|
3052 |
+
# @ all-in-one-wp-security-and-firewall
|
3053 |
+
#: admin/wp-security-settings-menu.php:218
|
3054 |
+
msgid "htaccess backup failed."
|
3055 |
+
msgstr ""
|
3056 |
+
|
3057 |
+
# @ all-in-one-wp-security-and-firewall
|
3058 |
+
#: admin/wp-security-settings-menu.php:233
|
3059 |
+
msgid "Please choose a .htaccess to restore from."
|
3060 |
+
msgstr ""
|
3061 |
+
|
3062 |
+
# @ all-in-one-wp-security-and-firewall
|
3063 |
+
#: admin/wp-security-settings-menu.php:249
|
3064 |
+
msgid "htaccess file restore failed. Please attempt to restore the .htaccess manually using FTP."
|
3065 |
+
msgstr ""
|
3066 |
+
|
3067 |
+
# @ all-in-one-wp-security-and-firewall
|
3068 |
+
#: admin/wp-security-settings-menu.php:253
|
3069 |
+
msgid "Your .htaccess file has successfully been restored!"
|
3070 |
+
msgstr ""
|
3071 |
+
|
3072 |
+
# @ all-in-one-wp-security-and-firewall
|
3073 |
+
#: admin/wp-security-settings-menu.php:259
|
3074 |
+
msgid "htaccess Restore operation failed! Please check the contents of the file you are trying to restore from."
|
3075 |
+
msgstr ""
|
3076 |
+
|
3077 |
+
# @ all-in-one-wp-security-and-firewall
|
3078 |
+
#: admin/wp-security-settings-menu.php:265
|
3079 |
+
msgid ".htaccess File Operations"
|
3080 |
+
msgstr ""
|
3081 |
+
|
3082 |
+
# @ all-in-one-wp-security-and-firewall
|
3083 |
+
#: admin/wp-security-settings-menu.php:268
|
3084 |
+
msgid "Your \".htaccess\" file is a key component of your website's security and it can be modified to implement various levels of protection mechanisms."
|
3085 |
+
msgstr ""
|
3086 |
+
|
3087 |
+
# @ all-in-one-wp-security-and-firewall
|
3088 |
+
#: admin/wp-security-settings-menu.php:269
|
3089 |
+
msgid "This feature allows you to backup and save your currently active .htaccess file should you need to re-use the the backed up file in the future."
|
3090 |
+
msgstr ""
|
3091 |
+
|
3092 |
+
# @ all-in-one-wp-security-and-firewall
|
3093 |
+
#: admin/wp-security-settings-menu.php:270
|
3094 |
+
msgid "You can also restore your site's .htaccess settings using a backed up .htaccess file."
|
3095 |
+
msgstr ""
|
3096 |
+
|
3097 |
+
# @ all-in-one-wp-security-and-firewall
|
3098 |
+
#: admin/wp-security-settings-menu.php:284
|
3099 |
+
msgid "Save the current .htaccess file"
|
3100 |
+
msgstr ""
|
3101 |
+
|
3102 |
+
# @ all-in-one-wp-security-and-firewall
|
3103 |
+
#: admin/wp-security-settings-menu.php:288
|
3104 |
+
msgid "Click the button below to backup and save the currently active .htaccess file."
|
3105 |
+
msgstr ""
|
3106 |
+
|
3107 |
+
# @ all-in-one-wp-security-and-firewall
|
3108 |
+
#: admin/wp-security-settings-menu.php:289
|
3109 |
+
msgid "Backup .htaccess File"
|
3110 |
+
msgstr ""
|
3111 |
+
|
3112 |
+
# @ all-in-one-wp-security-and-firewall
|
3113 |
+
#: admin/wp-security-settings-menu.php:293
|
3114 |
+
msgid "Restore from a backed up .htaccess file"
|
3115 |
+
msgstr ""
|
3116 |
+
|
3117 |
+
# @ all-in-one-wp-security-and-firewall
|
3118 |
+
#: admin/wp-security-settings-menu.php:299
|
3119 |
+
msgid ".htaccess file to restore from"
|
3120 |
+
msgstr ""
|
3121 |
+
|
3122 |
+
# @ all-in-one-wp-security-and-firewall
|
3123 |
+
#: admin/wp-security-settings-menu.php:305
|
3124 |
+
msgid "After selecting your file, click the button below to restore your site using the backed up htaccess file (htaccess_backup.txt)."
|
3125 |
+
msgstr ""
|
3126 |
+
|
3127 |
+
# @ all-in-one-wp-security-and-firewall
|
3128 |
+
#: admin/wp-security-settings-menu.php:311
|
3129 |
+
msgid "Restore .htaccess File"
|
3130 |
+
msgstr ""
|
3131 |
+
|
3132 |
+
# @ all-in-one-wp-security-and-firewall
|
3133 |
+
#: admin/wp-security-settings-menu.php:315
|
3134 |
+
msgid "View Contents of the currently active .htaccess file"
|
3135 |
+
msgstr ""
|
3136 |
+
|
3137 |
+
# @ all-in-one-wp-security-and-firewall
|
3138 |
+
#: admin/wp-security-settings-menu.php:344
|
3139 |
+
msgid "Please choose a wp-config.php file to restore from."
|
3140 |
+
msgstr ""
|
3141 |
+
|
3142 |
+
# @ all-in-one-wp-security-and-firewall
|
3143 |
+
#: admin/wp-security-settings-menu.php:360
|
3144 |
+
msgid "wp-config.php file restore failed. Please attempt to restore this file manually using FTP."
|
3145 |
+
msgstr ""
|
3146 |
+
|
3147 |
+
# @ all-in-one-wp-security-and-firewall
|
3148 |
+
#: admin/wp-security-settings-menu.php:364
|
3149 |
+
msgid "Your wp-config.php file has successfully been restored!"
|
3150 |
+
msgstr ""
|
3151 |
+
|
3152 |
+
# @ all-in-one-wp-security-and-firewall
|
3153 |
+
#: admin/wp-security-settings-menu.php:370
|
3154 |
+
msgid "wp-config.php Restore operation failed! Please check the contents of the file you are trying to restore from."
|
3155 |
+
msgstr ""
|
3156 |
+
|
3157 |
+
# @ all-in-one-wp-security-and-firewall
|
3158 |
+
#: admin/wp-security-settings-menu.php:376
|
3159 |
+
msgid "wp-config.php File Operations"
|
3160 |
+
msgstr ""
|
3161 |
+
|
3162 |
+
# @ all-in-one-wp-security-and-firewall
|
3163 |
+
#: admin/wp-security-settings-menu.php:379
|
3164 |
+
msgid "Your \"wp-config.php\" file is one of the most important in your WordPress installation. It is a primary configuration file and contains crucial things such as details of your database and other critical components."
|
3165 |
+
msgstr ""
|
3166 |
+
|
3167 |
+
# @ all-in-one-wp-security-and-firewall
|
3168 |
+
#: admin/wp-security-settings-menu.php:380
|
3169 |
+
msgid "This feature allows you to backup and save your currently active wp-config.php file should you need to re-use the the backed up file in the future."
|
3170 |
+
msgstr ""
|
3171 |
+
|
3172 |
+
# @ all-in-one-wp-security-and-firewall
|
3173 |
+
#: admin/wp-security-settings-menu.php:381
|
3174 |
+
msgid "You can also restore your site's wp-config.php settings using a backed up wp-config.php file."
|
3175 |
+
msgstr ""
|
3176 |
+
|
3177 |
+
# @ all-in-one-wp-security-and-firewall
|
3178 |
+
#: admin/wp-security-settings-menu.php:395
|
3179 |
+
msgid "Save the current wp-config.php file"
|
3180 |
+
msgstr ""
|
3181 |
+
|
3182 |
+
# @ all-in-one-wp-security-and-firewall
|
3183 |
+
#: admin/wp-security-settings-menu.php:399
|
3184 |
+
msgid "Click the button below to backup and download the contents of the currently active wp-config.php file."
|
3185 |
+
msgstr ""
|
3186 |
+
|
3187 |
+
# @ all-in-one-wp-security-and-firewall
|
3188 |
+
#: admin/wp-security-settings-menu.php:400
|
3189 |
+
msgid "Backup wp-config.php File"
|
3190 |
+
msgstr ""
|
3191 |
+
|
3192 |
+
# @ all-in-one-wp-security-and-firewall
|
3193 |
+
#: admin/wp-security-settings-menu.php:405
|
3194 |
+
msgid "Restore from a backed up wp-config file"
|
3195 |
+
msgstr ""
|
3196 |
+
|
3197 |
+
# @ all-in-one-wp-security-and-firewall
|
3198 |
+
#: admin/wp-security-settings-menu.php:411
|
3199 |
+
msgid "wp-config file to restore from"
|
3200 |
+
msgstr ""
|
3201 |
+
|
3202 |
+
# @ all-in-one-wp-security-and-firewall
|
3203 |
+
#: admin/wp-security-settings-menu.php:417
|
3204 |
+
msgid "After selecting your file click the button below to restore your site using the backed up wp-config file (wp-config.php.backup.txt)."
|
3205 |
+
msgstr ""
|
3206 |
+
|
3207 |
+
# @ all-in-one-wp-security-and-firewall
|
3208 |
+
#: admin/wp-security-settings-menu.php:423
|
3209 |
+
msgid "Restore wp-config File"
|
3210 |
+
msgstr ""
|
3211 |
+
|
3212 |
+
# @ all-in-one-wp-security-and-firewall
|
3213 |
+
#: admin/wp-security-settings-menu.php:427
|
3214 |
+
msgid "View Contents of the currently active wp-config.php file"
|
3215 |
+
msgstr ""
|
3216 |
+
|
3217 |
+
# @ all-in-one-wp-security-and-firewall
|
3218 |
+
#: admin/wp-security-settings-menu.php:462
|
3219 |
+
msgid "WP Generator Meta Tag"
|
3220 |
+
msgstr ""
|
3221 |
+
|
3222 |
+
# @ all-in-one-wp-security-and-firewall
|
3223 |
+
#: admin/wp-security-settings-menu.php:465
|
3224 |
+
msgid "Wordpress generator automatically adds some meta information inside the \"head\" tags of every page on your site's front end. Below is an example of this:"
|
3225 |
+
msgstr ""
|
3226 |
+
|
3227 |
+
# @ all-in-one-wp-security-and-firewall
|
3228 |
+
#: admin/wp-security-settings-menu.php:467
|
3229 |
+
msgid "The above meta information shows which version of WordPress your site is currently running and thus can help hackers or crawlers scan your site to see if you have an older version of WordPress or one with a known exploit."
|
3230 |
+
msgstr ""
|
3231 |
+
|
3232 |
+
# @ all-in-one-wp-security-and-firewall
|
3233 |
+
#: admin/wp-security-settings-menu.php:468
|
3234 |
+
msgid "This feature will allow you to remove the WP generator meta info from your site's pages."
|
3235 |
+
msgstr ""
|
3236 |
+
|
3237 |
+
# @ all-in-one-wp-security-and-firewall
|
3238 |
+
#: admin/wp-security-settings-menu.php:474
|
3239 |
+
msgid "WP Generator Meta Info"
|
3240 |
+
msgstr ""
|
3241 |
+
|
3242 |
+
# @ all-in-one-wp-security-and-firewall
|
3243 |
+
#: admin/wp-security-settings-menu.php:486
|
3244 |
+
msgid "Remove WP Generator Meta Info"
|
3245 |
+
msgstr ""
|
3246 |
+
|
3247 |
+
# @ all-in-one-wp-security-and-firewall
|
3248 |
+
#: admin/wp-security-settings-menu.php:489
|
3249 |
+
msgid "Check this if you want to remove the meta info produced by WP Generator from all pages"
|
3250 |
+
msgstr ""
|
3251 |
+
|
3252 |
+
# @ all-in-one-wp-security-and-firewall
|
3253 |
+
#: admin/wp-security-spam-menu.php:23
|
3254 |
+
msgid "Comment SPAM"
|
3255 |
+
msgstr ""
|
3256 |
+
|
3257 |
+
# @ all-in-one-wp-security-and-firewall
|
3258 |
+
#: admin/wp-security-spam-menu.php:24
|
3259 |
+
msgid "Comment SPAM IP Monitoring"
|
3260 |
+
msgstr ""
|
3261 |
+
|
3262 |
+
# @ all-in-one-wp-security-and-firewall
|
3263 |
+
#: admin/wp-security-spam-menu.php:111
|
3264 |
+
msgid "Comment SPAM Settings"
|
3265 |
+
msgstr ""
|
3266 |
+
|
3267 |
+
# @ all-in-one-wp-security-and-firewall
|
3268 |
+
#: admin/wp-security-spam-menu.php:116
|
3269 |
+
msgid "Add Captcha To Comments Form"
|
3270 |
+
msgstr ""
|
3271 |
+
|
3272 |
+
# @ all-in-one-wp-security-and-firewall
|
3273 |
+
#: admin/wp-security-spam-menu.php:120
|
3274 |
+
msgid "This feature will add a simple math captcha field in the WordPress comments form."
|
3275 |
+
msgstr ""
|
3276 |
+
|
3277 |
+
# @ all-in-one-wp-security-and-firewall
|
3278 |
+
#: admin/wp-security-spam-menu.php:121
|
3279 |
+
msgid "Adding a captcha field in the comment form is a simple way of greatly reducing SPAM comments from bots without using .htaccess rules."
|
3280 |
+
msgstr ""
|
3281 |
+
|
3282 |
+
# @ all-in-one-wp-security-and-firewall
|
3283 |
+
#: admin/wp-security-spam-menu.php:137
|
3284 |
+
msgid "Enable Captcha On Comment Forms"
|
3285 |
+
msgstr ""
|
3286 |
+
|
3287 |
+
# @ all-in-one-wp-security-and-firewall
|
3288 |
+
#: admin/wp-security-spam-menu.php:140
|
3289 |
+
msgid "Check this if you want to insert a captcha field on the comment forms"
|
3290 |
+
msgstr ""
|
3291 |
+
|
3292 |
+
# @ all-in-one-wp-security-and-firewall
|
3293 |
+
#: admin/wp-security-spam-menu.php:148
|
3294 |
+
msgid "Block Spambot Comments"
|
3295 |
+
msgstr ""
|
3296 |
+
|
3297 |
+
# @ all-in-one-wp-security-and-firewall
|
3298 |
+
#: admin/wp-security-spam-menu.php:152
|
3299 |
+
msgid "A large portion of WordPress blog comment SPAM is mainly produced by automated bots and not necessarily by humans. "
|
3300 |
+
msgstr ""
|
3301 |
+
|
3302 |
+
# @ all-in-one-wp-security-and-firewall
|
3303 |
+
#: admin/wp-security-spam-menu.php:153
|
3304 |
+
msgid "This feature will greatly minimize the useless and unecessary traffic and load on your server resulting from SPAM comments by blocking all comment requests which do not originate from your domain."
|
3305 |
+
msgstr ""
|
3306 |
+
|
3307 |
+
# @ all-in-one-wp-security-and-firewall
|
3308 |
+
#: admin/wp-security-spam-menu.php:154
|
3309 |
+
msgid "In other words, if the comment was not submitted by a human who physically submitted the comment on your site, the request will be blocked."
|
3310 |
+
msgstr ""
|
3311 |
+
|
3312 |
+
# @ all-in-one-wp-security-and-firewall
|
3313 |
+
#: admin/wp-security-spam-menu.php:170
|
3314 |
+
msgid "Block Spambots From Posting Comments"
|
3315 |
+
msgstr ""
|
3316 |
+
|
3317 |
+
# @ all-in-one-wp-security-and-firewall
|
3318 |
+
#: admin/wp-security-spam-menu.php:173
|
3319 |
+
msgid "Check this if you want to apply a firewall rule which will block comments originating from spambots."
|
3320 |
+
msgstr ""
|
3321 |
+
|
3322 |
+
# @ all-in-one-wp-security-and-firewall
|
3323 |
+
#: admin/wp-security-spam-menu.php:177
|
3324 |
+
msgid "This feature will implement a firewall rule to block all comment attempts which do not originate from your domain."
|
3325 |
+
msgstr ""
|
3326 |
+
|
3327 |
+
# @ all-in-one-wp-security-and-firewall
|
3328 |
+
#: admin/wp-security-spam-menu.php:178
|
3329 |
+
msgid "A legitimate comment is one which is submitted by a human who physically fills out the comment form and clicks the submit button. For such events, the HTTP_REFERRER is always set to your own domain."
|
3330 |
+
msgstr ""
|
3331 |
+
|
3332 |
+
# @ all-in-one-wp-security-and-firewall
|
3333 |
+
#: admin/wp-security-spam-menu.php:179
|
3334 |
+
msgid "A comment submitted by a spambot is done by directly calling the comments.php file, which usually means that the HTTP_REFERRER value is not your domain and often times empty."
|
3335 |
+
msgstr ""
|
3336 |
+
|
3337 |
+
# @ all-in-one-wp-security-and-firewall
|
3338 |
+
#: admin/wp-security-spam-menu.php:180
|
3339 |
+
msgid "This feature will check and block comment requests which are not referred by your domain thus greatly reducing your overall blog SPAM and PHP requests done by the server to process these comments."
|
3340 |
+
msgstr ""
|
3341 |
+
|
3342 |
+
# @ all-in-one-wp-security-and-firewall
|
3343 |
+
#: admin/wp-security-spam-menu.php:207
|
3344 |
+
msgid "Nonce check failed for list SPAM comment IPs!"
|
3345 |
+
msgstr ""
|
3346 |
+
|
3347 |
+
# @ all-in-one-wp-security-and-firewall
|
3348 |
+
#: admin/wp-security-spam-menu.php:213
|
3349 |
+
msgid "You entered a non numeric value for the minimum SPAM comments per IP field. It has been set to the default value."
|
3350 |
+
msgstr ""
|
3351 |
+
|
3352 |
+
# @ all-in-one-wp-security-and-firewall
|
3353 |
+
#: admin/wp-security-spam-menu.php:225
|
3354 |
+
#, php-format
|
3355 |
+
msgid "Displaying results for IP addresses which have posted a minimum of %s SPAM comments"
|
3356 |
+
msgstr ""
|
3357 |
+
|
3358 |
+
# @ all-in-one-wp-security-and-firewall
|
3359 |
+
#: admin/wp-security-spam-menu.php:241
|
3360 |
+
msgid "This tab displays a list of the IP addresses of the people or bots who have left SPAM comments on your site."
|
3361 |
+
msgstr ""
|
3362 |
+
|
3363 |
+
# @ all-in-one-wp-security-and-firewall
|
3364 |
+
#: admin/wp-security-spam-menu.php:242
|
3365 |
+
msgid "This information can be handy for identifying the most persistent IP addresses or ranges used by spammers."
|
3366 |
+
msgstr ""
|
3367 |
+
|
3368 |
+
# @ all-in-one-wp-security-and-firewall
|
3369 |
+
#: admin/wp-security-spam-menu.php:243
|
3370 |
+
msgid "By inspecting the IP address data coming from spammers you will be in a better position to determine which addresses or address ranges you should block by adding them to your blacklist."
|
3371 |
+
msgstr ""
|
3372 |
+
|
3373 |
+
# @ all-in-one-wp-security-and-firewall
|
3374 |
+
#: admin/wp-security-spam-menu.php:244
|
3375 |
+
msgid ""
|
3376 |
+
"To add one or more of the IP addresses displayed in the table below to your blacklist, simply click the \"Block\" link for the individual row or select more than one address \n"
|
3377 |
+
" using the checkboxes and then choose the \"block\" option from the Bulk Actions dropdown list and click the \"Apply\" button."
|
3378 |
+
msgstr ""
|
3379 |
+
|
3380 |
+
# @ all-in-one-wp-security-and-firewall
|
3381 |
+
#: admin/wp-security-spam-menu.php:250
|
3382 |
+
msgid "List SPAMMER IP Addresses"
|
3383 |
+
msgstr ""
|
3384 |
+
|
3385 |
+
# @ all-in-one-wp-security-and-firewall
|
3386 |
+
#: admin/wp-security-spam-menu.php:256
|
3387 |
+
msgid "Minimum number of SPAM comments per IP"
|
3388 |
+
msgstr ""
|
3389 |
+
|
3390 |
+
# @ all-in-one-wp-security-and-firewall
|
3391 |
+
#: admin/wp-security-spam-menu.php:258
|
3392 |
+
msgid "This field allows you to list only those IP addresses which have been used to post X or more SPAM comments."
|
3393 |
+
msgstr ""
|
3394 |
+
|
3395 |
+
# @ all-in-one-wp-security-and-firewall
|
3396 |
+
#: admin/wp-security-spam-menu.php:262
|
3397 |
+
msgid "Example 1: Setting this value to \"0\" or \"1\" will list ALL IP addresses which were used to submit SPAM comments."
|
3398 |
+
msgstr ""
|
3399 |
+
|
3400 |
+
# @ all-in-one-wp-security-and-firewall
|
3401 |
+
#: admin/wp-security-spam-menu.php:263
|
3402 |
+
msgid "Example 2: Setting this value to \"5\" will list only those IP addresses which were used to submit 5 SPAM comments or more on your site."
|
3403 |
+
msgstr ""
|
3404 |
+
|
3405 |
+
# @ all-in-one-wp-security-and-firewall
|
3406 |
+
#: admin/wp-security-spam-menu.php:270
|
3407 |
+
msgid "Find IP Addresses"
|
3408 |
+
msgstr ""
|
3409 |
+
|
3410 |
+
# @ all-in-one-wp-security-and-firewall
|
3411 |
+
#: admin/wp-security-spam-menu.php:274
|
3412 |
+
msgid "SPAMMER IP Address Results"
|
3413 |
+
msgstr ""
|
3414 |
+
|
3415 |
+
# @ all-in-one-wp-security-and-firewall
|
3416 |
+
#: admin/wp-security-spam-menu.php:280 classes/wp-security-utility.php:150
|
3417 |
+
msgid "The plugin has detected that you are using a Multi-Site WordPress installation."
|
3418 |
+
msgstr ""
|
3419 |
+
|
3420 |
+
# @ all-in-one-wp-security-and-firewall
|
3421 |
+
#: admin/wp-security-spam-menu.php:281
|
3422 |
+
msgid "Only the \"superadmin\" can block IP addresses from the main site."
|
3423 |
+
msgstr ""
|
3424 |
+
|
3425 |
+
# @ all-in-one-wp-security-and-firewall
|
3426 |
+
#: admin/wp-security-spam-menu.php:282
|
3427 |
+
msgid "Take note of the IP addresses you want blocked and ask the superadmin to add these to the blacklist using the \"Blacklist Manager\" on the main site."
|
3428 |
+
msgstr ""
|
3429 |
+
|
3430 |
+
# @ all-in-one-wp-security-and-firewall
|
3431 |
+
#: admin/wp-security-user-accounts-menu.php:29
|
3432 |
+
msgid "WP Username"
|
3433 |
+
msgstr ""
|
3434 |
+
|
3435 |
+
# @ all-in-one-wp-security-and-firewall
|
3436 |
+
#: admin/wp-security-user-accounts-menu.php:30
|
3437 |
+
msgid "Display Name"
|
3438 |
+
msgstr ""
|
3439 |
+
|
3440 |
+
# @ all-in-one-wp-security-and-firewall
|
3441 |
+
# @ default
|
3442 |
+
#: admin/wp-security-user-accounts-menu.php:31
|
3443 |
+
#: other-includes/wp-security-rename-login-feature.php:845
|
3444 |
+
msgid "Password"
|
3445 |
+
msgstr ""
|
3446 |
+
|
3447 |
+
# @ all-in-one-wp-security-and-firewall
|
3448 |
+
#: admin/wp-security-user-accounts-menu.php:85
|
3449 |
+
msgid "Admin User Security"
|
3450 |
+
msgstr ""
|
3451 |
+
|
3452 |
+
# @ all-in-one-wp-security-and-firewall
|
3453 |
+
#: admin/wp-security-user-accounts-menu.php:88
|
3454 |
+
msgid "By default, WordPress sets the administrator username to \"admin\" at installation time."
|
3455 |
+
msgstr ""
|
3456 |
+
|
3457 |
+
# @ all-in-one-wp-security-and-firewall
|
3458 |
+
#: admin/wp-security-user-accounts-menu.php:89
|
3459 |
+
msgid "A lot of hackers try to take advantage of this information by attempting \"Brute Force Login Attacks\" where they repeatedly try to guess the password by using \"admin\" for username."
|
3460 |
+
msgstr ""
|
3461 |
+
|
3462 |
+
# @ all-in-one-wp-security-and-firewall
|
3463 |
+
#: admin/wp-security-user-accounts-menu.php:90
|
3464 |
+
msgid "From a security perspective, changing the default \"admin\" user name is one of the first and smartest things you should do on your site."
|
3465 |
+
msgstr ""
|
3466 |
+
|
3467 |
+
# @ all-in-one-wp-security-and-firewall
|
3468 |
+
#: admin/wp-security-user-accounts-menu.php:91
|
3469 |
+
msgid "This feature will allow you to change your default \"admin\" user name to a more secure name of your choosing."
|
3470 |
+
msgstr ""
|
3471 |
+
|
3472 |
+
# @ all-in-one-wp-security-and-firewall
|
3473 |
+
#: admin/wp-security-user-accounts-menu.php:98
|
3474 |
+
msgid "List of Administrator Accounts"
|
3475 |
+
msgstr ""
|
3476 |
+
|
3477 |
+
# @ all-in-one-wp-security-and-firewall
|
3478 |
+
#: admin/wp-security-user-accounts-menu.php:107
|
3479 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:36
|
3480 |
+
msgid "Change Admin Username"
|
3481 |
+
msgstr ""
|
3482 |
+
|
3483 |
+
# @ all-in-one-wp-security-and-firewall
|
3484 |
+
#: admin/wp-security-user-accounts-menu.php:115
|
3485 |
+
msgid ""
|
3486 |
+
"Your site currently has an account which uses the default \"admin\" username. \n"
|
3487 |
+
" It is highly recommended that you change this name to something else. \n"
|
3488 |
+
" Use the following field to change the admin username."
|
3489 |
+
msgstr ""
|
3490 |
+
|
3491 |
+
# @ all-in-one-wp-security-and-firewall
|
3492 |
+
#: admin/wp-security-user-accounts-menu.php:123
|
3493 |
+
msgid "New Admin Username"
|
3494 |
+
msgstr ""
|
3495 |
+
|
3496 |
+
# @ all-in-one-wp-security-and-firewall
|
3497 |
+
#: admin/wp-security-user-accounts-menu.php:125
|
3498 |
+
msgid "Choose a new username for admin."
|
3499 |
+
msgstr ""
|
3500 |
+
|
3501 |
+
# @ all-in-one-wp-security-and-firewall
|
3502 |
+
#: admin/wp-security-user-accounts-menu.php:129
|
3503 |
+
msgid "Change Username"
|
3504 |
+
msgstr ""
|
3505 |
+
|
3506 |
+
# @ all-in-one-wp-security-and-firewall
|
3507 |
+
#: admin/wp-security-user-accounts-menu.php:131
|
3508 |
+
msgid "NOTE: If you are currently logged in as \"admin\" you will be automatically logged out after changing your username and will be required to log back in."
|
3509 |
+
msgstr ""
|
3510 |
+
|
3511 |
+
# @ all-in-one-wp-security-and-firewall
|
3512 |
+
#: admin/wp-security-user-accounts-menu.php:138
|
3513 |
+
msgid "No action required! "
|
3514 |
+
msgstr ""
|
3515 |
+
|
3516 |
+
# @ all-in-one-wp-security-and-firewall
|
3517 |
+
#: admin/wp-security-user-accounts-menu.php:140
|
3518 |
+
msgid "Your site does not have any account which uses the default \"admin\" username. "
|
3519 |
+
msgstr ""
|
3520 |
+
|
3521 |
+
# @ all-in-one-wp-security-and-firewall
|
3522 |
+
#: admin/wp-security-user-accounts-menu.php:141
|
3523 |
+
msgid "This is good security practice."
|
3524 |
+
msgstr ""
|
3525 |
+
|
3526 |
+
# @ all-in-one-wp-security-and-firewall
|
3527 |
+
#: admin/wp-security-user-accounts-menu.php:153
|
3528 |
+
msgid "Display Name Security"
|
3529 |
+
msgstr ""
|
3530 |
+
|
3531 |
+
# @ all-in-one-wp-security-and-firewall
|
3532 |
+
#: admin/wp-security-user-accounts-menu.php:156
|
3533 |
+
msgid "When you submit a post or answer a comment, WordPress will usually display your \"nickname\"."
|
3534 |
+
msgstr ""
|
3535 |
+
|
3536 |
+
# @ all-in-one-wp-security-and-firewall
|
3537 |
+
#: admin/wp-security-user-accounts-menu.php:157
|
3538 |
+
msgid "By default the nickname is set to the login (or user) name of your account."
|
3539 |
+
msgstr ""
|
3540 |
+
|
3541 |
+
# @ all-in-one-wp-security-and-firewall
|
3542 |
+
#: admin/wp-security-user-accounts-menu.php:158
|
3543 |
+
msgid "From a security perspective, leaving your nickname the same as your user name is bad practice because it gives a hacker at least half of your account's login credentials."
|
3544 |
+
msgstr ""
|
3545 |
+
|
3546 |
+
# @ all-in-one-wp-security-and-firewall
|
3547 |
+
#: admin/wp-security-user-accounts-menu.php:159
|
3548 |
+
msgid "Therefore to further tighten your site's security you are advised to change your <strong>nickname</strong> and <strong>Display name</strong> to be different from your <strong>Username</strong>."
|
3549 |
+
msgstr ""
|
3550 |
+
|
3551 |
+
# @ all-in-one-wp-security-and-firewall
|
3552 |
+
#: admin/wp-security-user-accounts-menu.php:165
|
3553 |
+
msgid "Modify Accounts With Identical Login Name & Display Name"
|
3554 |
+
msgstr ""
|
3555 |
+
|
3556 |
+
# @ all-in-one-wp-security-and-firewall
|
3557 |
+
#: admin/wp-security-user-accounts-menu.php:174
|
3558 |
+
msgid "Your site currently has the following accounts which have an identical login name and display name."
|
3559 |
+
msgstr ""
|
3560 |
+
|
3561 |
+
# @ all-in-one-wp-security-and-firewall
|
3562 |
+
#: admin/wp-security-user-accounts-menu.php:175
|
3563 |
+
msgid "Click on the link to edit the settings of that particular user account"
|
3564 |
+
msgstr ""
|
3565 |
+
|
3566 |
+
# @ all-in-one-wp-security-and-firewall
|
3567 |
+
#: admin/wp-security-user-accounts-menu.php:190
|
3568 |
+
msgid "No action required."
|
3569 |
+
msgstr ""
|
3570 |
+
|
3571 |
+
# @ all-in-one-wp-security-and-firewall
|
3572 |
+
#: admin/wp-security-user-accounts-menu.php:191
|
3573 |
+
msgid "Your site does not have a user account where the display name is identical to the username."
|
3574 |
+
msgstr ""
|
3575 |
+
|
3576 |
+
# @ all-in-one-wp-security-and-firewall
|
3577 |
+
#: admin/wp-security-user-accounts-menu.php:202
|
3578 |
+
msgid "Password Tool"
|
3579 |
+
msgstr ""
|
3580 |
+
|
3581 |
+
# @ all-in-one-wp-security-and-firewall
|
3582 |
+
#: admin/wp-security-user-accounts-menu.php:205
|
3583 |
+
msgid "Poor password selection is one of the most common weak points of many sites and is usually the first thing a hacker will try to exploit when attempting to break into your site."
|
3584 |
+
msgstr ""
|
3585 |
+
|
3586 |
+
# @ all-in-one-wp-security-and-firewall
|
3587 |
+
#: admin/wp-security-user-accounts-menu.php:206
|
3588 |
+
msgid "Many people fall into the trap of using a simple word or series of numbers as their password. Such a predictable and simple password would take a competent hacker merely minutes to guess your password by using a simple script which cycles through the easy and most common combinations."
|
3589 |
+
msgstr ""
|
3590 |
+
|
3591 |
+
# @ all-in-one-wp-security-and-firewall
|
3592 |
+
#: admin/wp-security-user-accounts-menu.php:207
|
3593 |
+
msgid "The longer and more complex your password is the harder it is for hackers to \"crack\" because more complex passwords require much greater computing power and time."
|
3594 |
+
msgstr ""
|
3595 |
+
|
3596 |
+
# @ all-in-one-wp-security-and-firewall
|
3597 |
+
#: admin/wp-security-user-accounts-menu.php:208
|
3598 |
+
msgid "This section contains a useful password strength tool which you can use to check whether your password is sufficiently strong enough."
|
3599 |
+
msgstr ""
|
3600 |
+
|
3601 |
+
# @ all-in-one-wp-security-and-firewall
|
3602 |
+
#: admin/wp-security-user-accounts-menu.php:213
|
3603 |
+
msgid "Password Strength Tool"
|
3604 |
+
msgstr ""
|
3605 |
+
|
3606 |
+
# @ all-in-one-wp-security-and-firewall
|
3607 |
+
#: admin/wp-security-user-accounts-menu.php:218
|
3608 |
+
msgid "Start typing a password."
|
3609 |
+
msgstr ""
|
3610 |
+
|
3611 |
+
# @ all-in-one-wp-security-and-firewall
|
3612 |
+
#: admin/wp-security-user-accounts-menu.php:221
|
3613 |
+
msgid "It would take a desktop PC approximately"
|
3614 |
+
msgstr ""
|
3615 |
+
|
3616 |
+
# @ all-in-one-wp-security-and-firewall
|
3617 |
+
#: admin/wp-security-user-accounts-menu.php:222
|
3618 |
+
msgid "1 sec"
|
3619 |
+
msgstr ""
|
3620 |
+
|
3621 |
+
# @ all-in-one-wp-security-and-firewall
|
3622 |
+
#: admin/wp-security-user-accounts-menu.php:222
|
3623 |
+
msgid "to crack your password!"
|
3624 |
+
msgstr ""
|
3625 |
+
|
3626 |
+
# @ all-in-one-wp-security-and-firewall
|
3627 |
+
#: admin/wp-security-user-accounts-menu.php:227
|
3628 |
+
msgid "Password Strength"
|
3629 |
+
msgstr ""
|
3630 |
+
|
3631 |
+
# @ all-in-one-wp-security-and-firewall
|
3632 |
+
#: admin/wp-security-user-accounts-menu.php:243
|
3633 |
+
msgid "Nonce check failed on admin username change operation!"
|
3634 |
+
msgstr ""
|
3635 |
+
|
3636 |
+
# @ all-in-one-wp-security-and-firewall
|
3637 |
+
#: admin/wp-security-user-accounts-menu.php:250
|
3638 |
+
msgid "Username "
|
3639 |
+
msgstr ""
|
3640 |
+
|
3641 |
+
# @ all-in-one-wp-security-and-firewall
|
3642 |
+
#: admin/wp-security-user-accounts-menu.php:250
|
3643 |
+
msgid " already exists. Please enter another value. "
|
3644 |
+
msgstr ""
|
3645 |
+
|
3646 |
+
# @ all-in-one-wp-security-and-firewall
|
3647 |
+
#: admin/wp-security-user-accounts-menu.php:266
|
3648 |
+
msgid "The database update operation of the user account failed!"
|
3649 |
+
msgstr ""
|
3650 |
+
|
3651 |
+
# @ all-in-one-wp-security-and-firewall
|
3652 |
+
#: admin/wp-security-user-accounts-menu.php:293
|
3653 |
+
msgid "You entered an invalid username. Please enter another value. "
|
3654 |
+
msgstr ""
|
3655 |
+
|
3656 |
+
# @ all-in-one-wp-security-and-firewall
|
3657 |
+
#: admin/wp-security-user-accounts-menu.php:297
|
3658 |
+
msgid "Please enter a value for your username. "
|
3659 |
+
msgstr ""
|
3660 |
+
|
3661 |
+
# @ all-in-one-wp-security-and-firewall
|
3662 |
+
#: admin/wp-security-user-accounts-menu.php:304
|
3663 |
+
msgid "Username Successfully Changed!"
|
3664 |
+
msgstr ""
|
3665 |
+
|
3666 |
+
# @ all-in-one-wp-security-and-firewall
|
3667 |
+
#: admin/wp-security-user-accounts-menu.php:324
|
3668 |
+
msgid "Account Login Name"
|
3669 |
+
msgstr ""
|
3670 |
+
|
3671 |
+
# @ all-in-one-wp-security-and-firewall
|
3672 |
+
#: admin/wp-security-user-login-menu.php:26
|
3673 |
+
#: admin/wp-security-user-login-menu.php:298
|
3674 |
+
msgid "Failed Login Records"
|
3675 |
+
msgstr ""
|
3676 |
+
|
3677 |
+
# @ all-in-one-wp-security-and-firewall
|
3678 |
+
#: admin/wp-security-user-login-menu.php:27
|
3679 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:50
|
3680 |
+
msgid "Force Logout"
|
3681 |
+
msgstr ""
|
3682 |
+
|
3683 |
+
# @ all-in-one-wp-security-and-firewall
|
3684 |
+
#: admin/wp-security-user-login-menu.php:28
|
3685 |
+
#: admin/wp-security-user-login-menu.php:432
|
3686 |
+
msgid "Account Activity Logs"
|
3687 |
+
msgstr ""
|
3688 |
+
|
3689 |
+
# @ all-in-one-wp-security-and-firewall
|
3690 |
+
#: admin/wp-security-user-login-menu.php:96
|
3691 |
+
msgid "You entered a non numeric value for the max login attempts field. It has been set to the default value."
|
3692 |
+
msgstr ""
|
3693 |
+
|
3694 |
+
# @ all-in-one-wp-security-and-firewall
|
3695 |
+
#: admin/wp-security-user-login-menu.php:103
|
3696 |
+
msgid "You entered a non numeric value for the login retry time period field. It has been set to the default value."
|
3697 |
+
msgstr ""
|
3698 |
+
|
3699 |
+
# @ all-in-one-wp-security-and-firewall
|
3700 |
+
#: admin/wp-security-user-login-menu.php:159
|
3701 |
+
msgid "Login Lockdown Configuration"
|
3702 |
+
msgstr ""
|
3703 |
+
|
3704 |
+
# @ all-in-one-wp-security-and-firewall
|
3705 |
+
#: admin/wp-security-user-login-menu.php:163
|
3706 |
+
msgid "One of the ways hackers try to compromise sites is via a "
|
3707 |
+
msgstr ""
|
3708 |
+
|
3709 |
+
# @ all-in-one-wp-security-and-firewall
|
3710 |
+
#: admin/wp-security-user-login-menu.php:163
|
3711 |
+
msgid "Brute Force Login Attack"
|
3712 |
+
msgstr ""
|
3713 |
+
|
3714 |
+
# @ all-in-one-wp-security-and-firewall
|
3715 |
+
#: admin/wp-security-user-login-menu.php:164
|
3716 |
+
msgid "This is where attackers use repeated login attempts until they guess the password."
|
3717 |
+
msgstr ""
|
3718 |
+
|
3719 |
+
# @ all-in-one-wp-security-and-firewall
|
3720 |
+
#: admin/wp-security-user-login-menu.php:165
|
3721 |
+
msgid "Apart from choosing strong passwords, monitoring and blocking IP addresses which are involved in repeated login failures in a short period of time is a very effective way to stop these types of attacks."
|
3722 |
+
msgstr ""
|
3723 |
+
|
3724 |
+
# @ all-in-one-wp-security-and-firewall
|
3725 |
+
#: admin/wp-security-user-login-menu.php:166
|
3726 |
+
#, php-format
|
3727 |
+
msgid "You may also want to checkout our %s feature for another secure way to protect against these types of attacks."
|
3728 |
+
msgstr ""
|
3729 |
+
|
3730 |
+
# @ all-in-one-wp-security-and-firewall
|
3731 |
+
#: admin/wp-security-user-login-menu.php:171
|
3732 |
+
msgid "Login Lockdown Options"
|
3733 |
+
msgstr ""
|
3734 |
+
|
3735 |
+
# @ all-in-one-wp-security-and-firewall
|
3736 |
+
#: admin/wp-security-user-login-menu.php:183
|
3737 |
+
msgid "Enable Login Lockdown Feature"
|
3738 |
+
msgstr ""
|
3739 |
+
|
3740 |
+
# @ all-in-one-wp-security-and-firewall
|
3741 |
+
#: admin/wp-security-user-login-menu.php:186
|
3742 |
+
msgid "Check this if you want to enable the login lockdown feature and apply the settings below"
|
3743 |
+
msgstr ""
|
3744 |
+
|
3745 |
+
# @ all-in-one-wp-security-and-firewall
|
3746 |
+
#: admin/wp-security-user-login-menu.php:190
|
3747 |
+
msgid "Allow Unlock Requests"
|
3748 |
+
msgstr ""
|
3749 |
+
|
3750 |
+
# @ all-in-one-wp-security-and-firewall
|
3751 |
+
#: admin/wp-security-user-login-menu.php:193
|
3752 |
+
msgid "Check this if you want to allow users to generate an automated unlock request link which will unlock their account"
|
3753 |
+
msgstr ""
|
3754 |
+
|
3755 |
+
# @ all-in-one-wp-security-and-firewall
|
3756 |
+
#: admin/wp-security-user-login-menu.php:197
|
3757 |
+
msgid "Max Login Attempts"
|
3758 |
+
msgstr ""
|
3759 |
+
|
3760 |
+
# @ all-in-one-wp-security-and-firewall
|
3761 |
+
#: admin/wp-security-user-login-menu.php:199
|
3762 |
+
msgid "Set the value for the maximum login retries before IP address is locked out"
|
3763 |
+
msgstr ""
|
3764 |
+
|
3765 |
+
# @ all-in-one-wp-security-and-firewall
|
3766 |
+
#: admin/wp-security-user-login-menu.php:203
|
3767 |
+
msgid "Login Retry Time Period (min)"
|
3768 |
+
msgstr ""
|
3769 |
+
|
3770 |
+
# @ all-in-one-wp-security-and-firewall
|
3771 |
+
#: admin/wp-security-user-login-menu.php:205
|
3772 |
+
msgid "If the maximum number of failed login attempts for a particular IP address occur within this time period the plugin will lock out that address"
|
3773 |
+
msgstr ""
|
3774 |
+
|
3775 |
+
# @ all-in-one-wp-security-and-firewall
|
3776 |
+
#: admin/wp-security-user-login-menu.php:209
|
3777 |
+
msgid "Time Length of Lockout (min)"
|
3778 |
+
msgstr ""
|
3779 |
+
|
3780 |
+
# @ all-in-one-wp-security-and-firewall
|
3781 |
+
#: admin/wp-security-user-login-menu.php:211
|
3782 |
+
msgid "Set the length of time for which a particular IP address will be prevented from logging in"
|
3783 |
+
msgstr ""
|
3784 |
+
|
3785 |
+
# @ all-in-one-wp-security-and-firewall
|
3786 |
+
#: admin/wp-security-user-login-menu.php:215
|
3787 |
+
msgid "Display Generic Error Message"
|
3788 |
+
msgstr ""
|
3789 |
+
|
3790 |
+
# @ all-in-one-wp-security-and-firewall
|
3791 |
+
#: admin/wp-security-user-login-menu.php:218
|
3792 |
+
msgid "Check this if you want to show a generic error message when a login attempt fails"
|
3793 |
+
msgstr ""
|
3794 |
+
|
3795 |
+
# @ all-in-one-wp-security-and-firewall
|
3796 |
+
#: admin/wp-security-user-login-menu.php:222
|
3797 |
+
msgid "Instantly Lockout Invalid Usernames"
|
3798 |
+
msgstr ""
|
3799 |
+
|
3800 |
+
# @ all-in-one-wp-security-and-firewall
|
3801 |
+
#: admin/wp-security-user-login-menu.php:225
|
3802 |
+
msgid "Check this if you want to instantly lockout login attempts with usernames which do not exist on your system"
|
3803 |
+
msgstr ""
|
3804 |
+
|
3805 |
+
# @ all-in-one-wp-security-and-firewall
|
3806 |
+
#: admin/wp-security-user-login-menu.php:230
|
3807 |
+
msgid "Notify By Email"
|
3808 |
+
msgstr ""
|
3809 |
+
|
3810 |
+
# @ all-in-one-wp-security-and-firewall
|
3811 |
+
#: admin/wp-security-user-login-menu.php:233
|
3812 |
+
msgid "Check this if you want to receive an email when someone has been locked out due to maximum failed login attempts"
|
3813 |
+
msgstr ""
|
3814 |
+
|
3815 |
+
# @ all-in-one-wp-security-and-firewall
|
3816 |
+
#: admin/wp-security-user-login-menu.php:243
|
3817 |
+
msgid "Currently Locked Out IP Address Ranges"
|
3818 |
+
msgstr ""
|
3819 |
+
|
3820 |
+
# @ all-in-one-wp-security-and-firewall
|
3821 |
+
#: admin/wp-security-user-login-menu.php:248
|
3822 |
+
#, php-format
|
3823 |
+
msgid "To see a list of all locked IP addresses and ranges go to the %s tab in the dashboard menu."
|
3824 |
+
msgstr ""
|
3825 |
+
|
3826 |
+
# @ all-in-one-wp-security-and-firewall
|
3827 |
+
#: admin/wp-security-user-login-menu.php:264
|
3828 |
+
msgid "Nonce check failed for delete all failed login records operation!"
|
3829 |
+
msgstr ""
|
3830 |
+
|
3831 |
+
# @ all-in-one-wp-security-and-firewall
|
3832 |
+
#: admin/wp-security-user-login-menu.php:273
|
3833 |
+
msgid "User Login Feature - Delete all failed login records operation failed!"
|
3834 |
+
msgstr ""
|
3835 |
+
|
3836 |
+
# @ all-in-one-wp-security-and-firewall
|
3837 |
+
#: admin/wp-security-user-login-menu.php:277
|
3838 |
+
msgid "All records from the Failed Logins table were deleted successfully!"
|
3839 |
+
msgstr ""
|
3840 |
+
|
3841 |
+
# @ all-in-one-wp-security-and-firewall
|
3842 |
+
#: admin/wp-security-user-login-menu.php:292
|
3843 |
+
msgid "This tab displays the failed login attempts for your site."
|
3844 |
+
msgstr ""
|
3845 |
+
|
3846 |
+
# @ all-in-one-wp-security-and-firewall
|
3847 |
+
#: admin/wp-security-user-login-menu.php:293
|
3848 |
+
msgid "The information below can be handy if you need to do security investigations because it will show you the IP range, username and ID (if applicable) and the time/date of the failed login attempt."
|
3849 |
+
msgstr ""
|
3850 |
+
|
3851 |
+
# @ all-in-one-wp-security-and-firewall
|
3852 |
+
#: admin/wp-security-user-login-menu.php:314
|
3853 |
+
#: admin/wp-security-user-login-menu.php:323
|
3854 |
+
msgid "Delete All Failed Login Records"
|
3855 |
+
msgstr ""
|
3856 |
+
|
3857 |
+
# @ all-in-one-wp-security-and-firewall
|
3858 |
+
#: admin/wp-security-user-login-menu.php:320
|
3859 |
+
msgid "Click this button if you wish to delete all failed login records in one go."
|
3860 |
+
msgstr ""
|
3861 |
+
|
3862 |
+
# @ all-in-one-wp-security-and-firewall
|
3863 |
+
#: admin/wp-security-user-login-menu.php:348
|
3864 |
+
msgid "You entered a non numeric value for the logout time period field. It has been set to the default value."
|
3865 |
+
msgstr ""
|
3866 |
+
|
3867 |
+
# @ all-in-one-wp-security-and-firewall
|
3868 |
+
#: admin/wp-security-user-login-menu.php:376
|
3869 |
+
msgid "Setting an expiry period for your WP administration session is a simple way to protect against unauthorized access to your site from your computer."
|
3870 |
+
msgstr ""
|
3871 |
+
|
3872 |
+
# @ all-in-one-wp-security-and-firewall
|
3873 |
+
#: admin/wp-security-user-login-menu.php:377
|
3874 |
+
msgid "This feature allows you to specify a time period in minutes after which the admin session will expire and the user will be forced to log back in."
|
3875 |
+
msgstr ""
|
3876 |
+
|
3877 |
+
# @ all-in-one-wp-security-and-firewall
|
3878 |
+
#: admin/wp-security-user-login-menu.php:382
|
3879 |
+
msgid "Force User Logout Options"
|
3880 |
+
msgstr ""
|
3881 |
+
|
3882 |
+
# @ all-in-one-wp-security-and-firewall
|
3883 |
+
#: admin/wp-security-user-login-menu.php:394
|
3884 |
+
msgid "Enable Force WP User Logout"
|
3885 |
+
msgstr ""
|
3886 |
+
|
3887 |
+
# @ all-in-one-wp-security-and-firewall
|
3888 |
+
#: admin/wp-security-user-login-menu.php:397
|
3889 |
+
msgid "Check this if you want to force a wp user to be logged out after a configured amount of time"
|
3890 |
+
msgstr ""
|
3891 |
+
|
3892 |
+
# @ all-in-one-wp-security-and-firewall
|
3893 |
+
#: admin/wp-security-user-login-menu.php:401
|
3894 |
+
msgid "Logout the WP User After XX Minutes"
|
3895 |
+
msgstr ""
|
3896 |
+
|
3897 |
+
# @ all-in-one-wp-security-and-firewall
|
3898 |
+
#: admin/wp-security-user-login-menu.php:403
|
3899 |
+
msgid "(Minutes) The user will be forced to log back in after this time period has elapased."
|
3900 |
+
msgstr ""
|
3901 |
+
|
3902 |
+
# @ all-in-one-wp-security-and-firewall
|
3903 |
+
#: admin/wp-security-user-login-menu.php:426
|
3904 |
+
msgid "This tab displays the login activity for WordPress admin accounts registered with your site."
|
3905 |
+
msgstr ""
|
3906 |
+
|
3907 |
+
# @ all-in-one-wp-security-and-firewall
|
3908 |
+
#: admin/wp-security-user-login-menu.php:427
|
3909 |
+
msgid "The information below can be handy if you need to do security investigations because it will show you the last 50 recent login events by username, IP address and time/date."
|
3910 |
+
msgstr ""
|
3911 |
+
|
3912 |
+
# @ all-in-one-wp-security-and-firewall
|
3913 |
+
#: admin/wp-security-user-login-menu.php:464
|
3914 |
+
msgid "Nonce check failed for users logged in list!"
|
3915 |
+
msgstr ""
|
3916 |
+
|
3917 |
+
# @ all-in-one-wp-security-and-firewall
|
3918 |
+
#: admin/wp-security-user-login-menu.php:477
|
3919 |
+
msgid "Refresh Logged In User Data"
|
3920 |
+
msgstr ""
|
3921 |
+
|
3922 |
+
# @ all-in-one-wp-security-and-firewall
|
3923 |
+
#: admin/wp-security-user-login-menu.php:481
|
3924 |
+
msgid "Refresh Data"
|
3925 |
+
msgstr ""
|
3926 |
+
|
3927 |
+
# @ all-in-one-wp-security-and-firewall
|
3928 |
+
#: admin/wp-security-user-login-menu.php:487
|
3929 |
+
msgid "This tab displays all users who are currently logged into your site."
|
3930 |
+
msgstr ""
|
3931 |
+
|
3932 |
+
# @ all-in-one-wp-security-and-firewall
|
3933 |
+
#: admin/wp-security-user-login-menu.php:488
|
3934 |
+
msgid "If you suspect there is a user or users who are logged in which should not be, you can block them by inspecting the IP addresses from the data below and adding them to your blacklist."
|
3935 |
+
msgstr ""
|
3936 |
+
|
3937 |
+
# @ all-in-one-wp-security-and-firewall
|
3938 |
+
#: admin/wp-security-user-login-menu.php:493
|
3939 |
+
msgid "Currently Logged In Users"
|
3940 |
+
msgstr ""
|
3941 |
+
|
3942 |
+
# @ all-in-one-wp-security-and-firewall
|
3943 |
+
#: admin/wp-security-user-login-menu.php:558
|
3944 |
+
msgid "The selected records were deleted successfully!"
|
3945 |
+
msgstr ""
|
3946 |
+
|
3947 |
+
# @ all-in-one-wp-security-and-firewall
|
3948 |
+
#: admin/wp-security-user-login-menu.php:567
|
3949 |
+
msgid "The selected record was deleted successfully!"
|
3950 |
+
msgstr ""
|
3951 |
+
|
3952 |
+
# @ all-in-one-wp-security-and-firewall
|
3953 |
+
#: admin/wp-security-user-registration-menu.php:23
|
3954 |
+
msgid "Manual Approval"
|
3955 |
+
msgstr ""
|
3956 |
+
|
3957 |
+
# @ all-in-one-wp-security-and-firewall
|
3958 |
+
#: admin/wp-security-user-registration-menu.php:24
|
3959 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:56
|
3960 |
+
msgid "Registration Captcha"
|
3961 |
+
msgstr ""
|
3962 |
+
|
3963 |
+
# @ all-in-one-wp-security-and-firewall
|
3964 |
+
#: admin/wp-security-user-registration-menu.php:112
|
3965 |
+
msgid "User Registration Settings"
|
3966 |
+
msgstr ""
|
3967 |
+
|
3968 |
+
# @ all-in-one-wp-security-and-firewall
|
3969 |
+
#: admin/wp-security-user-registration-menu.php:116
|
3970 |
+
msgid "Manually Approve New Registrations"
|
3971 |
+
msgstr ""
|
3972 |
+
|
3973 |
+
# @ all-in-one-wp-security-and-firewall
|
3974 |
+
#: admin/wp-security-user-registration-menu.php:120
|
3975 |
+
msgid "If your site allows people to create their own accounts via the WordPress registration form, then you can minimize SPAM or bogus registrations by manually approving each registration."
|
3976 |
+
msgstr ""
|
3977 |
+
|
3978 |
+
# @ all-in-one-wp-security-and-firewall
|
3979 |
+
#: admin/wp-security-user-registration-menu.php:121
|
3980 |
+
msgid "This feature will automatically set a newly registered account to \"pending\" until the administrator activates it. Therefore undesirable registrants will be unable to log in without your express approval."
|
3981 |
+
msgstr ""
|
3982 |
+
|
3983 |
+
# @ all-in-one-wp-security-and-firewall
|
3984 |
+
#: admin/wp-security-user-registration-menu.php:122
|
3985 |
+
msgid "You can view all accounts which have been newly registered via the handy table below and you can also perform bulk activation/deactivation/deletion tasks on each account."
|
3986 |
+
msgstr ""
|
3987 |
+
|
3988 |
+
# @ all-in-one-wp-security-and-firewall
|
3989 |
+
#: admin/wp-security-user-registration-menu.php:138
|
3990 |
+
msgid "Enable manual approval of new registrations"
|
3991 |
+
msgstr ""
|
3992 |
+
|
3993 |
+
# @ all-in-one-wp-security-and-firewall
|
3994 |
+
#: admin/wp-security-user-registration-menu.php:141
|
3995 |
+
msgid "Check this if you want to automatically disable all newly registered accounts so that you can approve them manually."
|
3996 |
+
msgstr ""
|
3997 |
+
|
3998 |
+
# @ all-in-one-wp-security-and-firewall
|
3999 |
+
#: admin/wp-security-user-registration-menu.php:150
|
4000 |
+
msgid "Approve Registered Users"
|
4001 |
+
msgstr ""
|
4002 |
+
|
4003 |
+
# @ all-in-one-wp-security-and-firewall
|
4004 |
+
#: admin/wp-security-user-registration-menu.php:195
|
4005 |
+
msgid "This feature allows you to add a captcha form on the WordPress registration page."
|
4006 |
+
msgstr ""
|
4007 |
+
|
4008 |
+
# @ all-in-one-wp-security-and-firewall
|
4009 |
+
#: admin/wp-security-user-registration-menu.php:196
|
4010 |
+
msgid "Users who attempt to register will also need to enter the answer to a simple mathematical question - if they enter the wrong answer, the plugin will not allow them to register."
|
4011 |
+
msgstr ""
|
4012 |
+
|
4013 |
+
# @ all-in-one-wp-security-and-firewall
|
4014 |
+
#: admin/wp-security-user-registration-menu.php:197
|
4015 |
+
msgid "Therefore, adding a captcha form on the registration page is another effective yet simple SPAM registration prevention technique."
|
4016 |
+
msgstr ""
|
4017 |
+
|
4018 |
+
# @ all-in-one-wp-security-and-firewall
|
4019 |
+
#: admin/wp-security-user-registration-menu.php:202
|
4020 |
+
msgid "Registration Page Captcha Settings"
|
4021 |
+
msgstr ""
|
4022 |
+
|
4023 |
+
# @ all-in-one-wp-security-and-firewall
|
4024 |
+
#: admin/wp-security-user-registration-menu.php:214
|
4025 |
+
msgid "Enable Captcha On Registration Page"
|
4026 |
+
msgstr ""
|
4027 |
+
|
4028 |
+
# @ all-in-one-wp-security-and-firewall
|
4029 |
+
#: admin/wp-security-user-registration-menu.php:217
|
4030 |
+
msgid "Check this if you want to insert a captcha form on the WordPress user registration page (if you allow user registration)."
|
4031 |
+
msgstr ""
|
4032 |
+
|
4033 |
+
# @ all-in-one-wp-security-and-firewall
|
4034 |
+
#: admin/wp-security-whois-menu.php:22
|
4035 |
+
msgid "WhoIS Lookup"
|
4036 |
+
msgstr ""
|
4037 |
+
|
4038 |
+
# @ all-in-one-wp-security-and-firewall
|
4039 |
+
#: admin/wp-security-whois-menu.php:74
|
4040 |
+
msgid "WHOIS Lookup Information"
|
4041 |
+
msgstr ""
|
4042 |
+
|
4043 |
+
# @ all-in-one-wp-security-and-firewall
|
4044 |
+
#: admin/wp-security-whois-menu.php:77
|
4045 |
+
msgid "This feature allows you to look up more detailed information about an IP address or domain name by querying the WHOIS API."
|
4046 |
+
msgstr ""
|
4047 |
+
|
4048 |
+
# @ all-in-one-wp-security-and-firewall
|
4049 |
+
#: admin/wp-security-whois-menu.php:83
|
4050 |
+
msgid "Perform a WHOIS Lookup for an IP or Domain Name"
|
4051 |
+
msgstr ""
|
4052 |
+
|
4053 |
+
# @ all-in-one-wp-security-and-firewall
|
4054 |
+
#: admin/wp-security-whois-menu.php:89
|
4055 |
+
msgid "Enter IP Address or Domain Name"
|
4056 |
+
msgstr ""
|
4057 |
+
|
4058 |
+
# @ all-in-one-wp-security-and-firewall
|
4059 |
+
#: admin/wp-security-whois-menu.php:91
|
4060 |
+
msgid "Enter an IP address or domain name. Example: 111.11.12.13 OR some-domain-name.com"
|
4061 |
+
msgstr ""
|
4062 |
+
|
4063 |
+
# @ all-in-one-wp-security-and-firewall
|
4064 |
+
#: admin/wp-security-whois-menu.php:95
|
4065 |
+
msgid "Perform IP or Domain Lookup"
|
4066 |
+
msgstr ""
|
4067 |
+
|
4068 |
+
# @ all-in-one-wp-security-and-firewall
|
4069 |
+
#: admin/wp-security-whois-menu.php:115
|
4070 |
+
msgid "WHOIS lookup successfully completed. Please see the results below:"
|
4071 |
+
msgstr ""
|
4072 |
+
|
4073 |
+
# @ all-in-one-wp-security-and-firewall
|
4074 |
+
#: admin/wp-security-whois-menu.php:127
|
4075 |
+
msgid "You have entered an incorrectly formatted IP address or domain name. Please try again."
|
4076 |
+
msgstr ""
|
4077 |
+
|
4078 |
+
# @ all-in-one-wp-security-and-firewall
|
4079 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:29
|
4080 |
+
msgid "Remove WP Generatore Meta Tag"
|
4081 |
+
msgstr ""
|
4082 |
+
|
4083 |
+
# @ all-in-one-wp-security-and-firewall
|
4084 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:38
|
4085 |
+
msgid "Change Display Name"
|
4086 |
+
msgstr ""
|
4087 |
+
|
4088 |
+
# @ all-in-one-wp-security-and-firewall
|
4089 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:46
|
4090 |
+
msgid "Lost Password Captcha"
|
4091 |
+
msgstr ""
|
4092 |
+
|
4093 |
+
# @ all-in-one-wp-security-and-firewall
|
4094 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:48
|
4095 |
+
msgid "Login IP Whitelisting"
|
4096 |
+
msgstr ""
|
4097 |
+
|
4098 |
+
# @ all-in-one-wp-security-and-firewall
|
4099 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:54
|
4100 |
+
msgid "Registration Approval"
|
4101 |
+
msgstr ""
|
4102 |
+
|
4103 |
+
# @ all-in-one-wp-security-and-firewall
|
4104 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:70
|
4105 |
+
msgid "WordPress Files Access"
|
4106 |
+
msgstr ""
|
4107 |
+
|
4108 |
+
# @ all-in-one-wp-security-and-firewall
|
4109 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:74
|
4110 |
+
msgid "IP and User Agent Blacklisting"
|
4111 |
+
msgstr ""
|
4112 |
+
|
4113 |
+
# @ all-in-one-wp-security-and-firewall
|
4114 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:78
|
4115 |
+
msgid "Enable Basic Firewall"
|
4116 |
+
msgstr ""
|
4117 |
+
|
4118 |
+
# @ all-in-one-wp-security-and-firewall
|
4119 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:79
|
4120 |
+
msgid "Enable Pingback Vulnerability Protection"
|
4121 |
+
msgstr ""
|
4122 |
+
|
4123 |
+
# @ all-in-one-wp-security-and-firewall
|
4124 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:80
|
4125 |
+
msgid "Enable IP blocking for 404 detection"
|
4126 |
+
msgstr ""
|
4127 |
+
|
4128 |
+
# @ all-in-one-wp-security-and-firewall
|
4129 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:84
|
4130 |
+
msgid "Enable Rename Login Page"
|
4131 |
+
msgstr ""
|
4132 |
+
|
4133 |
+
# @ all-in-one-wp-security-and-firewall
|
4134 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:90
|
4135 |
+
msgid "Forbid Proxy Comments"
|
4136 |
+
msgstr ""
|
4137 |
+
|
4138 |
+
# @ all-in-one-wp-security-and-firewall
|
4139 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:91
|
4140 |
+
msgid "Deny Bad Queries"
|
4141 |
+
msgstr ""
|
4142 |
+
|
4143 |
+
# @ all-in-one-wp-security-and-firewall
|
4144 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:93
|
4145 |
+
msgid "5G Blacklist"
|
4146 |
+
msgstr ""
|
4147 |
+
|
4148 |
+
# @ all-in-one-wp-security-and-firewall
|
4149 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:96
|
4150 |
+
msgid "Block Spambots"
|
4151 |
+
msgstr ""
|
4152 |
+
|
4153 |
+
# @ all-in-one-wp-security-and-firewall
|
4154 |
+
#: classes/grade-system/wp-security-feature-item-manager.php:98
|
4155 |
+
msgid "Comment Captcha"
|
4156 |
+
msgstr ""
|
4157 |
+
|
4158 |
+
# @ all-in-one-wp-security-and-firewall
|
4159 |
+
#: classes/grade-system/wp-security-feature-item.php:28
|
4160 |
+
msgid "Basic"
|
4161 |
+
msgstr ""
|
4162 |
+
|
4163 |
+
# @ all-in-one-wp-security-and-firewall
|
4164 |
+
#: classes/grade-system/wp-security-feature-item.php:31
|
4165 |
+
msgid "Intermediate"
|
4166 |
+
msgstr ""
|
4167 |
+
|
4168 |
+
# @ all-in-one-wp-security-and-firewall
|
4169 |
+
#: classes/grade-system/wp-security-feature-item.php:34
|
4170 |
+
msgid "Advanced"
|
4171 |
+
msgstr ""
|
4172 |
+
|
4173 |
+
# @ all-in-one-wp-security-and-firewall
|
4174 |
+
#: classes/wp-security-backup.php:177
|
4175 |
+
msgid "All In One WP Security - Site Database Backup"
|
4176 |
+
msgstr ""
|
4177 |
+
|
4178 |
+
# @ all-in-one-wp-security-and-firewall
|
4179 |
+
#: classes/wp-security-backup.php:179
|
4180 |
+
msgid "Attached is your latest DB backup file for site URL"
|
4181 |
+
msgstr ""
|
4182 |
+
|
4183 |
+
# @ all-in-one-wp-security-and-firewall
|
4184 |
+
#: classes/wp-security-backup.php:179
|
4185 |
+
msgid " generated on"
|
4186 |
+
msgstr ""
|
4187 |
+
|
4188 |
+
# @ all-in-one-wp-security-and-firewall
|
4189 |
+
#: classes/wp-security-captcha.php:12
|
4190 |
+
msgid "Please enter an answer in digits:"
|
4191 |
+
msgstr "Geef het antwoord (in cijfers) van de rekensom:"
|
4192 |
+
|
4193 |
+
# @ all-in-one-wp-security-and-firewall
|
4194 |
+
#: classes/wp-security-captcha.php:91
|
4195 |
+
msgid "one"
|
4196 |
+
msgstr "een"
|
4197 |
+
|
4198 |
+
# @ all-in-one-wp-security-and-firewall
|
4199 |
+
#: classes/wp-security-captcha.php:92
|
4200 |
+
msgid "two"
|
4201 |
+
msgstr "twee"
|
4202 |
+
|
4203 |
+
# @ all-in-one-wp-security-and-firewall
|
4204 |
+
#: classes/wp-security-captcha.php:93
|
4205 |
+
msgid "three"
|
4206 |
+
msgstr "drie"
|
4207 |
+
|
4208 |
+
# @ all-in-one-wp-security-and-firewall
|
4209 |
+
#: classes/wp-security-captcha.php:94
|
4210 |
+
msgid "four"
|
4211 |
+
msgstr "vier"
|
4212 |
+
|
4213 |
+
# @ all-in-one-wp-security-and-firewall
|
4214 |
+
#: classes/wp-security-captcha.php:95
|
4215 |
+
msgid "five"
|
4216 |
+
msgstr "vijf"
|
4217 |
+
|
4218 |
+
# @ all-in-one-wp-security-and-firewall
|
4219 |
+
#: classes/wp-security-captcha.php:96
|
4220 |
+
msgid "six"
|
4221 |
+
msgstr "zes"
|
4222 |
+
|
4223 |
+
# @ all-in-one-wp-security-and-firewall
|
4224 |
+
#: classes/wp-security-captcha.php:97
|
4225 |
+
msgid "seven"
|
4226 |
+
msgstr "zeven"
|
4227 |
+
|
4228 |
+
# @ all-in-one-wp-security-and-firewall
|
4229 |
+
#: classes/wp-security-captcha.php:98
|
4230 |
+
msgid "eight"
|
4231 |
+
msgstr "acht"
|
4232 |
+
|
4233 |
+
# @ all-in-one-wp-security-and-firewall
|
4234 |
+
#: classes/wp-security-captcha.php:99
|
4235 |
+
msgid "nine"
|
4236 |
+
msgstr "negen"
|
4237 |
+
|
4238 |
+
# @ all-in-one-wp-security-and-firewall
|
4239 |
+
#: classes/wp-security-captcha.php:100
|
4240 |
+
msgid "ten"
|
4241 |
+
msgstr "tien"
|
4242 |
+
|
4243 |
+
# @ all-in-one-wp-security-and-firewall
|
4244 |
+
#: classes/wp-security-captcha.php:101
|
4245 |
+
msgid "eleven"
|
4246 |
+
msgstr "elf"
|
4247 |
+
|
4248 |
+
# @ all-in-one-wp-security-and-firewall
|
4249 |
+
#: classes/wp-security-captcha.php:102
|
4250 |
+
msgid "twelve"
|
4251 |
+
msgstr "twaalf"
|
4252 |
+
|
4253 |
+
# @ all-in-one-wp-security-and-firewall
|
4254 |
+
#: classes/wp-security-captcha.php:103
|
4255 |
+
msgid "thirteen"
|
4256 |
+
msgstr "dertien"
|
4257 |
+
|
4258 |
+
# @ all-in-one-wp-security-and-firewall
|
4259 |
+
#: classes/wp-security-captcha.php:104
|
4260 |
+
msgid "fourteen"
|
4261 |
+
msgstr "veertien"
|
4262 |
+
|
4263 |
+
# @ all-in-one-wp-security-and-firewall
|
4264 |
+
#: classes/wp-security-captcha.php:105
|
4265 |
+
msgid "fifteen"
|
4266 |
+
msgstr "vijftien"
|
4267 |
+
|
4268 |
+
# @ all-in-one-wp-security-and-firewall
|
4269 |
+
#: classes/wp-security-captcha.php:106
|
4270 |
+
msgid "sixteen"
|
4271 |
+
msgstr "zestien"
|
4272 |
+
|
4273 |
+
# @ all-in-one-wp-security-and-firewall
|
4274 |
+
#: classes/wp-security-captcha.php:107
|
4275 |
+
msgid "seventeen"
|
4276 |
+
msgstr "zeventien"
|
4277 |
+
|
4278 |
+
# @ all-in-one-wp-security-and-firewall
|
4279 |
+
#: classes/wp-security-captcha.php:108
|
4280 |
+
msgid "eighteen"
|
4281 |
+
msgstr "achttien"
|
4282 |
+
|
4283 |
+
# @ all-in-one-wp-security-and-firewall
|
4284 |
+
#: classes/wp-security-captcha.php:109
|
4285 |
+
msgid "nineteen"
|
4286 |
+
msgstr "negentien"
|
4287 |
+
|
4288 |
+
# @ all-in-one-wp-security-and-firewall
|
4289 |
+
#: classes/wp-security-captcha.php:110
|
4290 |
+
msgid "twenty"
|
4291 |
+
msgstr "twintig"
|
4292 |
+
|
4293 |
+
# @ all-in-one-wp-security-and-firewall
|
4294 |
+
#: classes/wp-security-file-scan.php:62
|
4295 |
+
msgid "All In One WP Security - File change detected!"
|
4296 |
+
msgstr ""
|
4297 |
+
|
4298 |
+
# @ all-in-one-wp-security-and-firewall
|
4299 |
+
#: classes/wp-security-file-scan.php:64
|
4300 |
+
msgid "A file change was detected on your system for site URL"
|
4301 |
+
msgstr ""
|
4302 |
+
|
4303 |
+
# @ all-in-one-wp-security-and-firewall
|
4304 |
+
#: classes/wp-security-file-scan.php:64
|
4305 |
+
msgid ". Scan was generated on"
|
4306 |
+
msgstr ""
|
4307 |
+
|
4308 |
+
# @ all-in-one-wp-security-and-firewall
|
4309 |
+
#: classes/wp-security-file-scan.php:65
|
4310 |
+
msgid "Login to your site to view the scan details."
|
4311 |
+
msgstr ""
|
4312 |
+
|
4313 |
+
# @ all-in-one-wp-security-and-firewall
|
4314 |
+
#: classes/wp-security-general-init-tasks.php:214
|
4315 |
+
msgid "Please enter an answer in the CAPTCHA field."
|
4316 |
+
msgstr ""
|
4317 |
+
|
4318 |
+
# @ all-in-one-wp-security-and-firewall
|
4319 |
+
#: classes/wp-security-general-init-tasks.php:224
|
4320 |
+
msgid "Error: You entered an incorrect CAPTCHA answer. Please go back and try again."
|
4321 |
+
msgstr ""
|
4322 |
+
|
4323 |
+
# @ all-in-one-wp-security-and-firewall
|
4324 |
+
#: classes/wp-security-general-init-tasks.php:252
|
4325 |
+
#: classes/wp-security-user-login.php:70 classes/wp-security-user-login.php:73
|
4326 |
+
#: classes/wp-security-user-registration.php:59
|
4327 |
+
msgid "<strong>ERROR</strong>: Your answer was incorrect - please try again."
|
4328 |
+
msgstr ""
|
4329 |
+
|
4330 |
+
# @ all-in-one-wp-security-and-firewall
|
4331 |
+
#: classes/wp-security-process-renamed-login-page.php:68
|
4332 |
+
msgid "Please log in to access the WordPress admin area."
|
4333 |
+
msgstr ""
|
4334 |
+
|
4335 |
+
# @ all-in-one-wp-security-and-firewall
|
4336 |
+
#: classes/wp-security-user-login.php:43
|
4337 |
+
msgid ""
|
4338 |
+
"<strong>ERROR</strong>: Login failed because your IP address has been blocked.\n"
|
4339 |
+
" Please contact the administrator."
|
4340 |
+
msgstr ""
|
4341 |
+
|
4342 |
+
# @ all-in-one-wp-security-and-firewall
|
4343 |
+
#: classes/wp-security-user-login.php:83
|
4344 |
+
msgid "<strong>ERROR</strong>: The username field is empty."
|
4345 |
+
msgstr ""
|
4346 |
+
|
4347 |
+
# @ all-in-one-wp-security-and-firewall
|
4348 |
+
#: classes/wp-security-user-login.php:87
|
4349 |
+
msgid "<strong>ERROR</strong>: The password field is empty."
|
4350 |
+
msgstr ""
|
4351 |
+
|
4352 |
+
# @ all-in-one-wp-security-and-firewall
|
4353 |
+
#: classes/wp-security-user-login.php:107
|
4354 |
+
#: classes/wp-security-user-login.php:133
|
4355 |
+
msgid "<strong>ERROR</strong>: Invalid login credentials."
|
4356 |
+
msgstr ""
|
4357 |
+
|
4358 |
+
# @ all-in-one-wp-security-and-firewall
|
4359 |
+
#: classes/wp-security-user-login.php:110
|
4360 |
+
msgid "<strong>ERROR</strong>: Invalid username."
|
4361 |
+
msgstr ""
|
4362 |
+
|
4363 |
+
# @ all-in-one-wp-security-and-firewall
|
4364 |
+
#: classes/wp-security-user-login.php:136
|
4365 |
+
#, php-format
|
4366 |
+
msgid "<strong>ERROR</strong>: Incorrect password. <a href=\"%s\" title=\"Password Lost and Found\">Lost your password</a>?"
|
4367 |
+
msgstr ""
|
4368 |
+
|
4369 |
+
# @ all-in-one-wp-security-and-firewall
|
4370 |
+
#: classes/wp-security-user-login.php:147
|
4371 |
+
msgid "<strong>ACCOUNT PENDING</strong>: Your account is currently not active. An administrator needs to activate your account before you can login."
|
4372 |
+
msgstr ""
|
4373 |
+
|
4374 |
+
# @ all-in-one-wp-security-and-firewall
|
4375 |
+
#: classes/wp-security-user-login.php:270
|
4376 |
+
msgid "Site Lockout Notification"
|
4377 |
+
msgstr ""
|
4378 |
+
|
4379 |
+
# @ all-in-one-wp-security-and-firewall
|
4380 |
+
#: classes/wp-security-user-login.php:271
|
4381 |
+
msgid "A lockdown event has occurred due to too many failed login attempts or invalid username:"
|
4382 |
+
msgstr ""
|
4383 |
+
|
4384 |
+
# @ all-in-one-wp-security-and-firewall
|
4385 |
+
#: classes/wp-security-user-login.php:272
|
4386 |
+
msgid "Username: Unknown"
|
4387 |
+
msgstr ""
|
4388 |
+
|
4389 |
+
# @ all-in-one-wp-security-and-firewall
|
4390 |
+
#: classes/wp-security-user-login.php:273
|
4391 |
+
msgid "IP Address: "
|
4392 |
+
msgstr ""
|
4393 |
+
|
4394 |
+
# @ all-in-one-wp-security-and-firewall
|
4395 |
+
#: classes/wp-security-user-login.php:274
|
4396 |
+
msgid "IP Range: .*"
|
4397 |
+
msgstr ""
|
4398 |
+
|
4399 |
+
# @ all-in-one-wp-security-and-firewall
|
4400 |
+
#: classes/wp-security-user-login.php:275
|
4401 |
+
msgid "Log into your site's WordPress administration panel to see the duration of the lockout or to unlock the user."
|
4402 |
+
msgstr ""
|
4403 |
+
|
4404 |
+
# @ all-in-one-wp-security-and-firewall
|
4405 |
+
#: classes/wp-security-user-login.php:337
|
4406 |
+
msgid "Unlock Request Notification"
|
4407 |
+
msgstr ""
|
4408 |
+
|
4409 |
+
# @ all-in-one-wp-security-and-firewall
|
4410 |
+
#: classes/wp-security-user-login.php:338
|
4411 |
+
msgid "You have requested for the account with email address to be unlocked. Please click the link below to unlock your account:"
|
4412 |
+
msgstr ""
|
4413 |
+
|
4414 |
+
# @ all-in-one-wp-security-and-firewall
|
4415 |
+
#: classes/wp-security-user-login.php:339
|
4416 |
+
msgid "Unlock link: "
|
4417 |
+
msgstr ""
|
4418 |
+
|
4419 |
+
# @ all-in-one-wp-security-and-firewall
|
4420 |
+
#: classes/wp-security-user-login.php:340
|
4421 |
+
msgid "After clicking the above link you will be able to login to the WordPress administration panel."
|
4422 |
+
msgstr ""
|
4423 |
+
|
4424 |
+
# @ all-in-one-wp-security-and-firewall
|
4425 |
+
#: classes/wp-security-user-login.php:504
|
4426 |
+
#, php-format
|
4427 |
+
msgid "Your session has expired because it has been over %d minutes since your last login."
|
4428 |
+
msgstr ""
|
4429 |
+
|
4430 |
+
# @ all-in-one-wp-security-and-firewall
|
4431 |
+
#: classes/wp-security-user-login.php:505
|
4432 |
+
#: classes/wp-security-user-login.php:509
|
4433 |
+
msgid "Please log back in to continue."
|
4434 |
+
msgstr ""
|
4435 |
+
|
4436 |
+
# @ all-in-one-wp-security-and-firewall
|
4437 |
+
#: classes/wp-security-user-login.php:508
|
4438 |
+
msgid "You were logged out because you just changed the \"admin\" username."
|
4439 |
+
msgstr ""
|
4440 |
+
|
4441 |
+
# @ all-in-one-wp-security-and-firewall
|
4442 |
+
#: classes/wp-security-user-login.php:534
|
4443 |
+
msgid "Request Unlock"
|
4444 |
+
msgstr ""
|
4445 |
+
|
4446 |
+
# @ all-in-one-wp-security-and-firewall
|
4447 |
+
#: classes/wp-security-utility-ip-address.php:82
|
4448 |
+
#: classes/wp-security-utility-ip-address.php:101
|
4449 |
+
#: classes/wp-security-utility-ip-address.php:116
|
4450 |
+
#: classes/wp-security-utility-ip-address.php:131
|
4451 |
+
msgid " is not a valid ip address format."
|
4452 |
+
msgstr ""
|
4453 |
+
|
4454 |
+
# @ all-in-one-wp-security-and-firewall
|
4455 |
+
#: classes/wp-security-utility-ip-address.php:139
|
4456 |
+
msgid "You cannot ban your own IP address: "
|
4457 |
+
msgstr ""
|
4458 |
+
|
4459 |
+
# @ all-in-one-wp-security-and-firewall
|
4460 |
+
#: classes/wp-security-utility.php:151
|
4461 |
+
msgid "This feature can only be configured by the \"superadmin\" on the main site."
|
4462 |
+
msgstr ""
|
4463 |
+
|
4464 |
+
# @ default
|
4465 |
+
#: other-includes/wp-security-rename-login-feature.php:98
|
4466 |
+
#: other-includes/wp-security-unlock-request.php:13
|
4467 |
+
msgid "http://wordpress.org/"
|
4468 |
+
msgstr ""
|
4469 |
+
|
4470 |
+
# @ default
|
4471 |
+
#: other-includes/wp-security-rename-login-feature.php:99
|
4472 |
+
#: other-includes/wp-security-unlock-request.php:14
|
4473 |
+
msgid "Powered by WordPress"
|
4474 |
+
msgstr ""
|
4475 |
+
|
4476 |
+
# @ default
|
4477 |
+
#: other-includes/wp-security-rename-login-feature.php:215
|
4478 |
+
msgid "Are you lost?"
|
4479 |
+
msgstr ""
|
4480 |
+
|
4481 |
+
# @ default
|
4482 |
+
#: other-includes/wp-security-rename-login-feature.php:215
|
4483 |
+
#, php-format
|
4484 |
+
msgid "← Back to %s"
|
4485 |
+
msgstr ""
|
4486 |
+
|
4487 |
+
# @ default
|
4488 |
+
#: other-includes/wp-security-rename-login-feature.php:273
|
4489 |
+
msgid "<strong>ERROR</strong>: Enter a username or e-mail address."
|
4490 |
+
msgstr ""
|
4491 |
+
|
4492 |
+
# @ default
|
4493 |
+
#: other-includes/wp-security-rename-login-feature.php:277
|
4494 |
+
msgid "<strong>ERROR</strong>: There is no user registered with that email address."
|
4495 |
+
msgstr ""
|
4496 |
+
|
4497 |
+
# @ default
|
4498 |
+
#: other-includes/wp-security-rename-login-feature.php:294
|
4499 |
+
msgid "<strong>ERROR</strong>: Invalid username or e-mail."
|
4500 |
+
msgstr ""
|
4501 |
+
|
4502 |
+
# @ default
|
4503 |
+
#: other-includes/wp-security-rename-login-feature.php:331
|
4504 |
+
msgid "Password reset is not allowed for this user"
|
4505 |
+
msgstr ""
|
4506 |
+
|
4507 |
+
# @ default
|
4508 |
+
#: other-includes/wp-security-rename-login-feature.php:356
|
4509 |
+
msgid "Someone requested that the password be reset for the following account:"
|
4510 |
+
msgstr ""
|
4511 |
+
|
4512 |
+
# @ default
|
4513 |
+
#: other-includes/wp-security-rename-login-feature.php:358
|
4514 |
+
#, php-format
|
4515 |
+
msgid "Username: %s"
|
4516 |
+
msgstr ""
|
4517 |
+
|
4518 |
+
# @ default
|
4519 |
+
#: other-includes/wp-security-rename-login-feature.php:359
|
4520 |
+
msgid "If this was a mistake, just ignore this email and nothing will happen."
|
4521 |
+
msgstr ""
|
4522 |
+
|
4523 |
+
# @ default
|
4524 |
+
#: other-includes/wp-security-rename-login-feature.php:360
|
4525 |
+
msgid "To reset your password, visit the following address:"
|
4526 |
+
msgstr ""
|
4527 |
+
|
4528 |
+
# @ default
|
4529 |
+
#: other-includes/wp-security-rename-login-feature.php:370
|
4530 |
+
#, php-format
|
4531 |
+
msgid "[%s] Password Reset"
|
4532 |
+
msgstr ""
|
4533 |
+
|
4534 |
+
# @ default
|
4535 |
+
#: other-includes/wp-security-rename-login-feature.php:391
|
4536 |
+
msgid "The e-mail could not be sent."
|
4537 |
+
msgstr ""
|
4538 |
+
|
4539 |
+
# @ default
|
4540 |
+
#: other-includes/wp-security-rename-login-feature.php:391
|
4541 |
+
msgid "Possible reason: your host may have disabled the mail() function."
|
4542 |
+
msgstr ""
|
4543 |
+
|
4544 |
+
# @ default
|
4545 |
+
#: other-includes/wp-security-rename-login-feature.php:496
|
4546 |
+
msgid "Sorry, that key does not appear to be valid."
|
4547 |
+
msgstr ""
|
4548 |
+
|
4549 |
+
# @ default
|
4550 |
+
#: other-includes/wp-security-rename-login-feature.php:498
|
4551 |
+
msgid "Sorry, that key has expired. Please try again."
|
4552 |
+
msgstr ""
|
4553 |
+
|
4554 |
+
# @ default
|
4555 |
+
#: other-includes/wp-security-rename-login-feature.php:518
|
4556 |
+
msgid "Lost Password"
|
4557 |
+
msgstr ""
|
4558 |
+
|
4559 |
+
# @ default
|
4560 |
+
#: other-includes/wp-security-rename-login-feature.php:518
|
4561 |
+
msgid "Please enter your username or email address. You will receive a link to create a new password via email."
|
4562 |
+
msgstr ""
|
4563 |
+
|
4564 |
+
# @ default
|
4565 |
+
#: other-includes/wp-security-rename-login-feature.php:526
|
4566 |
+
msgid "Username or E-mail:"
|
4567 |
+
msgstr ""
|
4568 |
+
|
4569 |
+
# @ default
|
4570 |
+
#: other-includes/wp-security-rename-login-feature.php:537
|
4571 |
+
msgid "Get New Password"
|
4572 |
+
msgstr ""
|
4573 |
+
|
4574 |
+
# @ default
|
4575 |
+
#: other-includes/wp-security-rename-login-feature.php:541
|
4576 |
+
#: other-includes/wp-security-rename-login-feature.php:590
|
4577 |
+
#: other-includes/wp-security-rename-login-feature.php:621
|
4578 |
+
#: other-includes/wp-security-rename-login-feature.php:703
|
4579 |
+
msgid "Log in"
|
4580 |
+
msgstr ""
|
4581 |
+
|
4582 |
+
# @ default
|
4583 |
+
#: other-includes/wp-security-rename-login-feature.php:544
|
4584 |
+
#: other-includes/wp-security-rename-login-feature.php:624
|
4585 |
+
#: other-includes/wp-security-rename-login-feature.php:699
|
4586 |
+
#: other-includes/wp-security-rename-login-feature.php:875
|
4587 |
+
msgid "Register"
|
4588 |
+
msgstr ""
|
4589 |
+
|
4590 |
+
# @ default
|
4591 |
+
#: other-includes/wp-security-rename-login-feature.php:576
|
4592 |
+
msgid "The passwords do not match."
|
4593 |
+
msgstr ""
|
4594 |
+
|
4595 |
+
# @ default
|
4596 |
+
#: other-includes/wp-security-rename-login-feature.php:590
|
4597 |
+
msgid "Password Reset"
|
4598 |
+
msgstr ""
|
4599 |
+
|
4600 |
+
# @ default
|
4601 |
+
#: other-includes/wp-security-rename-login-feature.php:590
|
4602 |
+
msgid "Your password has been reset."
|
4603 |
+
msgstr ""
|
4604 |
+
|
4605 |
+
# @ default
|
4606 |
+
#: other-includes/wp-security-rename-login-feature.php:598
|
4607 |
+
#: other-includes/wp-security-rename-login-feature.php:617
|
4608 |
+
msgid "Reset Password"
|
4609 |
+
msgstr ""
|
4610 |
+
|
4611 |
+
# @ default
|
4612 |
+
#: other-includes/wp-security-rename-login-feature.php:598
|
4613 |
+
msgid "Enter your new password below."
|
4614 |
+
msgstr ""
|
4615 |
+
|
4616 |
+
# @ default
|
4617 |
+
#: other-includes/wp-security-rename-login-feature.php:605
|
4618 |
+
msgid "New password"
|
4619 |
+
msgstr ""
|
4620 |
+
|
4621 |
+
# @ default
|
4622 |
+
#: other-includes/wp-security-rename-login-feature.php:609
|
4623 |
+
msgid "Confirm new password"
|
4624 |
+
msgstr ""
|
4625 |
+
|
4626 |
+
# @ default
|
4627 |
+
#: other-includes/wp-security-rename-login-feature.php:613
|
4628 |
+
msgid "Strength indicator"
|
4629 |
+
msgstr ""
|
4630 |
+
|
4631 |
+
# @ default
|
4632 |
+
#: other-includes/wp-security-rename-login-feature.php:614
|
4633 |
+
msgid "Hint: The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! \" ? $ % ^ & )."
|
4634 |
+
msgstr ""
|
4635 |
+
|
4636 |
+
# @ default
|
4637 |
+
#: other-includes/wp-security-rename-login-feature.php:676
|
4638 |
+
msgid "Registration Form"
|
4639 |
+
msgstr ""
|
4640 |
+
|
4641 |
+
# @ default
|
4642 |
+
#: other-includes/wp-security-rename-login-feature.php:676
|
4643 |
+
msgid "Register For This Site"
|
4644 |
+
msgstr ""
|
4645 |
+
|
4646 |
+
# @ default
|
4647 |
+
#: other-includes/wp-security-rename-login-feature.php:681
|
4648 |
+
#: other-includes/wp-security-rename-login-feature.php:841
|
4649 |
+
msgid "Username"
|
4650 |
+
msgstr ""
|
4651 |
+
|
4652 |
+
# @ default
|
4653 |
+
#: other-includes/wp-security-rename-login-feature.php:685
|
4654 |
+
msgid "E-mail"
|
4655 |
+
msgstr ""
|
4656 |
+
|
4657 |
+
# @ default
|
4658 |
+
#: other-includes/wp-security-rename-login-feature.php:696
|
4659 |
+
msgid "A password will be e-mailed to you."
|
4660 |
+
msgstr ""
|
4661 |
+
|
4662 |
+
# @ default
|
4663 |
+
#: other-includes/wp-security-rename-login-feature.php:704
|
4664 |
+
#: other-includes/wp-security-rename-login-feature.php:880
|
4665 |
+
msgid "Password Lost and Found"
|
4666 |
+
msgstr ""
|
4667 |
+
|
4668 |
+
# @ default
|
4669 |
+
#: other-includes/wp-security-rename-login-feature.php:704
|
4670 |
+
#: other-includes/wp-security-rename-login-feature.php:880
|
4671 |
+
msgid "Lost your password?"
|
4672 |
+
msgstr ""
|
4673 |
+
|
4674 |
+
# @ default
|
4675 |
+
#: other-includes/wp-security-rename-login-feature.php:748
|
4676 |
+
msgid "<strong>ERROR</strong>: Cookies are blocked or not supported by your browser. You must <a href='http://www.google.com/cookies.html'>enable cookies</a> to use WordPress."
|
4677 |
+
msgstr ""
|
4678 |
+
|
4679 |
+
# @ default
|
4680 |
+
#: other-includes/wp-security-rename-login-feature.php:766
|
4681 |
+
msgid "You have logged in successfully."
|
4682 |
+
msgstr ""
|
4683 |
+
|
4684 |
+
# @ default
|
4685 |
+
#: other-includes/wp-security-rename-login-feature.php:800
|
4686 |
+
msgid "Session expired. Please log in again. You will not move away from this page."
|
4687 |
+
msgstr ""
|
4688 |
+
|
4689 |
+
# @ default
|
4690 |
+
#: other-includes/wp-security-rename-login-feature.php:804
|
4691 |
+
msgid "You are now logged out."
|
4692 |
+
msgstr ""
|
4693 |
+
|
4694 |
+
# @ default
|
4695 |
+
#: other-includes/wp-security-rename-login-feature.php:806
|
4696 |
+
msgid "User registration is currently not allowed."
|
4697 |
+
msgstr ""
|
4698 |
+
|
4699 |
+
# @ default
|
4700 |
+
#: other-includes/wp-security-rename-login-feature.php:808
|
4701 |
+
msgid "Check your e-mail for the confirmation link."
|
4702 |
+
msgstr ""
|
4703 |
+
|
4704 |
+
# @ default
|
4705 |
+
#: other-includes/wp-security-rename-login-feature.php:810
|
4706 |
+
msgid "Check your e-mail for your new password."
|
4707 |
+
msgstr ""
|
4708 |
+
|
4709 |
+
# @ default
|
4710 |
+
#: other-includes/wp-security-rename-login-feature.php:812
|
4711 |
+
msgid "Registration complete. Please check your e-mail."
|
4712 |
+
msgstr ""
|
4713 |
+
|
4714 |
+
# @ default
|
4715 |
+
#: other-includes/wp-security-rename-login-feature.php:814
|
4716 |
+
msgid "<strong>You have successfully updated WordPress!</strong> Please log back in to experience the awesomeness."
|
4717 |
+
msgstr ""
|
4718 |
+
|
4719 |
+
# @ default
|
4720 |
+
#: other-includes/wp-security-rename-login-feature.php:831
|
4721 |
+
#: other-includes/wp-security-rename-login-feature.php:858
|
4722 |
+
msgid "Log In"
|
4723 |
+
msgstr ""
|
4724 |
+
|
4725 |
+
# @ default
|
4726 |
+
#: other-includes/wp-security-rename-login-feature.php:856
|
4727 |
+
msgid "Remember Me"
|
4728 |
+
msgstr ""
|
4729 |
+
|
4730 |
+
# @ all-in-one-wp-security-and-firewall
|
4731 |
+
#: other-includes/wp-security-unlock-request.php:48
|
4732 |
+
msgid "Please enter a valid email address"
|
4733 |
+
msgstr ""
|
4734 |
+
|
4735 |
+
# @ all-in-one-wp-security-and-firewall
|
4736 |
+
#: other-includes/wp-security-unlock-request.php:59
|
4737 |
+
msgid "User account not found!"
|
4738 |
+
msgstr ""
|
4739 |
+
|
4740 |
+
# @ all-in-one-wp-security-and-firewall
|
4741 |
+
#: other-includes/wp-security-unlock-request.php:70
|
4742 |
+
msgid "Error: No locked entry was found in the DB with your IP address range!"
|
4743 |
+
msgstr ""
|
4744 |
+
|
4745 |
+
# @ all-in-one-wp-security-and-firewall
|
4746 |
+
#: other-includes/wp-security-unlock-request.php:98
|
4747 |
+
msgid "Email Address"
|
4748 |
+
msgstr ""
|
languages/index.html
ADDED
File without changes
|
lib/whois/whois.client.php
CHANGED
@@ -260,7 +260,7 @@ class WhoisClient {
|
|
260 |
$result['regyinfo']['servers'] = $servers;
|
261 |
|
262 |
// Handler may forget to set rawdata
|
263 |
-
if (
|
264 |
$result['rawdata'] = $output;
|
265 |
}
|
266 |
|
260 |
$result['regyinfo']['servers'] = $servers;
|
261 |
|
262 |
// Handler may forget to set rawdata
|
263 |
+
if (empty($result['rawdata']))
|
264 |
$result['rawdata'] = $output;
|
265 |
}
|
266 |
|
other-includes/wp-security-stop-users-enumeration.php
CHANGED
@@ -21,18 +21,16 @@
|
|
21 |
*/
|
22 |
|
23 |
if (!is_admin()) {
|
24 |
-
if (
|
25 |
-
if (
|
26 |
-
|
27 |
-
wp_die('Accessing author info via link is forbidden');
|
28 |
-
}
|
29 |
}
|
|
|
30 |
|
31 |
-
|
32 |
-
|
33 |
|
34 |
-
|
35 |
-
}
|
36 |
}
|
37 |
|
38 |
add_filter('redirect_canonical', 'll_detect_enumeration', 10, 2);
|
21 |
*/
|
22 |
|
23 |
if (!is_admin()) {
|
24 |
+
if (preg_match('/(wp-comments-post)/', $_SERVER['REQUEST_URI']) === 0) {
|
25 |
+
if (!empty($_POST['author'])) {
|
26 |
+
wp_die('Accessing author info via link is forbidden');
|
|
|
|
|
27 |
}
|
28 |
+
}
|
29 |
|
30 |
+
if (preg_match('/author=([0-9]*)/', $_SERVER['QUERY_STRING']) === 1)
|
31 |
+
wp_die('Accessing author info via link is forbidden');
|
32 |
|
33 |
+
add_filter('redirect_canonical', 'll_detect_enumeration', 10, 2);
|
|
|
34 |
}
|
35 |
|
36 |
add_filter('redirect_canonical', 'll_detect_enumeration', 10, 2);
|
readme.txt
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
=== All In One WP Security & Firewall ===
|
2 |
-
Contributors: Tips and Tricks HQ, wpsolutions, Peter Petreski, Ruhul Amin, mbrsolution, gdavide
|
3 |
Donate link: https://www.tipsandtricks-hq.com
|
4 |
Tags: security, secure, Anti Virus, antivirus, ban, ban hacker, virus, firewall, firewall security, login, lockdown, htaccess, hack, malware, vulnerability, protect, protection, phishing, database, backup, plugin, sql injection, ssl, restrict, login captcha, bot, hotlink, 404 detection, admin, rename, all in one, scan, scanner, iframe,
|
5 |
Requires at least: 3.5
|
6 |
-
Tested up to: 4.
|
7 |
-
Stable tag: 4.0.
|
8 |
License: GPLv3
|
9 |
|
10 |
A comprehensive, user-friendly, all in one WordPress security and firewall plugin for your site.
|
@@ -113,6 +113,7 @@ or malicious bots who do not have a special cookie in their browser. You (the si
|
|
113 |
* Monitor the most active IP addresses which persistently produce the most SPAM comments and instantly block them with the click of a button.
|
114 |
* Prevent comments from being submitted if it doesn't originate from your domain (this should reduce some SPAM bot comment posting on your site).
|
115 |
* Add a captcha to your wordpress comment form to add security against comment spam.
|
|
|
116 |
|
117 |
= Front-end Text Copy Protection =
|
118 |
* Ability to disable the right click, text selection and copy option for your front-end.
|
@@ -181,9 +182,36 @@ None
|
|
181 |
|
182 |
== Changelog ==
|
183 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
184 |
= 4.0.3 =
|
185 |
- Added urlencode to query strings in URLs to prevent unexpected behaviour. Thanks to @chesio for spotting the issue.
|
186 |
-
- Added new feature to stop users enumeration. Thanks to @davidegiunchidiennea for adding this.
|
187 |
- Added a more robust code for check_user_exists function. Thanks to Christian Carey.
|
188 |
- Added cron cleanup of the global meta table.
|
189 |
- Added a title in each of the admin interface menu.
|
1 |
=== All In One WP Security & Firewall ===
|
2 |
+
Contributors: Tips and Tricks HQ, wpsolutions, Peter Petreski, Ruhul Amin, mbrsolution, gdavide
|
3 |
Donate link: https://www.tipsandtricks-hq.com
|
4 |
Tags: security, secure, Anti Virus, antivirus, ban, ban hacker, virus, firewall, firewall security, login, lockdown, htaccess, hack, malware, vulnerability, protect, protection, phishing, database, backup, plugin, sql injection, ssl, restrict, login captcha, bot, hotlink, 404 detection, admin, rename, all in one, scan, scanner, iframe,
|
5 |
Requires at least: 3.5
|
6 |
+
Tested up to: 4.5
|
7 |
+
Stable tag: 4.0.7
|
8 |
License: GPLv3
|
9 |
|
10 |
A comprehensive, user-friendly, all in one WordPress security and firewall plugin for your site.
|
113 |
* Monitor the most active IP addresses which persistently produce the most SPAM comments and instantly block them with the click of a button.
|
114 |
* Prevent comments from being submitted if it doesn't originate from your domain (this should reduce some SPAM bot comment posting on your site).
|
115 |
* Add a captcha to your wordpress comment form to add security against comment spam.
|
116 |
+
* Automatically and permanently block IP addresses which have exceeded a certain number of comments labeled as SPAM.
|
117 |
|
118 |
= Front-end Text Copy Protection =
|
119 |
* Ability to disable the right click, text selection and copy option for your front-end.
|
182 |
|
183 |
== Changelog ==
|
184 |
|
185 |
+
= 4.0.7 =
|
186 |
+
- Added a new action hook "aiopws_before_set_404" which triggers just before the AIOWPS sets a 404. (handy for cases when rename login page is used which affects some themes when accessing "wp-admin" directly)
|
187 |
+
- Fixed some potential SQL injection vulnerabilities.
|
188 |
+
- Thanks to @chesio for submitting the following changes and applying the fixes.
|
189 |
+
- Sub-directory install fixes.
|
190 |
+
- Improve behavior of WP File Access tab.
|
191 |
+
- Fix invalid nesting of HTML elements.
|
192 |
+
- Do not block HTTP requests that contain "tag=" in query string.
|
193 |
+
- Option to enable the 6G firewall.
|
194 |
+
|
195 |
+
= 4.0.6 =
|
196 |
+
- Removed the viewing of contents of wp-config.php and .htaccess files in order to protect sensitive info.
|
197 |
+
- Fixed more potential XSS vulnerabilities in some other settings pages. (Once again many thanks to Erin Germ for pointing these out)
|
198 |
+
|
199 |
+
= 4.0.5 =
|
200 |
+
- Fixed some potential XSS vulnerability in the blacklist, file system and file change detection settings pages. (Many thanks to Erin Germ for pointing these out)
|
201 |
+
|
202 |
+
= 4.0.4 =
|
203 |
+
- Added new feature: Auto Block Spammer IPs. This feature will automatically and permanently block IP addresses which are linked to comment SPAM. (see SPAM Prevention -> Comment SPAM IP Monitoring tab)
|
204 |
+
- Added compatibility fix for the qTranslate-X plugin in the rename login page feature.
|
205 |
+
- Added ability to send to more than one email address for file change detection feature notification.
|
206 |
+
- Fixed bug in whois library when searching ARIN registry.
|
207 |
+
- Fixed the handling of display of longer IPV6 strings in dashboard summary table.
|
208 |
+
- Added hook for WooCommerce login form to display unlock button.
|
209 |
+
- Added Dutch language translation. Thanks to Jeroen van der Linde for providing the translation files.
|
210 |
+
- Typo fix in the "stop users enumeration" feature.
|
211 |
+
|
212 |
= 4.0.3 =
|
213 |
- Added urlencode to query strings in URLs to prevent unexpected behaviour. Thanks to @chesio for spotting the issue.
|
214 |
+
- Added new feature to stop users enumeration. Thanks to Davide Giunchi @davidegiunchidiennea for adding this.
|
215 |
- Added a more robust code for check_user_exists function. Thanks to Christian Carey.
|
216 |
- Added cron cleanup of the global meta table.
|
217 |
- Added a title in each of the admin interface menu.
|
wp-security-core.php
CHANGED
@@ -3,8 +3,8 @@
|
|
3 |
if (!class_exists('AIO_WP_Security')){
|
4 |
|
5 |
class AIO_WP_Security{
|
6 |
-
var $version = '4.0.
|
7 |
-
var $db_version = '1.
|
8 |
var $plugin_url;
|
9 |
var $plugin_path;
|
10 |
var $configs;
|
@@ -51,7 +51,9 @@ class AIO_WP_Security{
|
|
51 |
{
|
52 |
define('AIO_WP_SECURITY_VERSION', $this->version);
|
53 |
define('AIO_WP_SECURITY_DB_VERSION', $this->db_version);
|
54 |
-
define('
|
|
|
|
|
55 |
define('AIO_WP_SECURITY_URL', $this->plugin_url());
|
56 |
define('AIO_WP_SECURITY_PATH', $this->plugin_path());
|
57 |
define('AIO_WP_SECURITY_BACKUPS_DIR_NAME', 'aiowps_backups');
|
@@ -83,6 +85,7 @@ class AIO_WP_Security{
|
|
83 |
define('AIOWPSEC_TBL_USER_LOGIN_ACTIVITY', $wpdb->prefix . 'aiowps_login_activity');
|
84 |
define('AIOWPSEC_TBL_GLOBAL_META_DATA', $wpdb->prefix . 'aiowps_global_meta');
|
85 |
define('AIOWPSEC_TBL_EVENTS', $wpdb->prefix . 'aiowps_events');
|
|
|
86 |
|
87 |
}
|
88 |
|
@@ -106,6 +109,7 @@ class AIO_WP_Security{
|
|
106 |
include_once('classes/grade-system/wp-security-feature-item.php');
|
107 |
include_once('classes/grade-system/wp-security-feature-item-manager.php');
|
108 |
include_once('classes/wp-security-wp-footer-content.php');
|
|
|
109 |
|
110 |
if (is_admin()){ //Load admin side only files
|
111 |
include_once('classes/wp-security-configure-settings.php');
|
3 |
if (!class_exists('AIO_WP_Security')){
|
4 |
|
5 |
class AIO_WP_Security{
|
6 |
+
var $version = '4.0.7';
|
7 |
+
var $db_version = '1.8';
|
8 |
var $plugin_url;
|
9 |
var $plugin_path;
|
10 |
var $configs;
|
51 |
{
|
52 |
define('AIO_WP_SECURITY_VERSION', $this->version);
|
53 |
define('AIO_WP_SECURITY_DB_VERSION', $this->db_version);
|
54 |
+
define('AIOWPSEC_WP_HOME_URL', home_url());
|
55 |
+
define('AIOWPSEC_WP_SITE_URL', site_url());
|
56 |
+
define('AIOWPSEC_WP_URL', AIOWPSEC_WP_SITE_URL); // for backwards compatibility
|
57 |
define('AIO_WP_SECURITY_URL', $this->plugin_url());
|
58 |
define('AIO_WP_SECURITY_PATH', $this->plugin_path());
|
59 |
define('AIO_WP_SECURITY_BACKUPS_DIR_NAME', 'aiowps_backups');
|
85 |
define('AIOWPSEC_TBL_USER_LOGIN_ACTIVITY', $wpdb->prefix . 'aiowps_login_activity');
|
86 |
define('AIOWPSEC_TBL_GLOBAL_META_DATA', $wpdb->prefix . 'aiowps_global_meta');
|
87 |
define('AIOWPSEC_TBL_EVENTS', $wpdb->prefix . 'aiowps_events');
|
88 |
+
define('AIOWPSEC_TBL_PERM_BLOCK', $wpdb->prefix . 'aiowps_permanent_block');
|
89 |
|
90 |
}
|
91 |
|
109 |
include_once('classes/grade-system/wp-security-feature-item.php');
|
110 |
include_once('classes/grade-system/wp-security-feature-item-manager.php');
|
111 |
include_once('classes/wp-security-wp-footer-content.php');
|
112 |
+
include_once('classes/wp-security-blocking.php');
|
113 |
|
114 |
if (is_admin()){ //Load admin side only files
|
115 |
include_once('classes/wp-security-configure-settings.php');
|
wp-security.php
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?php
|
2 |
/*
|
3 |
Plugin Name: All In One WP Security
|
4 |
-
Version: 4.0.
|
5 |
Plugin URI: http://www.tipsandtricks-hq.com/wordpress-security-and-firewall-plugin
|
6 |
Author: Tips and Tricks HQ, Peter, Ruhul, Ivy
|
7 |
Author URI: http://www.tipsandtricks-hq.com/
|
1 |
<?php
|
2 |
/*
|
3 |
Plugin Name: All In One WP Security
|
4 |
+
Version: 4.0.7
|
5 |
Plugin URI: http://www.tipsandtricks-hq.com/wordpress-security-and-firewall-plugin
|
6 |
Author: Tips and Tricks HQ, Peter, Ruhul, Ivy
|
7 |
Author URI: http://www.tipsandtricks-hq.com/
|