All In One WP Security & Firewall - Version 4.0.7

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 Icon 128x128 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

Files changed (38) hide show
  1. admin/wp-security-admin-init.php +1 -1
  2. admin/wp-security-blacklist-menu.php +1 -1
  3. admin/wp-security-brute-force-menu.php +2 -2
  4. admin/wp-security-dashboard-menu.php +799 -634
  5. admin/wp-security-database-menu.php +3 -6
  6. admin/wp-security-filescan-menu.php +19 -11
  7. admin/wp-security-filesystem-menu.php +9 -2
  8. admin/wp-security-firewall-menu.php +56 -17
  9. admin/wp-security-list-404.php +5 -0
  10. admin/wp-security-list-acct-activity.php +1 -0
  11. admin/wp-security-list-comment-spammer-ip.php +48 -1
  12. admin/wp-security-list-locked-ip.php +3 -1
  13. admin/wp-security-list-login-fails.php +1 -0
  14. admin/wp-security-list-permanent-blocked-ip.php +179 -0
  15. admin/wp-security-misc-options-menu.php +1 -1
  16. admin/wp-security-settings-menu.php +19 -19
  17. admin/wp-security-spam-menu.php +140 -10
  18. admin/wp-security-user-login-menu.php +2 -1
  19. classes/grade-system/wp-security-feature-item-manager.php +7 -4
  20. classes/wp-security-backup.php +1 -1
  21. classes/wp-security-blocking.php +116 -0
  22. classes/wp-security-configure-settings.php +9 -0
  23. classes/wp-security-file-scan.php +21 -13
  24. classes/wp-security-general-init-tasks.php +48 -1
  25. classes/wp-security-installer.php +56 -49
  26. classes/wp-security-process-renamed-login-page.php +17 -3
  27. classes/wp-security-user-login.php +2 -1
  28. classes/wp-security-utility-htaccess.php +84 -5
  29. classes/wp-security-utility.php +162 -186
  30. css/wp-security-admin-styles.css +15 -0
  31. languages/all-in-one-wp-security-and-firewall-nl_NL.mo +0 -0
  32. languages/all-in-one-wp-security-and-firewall-nl_NL.po +4748 -0
  33. languages/index.html +0 -0
  34. lib/whois/whois.client.php +1 -1
  35. other-includes/wp-security-stop-users-enumeration.php +7 -9
  36. readme.txt +32 -4
  37. wp-security-core.php +7 -3
  38. 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)?$_POST['aiowps_banned_ip_addresses']:$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>
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)?$_POST['aiowps_allowed_ip_addresses']:$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>
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
- 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
- );
15
-
16
- function __construct()
 
17
  {
18
  $this->render_menu_page();
19
  }
20
 
21
- function set_menu_tabs()
22
  {
23
  $this->menu_tabs = array(
24
- 'tab1' => __('Dashboard','all-in-one-wp-security-and-firewall'),
25
- 'tab2' => __('System Info','all-in-one-wp-security-and-firewall'),
26
- 'tab3' => __('Locked IP Addresses','all-in-one-wp-security-and-firewall'),
27
- 'tab4' => __('AIOWPS Logs','all-in-one-wp-security-and-firewall'),
 
28
  );
29
  }
30
 
31
- function get_current_tab()
32
  {
33
  $tab_keys = array_keys($this->menu_tabs);
34
- $tab = isset( $_GET['tab'] ) ? $_GET['tab'] : $tab_keys[0];
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 ( $this->menu_tabs as $tab_key => $tab_caption )
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
- 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>';
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
- </div></div>
173
- </div><!-- aiowps_dashboard_box -->
174
-
175
- <div class="aiowps_dashboard_box_small aiowps_spread_the_word_widget">
176
- <div class="postbox">
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
- <div class="aiowps_dashboard_box_small">
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
- echo '<div class="aio_clear_float"></div>';
309
- ?>
310
- </div></div>
311
- </div><!-- aiowps_dashboard_box -->
312
-
313
- <div class="aiowps_dashboard_box_small">
314
- <div class="postbox">
315
- <h3 class="hndle"><label for="title"><?php _e('Maintenance Mode Status', 'all-in-one-wp-security-and-firewall');?></label></h3>
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
- <?php
343
- //Insert Cookie Based Brute Force feature box if this feature is active
344
- if($aio_wp_security->configs->get_value('aiowps_enable_brute_force_attack_prevention')=='1'){
345
- ?>
346
- <div class="aiowps_dashboard_box_small">
347
- <div class="postbox">
348
- <h3 class="hndle"><label for="title"><?php _e('Cookie Based Brute Prevention', 'all-in-one-wp-security-and-firewall');?></label></h3>
349
- <div class="inside">
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
- <div class="aiowps_dashboard_box_small">
462
- <div class="postbox">
463
- <h3 class="hndle"><label for="title"><?php _e('Locked IP Addresses', 'all-in-one-wp-security-and-firewall');?></label></h3>
464
- <div class="inside">
465
- <?php
466
- $locked_ips_link = '<a href="admin.php?page='.AIOWPSEC_MAIN_MENU_SLUG.'&tab=tab3">Locked IP Addresses</a>';
467
-
468
- $locked_ips = AIOWPSecurity_Utility::get_locked_ips();
469
- if($locked_ips === FALSE)
470
- {
471
- echo '<div class="aio_green_box"><p>'.__('There are no IP addresses currently locked out.','all-in-one-wp-security-and-firewall').'</p></div>';
472
- }
473
- else
474
- {
475
- $num_ips = count($locked_ips);
476
- 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>';
477
- $info_msg = '<p>'.sprintf( __('Go to the %s menu to see more details', 'all-in-one-wp-security-and-firewall'), $locked_ips_link).'</p>';
478
- echo $info_msg.'</div>';
479
- }
480
-
481
- ?>
482
- </div></div>
483
- </div><!-- aiowps_dashboard_box -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
- width: 350px;
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( container, {
502
- // options
503
- columnWidth: 100,
504
- itemSelector: '.aiowps_dashboard_box_small'
505
- });
506
- }
507
- </script>
508
- <!-- End Masonry stuff -->
509
-
510
- <?php
511
  }
512
-
513
-
514
  function render_tab2()
515
  {
516
  global $wpdb;
517
  ?>
518
  <div class="postbox">
519
- <h3 class="hndle"><label for="title"><?php _e('Site Info', 'all-in-one-wp-security-and-firewall');?></label></h3>
520
- <div class="inside">
521
- <strong><?php _e('Plugin Version', 'all-in-one-wp-security-and-firewall');?>: </strong><code><?php echo AIO_WP_SECURITY_VERSION;?></code><br />
522
- <strong><?php _e('WP Version', 'all-in-one-wp-security-and-firewall');?>: </strong><code><?php echo get_bloginfo("version"); ?></code><br />
523
- <strong>WPMU: </strong><code><?php echo (!defined('MULTISITE') || !MULTISITE) ? "No" : "Yes"; ?></code><br />
524
- <strong>MySQL <?php _e('Version', 'all-in-one-wp-security-and-firewall');?>: </strong><code><?php echo $wpdb->db_version();?></code><br />
525
- <strong>WP <?php _e('Table Prefix', 'all-in-one-wp-security-and-firewall');?>: </strong><code><?php echo $wpdb->prefix; ?></code><br />
526
- <strong>PHP <?php _e('Version', 'all-in-one-wp-security-and-firewall');?>: </strong><code><?php echo phpversion(); ?></code><br />
527
- <strong><?php _e('Session Save Path', 'all-in-one-wp-security-and-firewall');?>: </strong><code><?php echo ini_get("session.save_path"); ?></code><br />
528
- <strong>WP URL: </strong><code><?php echo get_bloginfo('wpurl'); ?></code><br />
529
- <strong><?php _e('Server Name', 'all-in-one-wp-security-and-firewall');?>: </strong><code><?php echo $_SERVER['SERVER_NAME']; ?></code><br />
530
- <strong><?php _e('Cookie Domain', 'all-in-one-wp-security-and-firewall');?>: </strong><code><?php $cookieDomain = parse_url( strtolower( get_bloginfo('wpurl') ) ); echo $cookieDomain['host']; ?></code><br />
531
- <strong>CURL <?php _e('Library Present', 'all-in-one-wp-security-and-firewall');?>: </strong><code><?php echo (function_exists('curl_init')) ? "Yes" : "No"; ?></code><br />
532
- <strong><?php _e('Debug File Write Permissions', 'all-in-one-wp-security-and-firewall');?>: </strong><code><?php echo (is_writable(AIO_WP_SECURITY_PATH)) ? "Writable" : "Not Writable"; ?></code><br />
533
- </div></div><!-- End of Site Info -->
534
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
535
  <div class="postbox">
536
- <h3 class="hndle"><label for="title"><?php _e('PHP Info', 'all-in-one-wp-security-and-firewall');?></label></h3>
537
- <div class="inside">
538
- <strong><?php _e('PHP Version', 'all-in-one-wp-security-and-firewall'); ?>: </strong><code><?php echo PHP_VERSION; ?></code><br />
539
- <strong><?php _e('PHP Memory Usage', 'all-in-one-wp-security-and-firewall'); ?>:
540
- </strong><code><?php echo round(memory_get_usage() / 1024 / 1024, 2) . __(' MB', 'all-in-one-wp-security-and-firewall'); ?></code>
541
- <br />
542
- <?php
543
- if (ini_get('memory_limit')) {
544
- $memory_limit = filter_var(ini_get('memory_limit'), FILTER_SANITIZE_STRING);
545
- } else {
546
- $memory_limit = __('N/A', 'all-in-one-wp-security-and-firewall');
547
- }
548
- ?>
549
- <strong><?php _e('PHP Memory Limit', 'all-in-one-wp-security-and-firewall'); ?>: </strong><code><?php echo $memory_limit; ?></code><br />
550
- <?php
551
- if (ini_get('upload_max_filesize')) {
552
- $upload_max = filter_var(ini_get('upload_max_filesize'), FILTER_SANITIZE_STRING);
553
- } else {
554
- $upload_max = __('N/A', 'all-in-one-wp-security-and-firewall');
555
- }
556
- ?>
557
- <strong><?php _e('PHP Max Upload Size', 'all-in-one-wp-security-and-firewall'); ?>: </strong><code><?php echo $upload_max; ?></code><br />
558
- <?php
559
- if (ini_get('post_max_size')) {
560
- $post_max = filter_var(ini_get('post_max_size'), FILTER_SANITIZE_STRING);
561
- } else {
562
- $post_max = __('N/A', 'all-in-one-wp-security-and-firewall');
563
- }
564
- ?>
565
- <strong><?php _e('PHP Max Post Size', 'all-in-one-wp-security-and-firewall'); ?>: </strong><code><?php echo $post_max; ?></code><br />
566
- <?php
567
- if (ini_get('safe_mode')) {
568
- $safe_mode = __('On', 'all-in-one-wp-security-and-firewall');
569
- } else {
570
- $safe_mode = __('Off', 'all-in-one-wp-security-and-firewall');
571
- }
572
- ?>
573
- <strong><?php _e('PHP Safe Mode', 'all-in-one-wp-security-and-firewall'); ?>: </strong><code><?php echo $safe_mode; ?></code><br />
574
- <?php
575
- if (ini_get('allow_url_fopen')) {
576
- $allow_url_fopen = __('On', 'all-in-one-wp-security-and-firewall');
577
- } else {
578
- $allow_url_fopen = __('Off', 'all-in-one-wp-security-and-firewall');
579
- }
580
- ?>
581
- <strong><?php _e('PHP Allow URL fopen', 'all-in-one-wp-security-and-firewall'); ?>: </strong><code><?php echo $allow_url_fopen; ?></code>
582
- <br />
583
- <?php
584
- if (ini_get('allow_url_include')) {
585
- $allow_url_include = __('On', 'all-in-one-wp-security-and-firewall');
586
- } else {
587
- $allow_url_include = __('Off', 'all-in-one-wp-security-and-firewall');
588
- }
589
- ?>
590
- <strong><?php _e('PHP Allow URL Include'); ?>: </strong><code><?php echo $allow_url_include; ?></code><br />
591
- <?php
592
- if (ini_get('display_errors')) {
593
- $display_errors = __('On', 'all-in-one-wp-security-and-firewall');
594
- } else {
595
- $display_errors = __('Off', 'all-in-one-wp-security-and-firewall');
596
- }
597
- ?>
598
- <strong><?php _e('PHP Display Errors', 'all-in-one-wp-security-and-firewall'); ?>: </strong><code><?php echo $display_errors; ?></code>
599
- <br />
600
- <?php
601
- if (ini_get('max_execution_time')) {
602
- $max_execute = filter_var(ini_get('max_execution_time'));
603
- } else {
604
- $max_execute = __('N/A', 'all-in-one-wp-security-and-firewall');
605
- }
606
- ?>
607
- <strong><?php _e('PHP Max Script Execution Time', 'all-in-one-wp-security-and-firewall'); ?>: </strong><code><?php echo $max_execute; ?> <?php _e('Seconds'); ?></code><br />
608
- </div></div><!-- End of PHP Info -->
609
-
 
 
 
 
 
 
 
 
 
 
 
 
610
  <div class="postbox">
611
- <h3 class="hndle"><label for="title"><?php _e('Active Plugins', 'all-in-one-wp-security-and-firewall');?></label></h3>
612
- <div class="inside">
613
- <?php
614
- $all_plugins = get_plugins();
615
- $active_plugins = get_option('active_plugins');
616
- //var_dump($all_plugins);
617
- ?>
618
- <table class="widefat aio_spacer_10_tb">
619
- <thead>
620
- <tr>
621
- <th><?php _e('Name', 'all-in-one-wp-security-and-firewall') ?></th>
622
- <th><?php _e('Version', 'all-in-one-wp-security-and-firewall') ?></th>
623
- <th><?php _e('Plugin URL', 'all-in-one-wp-security-and-firewall') ?></th>
624
- </tr>
625
- </thead>
626
- <tbody>
627
- <?php
628
- foreach ($active_plugins as $plugin_key)
629
- {
630
- $plugin_details = $all_plugins[$plugin_key];
631
- echo '<tr><td>'.$plugin_details['Name'].'</td><td>'.$plugin_details['Version'].'</td><td>'.$plugin_details['PluginURI'].'</td></tr>';
632
- }
633
- ?>
634
- </tbody>
635
- </table>
636
- </div></div><!-- End of Active Plugins -->
637
- <?php
 
 
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="postbox">
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
- if(isset($_REQUEST["tab"]))
671
- {
672
- echo '<input type="hidden" name="tab" value="'.$_REQUEST["tab"].'" />';
673
- }
674
  ?>
675
- <!-- Now we can render the completed list table -->
676
- <?php $locked_ip_list->display(); ?>
677
- </form>
678
- </div></div>
679
-
680
- <?php
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
681
  }
682
 
683
  function render_tab4()
684
  {
685
  global $wpdb;
686
- $file_selected = isset($_POST["aiowps_log_file"])?$_POST["aiowps_log_file"]:'';
687
- ?>
688
- <div class="postbox">
689
- <h3 class="hndle"><label for="title"><?php _e('View Logs for All In WP Security & Firewall Plugin', 'all-in-one-wp-security-and-firewall');?></label></h3>
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
- $error = '';
714
- $nonce=$_REQUEST['_wpnonce'];
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
- if(!empty($file_selected)){
722
  ?>
723
- <div class="postbox">
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
- $aiowps_log_dir = AIO_WP_SECURITY_PATH.'/logs';
728
- $log_file = $aiowps_log_dir .'/'.$file_selected;
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
- <?php
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 '<p>';
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
- <table class="form-table">
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
- </tr>
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
- $email_address = sanitize_email($_POST['aiowps_fcd_scan_email_address']);
164
- if(!is_email($email_address))
165
- {
166
- $error .= '<p>'.__('You have entered an incorrect email address format. It has been set to your WordPress admin email as default.','all-in-one-wp-security-and-firewall').'</p>';
167
- $email_address = get_bloginfo('admin_email'); //Set the default value to the blog admin email
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 /><input type="text" size="40" name="aiowps_fcd_scan_email_address" value="<?php echo $aio_wp_security->configs->get_value('aiowps_fcd_scan_email_address'); ?>" />
328
- <span class="description"><?php _e('Enter an email address', 'all-in-one-wp-security-and-firewall'); ?></span>
 
 
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 = sanitize_text_field($_POST['aiowps_system_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 sanitize_text_field($sys_log_file); ?>" />
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' => __('5G 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,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['aiowps_apply_5g_firewall_settings']))//Do form submission tasks
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 5G firewall security protection rules designed and produced by %s.', 'all-in-one-wp-security-and-firewall'), '<a href="http://perishablepress.com/5g-blacklist-2013/" target="_blank">Perishable Press</a>').'</p>';
538
- $info_msg .= '<p>'.__('The 5G 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>';
539
- $info_msg .= '<p>'.__('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.', 'all-in-one-wp-security-and-firewall').'</p>';
540
- $info_msg .= '<p>'.sprintf( __('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.', 'all-in-one-wp-security-and-firewall'), $backup_tab_link).'</p>';
 
541
  echo $info_msg;
542
  ?>
543
  </div>
544
 
545
  <div class="postbox">
546
- <h3 class="hndle"><label for="title"><?php _e('5G Blacklist/Firewall Settings', 'all-in-one-wp-security-and-firewall'); ?></label></h3>
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 5G Firewall Protection', 'all-in-one-wp-security-and-firewall')?>:</th>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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="aiowps_apply_5g_firewall_settings" value="<?php _e('Save 5G Firewall Settings', 'all-in-one-wp-security-and-firewall')?>" class="button-primary" />
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 add this IP address to your blacklist?\')">Block</a>',
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 frame feature settings save!");
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"><?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,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"><?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
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="aio_blue_box">
235
- <?php
236
- echo '<p>'.__('This tab 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').'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
- </div>
244
- <div class="postbox">
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->check_enable_5G_blacklist_firewall_feature($item);
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 check_enable_5G_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
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', $global_meta_table_name );
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
- $sendMail = wp_mail( $to, $subject, $message, $headers );
80
- if(FALSE === $sendMail){
81
- $aio_wp_security->debug_logger->log_debug("File change notification email failed to send to ".$to,4);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
- $lockdown_tbl_name = AIOWPSEC_TBL_LOGIN_LOCKDOWN;
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
- $ld_tbl_sql = "CREATE TABLE " . $lockdown_tbl_name . " (
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
- dbDelta($ld_tbl_sql);
68
 
69
- $fl_tbl_sql = "CREATE TABLE " . $failed_login_tbl_name . " (
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
- dbDelta($fl_tbl_sql);
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
- dbDelta($ula_tbl_sql);
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 , 0755, true);
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
- if(untrailingslashit($parsed_url['path']) === home_url($login_slug, 'relative')
 
 
 
 
 
 
 
 
 
 
 
 
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
- $rules .= 'RewriteCond %{QUERY_STRING} tag= [NC,OR]' . PHP_EOL;
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(AIOWPSEC_WP_URL);
863
  if ($url_string == FALSE) {
864
- $url_string = AIOWPSEC_WP_URL;
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(AIOWPSEC_WP_URL);
889
  if ($url_string == FALSE) {
890
- $url_string = AIOWPSEC_WP_URL;
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)/(\$(\&)?|\*|\"|\.|,|&|&amp;?)/?$
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
- $pageURL = 'http';
12
- if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
13
- $pageURL .= "://";
14
- if ($_SERVER["SERVER_PORT"] != "80") {
15
- $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
16
- }
17
- else{
18
- $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
19
- }
20
- return $pageURL;
 
21
  }
22
-
23
- static function redirect_to_url($url,$delay='0',$exit='1')
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
- else{
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='.$after_logout_url;
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 ( $username == '' ) {
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='.$blog_id.'orderby=login&role=administrator');
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( $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
- }
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 = ( 1 === preg_match( '/^\d+$/', $sanitized_username ) ) ? true : false;
82
- if ( $sanitized_username_is_an_integer ) {
83
- $sql_2 = $wpdb->prepare( "SELECT ID FROM $wpdb->users WHERE ID=%d", intval($sanitized_username) );
84
- $userid = $wpdb->get_var( $sql_2 );
85
- $users_table_value_exists = ( $userid == $sanitized_username ) ? true : false;
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( "SELECT ID,user_login FROM `" . $wpdb->users . "` WHERE user_login<=>display_name;", ARRAY_A);
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
- if (function_exists('is_multisite') && is_multisite()){
168
  return true;
169
- }else{
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
- foreach ($config_contents as $line_num => $line)
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
- static function event_logger($event_type, $username='' )
 
 
 
 
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
- $user = get_user_by('login',$username); //Returns WP_User object if exists
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
- 'event_type' => $event_type,
349
- 'username' => $username,
350
- 'user_id' => $user_id,
351
- 'event_date' => current_time('mysql'),
352
- 'ip_or_host' => $ip_or_host,
353
- 'referer_info' => $referer_info,
354
- 'url' => $url,
355
- 'event_data' => '',
356
- );
357
 
 
358
  //log to database
359
  $result = $wpdb->insert($events_table_name, $data);
360
- if ($result === FALSE)
361
- {
362
- $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
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
- "WHERE release_date > now() AND " .
379
- "failed_login_ip = '" . esc_sql($ip) . "'", ARRAY_A);
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
- "WHERE release_date > now()", ARRAY_A);
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
- $user = get_user_by('login',$username); //Returns WP_User object if exists
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
- "VALUES ('" . $user_id . "', '" . $username . "', now(), date_add(now(), INTERVAL " .
431
- $lockout_time_length . " MINUTE), '" . $ip_str . "', '" . $lock_reason . "')";
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 ".$wpdb->prefix."blogs");
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: ".$table_name,4);
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 ( in_array( $to_check, $keys ) ) {
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 "&larr; 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 ! \" ? $ % ^ &amp; )."
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 (!isset($result['rawdata']))
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 (!is_admin()) {
25
- if (preg_match('/(wp-comments-post)/', $_SERVER['REQUEST_URI']) === 0) {
26
- if (!empty($_POST['author'])) {
27
- wp_die('Accessing author info via link is forbidden');
28
- }
29
  }
 
30
 
31
- if (preg_match('/author=([0-9]*)/', $_SERVER['QUERY_STRING']) === 1)
32
- wp_die('Accessing author info via link is forbidden');
33
 
34
- add_filter('redirect_canonical', 'll_detect_enumeration', 10, 2);
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, samuelaguilera
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.4
7
- Stable tag: 4.0.3
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.3';
7
- var $db_version = '1.6';
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('AIOWPSEC_WP_URL', site_url());
 
 
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.3
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/