Version Description
- Improved NinjaFirewall overall interface and pages layout; added some simple toggle switches to replace radio buttons, better handling of error messages, cleaned up useless code etc.
- All JavaScript code was 100% rewritten from scratch, including all features that rely on it (e.g., "Live Log" etc).
- The installer was removed: When activating NinjaFirewall for the first time, it will automatically install itself in "WordPress WAF" mode. To upgrade to "Full WAF" mode, simply click on the corresponding link in the Overview page. The process is now very straightforward! A "sandbox" was added too, so that if there were a crash during the process, NinjaFirewall would undo the changes and warn the user.
- When NinjaFirewall is running in "Full WAF" mode, if the PHP INI file used to load its firewall was deleted by mistake, it would automatically fallback to "WordPress WAF" mode so that the blog will remain protected.
- Fixed the admin login page bug where some users had to enter their credentials twice.
- The "Block the DOCUMENT_ROOT server variable in HTTP request" policy will not be enabled by default with new installations of NinjaFirewall.
- NinjaFirewall will not block users with author and editor role while they are editing a post or page using either the Classic or the new Block Editor.
- Added Openlitespeed detection to the "Full WAF" mode installer.
- WP+ Edition (Premium): The "Access Control" pages interface was simplified: it now uses simple textarea elements where you can copy/paste your data (URL, IP, Bot and User Input) very easily. The "Geolocation" page was simplified too.
- WP+ Edition (Premium): In addition to an IP address or CIDR, you can now also enter an AS number (Autonomous System number). This new feature is very helpful if you want to allow or block all IPs from an ISP or hosting company: just enter their AS number instead of hundreds of IP addresses. Syntax is "AS" + the number, e.g. "AS12345". See "Access Control > IP Access Control".
- WP+ Edition (Premium): You can now add an IP to the Access Control blacklist or whitelist from the "Firewall Log" page by entering the IP in the input field below the log textarea.
- WP+ Edition (Premium): When running in "WordPress WAF" mode, NinjaFirewall will automatically disable the shared memory option, because that feature is only useful when used in "Full WAF" mode (there is no benefit at all to run it in "WordPress WAF" mode).
- WP+ Edition (Premium): Fixed a bug where the ISO 3166 country code was not found when using an external PHP Variable instead of the built-in GeoIP database.
- WP+ Edition (Premium): Improved malicious SVG files detection.
- WP+ Edition (Premium): Updated IPv4/IPv6/ASN GeoIP databases.
- Many fixes and adjustments.
Download this release
Release Info
Developer | nintechnet |
Plugin | NinjaFirewall (WP Edition) |
Version | 4.0 |
Comparing to | |
See all releases |
Code changes from version 3.9.1 to 4.0
- images/facebook.png +0 -0
- images/glyphicons-error.png +0 -0
- images/glyphicons-ok.png +0 -0
- images/glyphicons-question.png +0 -0
- images/glyphicons-warning.png +0 -0
- images/google.png +0 -0
- images/screenshots/01_ac_main.png +0 -0
- images/screenshots/02_ac_geoip.png +0 -0
- images/screenshots/03_ac_ip.png +0 -0
- images/screenshots/04_ac_limit.png +0 -0
- images/screenshots/05_ac_url.png +0 -0
- images/screenshots/06_ac_bots.png +0 -0
- images/screenshots/07_webfilter.png +0 -0
- images/screenshots/08_antispam.png +0 -0
- images/screenshots/09_uploads.png +0 -0
- images/screenshots/10_log.png +0 -0
- images/screenshots/11_shmop.png +0 -0
- images/screenshots/12_centlog.png +0 -0
- images/screenshots/13_updates.png +0 -0
- images/screenshots/14_ac_input.png +0 -0
- images/screenshots/access-control-bot.png +0 -0
- images/screenshots/access-control-geolocation.png +0 -0
- images/screenshots/access-control-input.png +0 -0
- images/screenshots/access-control-ip.png +0 -0
- images/screenshots/access-control-url.png +0 -0
- images/screenshots/access-control.png +0 -0
- images/screenshots/anti-spam.png +0 -0
- images/screenshots/centralized-logging.png +0 -0
- images/screenshots/file-uploads.png +0 -0
- images/screenshots/firewall-log.png +0 -0
- images/screenshots/rate-limiting.png +0 -0
- images/screenshots/rules-update.png +0 -0
- images/screenshots/shared-memory.png +0 -0
- images/screenshots/web-filter.png +0 -0
- images/twitter.png +0 -0
- install.php +0 -489
- languages/ninjafirewall-fr_FR.mo +0 -0
- languages/ninjafirewall-fr_FR.po +2953 -2158
- languages/ninjafirewall.pot +1532 -1854
- lib/about.php +9 -30
- lib/dashboard_widget.php +2 -2
- lib/event_notifications.php +31 -42
- lib/file_check.php +60 -132
- lib/file_guard.php +10 -39
- lib/firewall.php +248 -137
- lib/firewall_log.php +19 -45
- lib/firewall_options.php +115 -163
- lib/firewall_policies.php +264 -474
- lib/fw_livelog.php +0 -1
- lib/help.php +83 -21
- lib/init_update.php +10 -0
- lib/install.php +296 -0
- lib/install_default.php +74 -15
- lib/install_fullwaf.php +0 -648
- lib/install_wpwaf.php +0 -243
- lib/live_log.php +65 -199
- lib/login_protection.php +199 -270
- lib/network.php +27 -19
- lib/ninjafirewall.php +16 -0
- lib/overview.php +122 -83
- lib/rules_editor.php +17 -7
- lib/rules_update.php +85 -101
- lib/statistics.php +68 -47
- lib/thickbox.php +275 -0
- lib/utils.php +143 -19
- lib/wpplus.php +225 -124
- ninjafirewall.php +305 -71
- readme.txt +34 -13
- static/chart.min.js +7 -0
images/facebook.png
DELETED
Binary file
|
images/glyphicons-error.png
DELETED
Binary file
|
images/glyphicons-ok.png
DELETED
Binary file
|
images/glyphicons-question.png
DELETED
Binary file
|
images/glyphicons-warning.png
DELETED
Binary file
|
images/google.png
DELETED
Binary file
|
images/screenshots/01_ac_main.png
DELETED
Binary file
|
images/screenshots/02_ac_geoip.png
DELETED
Binary file
|
images/screenshots/03_ac_ip.png
DELETED
Binary file
|
images/screenshots/04_ac_limit.png
DELETED
Binary file
|
images/screenshots/05_ac_url.png
DELETED
Binary file
|
images/screenshots/06_ac_bots.png
DELETED
Binary file
|
images/screenshots/07_webfilter.png
DELETED
Binary file
|
images/screenshots/08_antispam.png
DELETED
Binary file
|
images/screenshots/09_uploads.png
DELETED
Binary file
|
images/screenshots/10_log.png
DELETED
Binary file
|
images/screenshots/11_shmop.png
DELETED
Binary file
|
images/screenshots/12_centlog.png
DELETED
Binary file
|
images/screenshots/13_updates.png
DELETED
Binary file
|
images/screenshots/14_ac_input.png
DELETED
Binary file
|
images/screenshots/access-control-bot.png
ADDED
Binary file
|
images/screenshots/access-control-geolocation.png
ADDED
Binary file
|
images/screenshots/access-control-input.png
ADDED
Binary file
|
images/screenshots/access-control-ip.png
ADDED
Binary file
|
images/screenshots/access-control-url.png
ADDED
Binary file
|
images/screenshots/access-control.png
ADDED
Binary file
|
images/screenshots/anti-spam.png
ADDED
Binary file
|
images/screenshots/centralized-logging.png
ADDED
Binary file
|
images/screenshots/file-uploads.png
ADDED
Binary file
|
images/screenshots/firewall-log.png
ADDED
Binary file
|
images/screenshots/rate-limiting.png
ADDED
Binary file
|
images/screenshots/rules-update.png
ADDED
Binary file
|
images/screenshots/shared-memory.png
ADDED
Binary file
|
images/screenshots/web-filter.png
ADDED
Binary file
|
images/twitter.png
DELETED
Binary file
|
install.php
DELETED
@@ -1,489 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
+---------------------------------------------------------------------+
|
4 |
-
| NinjaFirewall (WP Edition) |
|
5 |
-
| |
|
6 |
-
| (c) NinTechNet - https://nintechnet.com/ |
|
7 |
-
+---------------------------------------------------------------------+
|
8 |
-
| This program is free software: you can redistribute it and/or |
|
9 |
-
| modify it under the terms of the GNU General Public License as |
|
10 |
-
| published by the Free Software Foundation, either version 3 of |
|
11 |
-
| the License, or (at your option) any later version. |
|
12 |
-
| |
|
13 |
-
| This program is distributed in the hope that it will be useful, |
|
14 |
-
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
-
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
-
| GNU General Public License for more details. |
|
17 |
-
+---------------------------------------------------------------------+ i18n+ / sa
|
18 |
-
*/
|
19 |
-
|
20 |
-
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
21 |
-
|
22 |
-
if ( is_multisite() && ! current_user_can( 'manage_network' ) ) {
|
23 |
-
return;
|
24 |
-
}
|
25 |
-
|
26 |
-
// Set this to 1 if you don't want to receive a welcome email:
|
27 |
-
if (! defined('DONOTEMAIL') ) {
|
28 |
-
define('DONOTEMAIL', 0);
|
29 |
-
}
|
30 |
-
|
31 |
-
@error_reporting(-1);
|
32 |
-
@ini_set('display_errors', '1');
|
33 |
-
|
34 |
-
|
35 |
-
if ( isset( $_POST["select_mode"] ) ) {
|
36 |
-
if ( $_POST["select_mode"] == "wpwaf" ) {
|
37 |
-
$_SESSION['waf_mode'] = "wpwaf";
|
38 |
-
} elseif ( $_POST["select_mode"] == "fullwaf" ) {
|
39 |
-
$_SESSION['waf_mode'] = "fullwaf";
|
40 |
-
}
|
41 |
-
}
|
42 |
-
require( __DIR__ . '/lib/install_wpwaf.php' );
|
43 |
-
require( __DIR__ . '/lib/install_fullwaf.php' );
|
44 |
-
|
45 |
-
|
46 |
-
if ( empty( $_REQUEST['nfw_act'] ) ) {
|
47 |
-
nfw_welcome();
|
48 |
-
return;
|
49 |
-
}
|
50 |
-
|
51 |
-
if ( $_REQUEST['nfw_act'] == 'create_log_dir' ) {
|
52 |
-
if ( empty($_POST['nfwnonce']) || ! wp_verify_nonce($_POST['nfwnonce'], 'create_log_dir') ) {
|
53 |
-
wp_nonce_ays('create_log_dir');
|
54 |
-
}
|
55 |
-
nfw_create_log_dir();
|
56 |
-
return;
|
57 |
-
}
|
58 |
-
|
59 |
-
/* ------------------------------------------------------------------ */
|
60 |
-
// WordPress WAF mode:
|
61 |
-
|
62 |
-
if ( $_REQUEST['nfw_act'] == 'save_changes_wpwaf' ) {
|
63 |
-
if ( empty($_POST['nfwnonce']) || ! wp_verify_nonce($_POST['nfwnonce'], 'save_changes_wpwaf') ) {
|
64 |
-
wp_nonce_ays('save_changes_wpwaf');
|
65 |
-
}
|
66 |
-
nfw_save_changes_wpwaf();
|
67 |
-
return;
|
68 |
-
}
|
69 |
-
|
70 |
-
/* ------------------------------------------------------------------ */
|
71 |
-
// Full WAF mode:
|
72 |
-
|
73 |
-
if ( $_REQUEST['nfw_act'] == 'presave' ) {
|
74 |
-
if ( empty($_POST['nfwnonce']) || ! wp_verify_nonce($_POST['nfwnonce'], 'presave') ) {
|
75 |
-
wp_nonce_ays('presave');
|
76 |
-
}
|
77 |
-
nfw_presave();
|
78 |
-
|
79 |
-
} elseif ( $_REQUEST['nfw_act'] == 'integration' ) {
|
80 |
-
if ( empty($_POST['nfwnonce']) || ! wp_verify_nonce($_POST['nfwnonce'], 'integration') ) {
|
81 |
-
wp_nonce_ays('integration');
|
82 |
-
}
|
83 |
-
nfw_integration();
|
84 |
-
|
85 |
-
} elseif ( $_REQUEST['nfw_act'] == 'postsave' ) {
|
86 |
-
if ( empty($_POST['nfwnonce']) || ! wp_verify_nonce($_POST['nfwnonce'], 'postsave') ) {
|
87 |
-
wp_nonce_ays('postsave');
|
88 |
-
}
|
89 |
-
nfw_postsave();
|
90 |
-
|
91 |
-
}
|
92 |
-
|
93 |
-
return;
|
94 |
-
|
95 |
-
/* ------------------------------------------------------------------ */
|
96 |
-
|
97 |
-
function nfw_welcome() {
|
98 |
-
|
99 |
-
if ( isset($_SESSION['abspath']) ) {
|
100 |
-
unset($_SESSION['abspath']);
|
101 |
-
}
|
102 |
-
if ( isset($_SESSION['http_server']) ) {
|
103 |
-
unset($_SESSION['http_server']);
|
104 |
-
}
|
105 |
-
if ( isset($_SESSION['php_ini_type']) ) {
|
106 |
-
unset($_SESSION['php_ini_type']);
|
107 |
-
}
|
108 |
-
if (isset($_SESSION['email_install']) ) {
|
109 |
-
unset($_SESSION['email_install']);
|
110 |
-
}
|
111 |
-
if (isset($_SESSION['default_conf']) ) {
|
112 |
-
unset($_SESSION['default_conf']);
|
113 |
-
}
|
114 |
-
if (isset($_SESSION['waf_mode']) ) {
|
115 |
-
unset($_SESSION['waf_mode']);
|
116 |
-
}
|
117 |
-
if (isset($_SESSION['wp_config']) ) {
|
118 |
-
unset($_SESSION['wp_config']);
|
119 |
-
}
|
120 |
-
if (isset($_SESSION['temp_admin_email']) ) {
|
121 |
-
unset($_SESSION['temp_admin_email']);
|
122 |
-
}
|
123 |
-
|
124 |
-
$_SESSION['nfw_goodguy'] = true;
|
125 |
-
|
126 |
-
?>
|
127 |
-
<div class="wrap">
|
128 |
-
<h1><img style="vertical-align:top;width:33px;height:33px;" src="<?php echo plugins_url( '/ninjafirewall/images/ninjafirewall_32.png' ) ?>"> <?php _e('NinjaFirewall (WP Edition)', 'ninjafirewall') ?></h1>
|
129 |
-
|
130 |
-
<?php
|
131 |
-
if (file_exists( dirname(plugin_dir_path(__FILE__)) . '/nfwplus') ) {
|
132 |
-
echo '<br /><div class="error settings-error"><p>' . sprintf( __('Error: You have a copy of NinjaFirewall (%s) installed.<br />Please uninstall it completely before attempting to install NinjaFirewall (WP Edition).', 'ninjafirewall'), '<font color=#21759B>WP+</font> Edition' ) . '</p></div></div></div></div></div></div></body></html>';
|
133 |
-
exit;
|
134 |
-
}
|
135 |
-
?>
|
136 |
-
<p><?php _e('Thank you for using NinjaFirewall', 'ninjafirewall') ?> (WP Edition). <?php _e('This installer will help you to make the setup process as quick and easy as possible.', 'ninjafirewall') ?></p>
|
137 |
-
|
138 |
-
<p><?php _e('Although NinjaFirewall looks like a regular security plugin, it is not. It can be installed and configured from the WordPress admin console, but it is a stand-alone Web Application Firewall that sits in front of WordPress.', 'ninjafirewall') ?> <?php _e('It can run in two different modes: <b>Full WAF</b> or <b>WordPress WAF</b> modes.', 'ninjafirewall') ?></p>
|
139 |
-
|
140 |
-
<h3><?php _e('Full WAF mode', 'ninjafirewall') ?></h3>
|
141 |
-
|
142 |
-
<p><?php _e('In <b>Full WAF</b> mode, NinjaFirewall will hook, scan, reject or sanitise any HTTP and HTTPS request sent to a PHP script before it reaches WordPress, its plugins or even the database. All scripts located inside the blog installation directories and sub-directories will be protected, including those that aren\'t part of the WordPress package. Even encoded PHP scripts (e.g., ionCube), potential backdoors and shell scripts (e.g., c99, r57) will be filtered by NinjaFirewall.', 'ninjafirewall') ?>
|
143 |
-
<br />
|
144 |
-
<?php printf( __('That makes it a true firewall and gives you the highest possible level of protection: <a href="%s" title="%s">security without compromise</a>.', 'ninjafirewall'), 'https://blog.nintechnet.com/introduction-to-ninjafirewall-filtering-engine/', 'An introduction to NinjaFirewall filtering engine.') ?>
|
145 |
-
<br />
|
146 |
-
<?php printf( __('To run NinjaFirewall in <b>Full WAF</b> mode, your server must allow the use of the <code>auto_prepend_file</code> PHP directive. It is required to instruct the PHP interpreter to load the firewall before WordPress or any other script. Most of the time it works right out of the box, or may require <a href="%s" title="%s">some very little tweaks</a>. But in a few cases, mostly because of some shared hosting plans restrictions, it may simply not work at all.','ninjafirewall'), 'https://blog.nintechnet.com/troubleshoot-ninjafirewall-installation-problems/', 'Troubleshoot NinjaFirewall installation problems.') ?></p>
|
147 |
-
|
148 |
-
<h3><?php _e('WordPress WAF mode', 'ninjafirewall') ?></h3>
|
149 |
-
|
150 |
-
<p><?php _e('The <b>WordPress WAF</b> mode requires to load NinjaFirewall via the WordPress wp-config.php script. This process makes it easy to setup and the installation will always be successful, regardless of your hosting plan restrictions.', 'ninjafirewall') ?> <?php _e('NinjaFirewall will still load before WordPress, its plugins and the database and will run as fast as the <b>Full WAF</b> mode.', 'ninjafirewall') ?>
|
151 |
-
<br />
|
152 |
-
<?php _e('However, the downside of this mode is that NinjaFirewall will be able to hook and filter HTTP requests sent to WordPress only. A few features such as File Guard, the URL Access Control and Web Filter (WP+ Edition only) will be limited.', 'ninjafirewall') ?>
|
153 |
-
<br />
|
154 |
-
<?php _e('Despite being less powerful than the <b>Full WAF</b> mode, it still offers a level of protection and performance higher than any other security plugin.', 'ninjafirewall') ?></p>
|
155 |
-
|
156 |
-
<h3><?php _e('Installation', 'ninjafirewall') ?></h3>
|
157 |
-
|
158 |
-
<p><?php _e('We recommend to select the <b>Full WAF</b> mode option first. If it fails, this installer will let you switch to the <b>WordPress WAF</b> mode easily.', 'ninjafirewall' ) ?></p>
|
159 |
-
|
160 |
-
<form method="post">
|
161 |
-
|
162 |
-
<p><label><input type="radio" name="select_mode" value="fullwaf" checked="checked" /><strong><?php _e('Full WAF mode (recommended)', 'ninjafirewall') ?></strong></label></p>
|
163 |
-
|
164 |
-
<p><label><input type="radio" name="select_mode" value="wpwaf" /><strong><?php _e('WordPress WAF mode', 'ninjafirewall') ?></strong></label></p>
|
165 |
-
|
166 |
-
<p><?php _e('Enter the email address where NinjaFirewall will send notifications and reports:', 'ninjafirewall') ?> <input type="email" name="temp_admin_email" required value="<?php echo htmlspecialchars( get_option('admin_email') ) ?>" /></p>
|
167 |
-
|
168 |
-
<p><input class="button-primary" type="submit" name="nextstep" value="<?php _e('Next Step', 'ninjafirewall') ?> »" /></p>
|
169 |
-
|
170 |
-
<input type="hidden" name="nfw_act" value="create_log_dir" />
|
171 |
-
<?php wp_nonce_field('create_log_dir', 'nfwnonce', 0); ?>
|
172 |
-
|
173 |
-
</form>
|
174 |
-
|
175 |
-
<h3><?php _e('Privacy policy', 'ninjafirewall') ?></h3>
|
176 |
-
|
177 |
-
<p><?php _e('Your website can run NinjaFirewall and be compliant with the General Data Protection Regulation (GDPR). For more info, please visit our blog:', 'ninjafirewall') ?> <a href="https://blog.nintechnet.com/ninjafirewall-general-data-protection-regulation-compliance/">https://blog.nintechnet.com/ninjafirewall-general-data-protection-regulation-compliance/</a></p>
|
178 |
-
|
179 |
-
</div>
|
180 |
-
<?php
|
181 |
-
|
182 |
-
}
|
183 |
-
|
184 |
-
/* ------------------------------------------------------------------ */
|
185 |
-
|
186 |
-
function nfw_create_log_dir() {
|
187 |
-
|
188 |
-
if (! empty( $_POST['temp_admin_email'] ) ) {
|
189 |
-
$temp_admin_email = sanitize_email( $_POST['temp_admin_email'] );
|
190 |
-
if (! empty( $temp_admin_email ) ) {
|
191 |
-
$_SESSION['temp_admin_email'] = $temp_admin_email;
|
192 |
-
} else {
|
193 |
-
unset( $_SESSION['temp_admin_email'] );
|
194 |
-
}
|
195 |
-
}
|
196 |
-
|
197 |
-
if (! is_writable(NFW_LOG_DIR) ) {
|
198 |
-
$err = sprintf( __('NinjaFirewall cannot create its <code>nfwlog/</code>log and cache folder; please make sure that the <code>%s</code> directory is writable', 'ninjafirewall'), htmlspecialchars(NFW_LOG_DIR) );
|
199 |
-
} else {
|
200 |
-
if (! file_exists(NFW_LOG_DIR . '/nfwlog') ) {
|
201 |
-
mkdir( NFW_LOG_DIR . '/nfwlog', 0755);
|
202 |
-
}
|
203 |
-
if (! file_exists(NFW_LOG_DIR . '/nfwlog/cache') ) {
|
204 |
-
mkdir( NFW_LOG_DIR . '/nfwlog/cache', 0755);
|
205 |
-
}
|
206 |
-
|
207 |
-
$deny_rules = "<Files \"*\">
|
208 |
-
<IfModule mod_version.c>
|
209 |
-
<IfVersion < 2.4>
|
210 |
-
Order Deny,Allow
|
211 |
-
Deny from All
|
212 |
-
</IfVersion>
|
213 |
-
<IfVersion >= 2.4>
|
214 |
-
Require all denied
|
215 |
-
</IfVersion>
|
216 |
-
</IfModule>
|
217 |
-
<IfModule !mod_version.c>
|
218 |
-
<IfModule !mod_authz_core.c>
|
219 |
-
Order Deny,Allow
|
220 |
-
Deny from All
|
221 |
-
</IfModule>
|
222 |
-
<IfModule mod_authz_core.c>
|
223 |
-
Require all denied
|
224 |
-
</IfModule>
|
225 |
-
</IfModule>
|
226 |
-
</Files>";
|
227 |
-
|
228 |
-
touch( NFW_LOG_DIR . '/nfwlog/index.html' );
|
229 |
-
touch( NFW_LOG_DIR . '/nfwlog/cache/index.html' );
|
230 |
-
@file_put_contents(NFW_LOG_DIR . '/nfwlog/.htaccess', $deny_rules, LOCK_EX);
|
231 |
-
@file_put_contents(NFW_LOG_DIR . '/nfwlog/cache/.htaccess', $deny_rules, LOCK_EX);
|
232 |
-
@file_put_contents(NFW_LOG_DIR . '/nfwlog/readme.txt', __("This is NinjaFirewall's logs, loader and cache directory. DO NOT alter or remove it as long as NinjaFirewall is running!", 'ninjafirewall'), LOCK_EX);
|
233 |
-
|
234 |
-
// Return if we are going to run in "WordPress WAF" mode:
|
235 |
-
if ( $_SESSION['waf_mode'] == "wpwaf" ) {
|
236 |
-
nfw_integration_wpwaf();
|
237 |
-
return;
|
238 |
-
}
|
239 |
-
|
240 |
-
$loader = "<?php
|
241 |
-
// ===============================================================//
|
242 |
-
// NinjaFirewall's loader. //
|
243 |
-
// DO NOT alter or remove it as long as NinjaFirewall is running! //
|
244 |
-
// ===============================================================//
|
245 |
-
if ( file_exists('" . plugin_dir_path(__FILE__) . 'lib/firewall.php' . "') ) {
|
246 |
-
@include('" . plugin_dir_path(__FILE__) . 'lib/firewall.php' . "');
|
247 |
-
}
|
248 |
-
// EOF
|
249 |
-
";
|
250 |
-
file_put_contents(NFW_LOG_DIR . '/nfwlog/ninjafirewall.php', $loader, LOCK_EX);
|
251 |
-
}
|
252 |
-
if ( empty($err) ) {
|
253 |
-
nfw_get_abspath();
|
254 |
-
return;
|
255 |
-
}
|
256 |
-
echo '
|
257 |
-
<div class="wrap">
|
258 |
-
<h1><img style="vertical-align:top;width:33px;height:33px;" src="'. plugins_url( '/ninjafirewall/images/ninjafirewall_32.png' ) .'"> ' . __('Firewall Policies', 'ninjafirewall') . '</h1>
|
259 |
-
|
260 |
-
<br />
|
261 |
-
<div class="error settings-error"><p>' . $err . '</p></div>
|
262 |
-
|
263 |
-
<br />
|
264 |
-
<br />
|
265 |
-
<form method="post">
|
266 |
-
<p><input class="button-primary" type="submit" name="Save" value="' . __('Try again', 'ninjafirewall') . ' »" /></p>
|
267 |
-
<input type="hidden" name="nfw_act" value="create_log_dir" />' . wp_nonce_field('create_log_dir', 'nfwnonce', 0) . '
|
268 |
-
</form>
|
269 |
-
</div>';
|
270 |
-
|
271 |
-
}
|
272 |
-
|
273 |
-
/* ------------------------------------------------------------------ */
|
274 |
-
|
275 |
-
function welcome_email() {
|
276 |
-
|
277 |
-
if ( empty( $_SESSION['email_install'] ) ) {
|
278 |
-
|
279 |
-
if (! empty( $_SESSION['temp_admin_email'] ) ) {
|
280 |
-
$recipient = $_SESSION['temp_admin_email'];
|
281 |
-
} else {
|
282 |
-
$recipient = get_option('admin_email');
|
283 |
-
}
|
284 |
-
$subject = '[NinjaFirewall] ' . __('Quick Start, FAQ & Troubleshooting Guide', 'ninjafirewall');
|
285 |
-
$message = __('Hi,', 'ninjafirewall') . "\n\n";
|
286 |
-
|
287 |
-
$message.= __('This is NinjaFirewall\'s installer. Below are some helpful info and links you may consider reading before using NinjaFirewall.', 'ninjafirewall') . "\n\n";
|
288 |
-
|
289 |
-
$message.= '1) '. __('Must Read:', 'ninjafirewall') . "\n\n";
|
290 |
-
|
291 |
-
$message.= __('-Securing WordPress with NinjaFirewall. A step by step tutorial:', 'ninjafirewall') . "\n";
|
292 |
-
$message.= 'https://blog.nintechnet.com/securing-wordpress-with-a-web-application-firewall-ninjafirewall/ ' . "\n\n";
|
293 |
-
|
294 |
-
$message.= __('-An introduction to NinjaFirewall filtering engine:', 'ninjafirewall') . "\n";
|
295 |
-
$message.= 'https://blog.nintechnet.com/introduction-to-ninjafirewall-filtering-engine/ ' . "\n\n";
|
296 |
-
|
297 |
-
$message.= __('-Testing NinjaFirewall without blocking your visitors:', 'ninjafirewall') . "\n";
|
298 |
-
$message.= 'https://blog.nintechnet.com/testing-ninjafirewall-without-blocking-your-visitors/ ' . "\n\n";
|
299 |
-
|
300 |
-
$message.= __('-Add your own code to the firewall: the ".htninja" file:', 'ninjafirewall') . "\n";
|
301 |
-
$message.= 'https://nintechnet.com/ninjafirewall/wp-edition/help/?htninja ' . "\n\n";
|
302 |
-
|
303 |
-
$message.= __('-Restricting access to NinjaFirewall settings:', 'ninjafirewall') . "\n";
|
304 |
-
$message.= 'https://blog.nintechnet.com/restricting-access-to-ninjafirewall-wp-edition-settings/ ' . "\n\n";
|
305 |
-
|
306 |
-
$message.= __('-Upgrading to PHP 7 with NinjaFirewall installed:', 'ninjafirewall') . "\n";
|
307 |
-
$message.= 'https://blog.nintechnet.com/upgrading-to-php-7-with-ninjafirewall-installed/ ' . "\n\n";
|
308 |
-
|
309 |
-
$message.= __('-Keep your blog protected against the latest vulnerabilities:', 'ninjafirewall') . "\n";
|
310 |
-
$message.= 'https://blog.nintechnet.com/ninjafirewall-wpwp-introduces-automatic-updates-for-security-rules ' . "\n\n";
|
311 |
-
|
312 |
-
$message.= __('-Test your website security with our online scanner:', 'ninjafirewall') . "\n";
|
313 |
-
$message.= 'https://webscanner.nintechnet.com/ ' . "\n\n";
|
314 |
-
|
315 |
-
$message.= __('-NinjaFirewall Referral Program:', 'ninjafirewall') . "\n";
|
316 |
-
$message.= 'https://nintechnet.com/referral/ ' . "\n\n";
|
317 |
-
|
318 |
-
$message.= '2) ' . __('Troubleshooting:', 'ninjafirewall') . "\n";
|
319 |
-
$message.= 'https://nintechnet.com/ninjafirewall/wp-edition/help/?troubleshooting ' . "\n\n";
|
320 |
-
|
321 |
-
$message.= __('-Locked out of your site / Fatal error / WordPress crash?', 'ninjafirewall') . "\n";
|
322 |
-
$message.= __('-Failed installation ("Error: The firewall is not loaded")?', 'ninjafirewall') . "\n";
|
323 |
-
$message.= __('-Blank page after INSTALLING NinjaFirewall?', 'ninjafirewall') . "\n";
|
324 |
-
$message.= __('-Blank page after UNINSTALLING NinjaFirewall?', 'ninjafirewall') . "\n";
|
325 |
-
$message.= __('-500 Internal Server Error?', 'ninjafirewall') . "\n";
|
326 |
-
$message.= __('-"Cannot connect to WordPress database" error message?', 'ninjafirewall') . "\n";
|
327 |
-
$message.= __('-How to disable NinjaFirewall?', 'ninjafirewall') . "\n";
|
328 |
-
$message.= __('-Lost password (brute-force protection)?', 'ninjafirewall') . "\n";
|
329 |
-
$message.= __('-Blocked visitors (see below)?', 'ninjafirewall') . "\n";
|
330 |
-
$message.= __('-Exporting NinjaFirewall\'s configuration', 'ninjafirewall') . "\n\n";
|
331 |
-
|
332 |
-
$message.= '3) ' . __('-NinjaFirewall (WP Edition) troubleshooter script', 'ninjafirewall') . "\n";
|
333 |
-
$message.= 'https://nintechnet.com/share/wp-check.txt ' . "\n\n";
|
334 |
-
$message.= __('-Rename this file to "wp-check.php".', 'ninjafirewall') . "\n";
|
335 |
-
$message.= __('-Upload it into your WordPress root folder.', 'ninjafirewall') . "\n";
|
336 |
-
$message.= __('-Goto http://YOUR WEBSITE/wp-check.php.', 'ninjafirewall') . "\n";
|
337 |
-
$message.= __('-Delete it afterwards.', 'ninjafirewall') . "\n\n";
|
338 |
-
|
339 |
-
$message.= '4) '. __('FAQ:', 'ninjafirewall') . "\n";
|
340 |
-
$message.= 'https://nintechnet.com/ninjafirewall/wp-edition/help/?faq ' . "\n\n";
|
341 |
-
|
342 |
-
$message.= __('-Why is NinjaFirewall different from other security plugins for WordPress?', 'ninjafirewall') . "\n";
|
343 |
-
$message.= __('-Do I need root privileges to install NinjaFirewall?', 'ninjafirewall') . "\n";
|
344 |
-
$message.= __('-Does it work with Nginx?', 'ninjafirewall') . "\n";
|
345 |
-
$message.= __('-Do I need to alter my PHP scripts?', 'ninjafirewall') . "\n";
|
346 |
-
$message.= __('-Will NinjaFirewall detect the correct IP of my visitors if I am behind a CDN service like Cloudflare or Incapsula?', 'ninjafirewall') . "\n";
|
347 |
-
$message.= __('-I moved my wp-config.php file to another directory. Will it work with NinjaFirewall?', 'ninjafirewall') . "\n";
|
348 |
-
$message.= __('-Will it slow down my site?', 'ninjafirewall') . "\n";
|
349 |
-
$message.= __('-Is there a Microsoft Windows version?', 'ninjafirewall') . "\n";
|
350 |
-
$message.= __('-Can I add/write my own security rules?', 'ninjafirewall') . "\n";
|
351 |
-
$message.= __('-Can I migrate my site(s) with NinjaFirewall installed?', 'ninjafirewall') . "\n\n";
|
352 |
-
|
353 |
-
$message.= '5) '. __('Help & Support Links:', 'ninjafirewall') . "\n\n";
|
354 |
-
$message.= __('-Each page of NinjaFirewall includes a contextual help: click on the "Help" menu tab located in the upper right corner of the corresponding page.', 'ninjafirewall') . "\n";
|
355 |
-
$message.= __('-Online documentation is also available here:', 'ninjafirewall'). ' https://nintechnet.com/ninjafirewall/wp-edition/doc/ ' . "\n";
|
356 |
-
$message.= __('-The WordPress support forum:', 'ninjafirewall') .' http://wordpress.org/support/plugin/ninjafirewall ' . "\n";
|
357 |
-
$message.= __('-Updates info are available via Twitter:', 'ninjafirewall') .' https://twitter.com/nintechnet ' . "\n\n";
|
358 |
-
|
359 |
-
$message.= 'NinjaFirewall (WP Edition) - https://nintechnet.com/ ' . "\n\n";
|
360 |
-
|
361 |
-
if (! DONOTEMAIL ) {
|
362 |
-
wp_mail( $recipient, $subject, $message );
|
363 |
-
$_SESSION['email_install'] = $recipient;
|
364 |
-
}
|
365 |
-
}
|
366 |
-
}
|
367 |
-
|
368 |
-
/* ------------------------------------------------------------------ */
|
369 |
-
|
370 |
-
function nfw_firewalltest() {
|
371 |
-
?>
|
372 |
-
<div class="wrap">
|
373 |
-
<h1><img style="vertical-align:top;width:33px;height:33px;" src="<?php echo plugins_url( '/ninjafirewall/images/ninjafirewall_32.png' ) ?>"> <?php _e('NinjaFirewall (WP Edition)', 'ninjafirewall') ?></h1>
|
374 |
-
|
375 |
-
<?php
|
376 |
-
if (! defined('NFW_STATUS') || NFW_STATUS != 20 ) {
|
377 |
-
|
378 |
-
echo '<div class="error settings-error"><p>'. __('Error: The firewall is not loaded.', 'ninjafirewall'). '</p></div>
|
379 |
-
<h3>'. __('Suggestions:', 'ninjafirewall'). '</h3>
|
380 |
-
<ul>';
|
381 |
-
if ($_SESSION['http_server'] == 1) {
|
382 |
-
|
383 |
-
echo '<li>∙ '. __('You selected <code>Apache + PHP module</code> as your HTTP server and PHP SAPI. Maybe your HTTP server is <code>Apache + CGI/FastCGI</code>?', 'ninjafirewall'). '
|
384 |
-
<br />
|
385 |
-
'. __('You can click the "Go Back" button and try to select another HTTP server type.', 'ninjafirewall'). '</li><br /><br />';
|
386 |
-
|
387 |
-
|
388 |
-
} elseif( $_SESSION['http_server'] == 4 ) {
|
389 |
-
echo '<li>∙ '. __('You have selected LiteSpeed as your HTTP server. Did you enable the "AllowOverride" directive from its admin panel? Make sure it is enabled, restart LiteSpeed and then, click the "Test Again" button below.', 'ninjafirewall'). '</li>
|
390 |
-
<form method="POST">
|
391 |
-
<input type="submit" class="button-secondary" value="'. __('Test Again', 'ninjafirewall'). '" />
|
392 |
-
<input type="hidden" name="nfw_act" value="postsave" />
|
393 |
-
<input type="hidden" name="makechange" value="usr" />
|
394 |
-
<input type="hidden" name="nfw_firstrun" value="1" />'. wp_nonce_field('postsave', 'nfwnonce', 0) .'
|
395 |
-
</form><br />';
|
396 |
-
|
397 |
-
} else {
|
398 |
-
|
399 |
-
if ($_SESSION['php_ini_type'] == 2) {
|
400 |
-
echo '<li>∙ '. __('You have selected <code>.user.ini</code> as your PHP initialization file. Unlike <code>php.ini</code>, <code>.user.ini</code> files are not reloaded immediately by PHP, but every five minutes. If this is your own server, restart Apache (or PHP-FPM if applicable) to force PHP to reload it, otherwise please <strong>wait up to five minutes</strong> and then, click the "Test Again" button below.', 'ninjafirewall'). '</li>
|
401 |
-
<form method="POST">
|
402 |
-
<input type="submit" class="button-secondary" value="'. __('Test Again', 'ninjafirewall'). '" />
|
403 |
-
<input type="hidden" name="nfw_act" value="postsave" />
|
404 |
-
<input type="hidden" name="makechange" value="usr" />
|
405 |
-
<input type="hidden" name="nfw_firstrun" value="1" />'. wp_nonce_field('postsave', 'nfwnonce', 0) .'
|
406 |
-
</form><br /><br />';
|
407 |
-
}
|
408 |
-
if ($_SESSION['http_server'] == 2) {
|
409 |
-
if ( preg_match('/apache/i', PHP_SAPI) ) {
|
410 |
-
|
411 |
-
echo '<li>∙ '. __('You selected <code>Apache + CGI/FastCGI</code> as your HTTP server and PHP SAPI. Maybe your HTTP server is <code>Apache + PHP module</code>?', 'ninjafirewall'). '
|
412 |
-
<br />
|
413 |
-
'. __('You can click the "Go Back" button and try to select another HTTP server type.', 'ninjafirewall'). '</li><br />';
|
414 |
-
}
|
415 |
-
}
|
416 |
-
echo '<li>∙ '. __('Maybe you did not select the correct PHP INI ?', 'ninjafirewall'). '
|
417 |
-
<br />
|
418 |
-
'. __('You can click the "Go Back" button and try to select another one.', 'ninjafirewall'). '</li>';
|
419 |
-
}
|
420 |
-
|
421 |
-
echo '<form method="POST">
|
422 |
-
<p><input type="submit" class="button-secondary" value="« '. __('Go Back', 'ninjafirewall'). '" /></p>
|
423 |
-
<input type="hidden" name="abspath" value="' . $_SESSION['abspath'] . '" />
|
424 |
-
<input type="hidden" name="nfw_act" value="presave" />
|
425 |
-
<input type="hidden" name="nfw_firstrun" value="1" />'. wp_nonce_field('presave', 'nfwnonce', 0) .'
|
426 |
-
</form>
|
427 |
-
<br />
|
428 |
-
<li>∙ '. sprintf( __('If none of the above suggestions work, you can still install NinjaFirewall in %s mode by clicking the button below. Setup is easy and will always work.', 'ninjafirewall'), '<a href="https://blog.nintechnet.com/full_waf-vs-wordpress_waf/">WordPress WAF</a>' ) . '</li>
|
429 |
-
<form method="post">
|
430 |
-
<input type="hidden" name="select_mode" value="wpwaf" />
|
431 |
-
<input type="hidden" name="nfw_act" value="create_log_dir" />
|
432 |
-
' . wp_nonce_field('create_log_dir', 'nfwnonce', 0) . '
|
433 |
-
<p><input class="button-secondary" type="submit" name="nextstep" value="' . __('Switch to the WordPress WAF mode installer »', 'ninjafirewall') . '" /></p>
|
434 |
-
</form>
|
435 |
-
</ul>
|
436 |
-
<br />
|
437 |
-
<h3>'. __('Need help? Check our blog:', 'ninjafirewall'). ' <a href="https://blog.nintechnet.com/troubleshoot-ninjafirewall-installation-problems/" target="_blank">Troubleshoot NinjaFirewall installation problems</a>.</h3>
|
438 |
-
</div>';
|
439 |
-
}
|
440 |
-
}
|
441 |
-
|
442 |
-
/* ------------------------------------------------------------------ */
|
443 |
-
|
444 |
-
function nfw_ini_data() {
|
445 |
-
|
446 |
-
if (! defined('HTACCESS_BEGIN') ) {
|
447 |
-
define( 'HTACCESS_BEGIN', '# BEGIN NinjaFirewall' );
|
448 |
-
define( 'HTACCESS_DATA', '<IfModule mod_php' . PHP_MAJOR_VERSION . '.c>' . "\n" .
|
449 |
-
' php_value auto_prepend_file ' . NFW_LOG_DIR . '/nfwlog/ninjafirewall.php' . "\n" .
|
450 |
-
'</IfModule>');
|
451 |
-
define( 'LITESPEED_DATA', 'php_value auto_prepend_file ' . NFW_LOG_DIR . '/nfwlog/ninjafirewall.php');
|
452 |
-
define( 'SUPHP_DATA', '<IfModule mod_suphp.c>' . "\n" .
|
453 |
-
' suPHP_ConfigPath ' . rtrim($_SESSION['abspath'], '/') . "\n" .
|
454 |
-
'</IfModule>');
|
455 |
-
define( 'HTACCESS_END', '# END NinjaFirewall' );
|
456 |
-
define( 'PHPINI_BEGIN', '; BEGIN NinjaFirewall' );
|
457 |
-
define( 'PHPINI_DATA', 'auto_prepend_file = ' . NFW_LOG_DIR . '/nfwlog/ninjafirewall.php' );
|
458 |
-
define( 'PHPINI_END', '; END NinjaFirewall' );
|
459 |
-
}
|
460 |
-
}
|
461 |
-
|
462 |
-
/* ------------------------------------------------------------------ */
|
463 |
-
|
464 |
-
function nfw_wpconfig_data() {
|
465 |
-
|
466 |
-
if (! defined('WP_CONFIG_BEGIN') ) {
|
467 |
-
define( 'WP_CONFIG_BEGIN', '// BEGIN NinjaFirewall' );
|
468 |
-
define( 'WP_CONFIG_DATA',
|
469 |
-
'if ( file_exists("' . plugin_dir_path( __FILE__ ) . 'lib/firewall.php' . '") && ! defined("NFW_STATUS") ) {' . "\n" .
|
470 |
-
' @include_once("' . plugin_dir_path( __FILE__ ) . 'lib/firewall.php' . '");' . "\n" .
|
471 |
-
' define("NFW_WPWAF", 1);' . "\n" .
|
472 |
-
'}' );
|
473 |
-
define( 'WP_CONFIG_END', '// END NinjaFirewall' );
|
474 |
-
}
|
475 |
-
|
476 |
-
}
|
477 |
-
|
478 |
-
/* ------------------------------------------------------------------ */
|
479 |
-
|
480 |
-
function nfw_default_conf() {
|
481 |
-
|
482 |
-
// Load and save default config:
|
483 |
-
require_once __DIR__ .'/lib/install_default.php';
|
484 |
-
nfw_load_default_conf();
|
485 |
-
|
486 |
-
}
|
487 |
-
|
488 |
-
/* ------------------------------------------------------------------ */
|
489 |
-
// EOF //
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
languages/ninjafirewall-fr_FR.mo
CHANGED
Binary file
|
languages/ninjafirewall-fr_FR.po
CHANGED
@@ -4,8 +4,8 @@ msgid ""
|
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: Stable (latest release)\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/ninjafirewall\n"
|
7 |
-
"POT-Creation-Date: 2019-
|
8 |
-
"PO-Revision-Date: 2019-
|
9 |
"Last-Translator: NinTechNet <contact@nintechnet.com>\n"
|
10 |
"Language-Team: NinTechNet <nintechnet.com>\n"
|
11 |
"Language: fr_FR\n"
|
@@ -16,625 +16,115 @@ msgstr ""
|
|
16 |
"X-Poedit-SourceCharset: UTF-8\n"
|
17 |
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
18 |
|
19 |
-
#: install.php:128 install.php:373 lib/install_fullwaf.php:301
|
20 |
-
#: lib/install_fullwaf.php:618 lib/install_wpwaf.php:48
|
21 |
-
#: lib/install_wpwaf.php:201 lib/overview.php:32
|
22 |
-
msgid "NinjaFirewall (WP Edition)"
|
23 |
-
msgstr "NinjaFirewall (WP Edition)"
|
24 |
-
|
25 |
-
#: install.php:132
|
26 |
-
#, php-format
|
27 |
-
msgid ""
|
28 |
-
"Error: You have a copy of NinjaFirewall (%s) installed.<br />Please "
|
29 |
-
"uninstall it completely before attempting to install NinjaFirewall (WP "
|
30 |
-
"Edition)."
|
31 |
-
msgstr ""
|
32 |
-
"Erreur : Vous avez déjà une copie de NinjaFirewall (%s) installée<br /"
|
33 |
-
">Veuillez la désinstaller complètement avant d'installer NinjaFirewall (WP "
|
34 |
-
"Edition)."
|
35 |
-
|
36 |
-
#: install.php:136
|
37 |
-
msgid "Thank you for using NinjaFirewall"
|
38 |
-
msgstr "Merci d'utiliser NinjaFirewall"
|
39 |
-
|
40 |
-
#: install.php:136
|
41 |
-
msgid ""
|
42 |
-
"This installer will help you to make the setup process as quick and easy as "
|
43 |
-
"possible."
|
44 |
-
msgstr ""
|
45 |
-
"Cet installateur va vous aider afin de rendre le processus d'installation "
|
46 |
-
"aussi rapide et facile que possible."
|
47 |
-
|
48 |
-
#: install.php:138
|
49 |
-
msgid ""
|
50 |
-
"Although NinjaFirewall looks like a regular security plugin, it is not. It "
|
51 |
-
"can be installed and configured from the WordPress admin console, but it is "
|
52 |
-
"a stand-alone Web Application Firewall that sits in front of WordPress."
|
53 |
-
msgstr ""
|
54 |
-
"Bien que NinjaFirewall ressemble à toute autre extension pour WordPress, il "
|
55 |
-
"est très différent. Il peut certes être installé et configuré à partir de "
|
56 |
-
"votre Tableau de Bord, mais c'est un pare-feu applicatif autonome qui agit "
|
57 |
-
"en amont de WordPress."
|
58 |
-
|
59 |
-
#: install.php:138
|
60 |
-
msgid ""
|
61 |
-
"It can run in two different modes: <b>Full WAF</b> or <b>WordPress WAF</b> "
|
62 |
-
"modes."
|
63 |
-
msgstr ""
|
64 |
-
"Il peut fonctionner en deux modes différents : <b>Full WAF</b> ou "
|
65 |
-
"<b>WordPress WAF</b>."
|
66 |
-
|
67 |
-
#: install.php:140
|
68 |
-
msgid "Full WAF mode"
|
69 |
-
msgstr "Mode Full WAF"
|
70 |
-
|
71 |
-
#: install.php:142
|
72 |
-
msgid ""
|
73 |
-
"In <b>Full WAF</b> mode, NinjaFirewall will hook, scan, reject or sanitise "
|
74 |
-
"any HTTP and HTTPS request sent to a PHP script before it reaches WordPress, "
|
75 |
-
"its plugins or even the database. All scripts located inside the blog "
|
76 |
-
"installation directories and sub-directories will be protected, including "
|
77 |
-
"those that aren't part of the WordPress package. Even encoded PHP scripts (e."
|
78 |
-
"g., ionCube), potential backdoors and shell scripts (e.g., c99, r57) will be "
|
79 |
-
"filtered by NinjaFirewall."
|
80 |
-
msgstr ""
|
81 |
-
"En mode <b>Full WAF</b>, NinjaFirewall peut intercepter, analyser, nettoyer "
|
82 |
-
"ou rejeter toute requête HTTP ou HTTPS envoyée à un script PHP avant même "
|
83 |
-
"que celle-ci n'atteigne WordPress ou l'une de ses extensions. Tous les "
|
84 |
-
"scripts situés dans le répertoire et sous-répertoires d'installation de "
|
85 |
-
"votre blog seront protégés, y compris ceux qui ne font pas partie de "
|
86 |
-
"WordPress. Même un script PHP encodé (par ex. ionCube), une éventuelle porte "
|
87 |
-
"dérobée ou un script shell (par ex. c99, r57 ) installés par un pirate "
|
88 |
-
"seront filtrés par NinjaFirewall."
|
89 |
-
|
90 |
-
#: install.php:144
|
91 |
-
#, php-format
|
92 |
-
msgid ""
|
93 |
-
"That makes it a true firewall and gives you the highest possible level of "
|
94 |
-
"protection: <a href=\"%s\" title=\"%s\">security without compromise</a>."
|
95 |
-
msgstr ""
|
96 |
-
"Cela fait de lui un véritable pare-feu applicatif et vous offre le niveau de "
|
97 |
-
"protection le plus élevé possible : <a href=\"%s\" title=\"%s\">La sécurité "
|
98 |
-
"sans aucun compromis</a>."
|
99 |
-
|
100 |
-
#: install.php:146
|
101 |
-
#, php-format
|
102 |
-
msgid ""
|
103 |
-
"To run NinjaFirewall in <b>Full WAF</b> mode, your server must allow the use "
|
104 |
-
"of the <code>auto_prepend_file</code> PHP directive. It is required to "
|
105 |
-
"instruct the PHP interpreter to load the firewall before WordPress or any "
|
106 |
-
"other script. Most of the time it works right out of the box, or may require "
|
107 |
-
"<a href=\"%s\" title=\"%s\">some very little tweaks</a>. But in a few cases, "
|
108 |
-
"mostly because of some shared hosting plans restrictions, it may simply not "
|
109 |
-
"work at all."
|
110 |
-
msgstr ""
|
111 |
-
"Pour installer NinjaFirewall en mode <b>Full WAF</b>, votre serveur doit "
|
112 |
-
"autoriser l'utilisation de la directive PHP <code>auto_prepend_file</code>. "
|
113 |
-
"Celle-ci est nécessaire pour forcer l'interpréteur PHP à charger le pare-feu "
|
114 |
-
"avant WordPress ou tout autre script. La plupart du temps, l'installation "
|
115 |
-
"fonctionne sans aucun problème ou, peut nécessiter <a href=\"%s\" title=\"%s"
|
116 |
-
"\">quelques petits ajustements</a>. Mais dans quelques cas, principalement "
|
117 |
-
"en raison de certaines restrictions d'hébergement partagé, il se peut que "
|
118 |
-
"l'installation ne puisse pas fonctionner du tout."
|
119 |
-
|
120 |
-
#: install.php:148 install.php:164
|
121 |
-
msgid "WordPress WAF mode"
|
122 |
-
msgstr "Mode WordPress WAF"
|
123 |
-
|
124 |
-
#: install.php:150
|
125 |
-
msgid ""
|
126 |
-
"The <b>WordPress WAF</b> mode requires to load NinjaFirewall via the "
|
127 |
-
"WordPress wp-config.php script. This process makes it easy to setup and the "
|
128 |
-
"installation will always be successful, regardless of your hosting plan "
|
129 |
-
"restrictions."
|
130 |
-
msgstr ""
|
131 |
-
"Le mode <b>WordPress WAF</b> nécessite de charger NinjaFirewall via le "
|
132 |
-
"script wp-config.php de WordPress. L'installation est très simple et "
|
133 |
-
"toujours couronnée de succès et ce, quelles que soient les restrictions de "
|
134 |
-
"votre plan hébergement."
|
135 |
-
|
136 |
-
#: install.php:150
|
137 |
-
msgid ""
|
138 |
-
"NinjaFirewall will still load before WordPress, its plugins and the database "
|
139 |
-
"and will run as fast as the <b>Full WAF</b> mode."
|
140 |
-
msgstr ""
|
141 |
-
"NinjaFirewall se chargera là encore avant WordPress, ses extensions et la "
|
142 |
-
"base de données, et ses performances seront identiques à celles du mode "
|
143 |
-
"<b>Full WAF</b>."
|
144 |
-
|
145 |
-
#: install.php:152
|
146 |
-
msgid ""
|
147 |
-
"However, the downside of this mode is that NinjaFirewall will be able to "
|
148 |
-
"hook and filter HTTP requests sent to WordPress only. A few features such as "
|
149 |
-
"File Guard, the URL Access Control and Web Filter (WP+ Edition only) will be "
|
150 |
-
"limited."
|
151 |
-
msgstr ""
|
152 |
-
"Toutefois, l'inconvénient de ce mode est que NinjaFirewall ne pourra "
|
153 |
-
"intercepter, analyser, nettoyer ou rejeter que les requêtes HTTP ou HTTPS "
|
154 |
-
"directement adressées à WordPress uniquement, et non plus à tout autre "
|
155 |
-
"script PHP ou application tierce. Certaines fonctionnalités telles que File "
|
156 |
-
"Guard, le contrôle d'accès par URL et Web Filter (WP+ Edition uniquement) "
|
157 |
-
"seront limitées."
|
158 |
-
|
159 |
-
#: install.php:154
|
160 |
-
msgid ""
|
161 |
-
"Despite being less powerful than the <b>Full WAF</b> mode, it still offers a "
|
162 |
-
"level of protection and performance higher than any other security plugin."
|
163 |
-
msgstr ""
|
164 |
-
"Bien que moins puissant que <b>Full WAF</b>, le mode <b>WordPress WAF</b> "
|
165 |
-
"offre tout de même des performances et un niveau de protection supérieurs "
|
166 |
-
"aux autres extensions de sécurité pour WordPress disponibles sur le marché."
|
167 |
-
|
168 |
-
#: install.php:156 ninjafirewall.php:464
|
169 |
-
msgid "Installation"
|
170 |
-
msgstr "Installation"
|
171 |
-
|
172 |
-
#: install.php:158
|
173 |
-
msgid ""
|
174 |
-
"We recommend to select the <b>Full WAF</b> mode option first. If it fails, "
|
175 |
-
"this installer will let you switch to the <b>WordPress WAF</b> mode easily."
|
176 |
-
msgstr ""
|
177 |
-
"Nous vous recommandons de sélectionner d'abord l'option <b>Full WAF</b>. Si "
|
178 |
-
"elle échoue, ce programme d'installation vous proposera de passer facilement "
|
179 |
-
"au mode <b>WordPress WAF</b>."
|
180 |
-
|
181 |
-
#: install.php:162
|
182 |
-
msgid "Full WAF mode (recommended)"
|
183 |
-
msgstr "Mode Full WAF (recommandé)"
|
184 |
-
|
185 |
-
#: install.php:166
|
186 |
-
msgid ""
|
187 |
-
"Enter the email address where NinjaFirewall will send notifications and "
|
188 |
-
"reports:"
|
189 |
-
msgstr ""
|
190 |
-
"Entrez l'adresse e-mail où NinjaFirewall enverra ses notifications et "
|
191 |
-
"rapports :"
|
192 |
-
|
193 |
-
#: install.php:168 lib/install_fullwaf.php:45 lib/install_fullwaf.php:235
|
194 |
-
#: lib/install_fullwaf.php:489 lib/install_wpwaf.php:140
|
195 |
-
msgid "Next Step"
|
196 |
-
msgstr "Étape suivante"
|
197 |
-
|
198 |
-
#: install.php:175
|
199 |
-
msgid "Privacy policy"
|
200 |
-
msgstr "Politique de confidentialité"
|
201 |
-
|
202 |
-
#: install.php:177 lib/about.php:198 lib/help.php:460
|
203 |
-
msgid ""
|
204 |
-
"Your website can run NinjaFirewall and be compliant with the General Data "
|
205 |
-
"Protection Regulation (GDPR). For more info, please visit our blog:"
|
206 |
-
msgstr ""
|
207 |
-
"NinjaFirewall est conforme à la réglementation générale sur la protection "
|
208 |
-
"des données (RGPD). Pour plus d'informations, veuillez visiter notre blog :"
|
209 |
-
|
210 |
-
#: install.php:198
|
211 |
-
#, php-format
|
212 |
-
msgid ""
|
213 |
-
"NinjaFirewall cannot create its <code>nfwlog/</code>log and cache folder; "
|
214 |
-
"please make sure that the <code>%s</code> directory is writable"
|
215 |
-
msgstr ""
|
216 |
-
"NinjaFirewall ne peut pas créer le répertoire <code>nfwlog/</code>; veuillez "
|
217 |
-
"vous assurer que le répertoire <code>%s</code> est accessible en écriture"
|
218 |
-
|
219 |
-
#: install.php:232
|
220 |
-
msgid ""
|
221 |
-
"This is NinjaFirewall's logs, loader and cache directory. DO NOT alter or "
|
222 |
-
"remove it as long as NinjaFirewall is running!"
|
223 |
-
msgstr ""
|
224 |
-
"Ce répertoire est utilisé par NinjaFirewall. Veuillez NE PAS le supprimer "
|
225 |
-
"tant que NinjaFirewall est installé !"
|
226 |
-
|
227 |
-
#: install.php:258 lib/firewall_policies.php:107 lib/help.php:168
|
228 |
-
#: lib/install_fullwaf.php:33 lib/install_fullwaf.php:141 ninjafirewall.php:489
|
229 |
-
msgid "Firewall Policies"
|
230 |
-
msgstr "Politiques du Pare-feu"
|
231 |
-
|
232 |
-
#: install.php:266
|
233 |
-
msgid "Try again"
|
234 |
-
msgstr "Essayer à nouveau"
|
235 |
-
|
236 |
-
#: install.php:284
|
237 |
-
msgid "Quick Start, FAQ & Troubleshooting Guide"
|
238 |
-
msgstr "Guide d'Utilisation, d'Installation et de Dépannage"
|
239 |
-
|
240 |
-
#: install.php:285
|
241 |
-
msgid "Hi,"
|
242 |
-
msgstr "Bonjour,"
|
243 |
-
|
244 |
-
#: install.php:287
|
245 |
-
msgid ""
|
246 |
-
"This is NinjaFirewall's installer. Below are some helpful info and links you "
|
247 |
-
"may consider reading before using NinjaFirewall."
|
248 |
-
msgstr ""
|
249 |
-
"Je suis l'installateur de NinjaFirewall. Voici quelques informations et "
|
250 |
-
"liens qui pourraient vous être utiles (en langue anglaise) :"
|
251 |
-
|
252 |
-
#: install.php:289
|
253 |
-
msgid "Must Read:"
|
254 |
-
msgstr "A lire aussi :"
|
255 |
-
|
256 |
-
#: install.php:291
|
257 |
-
msgid "-Securing WordPress with NinjaFirewall. A step by step tutorial:"
|
258 |
-
msgstr ""
|
259 |
-
"-Sécurisation de WordPress avec NinjaFirewall. Un tutoriel étape par étape :"
|
260 |
-
|
261 |
-
#: install.php:294
|
262 |
-
msgid "-An introduction to NinjaFirewall filtering engine:"
|
263 |
-
msgstr "-Présentation du moteur de filtrage de NinjaFirewall :"
|
264 |
-
|
265 |
-
#: install.php:297
|
266 |
-
msgid "-Testing NinjaFirewall without blocking your visitors:"
|
267 |
-
msgstr "-Tester NinjaFirewall sans bloquer vos visiteurs :"
|
268 |
-
|
269 |
-
#: install.php:300
|
270 |
-
msgid "-Add your own code to the firewall: the \".htninja\" file:"
|
271 |
-
msgstr "-Ajoutez votre code au pare-feu: le fichier \".htninja\" :"
|
272 |
-
|
273 |
-
#: install.php:303
|
274 |
-
msgid "-Restricting access to NinjaFirewall settings:"
|
275 |
-
msgstr "-Restreindre l'accès à la configuration de NinjaFirewall :"
|
276 |
-
|
277 |
-
#: install.php:306
|
278 |
-
msgid "-Upgrading to PHP 7 with NinjaFirewall installed:"
|
279 |
-
msgstr "-Mise à niveau de PHP 5 vers PHP 7 avec NinjaFirewall installé :"
|
280 |
-
|
281 |
-
#: install.php:309
|
282 |
-
msgid "-Keep your blog protected against the latest vulnerabilities:"
|
283 |
-
msgstr "-Gardez votre blog protégé contre les dernières vulnérabilités :"
|
284 |
-
|
285 |
-
#: install.php:312
|
286 |
-
msgid "-Test your website security with our online scanner:"
|
287 |
-
msgstr "- Testez la sécurité de votre site avec notre scanner en ligne :"
|
288 |
-
|
289 |
-
#: install.php:315
|
290 |
-
msgid "-NinjaFirewall Referral Program:"
|
291 |
-
msgstr "-Programme de parrainage de NinjaFirewall :"
|
292 |
-
|
293 |
-
#: install.php:318
|
294 |
-
msgid "Troubleshooting:"
|
295 |
-
msgstr "Dépannage :"
|
296 |
-
|
297 |
-
#: install.php:321
|
298 |
-
msgid "-Locked out of your site / Fatal error / WordPress crash?"
|
299 |
-
msgstr ""
|
300 |
-
"-Votre site n'est plus accessible / Erreur fatale / WordPress a planté ?"
|
301 |
-
|
302 |
-
#: install.php:322
|
303 |
-
msgid "-Failed installation (\"Error: The firewall is not loaded\")?"
|
304 |
-
msgstr ""
|
305 |
-
"-Échec de l'installation (\"Erreur : Le pare-feu n'est pas activé.\") ?"
|
306 |
-
|
307 |
-
#: install.php:323
|
308 |
-
msgid "-Blank page after INSTALLING NinjaFirewall?"
|
309 |
-
msgstr "-Page blanche après l'INSTALLATION de NinjaFirewall ?"
|
310 |
-
|
311 |
-
#: install.php:324
|
312 |
-
msgid "-Blank page after UNINSTALLING NinjaFirewall?"
|
313 |
-
msgstr "-Page blanche après la DÉSINSTALLATION de NinjaFirewall ?"
|
314 |
-
|
315 |
-
#: install.php:325
|
316 |
-
msgid "-500 Internal Server Error?"
|
317 |
-
msgstr "-500 Internal Server Error ?"
|
318 |
-
|
319 |
-
#: install.php:326
|
320 |
-
msgid "-\"Cannot connect to WordPress database\" error message?"
|
321 |
-
msgstr "-Impossible de se connecter à la base de données WordPress ?"
|
322 |
-
|
323 |
-
#: install.php:327
|
324 |
-
msgid "-How to disable NinjaFirewall?"
|
325 |
-
msgstr "-Comment désactiver NinjaFirewall ?"
|
326 |
-
|
327 |
-
#: install.php:328
|
328 |
-
msgid "-Lost password (brute-force protection)?"
|
329 |
-
msgstr ""
|
330 |
-
"-Vous avez perdu le mot de passe de la protection contre les attaques par "
|
331 |
-
"force brute ?"
|
332 |
-
|
333 |
-
#: install.php:329
|
334 |
-
msgid "-Blocked visitors (see below)?"
|
335 |
-
msgstr "-Vos visiteurs sont bloqués par erreur (voir ci-dessous) ?"
|
336 |
-
|
337 |
-
#: install.php:330
|
338 |
-
msgid "-Exporting NinjaFirewall's configuration"
|
339 |
-
msgstr "-Exporter la configuration de NinjaFirewall"
|
340 |
-
|
341 |
-
#: install.php:332
|
342 |
-
msgid "-NinjaFirewall (WP Edition) troubleshooter script"
|
343 |
-
msgstr "-Script de dépannage NinjaFirewall (WP Edition)"
|
344 |
-
|
345 |
-
#: install.php:334
|
346 |
-
msgid "-Rename this file to \"wp-check.php\"."
|
347 |
-
msgstr "-Renommez ce fichier en \"wp-check.php\"."
|
348 |
-
|
349 |
-
#: install.php:335
|
350 |
-
msgid "-Upload it into your WordPress root folder."
|
351 |
-
msgstr "-Téléchargez-le dans le repertoire racine de WordPress."
|
352 |
-
|
353 |
-
#: install.php:336
|
354 |
-
msgid "-Goto http://YOUR WEBSITE/wp-check.php."
|
355 |
-
msgstr "-Rendez-vous sur http://VOTRE_SITE/wp-check.php."
|
356 |
-
|
357 |
-
#: install.php:337
|
358 |
-
msgid "-Delete it afterwards."
|
359 |
-
msgstr "-Supprimez-le lorsque vous avez fini."
|
360 |
-
|
361 |
-
#: install.php:339
|
362 |
-
msgid "FAQ:"
|
363 |
-
msgstr "FAQ :"
|
364 |
-
|
365 |
-
#: install.php:342
|
366 |
-
msgid ""
|
367 |
-
"-Why is NinjaFirewall different from other security plugins for WordPress?"
|
368 |
-
msgstr ""
|
369 |
-
"-En quoi NinjaFirewall est-il différent des autres extensions de sécurité "
|
370 |
-
"pour WordPress ?"
|
371 |
-
|
372 |
-
#: install.php:343
|
373 |
-
msgid "-Do I need root privileges to install NinjaFirewall?"
|
374 |
-
msgstr ""
|
375 |
-
"-Ai-je besoin d'avoir les privilèges root pour installer NinjaFirewall ?"
|
376 |
-
|
377 |
-
#: install.php:344
|
378 |
-
msgid "-Does it work with Nginx?"
|
379 |
-
msgstr "-Est-ce qu'il fonctionne avec Nginx ?"
|
380 |
-
|
381 |
-
#: install.php:345
|
382 |
-
msgid "-Do I need to alter my PHP scripts?"
|
383 |
-
msgstr "-Dois-je modifier mes script PHP ?"
|
384 |
-
|
385 |
-
#: install.php:346
|
386 |
-
msgid ""
|
387 |
-
"-Will NinjaFirewall detect the correct IP of my visitors if I am behind a "
|
388 |
-
"CDN service like Cloudflare or Incapsula?"
|
389 |
-
msgstr ""
|
390 |
-
"-Est-ce que NinjaFirewall détectera la bonne adresse IP de mes visiteurs si "
|
391 |
-
"j'utilise un service CDN comme Cloudflare ou Incapsula ?"
|
392 |
-
|
393 |
-
#: install.php:347
|
394 |
-
msgid ""
|
395 |
-
"-I moved my wp-config.php file to another directory. Will it work with "
|
396 |
-
"NinjaFirewall?"
|
397 |
-
msgstr ""
|
398 |
-
"-J'ai déplacé mon fichier wp-config.php dans un autre répertoire. "
|
399 |
-
"NinjaFirewall va-t-il fonctionner ?"
|
400 |
-
|
401 |
-
#: install.php:348
|
402 |
-
msgid "-Will it slow down my site?"
|
403 |
-
msgstr "-Est-ce qu'il va ralentir mon site ?"
|
404 |
-
|
405 |
-
#: install.php:349
|
406 |
-
msgid "-Is there a Microsoft Windows version?"
|
407 |
-
msgstr "-Existe-t-il une version pour Microsoft Windows ?"
|
408 |
-
|
409 |
-
#: install.php:350
|
410 |
-
msgid "-Can I add/write my own security rules?"
|
411 |
-
msgstr "-Puis-je ajouter / écrire mes propres règles de sécurité ?"
|
412 |
-
|
413 |
-
#: install.php:351
|
414 |
-
msgid "-Can I migrate my site(s) with NinjaFirewall installed?"
|
415 |
-
msgstr ""
|
416 |
-
"-Est-ce que je peux migrer mon site lorsque NinjaFirewall est installé ?"
|
417 |
-
|
418 |
-
#: install.php:353
|
419 |
-
msgid "Help & Support Links:"
|
420 |
-
msgstr "Aide & Support :"
|
421 |
-
|
422 |
-
#: install.php:354
|
423 |
-
msgid ""
|
424 |
-
"-Each page of NinjaFirewall includes a contextual help: click on the \"Help"
|
425 |
-
"\" menu tab located in the upper right corner of the corresponding page."
|
426 |
-
msgstr ""
|
427 |
-
"-Si vous avez besoin d'aide, cliquez sur l'onglet \"Aide\" situé dans le "
|
428 |
-
"coin supérieur droit de chaque page."
|
429 |
-
|
430 |
-
#: install.php:355
|
431 |
-
msgid "-Online documentation is also available here:"
|
432 |
-
msgstr "-Une documentation est aussi disponible en ligne :"
|
433 |
-
|
434 |
-
#: install.php:356
|
435 |
-
msgid "-The WordPress support forum:"
|
436 |
-
msgstr "-Le forum de WordPress :"
|
437 |
-
|
438 |
-
#: install.php:357
|
439 |
-
msgid "-Updates info are available via Twitter:"
|
440 |
-
msgstr "-Info sur les mises à jour via Twitter :"
|
441 |
-
|
442 |
-
#: install.php:378
|
443 |
-
msgid "Error: The firewall is not loaded."
|
444 |
-
msgstr "Erreur : Le pare-feu n'est pas activé."
|
445 |
-
|
446 |
-
#: install.php:379
|
447 |
-
msgid "Suggestions:"
|
448 |
-
msgstr "Suggestions :"
|
449 |
-
|
450 |
-
#: install.php:383
|
451 |
-
msgid ""
|
452 |
-
"You selected <code>Apache + PHP module</code> as your HTTP server and PHP "
|
453 |
-
"SAPI. Maybe your HTTP server is <code>Apache + CGI/FastCGI</code>?"
|
454 |
-
msgstr ""
|
455 |
-
"Vous avez sélectionné <code>Apache + PHP module</code> comme serveur HTTP et "
|
456 |
-
"PHP SAPI. Peut-être que votre serveur utilise <code>Apache + CGI/FastCGI</"
|
457 |
-
"code> ?"
|
458 |
-
|
459 |
-
#: install.php:385 install.php:413
|
460 |
-
msgid ""
|
461 |
-
"You can click the \"Go Back\" button and try to select another HTTP server "
|
462 |
-
"type."
|
463 |
-
msgstr ""
|
464 |
-
"Vous pouvez cliquer sur le bouton \"Retour\" et essayer de sélectionner un "
|
465 |
-
"autre type de serveur HTTP."
|
466 |
-
|
467 |
-
#: install.php:389
|
468 |
-
msgid ""
|
469 |
-
"You have selected LiteSpeed as your HTTP server. Did you enable the "
|
470 |
-
"\"AllowOverride\" directive from its admin panel? Make sure it is enabled, "
|
471 |
-
"restart LiteSpeed and then, click the \"Test Again\" button below."
|
472 |
-
msgstr ""
|
473 |
-
"Vous avez sélectionné LiteSpeed comme serveur HTTP. Avez-vous activé la "
|
474 |
-
"directive \"AllowOverride\" à partir de son panneau d'administration ? "
|
475 |
-
"Assurez-vous qu'elle est activée, redémarrez LiteSpeed, puis cliquez sur le "
|
476 |
-
"bouton \"Tester à nouveau\" ci-dessous."
|
477 |
-
|
478 |
-
#: install.php:391 install.php:402
|
479 |
-
msgid "Test Again"
|
480 |
-
msgstr "Tester à nouveau"
|
481 |
-
|
482 |
-
#: install.php:400
|
483 |
-
msgid ""
|
484 |
-
"You have selected <code>.user.ini</code> as your PHP initialization file. "
|
485 |
-
"Unlike <code>php.ini</code>, <code>.user.ini</code> files are not reloaded "
|
486 |
-
"immediately by PHP, but every five minutes. If this is your own server, "
|
487 |
-
"restart Apache (or PHP-FPM if applicable) to force PHP to reload it, "
|
488 |
-
"otherwise please <strong>wait up to five minutes</strong> and then, click "
|
489 |
-
"the \"Test Again\" button below."
|
490 |
-
msgstr ""
|
491 |
-
"Vous avez sélectionné <code>.user.ini</code> comme fichier d'initialisation "
|
492 |
-
"de PHP. Contrairement aux fichiers <code>php.ini</code>, après leur "
|
493 |
-
"modification les fichiers <code>.user.ini</code> ne sont pas rechargés "
|
494 |
-
"immédiatement par PHP, mais environ toutes les cinq minutes. Si ceci est "
|
495 |
-
"votre serveur, redémarrez Apache (ou PHP-FPM le cas échéant) afin de forcer "
|
496 |
-
"PHP à le recharger, sinon veuillez <strong>patienter jusqu'à cinq minutes</"
|
497 |
-
"strong> avant de cliquer sur le bouton \"Tester à nouveau\" ci-dessous."
|
498 |
-
|
499 |
-
#: install.php:411
|
500 |
-
msgid ""
|
501 |
-
"You selected <code>Apache + CGI/FastCGI</code> as your HTTP server and PHP "
|
502 |
-
"SAPI. Maybe your HTTP server is <code>Apache + PHP module</code>?"
|
503 |
-
msgstr ""
|
504 |
-
"Vous avez sélectionné <code>Apache + CGI/FastCGI</code> comme serveur HTTP "
|
505 |
-
"et PHP SAPI. Peut-être que votre serveur utilise <code>Apache + PHP module</"
|
506 |
-
"code> ?"
|
507 |
-
|
508 |
-
#: install.php:416
|
509 |
-
msgid "Maybe you did not select the correct PHP INI ?"
|
510 |
-
msgstr ""
|
511 |
-
"Peut-être que vous n'avez pas sélectionné le bon fichier PHP INI ?"
|
512 |
-
|
513 |
-
#: install.php:418
|
514 |
-
msgid "You can click the \"Go Back\" button and try to select another one."
|
515 |
-
msgstr ""
|
516 |
-
"Vous pouvez cliquer sur le bouton \"Retour\" et essayer d'en sélectionner un "
|
517 |
-
"autre."
|
518 |
-
|
519 |
-
#: install.php:422
|
520 |
-
msgid "Go Back"
|
521 |
-
msgstr "Retour"
|
522 |
-
|
523 |
-
#: install.php:428
|
524 |
-
#, php-format
|
525 |
-
msgid ""
|
526 |
-
"If none of the above suggestions work, you can still install NinjaFirewall "
|
527 |
-
"in %s mode by clicking the button below. Setup is easy and will always work."
|
528 |
-
msgstr ""
|
529 |
-
"Si aucune des suggestions ci-dessus ne fonctionnent, vous pouvez installer "
|
530 |
-
"NinjaFirewall en mode %s en cliquant sur le bouton ci-dessous. "
|
531 |
-
"L'installation est facile et toujours couronnée de succès."
|
532 |
-
|
533 |
-
#: install.php:433
|
534 |
-
msgid "Switch to the WordPress WAF mode installer »"
|
535 |
-
msgstr "Passer à l'installateur WordPress WAF »"
|
536 |
-
|
537 |
-
#: install.php:437
|
538 |
-
msgid "Need help? Check our blog:"
|
539 |
-
msgstr "Besoin d'aide ? Consultez notre blog :"
|
540 |
-
|
541 |
#: lib/about.php:31
|
542 |
msgid "Error : cannot find changelog :("
|
543 |
msgstr "Erreur: impossible de trouver le fichier changelog :("
|
544 |
|
545 |
-
#: lib/about.php:
|
546 |
msgid "About"
|
547 |
msgstr "À Propos"
|
548 |
|
549 |
-
#: lib/about.php:
|
550 |
msgid "A powerful antivirus<br />scanner for WordPress."
|
551 |
msgstr "Un puissant antivirus<br />pour WordPress."
|
552 |
|
553 |
-
#: lib/about.php:
|
554 |
msgid "Free Download"
|
555 |
msgstr "Télécharger"
|
556 |
|
557 |
-
#: lib/about.php:
|
558 |
msgid "Website Monitoring<br />for just $4.99/month."
|
559 |
msgstr "Surveillance de site<br />à partir de $4.99/mois."
|
560 |
|
561 |
-
#: lib/about.php:
|
562 |
msgid "7-Day Free Trial"
|
563 |
msgstr "Essai Gratuit"
|
564 |
|
565 |
-
#: lib/about.php:
|
566 |
msgid "Malware removal<br />and hack recovery."
|
567 |
msgstr "Nettoyage de site<br />piraté ou infecté."
|
568 |
|
569 |
-
#: lib/about.php:
|
570 |
msgid "Clean Your Site!"
|
571 |
msgstr "Nettoyez votre site"
|
572 |
|
573 |
-
#: lib/about.php:
|
574 |
msgid "Changelog"
|
575 |
msgstr "Changelog"
|
576 |
|
577 |
-
#: lib/about.php:
|
578 |
msgid "Spread the word!"
|
579 |
msgstr "Partagez !"
|
580 |
|
581 |
-
#: lib/about.php:
|
582 |
msgid "Referral Program"
|
583 |
msgstr "Programme de parrainage"
|
584 |
|
585 |
-
#: lib/about.php:
|
586 |
msgid "System Info"
|
587 |
msgstr "Info système"
|
588 |
|
589 |
-
#: lib/about.php:
|
590 |
msgid "GDPR Compliance"
|
591 |
msgstr "Conformité RGPD"
|
592 |
|
593 |
-
#: lib/about.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
594 |
msgid "PHP version"
|
595 |
msgstr "Version PHP"
|
596 |
|
597 |
-
#: lib/about.php:
|
598 |
msgid "HTTP server"
|
599 |
msgstr "Serveur HTTP"
|
600 |
|
601 |
-
#: lib/about.php:
|
602 |
msgid "Operating System"
|
603 |
msgstr "Système d'exploitation"
|
604 |
|
605 |
-
#: lib/about.php:
|
606 |
msgid "Load Average"
|
607 |
msgstr "Charge moyenne"
|
608 |
|
609 |
-
#: lib/about.php:
|
610 |
msgid "RAM"
|
611 |
msgstr "RAM"
|
612 |
|
613 |
-
#: lib/about.php:
|
614 |
msgid "MB free"
|
615 |
msgstr "Mo libres"
|
616 |
|
617 |
-
#: lib/about.php:
|
618 |
msgid "MB total"
|
619 |
msgstr "Mo total"
|
620 |
|
621 |
-
#: lib/about.php:
|
622 |
msgid "Processor"
|
623 |
msgid_plural "Processors"
|
624 |
msgstr[0] "Processeur"
|
625 |
msgstr[1] "Processeurs"
|
626 |
|
627 |
-
#: lib/about.php:
|
628 |
msgid "CPU core:"
|
629 |
msgid_plural "CPU cores:"
|
630 |
msgstr[0] "cœur :"
|
631 |
msgstr[1] "cœurs :"
|
632 |
|
633 |
-
#: lib/about.php:
|
634 |
msgid "CPU model"
|
635 |
msgstr "Modèle CPU"
|
636 |
|
637 |
-
#: lib/about.php:
|
638 |
#, php-format
|
639 |
msgid ""
|
640 |
"By joining our NinjaFirewall Referral Program you can earn up to %s for "
|
@@ -644,7 +134,7 @@ msgstr ""
|
|
644 |
"gagner jusqu'à %s pour chaque paiement effectué par un utilisateur qui "
|
645 |
"achète une licence en utilisant votre lien de parrainage personnel."
|
646 |
|
647 |
-
#: lib/about.php:
|
648 |
#, php-format
|
649 |
msgid ""
|
650 |
"For more info and subscription, please check our <a href=\"%s\">Referral "
|
@@ -653,7 +143,15 @@ msgstr ""
|
|
653 |
"Pour plus d'information, consultez notre page du <a href=\"%s\">Programme de "
|
654 |
"Parrainage</a>."
|
655 |
|
656 |
-
#: lib/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
657 |
msgid "Anti-Malware"
|
658 |
msgstr "Anti-Malware"
|
659 |
|
@@ -694,11 +192,11 @@ msgstr ""
|
|
694 |
msgid "NinjaFirewall Statistics"
|
695 |
msgstr "Statistiques de NinjaFirewall"
|
696 |
|
697 |
-
#: lib/dashboard_widget.php:54 lib/statistics.php:
|
698 |
msgid "Blocked threats"
|
699 |
msgstr "Menaces bloquées"
|
700 |
|
701 |
-
#: lib/dashboard_widget.php:58 lib/statistics.php:
|
702 |
msgid "Threats level"
|
703 |
msgstr "Niveau des menaces"
|
704 |
|
@@ -714,107 +212,111 @@ msgstr "Élevé :"
|
|
714 |
msgid "Medium:"
|
715 |
msgstr "Moyen :"
|
716 |
|
|
|
|
|
|
|
|
|
717 |
#: lib/dashboard_widget.php:86
|
718 |
msgid "View firewall log"
|
719 |
msgstr "Voir le journal du pare-feu"
|
720 |
|
721 |
-
#: lib/event_notifications.php:
|
722 |
msgid "Event Notifications"
|
723 |
msgstr "Notifications d'Événement"
|
724 |
|
725 |
-
#: lib/event_notifications.php:
|
726 |
-
#: lib/firewall_log.php:58 lib/firewall_options.php:
|
727 |
-
#: lib/firewall_policies.php:
|
728 |
-
#: lib/
|
729 |
msgid "Your changes have been saved."
|
730 |
msgstr "Les modifications ont été enregistrées."
|
731 |
|
732 |
-
#: lib/event_notifications.php:
|
733 |
msgid "WordPress admin dashboard"
|
734 |
msgstr "Connexion"
|
735 |
|
736 |
-
#: lib/event_notifications.php:
|
737 |
msgid "Send me an alert whenever"
|
738 |
msgstr "Envoyer une alerte quand"
|
739 |
|
740 |
-
#: lib/event_notifications.php:
|
741 |
msgid "An administrator logs in (default)"
|
742 |
msgstr "Un Administrateur se connecte (défaut)"
|
743 |
|
744 |
-
#: lib/event_notifications.php:
|
745 |
msgid "Someone - user, admin, editor, etc - logs in"
|
746 |
msgstr "Quelqu'un - utilisateur, admin, éditeur etc - se connecte"
|
747 |
|
748 |
-
#: lib/event_notifications.php:
|
749 |
msgid "No, thanks (not recommended)"
|
750 |
msgstr "Non, merci"
|
751 |
|
752 |
-
#: lib/event_notifications.php:
|
753 |
msgid "Plugins"
|
754 |
msgstr "Extensions"
|
755 |
|
756 |
-
#: lib/event_notifications.php:
|
757 |
-
#: lib/event_notifications.php:
|
758 |
msgid "Send me an alert whenever someone"
|
759 |
msgstr "Envoyer une alerte quand quelqu'un"
|
760 |
|
761 |
-
#: lib/event_notifications.php:
|
762 |
msgid "Uploads a plugin (default)"
|
763 |
msgstr "Télécharge une extension (défaut)"
|
764 |
|
765 |
-
#: lib/event_notifications.php:
|
766 |
msgid "Installs a plugin (default)"
|
767 |
msgstr "Installe une extension (défaut)"
|
768 |
|
769 |
-
#: lib/event_notifications.php:
|
770 |
msgid "Activates a plugin"
|
771 |
msgstr "Active une extension"
|
772 |
|
773 |
-
#: lib/event_notifications.php:
|
774 |
msgid "Updates a plugin"
|
775 |
msgstr "Met à jour une extension"
|
776 |
|
777 |
-
#: lib/event_notifications.php:
|
778 |
msgid "Deactivates a plugin (default)"
|
779 |
msgstr "Désactive une extension (défaut)"
|
780 |
|
781 |
-
#: lib/event_notifications.php:
|
782 |
msgid "Deletes a plugin"
|
783 |
msgstr "Supprime une extension"
|
784 |
|
785 |
-
#: lib/event_notifications.php:
|
786 |
msgid "Themes"
|
787 |
msgstr "Thèmes"
|
788 |
|
789 |
-
#: lib/event_notifications.php:
|
790 |
msgid "Uploads a theme (default)"
|
791 |
msgstr "Télécharge un thème (défaut)"
|
792 |
|
793 |
-
#: lib/event_notifications.php:
|
794 |
msgid "Installs a theme (default)"
|
795 |
msgstr "Installe un thème (défaut)"
|
796 |
|
797 |
-
#: lib/event_notifications.php:
|
798 |
msgid "Activates a theme"
|
799 |
msgstr "Active un thème"
|
800 |
|
801 |
-
#: lib/event_notifications.php:
|
802 |
msgid "Deletes a theme"
|
803 |
msgstr "Supprime un thème"
|
804 |
|
805 |
-
#: lib/event_notifications.php:
|
806 |
msgid "Core"
|
807 |
msgstr "WordPress"
|
808 |
|
809 |
-
#: lib/event_notifications.php:
|
810 |
msgid "Updates WordPress (default)"
|
811 |
msgstr "Met à jour WordPress (défaut)"
|
812 |
|
813 |
-
#: lib/event_notifications.php:
|
814 |
msgid "Administrator account"
|
815 |
msgstr "Compte administrateur"
|
816 |
|
817 |
-
#: lib/event_notifications.php:
|
818 |
msgid ""
|
819 |
"An administrator account is created, modified or deleted in the database "
|
820 |
"(default)"
|
@@ -822,82 +324,85 @@ msgstr ""
|
|
822 |
"Un compte Administrateur est crée, modifié ou supprimé dans la base de "
|
823 |
"données (défaut)"
|
824 |
|
825 |
-
#: lib/event_notifications.php:
|
826 |
msgid "A user attempts to gain administrative privileges (default)"
|
827 |
msgstr ""
|
828 |
"Un utilisateur a essayé d'élever ses privilèges pour devenir administrateur "
|
829 |
"du blog (défaut)"
|
830 |
|
831 |
-
#: lib/event_notifications.php:
|
832 |
msgid "Daily report"
|
833 |
msgstr "Rapport quotidien"
|
834 |
|
835 |
-
#: lib/event_notifications.php:
|
836 |
msgid "Send me a daily activity report"
|
837 |
msgstr "Envoyer un rapport d'activité quotidien"
|
838 |
|
839 |
-
#: lib/event_notifications.php:
|
840 |
-
#: lib/
|
841 |
-
#: lib/firewall_policies.php:
|
842 |
-
#: lib/
|
843 |
-
#: lib/
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
#: lib/
|
848 |
-
#: lib/
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
|
|
|
|
|
|
|
853 |
msgid "Log"
|
854 |
msgstr "Journal"
|
855 |
|
856 |
-
#: lib/event_notifications.php:
|
857 |
msgid "Write all events to the firewall log"
|
858 |
msgstr "Enregistrer les événements dans le journal du pare-feu"
|
859 |
|
860 |
-
#: lib/event_notifications.php:
|
861 |
msgid "PHP backtrace"
|
862 |
msgstr "Pile d'exécution de PHP"
|
863 |
|
864 |
-
#: lib/event_notifications.php:
|
865 |
msgid "Attach a PHP backtrace to important notifications"
|
866 |
msgstr ""
|
867 |
"Ajouter aux notifications importantes la pile d'exécution de PHP en pièce "
|
868 |
"jointe"
|
869 |
|
870 |
-
#: lib/event_notifications.php:
|
871 |
msgid "Disable backtrace"
|
872 |
msgstr "Désactiver la pile d'exécution"
|
873 |
|
874 |
-
#: lib/event_notifications.php:
|
875 |
msgid "Low verbosity"
|
876 |
msgstr "Faible verbosité"
|
877 |
|
878 |
-
#: lib/event_notifications.php:
|
879 |
msgid "Medium verbosity (default)"
|
880 |
msgstr "Verbosité moyenne (par défaut)"
|
881 |
|
882 |
-
#: lib/event_notifications.php:
|
883 |
msgid "High verbosity"
|
884 |
msgstr "Verbosité élevée"
|
885 |
|
886 |
-
#: lib/event_notifications.php:
|
887 |
#, php-format
|
888 |
msgid "<a href=\"%s\">Consult our blog</a> for more info."
|
889 |
msgstr ""
|
890 |
"<a href=\"%s\">Consultez notre blog pour plus d'informations à ce sujet</a>."
|
891 |
|
892 |
-
#: lib/event_notifications.php:
|
893 |
msgid "Contact email"
|
894 |
msgstr "Adresse e-mail du contact"
|
895 |
|
896 |
-
#: lib/event_notifications.php:
|
897 |
msgid "Alerts should be sent to"
|
898 |
msgstr "Envoyer les alertes à"
|
899 |
|
900 |
-
#: lib/event_notifications.php:
|
901 |
msgid ""
|
902 |
"Multiple recipients must be comma-separated (e.g., <code>joe@example.org,"
|
903 |
"alice@example.org</code>)."
|
@@ -905,60 +410,60 @@ msgstr ""
|
|
905 |
"Plusieurs destinataires doivent être séparés par des virgules (par ex. "
|
906 |
"<code>joe@example.org,alice@example.org</code>)."
|
907 |
|
908 |
-
#: lib/event_notifications.php:
|
909 |
msgid "Only to me, the Super Admin"
|
910 |
msgstr "Moi uniquement, le Super Admin"
|
911 |
|
912 |
-
#: lib/event_notifications.php:
|
913 |
msgid "default"
|
914 |
msgstr "défaut"
|
915 |
|
916 |
-
#: lib/event_notifications.php:
|
917 |
msgid "To the administrator of the site where originated the alert"
|
918 |
msgstr "L'Administrateur du site d’où provient l'alerte"
|
919 |
|
920 |
-
#: lib/event_notifications.php:
|
921 |
msgid "Other(s):"
|
922 |
msgstr "Autre(s) :"
|
923 |
|
924 |
-
#: lib/event_notifications.php:
|
925 |
msgid "Save Event Notifications"
|
926 |
msgstr "Sauvegarder les options"
|
927 |
|
928 |
-
#: lib/event_notifications.php:
|
929 |
msgid "[NinjaFirewall] Daily Activity Report"
|
930 |
msgstr "[NinjaFirewall] Rapport d'activité quotidien"
|
931 |
|
932 |
-
#: lib/event_notifications.php:
|
933 |
#, php-format
|
934 |
msgid "Daily activity report for: %s"
|
935 |
msgstr "Rapport d'activité quotidien pour : %s"
|
936 |
|
937 |
-
#: lib/event_notifications.php:
|
938 |
msgid "Date Range Processed: Yesterday"
|
939 |
msgstr "Plage de date traitée : Hier"
|
940 |
|
941 |
-
#: lib/event_notifications.php:
|
942 |
msgid "Blocked threats:"
|
943 |
msgstr "Menaces bloquées :"
|
944 |
|
945 |
-
#: lib/event_notifications.php:
|
946 |
msgid "critical:"
|
947 |
msgstr "Critique :"
|
948 |
|
949 |
-
#: lib/event_notifications.php:
|
950 |
msgid "high:"
|
951 |
msgstr "Élevé :"
|
952 |
|
953 |
-
#: lib/event_notifications.php:
|
954 |
msgid "medium:"
|
955 |
msgstr "Moyen :"
|
956 |
|
957 |
-
#: lib/event_notifications.php:
|
958 |
msgid "Blocked brute-force attacks:"
|
959 |
msgstr "Attaques par force brute bloquées :"
|
960 |
|
961 |
-
#: lib/event_notifications.php:
|
962 |
msgid ""
|
963 |
"This notification can be turned off from NinjaFirewall \"Event Notifications"
|
964 |
"\" page."
|
@@ -966,16 +471,16 @@ msgstr ""
|
|
966 |
"Cette notification peut être désactivée depuis la page \"Notifications "
|
967 |
"d’Événement\" de NinjaFirewall."
|
968 |
|
969 |
-
#: lib/event_notifications.php:
|
970 |
-
#: lib/file_check.php:
|
971 |
-
#: lib/utils.php:
|
972 |
msgid "Support forum:"
|
973 |
msgstr "Forum :"
|
974 |
|
975 |
-
#: lib/event_notifications.php:
|
976 |
-
#: lib/file_check.php:
|
977 |
-
#: lib/utils.php:
|
978 |
-
#: lib/utils.php:
|
979 |
#, php-format
|
980 |
msgid ""
|
981 |
"Need more security? Check out our supercharged NinjaFirewall (WP+ Edition): "
|
@@ -1000,7 +505,7 @@ msgstr "L'instantané a bien été supprimé."
|
|
1000 |
msgid "You must create a snapshot first."
|
1001 |
msgstr "Vous devez d'abord créer un instantané."
|
1002 |
|
1003 |
-
#: lib/file_check.php:104 lib/file_check.php:
|
1004 |
msgid "NinjaFirewall detected that changes were made to your files."
|
1005 |
msgstr "NinjaFirewall a détecté des changements dans vos fichiers."
|
1006 |
|
@@ -1008,7 +513,7 @@ msgstr "NinjaFirewall a détecté des changements dans vos fichiers."
|
|
1008 |
msgid "No changes detected."
|
1009 |
msgstr "Aucun changement n'a été détecté."
|
1010 |
|
1011 |
-
#: lib/file_check.php:129 lib/help.php:
|
1012 |
msgid "File Check"
|
1013 |
msgstr "File Check"
|
1014 |
|
@@ -1022,11 +527,11 @@ msgstr ""
|
|
1022 |
msgid "Default: %s"
|
1023 |
msgstr "Défaut : %s"
|
1024 |
|
1025 |
-
#: lib/file_check.php:158 lib/file_guard.php:
|
1026 |
msgid "Exclude the following files/folders (optional)"
|
1027 |
msgstr "Exclure les fichiers / dossiers suivants (optionnel)"
|
1028 |
|
1029 |
-
#: lib/file_check.php:159 lib/file_guard.php:
|
1030 |
msgid "e.g.,"
|
1031 |
msgstr "par ex."
|
1032 |
|
@@ -1038,186 +543,174 @@ msgstr ""
|
|
1038 |
"Chaîne de caractères complète ou partielle, sensible à la casse. Plusieurs "
|
1039 |
"valeurs doivent être séparées par des virgules"
|
1040 |
|
1041 |
-
#: lib/file_check.php:
|
1042 |
msgid "Do not follow symbolic links (default)"
|
1043 |
msgstr "Ne pas suivre les liens symboliques (défaut)"
|
1044 |
|
1045 |
-
#: lib/file_check.php:
|
1046 |
msgid "Create Snapshot"
|
1047 |
msgstr "Créer un Instantané"
|
1048 |
|
1049 |
-
#: lib/file_check.php:
|
1050 |
-
msgid "Delete the current snapshot?"
|
1051 |
-
msgstr "Supprimer l'instantané actuel ?"
|
1052 |
-
|
1053 |
-
#: lib/file_check.php:311
|
1054 |
msgid "Last snapshot"
|
1055 |
msgstr "Dernier instantané"
|
1056 |
|
1057 |
-
#: lib/file_check.php:
|
1058 |
#, php-format
|
1059 |
msgid "Created on: %s"
|
1060 |
msgstr "Créé le : %s"
|
1061 |
|
1062 |
-
#: lib/file_check.php:
|
1063 |
#, php-format
|
1064 |
msgid "Total files: %s "
|
1065 |
msgstr "Nombre de fichiers : %s "
|
1066 |
|
1067 |
-
#: lib/file_check.php:
|
1068 |
msgid "Directory:"
|
1069 |
msgstr "Répertoire :"
|
1070 |
|
1071 |
-
#: lib/file_check.php:
|
1072 |
msgid "Exclusion:"
|
1073 |
msgstr "Exclusion :"
|
1074 |
|
1075 |
-
#: lib/file_check.php:
|
1076 |
msgid "Symlinks:"
|
1077 |
msgstr "Lien symboliques :"
|
1078 |
|
1079 |
-
#: lib/file_check.php:
|
1080 |
msgid "follow"
|
1081 |
msgstr "suivre"
|
1082 |
|
1083 |
-
#: lib/file_check.php:
|
1084 |
msgid "do not follow"
|
1085 |
msgstr "ne pas suivre"
|
1086 |
|
1087 |
-
#: lib/file_check.php:
|
1088 |
#, php-format
|
1089 |
msgid "Processing time: %s seconds"
|
1090 |
msgstr "Temps de traitement : %s secondes"
|
1091 |
|
1092 |
-
#: lib/file_check.php:
|
1093 |
msgid "Download Snapshot"
|
1094 |
msgstr "Télécharger l'instantané"
|
1095 |
|
1096 |
-
#: lib/file_check.php:
|
1097 |
msgid "Delete Snapshot"
|
1098 |
msgstr "Supprimer l'instantané"
|
1099 |
|
1100 |
-
#: lib/file_check.php:
|
1101 |
msgid "Last changes"
|
1102 |
msgstr "Dernières modifications"
|
1103 |
|
1104 |
-
#: lib/file_check.php:
|
1105 |
#, php-format
|
1106 |
msgid "New files: %s"
|
1107 |
msgstr "Nouveaux fichiers : %s"
|
1108 |
|
1109 |
-
#: lib/file_check.php:
|
1110 |
#, php-format
|
1111 |
msgid "Deleted files: %s"
|
1112 |
msgstr "Fichiers supprimés : %s"
|
1113 |
|
1114 |
-
#: lib/file_check.php:
|
1115 |
#, php-format
|
1116 |
msgid "Modified files: %s"
|
1117 |
msgstr "Fichiers modifiés : %s"
|
1118 |
|
1119 |
-
#: lib/file_check.php:
|
1120 |
msgid "View Changes"
|
1121 |
msgstr "Voir les Modifications"
|
1122 |
|
1123 |
-
#: lib/file_check.php:
|
1124 |
msgid "Download Changes"
|
1125 |
msgstr "Télécharger les Modifications"
|
1126 |
|
1127 |
-
#: lib/file_check.php:
|
1128 |
msgid "Click a file to get more info about it."
|
1129 |
msgstr "Cliquez sur un fichier pour obtenir plus d'informations à son sujet."
|
1130 |
|
1131 |
-
#: lib/file_check.php:
|
1132 |
msgid "New files:"
|
1133 |
msgstr "Nouveaux fichiers :"
|
1134 |
|
1135 |
-
#: lib/file_check.php:
|
1136 |
msgid "Size"
|
1137 |
msgstr "Taille"
|
1138 |
|
1139 |
-
#: lib/file_check.php:
|
1140 |
msgid "Access"
|
1141 |
msgstr "Accès"
|
1142 |
|
1143 |
-
#: lib/file_check.php:
|
1144 |
msgid "Uid / Gid"
|
1145 |
msgstr "Uid / Gid"
|
1146 |
|
1147 |
-
#: lib/file_check.php:
|
1148 |
msgid "Modify"
|
1149 |
msgstr "Modification"
|
1150 |
|
1151 |
-
#: lib/file_check.php:
|
1152 |
msgid "Change"
|
1153 |
msgstr "Changement"
|
1154 |
|
1155 |
-
#: lib/file_check.php:
|
1156 |
msgid "Deleted files:"
|
1157 |
msgstr "Fichiers supprimés :"
|
1158 |
|
1159 |
-
#: lib/file_check.php:
|
1160 |
msgid "Modified files:"
|
1161 |
msgstr "Fichiers modifiés :"
|
1162 |
|
1163 |
-
#: lib/file_check.php:
|
1164 |
msgid "Old"
|
1165 |
msgstr "Ancien"
|
1166 |
|
1167 |
-
#: lib/file_check.php:
|
1168 |
msgid "New"
|
1169 |
msgstr "Nouveau"
|
1170 |
|
1171 |
-
#: lib/file_check.php:
|
1172 |
msgid "None"
|
1173 |
msgstr "Aucune"
|
1174 |
|
1175 |
-
#: lib/file_check.php:
|
1176 |
msgid "Scan System For File Changes"
|
1177 |
msgstr "Lancer l'analyse des fichiers"
|
1178 |
|
1179 |
-
#: lib/file_check.php:
|
1180 |
msgid "Options"
|
1181 |
msgstr "Options"
|
1182 |
|
1183 |
-
#: lib/file_check.php:
|
1184 |
#, php-format
|
1185 |
msgid ""
|
1186 |
-
"It seems that %s is
|
1187 |
"otherwise NinjaFirewall scheduled scans will not work."
|
1188 |
msgstr ""
|
1189 |
"Il semble que %s est activé. Assurez vous de pouvoir exécuter WP-Cron, sinon "
|
1190 |
"File Check ne pourra pas se lancer automatiquement."
|
1191 |
|
1192 |
-
#: lib/file_check.php:
|
1193 |
msgid "Enable scheduled scans"
|
1194 |
msgstr "Lancer File Check automatiquement"
|
1195 |
|
1196 |
-
#: lib/file_check.php:
|
1197 |
-
#: lib/firewall_policies.php:479 lib/firewall_policies.php:489
|
1198 |
-
#: lib/firewall_policies.php:499 lib/firewall_policies.php:509
|
1199 |
-
#: lib/firewall_policies.php:579 lib/firewall_policies.php:622
|
1200 |
-
#: lib/firewall_policies.php:654 lib/firewall_policies.php:692
|
1201 |
-
#: lib/firewall_policies.php:780 lib/firewall_policies.php:800
|
1202 |
-
#: lib/firewall_policies.php:843 lib/firewall_policies.php:973
|
1203 |
-
#: lib/firewall_policies.php:987 lib/firewall_policies.php:1012
|
1204 |
-
#: lib/firewall_policies.php:1220 lib/login_protection.php:295
|
1205 |
msgid "No (default)"
|
1206 |
msgstr "Non (défaut)"
|
1207 |
|
1208 |
-
#: lib/file_check.php:
|
1209 |
msgid "Hourly"
|
1210 |
msgstr "Une fois par heure"
|
1211 |
|
1212 |
-
#: lib/file_check.php:
|
1213 |
msgid "Twicedaily"
|
1214 |
msgstr "Deux fois par jour"
|
1215 |
|
1216 |
-
#: lib/file_check.php:
|
1217 |
msgid "Daily"
|
1218 |
msgstr "Tous les jours"
|
1219 |
|
1220 |
-
#: lib/file_check.php:
|
1221 |
#, php-format
|
1222 |
msgid ""
|
1223 |
"Next scan will start in approximately %s day(s), %s hour(s), %s minute(s) "
|
@@ -1226,7 +719,7 @@ msgstr ""
|
|
1226 |
"La prochaine analyse commencera dans %s jour(s), %s heure(s), %s minute(s) "
|
1227 |
"et %s seconde(s)."
|
1228 |
|
1229 |
-
#: lib/file_check.php:
|
1230 |
msgid ""
|
1231 |
"The next scheduled scan date is in the past! WordPress wp-cron may not be "
|
1232 |
"working or may have been disabled."
|
@@ -1234,119 +727,115 @@ msgstr ""
|
|
1234 |
"La date de la prochaine analyse est dans le passé ! Essayez de "
|
1235 |
"recharger cette page, sinon vérifiez que WP-Cron n'a pas été désactivé."
|
1236 |
|
1237 |
-
#: lib/file_check.php:
|
1238 |
msgid "Scheduled scan report"
|
1239 |
msgstr "Rapport d'analyse"
|
1240 |
|
1241 |
-
#: lib/file_check.php:
|
1242 |
msgid "Send me a report by email only if changes are detected (default)"
|
1243 |
msgstr ""
|
1244 |
"Envoyez-moi un rapport uniquement si des changements ont été détectés "
|
1245 |
"(défaut)"
|
1246 |
|
1247 |
-
#: lib/file_check.php:
|
1248 |
msgid "Always send me a report by email after a scheduled scan"
|
1249 |
msgstr "Envoyez-moi toujours un rapport après une analyse automatique"
|
1250 |
|
1251 |
-
#: lib/file_check.php:
|
1252 |
msgid "Save Scan Options"
|
1253 |
msgstr "Sauvegarder les options"
|
1254 |
|
1255 |
-
#: lib/file_check.php:
|
1256 |
msgid "Enter the full path to the directory to be scanned."
|
1257 |
msgstr "Entrez le chemin complet vers le répertoire à scanner."
|
1258 |
|
1259 |
-
#: lib/file_check.php:
|
1260 |
#, php-format
|
1261 |
msgid "The directory %s does not exist."
|
1262 |
msgstr "Le répertoire %s n'existe pas."
|
1263 |
|
1264 |
-
#: lib/file_check.php:
|
1265 |
#, php-format
|
1266 |
msgid "The directory %s is not readable."
|
1267 |
msgstr "Le répertoire %s n'est pas lisible."
|
1268 |
|
1269 |
-
#: lib/file_check.php:
|
1270 |
#, php-format
|
1271 |
msgid "Cannot write to %s."
|
1272 |
msgstr "Impossible d'écrire dans %s."
|
1273 |
|
1274 |
-
#: lib/file_check.php:
|
1275 |
#, php-format
|
1276 |
msgid "Error : cannot open %s directory."
|
1277 |
msgstr "Erreur : impossible d'ouvrir le répertoire %s."
|
1278 |
|
1279 |
-
#: lib/file_check.php:
|
1280 |
#, php-format
|
1281 |
msgid "Error : %s directory is not readable."
|
1282 |
msgstr "Erreur : le répertoire %s n'est pas lisible."
|
1283 |
|
1284 |
-
#: lib/file_check.php:
|
1285 |
#, php-format
|
1286 |
msgid "Missing options line %s, please try again."
|
1287 |
msgstr "Option manquante (ligne %s). Veuillez essayer à nouveau."
|
1288 |
|
1289 |
-
#: lib/file_check.php:
|
1290 |
#, php-format
|
1291 |
msgid "Cannot create %s."
|
1292 |
msgstr "Impossible de créer %s."
|
1293 |
|
1294 |
-
#: lib/file_check.php:
|
1295 |
msgid "Error reading old snapshot file."
|
1296 |
msgstr "Erreur lors de la lecture du fichier de l'ancien instantané."
|
1297 |
|
1298 |
-
#: lib/file_check.php:
|
1299 |
msgid "Error reading new snapshot file."
|
1300 |
msgstr "Erreur lors de la lecture du fichier du nouvel instantané."
|
1301 |
|
1302 |
-
#: lib/file_check.php:
|
1303 |
msgid "New file"
|
1304 |
msgstr "Nouveau fichier"
|
1305 |
|
1306 |
-
#: lib/file_check.php:
|
1307 |
msgid "Modified file"
|
1308 |
msgstr "Fichier modifié"
|
1309 |
|
1310 |
-
#: lib/file_check.php:
|
1311 |
msgid "Deleted file"
|
1312 |
msgstr "Fichier supprimé"
|
1313 |
|
1314 |
-
#: lib/file_check.php:
|
1315 |
msgid "[NinjaFirewall] Alert: File Check detection"
|
1316 |
msgstr "[NinjaFirewall] Alerte: Détection File Check"
|
1317 |
|
1318 |
-
#: lib/file_check.php:
|
1319 |
-
#: lib/file_check.php:
|
1320 |
-
#: lib/utils.php:
|
1321 |
msgid "Blog:"
|
1322 |
msgstr "Blog :"
|
1323 |
|
1324 |
-
#: lib/file_check.php:
|
1325 |
#, php-format
|
1326 |
msgid "Date: %s"
|
1327 |
msgstr "Date : %s"
|
1328 |
|
1329 |
-
#: lib/file_check.php:
|
1330 |
msgid "See attached file for details."
|
1331 |
msgstr "Voir le fichier joint pour plus de détails."
|
1332 |
|
1333 |
-
#: lib/file_check.php:
|
1334 |
msgid "[NinjaFirewall] File Check report"
|
1335 |
msgstr "[NinjaFirewall] Rapport de File Check"
|
1336 |
|
1337 |
-
#: lib/file_check.php:
|
1338 |
msgid "NinjaFirewall did not detect changes in your files."
|
1339 |
msgstr "NinjaFirewall n'a pas détecté de changements dans vos fichiers."
|
1340 |
|
1341 |
-
#: lib/file_guard.php:
|
1342 |
-
msgid "Please enter a number from 1 to 99."
|
1343 |
-
msgstr "Veuillez entrer un nombre de 1 à 99."
|
1344 |
-
|
1345 |
-
#: lib/file_guard.php:54 lib/help.php:285 ninjafirewall.php:493
|
1346 |
msgid "File Guard"
|
1347 |
msgstr "File Guard"
|
1348 |
|
1349 |
-
#: lib/file_guard.php:
|
1350 |
#, php-format
|
1351 |
msgid ""
|
1352 |
"You are running NinjaFirewall in <i>WordPress WAF</i> mode. The %s feature "
|
@@ -1360,7 +849,7 @@ msgstr ""
|
|
1360 |
"cette option s'applique à tous les fichiers PHP, vous devez installer "
|
1361 |
"NinjaFirewall en mode %s."
|
1362 |
|
1363 |
-
#: lib/file_guard.php:
|
1364 |
#, php-format
|
1365 |
msgid ""
|
1366 |
"The cache directory %s is not writable. Please change its permissions (0777 "
|
@@ -1369,33 +858,26 @@ msgstr ""
|
|
1369 |
"Impossible d'écrire dans le répertoire du cache %s. Assurez-vous que ce "
|
1370 |
"répertoire n'est pas en lecture seule."
|
1371 |
|
1372 |
-
#: lib/file_guard.php:
|
1373 |
msgid "Enable File Guard"
|
1374 |
msgstr "Activer File Guard"
|
1375 |
|
1376 |
-
#: lib/file_guard.php:
|
1377 |
-
|
1378 |
-
|
1379 |
-
|
1380 |
-
|
1381 |
-
|
1382 |
-
#: lib/
|
1383 |
-
#: lib/
|
1384 |
-
|
1385 |
-
|
1386 |
-
#: lib/firewall_policies.php:915 lib/firewall_policies.php:1067
|
1387 |
-
#: lib/firewall_policies.php:1123 lib/firewall_policies.php:1133
|
1388 |
-
#: lib/firewall_policies.php:1143 lib/firewall_policies.php:1153
|
1389 |
-
#: lib/firewall_policies.php:1200 lib/firewall_policies.php:1210
|
1390 |
-
#: lib/network.php:64 lib/rules_update.php:148
|
1391 |
-
msgid "No"
|
1392 |
-
msgstr "Non"
|
1393 |
|
1394 |
-
#: lib/file_guard.php:
|
1395 |
msgid "Real-time detection"
|
1396 |
msgstr "Détection en temps réel"
|
1397 |
|
1398 |
-
#: lib/file_guard.php:
|
1399 |
#, php-format
|
1400 |
msgid ""
|
1401 |
"Monitor file activity and send an alert when someone is accessing a PHP "
|
@@ -1404,11 +886,11 @@ msgstr ""
|
|
1404 |
"Surveiller et alerter par e-mail lorsqu'un visiteur accède à un script PHP "
|
1405 |
"qui a été modifié ou créé il y a moins de %s heure(s)."
|
1406 |
|
1407 |
-
#: lib/file_guard.php:
|
1408 |
msgid "or"
|
1409 |
msgstr "ou"
|
1410 |
|
1411 |
-
#: lib/file_guard.php:
|
1412 |
msgid ""
|
1413 |
"Full or partial case-sensitive string(s), max. 255 characters. Multiple "
|
1414 |
"values must be comma-separated"
|
@@ -1416,7 +898,7 @@ msgstr ""
|
|
1416 |
"Chaîne de caractères complète ou partielle, sensible à la casse, 255 "
|
1417 |
"caractères maximum. Plusieurs valeurs doivent être séparées par des virgules"
|
1418 |
|
1419 |
-
#: lib/file_guard.php:
|
1420 |
msgid "Save File Guard options"
|
1421 |
msgstr "Sauvegarder les options"
|
1422 |
|
@@ -1444,38 +926,39 @@ msgstr "Votre clé publique a été supprimée"
|
|
1444 |
msgid "Your public key has been saved"
|
1445 |
msgstr "Votre clé publique a été sauvegardée"
|
1446 |
|
1447 |
-
#: lib/firewall_log.php:
|
|
|
1448 |
msgid "Firewall Log"
|
1449 |
msgstr "Journal du Pare-feu"
|
1450 |
|
1451 |
-
#: lib/firewall_log.php:
|
1452 |
msgid "Error"
|
1453 |
msgstr "Erreur"
|
1454 |
|
1455 |
-
#: lib/firewall_log.php:
|
1456 |
msgid "Note"
|
1457 |
msgstr "Notice"
|
1458 |
|
1459 |
-
#: lib/firewall_log.php:
|
1460 |
#, php-format
|
1461 |
msgid "your log has %s lines. I will display the last %s lines only."
|
1462 |
msgstr ""
|
1463 |
"votre journal contient %s lignes. Seules les %s dernières lignes vont être "
|
1464 |
"affichées."
|
1465 |
|
1466 |
-
#: lib/firewall_log.php:
|
1467 |
msgid "Viewing:"
|
1468 |
msgstr "Journal :"
|
1469 |
|
1470 |
-
#: lib/firewall_log.php:
|
1471 |
msgid "bytes"
|
1472 |
msgstr "octets"
|
1473 |
|
1474 |
-
#: lib/firewall_log.php:
|
1475 |
msgid "The selected log is empty."
|
1476 |
msgstr "Le journal sélectionné est vide."
|
1477 |
|
1478 |
-
#: lib/firewall_log.php:
|
1479 |
msgid ""
|
1480 |
"The log shows all threats that were blocked by the firewall, unless stated "
|
1481 |
"otherwise. It is rotated monthly."
|
@@ -1483,37 +966,37 @@ msgstr ""
|
|
1483 |
"Le journal affiche toutes les menaces bloquées par le pare-feu, sauf "
|
1484 |
"indication contraire. La rotation du journal est mensuelle."
|
1485 |
|
1486 |
-
#: lib/firewall_log.php:
|
1487 |
msgid "Log Options"
|
1488 |
msgstr "Options du Journal"
|
1489 |
|
1490 |
-
#: lib/firewall_log.php:
|
1491 |
msgid "Auto-delete log"
|
1492 |
msgstr "Suppression automatique des journaux"
|
1493 |
|
1494 |
-
#: lib/firewall_log.php:
|
1495 |
#, php-format
|
1496 |
msgid "Automatically delete logs older than %s days"
|
1497 |
msgstr "Supprimer automatiquement les journaux vieux de plus de %s jours"
|
1498 |
|
1499 |
-
#: lib/firewall_log.php:
|
1500 |
msgid "Set this option to 0 to disable it."
|
1501 |
msgstr "Entrez \"0\" pour désactiver cette option."
|
1502 |
|
1503 |
-
#: lib/firewall_log.php:
|
1504 |
msgid "Save Log Options"
|
1505 |
msgstr "Sauvegarder les options"
|
1506 |
|
1507 |
-
#: lib/firewall_log.php:
|
1508 |
-
#: lib/wpplus.php:
|
1509 |
msgid "Centralized Logging"
|
1510 |
msgstr "Centralisation des Logs"
|
1511 |
|
1512 |
-
#: lib/firewall_log.php:
|
1513 |
msgid "Enter your public key (optional)"
|
1514 |
msgstr "Entrez votre clé publique (optionnel)"
|
1515 |
|
1516 |
-
#: lib/firewall_log.php:
|
1517 |
#, php-format
|
1518 |
msgid ""
|
1519 |
"<a href=\"%s\">Consult our blog</a> if you want to enable centralized "
|
@@ -1522,127 +1005,71 @@ msgstr ""
|
|
1522 |
"Veuillez <a href=\"%s\">consulter notre blog</a> afin d'activer la "
|
1523 |
"Centralisation des Logs."
|
1524 |
|
1525 |
-
#: lib/firewall_log.php:
|
1526 |
msgid "Save Public Key"
|
1527 |
msgstr "Sauvegarder la clé publique"
|
1528 |
|
1529 |
-
#: lib/firewall_log.php:
|
1530 |
msgid "Delete Public Key"
|
1531 |
msgstr "Supprimer la clé publique"
|
1532 |
|
1533 |
-
#: lib/firewall_log.php:
|
1534 |
-
msgid "Your public key is not valid."
|
1535 |
-
msgstr "Votre clé publique n\\'est pas valide."
|
1536 |
-
|
1537 |
-
#: lib/firewall_log.php:313
|
1538 |
msgid "The requested log does not exist."
|
1539 |
msgstr "Le journal demandé n'existe pas."
|
1540 |
|
1541 |
-
#: lib/firewall_log.php:
|
1542 |
msgid "Unable to open the log for read operation."
|
1543 |
msgstr "Impossible de lire le journal."
|
1544 |
|
1545 |
-
#: lib/firewall_options.php:
|
1546 |
-
msgid ""
|
1547 |
-
"This action will restore the selected configuration file and will override "
|
1548 |
-
"all your current firewall options, policies and rules. Continue?"
|
1549 |
-
msgstr ""
|
1550 |
-
"Cette action va restaurer le fichier de configuration sélectionné et "
|
1551 |
-
"remplacera toutes les options, politiques et règles de pare-feu actuelles. "
|
1552 |
-
"Continuer ?"
|
1553 |
-
|
1554 |
-
#: lib/firewall_options.php:52
|
1555 |
-
msgid "CSS style sheets"
|
1556 |
-
msgstr "des feuilles de style CSS"
|
1557 |
-
|
1558 |
-
#: lib/firewall_options.php:55
|
1559 |
-
msgid "Javascript code"
|
1560 |
-
msgstr "du code Javascript"
|
1561 |
-
|
1562 |
-
#: lib/firewall_options.php:58
|
1563 |
-
#, php-format
|
1564 |
-
msgid ""
|
1565 |
-
"Your message seems to contain %s. For security reasons, it cannot be "
|
1566 |
-
"previewed from the admin dashboard."
|
1567 |
-
msgstr ""
|
1568 |
-
"Votre message semble contenir %s. Pour des raisons de sécurité, il ne peut "
|
1569 |
-
"pas être prévisualisé à partir du Tableau de Bord d'administration."
|
1570 |
-
|
1571 |
-
#: lib/firewall_options.php:63
|
1572 |
-
msgid "Refresh preview"
|
1573 |
-
msgstr "Réactualiser"
|
1574 |
-
|
1575 |
-
#: lib/firewall_options.php:71 ninjafirewall.php:485
|
1576 |
msgid "Firewall Options"
|
1577 |
msgstr "Options du Pare-feu"
|
1578 |
|
1579 |
-
#: lib/firewall_options.php:
|
1580 |
msgid "Firewall protection"
|
1581 |
msgstr "Pare-feu"
|
1582 |
|
1583 |
-
#: lib/firewall_options.php:
|
1584 |
-
#: lib/firewall_options.php:124 lib/firewall_options.php:134
|
1585 |
-
#: lib/overview.php:78 lib/overview.php:210
|
1586 |
-
msgid "Enabled"
|
1587 |
-
msgstr "Activé"
|
1588 |
-
|
1589 |
-
#: lib/firewall_options.php:101 lib/firewall_options.php:110
|
1590 |
-
msgid "Disabled"
|
1591 |
-
msgstr "Désactivé"
|
1592 |
-
|
1593 |
-
#: lib/firewall_options.php:111 lib/firewall_options.php:126
|
1594 |
-
msgid "Warning: your site is not protected!"
|
1595 |
-
msgstr "Attention, votre site n'est pas protégé !"
|
1596 |
-
|
1597 |
-
#: lib/firewall_options.php:117 lib/help.php:90 lib/overview.php:100
|
1598 |
msgid "Debugging mode"
|
1599 |
msgstr "Mode débogage"
|
1600 |
|
1601 |
-
#: lib/firewall_options.php:
|
1602 |
-
msgid "Disabled (default)"
|
1603 |
-
msgstr "Désactivé (défaut)"
|
1604 |
-
|
1605 |
-
#: lib/firewall_options.php:147
|
1606 |
msgid "HTTP error code to return"
|
1607 |
msgstr "Code HTTP à retourner"
|
1608 |
|
1609 |
-
#: lib/firewall_options.php:
|
1610 |
msgid "400 Bad Request"
|
1611 |
msgstr "400 Bad Request"
|
1612 |
|
1613 |
-
#: lib/firewall_options.php:
|
1614 |
msgid "403 Forbidden (default)"
|
1615 |
msgstr "403 Forbidden (défaut)"
|
1616 |
|
1617 |
-
#: lib/firewall_options.php:
|
1618 |
msgid "404 Not Found"
|
1619 |
msgstr "404 Not Found"
|
1620 |
|
1621 |
-
#: lib/firewall_options.php:
|
1622 |
msgid "406 Not Acceptable"
|
1623 |
msgstr "406 Not Acceptable"
|
1624 |
|
1625 |
-
#: lib/firewall_options.php:
|
1626 |
msgid "418 I'm a teapot"
|
1627 |
msgstr "418 I'm a teapot"
|
1628 |
|
1629 |
-
#: lib/firewall_options.php:
|
1630 |
msgid "500 Internal Server Error"
|
1631 |
msgstr "500 Internal Server Error"
|
1632 |
|
1633 |
-
#: lib/firewall_options.php:
|
1634 |
msgid "503 Service Unavailable"
|
1635 |
msgstr "503 Service Unavailable"
|
1636 |
|
1637 |
-
#: lib/firewall_options.php:
|
1638 |
msgid "IP anonymization"
|
1639 |
msgstr "Anonymisation IP"
|
1640 |
|
1641 |
-
#: lib/firewall_options.php:
|
1642 |
-
msgid "Anonymize IP addresses by removing the last 3 characters."
|
1643 |
-
msgstr "Anonymiser les adresses IP en supprimant les 3 derniers caractères."
|
1644 |
-
|
1645 |
-
#: lib/firewall_options.php:174
|
1646 |
#, php-format
|
1647 |
msgid ""
|
1648 |
"Does not apply to private IP addresses and the <a href=\"%s\">Login "
|
@@ -1651,61 +1078,61 @@ msgstr ""
|
|
1651 |
"Ne s'applique pas aux adresses IP privées, ni à la <a href=\"%s\">Page de "
|
1652 |
"Connexion</a>."
|
1653 |
|
1654 |
-
#: lib/firewall_options.php:
|
1655 |
msgid "Blocked user message"
|
1656 |
msgstr "Message pour les utilisateurs bloqués"
|
1657 |
|
1658 |
-
#: lib/firewall_options.php:
|
1659 |
-
msgid "
|
1660 |
-
msgstr "
|
1661 |
|
1662 |
-
#: lib/firewall_options.php:
|
1663 |
msgid "Default message"
|
1664 |
msgstr "Message par défaut"
|
1665 |
|
1666 |
-
#: lib/firewall_options.php:
|
1667 |
msgid "Firewall configuration"
|
1668 |
msgstr "Configuration du pare-feu"
|
1669 |
|
1670 |
-
#: lib/firewall_options.php:
|
1671 |
msgid "Export configuration"
|
1672 |
msgstr "Exporter la configuration"
|
1673 |
|
1674 |
-
#: lib/firewall_options.php:
|
1675 |
msgid "Download"
|
1676 |
msgstr "Télécharger"
|
1677 |
|
1678 |
-
#: lib/firewall_options.php:
|
1679 |
msgid "File Check configuration will not be exported/imported."
|
1680 |
msgstr ""
|
1681 |
"La configuration de \"File Check\" ne peut pas être importée ou exportée."
|
1682 |
|
1683 |
-
#: lib/firewall_options.php:
|
1684 |
msgid "Import configuration"
|
1685 |
msgstr "Importer la configuration"
|
1686 |
|
1687 |
-
#: lib/firewall_options.php:
|
1688 |
#, php-format
|
1689 |
msgid "Imported configuration must match plugin version %s."
|
1690 |
msgstr "La fichier importé doit être compatible avec la version %s."
|
1691 |
|
1692 |
-
#: lib/firewall_options.php:
|
1693 |
msgid "It will override all your current firewall options and rules."
|
1694 |
msgstr "Il remplacera toutes vos options et règles de pare-feu en vigueur."
|
1695 |
|
1696 |
-
#: lib/firewall_options.php:
|
1697 |
msgid "Configuration backup"
|
1698 |
msgstr "Sauvegarde de la configuration"
|
1699 |
|
1700 |
-
#: lib/firewall_options.php:
|
1701 |
msgid "Save Firewall Options"
|
1702 |
msgstr "Sauvegarder les options"
|
1703 |
|
1704 |
-
#: lib/firewall_options.php:
|
1705 |
msgid "Available backup files"
|
1706 |
msgstr "Fichiers de sauvegarde disponibles"
|
1707 |
|
1708 |
-
#: lib/firewall_options.php:
|
1709 |
#, php-format
|
1710 |
msgid ""
|
1711 |
"To restore NinjaFirewall's configuration to an earlier date, select it in "
|
@@ -1714,37 +1141,37 @@ msgstr ""
|
|
1714 |
"Pour restaurer la configuration de NinjaFirewall à une date antérieure, "
|
1715 |
"sélectionnez-la dans la liste et cliquez sur '%s'."
|
1716 |
|
1717 |
-
#: lib/firewall_options.php:
|
1718 |
msgid "There are no backup available yet, check back later."
|
1719 |
msgstr "Il n'y a pas encore de sauvegarde disponible, revenez plus tard."
|
1720 |
|
1721 |
-
#: lib/firewall_options.php:
|
1722 |
#, php-format
|
1723 |
msgid "Uploaded file is either corrupted or its format is not supported (#%s)"
|
1724 |
msgstr ""
|
1725 |
"Le fichier importé est illisible ou son format n'est pas supporté (#%s)"
|
1726 |
|
1727 |
-
#: lib/firewall_options.php:
|
1728 |
msgid "The imported file is not compatible with that version of NinjaFirewall"
|
1729 |
msgstr ""
|
1730 |
"Le fichier importé n'est pas compatible avec cette version de NinjaFirewall"
|
1731 |
|
1732 |
-
#: lib/firewall_options.php:
|
1733 |
msgid "[NinjaFirewall] Alert: Firewall is disabled"
|
1734 |
msgstr "[NinjaFirewall] Alerte : Le pare-feu a été désactivé"
|
1735 |
|
1736 |
-
#: lib/firewall_options.php:
|
1737 |
-
#: lib/utils.php:
|
1738 |
msgid "-Blog :"
|
1739 |
msgstr "- Blog :"
|
1740 |
|
1741 |
-
#: lib/firewall_options.php:
|
1742 |
msgid "Someone disabled NinjaFirewall from your WordPress admin dashboard:"
|
1743 |
msgstr ""
|
1744 |
"Quelqu'un a désactivé NinjaFirewall depuis votre Tableau de bord de "
|
1745 |
"WordPress :"
|
1746 |
|
1747 |
-
#: lib/firewall_options.php:
|
1748 |
msgid ""
|
1749 |
"NinjaFirewall is disabled because someone enabled debugging mode from your "
|
1750 |
"WordPress admin dashboard:"
|
@@ -1752,46 +1179,29 @@ msgstr ""
|
|
1752 |
"NinjaFirewall est désactivé car quelqu'un activé son \"Mode débogage\" "
|
1753 |
"depuis votre tableau de bord de WordPress :"
|
1754 |
|
1755 |
-
#: lib/firewall_options.php:
|
1756 |
msgid "[NinjaFirewall] Alert: Firewall override settings"
|
1757 |
msgstr "[NinjaFirewall] Alerte : Modification des paramètres du pare-feu"
|
1758 |
|
1759 |
-
#: lib/firewall_options.php:
|
1760 |
msgid ""
|
1761 |
"Someone imported a new configuration which overrode the firewall settings:"
|
1762 |
msgstr ""
|
1763 |
"Quelqu'un a importé une nouvelle configuration qui a modifié tous les "
|
1764 |
"paramètres du pare-feu :"
|
1765 |
|
1766 |
-
#: lib/firewall_options.php:
|
1767 |
msgid "-User :"
|
1768 |
msgstr "- Nom :"
|
1769 |
|
1770 |
-
#: lib/firewall_options.php:
|
1771 |
msgid "-IP :"
|
1772 |
msgstr "- IP :"
|
1773 |
|
1774 |
-
#: lib/firewall_options.php:
|
1775 |
msgid "-Date :"
|
1776 |
msgstr "- Date :"
|
1777 |
|
1778 |
-
#: lib/firewall_policies.php:26 lib/firewall_policies.php:461
|
1779 |
-
#: lib/firewall_policies.php:476 lib/firewall_policies.php:486
|
1780 |
-
#: lib/firewall_policies.php:496 lib/firewall_policies.php:506
|
1781 |
-
#: lib/firewall_policies.php:576 lib/firewall_policies.php:619
|
1782 |
-
#: lib/firewall_policies.php:651 lib/firewall_policies.php:689
|
1783 |
-
#: lib/firewall_policies.php:777 lib/firewall_policies.php:797
|
1784 |
-
#: lib/firewall_policies.php:840 lib/firewall_policies.php:972
|
1785 |
-
#: lib/firewall_policies.php:986 lib/firewall_policies.php:1011
|
1786 |
-
#: lib/firewall_policies.php:1217
|
1787 |
-
msgid "Yes"
|
1788 |
-
msgstr "Oui"
|
1789 |
-
|
1790 |
-
#: lib/firewall_policies.php:28 lib/firewall_policies.php:192
|
1791 |
-
#: lib/firewall_policies.php:390
|
1792 |
-
msgid "(default)"
|
1793 |
-
msgstr "(défaut)"
|
1794 |
-
|
1795 |
#: lib/firewall_policies.php:29
|
1796 |
#, php-format
|
1797 |
msgid ""
|
@@ -1800,98 +1210,80 @@ msgstr ""
|
|
1800 |
"Cette option ne peut être activée que lorsque NinjaFirewall fonctionne en "
|
1801 |
"mode %s."
|
1802 |
|
1803 |
-
#: lib/firewall_policies.php:
|
1804 |
-
msgid "
|
1805 |
-
msgstr ""
|
1806 |
-
"Tous les champs vont être réinitialisés avec leur valeur par défaut. "
|
1807 |
-
"Continuer ?"
|
1808 |
-
|
1809 |
-
#: lib/firewall_policies.php:72
|
1810 |
-
msgid ""
|
1811 |
-
"WARNING: ensure that you can access your admin console over HTTPS before "
|
1812 |
-
"enabling this option, otherwise you will lock yourself out of your site. Go "
|
1813 |
-
"ahead?"
|
1814 |
-
msgstr ""
|
1815 |
-
"AVERTISSEMENT: assurez-vous que vous pouvez accéder à votre Tableau de bord "
|
1816 |
-
"via HTTPS avant d'activer cette option, sinon vous risquez de bloquer "
|
1817 |
-
"l’accès à votre site. Continuer ?"
|
1818 |
-
|
1819 |
-
#: lib/firewall_policies.php:81
|
1820 |
-
msgid ""
|
1821 |
-
"Any character that is not a letter [a-zA-Z], a digit [0-9], a dot [.], a "
|
1822 |
-
"hyphen [-] or an underscore [_] will be removed from the filename and "
|
1823 |
-
"replaced with the substitution character. Continue?"
|
1824 |
-
msgstr ""
|
1825 |
-
"Tout caractère qui n'est pas une lettre [a-zA-Z], un chiffre [0-9], un point "
|
1826 |
-
"[.], un trait d'union[-] ou un caractère de soulignement[_], sera supprimé "
|
1827 |
-
"du nom du fichier et remplacé par le caractère de substitution."
|
1828 |
|
1829 |
-
#: lib/firewall_policies.php:
|
1830 |
msgid "Default values were restored."
|
1831 |
msgstr "Les valeurs par défaut ont été restaurées."
|
1832 |
|
1833 |
-
#: lib/firewall_policies.php:
|
1834 |
msgid "No action taken."
|
1835 |
msgstr "Aucune mesure prise."
|
1836 |
|
1837 |
-
#: lib/firewall_policies.php:
|
1838 |
msgid "Basic Policies"
|
1839 |
msgstr "Politiques de base"
|
1840 |
|
1841 |
-
#: lib/firewall_policies.php:
|
1842 |
msgid "Intermediate Policies"
|
1843 |
msgstr "Politiques intermédiaires"
|
1844 |
|
1845 |
-
#: lib/firewall_policies.php:
|
1846 |
msgid "Advanced Policies"
|
1847 |
msgstr "Politiques avancées"
|
1848 |
|
1849 |
-
#: lib/firewall_policies.php:
|
1850 |
msgid "Enable NinjaFirewall for"
|
1851 |
msgstr "Activer NinjaFirewall pour le trafic"
|
1852 |
|
1853 |
-
#: lib/firewall_policies.php:
|
1854 |
msgid "HTTP and HTTPS traffic (default)"
|
1855 |
msgstr "Trafic HTTP et HTTPS (défaut)"
|
1856 |
|
1857 |
-
#: lib/firewall_policies.php:
|
1858 |
msgid "HTTP traffic only"
|
1859 |
msgstr "Trafic HTTP uniquement"
|
1860 |
|
1861 |
-
#: lib/firewall_policies.php:
|
1862 |
msgid "HTTPS traffic only"
|
1863 |
msgstr "Trafic HTTPS uniquement"
|
1864 |
|
1865 |
-
#: lib/firewall_policies.php:
|
1866 |
msgid "Uploads"
|
1867 |
msgstr "Téléchargements"
|
1868 |
|
1869 |
-
#: lib/firewall_policies.php:
|
1870 |
msgid "File Uploads"
|
1871 |
msgstr "Autoriser les téléchargements (uploads)"
|
1872 |
|
1873 |
-
#: lib/firewall_policies.php:
|
1874 |
msgid "Allow uploads"
|
1875 |
msgstr "Autoriser"
|
1876 |
|
1877 |
-
#: lib/firewall_policies.php:
|
|
|
|
|
|
|
|
|
1878 |
msgid "Disallow uploads"
|
1879 |
msgstr "Interdire"
|
1880 |
|
1881 |
-
#: lib/firewall_policies.php:
|
1882 |
msgid "Sanitise filenames"
|
1883 |
msgstr "Nettoyer le nom des fichiers"
|
1884 |
|
1885 |
-
#: lib/firewall_policies.php:
|
1886 |
msgid "substitution character:"
|
1887 |
msgstr "caractère de substitution :"
|
1888 |
|
1889 |
-
#: lib/firewall_policies.php:
|
1890 |
msgid "Block direct access to any PHP file located in one of these directories"
|
1891 |
msgstr ""
|
1892 |
"Bloquer l'accès direct à un fichier PHP situé dans l'un de ces répertoires"
|
1893 |
|
1894 |
-
#: lib/firewall_policies.php:
|
1895 |
msgid ""
|
1896 |
"NinjaFirewall will not block access to the TinyMCE WYSIWYG editor even if "
|
1897 |
"this option is enabled."
|
@@ -1899,7 +1291,7 @@ msgstr ""
|
|
1899 |
"NinjaFirewall ne bloquera pas l'accès à l'éditeur WYSIWYG TinyMCE même si "
|
1900 |
"cette option est activée."
|
1901 |
|
1902 |
-
#: lib/firewall_policies.php:
|
1903 |
msgid ""
|
1904 |
"Unless you have PHP scripts in a \"/cache/\" folder that need to be accessed "
|
1905 |
"by your visitors, we recommend to enable this option."
|
@@ -1908,127 +1300,125 @@ msgstr ""
|
|
1908 |
"pouvant être consultés par vos visiteurs, nous vous recommandons d'activer "
|
1909 |
"cette option."
|
1910 |
|
1911 |
-
#: lib/firewall_policies.php:
|
1912 |
-
#, php-format
|
1913 |
-
msgid ""
|
1914 |
-
"If you are using the %s plugin, blocking <code>system.multicall</code> may "
|
1915 |
-
"prevent it from working correctly."
|
1916 |
-
msgstr ""
|
1917 |
-
"Si vous utilisez l'extension %s, bloquer <code>system.multicall</code> "
|
1918 |
-
"pourrait l’empêcher de fonctionner correctement."
|
1919 |
-
|
1920 |
-
#: lib/firewall_policies.php:387
|
1921 |
msgid "General"
|
1922 |
msgstr "Général"
|
1923 |
|
1924 |
-
#: lib/firewall_policies.php:
|
1925 |
msgid "Block attempts to modify important WordPress settings"
|
1926 |
msgstr ""
|
1927 |
"Bloquer les tentatives de modification des paramètres importants de WordPress"
|
1928 |
|
1929 |
-
#: lib/firewall_policies.php:
|
1930 |
msgid "Block user accounts creation"
|
1931 |
msgstr "Bloquer la création de comptes utilisateur"
|
1932 |
|
1933 |
-
#: lib/firewall_policies.php:
|
1934 |
msgid "Do not enable this policy if you allow user registration."
|
1935 |
msgstr ""
|
1936 |
"N'activez pas cette option si vous autorisez l'inscription des utilisateurs."
|
1937 |
|
1938 |
-
#: lib/firewall_policies.php:
|
1939 |
msgid "WordPress AJAX"
|
1940 |
msgstr "WordPress AJAX"
|
1941 |
|
1942 |
-
#: lib/firewall_policies.php:
|
1943 |
msgid "Protect <code>admin-ajax.php</code> against suspicious bots"
|
1944 |
msgstr ""
|
1945 |
"Proteger <code>admin-ajax.php</code> contre les bots et scanners malveillants"
|
1946 |
|
1947 |
-
#: lib/firewall_policies.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1948 |
msgid "Protect against username enumeration"
|
1949 |
msgstr "Protéger contre l'énumération des comptes utilisateurs"
|
1950 |
|
1951 |
-
#: lib/firewall_policies.php:
|
1952 |
msgid "Through the author archives"
|
1953 |
msgstr "Via la page d'archive d'un auteur"
|
1954 |
|
1955 |
-
#: lib/firewall_policies.php:
|
1956 |
msgid "Through the login page"
|
1957 |
msgstr "Via la page de connexion"
|
1958 |
|
1959 |
-
#: lib/firewall_policies.php:
|
1960 |
msgid "Through the WordPress REST API"
|
1961 |
msgstr "Via l'API REST de WordPress"
|
1962 |
|
1963 |
-
#: lib/firewall_policies.php:
|
1964 |
-
msgid "This feature is only available when running WordPress 4.7 or above."
|
1965 |
-
msgstr "Cette option ne peut être activée qu'avec WordPress 4.7 ou plus."
|
1966 |
-
|
1967 |
-
#: lib/firewall_policies.php:432
|
1968 |
msgid "WordPress REST API"
|
1969 |
msgstr "API REST de WordPress"
|
1970 |
|
1971 |
-
#: lib/firewall_policies.php:
|
1972 |
msgid "Block any access to the API"
|
1973 |
msgstr "Bloquer tout accès à l'API"
|
1974 |
|
1975 |
-
#: lib/firewall_policies.php:
|
1976 |
msgid "WordPress XML-RPC API"
|
1977 |
msgstr "API XML-RPC de WordPress"
|
1978 |
|
1979 |
-
#: lib/firewall_policies.php:
|
1980 |
msgid "Block <code>system.multicall</code> method"
|
1981 |
msgstr "Bloquer la méthode <code>system.multicall</code>"
|
1982 |
|
1983 |
-
#: lib/firewall_policies.php:
|
1984 |
msgid "Block Pingbacks"
|
1985 |
msgstr "Bloquer les Pingbacks"
|
1986 |
|
1987 |
-
#: lib/firewall_policies.php:
|
1988 |
msgid ""
|
1989 |
"Disabling access to the REST or XML-RPC API may break some functionality on "
|
1990 |
-
"your blog, its themes or plugins."
|
|
|
1991 |
msgstr ""
|
1992 |
"L'activation de ces options peut rompre certaines fonctionnalités de votre "
|
1993 |
-
"blog, ses thèmes ou ses
|
|
|
1994 |
|
1995 |
-
#: lib/firewall_policies.php:
|
1996 |
msgid "Block <code>POST</code> requests in the themes folder"
|
1997 |
msgstr "Bloquer les requêtes <code>POST</code> dans le dossier des thèmes"
|
1998 |
|
1999 |
-
#: lib/firewall_policies.php:
|
2000 |
msgid "Force SSL for admin and logins"
|
2001 |
msgstr "Forcer la connexion sécurisée au Tableau de bord"
|
2002 |
|
2003 |
-
#: lib/firewall_policies.php:
|
2004 |
msgid "Disable the plugin and theme editor"
|
2005 |
msgstr "Désactiver l’éditeur de thème et d'extension"
|
2006 |
|
2007 |
-
#: lib/firewall_policies.php:
|
2008 |
msgid "Disable plugin and theme update/installation"
|
2009 |
msgstr "Désactiver l'installation et mise à jour des thèmes et extensions"
|
2010 |
|
2011 |
-
#: lib/firewall_policies.php:
|
2012 |
msgid "Disable the fatal error handler"
|
2013 |
msgstr "Désactiver le gestionnaire d'erreurs fatales"
|
2014 |
|
2015 |
-
#: lib/firewall_policies.php:
|
2016 |
msgid "Users Whitelist"
|
2017 |
msgstr "Liste Blanche"
|
2018 |
|
2019 |
-
#: lib/firewall_policies.php:
|
2020 |
msgid "Add the Administrator to the whitelist (default)."
|
2021 |
msgstr "Ajouter l'Administrateur à la liste blanche (défaut)."
|
2022 |
|
2023 |
-
#: lib/firewall_policies.php:
|
2024 |
msgid "Add all logged in users to the whitelist."
|
2025 |
msgstr "Ajouter tous les utilisateurs connectés à la liste blanche."
|
2026 |
|
2027 |
-
#: lib/firewall_policies.php:
|
2028 |
msgid "Disable users whitelist."
|
2029 |
msgstr "Désactiver la liste blanche."
|
2030 |
|
2031 |
-
#: lib/firewall_policies.php:
|
2032 |
msgid ""
|
2033 |
"Note: This feature does not apply to <code>FORCE_SSL_ADMIN</code>, "
|
2034 |
"<code>DISALLOW_FILE_EDIT</code>, <code>DISALLOW_FILE_MODS</code> and "
|
@@ -2040,90 +1430,90 @@ msgstr ""
|
|
2040 |
"<code>WP_DISABLE_FATAL_ERROR_HANDLER</code> qui, si elles sont activées, "
|
2041 |
"seront toujours appliquées."
|
2042 |
|
2043 |
-
#: lib/firewall_policies.php:
|
2044 |
msgid "HTTP GET variable"
|
2045 |
msgstr "Variable HTTP GET"
|
2046 |
|
2047 |
-
#: lib/firewall_policies.php:
|
2048 |
msgid "Scan <code>GET</code> variable"
|
2049 |
msgstr "Filtrer la variable <code>GET</code>"
|
2050 |
|
2051 |
-
#: lib/firewall_policies.php:
|
2052 |
msgid "Sanitise <code>GET</code> variable"
|
2053 |
msgstr "Nettoyer la variable <code>GET</code>"
|
2054 |
|
2055 |
-
#: lib/firewall_policies.php:
|
2056 |
msgid "HTTP POST variable"
|
2057 |
msgstr "Variable HTTP POST"
|
2058 |
|
2059 |
-
#: lib/firewall_policies.php:
|
2060 |
msgid "Scan <code>POST</code> variable"
|
2061 |
msgstr "Filtrer la variable <code>POST</code>"
|
2062 |
|
2063 |
-
#: lib/firewall_policies.php:
|
2064 |
msgid "Sanitise <code>POST</code> variable"
|
2065 |
msgstr "Nettoyer la variable <code>POST</code>"
|
2066 |
|
2067 |
-
#: lib/firewall_policies.php:
|
2068 |
msgid "Do not enable this option unless you know what you are doing!"
|
2069 |
msgstr ""
|
2070 |
"N'activez pas cette option si vous n'êtes pas sûr de ce que vous "
|
2071 |
"faites !"
|
2072 |
|
2073 |
-
#: lib/firewall_policies.php:
|
2074 |
msgid "Decode Base64-encoded <code>POST</code> variable"
|
2075 |
msgstr ""
|
2076 |
"Décoder les chaîne encodées en Base64 dans la variable <code>POST</code>"
|
2077 |
|
2078 |
-
#: lib/firewall_policies.php:
|
2079 |
msgid "HTTP REQUEST variable"
|
2080 |
msgstr "Variable HTTP REQUEST"
|
2081 |
|
2082 |
-
#: lib/firewall_policies.php:
|
2083 |
msgid "Sanitise <code>REQUEST</code> variable"
|
2084 |
msgstr "Nettoyer la variable <code>REQUEST</code>"
|
2085 |
|
2086 |
-
#: lib/firewall_policies.php:
|
2087 |
msgid "Cookies"
|
2088 |
msgstr "Cookies"
|
2089 |
|
2090 |
-
#: lib/firewall_policies.php:
|
2091 |
msgid "Scan cookies"
|
2092 |
msgstr "Filtrer les cookies"
|
2093 |
|
2094 |
-
#: lib/firewall_policies.php:
|
2095 |
msgid "Sanitise cookies"
|
2096 |
msgstr "Nettoyer les cookies"
|
2097 |
|
2098 |
-
#: lib/firewall_policies.php:
|
2099 |
msgid "HTTP_USER_AGENT server variable"
|
2100 |
msgstr "Variable HTTP_USER_AGENT"
|
2101 |
|
2102 |
-
#: lib/firewall_policies.php:
|
2103 |
msgid "Scan <code>HTTP_USER_AGENT</code>"
|
2104 |
msgstr "Filtrer <code>HTTP_USER_AGENT</code>"
|
2105 |
|
2106 |
-
#: lib/firewall_policies.php:
|
2107 |
msgid "Sanitise <code>HTTP_USER_AGENT</code>"
|
2108 |
msgstr "Nettoyer <code>HTTP_USER_AGENT</code>"
|
2109 |
|
2110 |
-
#: lib/firewall_policies.php:
|
2111 |
msgid "Block suspicious bots/scanners"
|
2112 |
msgstr "Bloquer les requêtes provenant de bots/scanners malveillants"
|
2113 |
|
2114 |
-
#: lib/firewall_policies.php:
|
2115 |
msgid "HTTP_REFERER server variable"
|
2116 |
msgstr "Variable HTTP_REFERER"
|
2117 |
|
2118 |
-
#: lib/firewall_policies.php:
|
2119 |
msgid "Scan <code>HTTP_REFERER</code>"
|
2120 |
msgstr "Filtrer <code>HTTP_REFERER</code>"
|
2121 |
|
2122 |
-
#: lib/firewall_policies.php:
|
2123 |
msgid "Sanitise <code>HTTP_REFERER</code>"
|
2124 |
msgstr "Nettoyer <code>HTTP_REFERER</code>"
|
2125 |
|
2126 |
-
#: lib/firewall_policies.php:
|
2127 |
msgid ""
|
2128 |
"Block <code>POST</code> requests that do not have an <code>HTTP_REFERER</"
|
2129 |
"code> header"
|
@@ -2131,7 +1521,7 @@ msgstr ""
|
|
2131 |
"Bloquer les requêtes <code>POST</code> qui n'ont pas d'en-tête "
|
2132 |
"<code>HTTP_REFERER</code>"
|
2133 |
|
2134 |
-
#: lib/firewall_policies.php:
|
2135 |
msgid ""
|
2136 |
"Keep this option disabled if you are using scripts like Paypal IPN, "
|
2137 |
"WordPress WP-Cron etc"
|
@@ -2139,132 +1529,140 @@ msgstr ""
|
|
2139 |
"N'activez pas cette option si vous utilisez des scripts comme Paypal IPN, "
|
2140 |
"WordPress WP-Cron etc"
|
2141 |
|
2142 |
-
#: lib/firewall_policies.php:
|
2143 |
msgid "Block localhost IP in <code>GET/POST</code> request"
|
2144 |
msgstr "Bloquer les requêtes <code>GET/POST</code> contenant l'IP localhost"
|
2145 |
|
2146 |
-
#: lib/firewall_policies.php:
|
2147 |
msgid "Block HTTP requests with an IP in the <code>HTTP_HOST</code> header"
|
2148 |
msgstr ""
|
2149 |
"Bloquer les requêtes HTTP dont l'en-tête <code>HTTP_HOST</code> contient une "
|
2150 |
"IP"
|
2151 |
|
2152 |
-
#: lib/firewall_policies.php:
|
2153 |
msgid "Scan traffic coming from localhost and private IP address spaces"
|
2154 |
msgstr "Filtrer les connexions provenant de localhost et d'adresses IP privées"
|
2155 |
|
2156 |
-
#: lib/firewall_policies.php:
|
2157 |
#, php-format
|
2158 |
msgid ""
|
2159 |
-
"
|
2160 |
-
"server."
|
2161 |
msgstr ""
|
2162 |
-
"
|
2163 |
-
"
|
2164 |
|
2165 |
-
#: lib/firewall_policies.php:
|
2166 |
msgid "HTTP response headers"
|
2167 |
msgstr "En-têtes de réponse HTTP"
|
2168 |
|
2169 |
-
#: lib/firewall_policies.php:
|
2170 |
#, php-format
|
2171 |
msgid "Set %s to protect against MIME type confusion attacks"
|
2172 |
msgstr ""
|
2173 |
"Activer %s pour protéger contre les attaques basées sur la confusion du type "
|
2174 |
"MIME"
|
2175 |
|
2176 |
-
#: lib/firewall_policies.php:
|
2177 |
#, php-format
|
2178 |
msgid "Set %s to protect against clickjacking attempts"
|
2179 |
msgstr ""
|
2180 |
"Activer %s pour protéger contre les attaques de détournement de clic "
|
2181 |
"(clickjacking)"
|
2182 |
|
2183 |
-
#: lib/firewall_policies.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2184 |
#, php-format
|
2185 |
msgid "Set %s (IE/Edge, Chrome, Opera and Safari browsers)"
|
2186 |
msgstr "Activer %s (IE/Edge, Opera, Chrome et Safari)"
|
2187 |
|
2188 |
-
#: lib/firewall_policies.php:
|
2189 |
-
#: lib/firewall_policies.php:
|
2190 |
#, php-format
|
2191 |
msgid "Set to %s"
|
2192 |
msgstr "Régler sur %s"
|
2193 |
|
2194 |
-
#: lib/firewall_policies.php:
|
2195 |
#, php-format
|
2196 |
msgid "Force %s flag on all cookies to mitigate XSS attacks"
|
2197 |
msgstr ""
|
2198 |
"Activer la propriété %s pour tous les cookies afin d'atténuer les menaces "
|
2199 |
"XSS qui génèrent des vols de cookies"
|
2200 |
|
2201 |
-
#: lib/firewall_policies.php:
|
2202 |
msgid ""
|
2203 |
"If your PHP scripts use cookies that need to be accessed from JavaScript, "
|
2204 |
-
"you should
|
2205 |
msgstr ""
|
2206 |
"Si vos scripts PHP envoient des cookies qui doivent être accessibles à "
|
2207 |
-
"partir de JavaScript, vous
|
2208 |
|
2209 |
-
#: lib/firewall_policies.php:
|
2210 |
msgid ""
|
2211 |
"HSTS headers can only be set when you are accessing your site over HTTPS."
|
2212 |
msgstr ""
|
2213 |
"Les en-têtes HSTS ne peuvent être utilisés que lorsque vous vous connectez à "
|
2214 |
"votre site en HTTPS (connexion sécurisée)."
|
2215 |
|
2216 |
-
#: lib/firewall_policies.php:
|
2217 |
#, php-format
|
2218 |
msgid "Set %s (HSTS) to enforce secure connections to the server"
|
2219 |
msgstr ""
|
2220 |
"Activer %s (HSTS) pour forcer les connexions sécurisées vers le serveur"
|
2221 |
|
2222 |
-
#: lib/firewall_policies.php:
|
|
|
|
|
|
|
|
|
2223 |
msgid "1 month"
|
2224 |
msgstr "1 mois"
|
2225 |
|
2226 |
-
#: lib/firewall_policies.php:
|
2227 |
msgid "6 months"
|
2228 |
msgstr "6 mois"
|
2229 |
|
2230 |
-
#: lib/firewall_policies.php:
|
2231 |
msgid "1 year"
|
2232 |
msgstr "1 année"
|
2233 |
|
2234 |
-
#: lib/firewall_policies.php:
|
2235 |
msgid "Apply to subdomains"
|
2236 |
msgstr "Appliquer aux sous-domaines"
|
2237 |
|
2238 |
-
#: lib/firewall_policies.php:
|
2239 |
-
msgid "Set <code>max-age</code> to 0"
|
2240 |
-
msgstr "Régler <code>max-age</code> à 0"
|
2241 |
-
|
2242 |
-
#: lib/firewall_policies.php:969
|
2243 |
#, php-format
|
2244 |
msgid "Set %s for the website frontend"
|
2245 |
msgstr "Activer %s pour le site"
|
2246 |
|
2247 |
-
#: lib/firewall_policies.php:
|
2248 |
msgid "This CSP header will apply to the website frontend only."
|
2249 |
msgstr "Cet en-tête CSP ne s'appliquera qu'au site."
|
2250 |
|
2251 |
-
#: lib/firewall_policies.php:
|
2252 |
#, php-format
|
2253 |
msgid "Set %s for the WordPress admin dashboard"
|
2254 |
msgstr "Activer %s pour la console d'administration de WordPress"
|
2255 |
|
2256 |
-
#: lib/firewall_policies.php:
|
2257 |
msgid "This CSP header will apply to the WordPress admin dashboard only."
|
2258 |
msgstr ""
|
2259 |
"Cet en-tête CSP ne s'appliquera qu'à la console d'administration de "
|
2260 |
"WordPress."
|
2261 |
|
2262 |
-
#: lib/firewall_policies.php:
|
2263 |
#, php-format
|
2264 |
msgid "Set %s (Chrome, Opera and Firefox browsers)"
|
2265 |
msgstr "Activer %s (Chrome, Opera et Firefox)"
|
2266 |
|
2267 |
-
#: lib/firewall_policies.php:
|
2268 |
msgid ""
|
2269 |
"Block PHP built-in wrappers in <code>GET</code>, <code>POST</code>, "
|
2270 |
"<code>HTTP_USER_AGENT</code>, <code>HTTP_REFERER</code> and cookies"
|
@@ -2273,97 +1671,279 @@ msgstr ""
|
|
2273 |
"<code>GET</code>, <code>POST</code>, <code>HTTP_USER_AGENT</code>, "
|
2274 |
"<code>HTTP_REFERER</code> et les cookies"
|
2275 |
|
2276 |
-
#: lib/firewall_policies.php:
|
2277 |
msgid "Block serialized PHP objects in the following global variables"
|
2278 |
msgstr ""
|
2279 |
"Bloquer les objets PHP sérialisés dans les variables globales suivantes"
|
2280 |
|
2281 |
-
#: lib/firewall_policies.php:
|
2282 |
msgid "Hide PHP notice and error messages"
|
2283 |
msgstr "Masquer les messages d'erreur de PHP"
|
2284 |
|
2285 |
-
#: lib/firewall_policies.php:
|
2286 |
msgid "Sanitise <code>PHP_SELF</code>"
|
2287 |
msgstr "Nettoyer <code>PHP_SELF</code>"
|
2288 |
|
2289 |
-
#: lib/firewall_policies.php:
|
2290 |
msgid "Sanitise <code>PATH_TRANSLATED</code>"
|
2291 |
msgstr "Nettoyer <code>PATH_TRANSLATED</code>"
|
2292 |
|
2293 |
-
#: lib/firewall_policies.php:
|
2294 |
msgid "Sanitise <code>PATH_INFO</code>"
|
2295 |
msgstr "Nettoyer <code>PATH_INFO</code>"
|
2296 |
|
2297 |
-
#: lib/firewall_policies.php:
|
2298 |
msgid "This option is not compatible with your actual configuration."
|
2299 |
msgstr ""
|
2300 |
"Cette option n'est pas compatible avec la configuration de votre serveur."
|
2301 |
|
2302 |
-
#: lib/firewall_policies.php:
|
2303 |
msgid "Various"
|
2304 |
msgstr "Divers"
|
2305 |
|
2306 |
-
#: lib/firewall_policies.php:
|
2307 |
msgid "Block the <code>DOCUMENT_ROOT</code> server variable in HTTP request"
|
2308 |
msgstr ""
|
2309 |
"Bloquer les requêtes HTTP contenant la variable <code>DOCUMENT_ROOT</code>"
|
2310 |
|
2311 |
-
#: lib/firewall_policies.php:
|
2312 |
msgid "Block ASCII character 0x00 (NULL byte)"
|
2313 |
msgstr "Bloquer le caractère ASCII 0x00 (NULL byte)"
|
2314 |
|
2315 |
-
#: lib/firewall_policies.php:
|
2316 |
msgid "Block ASCII control characters 1 to 8 and 14 to 31"
|
2317 |
msgstr "Bloquer les caractères de contrôle ASCII 1 à 8 et 14 à 31"
|
2318 |
|
2319 |
-
#: lib/firewall_policies.php:
|
2320 |
msgid "Save Firewall Policies"
|
2321 |
msgstr "Sauvegarder les options"
|
2322 |
|
2323 |
-
#: lib/firewall_policies.php:
|
2324 |
msgid "Restore Default Values"
|
2325 |
msgstr "Rétablir les valeurs par défaut"
|
2326 |
|
2327 |
-
#: lib/help.php:37 ninjafirewall.php:
|
2328 |
msgid "Overview"
|
2329 |
msgstr "Aperçu"
|
2330 |
|
2331 |
-
#: lib/help.php:
|
|
|
|
|
|
|
|
|
2332 |
msgid ""
|
2333 |
-
"
|
2334 |
-
"
|
2335 |
-
"possible errors and warnings will be displayed here."
|
2336 |
msgstr ""
|
2337 |
-
"
|
2338 |
-
"
|
2339 |
-
"de la consulter fréquemment car, en cas de problèmes, ceux-ci seront "
|
2340 |
-
"indiqués ici."
|
2341 |
-
|
2342 |
-
#: lib/help.php:41
|
2343 |
-
msgid "For more information:"
|
2344 |
-
msgstr "Pour plus d'information :"
|
2345 |
|
2346 |
-
#: lib/help.php:
|
2347 |
-
msgid "
|
2348 |
-
msgstr "
|
2349 |
|
2350 |
-
#: lib/help.php:
|
2351 |
-
msgid "
|
2352 |
-
msgstr "
|
|
|
2353 |
|
2354 |
#: lib/help.php:47
|
2355 |
-
msgid "
|
2356 |
-
msgstr "
|
2357 |
|
2358 |
#: lib/help.php:48
|
2359 |
-
msgid "
|
2360 |
-
msgstr "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2361 |
|
2362 |
-
#: lib/help.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2363 |
msgid "Monthly stats"
|
2364 |
msgstr "Statistiques mensuelles"
|
2365 |
|
2366 |
-
#: lib/help.php:
|
2367 |
msgid ""
|
2368 |
"Statistics are taken from the current log. It is rotated on the first day of "
|
2369 |
"each month."
|
@@ -2371,7 +1951,7 @@ msgstr ""
|
|
2371 |
"Les statistiques sont tirées du journal du pare-feu qui est, par défaut, "
|
2372 |
"réinitialisé le 1er jour de chaque mois."
|
2373 |
|
2374 |
-
#: lib/help.php:
|
2375 |
#, php-format
|
2376 |
msgid ""
|
2377 |
"You can view the log by clicking on the <a href=\"%s\">Firewall Log</a> menu."
|
@@ -2379,11 +1959,11 @@ msgstr ""
|
|
2379 |
"Vous pouvez consuler ce journal en cliquant sur le menu <a href=\"%s"
|
2380 |
"\">Journal du Pare-feu</a>."
|
2381 |
|
2382 |
-
#: lib/help.php:
|
2383 |
msgid "Benchmarks"
|
2384 |
msgstr "Performances"
|
2385 |
|
2386 |
-
#: lib/help.php:
|
2387 |
msgid ""
|
2388 |
"Benchmarks show the time NinjaFirewall took, in seconds, to process each "
|
2389 |
"request it has blocked."
|
@@ -2391,7 +1971,7 @@ msgstr ""
|
|
2391 |
"Indique le temps qu'il a fallu à NinjaFirewall pour intercepter, analyser et "
|
2392 |
"bloquer les requêtes dangereuses."
|
2393 |
|
2394 |
-
#: lib/help.php:
|
2395 |
#, php-format
|
2396 |
msgid ""
|
2397 |
"This option allows you to disable NinjaFirewall. It has basically the same "
|
@@ -2401,12 +1981,12 @@ msgstr ""
|
|
2401 |
"essentiellement le même effet que la désactivation effectuée depuis la page "
|
2402 |
"<a href=\"%s\">Extensions</a> du Tableau de bord."
|
2403 |
|
2404 |
-
#: lib/help.php:
|
2405 |
msgid "Your site will remain unprotected until you enable it again."
|
2406 |
msgstr ""
|
2407 |
"Votre site ne sera plus protégé par NinjaFirewall durant cette période."
|
2408 |
|
2409 |
-
#: lib/help.php:
|
2410 |
#, php-format
|
2411 |
msgid ""
|
2412 |
"In Debugging mode, NinjaFirewall will not block or sanitise suspicious "
|
@@ -2418,7 +1998,7 @@ msgstr ""
|
|
2418 |
"Les lignes correspondantes seront indiquée par la mention <code>DEBUG_ON</"
|
2419 |
"code> dans la colonne LEVEL du journal. "
|
2420 |
|
2421 |
-
#: lib/help.php:
|
2422 |
msgid ""
|
2423 |
"We recommend to run it in Debugging Mode for at least 24 hours after "
|
2424 |
"installing it on a new site and then to keep an eye on the firewall log "
|
@@ -2432,7 +2012,7 @@ msgstr ""
|
|
2432 |
"journal du pare-feu pour y voir les éventuels problèmes et, le cas échéant, "
|
2433 |
"désactiver les options ou règles pouvant créer des faux-positifs."
|
2434 |
|
2435 |
-
#: lib/help.php:
|
2436 |
msgid ""
|
2437 |
"This option will anonymize IP addresses in the firewall log by removing "
|
2438 |
"their last 3 characters."
|
@@ -2440,14 +2020,14 @@ msgstr ""
|
|
2440 |
"Cette option anonymise les adresses IP dans le journal du pare-feu en "
|
2441 |
"supprimant leurs 3 derniers caractères."
|
2442 |
|
2443 |
-
#: lib/help.php:
|
2444 |
msgid ""
|
2445 |
"It does not apply to private IP addresses and the Login Protection feature."
|
2446 |
msgstr ""
|
2447 |
"Elle ne s'applique pas aux adresses IP privées, ni à l'option Page de "
|
2448 |
"Connexion."
|
2449 |
|
2450 |
-
#: lib/help.php:
|
2451 |
msgid ""
|
2452 |
"Note that it will affect only IP addresses written to the firewall log after "
|
2453 |
"enabling this option."
|
@@ -2455,7 +2035,7 @@ msgstr ""
|
|
2455 |
"Notez que seules les adresses IP enregistrées dans le journal du pare-feu "
|
2456 |
"après avoir activé cette option sont concernées."
|
2457 |
|
2458 |
-
#: lib/help.php:
|
2459 |
msgid ""
|
2460 |
"Also, if you are redirecting events to the syslog server (NinjaFirewall "
|
2461 |
"<font color=\"#21759B\">WP+</font> Edition), IP addresses will be anonymized "
|
@@ -2464,11 +2044,11 @@ msgstr ""
|
|
2464 |
"En outre, si vous redirigez les événements vers le serveur syslog, les "
|
2465 |
"adresses IP y seront également anonymisées."
|
2466 |
|
2467 |
-
#: lib/help.php:
|
2468 |
msgid "Error code and message to return"
|
2469 |
msgstr "Code HTTP et Message à retourner"
|
2470 |
|
2471 |
-
#: lib/help.php:
|
2472 |
msgid ""
|
2473 |
"Lets you customize the HTTP error code returned by NinjaFirewall when "
|
2474 |
"blocking a dangerous request and the message to display to the user."
|
@@ -2477,16 +2057,16 @@ msgstr ""
|
|
2477 |
"retourne lorsqu'il bloque une requête dangereuse ansi que le message à "
|
2478 |
"afficher à l'utilisateur bloqué."
|
2479 |
|
2480 |
-
#: lib/help.php:
|
2481 |
msgid "You can use any HTML tags and 3 built-in variables:"
|
2482 |
msgstr ""
|
2483 |
"Vous pouvez utiliser le language HTML ainsi que les 3 variables suivantes :"
|
2484 |
|
2485 |
-
#: lib/help.php:
|
2486 |
msgid "the blocked user IP."
|
2487 |
msgstr "l'adresse IP de l'utilisateur."
|
2488 |
|
2489 |
-
#: lib/help.php:
|
2490 |
msgid ""
|
2491 |
"the unique incident number as it will appear in the firewall log \"INCIDENT"
|
2492 |
"\" column."
|
@@ -2494,15 +2074,15 @@ msgstr ""
|
|
2494 |
"le numéro d'incident, tel qu'il apparaîtra dans la colonne \"INCIDENT\" du "
|
2495 |
"journal du pare-feu."
|
2496 |
|
2497 |
-
#: lib/help.php:
|
2498 |
msgid "NinjaFirewall logo."
|
2499 |
msgstr "le logo de NinjaFirewall."
|
2500 |
|
2501 |
-
#: lib/help.php:
|
2502 |
msgid "Export/import configuration"
|
2503 |
msgstr "Configuration de l'exportation / importation"
|
2504 |
|
2505 |
-
#: lib/help.php:
|
2506 |
#, php-format
|
2507 |
msgid ""
|
2508 |
"This options lets you export you current configuration or import it from "
|
@@ -2515,12 +2095,12 @@ msgstr ""
|
|
2515 |
"(%s), sinon il sera rejeté. Notez que l'importation effacera toute votre "
|
2516 |
"configuration (options et règles du pare-feu), sauf votre licence WP+."
|
2517 |
|
2518 |
-
#: lib/help.php:
|
2519 |
msgid "\"File Check\" configuration will not be exported/imported."
|
2520 |
msgstr ""
|
2521 |
"La configuration de \"File Check\" ne peut pas être importée ou exportée."
|
2522 |
|
2523 |
-
#: lib/help.php:
|
2524 |
msgid ""
|
2525 |
"NinjaFirewall will automatically backup its configuration (options, policies "
|
2526 |
"and rules) everyday for the last 5 days. If you want to restore its "
|
@@ -2531,7 +2111,7 @@ msgstr ""
|
|
2531 |
"restaurer sa configuration à une date antérieure, sélectionnez le fichier "
|
2532 |
"correspondant dans la liste."
|
2533 |
|
2534 |
-
#: lib/help.php:
|
2535 |
#, php-format
|
2536 |
msgid ""
|
2537 |
"Keep in mind, however, that the Firewall Policies apply to any PHP scripts "
|
@@ -2542,11 +2122,11 @@ msgstr ""
|
|
2542 |
"scripts PHP</b> situés à l'intérieur du répertoire %s ainsi que ses sous-"
|
2543 |
"répertoires, et non pas seulement à la page d'index de WordPress."
|
2544 |
|
2545 |
-
#: lib/help.php:
|
2546 |
msgid "Policies overview"
|
2547 |
msgstr "Politiques du pare-feu"
|
2548 |
|
2549 |
-
#: lib/help.php:
|
2550 |
#, php-format
|
2551 |
msgid ""
|
2552 |
"Because NinjaFirewall sits in front of WordPress, it can hook, scan and "
|
@@ -2565,7 +2145,7 @@ msgstr ""
|
|
2565 |
"adresses IP, avant que celles-ci n'atteignent votre application, que ce soit "
|
2566 |
"en mode HTTP ou HTTPS."
|
2567 |
|
2568 |
-
#: lib/help.php:
|
2569 |
msgid ""
|
2570 |
"Use the options below to enable, disable or to tweak these rules according "
|
2571 |
"to your needs."
|
@@ -2573,11 +2153,11 @@ msgstr ""
|
|
2573 |
"Utilisez les options ci-dessous pour configurer NinjaFirewall suivant vos "
|
2574 |
"besoins."
|
2575 |
|
2576 |
-
#: lib/help.php:
|
2577 |
msgid "Scan and Sanitise"
|
2578 |
msgstr "Filtrer et Nettoyer"
|
2579 |
|
2580 |
-
#: lib/help.php:
|
2581 |
msgid ""
|
2582 |
"You can choose to scan and reject dangerous content but also to sanitise "
|
2583 |
"requests and variables. Those two actions are different and can be combined "
|
@@ -2587,7 +2167,7 @@ msgstr ""
|
|
2587 |
"mais aussi de les nettoyer. Ces deux actions sont différentes et peuvent "
|
2588 |
"être combinées pour plus de sécurité."
|
2589 |
|
2590 |
-
#: lib/help.php:
|
2591 |
msgid ""
|
2592 |
"Scan : if anything suspicious is detected, NinjaFirewall will block the "
|
2593 |
"request and return an HTTP error code and message (defined in the \"Firewall "
|
@@ -2599,7 +2179,7 @@ msgstr ""
|
|
2599 |
"du Pare-feu\"). La requête ne pourra pas aboutir et la connexion sera fermée "
|
2600 |
"immédiatement."
|
2601 |
|
2602 |
-
#: lib/help.php:
|
2603 |
#, php-format
|
2604 |
msgid ""
|
2605 |
"Sanitise : this option will not block but sanitise the user request by "
|
@@ -2617,7 +2197,7 @@ msgstr ""
|
|
2617 |
"HTML correspondantes. S'il s'agit d'une variable et de sa valeur (<code>?"
|
2618 |
"variable=valeur</code>), les deux éléments seront nettoyés."
|
2619 |
|
2620 |
-
#: lib/help.php:
|
2621 |
msgid ""
|
2622 |
"This action will be performed when the filtering process is over, right "
|
2623 |
"before NinjaFirewall forwards the request to your PHP script."
|
@@ -2626,7 +2206,7 @@ msgstr ""
|
|
2626 |
"juste avant que NinjaFirewall fasse suivre la requête à votre application "
|
2627 |
"PHP."
|
2628 |
|
2629 |
-
#: lib/help.php:
|
2630 |
msgid ""
|
2631 |
"If you enabled <code>POST</code> requests sanitising, articles and messages "
|
2632 |
"posted by your visitors could be corrupted with excessive backslashes or "
|
@@ -2636,26 +2216,26 @@ msgstr ""
|
|
2636 |
"commentaires et messages de vos visiteurs pourraient être endommagés par "
|
2637 |
"cette option."
|
2638 |
|
2639 |
-
#: lib/help.php:
|
2640 |
msgid "Whether to filter HTTP and/or HTTPS traffic"
|
2641 |
msgstr ""
|
2642 |
"Sélectionnez le type de trafic filtré par le pare-feu (HTTP et/ou HTTPS)."
|
2643 |
|
2644 |
-
#: lib/help.php:
|
2645 |
msgid "File Uploads:"
|
2646 |
msgstr "Autoriser les téléchargements :"
|
2647 |
|
2648 |
-
#: lib/help.php:
|
2649 |
msgid "whether to allow/disallow file uploads."
|
2650 |
msgstr ""
|
2651 |
"vous pouvez autoriser ou interdire tout téléchargement de fichiers vers "
|
2652 |
"votre site."
|
2653 |
|
2654 |
-
#: lib/help.php:
|
2655 |
msgid "Sanitise filenames:"
|
2656 |
msgstr "Nettoyer le nom des fichiers :"
|
2657 |
|
2658 |
-
#: lib/help.php:
|
2659 |
msgid ""
|
2660 |
"any character that is not a letter <code>a-zA-Z</code>, a digit <code>0-9</"
|
2661 |
"code>, a dot <code>.</code>, a hyphen <code>-</code> or an underscore "
|
@@ -2667,7 +2247,7 @@ msgstr ""
|
|
2667 |
"d'union <code>-</code> ou un caractère de soulignement <code>_</code>, celui-"
|
2668 |
"si sera remplacé par le caractère de substitution."
|
2669 |
|
2670 |
-
#: lib/help.php:
|
2671 |
msgid ""
|
2672 |
"Whether to block direct access to PHP files located in specific WordPress "
|
2673 |
"directories."
|
@@ -2675,7 +2255,7 @@ msgstr ""
|
|
2675 |
"S'il faut bloquer l’accès direct à tout fichier PHP se trouvant dans l'un de "
|
2676 |
"ces répertoires."
|
2677 |
|
2678 |
-
#: lib/help.php:
|
2679 |
msgid ""
|
2680 |
"enabling this policy will block any attempt (e.g., exploiting a "
|
2681 |
"vulnerability, using a backdoor etc) to modify some important WordPress "
|
@@ -2688,7 +2268,7 @@ msgstr ""
|
|
2688 |
"enverra également une alerte par e-mail avec tous les détails concernant le "
|
2689 |
"problème. Elle est activée par défaut."
|
2690 |
|
2691 |
-
#: lib/help.php:
|
2692 |
msgid ""
|
2693 |
"enabling this policy will block any attempt (e.g., exploiting a "
|
2694 |
"vulnerability, using a backdoor etc) to create a user account. If you allow "
|
@@ -2699,7 +2279,7 @@ msgstr ""
|
|
2699 |
"de création d'un compte d'utilisateur. Si vous autorisez l'inscription des "
|
2700 |
"utilisateurs, vous ne devez pas l'activer."
|
2701 |
|
2702 |
-
#: lib/help.php:
|
2703 |
#, php-format
|
2704 |
msgid ""
|
2705 |
"many vulnerabilities in plugins are exploited via the admin-ajax.php script. "
|
@@ -2713,11 +2293,11 @@ msgstr ""
|
|
2713 |
"d’y accéder. L'adresse IP du serveur (%s) et les adresses IP privées ne "
|
2714 |
"seront pas bloquées."
|
2715 |
|
2716 |
-
#: lib/help.php:
|
2717 |
msgid "Protect against username enumeration:"
|
2718 |
msgstr "Protéger contre l'énumération des comptes utilisateurs :"
|
2719 |
|
2720 |
-
#: lib/help.php:
|
2721 |
msgid ""
|
2722 |
"it is possible to enumerate usernames either through the WordPress author "
|
2723 |
"archives, the REST API or the login page. Although this is not a "
|
@@ -2734,11 +2314,11 @@ msgstr ""
|
|
2734 |
"WordPress, certains hackers utilisent ces astuces pour récupérer les noms "
|
2735 |
"d'utilisateur afin de lancer des attaques par force brute plus précises."
|
2736 |
|
2737 |
-
#: lib/help.php:
|
2738 |
msgid "WordPress REST API:"
|
2739 |
msgstr "API REST de WordPress :"
|
2740 |
|
2741 |
-
#: lib/help.php:
|
2742 |
msgid ""
|
2743 |
"it allows you to access your WordPress site's data through an easy-to-use "
|
2744 |
"HTTP REST API. Since WordPress 4.7, it is enabled by default. NinjaFirewall "
|
@@ -2748,11 +2328,11 @@ msgstr ""
|
|
2748 |
"Depuis WordPress 4.7, cette elle est activée par défaut. NinjaFirewall vous "
|
2749 |
"permet de bloquer tout accès a cette API si vous ne l'utilisez pas."
|
2750 |
|
2751 |
-
#: lib/help.php:
|
2752 |
msgid "WordPress XML-RPC API:"
|
2753 |
msgstr "API XML-RPC de WordPress :"
|
2754 |
|
2755 |
-
#: lib/help.php:
|
2756 |
msgid ""
|
2757 |
"XML-RPC is a remote procedure call (RPC) protocol which uses XML to encode "
|
2758 |
"its calls and HTTP as a transport mechanism. WordPress has an XMLRPC API "
|
@@ -2772,7 +2352,7 @@ msgstr ""
|
|
2772 |
"requêtes qui utilisent la méthode <code>system.multicall</code> ou les "
|
2773 |
"Pingbacks."
|
2774 |
|
2775 |
-
#: lib/help.php:
|
2776 |
msgid ""
|
2777 |
"Block <code>POST</code> requests in the themes folder <code>/wp-content/"
|
2778 |
"themes</code>:"
|
@@ -2780,7 +2360,7 @@ msgstr ""
|
|
2780 |
"Bloquer les requêtes <code>POST</code> dans le dossier des thèmes <code>/wp-"
|
2781 |
"content/themes</code> :"
|
2782 |
|
2783 |
-
#: lib/help.php:
|
2784 |
msgid ""
|
2785 |
"this option can be useful to block hackers from installing backdoor in the "
|
2786 |
"PHP theme files. However, because some custom themes may include an HTML "
|
@@ -2792,13 +2372,13 @@ msgstr ""
|
|
2792 |
"de recherche ou de contact etc) nécessitant des requêtes <code>POST</code> , "
|
2793 |
"cette option n'est pas activée par défaut."
|
2794 |
|
2795 |
-
#: lib/help.php:
|
2796 |
msgid "Force SSL for admin and logins <code>FORCE_SSL_ADMIN</code>:"
|
2797 |
msgstr ""
|
2798 |
"Forcer la connexion sécurisée au Tableau de bord <code>FORCE_SSL_ADMIN</"
|
2799 |
"code> :"
|
2800 |
|
2801 |
-
#: lib/help.php:
|
2802 |
msgid ""
|
2803 |
"enable this option when you want to secure logins and the admin area so that "
|
2804 |
"both passwords and cookies are never sent in the clear. Ensure that you can "
|
@@ -2810,13 +2390,13 @@ msgstr ""
|
|
2810 |
"connexion via HTTPS avant d'activer cette option, sinon vous risquez de "
|
2811 |
"bloquer l’accès à votre site !"
|
2812 |
|
2813 |
-
#: lib/help.php:
|
2814 |
msgid "Disable the plugin and theme editor <code>DISALLOW_FILE_EDIT</code>:"
|
2815 |
msgstr ""
|
2816 |
"Désactiver l’éditeur de thème et d'extension <code>DISALLOW_FILE_EDIT</"
|
2817 |
"code> :"
|
2818 |
|
2819 |
-
#: lib/help.php:
|
2820 |
msgid ""
|
2821 |
"disabling the plugin and theme editor provides an additional layer of "
|
2822 |
"security if a hacker gains access to a well-privileged user account."
|
@@ -2826,14 +2406,14 @@ msgstr ""
|
|
2826 |
"pourrait pas l'utiliser pour insérer une porte dérobée dans l'un de vos "
|
2827 |
"scripts PHP."
|
2828 |
|
2829 |
-
#: lib/help.php:
|
2830 |
msgid ""
|
2831 |
"Disable plugin and theme update/installation <code>DISALLOW_FILE_MODS</code>:"
|
2832 |
msgstr ""
|
2833 |
"Désactiver l'installation et mise à jour des thèmes et extensions "
|
2834 |
"<code>DISALLOW_FILE_MODS</code> :"
|
2835 |
|
2836 |
-
#: lib/help.php:
|
2837 |
msgid ""
|
2838 |
"this option will block users being able to use the plugin and theme "
|
2839 |
"installation/update functionality from the WordPress admin area. Setting "
|
@@ -2843,33 +2423,34 @@ msgstr ""
|
|
2843 |
"installation ou mise à jour d'une extension ou d'un thème. Elle désactive "
|
2844 |
"aussi l’éditeur de thème et d'extension."
|
2845 |
|
2846 |
-
#: lib/help.php:
|
2847 |
-
msgid "
|
|
|
2848 |
msgstr ""
|
2849 |
-
"Désactiver le gestionnaire d'erreurs fatales
|
2850 |
-
"code> :"
|
2851 |
|
2852 |
-
#: lib/help.php:
|
2853 |
msgid ""
|
2854 |
"this option will disable the WSOD protection introduced in WordPress 5.1."
|
2855 |
msgstr ""
|
2856 |
"cette option désactivera la protection WSOD introduite dans WordPress 5.1."
|
2857 |
|
2858 |
-
#: lib/help.php:
|
2859 |
msgid "Whether to scan and/or sanitise the <code>GET</code> variable."
|
2860 |
msgstr "S'il faut filtrer / nettoyer la variable <code>GET</code>."
|
2861 |
|
2862 |
-
#: lib/help.php:
|
2863 |
msgid "Whether to scan and/or sanitise the <code>POST</code> variable."
|
2864 |
msgstr "S'il faut filtrer / nettoyer la variable <code>POST</code>."
|
2865 |
|
2866 |
-
#: lib/help.php:
|
2867 |
msgid "Decode Base64-encoded <code>POST</code> variable:"
|
2868 |
msgstr ""
|
2869 |
"Décoder les chaîne encodées en Base64 dans la variable <code>POST</"
|
2870 |
"code> :"
|
2871 |
|
2872 |
-
#: lib/help.php:
|
2873 |
msgid ""
|
2874 |
"NinjaFirewall will decode and scan base64 encoded values in order to detect "
|
2875 |
"obfuscated malicious code. This option is only available for the <code>POST</"
|
@@ -2878,41 +2459,41 @@ msgstr ""
|
|
2878 |
"NinjaFirewall peut décoder et filtrer les chaînes de caractères encodées en "
|
2879 |
"Base64 afin d'y détecter du code malveillant caché."
|
2880 |
|
2881 |
-
#: lib/help.php:
|
2882 |
msgid "Whether to sanitise the <code>REQUEST</code> variable."
|
2883 |
msgstr "S'il faut filtrer / nettoyer la variable <code>REQUEST</code>."
|
2884 |
|
2885 |
-
#: lib/help.php:
|
2886 |
msgid "Whether to scan and/or sanitise cookies."
|
2887 |
msgstr "S'il faut filtrer / nettoyer les cookies."
|
2888 |
|
2889 |
-
#: lib/help.php:
|
2890 |
msgid "Whether to scan and/or sanitise <code>HTTP_USER_AGENT</code> requests."
|
2891 |
msgstr "S'il faut filtrer / nettoyer la variable <code>HTTP_USER_AGENT</code>."
|
2892 |
|
2893 |
-
#: lib/help.php:
|
2894 |
msgid "Block suspicious bots/scanners:"
|
2895 |
msgstr "Bloquer les requêtes provenant de bots/scanners malveillants :"
|
2896 |
|
2897 |
-
#: lib/help.php:
|
2898 |
msgid ""
|
2899 |
"rejects some known bots, scanners and various malicious scripts attempting "
|
2900 |
"to access your blog."
|
2901 |
msgstr ""
|
2902 |
"cette option peut bloquer de nombreux crawlers, spambots et autres scrappers."
|
2903 |
|
2904 |
-
#: lib/help.php:
|
2905 |
msgid "Whether to scan and/or sanitise <code>HTTP_REFERER</code> requests."
|
2906 |
msgstr "S'il faut filtrer / nettoyer la variable <code>HTTP_REFERER</code>."
|
2907 |
|
2908 |
-
#: lib/help.php:
|
2909 |
msgid ""
|
2910 |
"Block POST requests that do not have an <code>HTTP_REFERER</code> header:"
|
2911 |
msgstr ""
|
2912 |
"Bloquer les requêtes POST qui n'ont pas d'en-tête <code>HTTP_REFERER</"
|
2913 |
"code> :"
|
2914 |
|
2915 |
-
#: lib/help.php:
|
2916 |
msgid ""
|
2917 |
"this option will block any <code>POST</code> request that does not have a "
|
2918 |
"Referrer header (<code>HTTP_REFERER</code> variable). If you need external "
|
@@ -2929,12 +2510,12 @@ msgstr ""
|
|
2929 |
"vous utilisez des scripts comme Paypal IPN, WordPress WP-Cron etc, "
|
2930 |
"désactivez cette fonction."
|
2931 |
|
2932 |
-
#: lib/help.php:
|
2933 |
msgid "Block localhost IP in <code>GET/POST</code> requests:"
|
2934 |
msgstr ""
|
2935 |
"Bloquer les requêtes <code>GET/POST</code> contenant l'IP localhost :"
|
2936 |
|
2937 |
-
#: lib/help.php:
|
2938 |
msgid ""
|
2939 |
"this option will block any <code>GET</code> or <code>POST</code> request "
|
2940 |
"containing the localhost IP (127.0.0.1). It can be useful to block SQL "
|
@@ -2945,13 +2526,13 @@ msgstr ""
|
|
2945 |
"les programmes malveillants. Attention toutefois à ne pas bloquer certains "
|
2946 |
"scripts d'installation ou de configuration si vous l'activez. "
|
2947 |
|
2948 |
-
#: lib/help.php:
|
2949 |
msgid "Block HTTP requests with an IP in the <code>HTTP_HOST</code> header:"
|
2950 |
msgstr ""
|
2951 |
"Bloquer les requêtes HTTP dont l'en-tête <code>HTTP_HOST</code> contient une "
|
2952 |
"IP :"
|
2953 |
|
2954 |
-
#: lib/help.php:
|
2955 |
#, php-format
|
2956 |
msgid ""
|
2957 |
"this option will reject any request using an IP instead of a domain name in "
|
@@ -2967,12 +2548,12 @@ msgstr ""
|
|
2967 |
"application trouvent les sites en scannant les plages d'adresses IP plutôt "
|
2968 |
"que les noms de domaine. "
|
2969 |
|
2970 |
-
#: lib/help.php:
|
2971 |
msgid "Scan traffic coming from localhost and private IP address spaces:"
|
2972 |
msgstr ""
|
2973 |
"Filtrer les connexions provenant de localhost et d'adresses IP privées :"
|
2974 |
|
2975 |
-
#: lib/help.php:
|
2976 |
msgid ""
|
2977 |
"this option will allow the firewall to scan traffic from all non-routable "
|
2978 |
"private IPs (IPv4 and IPv6) as well as the localhost IP. We recommend to "
|
@@ -2983,7 +2564,7 @@ msgstr ""
|
|
2983 |
"Nous vous recommandons de le garder activé si vous avez 2 ou plusieurs "
|
2984 |
"serveurs reliés entre eux."
|
2985 |
|
2986 |
-
#: lib/help.php:
|
2987 |
msgid ""
|
2988 |
"In addition to filtering incoming requests, NinjaFirewall can also hook the "
|
2989 |
"HTTP response in order to alter its headers. Those modifications can help to "
|
@@ -2994,7 +2575,7 @@ msgstr ""
|
|
2994 |
"peuvent aider à atténuer les menaces telles que les attaques XSS, phishing "
|
2995 |
"et clickjacking."
|
2996 |
|
2997 |
-
#: lib/help.php:
|
2998 |
msgid ""
|
2999 |
"Set <code>X-Content-Type-Options</code> to protect against MIME type "
|
3000 |
"confusion attacks:"
|
@@ -3002,7 +2583,7 @@ msgstr ""
|
|
3002 |
"Activer <code>X-Content-Type-Options</code> pour protéger contre les "
|
3003 |
"attaques basées sur la confusion du type MIME :"
|
3004 |
|
3005 |
-
#: lib/help.php:
|
3006 |
msgid ""
|
3007 |
"this header will send the nosniff value to instruct the browser to disable "
|
3008 |
"content or MIME sniffing and to use the content-type returned by the server. "
|
@@ -3017,14 +2598,14 @@ msgstr ""
|
|
3017 |
"dans certains cas, peut entraîner des problèmes de sécurité tels que les "
|
3018 |
"attaques basées sur la confusion du type MIME."
|
3019 |
|
3020 |
-
#: lib/help.php:
|
3021 |
msgid ""
|
3022 |
"Set <code>X-Frame-Options</code> to protect against clickjacking attempts:"
|
3023 |
msgstr ""
|
3024 |
"Activer <code>X-Frame-Options</code> pour protéger contre les attaques de "
|
3025 |
"détournement de clic (clickjacking) :"
|
3026 |
|
3027 |
-
#: lib/help.php:
|
3028 |
msgid ""
|
3029 |
"this header indicates a policy whether a browser must not allow to render a "
|
3030 |
"page in a <frame> or <iframe>. Hosts can declare this policy in "
|
@@ -3038,7 +2619,7 @@ msgstr ""
|
|
3038 |
"sont pas intégré dans d'autres pages ou cadres, notamment d'un autre site. "
|
3039 |
"NinjaFirewall accepte deux valeurs différentes :"
|
3040 |
|
3041 |
-
#: lib/help.php:
|
3042 |
msgid ""
|
3043 |
"a browser receiving content with this header must not display this content "
|
3044 |
"in any frame from a page of different origin than the content itself."
|
@@ -3046,7 +2627,7 @@ msgstr ""
|
|
3046 |
"un navigateur ne doit pas afficher le contenu dans une <frame> ou <"
|
3047 |
"iframe> d'une page d'origine différente que le contenu lui-même."
|
3048 |
|
3049 |
-
#: lib/help.php:
|
3050 |
msgid ""
|
3051 |
"a browser receiving content with this header must not display this content "
|
3052 |
"in any frame."
|
@@ -3054,13 +2635,13 @@ msgstr ""
|
|
3054 |
"un navigateur ne doit jamais afficher le contenu dans une <frame> ou "
|
3055 |
"<iframe>"
|
3056 |
|
3057 |
-
#: lib/help.php:
|
3058 |
msgid "NinjaFirewall does not support the <code>ALLOW-FROM</code> value."
|
3059 |
msgstr ""
|
3060 |
"La valeur <code>ALLOW-FROM</code> n'est pas prise en charge par "
|
3061 |
"NinjaFirewall."
|
3062 |
|
3063 |
-
#: lib/help.php:
|
3064 |
msgid ""
|
3065 |
"Since v3.1.3, WordPress sets this value to <code>SAMEORIGIN</code> for the "
|
3066 |
"administrator and the login page only."
|
@@ -3068,14 +2649,14 @@ msgstr ""
|
|
3068 |
"Depuis la version 3.1.3, WordPress active <code>SAMEORIGIN</code> pour "
|
3069 |
"l'administrateur et la page de connexion uniquement."
|
3070 |
|
3071 |
-
#: lib/help.php:
|
3072 |
msgid ""
|
3073 |
"Set <code>X-XSS-Protection</code> (IE/Edge, Chrome, Opera and Safari "
|
3074 |
"browsers):"
|
3075 |
msgstr ""
|
3076 |
"Activer <code>X-XSS-Protection</code> (IE/Edge, Opera, Chrome et Safari)"
|
3077 |
|
3078 |
-
#: lib/help.php:
|
3079 |
msgid ""
|
3080 |
"this header allows browsers to identify and block XSS attacks by preventing "
|
3081 |
"malicious scripts from executing. It is enabled by default on all compatible "
|
@@ -3085,7 +2666,7 @@ msgstr ""
|
|
3085 |
"attaques XSS en empêchant un script malveillant de s'exécuter. Notez que "
|
3086 |
"cette option est activée par défaut sur ces navigateurs."
|
3087 |
|
3088 |
-
#: lib/help.php:
|
3089 |
msgid ""
|
3090 |
"If a visitor disabled their browser's XSS filter, you cannot re-enable it "
|
3091 |
"with that option."
|
@@ -3093,14 +2674,14 @@ msgstr ""
|
|
3093 |
"Si un visiteur désactive le filtre XSS de son navigateur, vous ne pouvez pas "
|
3094 |
"le réactiver avec cette option."
|
3095 |
|
3096 |
-
#: lib/help.php:
|
3097 |
msgid ""
|
3098 |
"Force <code>HttpOnly</code> flag on all cookies to mitigate XSS attacks:"
|
3099 |
msgstr ""
|
3100 |
"Activer la propriété <code>HttpOnly</code> pour tous les cookies afin "
|
3101 |
"d'atténuer les menaces XSS qui génèrent des vols de cookies :"
|
3102 |
|
3103 |
-
#: lib/help.php:
|
3104 |
msgid ""
|
3105 |
"adding this flag to cookies helps to mitigate the risk of cross-site "
|
3106 |
"scripting by preventing them from being accessed through client-side "
|
@@ -3117,7 +2698,7 @@ msgstr ""
|
|
3117 |
"dans la réponse HTTP juste avant que celle-ci ne soit envoyée à vos "
|
3118 |
"visiteurs."
|
3119 |
|
3120 |
-
#: lib/help.php:
|
3121 |
msgid ""
|
3122 |
"If your PHP scripts send cookies that need to be accessed from JavaScript, "
|
3123 |
"you should keep that option disabled."
|
@@ -3125,7 +2706,7 @@ msgstr ""
|
|
3125 |
"Si vos scripts PHP envoient des cookies qui doivent être accessibles à "
|
3126 |
"partir de JavaScript, vous devez garder cette option désactivée."
|
3127 |
|
3128 |
-
#: lib/help.php:
|
3129 |
msgid ""
|
3130 |
"Set <code>Strict-Transport-Security</code> (HSTS) to enforce secure "
|
3131 |
"connections to the server:"
|
@@ -3133,7 +2714,7 @@ msgstr ""
|
|
3133 |
"Activer <code>Strict-Transport-Security</code> (HSTS) pour forcer les "
|
3134 |
"connexions sécurisées vers le serveur "
|
3135 |
|
3136 |
-
#: lib/help.php:
|
3137 |
msgid ""
|
3138 |
"this policy enforces secure HTTPS connections to the server. Web browsers "
|
3139 |
"will not allow the user to access the web application over insecure HTTP "
|
@@ -3146,11 +2727,11 @@ msgstr ""
|
|
3146 |
"de cookies ou les attaques du type \"Man-in-the-middle\". La plupart des "
|
3147 |
"navigateurs récents sont compatibles avec cette politique."
|
3148 |
|
3149 |
-
#: lib/help.php:
|
3150 |
msgid "Set <code>Content-Security-Policy</code>:"
|
3151 |
msgstr "Activer <code>Content-Security-Policy</code> :"
|
3152 |
|
3153 |
-
#: lib/help.php:
|
3154 |
msgid ""
|
3155 |
"this policy helps to mitigate threats such as XSS, phishing and clickjacking "
|
3156 |
"attacks. It covers JavaScript, CSS, HTML frames, web workers, fonts, images, "
|
@@ -3160,7 +2741,7 @@ msgstr ""
|
|
3160 |
"code JavaScript, les styles CSS, frames/iframes HTML, polices, images, "
|
3161 |
"objets (Java, ActiveX, fichiers audio et video), mais aussi les WebSocket."
|
3162 |
|
3163 |
-
#: lib/help.php:
|
3164 |
msgid ""
|
3165 |
"NinjaFirewall lets you configure the CSP policy separately for the frontend "
|
3166 |
"(blog, website) and the backend (WordPress admin dashboard)."
|
@@ -3168,11 +2749,11 @@ msgstr ""
|
|
3168 |
"NinjaFirewall vous permet de configurer CSP séparément pour le site et "
|
3169 |
"l'interface d'administration de WordPress."
|
3170 |
|
3171 |
-
#: lib/help.php:
|
3172 |
msgid "Set <code>Referrer-Policy</code>:"
|
3173 |
msgstr "Activer <code>Referrer-Policy</code> :"
|
3174 |
|
3175 |
-
#: lib/help.php:
|
3176 |
msgid ""
|
3177 |
"this HTTP header governs which referrer information, sent in the Referer "
|
3178 |
"header, should be included with requests made."
|
@@ -3180,11 +2761,11 @@ msgstr ""
|
|
3180 |
"cet en-tête HTTP détermine quelles informations de provenance doivent être "
|
3181 |
"incluses dans l'en-tête Referer."
|
3182 |
|
3183 |
-
#: lib/help.php:
|
3184 |
msgid "Block PHP built-in wrappers:"
|
3185 |
msgstr "Bloquer les gestionnaires (wrappers) PHP dangereux :"
|
3186 |
|
3187 |
-
#: lib/help.php:
|
3188 |
msgid ""
|
3189 |
"PHP has several wrappers for use with the filesystem functions. It is "
|
3190 |
"possible for an attacker to use them to bypass firewalls and various IDS to "
|
@@ -3204,11 +2785,11 @@ msgstr ""
|
|
3204 |
"requête <code>GET</code> ou <code>POST</code>, des cookies, ou dans les "
|
3205 |
"variables <code>HTTP_REFERER</code> et <code>HTTP_USER_AGENT</code>."
|
3206 |
|
3207 |
-
#: lib/help.php:
|
3208 |
msgid "Block serialized PHP objects:"
|
3209 |
msgstr "Bloquer les objets PHP sérialisés :"
|
3210 |
|
3211 |
-
#: lib/help.php:
|
3212 |
#, php-format
|
3213 |
msgid ""
|
3214 |
"Object Serialization is a PHP feature used by many applications to generate "
|
@@ -3227,11 +2808,11 @@ msgstr ""
|
|
3227 |
"<code>POST</code>, les cookies, ou dans les variables <code>HTTP_REFERER</"
|
3228 |
"code> et <code>HTTP_USER_AGENT</code>."
|
3229 |
|
3230 |
-
#: lib/help.php:
|
3231 |
msgid "Hide PHP notice and error messages:"
|
3232 |
msgstr "Masquer les messages d'erreur de PHP :"
|
3233 |
|
3234 |
-
#: lib/help.php:
|
3235 |
msgid ""
|
3236 |
"this option lets you hide errors returned by your scripts. Such errors can "
|
3237 |
"leak sensitive informations which can be exploited by hackers."
|
@@ -3240,7 +2821,7 @@ msgstr ""
|
|
3240 |
"afficher des informations sensibles qui peuvent être exploitées "
|
3241 |
"ultérieurement par des pirates."
|
3242 |
|
3243 |
-
#: lib/help.php:
|
3244 |
msgid ""
|
3245 |
"Sanitise <code>PHP_SELF</code>, <code>PATH_TRANSLATED</code>, "
|
3246 |
"<code>PATH_INFO</code>:"
|
@@ -3248,7 +2829,7 @@ msgstr ""
|
|
3248 |
"Nettoyer <code>PHP_SELF</code>, <code>PATH_TRANSLATED</code>, "
|
3249 |
"<code>PATH_INFO</code> :"
|
3250 |
|
3251 |
-
#: lib/help.php:
|
3252 |
msgid ""
|
3253 |
"this option can sanitise any dangerous characters found in those 3 server "
|
3254 |
"variables to prevent various XSS and database injection attempts."
|
@@ -3256,7 +2837,7 @@ msgstr ""
|
|
3256 |
"activez ces options si vous souhaitez que le pare-feu nettoie ces trois "
|
3257 |
"variables."
|
3258 |
|
3259 |
-
#: lib/help.php:
|
3260 |
#, php-format
|
3261 |
msgid ""
|
3262 |
"Block the <code>DOCUMENT_ROOT</code> server variable (%s) in HTTP requests:"
|
@@ -3264,7 +2845,7 @@ msgstr ""
|
|
3264 |
"Bloquer les requêtes HTTP contenant la variable <code>DOCUMENT_ROOT</code> "
|
3265 |
"(%s) :"
|
3266 |
|
3267 |
-
#: lib/help.php:
|
3268 |
msgid ""
|
3269 |
"this option will block scripts attempting to pass the <code>DOCUMENT_ROOT</"
|
3270 |
"code> server variable in a <code>GET</code> or <code>POST</code> request. "
|
@@ -3277,11 +2858,11 @@ msgstr ""
|
|
3277 |
"cette variable, mais pas la plupart des applications légitimes (hormis "
|
3278 |
"certains scripts d'installation ou de configuration)."
|
3279 |
|
3280 |
-
#: lib/help.php:
|
3281 |
msgid "Block ASCII character 0x00 (NULL byte):"
|
3282 |
msgstr "Bloquer le caractère ASCII 0x00 (NULL byte) :"
|
3283 |
|
3284 |
-
#: lib/help.php:
|
3285 |
msgid ""
|
3286 |
"this option will reject any <code>GET</code> or <code>POST</code> request, "
|
3287 |
"<code>HTTP_USER_AGENT</code>, <code>REQUEST_URI</code>, <code>PHP_SELF</"
|
@@ -3295,11 +2876,11 @@ msgstr ""
|
|
3295 |
"contenant le caractère ASCI 0x00 (NULL byte) sera bloquée immédiatement. Ce "
|
3296 |
"caractère est dangereux et devrait toujours être rejeté."
|
3297 |
|
3298 |
-
#: lib/help.php:
|
3299 |
msgid "Block ASCII control characters 1 to 8 and 14 to 31:"
|
3300 |
msgstr "Bloquer les caractères de contrôle ASCII 1 à 8 et 14 à 31 :"
|
3301 |
|
3302 |
-
#: lib/help.php:
|
3303 |
msgid ""
|
3304 |
"this option will reject any <code>GET</code> or <code>POST</code> request, "
|
3305 |
"<code>HTTP_USER_AGENT</code>, <code>HTTP_REFERER</code> variables containing "
|
@@ -3309,7 +2890,7 @@ msgstr ""
|
|
3309 |
"variable <code>HTTP_USER_AGENT</code>, <code>HTTP_REFERER</code> contenant "
|
3310 |
"des caractères ASCII 1 à 8 et 14 à 31 sera bloquée."
|
3311 |
|
3312 |
-
#: lib/help.php:
|
3313 |
#, php-format
|
3314 |
msgid ""
|
3315 |
"By default, any logged in WordPress administrator will not be blocked by "
|
@@ -3329,7 +2910,7 @@ msgstr ""
|
|
3329 |
"les options de la <a href=\"%s\">Page de Connexion</a> qui, si elle sont "
|
3330 |
"activées, seront toujours appliquées."
|
3331 |
|
3332 |
-
#: lib/help.php:
|
3333 |
msgid ""
|
3334 |
"File Guard can detect, in real-time, any access to a PHP file that was "
|
3335 |
"recently modified or created, and alert you about this."
|
@@ -3337,7 +2918,7 @@ msgstr ""
|
|
3337 |
"File Guard peut détecter, en temps réel, tout accès à un fichier PHP qui a "
|
3338 |
"été récemment modifié ou créé, et vous alerter à ce sujet."
|
3339 |
|
3340 |
-
#: lib/help.php:
|
3341 |
msgid ""
|
3342 |
"If a hacker uploaded a shell script to your site (or injected a backdoor "
|
3343 |
"into an already existing file) and tried to directly access that file using "
|
@@ -3356,7 +2937,7 @@ msgstr ""
|
|
3356 |
"envoyées à l'adresse e-mail de contact définie dans le menu \"Notifications "
|
3357 |
"d’Événement\"."
|
3358 |
|
3359 |
-
#: lib/help.php:
|
3360 |
msgid ""
|
3361 |
"If you do not want to monitor a folder, you can exclude its full path or a "
|
3362 |
"part of it (e.g., <code>/var/www/public_html/cache/</code> or <code>/cache/</"
|
@@ -3370,7 +2951,7 @@ msgstr ""
|
|
3370 |
"variable <code>$_SERVER[\"SCRIPT_FILENAME\"]</code> et, si elle correspond, "
|
3371 |
"l'ignorera."
|
3372 |
|
3373 |
-
#: lib/help.php:
|
3374 |
msgid ""
|
3375 |
"Multiple values must be comma-separated (e.g., <code>/foo/bar/,/cache/</"
|
3376 |
"code>)."
|
@@ -3378,7 +2959,7 @@ msgstr ""
|
|
3378 |
"Plusieurs valeurs doivent être séparées par des virgules (par ex. <code>/foo/"
|
3379 |
"bar/,/cache/</code>)."
|
3380 |
|
3381 |
-
#: lib/help.php:
|
3382 |
msgid ""
|
3383 |
"File Guard real-time detection is a totally unique feature, because "
|
3384 |
"NinjaFirewall is the only plugin for WordPress that can hook HTTP requests "
|
@@ -3390,11 +2971,11 @@ msgstr ""
|
|
3390 |
"intercepter les requêtes HTTP envoyées à tout script PHP, même si ce dernier "
|
3391 |
"ne fait pas partie de WordPress (logiciel tiers, backdoor, etc)."
|
3392 |
|
3393 |
-
#: lib/help.php:
|
3394 |
msgid "Network"
|
3395 |
msgstr "Réseau"
|
3396 |
|
3397 |
-
#: lib/help.php:
|
3398 |
msgid ""
|
3399 |
"Even if NinjaFirewall administration menu is only available to the Super "
|
3400 |
"Admin (from the main site), you can still display its status to all sites in "
|
@@ -3406,7 +2987,7 @@ msgstr ""
|
|
3406 |
"du réseau en ajoutant une petite icône à leur barre d'administration. Elle "
|
3407 |
"ne sera visible que par les administrateurs de ces sites."
|
3408 |
|
3409 |
-
#: lib/help.php:
|
3410 |
msgid ""
|
3411 |
"It is recommended to enable this feature as it is the only way to know "
|
3412 |
"whether the sites in your network are protected and if NinjaFirewall "
|
@@ -3416,7 +2997,7 @@ msgstr ""
|
|
3416 |
"si les sites de votre réseau sont protégés et si l'installation de "
|
3417 |
"NinjaFirewall a réussi."
|
3418 |
|
3419 |
-
#: lib/help.php:
|
3420 |
msgid ""
|
3421 |
"Note that when it is disabled, the icon still remains visible to you, the "
|
3422 |
"Super Admin."
|
@@ -3424,7 +3005,7 @@ msgstr ""
|
|
3424 |
"Notez que même lorsqu'il est désactivé, l'icône reste visible pour vous, le "
|
3425 |
"Super Administrateur."
|
3426 |
|
3427 |
-
#: lib/help.php:
|
3428 |
msgid ""
|
3429 |
"File Check lets you perform file integrity monitoring upon request or on a "
|
3430 |
"specific interval."
|
@@ -3432,7 +3013,7 @@ msgstr ""
|
|
3432 |
"File Check vous permet d'effectuer une analyse de l'intégrité de vos "
|
3433 |
"fichiers sur demande ou à un intervalle spécifique défini."
|
3434 |
|
3435 |
-
#: lib/help.php:
|
3436 |
msgid ""
|
3437 |
"You need to create a snapshot of all your files and then, at a later time, "
|
3438 |
"you can scan your system to compare it with the previous snapshot. Any "
|
@@ -3445,7 +3026,7 @@ msgstr ""
|
|
3445 |
"permissions et propriétés des fichiers, leur création et suppression ainsi "
|
3446 |
"que l'horodatage."
|
3447 |
|
3448 |
-
#: lib/help.php:
|
3449 |
#, php-format
|
3450 |
msgid ""
|
3451 |
"Create a snapshot of all files stored in that directory: by default, the "
|
@@ -3455,7 +3036,7 @@ msgstr ""
|
|
3455 |
"répertoire : par défaut, le repertoire est l'<code>ABSPATH</code> de "
|
3456 |
"WordPress (%s)"
|
3457 |
|
3458 |
-
#: lib/help.php:
|
3459 |
msgid ""
|
3460 |
"Exclude the following files/folders: you can enter a directory or a file "
|
3461 |
"name (e.g., <code>/foo/bar/</code>), or a part of it (e.g., <code>foo</"
|
@@ -3466,7 +3047,7 @@ msgstr ""
|
|
3466 |
"partie de celui-ci (par ex. <code>foo</code>), ou même exclure une extension "
|
3467 |
"de fichier (par ex. <code>.css</code>)."
|
3468 |
|
3469 |
-
#: lib/help.php:
|
3470 |
msgid ""
|
3471 |
"Multiple values must be comma-separated (e.g., <code>/foo/bar/,.css,.png</"
|
3472 |
"code>)."
|
@@ -3474,7 +3055,7 @@ msgstr ""
|
|
3474 |
"Plusieurs valeurs doivent être séparées par des virgules (par ex. <code>/foo/"
|
3475 |
"bar/,.css,.png</code>)."
|
3476 |
|
3477 |
-
#: lib/help.php:
|
3478 |
msgid ""
|
3479 |
"Do not follow symbolic links: by default, NinjaFirewall will not follow "
|
3480 |
"symbolic links."
|
@@ -3482,11 +3063,11 @@ msgstr ""
|
|
3482 |
"Ne pas suivre les liens symboliques : par défaut, NinjaFirewall ignore "
|
3483 |
"les liens symboliques lors de son analyse des fichiers."
|
3484 |
|
3485 |
-
#: lib/help.php:
|
3486 |
msgid "Scheduled scans"
|
3487 |
msgstr "Analyses planifiées"
|
3488 |
|
3489 |
-
#: lib/help.php:
|
3490 |
msgid ""
|
3491 |
"NinjaFirewall can scan your system on a specific interval (hourly, "
|
3492 |
"twicedaily or daily)."
|
@@ -3494,7 +3075,7 @@ msgstr ""
|
|
3494 |
"NinjaFirewall peut scanner votre système à intervalle régulier (une fois par "
|
3495 |
"heure, deux fois par jour ou tous les jours)."
|
3496 |
|
3497 |
-
#: lib/help.php:
|
3498 |
msgid ""
|
3499 |
"It can either send you a scan report only if changes are detected, or always "
|
3500 |
"send you one after each scan."
|
@@ -3503,7 +3084,7 @@ msgstr ""
|
|
3503 |
"été détectés, ou bien vous en envoyer un systématiquement après chaque "
|
3504 |
"analyse."
|
3505 |
|
3506 |
-
#: lib/help.php:
|
3507 |
msgid ""
|
3508 |
"Reports will be sent to the contact email address defined in the \"Event "
|
3509 |
"Notifications\" menu."
|
@@ -3511,7 +3092,7 @@ msgstr ""
|
|
3511 |
"Les rapports seront envoyés à l'adresse e-mail définie dans la page "
|
3512 |
"\"Notifications d'Événement\"."
|
3513 |
|
3514 |
-
#: lib/help.php:
|
3515 |
#, php-format
|
3516 |
msgid ""
|
3517 |
"Scheduled scans rely on <a href=\"%s\">WordPress pseudo cron</a> which works "
|
@@ -3520,7 +3101,7 @@ msgstr ""
|
|
3520 |
"Les analyses planifiées utilisent le <a href=\"%s\">pseudo cron de "
|
3521 |
"WordPress</a> qui ne fonctionne que si votre site reçoit un trafic suffisant."
|
3522 |
|
3523 |
-
#: lib/help.php:
|
3524 |
msgid ""
|
3525 |
"NinjaFirewall can alert you by email on specific events triggered within "
|
3526 |
"your blog. They include installations, updates, activations etc, as well as "
|
@@ -3539,11 +3120,11 @@ msgstr ""
|
|
3539 |
"après avoir pénétré dans votre Tableau de bord de WordPress, d'y installer "
|
3540 |
"une porte dérobée (backdoor) afin de prendre le contrôle de votre blog."
|
3541 |
|
3542 |
-
#: lib/help.php:
|
3543 |
msgid "Login Protection"
|
3544 |
msgstr "Page de Connexion"
|
3545 |
|
3546 |
-
#: lib/help.php:
|
3547 |
msgid ""
|
3548 |
"By processing incoming HTTP requests before your blog and any of its "
|
3549 |
"plugins, NinjaFirewall is the only plugin for WordPress able to protect it "
|
@@ -3556,7 +3137,7 @@ msgstr ""
|
|
3556 |
"compris les attaques distribuées provenant de plusieurs milliers d'adresses "
|
3557 |
"IP différentes."
|
3558 |
|
3559 |
-
#: lib/help.php:
|
3560 |
msgid ""
|
3561 |
"You can choose two different types of protection: a password or a captcha. "
|
3562 |
"You can enable the protection only if an attack is detected or to keep it "
|
@@ -3566,11 +3147,11 @@ msgstr ""
|
|
3566 |
"captcha. Vous pouvez choisir d'activer la protection uniquement lorsqu'une "
|
3567 |
"attaque est détectée ou bien l'activer en permanence."
|
3568 |
|
3569 |
-
#: lib/help.php:
|
3570 |
msgid "Yes, if under attack:"
|
3571 |
msgstr "Oui, si attaque en cours :"
|
3572 |
|
3573 |
-
#: lib/help.php:
|
3574 |
msgid ""
|
3575 |
"The protection will be triggered when too many login attempts are detected, "
|
3576 |
"regardless of the offending IP. It blocks the attack instantly and prevents "
|
@@ -3585,11 +3166,11 @@ msgstr ""
|
|
3585 |
"utilisant soit une combinaison nom d'utilisateur / mot de passe prédéfinie, "
|
3586 |
"soit un code captcha."
|
3587 |
|
3588 |
-
#: lib/help.php:
|
3589 |
msgid "Always ON:"
|
3590 |
msgstr "Toujours activée :"
|
3591 |
|
3592 |
-
#: lib/help.php:
|
3593 |
msgid ""
|
3594 |
"NinjaFirewall will always enforce the HTTP authentication or captcha "
|
3595 |
"implementation each time you access the login page."
|
@@ -3597,11 +3178,11 @@ msgstr ""
|
|
3597 |
"Vous serez toujours invité à saisir votre nom d'utilisateur / mot de passe, "
|
3598 |
"ou le code du captcha, chaque fois que vous accéderez à la page de connexion."
|
3599 |
|
3600 |
-
#: lib/help.php:
|
3601 |
msgid "Type of protection:"
|
3602 |
msgstr "Type de protection :"
|
3603 |
|
3604 |
-
#: lib/help.php:
|
3605 |
msgid ""
|
3606 |
"<b>Password:</b> It password-protects the login page. NinjaFirewall uses its "
|
3607 |
"own very fast authentication scheme and it is compatible with any HTTP "
|
@@ -3611,15 +3192,15 @@ msgstr ""
|
|
3611 |
"utilise son propre système d'authentification, rapide et compatible avec "
|
3612 |
"n'importe quel serveur HTTP (Apache, Nginx, Lighttpd etc)."
|
3613 |
|
3614 |
-
#: lib/help.php:
|
3615 |
msgid "<b>Captcha:</b> It will display a 5-character captcha code."
|
3616 |
msgstr "<b>Captcha :</b> Affichera un code captcha à 5 caractères."
|
3617 |
|
3618 |
-
#: lib/help.php:
|
3619 |
msgid "Bot protection:"
|
3620 |
msgstr "Protection contre les bots :"
|
3621 |
|
3622 |
-
#: lib/help.php:
|
3623 |
msgid ""
|
3624 |
"NinjaFirewall will attempt to block bots and scripts immediately, i.e., even "
|
3625 |
"before they start a brute-force attack."
|
@@ -3627,11 +3208,11 @@ msgstr ""
|
|
3627 |
"NinjaFirewall tentera de bloquer les bots et les scripts immédiatement, "
|
3628 |
"c'est-à-dire avant même qu'ils ne commencent une attaque par force brute."
|
3629 |
|
3630 |
-
#: lib/help.php:
|
3631 |
msgid "AUTH log"
|
3632 |
msgstr "Journal d'authentification"
|
3633 |
|
3634 |
-
#: lib/help.php:
|
3635 |
msgid ""
|
3636 |
"NinjaFirewall can write to the server Authentication log when the brute-"
|
3637 |
"force protection is triggered. This can be useful to the system "
|
@@ -3643,7 +3224,7 @@ msgstr ""
|
|
3643 |
"surveillance ou pour bloquer l'IP incriminée au niveau du pare-feu du "
|
3644 |
"serveur."
|
3645 |
|
3646 |
-
#: lib/help.php:
|
3647 |
msgid ""
|
3648 |
"If you have a shared hosting account, keep this option disabled as you do "
|
3649 |
"not have any access to the server's logs."
|
@@ -3651,7 +3232,7 @@ msgstr ""
|
|
3651 |
"Si vous avez un hébergement mutualisé, laissez cette option désactivée car "
|
3652 |
"vous n'avez pas accès aux journaux du serveur."
|
3653 |
|
3654 |
-
#: lib/help.php:
|
3655 |
msgid ""
|
3656 |
"On Debian-based systems, the log is located in <code>/var/log/auth.log</"
|
3657 |
"code>, and on Red Hat-based systems in <code>/var/log/secure</code>. The "
|
@@ -3661,19 +3242,19 @@ msgstr ""
|
|
3661 |
"sous Red Hat, dans <code>/var/log/secure</code>. Le format utilisé est le "
|
3662 |
"suivant :"
|
3663 |
|
3664 |
-
#: lib/help.php:
|
3665 |
msgid "AA: the process ID (PID)."
|
3666 |
msgstr "AA : l'identifiant de processus (PID)."
|
3667 |
|
3668 |
-
#: lib/help.php:
|
3669 |
msgid "BB: the user IPv4 or IPv6 address."
|
3670 |
msgstr "BB : L'adresse IPv4 ou IPv6 de l'utilisateur."
|
3671 |
|
3672 |
-
#: lib/help.php:
|
3673 |
msgid "CC: the blog (sub-)domain name."
|
3674 |
msgstr "CC : le nom de (sous-)domaine du blog."
|
3675 |
|
3676 |
-
#: lib/help.php:
|
3677 |
msgid ""
|
3678 |
"DD: the target: it can be either <code>wp-login.php</code> or <code>XML-RPC "
|
3679 |
"API</code>."
|
@@ -3681,16 +3262,16 @@ msgstr ""
|
|
3681 |
"DD : la cible; il peut s'agir soit de <code>wp-login.php</code>, soit de "
|
3682 |
"<code>XML-RPC API</code>."
|
3683 |
|
3684 |
-
#: lib/help.php:
|
3685 |
msgid "EE: the time, in minutes, the protection will remain active."
|
3686 |
msgstr ""
|
3687 |
"EE : le temps, en minutes, pendant lequel la protection restera active."
|
3688 |
|
3689 |
-
#: lib/help.php:
|
3690 |
msgid "Sample loglines:"
|
3691 |
msgstr "Exemple :"
|
3692 |
|
3693 |
-
#: lib/help.php:
|
3694 |
#, php-format
|
3695 |
msgid ""
|
3696 |
"Be careful if you are behind a load balancer, reverse-proxy or CDN because "
|
@@ -3710,7 +3291,7 @@ msgstr ""
|
|
3710 |
"Alternativement, vous pouvez utiliser le fichier <code><a href=\"%s\">."
|
3711 |
"htninja</a></code>."
|
3712 |
|
3713 |
-
#: lib/help.php:
|
3714 |
msgid ""
|
3715 |
"The firewall log displays blocked and sanitised requests as well as some "
|
3716 |
"useful information. It has 6 columns:"
|
@@ -3718,18 +3299,18 @@ msgstr ""
|
|
3718 |
"Le journal du pare-feu affiche les requêtes HTTP qui ont été bloquées ou "
|
3719 |
"nettoyées ainsi que d'autres informations utiles. Il a six colonnes :"
|
3720 |
|
3721 |
-
#: lib/help.php:
|
3722 |
msgid "DATE : date and time of the incident."
|
3723 |
msgstr "DATE : date et heure de l'incident."
|
3724 |
|
3725 |
-
#: lib/help.php:
|
3726 |
msgid ""
|
3727 |
"INCIDENT : unique incident number/ID as it was displayed to the blocked user."
|
3728 |
msgstr ""
|
3729 |
"INCIDENT : le numéro d'incident (ID) unique. Par défaut, il sera aussi "
|
3730 |
"affiché à l'utilisateur dont la requête aura été bloquée par le pare-feu."
|
3731 |
|
3732 |
-
#: lib/help.php:
|
3733 |
msgid ""
|
3734 |
"LEVEL : level of severity (<code>CRITICAL</code>, <code>HIGH</code> or "
|
3735 |
"<code>MEDIUM</code>), information (<code>INFO</code>, <code>UPLOAD</code>) "
|
@@ -3739,7 +3320,7 @@ msgstr ""
|
|
3739 |
"<code>MEDIUM</code>), information (<code>INFO</code>, <code>UPLOAD</code>) "
|
3740 |
"et mode débogage (<code>DEBUG_ON</code>)."
|
3741 |
|
3742 |
-
#: lib/help.php:
|
3743 |
msgid ""
|
3744 |
"RULE : reference of the NinjaFirewall built-in security rule that triggered "
|
3745 |
"the action. A hyphen (<code>-</code>) instead of a number means it was a "
|
@@ -3750,11 +3331,11 @@ msgstr ""
|
|
3750 |
"d'un numéro signifie que la règle provient de votre configuration "
|
3751 |
"personnelle de la page \"Politiques du Pare-feu\"."
|
3752 |
|
3753 |
-
#: lib/help.php:
|
3754 |
msgid "IP : the user IPv4 or IPv6 address."
|
3755 |
msgstr "BB : L'adresse IPv4 ou IPv6 de l'utilisateur."
|
3756 |
|
3757 |
-
#: lib/help.php:
|
3758 |
msgid ""
|
3759 |
"REQUEST : the HTTP request including offending variables and values as well "
|
3760 |
"as the reason the action was logged."
|
@@ -3762,7 +3343,7 @@ msgstr ""
|
|
3762 |
"REQUEST : la requête HTTP avec ses variables et valeurs, ainsi que la raison "
|
3763 |
"qui a déclenché l'incident."
|
3764 |
|
3765 |
-
#: lib/help.php:
|
3766 |
msgid ""
|
3767 |
"This options lets you configure NinjaFirewall to delete its old logs "
|
3768 |
"automatically. By default, logs are never deleted, <b>even when uninstall "
|
@@ -3775,7 +3356,7 @@ msgstr ""
|
|
3775 |
"cette valeur à <code>0</code> si vous ne voulez pas supprimer les anciens "
|
3776 |
"journaux."
|
3777 |
|
3778 |
-
#: lib/help.php:
|
3779 |
msgid ""
|
3780 |
"Centralized Logging lets you remotely access the firewall log of all your "
|
3781 |
"NinjaFirewall protected websites from one single installation. You do not "
|
@@ -3786,13 +3367,13 @@ msgstr ""
|
|
3786 |
"NinjaFirewall. Vous n'avez plus besoin de vous connecter à chaque site pour "
|
3787 |
"analyser vos journaux."
|
3788 |
|
3789 |
-
#: lib/help.php:
|
3790 |
#, php-format
|
3791 |
msgid "<a href=\"%s\">Consult our blog</a> for more info about it."
|
3792 |
msgstr ""
|
3793 |
"<a href=\"%s\">Consultez notre blog pour plus d'informations à ce sujet</a>."
|
3794 |
|
3795 |
-
#: lib/help.php:
|
3796 |
msgid ""
|
3797 |
"Enter your public key (optional): This is the public key that was created "
|
3798 |
"from your main server."
|
@@ -3800,7 +3381,7 @@ msgstr ""
|
|
3800 |
"Entrez votre clé publique (optionnel) : Il s'agit de la clé qui a été créée "
|
3801 |
"depuis le serveur principal."
|
3802 |
|
3803 |
-
#: lib/help.php:
|
3804 |
msgid ""
|
3805 |
"Centralized Logging will keep working even if NinjaFirewall is disabled. "
|
3806 |
"Delete your public key below if you want to disable it."
|
@@ -3809,12 +3390,12 @@ msgstr ""
|
|
3809 |
"NinjaFirewall. Si vous souhaitez complètement désactiver cette option, "
|
3810 |
"supprimez votre clé publique ci-dessous. "
|
3811 |
|
3812 |
-
#: lib/help.php:
|
3813 |
-
#: ninjafirewall.php:
|
3814 |
msgid "Live Log"
|
3815 |
msgstr "Live Log"
|
3816 |
|
3817 |
-
#: lib/help.php:
|
3818 |
msgid ""
|
3819 |
"Live Log lets you watch your blog traffic in real time, just like the Unix "
|
3820 |
"<code>tail -f</code> command. Note that requests sent to static elements "
|
@@ -3826,7 +3407,7 @@ msgstr ""
|
|
3826 |
"statiques comme les fichiers JS/CSS ou les images ne sont pas traitées par "
|
3827 |
"NinjaFirewall."
|
3828 |
|
3829 |
-
#: lib/help.php:
|
3830 |
msgid ""
|
3831 |
"You can enable/disable the monitoring process, change the refresh rate, "
|
3832 |
"clear the screen, enable automatic vertical scrolling, change the log "
|
@@ -3837,7 +3418,7 @@ msgstr ""
|
|
3837 |
"effacer l'écran, changer le format d'affichage, le fuseau horaire et choisir "
|
3838 |
"le type de trafic à visualiser (HTTP/HTTPS)."
|
3839 |
|
3840 |
-
#: lib/help.php:
|
3841 |
msgid ""
|
3842 |
"You can also apply filters to include or exclude files and folders "
|
3843 |
"(REQUEST_URI)."
|
@@ -3845,7 +3426,7 @@ msgstr ""
|
|
3845 |
"Vous pouvez également appliquer des filtres pour inclure ou exclure des "
|
3846 |
"fichiers et des dossiers (REQUEST_URI)."
|
3847 |
|
3848 |
-
#: lib/help.php:
|
3849 |
msgid ""
|
3850 |
"Live Log does not make use of any WordPress core file (e.g., <code>admin-"
|
3851 |
"ajax.php</code>). It communicates directly with the firewall without loading "
|
@@ -3859,7 +3440,7 @@ msgstr ""
|
|
3859 |
"serveur, même si vous ajustez son intervalle de rafraîchissement de la page "
|
3860 |
"sur la fréquence la plus rapide (5 secondes)."
|
3861 |
|
3862 |
-
#: lib/help.php:
|
3863 |
msgid ""
|
3864 |
"If you are using the optional <code>.htninja</code> configuration file to "
|
3865 |
"whitelist your IP, the Live Log feature will not work."
|
@@ -3868,27 +3449,27 @@ msgstr ""
|
|
3868 |
"pour toujours accepter les requêtes provenant de votre adresse IP, Live Log "
|
3869 |
"ne fonctionnera pas."
|
3870 |
|
3871 |
-
#: lib/help.php:
|
3872 |
msgid "Log Format"
|
3873 |
msgstr "Format d'affichage"
|
3874 |
|
3875 |
-
#: lib/help.php:
|
3876 |
msgid "You can easily customize the log format. Possible values are:"
|
3877 |
msgstr ""
|
3878 |
"Vous pouvez facilement changer le format d'affichage en combinant une ou "
|
3879 |
"plusieurs des valeurs suivantes :"
|
3880 |
|
3881 |
-
#: lib/help.php:
|
3882 |
msgid "<code>%time</code>: the server date, time and timezone."
|
3883 |
msgstr "<code>%time</code> : la date, heure et fuseau horaire du serveur."
|
3884 |
|
3885 |
-
#: lib/help.php:
|
3886 |
msgid "<code>%name</code>: authenticated user (HTTP basic auth), if any."
|
3887 |
msgstr ""
|
3888 |
"<code>%name</code> : le nom de l'utilisateur (Authentification HTTP), s'il "
|
3889 |
"existe."
|
3890 |
|
3891 |
-
#: lib/help.php:
|
3892 |
#, php-format
|
3893 |
msgid ""
|
3894 |
"<code>%client</code>: the client REMOTE_ADDR. If you are behind a load "
|
@@ -3898,28 +3479,28 @@ msgstr ""
|
|
3898 |
"serveur est derrière un CDN ou un proxy, cette variable retournera l'adresse "
|
3899 |
"IP de celui-ci."
|
3900 |
|
3901 |
-
#: lib/help.php:
|
3902 |
msgid "<code>%method</code>: HTTP method (e.g., GET, POST)."
|
3903 |
msgstr "<code>%method</code> : la méthode HTTP (ex. GET, POST)."
|
3904 |
|
3905 |
-
#: lib/help.php:
|
3906 |
#, php-format
|
3907 |
msgid ""
|
3908 |
"<code>%uri</code>: the URI which was given in order to access the page "
|
3909 |
"(REQUEST_URI)."
|
3910 |
msgstr "<code>%uri</code> : l'URI donnée pour accéder à la page (REQUEST_URI)."
|
3911 |
|
3912 |
-
#: lib/help.php:
|
3913 |
msgid "<code>%referrer</code>: the referrer (HTTP_REFERER), if any."
|
3914 |
msgstr "<code>%referrer</code> : le referrer (HTTP_REFERER), s'il existe."
|
3915 |
|
3916 |
-
#: lib/help.php:
|
3917 |
#, php-format
|
3918 |
msgid "<code>%ua</code>: the user-agent (HTTP_USER_AGENT), if any."
|
3919 |
msgstr ""
|
3920 |
"<code>%ua</code> : l'en-tête User-Agent (HTTP_USER_AGENT), s'il existe."
|
3921 |
|
3922 |
-
#: lib/help.php:
|
3923 |
#, php-format
|
3924 |
msgid ""
|
3925 |
"<code>%forward</code>: HTTP_X_FORWARDED_FOR, if any. If you are behind a "
|
@@ -3929,13 +3510,13 @@ msgstr ""
|
|
3929 |
"votre serveur est derrière un CDN ou un proxy, cette variable retournera "
|
3930 |
"l'adresse réelle du client."
|
3931 |
|
3932 |
-
#: lib/help.php:
|
3933 |
msgid "<code>%host</code>: the requested host (HTTP_HOST), if any."
|
3934 |
msgstr ""
|
3935 |
"<code>%host</code> : l'en-tête Host de la requête courante (HTTP_HOST), si "
|
3936 |
"elle existe."
|
3937 |
|
3938 |
-
#: lib/help.php:
|
3939 |
msgid ""
|
3940 |
"Additionally, you can include any of the following characters: <code>\"</"
|
3941 |
"code>, <code>%</code>, <code>[</code>, <code>]</code>, <code>space</code> "
|
@@ -3945,11 +3526,11 @@ msgstr ""
|
|
3945 |
"%</code>, <code>[</code>, <code>]</code>, <code>espace</code> et toute "
|
3946 |
"lettre minuscule <code>a-z</code>."
|
3947 |
|
3948 |
-
#: lib/help.php:
|
3949 |
msgid "Rules Editor"
|
3950 |
msgstr "Éditeur de Règles"
|
3951 |
|
3952 |
-
#: lib/help.php:
|
3953 |
msgid ""
|
3954 |
"Besides the \"Firewall Policies\", NinjaFirewall includes also a large set "
|
3955 |
"of built-in rules used to protect your blog against the most common "
|
@@ -3966,7 +3547,7 @@ msgstr ""
|
|
3966 |
"règles, vous pouvez utiliser l’Éditeur de règles ci-dessous pour les "
|
3967 |
"désactiver individuellement :"
|
3968 |
|
3969 |
-
#: lib/help.php:
|
3970 |
msgid ""
|
3971 |
"Check your firewall log and find the rule ID you want to disable (it is "
|
3972 |
"displayed in the <code>RULE</code> column)."
|
@@ -3974,7 +3555,7 @@ msgstr ""
|
|
3974 |
"Consultez le journal du pare-feu afin d'y trouver l'ID de la règle que vous "
|
3975 |
"souhaitez désactiver (il est affiché dans la colonne <code>RULE</code>)."
|
3976 |
|
3977 |
-
#: lib/help.php:
|
3978 |
msgid ""
|
3979 |
"Select its ID from the enabled rules list below and click the \"Disable it\" "
|
3980 |
"button."
|
@@ -3982,7 +3563,7 @@ msgstr ""
|
|
3982 |
"Sélectionnez son ID dans la liste des règles ci-dessous et cliquez sur le "
|
3983 |
"bouton \"Désactiver\"."
|
3984 |
|
3985 |
-
#: lib/help.php:
|
3986 |
msgid ""
|
3987 |
"Note: if the <code>RULE</code> column from your log shows a hyphen <code>-</"
|
3988 |
"code> instead of a number, that means that the rule can be changed in the "
|
@@ -3992,11 +3573,11 @@ msgstr ""
|
|
3992 |
"d'union <code>-</code> à la place d'un nombre, cela signifie que la règle ne "
|
3993 |
"peut être modifiée quand dans la page \"Politiques du Pare-feu\"."
|
3994 |
|
3995 |
-
#: lib/help.php:
|
3996 |
msgid "Credits"
|
3997 |
msgstr "Crédits"
|
3998 |
|
3999 |
-
#: lib/help.php:
|
4000 |
msgid ""
|
4001 |
"NinjaFirewall security rules protect against many vulnerabilities. Some of "
|
4002 |
"them were reported by the following companies, individuals or mailing lists:"
|
@@ -4005,11 +3586,11 @@ msgstr ""
|
|
4005 |
"vulnérabilités. Certaines d'entre elles ont été découvertes par les "
|
4006 |
"entreprises, particuliers ou listes de diffusion suivantes:"
|
4007 |
|
4008 |
-
#: lib/help.php:
|
4009 |
msgid "Updates"
|
4010 |
msgstr "Mises à Jour"
|
4011 |
|
4012 |
-
#: lib/help.php:
|
4013 |
msgid ""
|
4014 |
"To get the most efficient protection, you can ask NinjaFirewall to "
|
4015 |
"automatically update its security rules."
|
@@ -4017,7 +3598,7 @@ msgstr ""
|
|
4017 |
"Pour bénéficier de la protection la plus efficace, vous pouvez demander à "
|
4018 |
"NinjaFirewall de mettre à jour ses règles de sécurité automatiquement."
|
4019 |
|
4020 |
-
#: lib/help.php:
|
4021 |
msgid ""
|
4022 |
"Each time a new vulnerability is found in WordPress or one of its plugins/"
|
4023 |
"themes, a new set of security rules will be made available to protect "
|
@@ -4027,7 +3608,7 @@ msgstr ""
|
|
4027 |
"extensions ou ses thèmes, un nouvel ensemble de règles de sécurité est "
|
4028 |
"disponible pour protéger contre cette vulnérabilité si nécessaire."
|
4029 |
|
4030 |
-
#: lib/help.php:
|
4031 |
msgid ""
|
4032 |
"Only security rules will be downloaded. If a new version of NinjaFirewall "
|
4033 |
"(including new files, options and features) was available, it would have to "
|
@@ -4038,7 +3619,7 @@ msgstr ""
|
|
4038 |
"jour depuis la page des \"Extensions\" de votre tableau de bord, comme "
|
4039 |
"d'habitude."
|
4040 |
|
4041 |
-
#: lib/help.php:
|
4042 |
msgid ""
|
4043 |
"We recommend to enable this feature, as it is the <strong>best way to keep "
|
4044 |
"your WordPress secure</strong> against new vulnerabilities."
|
@@ -4047,363 +3628,88 @@ msgstr ""
|
|
4047 |
"<strong>meilleure façon de garder votre WordPress protégé</strong> contre "
|
4048 |
"les dernières vulnérabilités."
|
4049 |
|
4050 |
-
#: lib/
|
4051 |
-
msgid ""
|
4052 |
-
"Error: The installer cannot download the security rules from wordpress.org "
|
4053 |
-
"website."
|
4054 |
-
msgstr ""
|
4055 |
-
"Erreur : Impossible de télécharger les règles de sécurité depuis le site de "
|
4056 |
-
"wordpress.org."
|
4057 |
-
|
4058 |
-
#: lib/install_default.php:171
|
4059 |
-
msgid ""
|
4060 |
-
"The server may be temporarily down or you may have network connectivity "
|
4061 |
-
"problems? Please try again in a few minutes."
|
4062 |
-
msgstr ""
|
4063 |
-
"Le serveur est peut être temporairement en panne ou bien vous avez des "
|
4064 |
-
"problèmes de connectivité réseau ? Veuillez ré-essayer d'ici quelques "
|
4065 |
-
"minutes."
|
4066 |
-
|
4067 |
-
#: lib/install_default.php:172
|
4068 |
-
msgid ""
|
4069 |
-
"NinjaFirewall downloads its rules over an HTTPS secure connection. Maybe "
|
4070 |
-
"your server does not support SSL? You can force NinjaFirewall to use a non-"
|
4071 |
-
"secure HTTP connection by adding the following directive to your <strong>wp-"
|
4072 |
-
"config.php</strong> file:"
|
4073 |
-
msgstr ""
|
4074 |
-
"NinjaFirewall télécharge ses règles de sécurité en utilisant une connexion "
|
4075 |
-
"sécurisée (HTTPS). Peut-être que votre serveur ne prend pas en charge "
|
4076 |
-
"HTTPS ? Dans ce cas, vous pouvez demander à NinjaFirewall d'utiliser une "
|
4077 |
-
"connexion non-sécurisée (HTTP) en ajoutant la ligne suivante dans votre "
|
4078 |
-
"fichier <strong>wp-config.php</strong> :"
|
4079 |
-
|
4080 |
-
#: lib/install_fullwaf.php:35 lib/install_fullwaf.php:149
|
4081 |
-
#: lib/install_fullwaf.php:304 lib/install_wpwaf.php:53
|
4082 |
-
#: lib/install_wpwaf.php:63 lib/install_wpwaf.php:70
|
4083 |
-
msgid "Error:"
|
4084 |
-
msgstr "Erreur :"
|
4085 |
-
|
4086 |
-
#: lib/install_fullwaf.php:39
|
4087 |
-
#, php-format
|
4088 |
-
msgid ""
|
4089 |
-
"Your WordPress directory (%s) is different from your website document root "
|
4090 |
-
"(%s). Because it is possible to install WordPress into a subdirectory, but "
|
4091 |
-
"have the blog exist in the site root, NinjaFirewall needs to know the exact "
|
4092 |
-
"location of the site root."
|
4093 |
-
msgstr ""
|
4094 |
-
"Le répertoire de WordPress (%s) est différent du répertoire racine de votre "
|
4095 |
-
"site Web (%s). Parce qu'il est possible d'installer WordPress dans un sous-"
|
4096 |
-
"répertoire, tout en ayant le blog à la racine du site, NinjaFirewall a "
|
4097 |
-
"besoin de connaître l'emplacement de la racine du site."
|
4098 |
-
|
4099 |
-
#: lib/install_fullwaf.php:40
|
4100 |
-
#, php-format
|
4101 |
-
msgid ""
|
4102 |
-
"Please edit the path below only if you have manually modified your WordPress "
|
4103 |
-
"root directory as described in the <a href=\"%s\">Giving WordPress Its Own "
|
4104 |
-
"Directory</a> article."
|
4105 |
-
msgstr ""
|
4106 |
-
"Veuillez corriger le chemin ci-dessous uniquement si vous avez modifié "
|
4107 |
-
"manuellement votre répertoire racine de WordPress comme décrit dans "
|
4108 |
-
"l'article <a href=\"%s\">Giving WordPress Its Own Directory</a>."
|
4109 |
-
|
4110 |
-
#: lib/install_fullwaf.php:41
|
4111 |
-
msgid "Most users should not change this value."
|
4112 |
-
msgstr "La plupart des utilisateurs ne devront pas changer cette valeur."
|
4113 |
-
|
4114 |
-
#: lib/install_fullwaf.php:42
|
4115 |
-
msgid "Path to WordPress site root directory:"
|
4116 |
-
msgstr "Chemin vers le répertoire racine de WordPress :"
|
4117 |
-
|
4118 |
-
#: lib/install_fullwaf.php:57 lib/install_fullwaf.php:249
|
4119 |
-
msgid "please enter the full path to WordPress folder."
|
4120 |
-
msgstr "veuillez entrer le chemin complet vers le répertoire de WordPress."
|
4121 |
-
|
4122 |
-
#: lib/install_fullwaf.php:62
|
4123 |
-
#, php-format
|
4124 |
-
msgid ""
|
4125 |
-
"cannot find the %s directory! Please correct the full path to WordPress site "
|
4126 |
-
"root directory."
|
4127 |
-
msgstr ""
|
4128 |
-
"impossible de trouver le répertoire %s ! Veuillez corriger le chemin "
|
4129 |
-
"complet vers le répertoire racine de WordPress."
|
4130 |
-
|
4131 |
-
#: lib/install_fullwaf.php:75
|
4132 |
-
msgid "(recommended)"
|
4133 |
-
msgstr "(recommandé)"
|
4134 |
-
|
4135 |
-
#: lib/install_fullwaf.php:118
|
4136 |
-
msgid "Please select the PHP initialization file supported by your server."
|
4137 |
-
msgstr ""
|
4138 |
-
"Sélectionnez le type de fichier de configuration PHP utilisé par votre "
|
4139 |
-
"serveur."
|
4140 |
-
|
4141 |
-
#: lib/install_fullwaf.php:144
|
4142 |
-
#, php-format
|
4143 |
-
msgid ""
|
4144 |
-
"Error: NinjaFirewall log directory is not writable (%s). Please chmod it to "
|
4145 |
-
"0777 and reload this page."
|
4146 |
-
msgstr ""
|
4147 |
-
"Erreur : le répertoire du journal et cache de NinjaFirewall (%s) n'est pas "
|
4148 |
-
"accessible en écriture. Veuillez changer ses permissions (par ex. 0777) et "
|
4149 |
-
"recharger cette page."
|
4150 |
-
|
4151 |
-
#: lib/install_fullwaf.php:153
|
4152 |
-
msgid "System configuration"
|
4153 |
-
msgstr "Configuration du système"
|
4154 |
-
|
4155 |
-
#: lib/install_fullwaf.php:159
|
4156 |
#, php-format
|
4157 |
msgid ""
|
4158 |
-
"
|
4159 |
-
"seems to be used by another application: %s."
|
4160 |
msgstr ""
|
4161 |
-
"
|
4162 |
-
"
|
4163 |
-
|
4164 |
-
#: lib/install_fullwaf.php:159
|
4165 |
-
msgid "Because NinjaFirewall needs to use that directive, it will override it."
|
4166 |
-
msgstr ""
|
4167 |
-
"Parce qu’il a besoin de cette directive, NinjaFirewall va la remplacer par "
|
4168 |
-
"la sienne."
|
4169 |
-
|
4170 |
-
#: lib/install_fullwaf.php:166 lib/install_wpwaf.php:95
|
4171 |
-
msgid "Multisite network detected:"
|
4172 |
-
msgstr "Réseau multi-site détecté :"
|
4173 |
-
|
4174 |
-
#: lib/install_fullwaf.php:166 lib/install_wpwaf.php:95
|
4175 |
-
msgid ""
|
4176 |
-
"NinjaFirewall will protect all sites from your network and its configuration "
|
4177 |
-
"interface will be accessible only to the Super Admin from the network main "
|
4178 |
-
"site."
|
4179 |
-
msgstr ""
|
4180 |
-
"NinjaFirewall protégera tous les sites de votre réseau; son interface de "
|
4181 |
-
"configuration ne sera accessible qu'au Super Administrateur à partir du site "
|
4182 |
-
"principal du réseau."
|
4183 |
-
|
4184 |
-
#: lib/install_fullwaf.php:175
|
4185 |
-
msgid "Select your HTTP server and your PHP server API"
|
4186 |
-
msgstr "Sélectionnez votre serveur HTTP et PHP SAPI"
|
4187 |
-
|
4188 |
-
#: lib/install_fullwaf.php:182
|
4189 |
-
msgid "CGI or PHP-FPM"
|
4190 |
-
msgstr "CGI ou PHP-FPM"
|
4191 |
-
|
4192 |
-
#: lib/install_fullwaf.php:184
|
4193 |
-
msgid "Other webserver + CGI/FastCGI"
|
4194 |
-
msgstr "Autre serveur + CGI/FastCGI"
|
4195 |
-
|
4196 |
-
#: lib/install_fullwaf.php:185
|
4197 |
-
msgid "Other webserver + HHVM"
|
4198 |
-
msgstr "Autre serveur + HHVM"
|
4199 |
|
4200 |
-
#: lib/
|
4201 |
-
msgid "view PHPINFO"
|
4202 |
-
msgstr "voir PHPINFO"
|
4203 |
-
|
4204 |
-
#: lib/install_fullwaf.php:194
|
4205 |
#, php-format
|
4206 |
-
msgid ""
|
4207 |
-
|
4208 |
-
"NinjaFirewall on HHVM."
|
4209 |
-
msgstr ""
|
4210 |
-
"Veuillez consulter <a href=\"%s\">notre blog</a> afin d'installer "
|
4211 |
-
"NinjaFirewall avec HHVM."
|
4212 |
-
|
4213 |
-
#: lib/install_fullwaf.php:223
|
4214 |
-
msgid "Select the PHP initialization file supported by your server"
|
4215 |
-
msgstr ""
|
4216 |
-
"Sélectionnez le type de fichier de configuration PHP utilisé par votre "
|
4217 |
-
"serveur"
|
4218 |
-
|
4219 |
-
#: lib/install_fullwaf.php:226
|
4220 |
-
msgid "Used by most shared hosting accounts."
|
4221 |
-
msgstr "Utilisé par la plupart des hébergements mutualisés"
|
4222 |
-
|
4223 |
-
#: lib/install_fullwaf.php:228
|
4224 |
-
msgid "The default PHP INI file since PHP 5.3.0"
|
4225 |
-
msgstr "Le fichier PHP INI par défaut depuis PHP 5.3.0"
|
4226 |
-
|
4227 |
-
#: lib/install_fullwaf.php:228
|
4228 |
-
msgid "more info"
|
4229 |
-
msgstr "plus d'info"
|
4230 |
-
|
4231 |
-
#: lib/install_fullwaf.php:230
|
4232 |
-
msgid "A few shared hosting accounts. Seldom used."
|
4233 |
-
msgstr "Quelques hébergements mutualisés. Rarement utilisé."
|
4234 |
|
4235 |
-
#: lib/
|
4236 |
-
msgid "select your HTTP server and PHP SAPI."
|
4237 |
-
msgstr "sélectionnez votre serveur HTTP et PHP SAPI."
|
4238 |
-
|
4239 |
-
#: lib/install_fullwaf.php:260 lib/install_fullwaf.php:520
|
4240 |
-
msgid "select the PHP initialization file supported by your server."
|
4241 |
-
msgstr ""
|
4242 |
-
"sélectionnez le type de fichier de configuration PHP utilisé par votre "
|
4243 |
-
"serveur."
|
4244 |
-
|
4245 |
-
#: lib/install_fullwaf.php:307 lib/install_wpwaf.php:89
|
4246 |
-
msgid "Firewall Integration"
|
4247 |
-
msgstr "Intégration du Pare-feu"
|
4248 |
-
|
4249 |
-
#: lib/install_fullwaf.php:312
|
4250 |
#, php-format
|
4251 |
msgid ""
|
4252 |
-
"The
|
4253 |
-
"added to it:"
|
4254 |
msgstr ""
|
4255 |
-
"Le fichier
|
4256 |
-
"
|
4257 |
|
4258 |
-
#: lib/
|
4259 |
#, php-format
|
4260 |
msgid ""
|
4261 |
-
"
|
4262 |
-
"
|
4263 |
-
msgstr ""
|
4264 |
-
"Les lignes de code de <font color=\"green\">couleur verte</font> doivent "
|
4265 |
-
"être ajoutées à votre fichier <code>%s</code>."
|
4266 |
-
|
4267 |
-
#: lib/install_fullwaf.php:313 lib/install_wpwaf.php:101
|
4268 |
-
msgid "All other lines, if any, are the actual content of the file:"
|
4269 |
-
msgstr ""
|
4270 |
-
"Toutes les autres lignes, le cas échéant, sont le contenu actuel du fichier "
|
4271 |
-
"et ne doivent pas être modifiées :"
|
4272 |
-
|
4273 |
-
#: lib/install_fullwaf.php:315
|
4274 |
-
msgid "The file is not writable, I cannot edit it for you."
|
4275 |
-
msgstr ""
|
4276 |
-
"Le fichier est protégé en écriture, je ne peux pas faire ces changements "
|
4277 |
-
"pour vous."
|
4278 |
-
|
4279 |
-
#: lib/install_fullwaf.php:397
|
4280 |
-
msgid ""
|
4281 |
-
"Add the following code to your <code>/etc/hhvm/php.ini</code> file, and "
|
4282 |
-
"restart HHVM afterwards:"
|
4283 |
-
msgstr ""
|
4284 |
-
"Veuillez ajouter le code suivant au fichier <code>/etc/hhvm/php.ini</code>, "
|
4285 |
-
"puis veuillez redémarrer HHVM :"
|
4286 |
-
|
4287 |
-
#: lib/install_fullwaf.php:462 lib/install_wpwaf.php:135
|
4288 |
-
msgid "Please make those changes, then click on button below."
|
4289 |
-
msgstr ""
|
4290 |
-
"Veuillez faire ces modifications, puis cliquez sur le bouton ci-dessous pour "
|
4291 |
-
"continuer."
|
4292 |
-
|
4293 |
-
#: lib/install_fullwaf.php:467 lib/install_wpwaf.php:127
|
4294 |
-
msgid "Let NinjaFirewall make the above changes (recommended)."
|
4295 |
-
msgstr "Laissez NinjaFirewall faire les changements ci-dessus (recommandé)."
|
4296 |
-
|
4297 |
-
#: lib/install_fullwaf.php:470 lib/install_wpwaf.php:131
|
4298 |
-
msgid ""
|
4299 |
-
"Ensure that you have FTP access to your website so that, if there were a "
|
4300 |
-
"problem during the installation of the firewall, you could easily undo the "
|
4301 |
-
"changes."
|
4302 |
-
msgstr ""
|
4303 |
-
"Assurez-vous d'avoir un accès FTP à votre site de sorte que, s'il y avait un "
|
4304 |
-
"problème pendant l'installation du pare-feu, vous pourriez annuler les "
|
4305 |
-
"modifications."
|
4306 |
-
|
4307 |
-
#: lib/install_fullwaf.php:475 lib/install_wpwaf.php:134
|
4308 |
-
msgid "I want to make the changes myself."
|
4309 |
-
msgstr "Je veux faire les changements moi-même."
|
4310 |
-
|
4311 |
-
#: lib/install_fullwaf.php:484
|
4312 |
-
msgid "Please check our blog if you want to install NinjaFirewall on HHVM."
|
4313 |
-
msgstr ""
|
4314 |
-
"Veuillez consulter notre blog si vous souhaitez installer NinjaFirewall avec "
|
4315 |
-
"HHVM."
|
4316 |
-
|
4317 |
-
#: lib/install_fullwaf.php:504
|
4318 |
-
msgid "you must select how to make changes to your files."
|
4319 |
msgstr ""
|
4320 |
-
"
|
|
|
4321 |
|
4322 |
-
#: lib/
|
4323 |
msgid ""
|
4324 |
-
"
|
4325 |
-
"
|
4326 |
-
msgstr ""
|
4327 |
-
"le répertoire racine de WordPress n'est pas accessible en écriture, je ne "
|
4328 |
-
"peux pas faire ces changements pour vous."
|
4329 |
-
|
4330 |
-
#: lib/install_fullwaf.php:545 lib/install_fullwaf.php:588
|
4331 |
-
#, php-format
|
4332 |
-
msgid "cannot write to <code>%s</code>, it is read-only."
|
4333 |
msgstr ""
|
4334 |
-
"
|
|
|
4335 |
|
4336 |
-
#: lib/
|
4337 |
-
msgid "Your configuration was saved."
|
4338 |
-
msgstr "Les modifications ont été enregistrées."
|
4339 |
-
|
4340 |
-
#: lib/install_fullwaf.php:625 lib/install_wpwaf.php:208
|
4341 |
#, php-format
|
4342 |
-
msgid "
|
4343 |
-
msgstr ""
|
4344 |
-
"Un e-mail \"Guide d'Utilisation, d'Installation et de Dépannage\" a été "
|
4345 |
-
"envoyé à %s."
|
4346 |
|
4347 |
-
#: lib/
|
4348 |
-
msgid ""
|
4349 |
-
"Please click the button below to test if the firewall integration was "
|
4350 |
-
"successful."
|
4351 |
-
msgstr ""
|
4352 |
-
"Veuillez cliquer sur le bouton ci-dessous pour vérifier le bon "
|
4353 |
-
"fonctionnement du pare-feu."
|
4354 |
-
|
4355 |
-
#: lib/install_fullwaf.php:632 lib/install_wpwaf.php:215
|
4356 |
-
msgid "Test Firewall"
|
4357 |
-
msgstr "Tester le pare-feu"
|
4358 |
-
|
4359 |
-
#: lib/install_wpwaf.php:54
|
4360 |
#, php-format
|
4361 |
-
msgid ""
|
4362 |
-
"
|
4363 |
-
"again."
|
4364 |
-
msgstr ""
|
4365 |
-
"Impossible de lire le fichier wp-config.php (%s). Veuillez-vous assurer "
|
4366 |
-
"qu'il est bien accessible en lecture."
|
4367 |
|
4368 |
-
#: lib/
|
4369 |
-
|
4370 |
-
msgid "
|
4371 |
-
msgstr ""
|
4372 |
-
"Impossible de trouver le fichier wp-config.php dans les répertoires %s ou %s."
|
4373 |
|
4374 |
-
#: lib/
|
4375 |
-
#, php-format
|
4376 |
msgid ""
|
4377 |
-
"The
|
4378 |
-
"
|
4379 |
msgstr ""
|
4380 |
-
"
|
4381 |
-
"
|
4382 |
|
4383 |
-
#: lib/
|
4384 |
msgid ""
|
4385 |
-
"The
|
4386 |
-
"
|
4387 |
msgstr ""
|
4388 |
-
"Le
|
4389 |
-
"
|
4390 |
-
|
4391 |
-
#: lib/install_wpwaf.php:129
|
4392 |
-
msgid "Back up the file (wp-config.bak.php) before editing it."
|
4393 |
-
msgstr "Faire une sauvegarde du fichier (wp-config.bak.php)."
|
4394 |
-
|
4395 |
-
#: lib/install_wpwaf.php:155
|
4396 |
-
#, php-format
|
4397 |
-
msgid "Unable to find the wp-config.php file (#%s)."
|
4398 |
-
msgstr "Impossible de trouver le fichier wp-config.php (#%s)."
|
4399 |
|
4400 |
-
#: lib/
|
4401 |
msgid ""
|
4402 |
-
"
|
4403 |
-
"
|
|
|
|
|
4404 |
msgstr ""
|
4405 |
-
"
|
4406 |
-
"
|
|
|
|
|
|
|
4407 |
|
4408 |
#: lib/live_log.php:29
|
4409 |
msgid ""
|
@@ -4424,99 +3730,57 @@ msgstr ""
|
|
4424 |
"et assurez vous que l'option \"Ajouter l'Administrateur à la liste blanche\" "
|
4425 |
"est activée."
|
4426 |
|
4427 |
-
#: lib/live_log.php:
|
4428 |
-
msgid "Loading..."
|
4429 |
-
msgstr "Chargement..."
|
4430 |
-
|
4431 |
-
#: lib/live_log.php:112 lib/live_log.php:141 lib/live_log.php:239
|
4432 |
-
msgid "No traffic yet, please wait..."
|
4433 |
-
msgstr "Aucun visiteur actuellement, veuillez patienter..."
|
4434 |
-
|
4435 |
-
#: lib/live_log.php:115
|
4436 |
-
msgid "Error: Live Log did not receive the expected response from your server:"
|
4437 |
-
msgstr "Erreur : le serveur distant n\\'a pas retourné la réponse attendue :"
|
4438 |
-
|
4439 |
-
#: lib/live_log.php:134
|
4440 |
-
msgid "Error: URL does not seem to exist:"
|
4441 |
-
msgstr "Erreur : l\\'URL ne semble pas valide :"
|
4442 |
-
|
4443 |
-
#: lib/live_log.php:136
|
4444 |
-
msgid "Error: cannot find your log file. Try to reload this page."
|
4445 |
-
msgstr ""
|
4446 |
-
"Erreur : impossible de trouver le fichier log. Essayez de recharger cette "
|
4447 |
-
"page."
|
4448 |
-
|
4449 |
-
#: lib/live_log.php:138
|
4450 |
-
msgid "Error: the HTTP server returned the following error code:"
|
4451 |
-
msgstr "Erreur : le serveur HTTP a retourné le code d\\'erreur suivant :"
|
4452 |
-
|
4453 |
-
#: lib/live_log.php:143 lib/live_log.php:156 lib/live_log.php:176
|
4454 |
-
msgid "Sleeping"
|
4455 |
-
msgstr "Rafraîchissement dans"
|
4456 |
-
|
4457 |
-
#: lib/live_log.php:143 lib/live_log.php:156 lib/live_log.php:176
|
4458 |
-
msgid "seconds"
|
4459 |
-
msgstr "secondes"
|
4460 |
-
|
4461 |
-
#: lib/live_log.php:243
|
4462 |
-
msgid "On"
|
4463 |
-
msgstr "Activer"
|
4464 |
-
|
4465 |
-
#: lib/live_log.php:243
|
4466 |
-
msgid "Off"
|
4467 |
-
msgstr "Stopper"
|
4468 |
-
|
4469 |
-
#: lib/live_log.php:243
|
4470 |
msgid "Refresh rate:"
|
4471 |
msgstr "Intervalle :"
|
4472 |
|
4473 |
-
#: lib/live_log.php:
|
4474 |
msgid "5 seconds"
|
4475 |
msgstr "5 secondes"
|
4476 |
|
4477 |
-
#: lib/live_log.php:
|
4478 |
msgid "10 seconds"
|
4479 |
msgstr "10 secondes"
|
4480 |
|
4481 |
-
#: lib/live_log.php:
|
4482 |
msgid "20 seconds"
|
4483 |
msgstr "20 secondes"
|
4484 |
|
4485 |
-
#: lib/live_log.php:
|
4486 |
msgid "45 seconds"
|
4487 |
msgstr "45 secondes"
|
4488 |
|
4489 |
-
#: lib/live_log.php:
|
4490 |
msgid "Clear screen"
|
4491 |
msgstr "Effacer"
|
4492 |
|
4493 |
-
#: lib/live_log.php:
|
4494 |
msgid "Autoscrolling"
|
4495 |
msgstr "Défilement auto."
|
4496 |
|
4497 |
-
#: lib/live_log.php:
|
4498 |
msgid "Live Log will not display whitelisted users and brute-force attacks."
|
4499 |
msgstr ""
|
4500 |
"Live Log n'affiche pas les connexions de l'administrateur, ni les attaques "
|
4501 |
"par force brute."
|
4502 |
|
4503 |
-
#: lib/live_log.php:
|
4504 |
-
msgid "Live Log
|
4505 |
-
msgstr "Options"
|
4506 |
|
4507 |
-
#: lib/live_log.php:
|
4508 |
msgid "Inclusion and exclusion filters (REQUEST_URI)"
|
4509 |
msgstr "Filtres d'inclusion et d'exclusion (REQUEST_URI)"
|
4510 |
|
4511 |
-
#: lib/live_log.php:
|
4512 |
msgid "Must include"
|
4513 |
msgstr "Doit inclure"
|
4514 |
|
4515 |
-
#: lib/live_log.php:
|
4516 |
msgid "Must not include"
|
4517 |
msgstr "Ne doit pas inclure"
|
4518 |
|
4519 |
-
#: lib/live_log.php:
|
4520 |
msgid ""
|
4521 |
"Full or partial case-sensitive REQUEST_URI string. Multiple values must be "
|
4522 |
"comma-separated."
|
@@ -4524,79 +3788,54 @@ msgstr ""
|
|
4524 |
"Chaîne de caractères REQUEST_URI complète ou partielle, sensible à la casse. "
|
4525 |
"Plusieurs valeurs doivent être séparées par des virgules."
|
4526 |
|
4527 |
-
#: lib/live_log.php:
|
4528 |
msgid "Format"
|
4529 |
msgstr "Format d'affichage"
|
4530 |
|
4531 |
-
#: lib/live_log.php:
|
4532 |
msgid "Custom"
|
4533 |
msgstr "Autre"
|
4534 |
|
4535 |
-
#: lib/live_log.php:
|
4536 |
msgid "See contextual help for available log format."
|
4537 |
msgstr ""
|
4538 |
"Consultez l'aide contextuelle pour avoir plus d'information sur les formats "
|
4539 |
"disponibles."
|
4540 |
|
4541 |
-
#: lib/live_log.php:
|
4542 |
msgid "Display"
|
4543 |
msgstr "Afficher"
|
4544 |
|
4545 |
-
#: lib/live_log.php:
|
4546 |
msgid "Timezone"
|
4547 |
msgstr "Fuseau horaire"
|
4548 |
|
4549 |
-
#: lib/live_log.php:
|
4550 |
msgid "Save Live Log Options"
|
4551 |
msgstr "Sauvegarder les options"
|
4552 |
|
4553 |
-
#: lib/live_log.php:
|
4554 |
msgid "Error: please enter the custom log format."
|
4555 |
msgstr "Erreur : veuillez entrer le format d'affichage."
|
4556 |
|
4557 |
-
#: lib/login_protection.php:
|
4558 |
-
#: lib/login_protection.php:
|
4559 |
msgid "Access restricted"
|
4560 |
msgstr "Accès limité"
|
4561 |
|
4562 |
-
#: lib/login_protection.php:
|
4563 |
-
#: lib/login_protection.php:
|
4564 |
msgid "Type the characters you see in the picture below:"
|
4565 |
msgstr "Entrez le texte de l'image ci-dessous :"
|
4566 |
|
4567 |
-
#: lib/login_protection.php:
|
4568 |
-
msgid "Please enter a number from 1 to 99 in 'Password-protect' field."
|
4569 |
-
msgstr ""
|
4570 |
-
"Veuillez entrer uniquement des nombres de 1 à 99 dans les champs \\'Protéger "
|
4571 |
-
"par mot de passe\\'."
|
4572 |
-
|
4573 |
-
#: lib/login_protection.php:145
|
4574 |
-
msgid "Invalid character."
|
4575 |
-
msgstr "Caractère invalide."
|
4576 |
-
|
4577 |
-
#: lib/login_protection.php:150
|
4578 |
-
msgid "\"admin\" is not acceptable, please choose another user name."
|
4579 |
-
msgstr ""
|
4580 |
-
"\"admin\" n\\'est pas acceptable, merci de bien vouloir choisir un autre "
|
4581 |
-
"identifiant."
|
4582 |
-
|
4583 |
-
#: lib/login_protection.php:158
|
4584 |
-
msgid "Please enter max 1024 character only."
|
4585 |
-
msgstr "Veuillez ne pas entrer plus de 1 024 caractères."
|
4586 |
-
|
4587 |
-
#: lib/login_protection.php:211
|
4588 |
msgid ""
|
4589 |
-
"
|
4590 |
-
"force attack protection is set to 'Always ON'."
|
4591 |
msgstr ""
|
4592 |
-
"L'
|
4593 |
-
"
|
4594 |
-
|
4595 |
-
#: lib/login_protection.php:271
|
4596 |
-
msgid "GD Support is not available on your server."
|
4597 |
-
msgstr "L'extension PHP GD n'est pas disponible sur votre serveur."
|
4598 |
|
4599 |
-
#: lib/login_protection.php:
|
4600 |
msgid ""
|
4601 |
"Error: GD Support is not available on your server, the captcha protection "
|
4602 |
"will not work!"
|
@@ -4604,90 +3843,94 @@ msgstr ""
|
|
4604 |
"Erreur : L'extension PHP GD n'est pas disponible sur votre serveur, la "
|
4605 |
"protection par captcha ne peut pas fonctionner."
|
4606 |
|
4607 |
-
#: lib/login_protection.php:
|
4608 |
msgid "Enable brute force attack protection"
|
4609 |
msgstr "Activer la protection contre les attaques par force brute"
|
4610 |
|
4611 |
-
#: lib/login_protection.php:
|
4612 |
-
msgid "Yes, if under attack"
|
4613 |
-
msgstr "Oui, si attaque en cours"
|
4614 |
-
|
4615 |
-
#: lib/login_protection.php:292
|
4616 |
-
msgid "Always ON"
|
4617 |
-
msgstr "Toujours activer"
|
4618 |
-
|
4619 |
-
#: lib/login_protection.php:305
|
4620 |
msgid "Type of protection"
|
4621 |
msgstr "Type de protection"
|
4622 |
|
4623 |
-
#: lib/login_protection.php:
|
4624 |
-
msgid "Password"
|
4625 |
-
msgstr "
|
|
|
|
|
|
|
|
|
4626 |
|
4627 |
-
#: lib/login_protection.php:
|
4628 |
-
msgid "
|
4629 |
-
msgstr "
|
4630 |
|
4631 |
-
#: lib/login_protection.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4632 |
msgid "Protect the login page against"
|
4633 |
msgstr "Protéger la page de connexion contre"
|
4634 |
|
4635 |
-
#: lib/login_protection.php:
|
4636 |
msgid "<code>GET</code> request attacks"
|
4637 |
msgstr "Les attaques <code>GET</code>"
|
4638 |
|
4639 |
-
#: lib/login_protection.php:
|
4640 |
msgid "<code>POST</code> request attacks (default)"
|
4641 |
msgstr "Les attaques <code>POST</code> (défaut)"
|
4642 |
|
4643 |
-
#: lib/login_protection.php:
|
4644 |
msgid "<code>GET</code> and <code>POST</code> requests attacks"
|
4645 |
msgstr "Les attaques <code>GET</code> et <code>POST</code>"
|
4646 |
|
4647 |
-
#: lib/login_protection.php:
|
4648 |
msgid "Enable protection"
|
4649 |
msgstr "Activer la protection"
|
4650 |
|
4651 |
-
#: lib/login_protection.php:
|
4652 |
#, php-format
|
4653 |
msgid "For %1$s minutes, if more than %2$s %3$s requests within %4$s seconds."
|
4654 |
msgstr ""
|
4655 |
"Pendant %1$s minutes, si plus de %2$s requêtes %3$s détectées en moins de "
|
4656 |
"%4$s secondes."
|
4657 |
|
4658 |
-
#: lib/login_protection.php:
|
4659 |
msgid "HTTP authentication"
|
4660 |
msgstr "Authentification HTTP"
|
4661 |
|
4662 |
-
#: lib/login_protection.php:
|
4663 |
msgid "User:"
|
4664 |
msgstr "Utilisateur :"
|
4665 |
|
4666 |
-
#: lib/login_protection.php:
|
4667 |
msgid "Password:"
|
4668 |
msgstr "Mot de passe :"
|
4669 |
|
4670 |
-
#: lib/login_protection.php:
|
4671 |
msgid "User and Password must be from 6 to 32 characters."
|
4672 |
msgstr "L'utilisateur et mot de passe doivent comporter de 6 à 32 caractères."
|
4673 |
|
4674 |
-
#: lib/login_protection.php:
|
4675 |
msgid "Message (max. 1024 characters, HTML tags allowed)"
|
4676 |
msgstr "Message (1 024 caractères maximum, balises HTML acceptées)"
|
4677 |
|
4678 |
-
#: lib/login_protection.php:
|
4679 |
msgid "Message"
|
4680 |
msgstr "Message"
|
4681 |
|
4682 |
-
#: lib/login_protection.php:
|
4683 |
msgid "This message will be displayed above the captcha. Max. 255 characters."
|
4684 |
msgstr "Ce message sera affiché au-dessus du captcha."
|
4685 |
|
4686 |
-
#: lib/login_protection.php:
|
4687 |
msgid "Various options"
|
4688 |
msgstr "Options diverses"
|
4689 |
|
4690 |
-
#: lib/login_protection.php:
|
4691 |
msgid ""
|
4692 |
"If you are using the Jetpack plugin, blocking access to the XML-RPC API may "
|
4693 |
"prevent it from working correctly."
|
@@ -4695,100 +3938,77 @@ msgstr ""
|
|
4695 |
"Si vous utilisez l'extension Jetpack, bloquer l'accès à l'API XML-RPC "
|
4696 |
"pourrait l’empêcher de fonctionner correctement."
|
4697 |
|
4698 |
-
#: lib/login_protection.php:
|
4699 |
-
msgid "
|
4700 |
-
msgstr "
|
4701 |
-
|
4702 |
-
#: lib/login_protection.php:392
|
4703 |
-
msgid "Apply the protection to the <code>xmlrpc.php</code> script as well."
|
4704 |
-
msgstr "Activer aussi la protection pour le fichier <code>xmlrpc.php</code>."
|
4705 |
|
4706 |
-
#: lib/login_protection.php:
|
4707 |
-
msgid "
|
4708 |
-
msgstr "
|
4709 |
|
4710 |
-
#: lib/login_protection.php:
|
4711 |
-
msgid "
|
4712 |
msgstr ""
|
4713 |
-
"
|
4714 |
-
"php</code>)."
|
4715 |
-
|
4716 |
-
#: lib/login_protection.php:404
|
4717 |
-
msgid "Authentication log"
|
4718 |
-
msgstr "Journal d'authentification"
|
4719 |
|
4720 |
-
#: lib/login_protection.php:
|
4721 |
msgid "Your server configuration is not compatible with that option."
|
4722 |
msgstr ""
|
4723 |
"La configuration de votre serveur n'est pas compatible avec cette option."
|
4724 |
|
4725 |
-
#: lib/login_protection.php:
|
4726 |
msgid ""
|
4727 |
-
"The login protection must be set to \"
|
4728 |
"this option."
|
4729 |
msgstr ""
|
4730 |
-
"La protection doit être activée sur \"
|
4731 |
-
"
|
4732 |
|
4733 |
-
#: lib/login_protection.php:
|
4734 |
-
msgid "
|
4735 |
-
msgstr ""
|
4736 |
-
"Enregistrer l'incident dans le journal des authentifications du serveur."
|
4737 |
-
|
4738 |
-
#: lib/login_protection.php:423
|
4739 |
-
msgid "Signature"
|
4740 |
-
msgstr "Signature"
|
4741 |
-
|
4742 |
-
#. translators: "Brute-force protection by NinjaFirewall" should not be translated.
|
4743 |
-
#: lib/login_protection.php:427
|
4744 |
-
msgid ""
|
4745 |
-
"Disable the <i>Brute-force protection by NinjaFirewall</i> signature on the "
|
4746 |
-
"protection page."
|
4747 |
-
msgstr ""
|
4748 |
-
"Ne pas afficher <i>Brute-force protection by NinjaFirewall</i> sur la page "
|
4749 |
-
"de connexion."
|
4750 |
|
4751 |
-
#: lib/login_protection.php:
|
4752 |
msgid "Save Login Protection"
|
4753 |
msgstr "Sauvegarder les options"
|
4754 |
|
4755 |
-
#: lib/login_protection.php:
|
4756 |
msgid "See our benchmark and stress-test:"
|
4757 |
msgstr "Consultez nos benchmarks :"
|
4758 |
|
4759 |
-
#: lib/login_protection.php:
|
4760 |
#, php-format
|
4761 |
msgid "Error: %s directory is not writable. Please chmod it to 0777."
|
4762 |
msgstr ""
|
4763 |
"Erreur : impossible d’écrire dans le répertoire %s. Assurez-vous qu'il "
|
4764 |
"n'est pas en lecture seule."
|
4765 |
|
4766 |
-
#: lib/login_protection.php:
|
4767 |
msgid "Error: please enter a user name for HTTP authentication."
|
4768 |
msgstr ""
|
4769 |
"Erreur : veuillez entrer un nom d'utilisateur pour l'authentification HTTP."
|
4770 |
|
4771 |
-
#: lib/login_protection.php:
|
4772 |
msgid "Error: HTTP authentication user name is not valid."
|
4773 |
msgstr ""
|
4774 |
"Erreur : le nom d'utilisateur pour l'authentification HTTP n'est pas valide."
|
4775 |
|
4776 |
-
#: lib/login_protection.php:
|
4777 |
msgid "Error: please enter a user name and password for HTTP authentication."
|
4778 |
msgstr ""
|
4779 |
"Erreur : veuillez entrer un nom d'utilisateur et mot de passe pour "
|
4780 |
"l'authentification HTTP."
|
4781 |
|
4782 |
-
#: lib/login_protection.php:
|
4783 |
msgid "Error: password must be from 6 to 32 characters."
|
4784 |
msgstr "Erreur : le mot de passe doit comporter de 6 à 32 caractères."
|
4785 |
|
4786 |
-
#: lib/login_protection.php:
|
4787 |
#, php-format
|
4788 |
msgid "Error: unable to write to the %s configuration file"
|
4789 |
msgstr "Erreur : impossible d’écrire dans le fichier de configuration %s"
|
4790 |
|
4791 |
-
#: lib/network.php:24 ninjafirewall.php:
|
4792 |
#, php-format
|
4793 |
msgid "You are not allowed to perform this task (%s)."
|
4794 |
msgstr "Vous n'êtes pas autorisé à effectuer cette tâche (%s)."
|
@@ -4797,11 +4017,11 @@ msgstr "Vous n'êtes pas autorisé à effectuer cette tâche (%s)."
|
|
4797 |
msgid "You do not have a multisite network."
|
4798 |
msgstr "Vous ne disposez pas d'un réseau multisite."
|
4799 |
|
4800 |
-
#: lib/network.php:
|
4801 |
msgid "NinjaFirewall Status"
|
4802 |
msgstr "Statut de NinjaFirewall"
|
4803 |
|
4804 |
-
#: lib/network.php:
|
4805 |
msgid ""
|
4806 |
"Display NinjaFirewall status icon in the admin bar of all sites in the "
|
4807 |
"network"
|
@@ -4809,15 +4029,52 @@ msgstr ""
|
|
4809 |
"Afficher l'icône du statut de NinjaFirewall dans la barre d'administration "
|
4810 |
"de tous les sites du réseau"
|
4811 |
|
4812 |
-
#: lib/network.php:
|
4813 |
msgid "Save Network options"
|
4814 |
msgstr "Sauvegarder les options"
|
4815 |
|
4816 |
-
#: lib/overview.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4817 |
msgid "Congratulations, NinjaFirewall is up and running!"
|
4818 |
msgstr "Félicitations, NinjaFirewall est bien activé !"
|
4819 |
|
4820 |
-
#: lib/overview.php:
|
4821 |
msgid ""
|
4822 |
"If you need help, click on the contextual \"Help\" menu tab located in the "
|
4823 |
"upper right corner of each page."
|
@@ -4825,62 +4082,82 @@ msgstr ""
|
|
4825 |
"Si vous avez besoin d'aide, cliquez sur l'onglet \"Aide\" situé dans le coin "
|
4826 |
"supérieur droit de chaque page."
|
4827 |
|
4828 |
-
#: lib/overview.php:
|
4829 |
msgid "A \"Quick Start, FAQ & Troubleshooting Guide\" email was sent to"
|
4830 |
msgstr ""
|
4831 |
"Un e-mail \"Guide d'Utilisation, d'Installation et de Dépannage\" a été "
|
4832 |
"envoyé à l'adresse"
|
4833 |
|
4834 |
-
#: lib/overview.php:
|
4835 |
-
msgid "
|
4836 |
-
msgstr "
|
4837 |
|
4838 |
-
#: lib/overview.php:
|
4839 |
msgid "Firewall"
|
4840 |
msgstr "Pare-feu"
|
4841 |
|
4842 |
-
#: lib/overview.php:
|
4843 |
-
msgid "WordPress WAF"
|
4844 |
-
msgstr "WordPress WAF"
|
4845 |
-
|
4846 |
-
#: lib/overview.php:87
|
4847 |
-
msgid "Full WAF"
|
4848 |
-
msgstr "Full WAF"
|
4849 |
-
|
4850 |
-
#: lib/overview.php:91
|
4851 |
msgid "Mode"
|
4852 |
msgstr "Mode"
|
4853 |
|
4854 |
-
#: lib/overview.php:
|
4855 |
#, php-format
|
4856 |
msgid "NinjaFirewall is running in %s mode."
|
4857 |
msgstr "NinjaFirewall fonctionne en mode %s."
|
4858 |
|
4859 |
-
#: lib/overview.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4860 |
msgid "Enabled."
|
4861 |
msgstr "Activé."
|
4862 |
|
4863 |
-
#: lib/overview.php:
|
4864 |
msgid "Click here to turn Debugging Mode off"
|
4865 |
msgstr "Cliquez ici pour désactiver le mode Débogage"
|
4866 |
|
4867 |
-
#: lib/overview.php:
|
4868 |
-
msgid "
|
4869 |
-
msgstr "
|
|
|
|
|
|
|
|
|
4870 |
|
4871 |
-
#: lib/overview.php:
|
4872 |
msgid "Version"
|
4873 |
msgstr "Version"
|
4874 |
|
4875 |
-
#: lib/overview.php:
|
4876 |
msgid "Security rules:"
|
4877 |
msgstr "Règles de sécurité :"
|
4878 |
|
4879 |
-
#: lib/overview.php:
|
|
|
|
|
|
|
|
|
4880 |
msgid "Security rules updates are disabled."
|
4881 |
msgstr "La mise à jour automatique des règles de sécurité est désactivée."
|
4882 |
|
4883 |
-
#: lib/overview.php:
|
4884 |
msgid ""
|
4885 |
"If you want your blog to be protected against the latest threats, enable "
|
4886 |
"automatic security rules updates."
|
@@ -4888,11 +4165,11 @@ msgstr ""
|
|
4888 |
"Pour garder votre WordPress protégé contre les dernières vulnérabilités, "
|
4889 |
"pensez à l'activer."
|
4890 |
|
4891 |
-
#: lib/overview.php:
|
4892 |
msgid "Admin user"
|
4893 |
msgstr "Administrateur"
|
4894 |
|
4895 |
-
#: lib/overview.php:
|
4896 |
#, php-format
|
4897 |
msgid ""
|
4898 |
"You are not whitelisted. Ensure that the \"Do not block WordPress "
|
@@ -4905,23 +4182,23 @@ msgstr ""
|
|
4905 |
"\"%s\">Politiques du Pare-feu</a>, sinon vous pourriez être bloqué par le "
|
4906 |
"pare-feu lorsque vous travaillez depuis votre Tableau de bord."
|
4907 |
|
4908 |
-
#: lib/overview.php:
|
4909 |
msgid "You are whitelisted by the firewall."
|
4910 |
msgstr "Vous êtes dans la liste blanche du pare-feu."
|
4911 |
|
4912 |
-
#: lib/overview.php:
|
4913 |
msgid "Restrictions"
|
4914 |
msgstr "Restrictions"
|
4915 |
|
4916 |
-
#: lib/overview.php:
|
4917 |
-
msgid "Access to NinjaFirewall is restricted to
|
4918 |
-
msgstr "L'accès à NinjaFirewall est restreint à
|
4919 |
|
4920 |
-
#: lib/overview.php:
|
4921 |
msgid "User session"
|
4922 |
msgstr "Session utilisateur"
|
4923 |
|
4924 |
-
#: lib/overview.php:
|
4925 |
msgid ""
|
4926 |
"It seems that the user session set by NinjaFirewall was not found by the "
|
4927 |
"firewall script."
|
@@ -4929,7 +4206,7 @@ msgstr ""
|
|
4929 |
"Il semble que la session d'utilisateur définie par NinjaFirewall n'a pas été "
|
4930 |
"trouvé par le script du pare-feu."
|
4931 |
|
4932 |
-
#: lib/overview.php:
|
4933 |
#, php-format
|
4934 |
msgid ""
|
4935 |
"the public key is invalid. Please <a href=\"%s\">check your configuration</"
|
@@ -4938,18 +4215,18 @@ msgstr ""
|
|
4938 |
"la clé publique est invalide. Veuillez vérifier <a href=\"%s\">votre "
|
4939 |
"configuration</a>."
|
4940 |
|
4941 |
-
#: lib/overview.php:
|
4942 |
msgid "No IP address restriction."
|
4943 |
msgstr "Aucune restriction d'accès par adresse IP."
|
4944 |
|
4945 |
-
#: lib/overview.php:
|
4946 |
#, php-format
|
4947 |
msgid "IP address %s is allowed to access NinjaFirewall's log on this server."
|
4948 |
msgstr ""
|
4949 |
"L'adresse IP %s est autorisée à accéder au journal du pare-feu de "
|
4950 |
"NinjaFirewall."
|
4951 |
|
4952 |
-
#: lib/overview.php:
|
4953 |
#, php-format
|
4954 |
msgid ""
|
4955 |
"the whitelisted IP is not valid. Please <a href=\"%s\">check your "
|
@@ -4958,21 +4235,21 @@ msgstr ""
|
|
4958 |
"l'adresse IP est invalide. Veuillez vérifier <a href=\"%s\">votre "
|
4959 |
"configuration</a>."
|
4960 |
|
4961 |
-
#: lib/overview.php:
|
4962 |
#, php-format
|
4963 |
msgid "Error: %s"
|
4964 |
msgstr "Erreur : %s"
|
4965 |
|
4966 |
-
#: lib/overview.php:
|
4967 |
msgid "Source IP"
|
4968 |
msgstr "IP source"
|
4969 |
|
4970 |
-
#: lib/overview.php:
|
4971 |
#, php-format
|
4972 |
msgid "You have a private IP : %s"
|
4973 |
msgstr "Vous avez l'adresse IP d'un réseau privé : %s"
|
4974 |
|
4975 |
-
#: lib/overview.php:
|
4976 |
#, php-format
|
4977 |
msgid ""
|
4978 |
"If your site is behind a reverse proxy or a load balancer, ensure that you "
|
@@ -4984,11 +4261,11 @@ msgstr ""
|
|
4984 |
"la bonne adresse IP, sinon utilisez le fichier de configuration %s de "
|
4985 |
"NinjaFirewall. "
|
4986 |
|
4987 |
-
#: lib/overview.php:
|
4988 |
msgid "CDN detection"
|
4989 |
msgstr "Détection CDN"
|
4990 |
|
4991 |
-
#: lib/overview.php:
|
4992 |
#, php-format
|
4993 |
msgid ""
|
4994 |
"%s detected: you seem to be using Cloudflare CDN services. Ensure that you "
|
@@ -4999,7 +4276,7 @@ msgstr ""
|
|
4999 |
"vous d'avoir configuré votre serveur HTTP afin qu'il fasse suivre la bonne "
|
5000 |
"adresse IP, sinon utilisez le fichier de configuration %s de NinjaFirewall."
|
5001 |
|
5002 |
-
#: lib/overview.php:
|
5003 |
#, php-format
|
5004 |
msgid ""
|
5005 |
"%s detected: you seem to be using Incapsula CDN services. Ensure that you "
|
@@ -5010,129 +4287,129 @@ msgstr ""
|
|
5010 |
"vous d'avoir configuré votre serveur HTTP afin qu'il fasse suivre la bonne "
|
5011 |
"adresse IP, sinon utilisez le fichier de configuration %s de NinjaFirewall."
|
5012 |
|
5013 |
-
#: lib/overview.php:
|
5014 |
msgid "Log dir"
|
5015 |
msgstr "Répertoire du Journal"
|
5016 |
|
5017 |
-
#: lib/overview.php:
|
5018 |
#, php-format
|
5019 |
msgid "%s directory is not writable! Please chmod it to 0777 or equivalent."
|
5020 |
msgstr ""
|
5021 |
"Le répertoire %s est en lecture seule ! Veuillez changer ses permissions "
|
5022 |
"(0777 ou équivalent)."
|
5023 |
|
5024 |
-
#: lib/overview.php:
|
5025 |
msgid "Optional configuration file"
|
5026 |
msgstr "Fichier de configuration"
|
5027 |
|
5028 |
-
#: lib/overview.php:
|
5029 |
msgid "MySQLi link identifier"
|
5030 |
msgstr "Identifiant de lien MySQLi"
|
5031 |
|
5032 |
-
#: lib/overview.php:
|
5033 |
msgid "A MySQLi link identifier was detected in your <code>.htninja</code>."
|
5034 |
msgstr ""
|
5035 |
"Un identifiant de lien MySQLi a été détecté dans votre fichier <code>."
|
5036 |
"htninja</code>."
|
5037 |
|
5038 |
-
#: lib/rules_editor.php:
|
5039 |
msgid "Error: you did not select a rule to disable."
|
5040 |
msgstr "Erreur : vous devez sélectionner la règle à désactiver."
|
5041 |
|
5042 |
-
#: lib/rules_editor.php:
|
5043 |
msgid "Error: to change this rule, use the \"Firewall Policies\" menu."
|
5044 |
msgstr ""
|
5045 |
"Erreur : pour modifier cette règle, utilisez le menu \"Politiques du Pare-feu"
|
5046 |
"\"."
|
5047 |
|
5048 |
-
#: lib/rules_editor.php:
|
5049 |
msgid "Error: this rule does not exist."
|
5050 |
msgstr "Erreur : cette règle n'existe pas."
|
5051 |
|
5052 |
-
#: lib/rules_editor.php:
|
5053 |
#, php-format
|
5054 |
msgid "Rule ID %s has been disabled."
|
5055 |
msgstr "La règle %s a été désactivée."
|
5056 |
|
5057 |
-
#: lib/rules_editor.php:
|
5058 |
msgid "Error: you did not select a rule to enable."
|
5059 |
msgstr "Erreur : vous devez sélectionner la règle à activer."
|
5060 |
|
5061 |
-
#: lib/rules_editor.php:
|
5062 |
#, php-format
|
5063 |
msgid "Rule ID %s has been enabled."
|
5064 |
msgstr "La règle %s a été activée."
|
5065 |
|
5066 |
-
#: lib/rules_editor.php:
|
5067 |
msgid "Error: no rules found."
|
5068 |
msgstr "Erreur : aucune règle de sécurité trouvée."
|
5069 |
|
5070 |
-
#: lib/rules_editor.php:
|
5071 |
msgid "NinjaFirewall built-in security rules"
|
5072 |
msgstr "Éditeur de règles du pare-feu"
|
5073 |
|
5074 |
-
#: lib/rules_editor.php:
|
5075 |
msgid "Select the rule you want to disable or enable"
|
5076 |
msgstr "Sélectionnez la règle à activer ou désactiver"
|
5077 |
|
5078 |
-
#: lib/rules_editor.php:
|
5079 |
msgid "Total rules enabled"
|
5080 |
msgstr "Règles activées"
|
5081 |
|
5082 |
# Todo ?
|
5083 |
-
#: lib/rules_editor.php:
|
5084 |
msgid "Remote/local file inclusion"
|
5085 |
msgstr "Remote/local file inclusion"
|
5086 |
|
5087 |
# Todo ?
|
5088 |
-
#: lib/rules_editor.php:
|
5089 |
msgid "Cross-site scripting"
|
5090 |
msgstr "Cross-site scripting"
|
5091 |
|
5092 |
# Todo ?
|
5093 |
-
#: lib/rules_editor.php:
|
5094 |
msgid "Code injection"
|
5095 |
msgstr "Code injection"
|
5096 |
|
5097 |
# Todo ?
|
5098 |
-
#: lib/rules_editor.php:
|
5099 |
msgid "SQL injection"
|
5100 |
msgstr "SQL injection"
|
5101 |
|
5102 |
-
#: lib/rules_editor.php:
|
5103 |
msgid "Various vulnerability"
|
5104 |
msgstr "Vulnérabilité (divers)"
|
5105 |
|
5106 |
# Todo ?
|
5107 |
-
#: lib/rules_editor.php:
|
5108 |
msgid "Backdoor/shell"
|
5109 |
msgstr "Backdoor/shell"
|
5110 |
|
5111 |
-
#: lib/rules_editor.php:
|
5112 |
msgid "Application specific"
|
5113 |
msgstr "Application spécifique"
|
5114 |
|
5115 |
-
#: lib/rules_editor.php:
|
5116 |
msgid "WordPress vulnerability"
|
5117 |
msgstr "Vulnérabilité WordPress"
|
5118 |
|
5119 |
-
#: lib/rules_editor.php:
|
5120 |
msgid "Rule ID"
|
5121 |
msgstr "Règle"
|
5122 |
|
5123 |
-
#: lib/rules_editor.php:
|
5124 |
msgid "Disable it"
|
5125 |
msgstr "Désactiver"
|
5126 |
|
5127 |
-
#: lib/rules_editor.php:
|
5128 |
msgid "Total rules disabled"
|
5129 |
msgstr "Règles désactivées"
|
5130 |
|
5131 |
-
#: lib/rules_editor.php:
|
5132 |
msgid "Enable it"
|
5133 |
msgstr "Activer"
|
5134 |
|
5135 |
-
#: lib/rules_update.php:73 ninjafirewall.php:
|
5136 |
msgid "Rules Update"
|
5137 |
msgstr "Mise à Jour des Règles"
|
5138 |
|
@@ -5146,45 +4423,36 @@ msgstr ""
|
|
5146 |
msgid "Security rules have been updated."
|
5147 |
msgstr "Les règles de sécurité ont été mises à jour."
|
5148 |
|
5149 |
-
#: lib/rules_update.php:94 lib/rules_update.php:
|
5150 |
msgid "No security rules update available."
|
5151 |
msgstr "Aucune mise à jour des règles de sécurité disponible."
|
5152 |
|
5153 |
-
#: lib/rules_update.php:
|
5154 |
-
msgid "Automatically update NinjaFirewall security rules"
|
5155 |
-
msgstr "Activer la mise à jour automatique des règles de sécurité"
|
5156 |
-
|
5157 |
-
#: lib/rules_update.php:157
|
5158 |
#, php-format
|
5159 |
msgid ""
|
5160 |
-
"It seems that %s is
|
5161 |
"otherwise NinjaFirewall automatic updates will not work."
|
5162 |
msgstr ""
|
5163 |
"Il semble que %s est activé. Assurez vous de pouvoir exécuter WP-Cron, sinon "
|
5164 |
"les mises à jour automatiques ne pourront pas être effectuées."
|
5165 |
|
5166 |
-
#: lib/rules_update.php:
|
|
|
|
|
|
|
|
|
5167 |
msgid "Check for updates"
|
5168 |
msgstr "Vérifier les mises à jour"
|
5169 |
|
5170 |
-
#: lib/rules_update.php:
|
5171 |
msgid "Every 15 minutes"
|
5172 |
msgstr "Toutes les 15 minutes"
|
5173 |
|
5174 |
-
#: lib/rules_update.php:
|
5175 |
msgid "Every 30 minutes"
|
5176 |
msgstr "Toutes les 30 minutes"
|
5177 |
|
5178 |
-
#: lib/rules_update.php:
|
5179 |
-
#, php-format
|
5180 |
-
msgid ""
|
5181 |
-
"Next scheduled update will start in approximately %s day, %s hour(s), %s "
|
5182 |
-
"minute(s) and %s seconds."
|
5183 |
-
msgstr ""
|
5184 |
-
"La prochaine vérification des mises à jour aura lieu dans %s jour, %s "
|
5185 |
-
"heure(s), %s minute(s) et %s secondes."
|
5186 |
-
|
5187 |
-
#: lib/rules_update.php:186
|
5188 |
msgid ""
|
5189 |
"The next scheduled date is in the past! WordPress wp-cron may not be working "
|
5190 |
"or may have been disabled."
|
@@ -5193,17 +4461,26 @@ msgstr ""
|
|
5193 |
"passé ! Essayez de recharger cette page, sinon vérifiez que WP-Cron n'a "
|
5194 |
"pas été désactivé."
|
5195 |
|
5196 |
-
#: lib/rules_update.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5197 |
msgid "Notification"
|
5198 |
msgstr "Notification"
|
5199 |
|
5200 |
-
#: lib/rules_update.php:
|
5201 |
msgid "Send me a report by email when security rules have been updated."
|
5202 |
msgstr ""
|
5203 |
"Envoyez-moi un rapport par e-mail lorsque les règles de sécurité ont été "
|
5204 |
"mises à jour."
|
5205 |
|
5206 |
-
#: lib/rules_update.php:
|
5207 |
msgid ""
|
5208 |
"Reports will be sent to the contact email address defined in the Event "
|
5209 |
"Notifications menu."
|
@@ -5211,52 +4488,52 @@ msgstr ""
|
|
5211 |
"Les rapports seront envoyés à l'adresse e-mail définie dans la page "
|
5212 |
"\"Notifications d'Événement\"."
|
5213 |
|
5214 |
-
#: lib/rules_update.php:
|
5215 |
-
msgid "Save Updates Options"
|
5216 |
-
msgstr "Sauvegarder les options"
|
5217 |
-
|
5218 |
-
#: lib/rules_update.php:204
|
5219 |
-
msgid "Check For Updates Now!"
|
5220 |
-
msgstr "Vérifier les mises à jour maintenant ! "
|
5221 |
-
|
5222 |
-
#: lib/rules_update.php:213
|
5223 |
msgid "The updates log is currently empty."
|
5224 |
msgstr "Le journal des mises à jour est vide."
|
5225 |
|
5226 |
-
#: lib/rules_update.php:
|
5227 |
msgid "Updates Log"
|
5228 |
msgstr "Journal des mises à jour"
|
5229 |
|
5230 |
-
#: lib/rules_update.php:
|
5231 |
-
msgid "Delete Log"
|
5232 |
-
msgstr "Supprimer le journal"
|
5233 |
-
|
5234 |
-
#: lib/rules_update.php:236
|
5235 |
msgid "Log is flushed automatically."
|
5236 |
msgstr "Le journal est purgé automatiquement."
|
5237 |
|
5238 |
-
#: lib/rules_update.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5239 |
msgid "Error: Wrong rules format."
|
5240 |
msgstr "Erreur : Le format des règles téléchargées ne correspond pas."
|
5241 |
|
5242 |
-
#: lib/rules_update.php:
|
5243 |
msgid "Error: Unable to unserialize the new rules."
|
5244 |
msgstr ""
|
5245 |
"Erreur : Impossible d'extraire les règles du fichier téléchargé (unable to "
|
5246 |
"unserialize the new rules)."
|
5247 |
|
5248 |
-
#: lib/rules_update.php:
|
5249 |
msgid "Error: Unserialized rules seem corrupted."
|
5250 |
msgstr ""
|
5251 |
"Erreur : Le fichier des règles téléchargé semblent corrompu (unserialized "
|
5252 |
"rules seem corrupted)."
|
5253 |
|
5254 |
-
#: lib/rules_update.php:
|
5255 |
#, php-format
|
5256 |
msgid "Security rules updated to version %s."
|
5257 |
msgstr "Les règles de sécurité ont été mises à jour vers la version %s."
|
5258 |
|
5259 |
-
#: lib/rules_update.php:
|
5260 |
msgid ""
|
5261 |
"Error: Your version of NinjaFirewall is too old and is not compatible with "
|
5262 |
"those rules. Please upgrade it."
|
@@ -5264,26 +4541,26 @@ msgstr ""
|
|
5264 |
"Erreur : Votre version de NinjaFirewall est trop ancienne et n'est pas "
|
5265 |
"compatible avec ces règles de sécurité. Mettez à jour NinjaFirewall."
|
5266 |
|
5267 |
-
#: lib/rules_update.php:
|
5268 |
msgid "Error: Unable to retrieve the new rules version."
|
5269 |
msgstr "Erreur : Impossible de récupérer la nouvelle version des règles."
|
5270 |
|
5271 |
-
#: lib/rules_update.php:
|
5272 |
#, php-format
|
5273 |
msgid "Error: Server returned a %s HTTP error code (#1)."
|
5274 |
msgstr "Erreur : Le serveur a retourné un code d'erreur HTTP %s (#1)."
|
5275 |
|
5276 |
-
#: lib/rules_update.php:
|
5277 |
msgid "Error: Unable to connect to the remote server"
|
5278 |
msgstr "Erreur : Impossible de se connecter au serveur distant"
|
5279 |
|
5280 |
-
#: lib/rules_update.php:
|
5281 |
#, php-format
|
5282 |
msgid "Error: The new rules versions do not match (%s != %s)."
|
5283 |
msgstr ""
|
5284 |
"Erreur : La versions des nouvelles règles ne correspond pas (%s != %s)."
|
5285 |
|
5286 |
-
#: lib/rules_update.php:
|
5287 |
#, php-format
|
5288 |
msgid ""
|
5289 |
"Error: The new rules %s digital signature is not correct. Aborting update, "
|
@@ -5292,102 +4569,235 @@ msgstr ""
|
|
5292 |
"Erreur : La signature numérique des nouvelles règles %s n'est pas correcte. "
|
5293 |
"Annulation de la mise à jour, les règles ont peut-être été altérées."
|
5294 |
|
5295 |
-
#: lib/rules_update.php:
|
5296 |
#, php-format
|
5297 |
msgid "Error: Server returned a %s HTTP error code (#2)."
|
5298 |
msgstr "Erreur : Le serveur a retourné un code d'erreur HTTP %s (#2)."
|
5299 |
|
5300 |
-
#: lib/rules_update.php:
|
5301 |
msgid "[NinjaFirewall] Security rules update"
|
5302 |
msgstr "[NinjaFirewall] Mise à jour des règles de sécurité"
|
5303 |
|
5304 |
-
#: lib/rules_update.php:
|
5305 |
msgid "NinjaFirewall security rules have been updated:"
|
5306 |
msgstr "Les règles de sécurité de NinjaFirewall ont été mises à jour :"
|
5307 |
|
5308 |
-
#: lib/rules_update.php:
|
5309 |
msgid "Rules version:"
|
5310 |
msgstr "Version des règles :"
|
5311 |
|
5312 |
-
#: lib/rules_update.php:
|
5313 |
msgid ""
|
5314 |
"This notification can be turned off from NinjaFirewall \"Rules Update\" page."
|
5315 |
msgstr ""
|
5316 |
"Cette notification peut être désactivée depuis la page \"Mise à Jour des "
|
5317 |
"Règles\" de NinjaFirewall."
|
5318 |
|
5319 |
-
#: lib/statistics.php:27 ninjafirewall.php:
|
5320 |
msgid "Statistics"
|
5321 |
msgstr "Statistiques"
|
5322 |
|
5323 |
-
#: lib/statistics.php:
|
5324 |
msgid "You do not have any stats for the selected month yet."
|
5325 |
msgstr "Vous n'avez pas de statistiques pour le mois sélectionné."
|
5326 |
|
5327 |
-
#: lib/statistics.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5328 |
msgid "Critical"
|
5329 |
msgstr "Critique"
|
5330 |
|
5331 |
-
#: lib/statistics.php:
|
5332 |
msgid "High"
|
5333 |
msgstr "Élevé"
|
5334 |
|
5335 |
-
#: lib/statistics.php:
|
5336 |
msgid "Medium"
|
5337 |
msgstr "Moyen"
|
5338 |
|
5339 |
-
#: lib/statistics.php:
|
5340 |
-
msgid "
|
5341 |
-
msgstr "
|
5342 |
|
5343 |
-
#: lib/
|
5344 |
-
msgid "
|
5345 |
-
msgstr "
|
5346 |
|
5347 |
-
#: lib/
|
5348 |
-
msgid "
|
5349 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5350 |
|
5351 |
-
#: lib/
|
5352 |
-
|
5353 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5354 |
|
5355 |
-
#: lib/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5356 |
msgid "Blocked user account creation"
|
5357 |
msgstr "Création de compte d'utilisateur bloquée"
|
5358 |
|
5359 |
-
#: lib/utils.php:
|
5360 |
msgid "NinjaFirewall has blocked an attempt to create a user account:"
|
5361 |
msgstr ""
|
5362 |
"NinjaFirewall a bloqué une tentative de création d'un compte d'utilisateur :"
|
5363 |
|
5364 |
-
#: lib/utils.php:
|
5365 |
msgid "Username:"
|
5366 |
msgstr "Utilisateur :"
|
5367 |
|
5368 |
-
#: lib/utils.php:
|
5369 |
msgid "User IP:"
|
5370 |
msgstr "IP utilisateur :"
|
5371 |
|
5372 |
-
#: lib/utils.php:
|
5373 |
msgid "Date:"
|
5374 |
msgstr "Date :"
|
5375 |
|
5376 |
-
#: lib/utils.php:
|
5377 |
msgid "A PHP backtrace has been attached to this message for your convenience."
|
5378 |
msgstr ""
|
5379 |
"La pile d'exécution de PHP est jointe à ce message pour votre commodité."
|
5380 |
|
5381 |
-
#: lib/utils.php:
|
5382 |
-
#: lib/utils.php:
|
5383 |
msgid "You are not allowed to perform this task."
|
5384 |
msgstr "Vous n'êtes pas autorisé à effectuer cette tâche."
|
5385 |
|
5386 |
-
#: lib/utils.php:
|
5387 |
msgid "NinjaFirewall error"
|
5388 |
msgstr "NinjaFirewall Erreur"
|
5389 |
|
5390 |
-
#: lib/utils.php:
|
5391 |
#, php-format
|
5392 |
msgid ""
|
5393 |
"%s directory cannot be created. Please review your installation and ensure "
|
@@ -5396,7 +4806,7 @@ msgstr ""
|
|
5396 |
"Le répertoire %s ne peut pas être créé. Vérifiez votre installation et "
|
5397 |
"assurez vous que %s n'est pas en lecture seule."
|
5398 |
|
5399 |
-
#: lib/utils.php:
|
5400 |
#, php-format
|
5401 |
msgid ""
|
5402 |
"%s directory is read-only. Please review your installation and ensure that "
|
@@ -5405,47 +4815,51 @@ msgstr ""
|
|
5405 |
"Le répertoire %s est en lecture seule. Vérifiez votre installation et les "
|
5406 |
"permissions de %s."
|
5407 |
|
5408 |
-
#: lib/utils.php:
|
|
|
|
|
|
|
|
|
5409 |
msgid "NinjaFirewall fatal error:"
|
5410 |
msgstr "NinjaFirewall erreur fatale :"
|
5411 |
|
5412 |
-
#: lib/utils.php:
|
5413 |
msgid "Review your installation, your site is not protected."
|
5414 |
msgstr "Vérifiez votre installation, votre site n'est pas protégé."
|
5415 |
|
5416 |
-
#: lib/utils.php:
|
5417 |
msgid "Alert: WordPress console login"
|
5418 |
msgstr "Alerte : Connexion à WordPress"
|
5419 |
|
5420 |
-
#: lib/utils.php:
|
5421 |
msgid "-Blog:"
|
5422 |
msgstr "- Blog :"
|
5423 |
|
5424 |
-
#: lib/utils.php:
|
5425 |
msgid "Someone just logged in to your WordPress admin console:"
|
5426 |
msgstr "Quelqu'un vient de se connecter à votre Tableau de bord de WordPress:"
|
5427 |
|
5428 |
-
#: lib/utils.php:
|
5429 |
msgid "-User:"
|
5430 |
msgstr "- Nom :"
|
5431 |
|
5432 |
-
#: lib/utils.php:
|
5433 |
msgid "-IP:"
|
5434 |
msgstr "- IP :"
|
5435 |
|
5436 |
-
#: lib/utils.php:
|
5437 |
msgid "-Date:"
|
5438 |
msgstr "- Date :"
|
5439 |
|
5440 |
-
#: lib/utils.php:
|
5441 |
msgid "Support forum"
|
5442 |
msgstr "Forum "
|
5443 |
|
5444 |
-
#: lib/utils.php:
|
5445 |
msgid "Forbidden access"
|
5446 |
msgstr "Accès interdit"
|
5447 |
|
5448 |
-
#: lib/utils.php:
|
5449 |
#, php-format
|
5450 |
msgid ""
|
5451 |
"<strong>ERROR</strong>: Invalid username or password.<br /><a href=\"%s"
|
@@ -5454,59 +4868,59 @@ msgstr ""
|
|
5454 |
"<strong>ERREUR</strong>: Identifiant ou mot de passe invalide.<br /><a href="
|
5455 |
"\"%s\">Mot de passe perdu</a> ?"
|
5456 |
|
5457 |
-
#: lib/utils.php:
|
5458 |
msgid "Plugin"
|
5459 |
msgstr "Extension"
|
5460 |
|
5461 |
-
#: lib/utils.php:
|
5462 |
msgid "uploaded"
|
5463 |
msgstr "téléchargé(e)"
|
5464 |
|
5465 |
-
#: lib/utils.php:
|
5466 |
msgid "installed"
|
5467 |
msgstr "installé(e)"
|
5468 |
|
5469 |
-
#: lib/utils.php:
|
5470 |
msgid "activated"
|
5471 |
msgstr "activé(e)"
|
5472 |
|
5473 |
-
#: lib/utils.php:
|
5474 |
msgid "updated"
|
5475 |
msgstr "mis(e) à jour"
|
5476 |
|
5477 |
-
#: lib/utils.php:
|
5478 |
msgid "deactivated"
|
5479 |
msgstr "désactivé(e)"
|
5480 |
|
5481 |
-
#: lib/utils.php:
|
5482 |
msgid "deleted"
|
5483 |
msgstr "supprimé(e)"
|
5484 |
|
5485 |
-
#: lib/utils.php:
|
5486 |
msgid "Name"
|
5487 |
msgstr "Nom"
|
5488 |
|
5489 |
-
#: lib/utils.php:
|
5490 |
msgid "Theme"
|
5491 |
msgstr "Thème"
|
5492 |
|
5493 |
-
#: lib/utils.php:
|
5494 |
msgid "upgraded"
|
5495 |
msgstr "mis(e) à jour"
|
5496 |
|
5497 |
-
#: lib/utils.php:
|
5498 |
msgid "[NinjaFirewall] Alert:"
|
5499 |
msgstr "[NinjaFirewall] Alerte :"
|
5500 |
|
5501 |
-
#: lib/utils.php:
|
5502 |
msgid "NinjaFirewall has detected the following activity on your account:"
|
5503 |
msgstr "NinjaFirewall a détecté l'activité suivante sur votre compte :"
|
5504 |
|
5505 |
-
#: lib/utils.php:
|
5506 |
msgid "[NinjaFirewall] Alert: Database changes detected"
|
5507 |
msgstr "[NinjaFirewall] Alerte: Modification dans la base de données"
|
5508 |
|
5509 |
-
#: lib/utils.php:
|
5510 |
msgid ""
|
5511 |
"NinjaFirewall has detected that one or more administrator accounts were "
|
5512 |
"modified in the database:"
|
@@ -5514,12 +4928,12 @@ msgstr ""
|
|
5514 |
"NinjaFirewall a détecté que un ou plusieurs comptes d'administrateur ont été "
|
5515 |
"modifiés dans la base de données:"
|
5516 |
|
5517 |
-
#: lib/utils.php:
|
5518 |
#, php-format
|
5519 |
msgid "Total administrators : %s"
|
5520 |
msgstr "Nombre d'administrateurs : %s"
|
5521 |
|
5522 |
-
#: lib/utils.php:
|
5523 |
msgid ""
|
5524 |
"If you cannot see any modifications in the above fields, it is possible that "
|
5525 |
"the administrator password was changed."
|
@@ -5527,17 +4941,19 @@ msgstr ""
|
|
5527 |
"Si vous ne voyez pas de modifications dans les données ci-dessus, il est "
|
5528 |
"possible que le mot de passe administrateur ait été changé."
|
5529 |
|
5530 |
-
#: lib/utils.php:
|
5531 |
msgid "Blocked privilege escalation attempt"
|
5532 |
msgstr "Tentatives d'élévation des privilèges"
|
5533 |
|
5534 |
-
#: lib/utils.php:
|
5535 |
-
msgid "
|
|
|
|
|
5536 |
msgstr ""
|
5537 |
-
"NinjaFirewall a bloqué
|
5538 |
-
"
|
5539 |
|
5540 |
-
#: lib/utils.php:
|
5541 |
msgid ""
|
5542 |
"NinjaFirewall brute-force protection is enabled and you are temporarily "
|
5543 |
"whitelisted."
|
@@ -5545,7 +4961,7 @@ msgstr ""
|
|
5545 |
"La protection de NinjaFirewall contre les attaques par force brute est "
|
5546 |
"activée. Vous êtes temporairement dans la liste blanche."
|
5547 |
|
5548 |
-
#: lib/utils.php:
|
5549 |
#, php-format
|
5550 |
msgid ""
|
5551 |
"Hey, it seems that you've been using NinjaFirewall for some time. If you "
|
@@ -5558,17 +4974,17 @@ msgstr ""
|
|
5558 |
"a>. Il a fallu des milliers d'heures pour le développer, mais il suffit "
|
5559 |
"seulement de quelques minutes pour le noter. Merci !"
|
5560 |
|
5561 |
-
#: lib/utils.php:
|
5562 |
msgid ""
|
5563 |
"The attempt was blocked and the option was reversed to its original value."
|
5564 |
msgstr ""
|
5565 |
"La tentative a été bloquée et l'option a été remise à sa valeur d'origine."
|
5566 |
|
5567 |
-
#: lib/utils.php:
|
5568 |
msgid "Attempt to modify WordPress settings"
|
5569 |
msgstr "Tentative de modification des paramètres de WordPress"
|
5570 |
|
5571 |
-
#: lib/utils.php:
|
5572 |
msgid ""
|
5573 |
"NinjaFirewall has blocked an attempt to modify some important WordPress "
|
5574 |
"settings by a user that does not have administrative privileges:"
|
@@ -5577,31 +4993,31 @@ msgstr ""
|
|
5577 |
"importants de WordPress par un utilisateur ne disposant pas de privilèges "
|
5578 |
"administratifs :"
|
5579 |
|
5580 |
-
#: lib/utils.php:
|
5581 |
#, php-format
|
5582 |
msgid "Option: %s"
|
5583 |
msgstr "Option: %s"
|
5584 |
|
5585 |
-
#: lib/utils.php:
|
5586 |
#, php-format
|
5587 |
msgid "Original value: %s"
|
5588 |
msgstr "Valeur originale : %s"
|
5589 |
|
5590 |
-
#: lib/utils.php:
|
5591 |
#, php-format
|
5592 |
msgid "Modified value: %s"
|
5593 |
msgstr "Valeur modifiée : %s"
|
5594 |
|
5595 |
-
#: lib/utils.php:
|
5596 |
#, php-format
|
5597 |
msgid "Action taken: %s"
|
5598 |
msgstr "Action prise : %s"
|
5599 |
|
5600 |
-
#: lib/utils.php:
|
5601 |
msgid "Code injection attempt in WordPress options table"
|
5602 |
msgstr "Tentative d'injection de code dans la table des options de WordPress"
|
5603 |
|
5604 |
-
#: lib/utils.php:
|
5605 |
msgid ""
|
5606 |
"NinjaFirewall has blocked an attempt to inject code in the WordPress options "
|
5607 |
"table by a user that does not have administrative privileges:"
|
@@ -5610,12 +5026,12 @@ msgstr ""
|
|
5610 |
"options de WordPress par un utilisateur ne disposant pas de privilèges "
|
5611 |
"administratifs :"
|
5612 |
|
5613 |
-
#: lib/utils.php:
|
5614 |
#, php-format
|
5615 |
msgid "Code: %s"
|
5616 |
msgstr "Code : %s"
|
5617 |
|
5618 |
-
#: lib/utils.php:
|
5619 |
msgid ""
|
5620 |
"This protection (and notification) can be turned off from NinjaFirewall "
|
5621 |
"\"Firewall Policies\" page."
|
@@ -5623,95 +5039,138 @@ msgstr ""
|
|
5623 |
"Cette protection (et notification) peut être désactivée à partir de la page "
|
5624 |
"\"Politiques du Pare-feu\" de NinjaFirewall."
|
5625 |
|
5626 |
-
#: lib/
|
5627 |
-
|
5628 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5629 |
|
5630 |
-
|
5631 |
-
|
5632 |
msgid ""
|
5633 |
-
"
|
5634 |
-
"
|
5635 |
-
"most
|
|
|
5636 |
msgstr ""
|
5637 |
-
"
|
5638 |
-
"de
|
5639 |
-
"
|
5640 |
-
"le march
|
|
|
|
|
|
|
|
|
|
|
5641 |
|
5642 |
-
#: lib/wpplus.php:
|
5643 |
msgid "Access Control"
|
5644 |
msgstr "Contrôle d'Accès"
|
5645 |
|
5646 |
-
#: lib/wpplus.php:
|
5647 |
msgid ""
|
5648 |
-
"
|
5649 |
-
"
|
5650 |
-
"
|
5651 |
-
"
|
5652 |
-
"
|
5653 |
-
"
|
5654 |
-
"
|
5655 |
msgstr ""
|
5656 |
-
"Le
|
5657 |
-
"
|
5658 |
-
"
|
5659 |
-
"
|
5660 |
-
"
|
5661 |
-
"
|
5662 |
-
"
|
5663 |
|
5664 |
-
#: lib/wpplus.php:
|
5665 |
msgid ""
|
5666 |
"Its main configuration allows you to whitelist WordPress users depending on "
|
5667 |
"their roles, to select the source IP (useful if your site is using a CDN or "
|
5668 |
"behind a reverse-proxy/load balancer), and the HTTP methods all directives "
|
5669 |
-
"should apply to
|
5670 |
msgstr ""
|
5671 |
"Sa configuration principale vous permet de créer une liste blanche des "
|
5672 |
"utilisateurs de WordPress en fonction de leurs rôles, de sélectionner "
|
5673 |
"l'adresse IP source (utile si votre site utilise un CDN ou un équilibreur de "
|
5674 |
"charge), et les méthodes HTTP auxquelles s'appliqueront toutes les "
|
5675 |
-
"directives
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5676 |
|
5677 |
-
#: lib/wpplus.php:
|
|
|
|
|
|
|
|
|
5678 |
msgid ""
|
5679 |
-
"
|
5680 |
-
"
|
5681 |
-
"
|
5682 |
-
"
|
5683 |
-
"
|
5684 |
msgstr ""
|
5685 |
-
"
|
5686 |
-
"
|
5687 |
-
"
|
5688 |
-
"
|
5689 |
-
"
|
5690 |
-
"
|
|
|
|
|
|
|
|
|
5691 |
|
5692 |
-
#: lib/wpplus.php:
|
5693 |
msgid ""
|
5694 |
-
"
|
5695 |
-
"
|
5696 |
-
"
|
5697 |
msgstr ""
|
5698 |
-
"Le
|
5699 |
-
"adresse IP
|
5700 |
-
"l'IPv4 et l'IPv6
|
5701 |
|
5702 |
-
#: lib/wpplus.php:
|
5703 |
msgid ""
|
5704 |
-
"
|
5705 |
"or even small HTTP attacks with its <strong>Rate-Limiting</strong> feature."
|
5706 |
msgstr ""
|
5707 |
-
"Le
|
5708 |
"scrapers ou même de petites attaques HTTP avec son option <strong>Limiter le "
|
5709 |
"trafic</strong>."
|
5710 |
|
5711 |
-
#: lib/wpplus.php:
|
5712 |
msgid ""
|
5713 |
"Because it can block attackers <strong>before WordPress and all its plugins "
|
5714 |
-
"are loaded</strong> and can handle
|
5715 |
"NinjaFirewall will save precious bandwidth and reduce your server load."
|
5716 |
msgstr ""
|
5717 |
"Parce qu'il peut bloquer les attaques <strong>avant que WordPress et ses "
|
@@ -5719,77 +5178,84 @@ msgstr ""
|
|
5719 |
"requêtes HTTP par seconde, NinjaFirewall vous fera économiser de la bande "
|
5720 |
"passante et permettra de réduire la charge du serveur."
|
5721 |
|
5722 |
-
#: lib/wpplus.php:
|
|
|
|
|
|
|
|
|
5723 |
msgid ""
|
5724 |
-
"
|
5725 |
-
"
|
5726 |
msgstr ""
|
5727 |
-
"Le
|
5728 |
-
"
|
|
|
5729 |
|
5730 |
-
#: lib/wpplus.php:
|
|
|
|
|
|
|
|
|
5731 |
msgid ""
|
5732 |
-
"
|
5733 |
-
"
|
5734 |
msgstr ""
|
5735 |
-
"Avec le
|
5736 |
-
"
|
5737 |
|
5738 |
-
#: lib/wpplus.php:
|
|
|
|
|
|
|
|
|
5739 |
msgid ""
|
5740 |
-
"
|
5741 |
-
"
|
5742 |
msgstr ""
|
5743 |
-
"Le
|
5744 |
-
"
|
5745 |
|
5746 |
-
#: lib/wpplus.php:
|
5747 |
msgid ""
|
5748 |
-
"
|
5749 |
-
"
|
5750 |
-
"
|
5751 |
-
"
|
5752 |
-
"useful to detect hacking or malware patterns injected into your HTML page "
|
5753 |
-
"(text strings, spam links, malicious JavaScript code), hackers shell script, "
|
5754 |
-
"redirections and even errors (PHP/MySQL errors). Some suggested keywords as "
|
5755 |
-
"well as a default list are included."
|
5756 |
msgstr ""
|
5757 |
-
"
|
5758 |
-
"
|
5759 |
-
"
|
5760 |
-
"
|
5761 |
-
"
|
5762 |
-
"dans vos pages HTML (texte, liens, code JavaScript etc), des scripts "
|
5763 |
-
"utilisés par les hackers (shell, backdoor) et même des erreurs (PHP, MySQL). "
|
5764 |
|
5765 |
-
#: lib/wpplus.php:
|
5766 |
msgid ""
|
5767 |
"In the case of a positive detection, NinjaFirewall will not block the "
|
5768 |
"response body but will send you an alert by email. It can even attach the "
|
5769 |
-
"whole HTML source of the page for your review
|
5770 |
msgstr ""
|
5771 |
"En cas de détection positive, NinjaFirewall ne bloquera pas la requête mais "
|
5772 |
-
"vous enverra immédiatement une alerte par e-mail
|
5773 |
|
5774 |
-
#: lib/wpplus.php:
|
5775 |
msgid "Antispam"
|
5776 |
msgstr "Antispam"
|
5777 |
|
5778 |
-
#: lib/wpplus.php:
|
5779 |
msgid ""
|
5780 |
-
"
|
5781 |
-
"
|
5782 |
-
"
|
5783 |
-
"
|
5784 |
-
"
|
5785 |
msgstr ""
|
5786 |
-
"
|
5787 |
-
"
|
5788 |
-
"
|
5789 |
-
"
|
5790 |
-
"
|
5791 |
|
5792 |
-
#: lib/wpplus.php:
|
5793 |
msgid ""
|
5794 |
"NinjaFirewall antispam feature works only with WordPress built-in comment "
|
5795 |
"and registration forms."
|
@@ -5797,22 +5263,21 @@ msgstr ""
|
|
5797 |
"L'option anti-spam de NinjaFirewall ne fonctionne qu'avec les formulaires "
|
5798 |
"intégrés à WordPress (commentaire et d'inscription)."
|
5799 |
|
5800 |
-
#: lib/wpplus.php:
|
5801 |
#, php-format
|
5802 |
msgid ""
|
5803 |
-
"
|
5804 |
-
"
|
5805 |
-
"
|
5806 |
-
"
|
5807 |
-
"analyse your log data."
|
5808 |
msgstr ""
|
5809 |
-
"
|
5810 |
-
"
|
5811 |
-
"
|
5812 |
-
"\">
|
5813 |
-
"
|
5814 |
|
5815 |
-
#: lib/wpplus.php:
|
5816 |
msgid ""
|
5817 |
"There is no limit to the number of websites you can connect to, and they can "
|
5818 |
"be running any edition of NinjaFirewall: WP, <font color=\"#21759B\">WP+</"
|
@@ -5822,52 +5287,48 @@ msgstr ""
|
|
5822 |
"version de NinjaFirewall : WP, <font color=\"#21759B\">WP+</font>, Pro ou "
|
5823 |
"<font color=\"red\">Pro+</font>."
|
5824 |
|
5825 |
-
#: lib/wpplus.php:
|
5826 |
msgid "Improved features"
|
5827 |
msgstr "Fonctionnalités améliorées"
|
5828 |
|
5829 |
-
#: lib/wpplus.php:
|
5830 |
-
msgid "File uploads
|
5831 |
-
msgstr "Téléchargements
|
5832 |
|
5833 |
-
#: lib/wpplus.php:
|
5834 |
msgid ""
|
5835 |
-
"
|
5836 |
-
"
|
5837 |
-
"
|
5838 |
-
"
|
5839 |
-
"
|
5840 |
-
"uploaded file too, without having to modify your PHP configuration:"
|
5841 |
msgstr ""
|
5842 |
-
"
|
5843 |
-
"
|
5844 |
-
"ou bien de bloquer uniquement les fichiers potentiellement dangereux : "
|
5845 |
"scripts (PHP, CGI, Ruby, Python, bash/shell), code source C/C++, fichiers "
|
5846 |
"exécutables (MZ/PE/NE et ELF), certains fichiers systèmes (.htaccess, ."
|
5847 |
-
"htpasswd et PHP INI) et les fichiers SVG contenant du
|
5848 |
"Événements XML. Vous pouvez aussi sélectionner la taille maximale d'un "
|
5849 |
-
"fichier téléchargé, sans avoir à modifier la configuration de PHP
|
5850 |
|
5851 |
-
#: lib/wpplus.php:
|
5852 |
-
msgid "Firewall Log:"
|
5853 |
-
msgstr "Journal du Pare-feu :"
|
5854 |
-
|
5855 |
-
#: lib/wpplus.php:116
|
5856 |
msgid ""
|
5857 |
"The log menu has been revamped too. You can disable the firewall log, delete "
|
5858 |
"the current one, enable its rotation based on the size of the file and, if "
|
5859 |
"any, view each rotated log separately. Quick filtering options are easily "
|
5860 |
"accessible from checkboxes and the log can be exported as a TSV (tab-"
|
5861 |
-
"separated values) text file."
|
|
|
5862 |
msgstr ""
|
5863 |
"Le <b>Journal du Pare-feu</b> a été remanié. Vous pouvez maintenant le "
|
5864 |
"désactiver, le supprimer et permettre sa rotation en vous basant sur la "
|
5865 |
"taille du fichier. Des options de filtrage rapides sont facilement "
|
5866 |
"accessibles à partir de cases à cocher et le journal peut également être "
|
5867 |
"exporté dans un fichier au format TSV (valeurs séparées par des "
|
5868 |
-
"tabulations)
|
|
|
5869 |
|
5870 |
-
#: lib/wpplus.php:
|
5871 |
msgid ""
|
5872 |
"It is also possible to redirect all incidents and events to the Syslog "
|
5873 |
"server:"
|
@@ -5875,25 +5336,28 @@ msgstr ""
|
|
5875 |
"Il est également possible de rediriger tous les incidents et les événements "
|
5876 |
"vers le serveur Syslog :"
|
5877 |
|
5878 |
-
#: lib/wpplus.php:
|
5879 |
-
msgid "
|
5880 |
-
|
|
|
|
|
|
|
|
|
|
|
5881 |
|
5882 |
-
#: lib/wpplus.php:
|
5883 |
msgid ""
|
5884 |
-
"
|
5885 |
-
"
|
5886 |
-
"free WP Edition."
|
5887 |
msgstr ""
|
5888 |
-
"
|
5889 |
-
"
|
5890 |
-
"b>, contre une heure pour la version gratuite WP Edition."
|
5891 |
|
5892 |
-
#: lib/wpplus.php:
|
5893 |
-
msgid "Shared Memory use
|
5894 |
-
msgstr "Utilisation de la mémoire partagée
|
5895 |
|
5896 |
-
#: lib/wpplus.php:
|
5897 |
#, php-format
|
5898 |
msgid ""
|
5899 |
"Although NinjaFirewall is already <a href=\"%s\">much faster than other "
|
@@ -5906,7 +5370,7 @@ msgstr ""
|
|
5906 |
"Edition</b> améliore encore plus ses performances en utilisant la mémoire "
|
5907 |
"partagée."
|
5908 |
|
5909 |
-
#: lib/wpplus.php:
|
5910 |
msgid ""
|
5911 |
"This allows easier and faster inter-process communication between the "
|
5912 |
"firewall and the plugin part of NinjaFirewall and, because its data and "
|
@@ -5918,29 +5382,21 @@ msgstr ""
|
|
5918 |
"stockées en mémoire et le pare-feu n'a même plus besoin de se connecter à la "
|
5919 |
"base de données pour y accéder."
|
5920 |
|
5921 |
-
#: lib/wpplus.php:
|
5922 |
msgid ""
|
5923 |
"This dramatically increases the processing speed (there is nothing faster "
|
5924 |
"than RAM), prevents blocking I/O and MySQL slow queries. On a very busy "
|
5925 |
"server like a multi-site network, the firewall processing speed will "
|
5926 |
"increase from 25% to 30%. It can be enabled from the \"Firewall Options\" "
|
5927 |
-
"menu
|
5928 |
msgstr ""
|
5929 |
"Cela augmente considérablement la vitesse de traitement (il n'y a rien de "
|
5930 |
"plus rapide que la mémoire), empêche le blocage des E/S et les requêtes "
|
5931 |
"lentes MySQL. Sur un serveur très sollicité comme un réseau multi-site, la "
|
5932 |
"vitesse de traitement de pare-feu va augmenter de 25% à 30%. Cette option "
|
5933 |
-
"peut être activé à partir de la page \"Options du pare-feu\"
|
5934 |
-
|
5935 |
-
#: lib/wpplus.php:135
|
5936 |
-
msgid ""
|
5937 |
-
"This feature requires that PHP was compiled with the <code>--enable-shmop</"
|
5938 |
-
"code> parameter."
|
5939 |
-
msgstr ""
|
5940 |
-
"Cette fonction nécessite que PHP soit compilé avec le paramètre <code>--"
|
5941 |
-
"enable-shmop</code>."
|
5942 |
|
5943 |
-
#: lib/wpplus.php:
|
5944 |
msgid ""
|
5945 |
"Learn more</a> about the <font color=\"#21759B\">WP+</font> Edition unique "
|
5946 |
"features."
|
@@ -5948,7 +5404,7 @@ msgstr ""
|
|
5948 |
"En savoir plus</a> sur les caractéristiques uniques de la version <font "
|
5949 |
"color=\"#21759B\">WP+</font>."
|
5950 |
|
5951 |
-
#: lib/wpplus.php:
|
5952 |
msgid "Compare</a> the WP and <font color=\"#21759B\">WP+</font> Editions."
|
5953 |
msgstr "Comparez</a> les versions WP et <font color=\"#21759B\">WP+</font>."
|
5954 |
|
@@ -6056,7 +5512,19 @@ msgstr ""
|
|
6056 |
msgid "The PHP msqli extension is missing or not loaded."
|
6057 |
msgstr "L'extension PHP mysqli est manquante ou bien n'est pas chargée."
|
6058 |
|
6059 |
-
#: ninjafirewall.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6060 |
msgid ""
|
6061 |
"You do not have \"unfiltered_html\" capability. Please enable it in order to "
|
6062 |
"run NinjaFirewall (or make sure you do not have \"DISALLOW_UNFILTERED_HTML\" "
|
@@ -6067,7 +5535,7 @@ msgstr ""
|
|
6067 |
"la directive \"DISALLOW_UNFILTERED_HTML\" activée dans votre fichier wp-"
|
6068 |
"config.php)."
|
6069 |
|
6070 |
-
#: ninjafirewall.php:
|
6071 |
#, php-format
|
6072 |
msgid ""
|
6073 |
"NinjaFirewall requires WordPress 3.3 or greater but your current version is "
|
@@ -6076,19 +5544,19 @@ msgstr ""
|
|
6076 |
"NinjaFirewall nécessite au moins WordPress 3.3 mais votre version de "
|
6077 |
"WordPress est %s."
|
6078 |
|
6079 |
-
#: ninjafirewall.php:
|
6080 |
#, php-format
|
6081 |
msgid ""
|
6082 |
"NinjaFirewall requires PHP 5.3 or greater but your current version is %s."
|
6083 |
msgstr ""
|
6084 |
"NinjaFirewall nécessite au moins PHP 5.3 mais votre version de PHP est %s."
|
6085 |
|
6086 |
-
#: ninjafirewall.php:
|
6087 |
#, php-format
|
6088 |
msgid "NinjaFirewall requires the PHP %s extension."
|
6089 |
msgstr "NinjaFirewall nécessite l'extension PHP %s."
|
6090 |
|
6091 |
-
#: ninjafirewall.php:
|
6092 |
msgid ""
|
6093 |
"You have SAFE_MODE enabled. Please disable it, it is deprecated as of PHP "
|
6094 |
"5.3.0 (see http://php.net/safe-mode)."
|
@@ -6097,102 +5565,1429 @@ msgstr ""
|
|
6097 |
"devenue obsolète depuis PHP 5.3 et a été supprimée depuis PHP 5.4 (cf. "
|
6098 |
"http://php.net/safe-mode)."
|
6099 |
|
6100 |
-
#: ninjafirewall.php:
|
6101 |
msgid "You are not allowed to activate NinjaFirewall."
|
6102 |
msgstr "Vous n’êtes pas autorisé à activer NinjaFirewall."
|
6103 |
|
6104 |
-
#: ninjafirewall.php:
|
6105 |
msgid "NinjaFirewall is not compatible with Microsoft Windows."
|
6106 |
msgstr "NinjaFirewall n'est pas compatible avec Microsoft Windows."
|
6107 |
|
6108 |
-
#: ninjafirewall.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6109 |
msgid "NinjaFirewall: Overview"
|
6110 |
msgstr "NinjaFirewall : Aperçu"
|
6111 |
|
6112 |
-
#: ninjafirewall.php:
|
6113 |
msgid "NinjaFirewall: Statistics"
|
6114 |
msgstr "NinjaFirewall : Statistiques"
|
6115 |
|
6116 |
-
#: ninjafirewall.php:
|
6117 |
msgid "NinjaFirewall: Firewall Options"
|
6118 |
msgstr "NinjaFirewall : Options du Pare-feu"
|
6119 |
|
6120 |
-
#: ninjafirewall.php:
|
6121 |
msgid "NinjaFirewall: Firewall Policies"
|
6122 |
msgstr "NinjaFirewall : Politiques du Pare-feu"
|
6123 |
|
6124 |
-
#: ninjafirewall.php:
|
6125 |
msgid "NinjaFirewall: File Guard"
|
6126 |
msgstr "NinjaFirewall: File Guard"
|
6127 |
|
6128 |
-
#: ninjafirewall.php:
|
6129 |
msgid "NinjaFirewall: File Check"
|
6130 |
msgstr "NinjaFirewall: File Check"
|
6131 |
|
6132 |
-
#: ninjafirewall.php:
|
6133 |
msgid "NinjaFirewall: Anti-Malware"
|
6134 |
msgstr "NinjaFirewall : Anti-Malware"
|
6135 |
|
6136 |
-
#: ninjafirewall.php:
|
6137 |
msgid "NinjaFirewall: Network"
|
6138 |
msgstr "NinjaFirewall : Réseau"
|
6139 |
|
6140 |
-
#: ninjafirewall.php:
|
6141 |
msgid "NinjaFirewall: Event Notifications"
|
6142 |
msgstr "NinjaFirewall : Notifications d’Événement"
|
6143 |
|
6144 |
-
#: ninjafirewall.php:
|
6145 |
msgid "NinjaFirewall: Log-in Protection"
|
6146 |
msgstr "NinjaFirewall : Page de Connexion"
|
6147 |
|
6148 |
-
#: ninjafirewall.php:
|
6149 |
msgid "NinjaFirewall: Firewall Log"
|
6150 |
msgstr "NinjaFirewall : Journal du Pare-feu"
|
6151 |
|
6152 |
-
#: ninjafirewall.php:
|
6153 |
msgid "NinjaFirewall: Live Log"
|
6154 |
msgstr "NinjaFirewall: Live Log"
|
6155 |
|
6156 |
-
#: ninjafirewall.php:
|
6157 |
msgid "NinjaFirewall: Rules Editor"
|
6158 |
msgstr "NinjaFirewall : Éditeur de Règles"
|
6159 |
|
6160 |
-
#: ninjafirewall.php:
|
6161 |
msgid "NinjaFirewall: Rules Update"
|
6162 |
msgstr "NinjaFirewall: Mise à Jour des Règles"
|
6163 |
|
6164 |
-
#: ninjafirewall.php:
|
6165 |
msgid "NinjaFirewall: About"
|
6166 |
msgstr "NinjaFirewall : À Propos"
|
6167 |
|
6168 |
-
#: ninjafirewall.php:
|
6169 |
msgid "About..."
|
6170 |
msgstr "À Propos..."
|
6171 |
|
6172 |
-
#: ninjafirewall.php:
|
6173 |
msgid "NinjaFirewall Settings"
|
6174 |
msgstr "Réglages de NinjaFirewall"
|
6175 |
|
6176 |
-
#: ninjafirewall.php:
|
6177 |
msgid "NinjaFirewall is enabled"
|
6178 |
msgstr "NinjaFirewall est activé"
|
6179 |
|
6180 |
-
#: ninjafirewall.php:
|
6181 |
msgid "Access Restricted"
|
6182 |
msgstr "Accès limité"
|
6183 |
|
6184 |
-
#: ninjafirewall.php:
|
6185 |
msgid "Settings"
|
6186 |
msgstr "Réglages"
|
6187 |
|
6188 |
-
#: ninjafirewall.php:
|
6189 |
msgid "Upgrade to Premium"
|
6190 |
msgstr "Passez Premium !"
|
6191 |
|
6192 |
-
#: ninjafirewall.php:
|
6193 |
msgid "Rate it!"
|
6194 |
msgstr "Notez-le !"
|
6195 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6196 |
#~ msgid ""
|
6197 |
#~ "Benchmarks show the time NinjaFirewall took, in seconds, to proceed each "
|
6198 |
#~ "request it has blocked."
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: Stable (latest release)\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/ninjafirewall\n"
|
7 |
+
"POT-Creation-Date: 2019-06-24 18:07+0700\n"
|
8 |
+
"PO-Revision-Date: 2019-06-24 18:12+0700\n"
|
9 |
"Last-Translator: NinTechNet <contact@nintechnet.com>\n"
|
10 |
"Language-Team: NinTechNet <nintechnet.com>\n"
|
11 |
"Language: fr_FR\n"
|
16 |
"X-Poedit-SourceCharset: UTF-8\n"
|
17 |
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
18 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
#: lib/about.php:31
|
20 |
msgid "Error : cannot find changelog :("
|
21 |
msgstr "Erreur: impossible de trouver le fichier changelog :("
|
22 |
|
23 |
+
#: lib/about.php:36
|
24 |
msgid "About"
|
25 |
msgstr "À Propos"
|
26 |
|
27 |
+
#: lib/about.php:56
|
28 |
msgid "A powerful antivirus<br />scanner for WordPress."
|
29 |
msgstr "Un puissant antivirus<br />pour WordPress."
|
30 |
|
31 |
+
#: lib/about.php:58
|
32 |
msgid "Free Download"
|
33 |
msgstr "Télécharger"
|
34 |
|
35 |
+
#: lib/about.php:62
|
36 |
msgid "Website Monitoring<br />for just $4.99/month."
|
37 |
msgstr "Surveillance de site<br />à partir de $4.99/mois."
|
38 |
|
39 |
+
#: lib/about.php:64
|
40 |
msgid "7-Day Free Trial"
|
41 |
msgstr "Essai Gratuit"
|
42 |
|
43 |
+
#: lib/about.php:68
|
44 |
msgid "Malware removal<br />and hack recovery."
|
45 |
msgstr "Nettoyage de site<br />piraté ou infecté."
|
46 |
|
47 |
+
#: lib/about.php:70
|
48 |
msgid "Clean Your Site!"
|
49 |
msgstr "Nettoyez votre site"
|
50 |
|
51 |
+
#: lib/about.php:82
|
52 |
msgid "Changelog"
|
53 |
msgstr "Changelog"
|
54 |
|
55 |
+
#: lib/about.php:82
|
56 |
msgid "Spread the word!"
|
57 |
msgstr "Partagez !"
|
58 |
|
59 |
+
#: lib/about.php:82
|
60 |
msgid "Referral Program"
|
61 |
msgstr "Programme de parrainage"
|
62 |
|
63 |
+
#: lib/about.php:82
|
64 |
msgid "System Info"
|
65 |
msgstr "Info système"
|
66 |
|
67 |
+
#: lib/about.php:82 lib/help.php:521
|
68 |
msgid "GDPR Compliance"
|
69 |
msgstr "Conformité RGPD"
|
70 |
|
71 |
+
#: lib/about.php:88 lib/help.php:56
|
72 |
+
msgid ""
|
73 |
+
"Stay informed about the latest vulnerabilities in WordPress plugins and "
|
74 |
+
"themes."
|
75 |
+
msgstr ""
|
76 |
+
"Soyez informé des dernières vulnérabilités dans les extensions et thèmes de "
|
77 |
+
"WordPress."
|
78 |
+
|
79 |
+
#: lib/about.php:89
|
80 |
+
msgid "Rate it on WordPress.org!"
|
81 |
+
msgstr "Notez-le sur WordPress.org !"
|
82 |
+
|
83 |
+
#: lib/about.php:113
|
84 |
msgid "PHP version"
|
85 |
msgstr "Version PHP"
|
86 |
|
87 |
+
#: lib/about.php:122
|
88 |
msgid "HTTP server"
|
89 |
msgstr "Serveur HTTP"
|
90 |
|
91 |
+
#: lib/about.php:125
|
92 |
msgid "Operating System"
|
93 |
msgstr "Système d'exploitation"
|
94 |
|
95 |
+
#: lib/about.php:128
|
96 |
msgid "Load Average"
|
97 |
msgstr "Charge moyenne"
|
98 |
|
99 |
+
#: lib/about.php:146
|
100 |
msgid "RAM"
|
101 |
msgstr "RAM"
|
102 |
|
103 |
+
#: lib/about.php:146
|
104 |
msgid "MB free"
|
105 |
msgstr "Mo libres"
|
106 |
|
107 |
+
#: lib/about.php:146
|
108 |
msgid "MB total"
|
109 |
msgstr "Mo total"
|
110 |
|
111 |
+
#: lib/about.php:154
|
112 |
msgid "Processor"
|
113 |
msgid_plural "Processors"
|
114 |
msgstr[0] "Processeur"
|
115 |
msgstr[1] "Processeurs"
|
116 |
|
117 |
+
#: lib/about.php:154
|
118 |
msgid "CPU core:"
|
119 |
msgid_plural "CPU cores:"
|
120 |
msgstr[0] "cœur :"
|
121 |
msgstr[1] "cœurs :"
|
122 |
|
123 |
+
#: lib/about.php:155
|
124 |
msgid "CPU model"
|
125 |
msgstr "Modèle CPU"
|
126 |
|
127 |
+
#: lib/about.php:167
|
128 |
#, php-format
|
129 |
msgid ""
|
130 |
"By joining our NinjaFirewall Referral Program you can earn up to %s for "
|
134 |
"gagner jusqu'à %s pour chaque paiement effectué par un utilisateur qui "
|
135 |
"achète une licence en utilisant votre lien de parrainage personnel."
|
136 |
|
137 |
+
#: lib/about.php:168
|
138 |
#, php-format
|
139 |
msgid ""
|
140 |
"For more info and subscription, please check our <a href=\"%s\">Referral "
|
143 |
"Pour plus d'information, consultez notre page du <a href=\"%s\">Programme de "
|
144 |
"Parrainage</a>."
|
145 |
|
146 |
+
#: lib/about.php:177 lib/help.php:523
|
147 |
+
msgid ""
|
148 |
+
"Your website can run NinjaFirewall and be compliant with the General Data "
|
149 |
+
"Protection Regulation (GDPR). For more info, please visit our blog:"
|
150 |
+
msgstr ""
|
151 |
+
"NinjaFirewall est conforme à la réglementation générale sur la protection "
|
152 |
+
"des données (RGPD). Pour plus d'informations, veuillez visiter notre blog :"
|
153 |
+
|
154 |
+
#: lib/anti_malware.php:24 ninjafirewall.php:747
|
155 |
msgid "Anti-Malware"
|
156 |
msgstr "Anti-Malware"
|
157 |
|
192 |
msgid "NinjaFirewall Statistics"
|
193 |
msgstr "Statistiques de NinjaFirewall"
|
194 |
|
195 |
+
#: lib/dashboard_widget.php:54 lib/statistics.php:105 lib/statistics.php:138
|
196 |
msgid "Blocked threats"
|
197 |
msgstr "Menaces bloquées"
|
198 |
|
199 |
+
#: lib/dashboard_widget.php:58 lib/statistics.php:109
|
200 |
msgid "Threats level"
|
201 |
msgstr "Niveau des menaces"
|
202 |
|
212 |
msgid "Medium:"
|
213 |
msgstr "Moyen :"
|
214 |
|
215 |
+
#: lib/dashboard_widget.php:86
|
216 |
+
msgid "View statistics"
|
217 |
+
msgstr "Afficher les statistiques"
|
218 |
+
|
219 |
#: lib/dashboard_widget.php:86
|
220 |
msgid "View firewall log"
|
221 |
msgstr "Voir le journal du pare-feu"
|
222 |
|
223 |
+
#: lib/event_notifications.php:34 lib/help.php:413 ninjafirewall.php:755
|
224 |
msgid "Event Notifications"
|
225 |
msgstr "Notifications d'Événement"
|
226 |
|
227 |
+
#: lib/event_notifications.php:42 lib/file_check.php:113 lib/file_guard.php:47
|
228 |
+
#: lib/firewall_log.php:58 lib/firewall_options.php:42
|
229 |
+
#: lib/firewall_policies.php:71 lib/live_log.php:82 lib/login_protection.php:30
|
230 |
+
#: lib/network.php:52 lib/rules_update.php:104
|
231 |
msgid "Your changes have been saved."
|
232 |
msgstr "Les modifications ont été enregistrées."
|
233 |
|
234 |
+
#: lib/event_notifications.php:52
|
235 |
msgid "WordPress admin dashboard"
|
236 |
msgstr "Connexion"
|
237 |
|
238 |
+
#: lib/event_notifications.php:55 lib/event_notifications.php:124
|
239 |
msgid "Send me an alert whenever"
|
240 |
msgstr "Envoyer une alerte quand"
|
241 |
|
242 |
+
#: lib/event_notifications.php:57
|
243 |
msgid "An administrator logs in (default)"
|
244 |
msgstr "Un Administrateur se connecte (défaut)"
|
245 |
|
246 |
+
#: lib/event_notifications.php:58
|
247 |
msgid "Someone - user, admin, editor, etc - logs in"
|
248 |
msgstr "Quelqu'un - utilisateur, admin, éditeur etc - se connecte"
|
249 |
|
250 |
+
#: lib/event_notifications.php:59
|
251 |
msgid "No, thanks (not recommended)"
|
252 |
msgstr "Non, merci"
|
253 |
|
254 |
+
#: lib/event_notifications.php:66
|
255 |
msgid "Plugins"
|
256 |
msgstr "Extensions"
|
257 |
|
258 |
+
#: lib/event_notifications.php:69 lib/event_notifications.php:86
|
259 |
+
#: lib/event_notifications.php:101
|
260 |
msgid "Send me an alert whenever someone"
|
261 |
msgstr "Envoyer une alerte quand quelqu'un"
|
262 |
|
263 |
+
#: lib/event_notifications.php:71
|
264 |
msgid "Uploads a plugin (default)"
|
265 |
msgstr "Télécharge une extension (défaut)"
|
266 |
|
267 |
+
#: lib/event_notifications.php:72
|
268 |
msgid "Installs a plugin (default)"
|
269 |
msgstr "Installe une extension (défaut)"
|
270 |
|
271 |
+
#: lib/event_notifications.php:73
|
272 |
msgid "Activates a plugin"
|
273 |
msgstr "Active une extension"
|
274 |
|
275 |
+
#: lib/event_notifications.php:74
|
276 |
msgid "Updates a plugin"
|
277 |
msgstr "Met à jour une extension"
|
278 |
|
279 |
+
#: lib/event_notifications.php:75
|
280 |
msgid "Deactivates a plugin (default)"
|
281 |
msgstr "Désactive une extension (défaut)"
|
282 |
|
283 |
+
#: lib/event_notifications.php:76
|
284 |
msgid "Deletes a plugin"
|
285 |
msgstr "Supprime une extension"
|
286 |
|
287 |
+
#: lib/event_notifications.php:83
|
288 |
msgid "Themes"
|
289 |
msgstr "Thèmes"
|
290 |
|
291 |
+
#: lib/event_notifications.php:88
|
292 |
msgid "Uploads a theme (default)"
|
293 |
msgstr "Télécharge un thème (défaut)"
|
294 |
|
295 |
+
#: lib/event_notifications.php:89
|
296 |
msgid "Installs a theme (default)"
|
297 |
msgstr "Installe un thème (défaut)"
|
298 |
|
299 |
+
#: lib/event_notifications.php:90
|
300 |
msgid "Activates a theme"
|
301 |
msgstr "Active un thème"
|
302 |
|
303 |
+
#: lib/event_notifications.php:91
|
304 |
msgid "Deletes a theme"
|
305 |
msgstr "Supprime un thème"
|
306 |
|
307 |
+
#: lib/event_notifications.php:98
|
308 |
msgid "Core"
|
309 |
msgstr "WordPress"
|
310 |
|
311 |
+
#: lib/event_notifications.php:103
|
312 |
msgid "Updates WordPress (default)"
|
313 |
msgstr "Met à jour WordPress (défaut)"
|
314 |
|
315 |
+
#: lib/event_notifications.php:121
|
316 |
msgid "Administrator account"
|
317 |
msgstr "Compte administrateur"
|
318 |
|
319 |
+
#: lib/event_notifications.php:126
|
320 |
msgid ""
|
321 |
"An administrator account is created, modified or deleted in the database "
|
322 |
"(default)"
|
324 |
"Un compte Administrateur est crée, modifié ou supprimé dans la base de "
|
325 |
"données (défaut)"
|
326 |
|
327 |
+
#: lib/event_notifications.php:127
|
328 |
msgid "A user attempts to gain administrative privileges (default)"
|
329 |
msgstr ""
|
330 |
"Un utilisateur a essayé d'élever ses privilèges pour devenir administrateur "
|
331 |
"du blog (défaut)"
|
332 |
|
333 |
+
#: lib/event_notifications.php:134
|
334 |
msgid "Daily report"
|
335 |
msgstr "Rapport quotidien"
|
336 |
|
337 |
+
#: lib/event_notifications.php:137
|
338 |
msgid "Send me a daily activity report"
|
339 |
msgstr "Envoyer un rapport d'activité quotidien"
|
340 |
|
341 |
+
#: lib/event_notifications.php:139 lib/event_notifications.php:151
|
342 |
+
#: lib/firewall_options.php:78 lib/firewall_options.php:113
|
343 |
+
#: lib/firewall_policies.php:25 lib/login_protection.php:309
|
344 |
+
#: lib/login_protection.php:324 lib/login_protection.php:345
|
345 |
+
#: lib/login_protection.php:352 lib/network.php:70
|
346 |
+
msgid "Yes"
|
347 |
+
msgstr "Oui"
|
348 |
+
|
349 |
+
#: lib/event_notifications.php:139 lib/event_notifications.php:151
|
350 |
+
#: lib/firewall_options.php:78 lib/firewall_options.php:113
|
351 |
+
#: lib/firewall_policies.php:26 lib/login_protection.php:309
|
352 |
+
#: lib/login_protection.php:324 lib/login_protection.php:345
|
353 |
+
#: lib/login_protection.php:352 lib/network.php:70
|
354 |
+
msgid "No"
|
355 |
+
msgstr "Non"
|
356 |
+
|
357 |
+
#: lib/event_notifications.php:146
|
358 |
msgid "Log"
|
359 |
msgstr "Journal"
|
360 |
|
361 |
+
#: lib/event_notifications.php:149
|
362 |
msgid "Write all events to the firewall log"
|
363 |
msgstr "Enregistrer les événements dans le journal du pare-feu"
|
364 |
|
365 |
+
#: lib/event_notifications.php:163
|
366 |
msgid "PHP backtrace"
|
367 |
msgstr "Pile d'exécution de PHP"
|
368 |
|
369 |
+
#: lib/event_notifications.php:166
|
370 |
msgid "Attach a PHP backtrace to important notifications"
|
371 |
msgstr ""
|
372 |
"Ajouter aux notifications importantes la pile d'exécution de PHP en pièce "
|
373 |
"jointe"
|
374 |
|
375 |
+
#: lib/event_notifications.php:169
|
376 |
msgid "Disable backtrace"
|
377 |
msgstr "Désactiver la pile d'exécution"
|
378 |
|
379 |
+
#: lib/event_notifications.php:170
|
380 |
msgid "Low verbosity"
|
381 |
msgstr "Faible verbosité"
|
382 |
|
383 |
+
#: lib/event_notifications.php:171
|
384 |
msgid "Medium verbosity (default)"
|
385 |
msgstr "Verbosité moyenne (par défaut)"
|
386 |
|
387 |
+
#: lib/event_notifications.php:172
|
388 |
msgid "High verbosity"
|
389 |
msgstr "Verbosité élevée"
|
390 |
|
391 |
+
#: lib/event_notifications.php:174
|
392 |
#, php-format
|
393 |
msgid "<a href=\"%s\">Consult our blog</a> for more info."
|
394 |
msgstr ""
|
395 |
"<a href=\"%s\">Consultez notre blog pour plus d'informations à ce sujet</a>."
|
396 |
|
397 |
+
#: lib/event_notifications.php:184 lib/event_notifications.php:214
|
398 |
msgid "Contact email"
|
399 |
msgstr "Adresse e-mail du contact"
|
400 |
|
401 |
+
#: lib/event_notifications.php:187 lib/event_notifications.php:217
|
402 |
msgid "Alerts should be sent to"
|
403 |
msgstr "Envoyer les alertes à"
|
404 |
|
405 |
+
#: lib/event_notifications.php:196 lib/event_notifications.php:222
|
406 |
msgid ""
|
407 |
"Multiple recipients must be comma-separated (e.g., <code>joe@example.org,"
|
408 |
"alice@example.org</code>)."
|
410 |
"Plusieurs destinataires doivent être séparés par des virgules (par ex. "
|
411 |
"<code>joe@example.org,alice@example.org</code>)."
|
412 |
|
413 |
+
#: lib/event_notifications.php:219
|
414 |
msgid "Only to me, the Super Admin"
|
415 |
msgstr "Moi uniquement, le Super Admin"
|
416 |
|
417 |
+
#: lib/event_notifications.php:219
|
418 |
msgid "default"
|
419 |
msgstr "défaut"
|
420 |
|
421 |
+
#: lib/event_notifications.php:220
|
422 |
msgid "To the administrator of the site where originated the alert"
|
423 |
msgstr "L'Administrateur du site d’où provient l'alerte"
|
424 |
|
425 |
+
#: lib/event_notifications.php:221
|
426 |
msgid "Other(s):"
|
427 |
msgstr "Autre(s) :"
|
428 |
|
429 |
+
#: lib/event_notifications.php:233
|
430 |
msgid "Save Event Notifications"
|
431 |
msgstr "Sauvegarder les options"
|
432 |
|
433 |
+
#: lib/event_notifications.php:461
|
434 |
msgid "[NinjaFirewall] Daily Activity Report"
|
435 |
msgstr "[NinjaFirewall] Rapport d'activité quotidien"
|
436 |
|
437 |
+
#: lib/event_notifications.php:471
|
438 |
#, php-format
|
439 |
msgid "Daily activity report for: %s"
|
440 |
msgstr "Rapport d'activité quotidien pour : %s"
|
441 |
|
442 |
+
#: lib/event_notifications.php:472
|
443 |
msgid "Date Range Processed: Yesterday"
|
444 |
msgstr "Plage de date traitée : Hier"
|
445 |
|
446 |
+
#: lib/event_notifications.php:474
|
447 |
msgid "Blocked threats:"
|
448 |
msgstr "Menaces bloquées :"
|
449 |
|
450 |
+
#: lib/event_notifications.php:476
|
451 |
msgid "critical:"
|
452 |
msgstr "Critique :"
|
453 |
|
454 |
+
#: lib/event_notifications.php:477
|
455 |
msgid "high:"
|
456 |
msgstr "Élevé :"
|
457 |
|
458 |
+
#: lib/event_notifications.php:478
|
459 |
msgid "medium:"
|
460 |
msgstr "Moyen :"
|
461 |
|
462 |
+
#: lib/event_notifications.php:480
|
463 |
msgid "Blocked brute-force attacks:"
|
464 |
msgstr "Attaques par force brute bloquées :"
|
465 |
|
466 |
+
#: lib/event_notifications.php:481 lib/utils.php:851 lib/utils.php:1030
|
467 |
msgid ""
|
468 |
"This notification can be turned off from NinjaFirewall \"Event Notifications"
|
469 |
"\" page."
|
471 |
"Cette notification peut être désactivée depuis la page \"Notifications "
|
472 |
"d’Événement\" de NinjaFirewall."
|
473 |
|
474 |
+
#: lib/event_notifications.php:485 lib/file_check.php:783
|
475 |
+
#: lib/file_check.php:804 lib/firewall_options.php:515 lib/rules_update.php:553
|
476 |
+
#: lib/utils.php:746
|
477 |
msgid "Support forum:"
|
478 |
msgstr "Forum :"
|
479 |
|
480 |
+
#: lib/event_notifications.php:488 lib/file_check.php:786
|
481 |
+
#: lib/file_check.php:807 lib/firewall_options.php:518 lib/rules_update.php:556
|
482 |
+
#: lib/utils.php:235 lib/utils.php:578 lib/utils.php:749 lib/utils.php:856
|
483 |
+
#: lib/utils.php:1035 lib/utils.php:1389
|
484 |
#, php-format
|
485 |
msgid ""
|
486 |
"Need more security? Check out our supercharged NinjaFirewall (WP+ Edition): "
|
505 |
msgid "You must create a snapshot first."
|
506 |
msgstr "Vous devez d'abord créer un instantané."
|
507 |
|
508 |
+
#: lib/file_check.php:104 lib/file_check.php:769
|
509 |
msgid "NinjaFirewall detected that changes were made to your files."
|
510 |
msgstr "NinjaFirewall a détecté des changements dans vos fichiers."
|
511 |
|
513 |
msgid "No changes detected."
|
514 |
msgstr "Aucun changement n'a été détecté."
|
515 |
|
516 |
+
#: lib/file_check.php:129 lib/help.php:380 ninjafirewall.php:737
|
517 |
msgid "File Check"
|
518 |
msgstr "File Check"
|
519 |
|
527 |
msgid "Default: %s"
|
528 |
msgstr "Défaut : %s"
|
529 |
|
530 |
+
#: lib/file_check.php:158 lib/file_guard.php:90
|
531 |
msgid "Exclude the following files/folders (optional)"
|
532 |
msgstr "Exclure les fichiers / dossiers suivants (optionnel)"
|
533 |
|
534 |
+
#: lib/file_check.php:159 lib/file_guard.php:91 lib/live_log.php:165
|
535 |
msgid "e.g.,"
|
536 |
msgstr "par ex."
|
537 |
|
543 |
"Chaîne de caractères complète ou partielle, sensible à la casse. Plusieurs "
|
544 |
"valeurs doivent être séparées par des virgules"
|
545 |
|
546 |
+
#: lib/file_check.php:165
|
547 |
msgid "Do not follow symbolic links (default)"
|
548 |
msgstr "Ne pas suivre les liens symboliques (défaut)"
|
549 |
|
550 |
+
#: lib/file_check.php:171
|
551 |
msgid "Create Snapshot"
|
552 |
msgstr "Créer un Instantané"
|
553 |
|
554 |
+
#: lib/file_check.php:239
|
|
|
|
|
|
|
|
|
555 |
msgid "Last snapshot"
|
556 |
msgstr "Dernier instantané"
|
557 |
|
558 |
+
#: lib/file_check.php:241
|
559 |
#, php-format
|
560 |
msgid "Created on: %s"
|
561 |
msgstr "Créé le : %s"
|
562 |
|
563 |
+
#: lib/file_check.php:242
|
564 |
#, php-format
|
565 |
msgid "Total files: %s "
|
566 |
msgstr "Nombre de fichiers : %s "
|
567 |
|
568 |
+
#: lib/file_check.php:244
|
569 |
msgid "Directory:"
|
570 |
msgstr "Répertoire :"
|
571 |
|
572 |
+
#: lib/file_check.php:248
|
573 |
msgid "Exclusion:"
|
574 |
msgstr "Exclusion :"
|
575 |
|
576 |
+
#: lib/file_check.php:254
|
577 |
msgid "Symlinks:"
|
578 |
msgstr "Lien symboliques :"
|
579 |
|
580 |
+
#: lib/file_check.php:256
|
581 |
msgid "follow"
|
582 |
msgstr "suivre"
|
583 |
|
584 |
+
#: lib/file_check.php:258
|
585 |
msgid "do not follow"
|
586 |
msgstr "ne pas suivre"
|
587 |
|
588 |
+
#: lib/file_check.php:262
|
589 |
#, php-format
|
590 |
msgid "Processing time: %s seconds"
|
591 |
msgstr "Temps de traitement : %s secondes"
|
592 |
|
593 |
+
#: lib/file_check.php:267
|
594 |
msgid "Download Snapshot"
|
595 |
msgstr "Télécharger l'instantané"
|
596 |
|
597 |
+
#: lib/file_check.php:267
|
598 |
msgid "Delete Snapshot"
|
599 |
msgstr "Supprimer l'instantané"
|
600 |
|
601 |
+
#: lib/file_check.php:272
|
602 |
msgid "Last changes"
|
603 |
msgstr "Dernières modifications"
|
604 |
|
605 |
+
#: lib/file_check.php:279 lib/file_check.php:777
|
606 |
#, php-format
|
607 |
msgid "New files: %s"
|
608 |
msgstr "Nouveaux fichiers : %s"
|
609 |
|
610 |
+
#: lib/file_check.php:280 lib/file_check.php:779
|
611 |
#, php-format
|
612 |
msgid "Deleted files: %s"
|
613 |
msgstr "Fichiers supprimés : %s"
|
614 |
|
615 |
+
#: lib/file_check.php:281 lib/file_check.php:778
|
616 |
#, php-format
|
617 |
msgid "Modified files: %s"
|
618 |
msgstr "Fichiers modifiés : %s"
|
619 |
|
620 |
+
#: lib/file_check.php:285
|
621 |
msgid "View Changes"
|
622 |
msgstr "Voir les Modifications"
|
623 |
|
624 |
+
#: lib/file_check.php:289
|
625 |
msgid "Download Changes"
|
626 |
msgstr "Télécharger les Modifications"
|
627 |
|
628 |
+
#: lib/file_check.php:301
|
629 |
msgid "Click a file to get more info about it."
|
630 |
msgstr "Cliquez sur un fichier pour obtenir plus d'informations à son sujet."
|
631 |
|
632 |
+
#: lib/file_check.php:304
|
633 |
msgid "New files:"
|
634 |
msgstr "Nouveaux fichiers :"
|
635 |
|
636 |
+
#: lib/file_check.php:313 lib/file_check.php:366
|
637 |
msgid "Size"
|
638 |
msgstr "Taille"
|
639 |
|
640 |
+
#: lib/file_check.php:317 lib/file_check.php:371
|
641 |
msgid "Access"
|
642 |
msgstr "Accès"
|
643 |
|
644 |
+
#: lib/file_check.php:321 lib/file_check.php:376
|
645 |
msgid "Uid / Gid"
|
646 |
msgstr "Uid / Gid"
|
647 |
|
648 |
+
#: lib/file_check.php:325 lib/file_check.php:381
|
649 |
msgid "Modify"
|
650 |
msgstr "Modification"
|
651 |
|
652 |
+
#: lib/file_check.php:329 lib/file_check.php:386
|
653 |
msgid "Change"
|
654 |
msgstr "Changement"
|
655 |
|
656 |
+
#: lib/file_check.php:339
|
657 |
msgid "Deleted files:"
|
658 |
msgstr "Fichiers supprimés :"
|
659 |
|
660 |
+
#: lib/file_check.php:352
|
661 |
msgid "Modified files:"
|
662 |
msgstr "Fichiers modifiés :"
|
663 |
|
664 |
+
#: lib/file_check.php:362
|
665 |
msgid "Old"
|
666 |
msgstr "Ancien"
|
667 |
|
668 |
+
#: lib/file_check.php:363
|
669 |
msgid "New"
|
670 |
msgstr "Nouveau"
|
671 |
|
672 |
+
#: lib/file_check.php:402 lib/live_log.php:161
|
673 |
msgid "None"
|
674 |
msgstr "Aucune"
|
675 |
|
676 |
+
#: lib/file_check.php:412
|
677 |
msgid "Scan System For File Changes"
|
678 |
msgstr "Lancer l'analyse des fichiers"
|
679 |
|
680 |
+
#: lib/file_check.php:429
|
681 |
msgid "Options"
|
682 |
msgstr "Options"
|
683 |
|
684 |
+
#: lib/file_check.php:436
|
685 |
#, php-format
|
686 |
msgid ""
|
687 |
+
"It seems that %s is set. Ensure you have another way to run WP-Cron, "
|
688 |
"otherwise NinjaFirewall scheduled scans will not work."
|
689 |
msgstr ""
|
690 |
"Il semble que %s est activé. Assurez vous de pouvoir exécuter WP-Cron, sinon "
|
691 |
"File Check ne pourra pas se lancer automatiquement."
|
692 |
|
693 |
+
#: lib/file_check.php:442
|
694 |
msgid "Enable scheduled scans"
|
695 |
msgstr "Lancer File Check automatiquement"
|
696 |
|
697 |
+
#: lib/file_check.php:444
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
698 |
msgid "No (default)"
|
699 |
msgstr "Non (défaut)"
|
700 |
|
701 |
+
#: lib/file_check.php:445 lib/rules_update.php:156
|
702 |
msgid "Hourly"
|
703 |
msgstr "Une fois par heure"
|
704 |
|
705 |
+
#: lib/file_check.php:446 lib/rules_update.php:157
|
706 |
msgid "Twicedaily"
|
707 |
msgstr "Deux fois par jour"
|
708 |
|
709 |
+
#: lib/file_check.php:447 lib/rules_update.php:158
|
710 |
msgid "Daily"
|
711 |
msgstr "Tous les jours"
|
712 |
|
713 |
+
#: lib/file_check.php:454
|
714 |
#, php-format
|
715 |
msgid ""
|
716 |
"Next scan will start in approximately %s day(s), %s hour(s), %s minute(s) "
|
719 |
"La prochaine analyse commencera dans %s jour(s), %s heure(s), %s minute(s) "
|
720 |
"et %s seconde(s)."
|
721 |
|
722 |
+
#: lib/file_check.php:461
|
723 |
msgid ""
|
724 |
"The next scheduled scan date is in the past! WordPress wp-cron may not be "
|
725 |
"working or may have been disabled."
|
727 |
"La date de la prochaine analyse est dans le passé ! Essayez de "
|
728 |
"recharger cette page, sinon vérifiez que WP-Cron n'a pas été désactivé."
|
729 |
|
730 |
+
#: lib/file_check.php:469
|
731 |
msgid "Scheduled scan report"
|
732 |
msgstr "Rapport d'analyse"
|
733 |
|
734 |
+
#: lib/file_check.php:471
|
735 |
msgid "Send me a report by email only if changes are detected (default)"
|
736 |
msgstr ""
|
737 |
"Envoyez-moi un rapport uniquement si des changements ont été détectés "
|
738 |
"(défaut)"
|
739 |
|
740 |
+
#: lib/file_check.php:472
|
741 |
msgid "Always send me a report by email after a scheduled scan"
|
742 |
msgstr "Envoyez-moi toujours un rapport après une analyse automatique"
|
743 |
|
744 |
+
#: lib/file_check.php:477
|
745 |
msgid "Save Scan Options"
|
746 |
msgstr "Sauvegarder les options"
|
747 |
|
748 |
+
#: lib/file_check.php:489
|
749 |
msgid "Enter the full path to the directory to be scanned."
|
750 |
msgstr "Entrez le chemin complet vers le répertoire à scanner."
|
751 |
|
752 |
+
#: lib/file_check.php:496
|
753 |
#, php-format
|
754 |
msgid "The directory %s does not exist."
|
755 |
msgstr "Le répertoire %s n'existe pas."
|
756 |
|
757 |
+
#: lib/file_check.php:499
|
758 |
#, php-format
|
759 |
msgid "The directory %s is not readable."
|
760 |
msgstr "Le répertoire %s n'est pas lisible."
|
761 |
|
762 |
+
#: lib/file_check.php:540
|
763 |
#, php-format
|
764 |
msgid "Cannot write to %s."
|
765 |
msgstr "Impossible d'écrire dans %s."
|
766 |
|
767 |
+
#: lib/file_check.php:570
|
768 |
#, php-format
|
769 |
msgid "Error : cannot open %s directory."
|
770 |
msgstr "Erreur : impossible d'ouvrir le répertoire %s."
|
771 |
|
772 |
+
#: lib/file_check.php:573
|
773 |
#, php-format
|
774 |
msgid "Error : %s directory is not readable."
|
775 |
msgstr "Erreur : le répertoire %s n'est pas lisible."
|
776 |
|
777 |
+
#: lib/file_check.php:588
|
778 |
#, php-format
|
779 |
msgid "Missing options line %s, please try again."
|
780 |
msgstr "Option manquante (ligne %s). Veuillez essayer à nouveau."
|
781 |
|
782 |
+
#: lib/file_check.php:598
|
783 |
#, php-format
|
784 |
msgid "Cannot create %s."
|
785 |
msgstr "Impossible de créer %s."
|
786 |
|
787 |
+
#: lib/file_check.php:615
|
788 |
msgid "Error reading old snapshot file."
|
789 |
msgstr "Erreur lors de la lecture du fichier de l'ancien instantané."
|
790 |
|
791 |
+
#: lib/file_check.php:626
|
792 |
msgid "Error reading new snapshot file."
|
793 |
msgstr "Erreur lors de la lecture du fichier du nouvel instantané."
|
794 |
|
795 |
+
#: lib/file_check.php:742 ninjafirewall.php:407
|
796 |
msgid "New file"
|
797 |
msgstr "Nouveau fichier"
|
798 |
|
799 |
+
#: lib/file_check.php:743 ninjafirewall.php:408
|
800 |
msgid "Modified file"
|
801 |
msgstr "Fichier modifié"
|
802 |
|
803 |
+
#: lib/file_check.php:744 ninjafirewall.php:409
|
804 |
msgid "Deleted file"
|
805 |
msgstr "Fichier supprimé"
|
806 |
|
807 |
+
#: lib/file_check.php:768
|
808 |
msgid "[NinjaFirewall] Alert: File Check detection"
|
809 |
msgstr "[NinjaFirewall] Alerte: Détection File Check"
|
810 |
|
811 |
+
#: lib/file_check.php:771 lib/file_check.php:773 lib/file_check.php:798
|
812 |
+
#: lib/file_check.php:800 lib/rules_update.php:545 lib/rules_update.php:547
|
813 |
+
#: lib/utils.php:214 lib/utils.php:839 lib/utils.php:1005 lib/utils.php:1378
|
814 |
msgid "Blog:"
|
815 |
msgstr "Blog :"
|
816 |
|
817 |
+
#: lib/file_check.php:775 lib/file_check.php:802 lib/rules_update.php:550
|
818 |
#, php-format
|
819 |
msgid "Date: %s"
|
820 |
msgstr "Date : %s"
|
821 |
|
822 |
+
#: lib/file_check.php:781
|
823 |
msgid "See attached file for details."
|
824 |
msgstr "Voir le fichier joint pour plus de détails."
|
825 |
|
826 |
+
#: lib/file_check.php:795
|
827 |
msgid "[NinjaFirewall] File Check report"
|
828 |
msgstr "[NinjaFirewall] Rapport de File Check"
|
829 |
|
830 |
+
#: lib/file_check.php:796
|
831 |
msgid "NinjaFirewall did not detect changes in your files."
|
832 |
msgstr "NinjaFirewall n'a pas détecté de changements dans vos fichiers."
|
833 |
|
834 |
+
#: lib/file_guard.php:28 lib/help.php:348 ninjafirewall.php:733
|
|
|
|
|
|
|
|
|
835 |
msgid "File Guard"
|
836 |
msgstr "File Guard"
|
837 |
|
838 |
+
#: lib/file_guard.php:32
|
839 |
#, php-format
|
840 |
msgid ""
|
841 |
"You are running NinjaFirewall in <i>WordPress WAF</i> mode. The %s feature "
|
849 |
"cette option s'applique à tous les fichiers PHP, vous devez installer "
|
850 |
"NinjaFirewall en mode %s."
|
851 |
|
852 |
+
#: lib/file_guard.php:38
|
853 |
#, php-format
|
854 |
msgid ""
|
855 |
"The cache directory %s is not writable. Please change its permissions (0777 "
|
858 |
"Impossible d'écrire dans le répertoire du cache %s. Assurez-vous que ce "
|
859 |
"répertoire n'est pas en lecture seule."
|
860 |
|
861 |
+
#: lib/file_guard.php:70
|
862 |
msgid "Enable File Guard"
|
863 |
msgstr "Activer File Guard"
|
864 |
|
865 |
+
#: lib/file_guard.php:72 lib/firewall_options.php:64 lib/live_log.php:102
|
866 |
+
#: lib/login_protection.php:203 lib/overview.php:123 lib/overview.php:257
|
867 |
+
#: lib/rules_update.php:141
|
868 |
+
msgid "Enabled"
|
869 |
+
msgstr "Activé"
|
870 |
+
|
871 |
+
#: lib/file_guard.php:72 lib/firewall_options.php:64 lib/live_log.php:102
|
872 |
+
#: lib/login_protection.php:203 lib/rules_update.php:141
|
873 |
+
msgid "Disabled"
|
874 |
+
msgstr "Désactivé"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
875 |
|
876 |
+
#: lib/file_guard.php:82
|
877 |
msgid "Real-time detection"
|
878 |
msgstr "Détection en temps réel"
|
879 |
|
880 |
+
#: lib/file_guard.php:85
|
881 |
#, php-format
|
882 |
msgid ""
|
883 |
"Monitor file activity and send an alert when someone is accessing a PHP "
|
886 |
"Surveiller et alerter par e-mail lorsqu'un visiteur accède à un script PHP "
|
887 |
"qui a été modifié ou créé il y a moins de %s heure(s)."
|
888 |
|
889 |
+
#: lib/file_guard.php:91 lib/live_log.php:165
|
890 |
msgid "or"
|
891 |
msgstr "ou"
|
892 |
|
893 |
+
#: lib/file_guard.php:91
|
894 |
msgid ""
|
895 |
"Full or partial case-sensitive string(s), max. 255 characters. Multiple "
|
896 |
"values must be comma-separated"
|
898 |
"Chaîne de caractères complète ou partielle, sensible à la casse, 255 "
|
899 |
"caractères maximum. Plusieurs valeurs doivent être séparées par des virgules"
|
900 |
|
901 |
+
#: lib/file_guard.php:96
|
902 |
msgid "Save File Guard options"
|
903 |
msgstr "Sauvegarder les options"
|
904 |
|
926 |
msgid "Your public key has been saved"
|
927 |
msgstr "Votre clé publique a été sauvegardée"
|
928 |
|
929 |
+
#: lib/firewall_log.php:81 lib/help.php:487 lib/wpplus.php:206
|
930 |
+
#: ninjafirewall.php:763
|
931 |
msgid "Firewall Log"
|
932 |
msgstr "Journal du Pare-feu"
|
933 |
|
934 |
+
#: lib/firewall_log.php:88
|
935 |
msgid "Error"
|
936 |
msgstr "Erreur"
|
937 |
|
938 |
+
#: lib/firewall_log.php:95
|
939 |
msgid "Note"
|
940 |
msgstr "Notice"
|
941 |
|
942 |
+
#: lib/firewall_log.php:95
|
943 |
#, php-format
|
944 |
msgid "your log has %s lines. I will display the last %s lines only."
|
945 |
msgstr ""
|
946 |
"votre journal contient %s lignes. Seules les %s dernières lignes vont être "
|
947 |
"affichées."
|
948 |
|
949 |
+
#: lib/firewall_log.php:99
|
950 |
msgid "Viewing:"
|
951 |
msgstr "Journal :"
|
952 |
|
953 |
+
#: lib/firewall_log.php:106 lib/firewall_options.php:193
|
954 |
msgid "bytes"
|
955 |
msgstr "octets"
|
956 |
|
957 |
+
#: lib/firewall_log.php:147 lib/firewall_log.php:308
|
958 |
msgid "The selected log is empty."
|
959 |
msgstr "Le journal sélectionné est vide."
|
960 |
|
961 |
+
#: lib/firewall_log.php:152
|
962 |
msgid ""
|
963 |
"The log shows all threats that were blocked by the firewall, unless stated "
|
964 |
"otherwise. It is rotated monthly."
|
966 |
"Le journal affiche toutes les menaces bloquées par le pare-feu, sauf "
|
967 |
"indication contraire. La rotation du journal est mensuelle."
|
968 |
|
969 |
+
#: lib/firewall_log.php:165
|
970 |
msgid "Log Options"
|
971 |
msgstr "Options du Journal"
|
972 |
|
973 |
+
#: lib/firewall_log.php:169 lib/help.php:500
|
974 |
msgid "Auto-delete log"
|
975 |
msgstr "Suppression automatique des journaux"
|
976 |
|
977 |
+
#: lib/firewall_log.php:173
|
978 |
#, php-format
|
979 |
msgid "Automatically delete logs older than %s days"
|
980 |
msgstr "Supprimer automatiquement les journaux vieux de plus de %s jours"
|
981 |
|
982 |
+
#: lib/firewall_log.php:175
|
983 |
msgid "Set this option to 0 to disable it."
|
984 |
msgstr "Entrez \"0\" pour désactiver cette option."
|
985 |
|
986 |
+
#: lib/firewall_log.php:181
|
987 |
msgid "Save Log Options"
|
988 |
msgstr "Sauvegarder les options"
|
989 |
|
990 |
+
#: lib/firewall_log.php:197 lib/help.php:508 lib/overview.php:247
|
991 |
+
#: lib/wpplus.php:170
|
992 |
msgid "Centralized Logging"
|
993 |
msgstr "Centralisation des Logs"
|
994 |
|
995 |
+
#: lib/firewall_log.php:200
|
996 |
msgid "Enter your public key (optional)"
|
997 |
msgstr "Entrez votre clé publique (optionnel)"
|
998 |
|
999 |
+
#: lib/firewall_log.php:203
|
1000 |
#, php-format
|
1001 |
msgid ""
|
1002 |
"<a href=\"%s\">Consult our blog</a> if you want to enable centralized "
|
1005 |
"Veuillez <a href=\"%s\">consulter notre blog</a> afin d'activer la "
|
1006 |
"Centralisation des Logs."
|
1007 |
|
1008 |
+
#: lib/firewall_log.php:210
|
1009 |
msgid "Save Public Key"
|
1010 |
msgstr "Sauvegarder la clé publique"
|
1011 |
|
1012 |
+
#: lib/firewall_log.php:212
|
1013 |
msgid "Delete Public Key"
|
1014 |
msgstr "Supprimer la clé publique"
|
1015 |
|
1016 |
+
#: lib/firewall_log.php:287
|
|
|
|
|
|
|
|
|
1017 |
msgid "The requested log does not exist."
|
1018 |
msgstr "Le journal demandé n'existe pas."
|
1019 |
|
1020 |
+
#: lib/firewall_log.php:294
|
1021 |
msgid "Unable to open the log for read operation."
|
1022 |
msgstr "Impossible de lire le journal."
|
1023 |
|
1024 |
+
#: lib/firewall_options.php:29 ninjafirewall.php:725
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1025 |
msgid "Firewall Options"
|
1026 |
msgstr "Options du Pare-feu"
|
1027 |
|
1028 |
+
#: lib/firewall_options.php:62 lib/help.php:145
|
1029 |
msgid "Firewall protection"
|
1030 |
msgstr "Pare-feu"
|
1031 |
|
1032 |
+
#: lib/firewall_options.php:76 lib/help.php:153 lib/overview.php:152
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1033 |
msgid "Debugging mode"
|
1034 |
msgstr "Mode débogage"
|
1035 |
|
1036 |
+
#: lib/firewall_options.php:89
|
|
|
|
|
|
|
|
|
1037 |
msgid "HTTP error code to return"
|
1038 |
msgstr "Code HTTP à retourner"
|
1039 |
|
1040 |
+
#: lib/firewall_options.php:92
|
1041 |
msgid "400 Bad Request"
|
1042 |
msgstr "400 Bad Request"
|
1043 |
|
1044 |
+
#: lib/firewall_options.php:93
|
1045 |
msgid "403 Forbidden (default)"
|
1046 |
msgstr "403 Forbidden (défaut)"
|
1047 |
|
1048 |
+
#: lib/firewall_options.php:94
|
1049 |
msgid "404 Not Found"
|
1050 |
msgstr "404 Not Found"
|
1051 |
|
1052 |
+
#: lib/firewall_options.php:95
|
1053 |
msgid "406 Not Acceptable"
|
1054 |
msgstr "406 Not Acceptable"
|
1055 |
|
1056 |
+
#: lib/firewall_options.php:96
|
1057 |
msgid "418 I'm a teapot"
|
1058 |
msgstr "418 I'm a teapot"
|
1059 |
|
1060 |
+
#: lib/firewall_options.php:97
|
1061 |
msgid "500 Internal Server Error"
|
1062 |
msgstr "500 Internal Server Error"
|
1063 |
|
1064 |
+
#: lib/firewall_options.php:98
|
1065 |
msgid "503 Service Unavailable"
|
1066 |
msgstr "503 Service Unavailable"
|
1067 |
|
1068 |
+
#: lib/firewall_options.php:111 lib/help.php:160
|
1069 |
msgid "IP anonymization"
|
1070 |
msgstr "Anonymisation IP"
|
1071 |
|
1072 |
+
#: lib/firewall_options.php:114
|
|
|
|
|
|
|
|
|
1073 |
#, php-format
|
1074 |
msgid ""
|
1075 |
"Does not apply to private IP addresses and the <a href=\"%s\">Login "
|
1078 |
"Ne s'applique pas aux adresses IP privées, ni à la <a href=\"%s\">Page de "
|
1079 |
"Connexion</a>."
|
1080 |
|
1081 |
+
#: lib/firewall_options.php:128
|
1082 |
msgid "Blocked user message"
|
1083 |
msgstr "Message pour les utilisateurs bloqués"
|
1084 |
|
1085 |
+
#: lib/firewall_options.php:131
|
1086 |
+
msgid "HTML code, including CSS and JS, is allowed."
|
1087 |
+
msgstr "Le code HTML, y compris CSS et JS, est autorisé."
|
1088 |
|
1089 |
+
#: lib/firewall_options.php:133
|
1090 |
msgid "Default message"
|
1091 |
msgstr "Message par défaut"
|
1092 |
|
1093 |
+
#: lib/firewall_options.php:141
|
1094 |
msgid "Firewall configuration"
|
1095 |
msgstr "Configuration du pare-feu"
|
1096 |
|
1097 |
+
#: lib/firewall_options.php:145
|
1098 |
msgid "Export configuration"
|
1099 |
msgstr "Exporter la configuration"
|
1100 |
|
1101 |
+
#: lib/firewall_options.php:147
|
1102 |
msgid "Download"
|
1103 |
msgstr "Télécharger"
|
1104 |
|
1105 |
+
#: lib/firewall_options.php:148
|
1106 |
msgid "File Check configuration will not be exported/imported."
|
1107 |
msgstr ""
|
1108 |
"La configuration de \"File Check\" ne peut pas être importée ou exportée."
|
1109 |
|
1110 |
+
#: lib/firewall_options.php:152
|
1111 |
msgid "Import configuration"
|
1112 |
msgstr "Importer la configuration"
|
1113 |
|
1114 |
+
#: lib/firewall_options.php:157
|
1115 |
#, php-format
|
1116 |
msgid "Imported configuration must match plugin version %s."
|
1117 |
msgstr "La fichier importé doit être compatible avec la version %s."
|
1118 |
|
1119 |
+
#: lib/firewall_options.php:158
|
1120 |
msgid "It will override all your current firewall options and rules."
|
1121 |
msgstr "Il remplacera toutes vos options et règles de pare-feu en vigueur."
|
1122 |
|
1123 |
+
#: lib/firewall_options.php:163 lib/help.php:186
|
1124 |
msgid "Configuration backup"
|
1125 |
msgstr "Sauvegarde de la configuration"
|
1126 |
|
1127 |
+
#: lib/firewall_options.php:169 lib/firewall_options.php:198
|
1128 |
msgid "Save Firewall Options"
|
1129 |
msgstr "Sauvegarder les options"
|
1130 |
|
1131 |
+
#: lib/firewall_options.php:189
|
1132 |
msgid "Available backup files"
|
1133 |
msgstr "Fichiers de sauvegarde disponibles"
|
1134 |
|
1135 |
+
#: lib/firewall_options.php:198
|
1136 |
#, php-format
|
1137 |
msgid ""
|
1138 |
"To restore NinjaFirewall's configuration to an earlier date, select it in "
|
1141 |
"Pour restaurer la configuration de NinjaFirewall à une date antérieure, "
|
1142 |
"sélectionnez-la dans la liste et cliquez sur '%s'."
|
1143 |
|
1144 |
+
#: lib/firewall_options.php:202
|
1145 |
msgid "There are no backup available yet, check back later."
|
1146 |
msgstr "Il n'y a pas encore de sauvegarde disponible, revenez plus tard."
|
1147 |
|
1148 |
+
#: lib/firewall_options.php:340
|
1149 |
#, php-format
|
1150 |
msgid "Uploaded file is either corrupted or its format is not supported (#%s)"
|
1151 |
msgstr ""
|
1152 |
"Le fichier importé est illisible ou son format n'est pas supporté (#%s)"
|
1153 |
|
1154 |
+
#: lib/firewall_options.php:369
|
1155 |
msgid "The imported file is not compatible with that version of NinjaFirewall"
|
1156 |
msgstr ""
|
1157 |
"Le fichier importé n'est pas compatible avec cette version de NinjaFirewall"
|
1158 |
|
1159 |
+
#: lib/firewall_options.php:489
|
1160 |
msgid "[NinjaFirewall] Alert: Firewall is disabled"
|
1161 |
msgstr "[NinjaFirewall] Alerte : Le pare-feu a été désactivé"
|
1162 |
|
1163 |
+
#: lib/firewall_options.php:491 lib/firewall_options.php:493 lib/utils.php:734
|
1164 |
+
#: lib/utils.php:736
|
1165 |
msgid "-Blog :"
|
1166 |
msgstr "- Blog :"
|
1167 |
|
1168 |
+
#: lib/firewall_options.php:497
|
1169 |
msgid "Someone disabled NinjaFirewall from your WordPress admin dashboard:"
|
1170 |
msgstr ""
|
1171 |
"Quelqu'un a désactivé NinjaFirewall depuis votre Tableau de bord de "
|
1172 |
"WordPress :"
|
1173 |
|
1174 |
+
#: lib/firewall_options.php:500
|
1175 |
msgid ""
|
1176 |
"NinjaFirewall is disabled because someone enabled debugging mode from your "
|
1177 |
"WordPress admin dashboard:"
|
1179 |
"NinjaFirewall est désactivé car quelqu'un activé son \"Mode débogage\" "
|
1180 |
"depuis votre tableau de bord de WordPress :"
|
1181 |
|
1182 |
+
#: lib/firewall_options.php:503
|
1183 |
msgid "[NinjaFirewall] Alert: Firewall override settings"
|
1184 |
msgstr "[NinjaFirewall] Alerte : Modification des paramètres du pare-feu"
|
1185 |
|
1186 |
+
#: lib/firewall_options.php:504
|
1187 |
msgid ""
|
1188 |
"Someone imported a new configuration which overrode the firewall settings:"
|
1189 |
msgstr ""
|
1190 |
"Quelqu'un a importé une nouvelle configuration qui a modifié tous les "
|
1191 |
"paramètres du pare-feu :"
|
1192 |
|
1193 |
+
#: lib/firewall_options.php:510 lib/utils.php:741
|
1194 |
msgid "-User :"
|
1195 |
msgstr "- Nom :"
|
1196 |
|
1197 |
+
#: lib/firewall_options.php:511 lib/utils.php:742
|
1198 |
msgid "-IP :"
|
1199 |
msgstr "- IP :"
|
1200 |
|
1201 |
+
#: lib/firewall_options.php:512 lib/utils.php:743
|
1202 |
msgid "-Date :"
|
1203 |
msgstr "- Date :"
|
1204 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1205 |
#: lib/firewall_policies.php:29
|
1206 |
#, php-format
|
1207 |
msgid ""
|
1210 |
"Cette option ne peut être activée que lorsque NinjaFirewall fonctionne en "
|
1211 |
"mode %s."
|
1212 |
|
1213 |
+
#: lib/firewall_policies.php:62 lib/help.php:231 ninjafirewall.php:729
|
1214 |
+
msgid "Firewall Policies"
|
1215 |
+
msgstr "Politiques du Pare-feu"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1216 |
|
1217 |
+
#: lib/firewall_policies.php:74
|
1218 |
msgid "Default values were restored."
|
1219 |
msgstr "Les valeurs par défaut ont été restaurées."
|
1220 |
|
1221 |
+
#: lib/firewall_policies.php:76
|
1222 |
msgid "No action taken."
|
1223 |
msgstr "Aucune mesure prise."
|
1224 |
|
1225 |
+
#: lib/firewall_policies.php:85 lib/help.php:236
|
1226 |
msgid "Basic Policies"
|
1227 |
msgstr "Politiques de base"
|
1228 |
|
1229 |
+
#: lib/firewall_policies.php:86 lib/help.php:262
|
1230 |
msgid "Intermediate Policies"
|
1231 |
msgstr "Politiques intermédiaires"
|
1232 |
|
1233 |
+
#: lib/firewall_policies.php:87 lib/help.php:293
|
1234 |
msgid "Advanced Policies"
|
1235 |
msgstr "Politiques avancées"
|
1236 |
|
1237 |
+
#: lib/firewall_policies.php:111
|
1238 |
msgid "Enable NinjaFirewall for"
|
1239 |
msgstr "Activer NinjaFirewall pour le trafic"
|
1240 |
|
1241 |
+
#: lib/firewall_policies.php:113 lib/live_log.php:182
|
1242 |
msgid "HTTP and HTTPS traffic (default)"
|
1243 |
msgstr "Trafic HTTP et HTTPS (défaut)"
|
1244 |
|
1245 |
+
#: lib/firewall_policies.php:114 lib/live_log.php:183
|
1246 |
msgid "HTTP traffic only"
|
1247 |
msgstr "Trafic HTTP uniquement"
|
1248 |
|
1249 |
+
#: lib/firewall_policies.php:115 lib/live_log.php:184
|
1250 |
msgid "HTTPS traffic only"
|
1251 |
msgstr "Trafic HTTPS uniquement"
|
1252 |
|
1253 |
+
#: lib/firewall_policies.php:141 lib/help.php:241
|
1254 |
msgid "Uploads"
|
1255 |
msgstr "Téléchargements"
|
1256 |
|
1257 |
+
#: lib/firewall_policies.php:144
|
1258 |
msgid "File Uploads"
|
1259 |
msgstr "Autoriser les téléchargements (uploads)"
|
1260 |
|
1261 |
+
#: lib/firewall_policies.php:147
|
1262 |
msgid "Allow uploads"
|
1263 |
msgstr "Autoriser"
|
1264 |
|
1265 |
+
#: lib/firewall_policies.php:147
|
1266 |
+
msgid "(default)"
|
1267 |
+
msgstr "(défaut)"
|
1268 |
+
|
1269 |
+
#: lib/firewall_policies.php:148
|
1270 |
msgid "Disallow uploads"
|
1271 |
msgstr "Interdire"
|
1272 |
|
1273 |
+
#: lib/firewall_policies.php:152
|
1274 |
msgid "Sanitise filenames"
|
1275 |
msgstr "Nettoyer le nom des fichiers"
|
1276 |
|
1277 |
+
#: lib/firewall_policies.php:152
|
1278 |
msgid "substitution character:"
|
1279 |
msgstr "caractère de substitution :"
|
1280 |
|
1281 |
+
#: lib/firewall_policies.php:276
|
1282 |
msgid "Block direct access to any PHP file located in one of these directories"
|
1283 |
msgstr ""
|
1284 |
"Bloquer l'accès direct à un fichier PHP situé dans l'un de ces répertoires"
|
1285 |
|
1286 |
+
#: lib/firewall_policies.php:306
|
1287 |
msgid ""
|
1288 |
"NinjaFirewall will not block access to the TinyMCE WYSIWYG editor even if "
|
1289 |
"this option is enabled."
|
1291 |
"NinjaFirewall ne bloquera pas l'accès à l'éditeur WYSIWYG TinyMCE même si "
|
1292 |
"cette option est activée."
|
1293 |
|
1294 |
+
#: lib/firewall_policies.php:321
|
1295 |
msgid ""
|
1296 |
"Unless you have PHP scripts in a \"/cache/\" folder that need to be accessed "
|
1297 |
"by your visitors, we recommend to enable this option."
|
1300 |
"pouvant être consultés par vos visiteurs, nous vous recommandons d'activer "
|
1301 |
"cette option."
|
1302 |
|
1303 |
+
#: lib/firewall_policies.php:330
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1304 |
msgid "General"
|
1305 |
msgstr "Général"
|
1306 |
|
1307 |
+
#: lib/firewall_policies.php:332 lib/help.php:247
|
1308 |
msgid "Block attempts to modify important WordPress settings"
|
1309 |
msgstr ""
|
1310 |
"Bloquer les tentatives de modification des paramètres importants de WordPress"
|
1311 |
|
1312 |
+
#: lib/firewall_policies.php:333 lib/help.php:248
|
1313 |
msgid "Block user accounts creation"
|
1314 |
msgstr "Bloquer la création de comptes utilisateur"
|
1315 |
|
1316 |
+
#: lib/firewall_policies.php:334
|
1317 |
msgid "Do not enable this policy if you allow user registration."
|
1318 |
msgstr ""
|
1319 |
"N'activez pas cette option si vous autorisez l'inscription des utilisateurs."
|
1320 |
|
1321 |
+
#: lib/firewall_policies.php:346 lib/help.php:249
|
1322 |
msgid "WordPress AJAX"
|
1323 |
msgstr "WordPress AJAX"
|
1324 |
|
1325 |
+
#: lib/firewall_policies.php:348
|
1326 |
msgid "Protect <code>admin-ajax.php</code> against suspicious bots"
|
1327 |
msgstr ""
|
1328 |
"Proteger <code>admin-ajax.php</code> contre les bots et scanners malveillants"
|
1329 |
|
1330 |
+
#: lib/firewall_policies.php:349
|
1331 |
+
#, php-format
|
1332 |
+
msgid ""
|
1333 |
+
"Your server IP (%s), localhost and private IP addresses will not be affected "
|
1334 |
+
"by this policy."
|
1335 |
+
msgstr ""
|
1336 |
+
"L'adresse IP de votre serveur (%s), localhost et toute adresse IP privée ne "
|
1337 |
+
"seront pas affectées par cette politique."
|
1338 |
+
|
1339 |
+
#: lib/firewall_policies.php:354
|
1340 |
msgid "Protect against username enumeration"
|
1341 |
msgstr "Protéger contre l'énumération des comptes utilisateurs"
|
1342 |
|
1343 |
+
#: lib/firewall_policies.php:356
|
1344 |
msgid "Through the author archives"
|
1345 |
msgstr "Via la page d'archive d'un auteur"
|
1346 |
|
1347 |
+
#: lib/firewall_policies.php:357
|
1348 |
msgid "Through the login page"
|
1349 |
msgstr "Via la page de connexion"
|
1350 |
|
1351 |
+
#: lib/firewall_policies.php:358
|
1352 |
msgid "Through the WordPress REST API"
|
1353 |
msgstr "Via l'API REST de WordPress"
|
1354 |
|
1355 |
+
#: lib/firewall_policies.php:363
|
|
|
|
|
|
|
|
|
1356 |
msgid "WordPress REST API"
|
1357 |
msgstr "API REST de WordPress"
|
1358 |
|
1359 |
+
#: lib/firewall_policies.php:365 lib/firewall_policies.php:371
|
1360 |
msgid "Block any access to the API"
|
1361 |
msgstr "Bloquer tout accès à l'API"
|
1362 |
|
1363 |
+
#: lib/firewall_policies.php:369
|
1364 |
msgid "WordPress XML-RPC API"
|
1365 |
msgstr "API XML-RPC de WordPress"
|
1366 |
|
1367 |
+
#: lib/firewall_policies.php:372
|
1368 |
msgid "Block <code>system.multicall</code> method"
|
1369 |
msgstr "Bloquer la méthode <code>system.multicall</code>"
|
1370 |
|
1371 |
+
#: lib/firewall_policies.php:373
|
1372 |
msgid "Block Pingbacks"
|
1373 |
msgstr "Bloquer les Pingbacks"
|
1374 |
|
1375 |
+
#: lib/firewall_policies.php:375
|
1376 |
msgid ""
|
1377 |
"Disabling access to the REST or XML-RPC API may break some functionality on "
|
1378 |
+
"your blog, its themes or plugins (e.g., Gutenberg editor, Jetpack, Contact "
|
1379 |
+
"Form 7 etc)."
|
1380 |
msgstr ""
|
1381 |
"L'activation de ces options peut rompre certaines fonctionnalités de votre "
|
1382 |
+
"blog, ses thèmes ou ses extensions (ex.: Éditeur Gutenberg, Jetpack, Contact "
|
1383 |
+
"Form 7 etc)."
|
1384 |
|
1385 |
+
#: lib/firewall_policies.php:380
|
1386 |
msgid "Block <code>POST</code> requests in the themes folder"
|
1387 |
msgstr "Bloquer les requêtes <code>POST</code> dans le dossier des thèmes"
|
1388 |
|
1389 |
+
#: lib/firewall_policies.php:390
|
1390 |
msgid "Force SSL for admin and logins"
|
1391 |
msgstr "Forcer la connexion sécurisée au Tableau de bord"
|
1392 |
|
1393 |
+
#: lib/firewall_policies.php:396
|
1394 |
msgid "Disable the plugin and theme editor"
|
1395 |
msgstr "Désactiver l’éditeur de thème et d'extension"
|
1396 |
|
1397 |
+
#: lib/firewall_policies.php:402
|
1398 |
msgid "Disable plugin and theme update/installation"
|
1399 |
msgstr "Désactiver l'installation et mise à jour des thèmes et extensions"
|
1400 |
|
1401 |
+
#: lib/firewall_policies.php:408
|
1402 |
msgid "Disable the fatal error handler"
|
1403 |
msgstr "Désactiver le gestionnaire d'erreurs fatales"
|
1404 |
|
1405 |
+
#: lib/firewall_policies.php:430 lib/help.php:334
|
1406 |
msgid "Users Whitelist"
|
1407 |
msgstr "Liste Blanche"
|
1408 |
|
1409 |
+
#: lib/firewall_policies.php:432
|
1410 |
msgid "Add the Administrator to the whitelist (default)."
|
1411 |
msgstr "Ajouter l'Administrateur à la liste blanche (défaut)."
|
1412 |
|
1413 |
+
#: lib/firewall_policies.php:433
|
1414 |
msgid "Add all logged in users to the whitelist."
|
1415 |
msgstr "Ajouter tous les utilisateurs connectés à la liste blanche."
|
1416 |
|
1417 |
+
#: lib/firewall_policies.php:434
|
1418 |
msgid "Disable users whitelist."
|
1419 |
msgstr "Désactiver la liste blanche."
|
1420 |
|
1421 |
+
#: lib/firewall_policies.php:435
|
1422 |
msgid ""
|
1423 |
"Note: This feature does not apply to <code>FORCE_SSL_ADMIN</code>, "
|
1424 |
"<code>DISALLOW_FILE_EDIT</code>, <code>DISALLOW_FILE_MODS</code> and "
|
1430 |
"<code>WP_DISABLE_FATAL_ERROR_HANDLER</code> qui, si elles sont activées, "
|
1431 |
"seront toujours appliquées."
|
1432 |
|
1433 |
+
#: lib/firewall_policies.php:460 lib/help.php:264
|
1434 |
msgid "HTTP GET variable"
|
1435 |
msgstr "Variable HTTP GET"
|
1436 |
|
1437 |
+
#: lib/firewall_policies.php:463
|
1438 |
msgid "Scan <code>GET</code> variable"
|
1439 |
msgstr "Filtrer la variable <code>GET</code>"
|
1440 |
|
1441 |
+
#: lib/firewall_policies.php:469
|
1442 |
msgid "Sanitise <code>GET</code> variable"
|
1443 |
msgstr "Nettoyer la variable <code>GET</code>"
|
1444 |
|
1445 |
+
#: lib/firewall_policies.php:495 lib/help.php:267
|
1446 |
msgid "HTTP POST variable"
|
1447 |
msgstr "Variable HTTP POST"
|
1448 |
|
1449 |
+
#: lib/firewall_policies.php:498
|
1450 |
msgid "Scan <code>POST</code> variable"
|
1451 |
msgstr "Filtrer la variable <code>POST</code>"
|
1452 |
|
1453 |
+
#: lib/firewall_policies.php:504
|
1454 |
msgid "Sanitise <code>POST</code> variable"
|
1455 |
msgstr "Nettoyer la variable <code>POST</code>"
|
1456 |
|
1457 |
+
#: lib/firewall_policies.php:507 lib/firewall_policies.php:532
|
1458 |
msgid "Do not enable this option unless you know what you are doing!"
|
1459 |
msgstr ""
|
1460 |
"N'activez pas cette option si vous n'êtes pas sûr de ce que vous "
|
1461 |
"faites !"
|
1462 |
|
1463 |
+
#: lib/firewall_policies.php:511
|
1464 |
msgid "Decode Base64-encoded <code>POST</code> variable"
|
1465 |
msgstr ""
|
1466 |
"Décoder les chaîne encodées en Base64 dans la variable <code>POST</code>"
|
1467 |
|
1468 |
+
#: lib/firewall_policies.php:526 lib/help.php:271
|
1469 |
msgid "HTTP REQUEST variable"
|
1470 |
msgstr "Variable HTTP REQUEST"
|
1471 |
|
1472 |
+
#: lib/firewall_policies.php:529
|
1473 |
msgid "Sanitise <code>REQUEST</code> variable"
|
1474 |
msgstr "Nettoyer la variable <code>REQUEST</code>"
|
1475 |
|
1476 |
+
#: lib/firewall_policies.php:551 lib/help.php:274
|
1477 |
msgid "Cookies"
|
1478 |
msgstr "Cookies"
|
1479 |
|
1480 |
+
#: lib/firewall_policies.php:554
|
1481 |
msgid "Scan cookies"
|
1482 |
msgstr "Filtrer les cookies"
|
1483 |
|
1484 |
+
#: lib/firewall_policies.php:560
|
1485 |
msgid "Sanitise cookies"
|
1486 |
msgstr "Nettoyer les cookies"
|
1487 |
|
1488 |
+
#: lib/firewall_policies.php:586 lib/help.php:277
|
1489 |
msgid "HTTP_USER_AGENT server variable"
|
1490 |
msgstr "Variable HTTP_USER_AGENT"
|
1491 |
|
1492 |
+
#: lib/firewall_policies.php:589
|
1493 |
msgid "Scan <code>HTTP_USER_AGENT</code>"
|
1494 |
msgstr "Filtrer <code>HTTP_USER_AGENT</code>"
|
1495 |
|
1496 |
+
#: lib/firewall_policies.php:595
|
1497 |
msgid "Sanitise <code>HTTP_USER_AGENT</code>"
|
1498 |
msgstr "Nettoyer <code>HTTP_USER_AGENT</code>"
|
1499 |
|
1500 |
+
#: lib/firewall_policies.php:601
|
1501 |
msgid "Block suspicious bots/scanners"
|
1502 |
msgstr "Bloquer les requêtes provenant de bots/scanners malveillants"
|
1503 |
|
1504 |
+
#: lib/firewall_policies.php:627 lib/help.php:281
|
1505 |
msgid "HTTP_REFERER server variable"
|
1506 |
msgstr "Variable HTTP_REFERER"
|
1507 |
|
1508 |
+
#: lib/firewall_policies.php:630
|
1509 |
msgid "Scan <code>HTTP_REFERER</code>"
|
1510 |
msgstr "Filtrer <code>HTTP_REFERER</code>"
|
1511 |
|
1512 |
+
#: lib/firewall_policies.php:636
|
1513 |
msgid "Sanitise <code>HTTP_REFERER</code>"
|
1514 |
msgstr "Nettoyer <code>HTTP_REFERER</code>"
|
1515 |
|
1516 |
+
#: lib/firewall_policies.php:642
|
1517 |
msgid ""
|
1518 |
"Block <code>POST</code> requests that do not have an <code>HTTP_REFERER</"
|
1519 |
"code> header"
|
1521 |
"Bloquer les requêtes <code>POST</code> qui n'ont pas d'en-tête "
|
1522 |
"<code>HTTP_REFERER</code>"
|
1523 |
|
1524 |
+
#: lib/firewall_policies.php:645
|
1525 |
msgid ""
|
1526 |
"Keep this option disabled if you are using scripts like Paypal IPN, "
|
1527 |
"WordPress WP-Cron etc"
|
1529 |
"N'activez pas cette option si vous utilisez des scripts comme Paypal IPN, "
|
1530 |
"WordPress WP-Cron etc"
|
1531 |
|
1532 |
+
#: lib/firewall_policies.php:672
|
1533 |
msgid "Block localhost IP in <code>GET/POST</code> request"
|
1534 |
msgstr "Bloquer les requêtes <code>GET/POST</code> contenant l'IP localhost"
|
1535 |
|
1536 |
+
#: lib/firewall_policies.php:678
|
1537 |
msgid "Block HTTP requests with an IP in the <code>HTTP_HOST</code> header"
|
1538 |
msgstr ""
|
1539 |
"Bloquer les requêtes HTTP dont l'en-tête <code>HTTP_HOST</code> contient une "
|
1540 |
"IP"
|
1541 |
|
1542 |
+
#: lib/firewall_policies.php:684
|
1543 |
msgid "Scan traffic coming from localhost and private IP address spaces"
|
1544 |
msgstr "Filtrer les connexions provenant de localhost et d'adresses IP privées"
|
1545 |
|
1546 |
+
#: lib/firewall_policies.php:703
|
1547 |
#, php-format
|
1548 |
msgid ""
|
1549 |
+
"The \"HTTP response headers\" options below are disabled because the %s PHP "
|
1550 |
+
"function is not available on your server."
|
1551 |
msgstr ""
|
1552 |
+
"Les politiques \"En-têtes de réponse HTTP\" ci-dessous sont désactivées car "
|
1553 |
+
"la fonction PHP %s n'est pas disponible sur votre serveur."
|
1554 |
|
1555 |
+
#: lib/firewall_policies.php:723 lib/help.php:295
|
1556 |
msgid "HTTP response headers"
|
1557 |
msgstr "En-têtes de réponse HTTP"
|
1558 |
|
1559 |
+
#: lib/firewall_policies.php:731
|
1560 |
#, php-format
|
1561 |
msgid "Set %s to protect against MIME type confusion attacks"
|
1562 |
msgstr ""
|
1563 |
"Activer %s pour protéger contre les attaques basées sur la confusion du type "
|
1564 |
"MIME"
|
1565 |
|
1566 |
+
#: lib/firewall_policies.php:737
|
1567 |
#, php-format
|
1568 |
msgid "Set %s to protect against clickjacking attempts"
|
1569 |
msgstr ""
|
1570 |
"Activer %s pour protéger contre les attaques de détournement de clic "
|
1571 |
"(clickjacking)"
|
1572 |
|
1573 |
+
#: lib/firewall_policies.php:744
|
1574 |
+
msgid ""
|
1575 |
+
"Setting this option to <code>DENY</code> may break some functionality on "
|
1576 |
+
"your blog, its themes or plugins."
|
1577 |
+
msgstr ""
|
1578 |
+
"Activer cette fonction avec <code>DENY</code> pourrait bloquer certaines "
|
1579 |
+
"fonctionnalités de votre blog, ses thèmes ou ses extensions."
|
1580 |
+
|
1581 |
+
#: lib/firewall_policies.php:749
|
1582 |
#, php-format
|
1583 |
msgid "Set %s (IE/Edge, Chrome, Opera and Safari browsers)"
|
1584 |
msgstr "Activer %s (IE/Edge, Opera, Chrome et Safari)"
|
1585 |
|
1586 |
+
#: lib/firewall_policies.php:753 lib/firewall_policies.php:754
|
1587 |
+
#: lib/firewall_policies.php:755
|
1588 |
#, php-format
|
1589 |
msgid "Set to %s"
|
1590 |
msgstr "Régler sur %s"
|
1591 |
|
1592 |
+
#: lib/firewall_policies.php:760
|
1593 |
#, php-format
|
1594 |
msgid "Force %s flag on all cookies to mitigate XSS attacks"
|
1595 |
msgstr ""
|
1596 |
"Activer la propriété %s pour tous les cookies afin d'atténuer les menaces "
|
1597 |
"XSS qui génèrent des vols de cookies"
|
1598 |
|
1599 |
+
#: lib/firewall_policies.php:763
|
1600 |
msgid ""
|
1601 |
"If your PHP scripts use cookies that need to be accessed from JavaScript, "
|
1602 |
+
"you should not enable this option."
|
1603 |
msgstr ""
|
1604 |
"Si vos scripts PHP envoient des cookies qui doivent être accessibles à "
|
1605 |
+
"partir de JavaScript, vous ne devriez pas activer cette option."
|
1606 |
|
1607 |
+
#: lib/firewall_policies.php:772
|
1608 |
msgid ""
|
1609 |
"HSTS headers can only be set when you are accessing your site over HTTPS."
|
1610 |
msgstr ""
|
1611 |
"Les en-têtes HSTS ne peuvent être utilisés que lorsque vous vous connectez à "
|
1612 |
"votre site en HTTPS (connexion sécurisée)."
|
1613 |
|
1614 |
+
#: lib/firewall_policies.php:780
|
1615 |
#, php-format
|
1616 |
msgid "Set %s (HSTS) to enforce secure connections to the server"
|
1617 |
msgstr ""
|
1618 |
"Activer %s (HSTS) pour forcer les connexions sécurisées vers le serveur"
|
1619 |
|
1620 |
+
#: lib/firewall_policies.php:784
|
1621 |
+
msgid "Set \"max-age\" to 0"
|
1622 |
+
msgstr "Régler \"max-age\" à 0"
|
1623 |
+
|
1624 |
+
#: lib/firewall_policies.php:785
|
1625 |
msgid "1 month"
|
1626 |
msgstr "1 mois"
|
1627 |
|
1628 |
+
#: lib/firewall_policies.php:786
|
1629 |
msgid "6 months"
|
1630 |
msgstr "6 mois"
|
1631 |
|
1632 |
+
#: lib/firewall_policies.php:787
|
1633 |
msgid "1 year"
|
1634 |
msgstr "1 année"
|
1635 |
|
1636 |
+
#: lib/firewall_policies.php:789
|
1637 |
msgid "Apply to subdomains"
|
1638 |
msgstr "Appliquer aux sous-domaines"
|
1639 |
|
1640 |
+
#: lib/firewall_policies.php:813
|
|
|
|
|
|
|
|
|
1641 |
#, php-format
|
1642 |
msgid "Set %s for the website frontend"
|
1643 |
msgstr "Activer %s pour le site"
|
1644 |
|
1645 |
+
#: lib/firewall_policies.php:818
|
1646 |
msgid "This CSP header will apply to the website frontend only."
|
1647 |
msgstr "Cet en-tête CSP ne s'appliquera qu'au site."
|
1648 |
|
1649 |
+
#: lib/firewall_policies.php:822
|
1650 |
#, php-format
|
1651 |
msgid "Set %s for the WordPress admin dashboard"
|
1652 |
msgstr "Activer %s pour la console d'administration de WordPress"
|
1653 |
|
1654 |
+
#: lib/firewall_policies.php:827
|
1655 |
msgid "This CSP header will apply to the WordPress admin dashboard only."
|
1656 |
msgstr ""
|
1657 |
"Cet en-tête CSP ne s'appliquera qu'à la console d'administration de "
|
1658 |
"WordPress."
|
1659 |
|
1660 |
+
#: lib/firewall_policies.php:843
|
1661 |
#, php-format
|
1662 |
msgid "Set %s (Chrome, Opera and Firefox browsers)"
|
1663 |
msgstr "Activer %s (Chrome, Opera et Firefox)"
|
1664 |
|
1665 |
+
#: lib/firewall_policies.php:893
|
1666 |
msgid ""
|
1667 |
"Block PHP built-in wrappers in <code>GET</code>, <code>POST</code>, "
|
1668 |
"<code>HTTP_USER_AGENT</code>, <code>HTTP_REFERER</code> and cookies"
|
1671 |
"<code>GET</code>, <code>POST</code>, <code>HTTP_USER_AGENT</code>, "
|
1672 |
"<code>HTTP_REFERER</code> et les cookies"
|
1673 |
|
1674 |
+
#: lib/firewall_policies.php:932
|
1675 |
msgid "Block serialized PHP objects in the following global variables"
|
1676 |
msgstr ""
|
1677 |
"Bloquer les objets PHP sérialisés dans les variables globales suivantes"
|
1678 |
|
1679 |
+
#: lib/firewall_policies.php:942
|
1680 |
msgid "Hide PHP notice and error messages"
|
1681 |
msgstr "Masquer les messages d'erreur de PHP"
|
1682 |
|
1683 |
+
#: lib/firewall_policies.php:948
|
1684 |
msgid "Sanitise <code>PHP_SELF</code>"
|
1685 |
msgstr "Nettoyer <code>PHP_SELF</code>"
|
1686 |
|
1687 |
+
#: lib/firewall_policies.php:954
|
1688 |
msgid "Sanitise <code>PATH_TRANSLATED</code>"
|
1689 |
msgstr "Nettoyer <code>PATH_TRANSLATED</code>"
|
1690 |
|
1691 |
+
#: lib/firewall_policies.php:960
|
1692 |
msgid "Sanitise <code>PATH_INFO</code>"
|
1693 |
msgstr "Nettoyer <code>PATH_INFO</code>"
|
1694 |
|
1695 |
+
#: lib/firewall_policies.php:974
|
1696 |
msgid "This option is not compatible with your actual configuration."
|
1697 |
msgstr ""
|
1698 |
"Cette option n'est pas compatible avec la configuration de votre serveur."
|
1699 |
|
1700 |
+
#: lib/firewall_policies.php:996 lib/help.php:325
|
1701 |
msgid "Various"
|
1702 |
msgstr "Divers"
|
1703 |
|
1704 |
+
#: lib/firewall_policies.php:999
|
1705 |
msgid "Block the <code>DOCUMENT_ROOT</code> server variable in HTTP request"
|
1706 |
msgstr ""
|
1707 |
"Bloquer les requêtes HTTP contenant la variable <code>DOCUMENT_ROOT</code>"
|
1708 |
|
1709 |
+
#: lib/firewall_policies.php:1006
|
1710 |
msgid "Block ASCII character 0x00 (NULL byte)"
|
1711 |
msgstr "Bloquer le caractère ASCII 0x00 (NULL byte)"
|
1712 |
|
1713 |
+
#: lib/firewall_policies.php:1012
|
1714 |
msgid "Block ASCII control characters 1 to 8 and 14 to 31"
|
1715 |
msgstr "Bloquer les caractères de contrôle ASCII 1 à 8 et 14 à 31"
|
1716 |
|
1717 |
+
#: lib/firewall_policies.php:1025
|
1718 |
msgid "Save Firewall Policies"
|
1719 |
msgstr "Sauvegarder les options"
|
1720 |
|
1721 |
+
#: lib/firewall_policies.php:1027
|
1722 |
msgid "Restore Default Values"
|
1723 |
msgstr "Rétablir les valeurs par défaut"
|
1724 |
|
1725 |
+
#: lib/help.php:37 ninjafirewall.php:715
|
1726 |
msgid "Overview"
|
1727 |
msgstr "Aperçu"
|
1728 |
|
1729 |
+
#: lib/help.php:41
|
1730 |
+
msgid "Quick Start, FAQ, Support and Troubleshooting Guide."
|
1731 |
+
msgstr "Guide d'Utilisation, d'Installation et de Dépannage."
|
1732 |
+
|
1733 |
+
#: lib/help.php:42
|
1734 |
msgid ""
|
1735 |
+
"Below are some helpful info and links you may consider reading before using "
|
1736 |
+
"NinjaFirewall:"
|
|
|
1737 |
msgstr ""
|
1738 |
+
"Voici quelques informations et liens qui pourraient vous être utiles (en "
|
1739 |
+
"langue anglaise) :"
|
|
|
|
|
|
|
|
|
|
|
|
|
1740 |
|
1741 |
+
#: lib/help.php:44
|
1742 |
+
msgid "Must Read"
|
1743 |
+
msgstr "A lire"
|
1744 |
|
1745 |
+
#: lib/help.php:46
|
1746 |
+
msgid "Securing WordPress with NinjaFirewall: A step by step tutorial."
|
1747 |
+
msgstr ""
|
1748 |
+
"Sécurisation de WordPress avec NinjaFirewall. Un tutoriel étape par étape."
|
1749 |
|
1750 |
#: lib/help.php:47
|
1751 |
+
msgid "An introduction to NinjaFirewall filtering engine."
|
1752 |
+
msgstr "Présentation du moteur de filtrage de NinjaFirewall."
|
1753 |
|
1754 |
#: lib/help.php:48
|
1755 |
+
msgid "NinjaFirewall Full WAF vs WordPress WAF mode."
|
1756 |
+
msgstr "Différences entre les modes Full WAF et WordPress WAF."
|
1757 |
+
|
1758 |
+
#: lib/help.php:49
|
1759 |
+
msgid "Testing NinjaFirewall without blocking your visitors."
|
1760 |
+
msgstr "Tester NinjaFirewall sans bloquer vos visiteurs."
|
1761 |
+
|
1762 |
+
#: lib/help.php:50
|
1763 |
+
msgid "Add your own code to the firewall: the \".htninja\" file."
|
1764 |
+
msgstr "Ajoutez votre code au pare-feu: le fichier \".htninja\"."
|
1765 |
+
|
1766 |
+
#: lib/help.php:51
|
1767 |
+
msgid "Restricting access to NinjaFirewall settings."
|
1768 |
+
msgstr "Restreindre l'accès à la configuration de NinjaFirewall."
|
1769 |
+
|
1770 |
+
#: lib/help.php:52
|
1771 |
+
msgid "Upgrading to PHP 7 with NinjaFirewall installed."
|
1772 |
+
msgstr "Mise à niveau de PHP 5 vers PHP 7 avec NinjaFirewall installé."
|
1773 |
+
|
1774 |
+
#: lib/help.php:53
|
1775 |
+
msgid "Keep your blog protected against the latest vulnerabilities."
|
1776 |
+
msgstr "Gardez votre blog protégé contre les dernières vulnérabilités."
|
1777 |
+
|
1778 |
+
#: lib/help.php:54
|
1779 |
+
msgid "Test your website security with our online scanner."
|
1780 |
+
msgstr "Testez la sécurité de votre site avec notre scanner en ligne."
|
1781 |
+
|
1782 |
+
#: lib/help.php:55
|
1783 |
+
msgid "NinjaFirewall Referral Program."
|
1784 |
+
msgstr "Programme de parrainage de NinjaFirewall."
|
1785 |
+
|
1786 |
+
#: lib/help.php:57
|
1787 |
+
msgid "Our blog."
|
1788 |
+
msgstr "Consultez notre blog."
|
1789 |
+
|
1790 |
+
#: lib/help.php:60
|
1791 |
+
msgid "Troubleshooting"
|
1792 |
+
msgstr "Dépannage"
|
1793 |
+
|
1794 |
+
#: lib/help.php:62
|
1795 |
+
msgid "Locked out of your site / Fatal error / WordPress crash?"
|
1796 |
+
msgstr ""
|
1797 |
+
"Votre site n'est plus accessible / Erreur fatale / WordPress a planté ?"
|
1798 |
+
|
1799 |
+
#: lib/help.php:63
|
1800 |
+
msgid "Failed installation (\"Error: The firewall is not loaded\")?"
|
1801 |
+
msgstr "Échec de l'installation (\"Erreur : le pare-feu n'est pas activé.\") ?"
|
1802 |
+
|
1803 |
+
#: lib/help.php:64
|
1804 |
+
msgid "Blank page after INSTALLING NinjaFirewall?"
|
1805 |
+
msgstr "Page blanche après l'INSTALLATION de NinjaFirewall ?"
|
1806 |
+
|
1807 |
+
#: lib/help.php:65
|
1808 |
+
msgid "Blank page after UNINSTALLING NinjaFirewall?"
|
1809 |
+
msgstr "Page blanche après la DÉSINSTALLATION de NinjaFirewall ?"
|
1810 |
+
|
1811 |
+
#: lib/help.php:66
|
1812 |
+
msgid "500 Internal Server Error?"
|
1813 |
+
msgstr "500 Internal Server Error ?"
|
1814 |
+
|
1815 |
+
#: lib/help.php:67
|
1816 |
+
msgid "\"Cannot connect to WordPress database\" error message?"
|
1817 |
+
msgstr "Impossible de se connecter à la base de données WordPress ?"
|
1818 |
+
|
1819 |
+
#: lib/help.php:68
|
1820 |
+
msgid "How to disable NinjaFirewall?"
|
1821 |
+
msgstr "Comment désactiver NinjaFirewall?"
|
1822 |
+
|
1823 |
+
#: lib/help.php:69
|
1824 |
+
msgid "Lost password (brute-force protection)?"
|
1825 |
+
msgstr ""
|
1826 |
+
"Vous avez perdu le mot de passe de la protection contre les attaques par "
|
1827 |
+
"force brute ?"
|
1828 |
+
|
1829 |
+
#: lib/help.php:70
|
1830 |
+
msgid "Blocked visitors?"
|
1831 |
+
msgstr "Vos visiteurs sont bloqués par erreur ?"
|
1832 |
+
|
1833 |
+
#: lib/help.php:71
|
1834 |
+
msgid "Exporting NinjaFirewall's configuration"
|
1835 |
+
msgstr "Exporter la configuration de NinjaFirewall"
|
1836 |
+
|
1837 |
+
#: lib/help.php:72 lib/help.php:96
|
1838 |
+
msgid "Click here."
|
1839 |
+
msgstr "Cliquez ici."
|
1840 |
+
|
1841 |
+
#: lib/help.php:75
|
1842 |
+
msgid "NinjaFirewall troubleshooter script"
|
1843 |
+
msgstr "Script de dépannage NinjaFirewall"
|
1844 |
+
|
1845 |
+
#: lib/help.php:77
|
1846 |
+
msgid "Click to download."
|
1847 |
+
msgstr "Cliquez ici pour télécharger."
|
1848 |
+
|
1849 |
+
#: lib/help.php:78
|
1850 |
+
msgid "Rename this file to \"wp-check.php\"."
|
1851 |
+
msgstr "Renommez ce fichier en \"wp-check.php\"."
|
1852 |
+
|
1853 |
+
#: lib/help.php:79
|
1854 |
+
msgid "Upload it into your WordPress root folder."
|
1855 |
+
msgstr "Téléchargez-le dans le répertoire racine WordPress."
|
1856 |
+
|
1857 |
+
#: lib/help.php:80
|
1858 |
+
msgid "Goto http://YOUR WEBSITE/wp-check.php."
|
1859 |
+
msgstr "Rendez-vous sur http://VOTRE_SITE/wp-check.php."
|
1860 |
+
|
1861 |
+
#: lib/help.php:81
|
1862 |
+
msgid "Delete it afterwards."
|
1863 |
+
msgstr "Supprimez-le après son utilisation."
|
1864 |
+
|
1865 |
+
#: lib/help.php:84
|
1866 |
+
msgid "FAQ"
|
1867 |
+
msgstr "FAQ"
|
1868 |
+
|
1869 |
+
#: lib/help.php:86
|
1870 |
+
msgid ""
|
1871 |
+
"Why is NinjaFirewall different from other security plugins for WordPress?"
|
1872 |
+
msgstr ""
|
1873 |
+
"En quoi NinjaFirewall est-il différent des autres extensions de sécurité "
|
1874 |
+
"pour WordPress ?"
|
1875 |
+
|
1876 |
+
#: lib/help.php:87
|
1877 |
+
msgid "Do I need root privileges to install NinjaFirewall?"
|
1878 |
+
msgstr ""
|
1879 |
+
"Ai-je besoin d'avoir les privilèges root pour installer NinjaFirewall ?"
|
1880 |
+
|
1881 |
+
#: lib/help.php:88
|
1882 |
+
msgid "Does it work with Nginx?"
|
1883 |
+
msgstr "Est-ce qu'il fonctionne avec Nginx ?"
|
1884 |
+
|
1885 |
+
#: lib/help.php:89
|
1886 |
+
msgid "Do I need to alter my PHP scripts?"
|
1887 |
+
msgstr "Ai-je besoin de modifier mes scripts PHP ?"
|
1888 |
+
|
1889 |
+
#: lib/help.php:90
|
1890 |
+
msgid ""
|
1891 |
+
"Will NinjaFirewall detect the correct IP of my visitors if I am behind a CDN "
|
1892 |
+
"service like Cloudflare or Incapsula?"
|
1893 |
+
msgstr ""
|
1894 |
+
"Est-ce que NinjaFirewall détectera correctement l'adresse IP de mes "
|
1895 |
+
"visiteurs si j'utilise un service CDN comme Cloudflare ou Incapsula ?"
|
1896 |
+
|
1897 |
+
#: lib/help.php:91
|
1898 |
+
msgid ""
|
1899 |
+
"I moved my wp-config.php file to another directory. Will it work with "
|
1900 |
+
"NinjaFirewall?"
|
1901 |
+
msgstr ""
|
1902 |
+
"-J'ai déplacé mon fichier wp-config.php dans un autre répertoire. "
|
1903 |
+
"NinjaFirewall va-t-il fonctionner ?"
|
1904 |
+
|
1905 |
+
#: lib/help.php:92
|
1906 |
+
msgid "Will it slow down my site?"
|
1907 |
+
msgstr "Est-ce qu'il risque de ralentir mon site ?"
|
1908 |
+
|
1909 |
+
#: lib/help.php:93
|
1910 |
+
msgid "Is there a Microsoft Windows version?"
|
1911 |
+
msgstr "Existe-t-il une version pour Microsoft Windows ?"
|
1912 |
+
|
1913 |
+
#: lib/help.php:94
|
1914 |
+
msgid "Can I add/write my own security rules?"
|
1915 |
+
msgstr "Puis-je ajouter / écrire mes propres règles de sécurité ?"
|
1916 |
+
|
1917 |
+
#: lib/help.php:95
|
1918 |
+
msgid "Can I migrate my site(s) with NinjaFirewall installed?"
|
1919 |
+
msgstr ""
|
1920 |
+
"Est-ce que je peux migrer mon site lorsque NinjaFirewall est installé ?"
|
1921 |
+
|
1922 |
+
#: lib/help.php:99
|
1923 |
+
msgid "Help and Support"
|
1924 |
+
msgstr "Aide et Support"
|
1925 |
|
1926 |
+
#: lib/help.php:101
|
1927 |
+
msgid "WordPress forum: "
|
1928 |
+
msgstr "Forum WordPress :"
|
1929 |
+
|
1930 |
+
#: lib/help.php:102
|
1931 |
+
msgid "Online support (Premium customers only): "
|
1932 |
+
msgstr "Support technique (clients Premium uniquement) :"
|
1933 |
+
|
1934 |
+
#: lib/help.php:110
|
1935 |
+
msgid "For more information:"
|
1936 |
+
msgstr "Pour plus d'information :"
|
1937 |
+
|
1938 |
+
#: lib/help.php:111
|
1939 |
+
msgid "NinTechNet's updates and security announcements:"
|
1940 |
+
msgstr "Les mises à jour et annonces de sécurité de NinTechNet :"
|
1941 |
+
|
1942 |
+
#: lib/help.php:124 lib/statistics.php:101
|
1943 |
msgid "Monthly stats"
|
1944 |
msgstr "Statistiques mensuelles"
|
1945 |
|
1946 |
+
#: lib/help.php:126
|
1947 |
msgid ""
|
1948 |
"Statistics are taken from the current log. It is rotated on the first day of "
|
1949 |
"each month."
|
1951 |
"Les statistiques sont tirées du journal du pare-feu qui est, par défaut, "
|
1952 |
"réinitialisé le 1er jour de chaque mois."
|
1953 |
|
1954 |
+
#: lib/help.php:128
|
1955 |
#, php-format
|
1956 |
msgid ""
|
1957 |
"You can view the log by clicking on the <a href=\"%s\">Firewall Log</a> menu."
|
1959 |
"Vous pouvez consuler ce journal en cliquant sur le menu <a href=\"%s"
|
1960 |
"\">Journal du Pare-feu</a>."
|
1961 |
|
1962 |
+
#: lib/help.php:132 lib/statistics.php:113
|
1963 |
msgid "Benchmarks"
|
1964 |
msgstr "Performances"
|
1965 |
|
1966 |
+
#: lib/help.php:134
|
1967 |
msgid ""
|
1968 |
"Benchmarks show the time NinjaFirewall took, in seconds, to process each "
|
1969 |
"request it has blocked."
|
1971 |
"Indique le temps qu'il a fallu à NinjaFirewall pour intercepter, analyser et "
|
1972 |
"bloquer les requêtes dangereuses."
|
1973 |
|
1974 |
+
#: lib/help.php:147
|
1975 |
#, php-format
|
1976 |
msgid ""
|
1977 |
"This option allows you to disable NinjaFirewall. It has basically the same "
|
1981 |
"essentiellement le même effet que la désactivation effectuée depuis la page "
|
1982 |
"<a href=\"%s\">Extensions</a> du Tableau de bord."
|
1983 |
|
1984 |
+
#: lib/help.php:149
|
1985 |
msgid "Your site will remain unprotected until you enable it again."
|
1986 |
msgstr ""
|
1987 |
"Votre site ne sera plus protégé par NinjaFirewall durant cette période."
|
1988 |
|
1989 |
+
#: lib/help.php:155
|
1990 |
#, php-format
|
1991 |
msgid ""
|
1992 |
"In Debugging mode, NinjaFirewall will not block or sanitise suspicious "
|
1998 |
"Les lignes correspondantes seront indiquée par la mention <code>DEBUG_ON</"
|
1999 |
"code> dans la colonne LEVEL du journal. "
|
2000 |
|
2001 |
+
#: lib/help.php:156
|
2002 |
msgid ""
|
2003 |
"We recommend to run it in Debugging Mode for at least 24 hours after "
|
2004 |
"installing it on a new site and then to keep an eye on the firewall log "
|
2012 |
"journal du pare-feu pour y voir les éventuels problèmes et, le cas échéant, "
|
2013 |
"désactiver les options ou règles pouvant créer des faux-positifs."
|
2014 |
|
2015 |
+
#: lib/help.php:161
|
2016 |
msgid ""
|
2017 |
"This option will anonymize IP addresses in the firewall log by removing "
|
2018 |
"their last 3 characters."
|
2020 |
"Cette option anonymise les adresses IP dans le journal du pare-feu en "
|
2021 |
"supprimant leurs 3 derniers caractères."
|
2022 |
|
2023 |
+
#: lib/help.php:161
|
2024 |
msgid ""
|
2025 |
"It does not apply to private IP addresses and the Login Protection feature."
|
2026 |
msgstr ""
|
2027 |
"Elle ne s'applique pas aux adresses IP privées, ni à l'option Page de "
|
2028 |
"Connexion."
|
2029 |
|
2030 |
+
#: lib/help.php:162
|
2031 |
msgid ""
|
2032 |
"Note that it will affect only IP addresses written to the firewall log after "
|
2033 |
"enabling this option."
|
2035 |
"Notez que seules les adresses IP enregistrées dans le journal du pare-feu "
|
2036 |
"après avoir activé cette option sont concernées."
|
2037 |
|
2038 |
+
#: lib/help.php:162
|
2039 |
msgid ""
|
2040 |
"Also, if you are redirecting events to the syslog server (NinjaFirewall "
|
2041 |
"<font color=\"#21759B\">WP+</font> Edition), IP addresses will be anonymized "
|
2044 |
"En outre, si vous redirigez les événements vers le serveur syslog, les "
|
2045 |
"adresses IP y seront également anonymisées."
|
2046 |
|
2047 |
+
#: lib/help.php:166
|
2048 |
msgid "Error code and message to return"
|
2049 |
msgstr "Code HTTP et Message à retourner"
|
2050 |
|
2051 |
+
#: lib/help.php:168
|
2052 |
msgid ""
|
2053 |
"Lets you customize the HTTP error code returned by NinjaFirewall when "
|
2054 |
"blocking a dangerous request and the message to display to the user."
|
2057 |
"retourne lorsqu'il bloque une requête dangereuse ansi que le message à "
|
2058 |
"afficher à l'utilisateur bloqué."
|
2059 |
|
2060 |
+
#: lib/help.php:169
|
2061 |
msgid "You can use any HTML tags and 3 built-in variables:"
|
2062 |
msgstr ""
|
2063 |
"Vous pouvez utiliser le language HTML ainsi que les 3 variables suivantes :"
|
2064 |
|
2065 |
+
#: lib/help.php:170
|
2066 |
msgid "the blocked user IP."
|
2067 |
msgstr "l'adresse IP de l'utilisateur."
|
2068 |
|
2069 |
+
#: lib/help.php:171
|
2070 |
msgid ""
|
2071 |
"the unique incident number as it will appear in the firewall log \"INCIDENT"
|
2072 |
"\" column."
|
2074 |
"le numéro d'incident, tel qu'il apparaîtra dans la colonne \"INCIDENT\" du "
|
2075 |
"journal du pare-feu."
|
2076 |
|
2077 |
+
#: lib/help.php:172
|
2078 |
msgid "NinjaFirewall logo."
|
2079 |
msgstr "le logo de NinjaFirewall."
|
2080 |
|
2081 |
+
#: lib/help.php:177
|
2082 |
msgid "Export/import configuration"
|
2083 |
msgstr "Configuration de l'exportation / importation"
|
2084 |
|
2085 |
+
#: lib/help.php:179
|
2086 |
#, php-format
|
2087 |
msgid ""
|
2088 |
"This options lets you export you current configuration or import it from "
|
2095 |
"(%s), sinon il sera rejeté. Notez que l'importation effacera toute votre "
|
2096 |
"configuration (options et règles du pare-feu), sauf votre licence WP+."
|
2097 |
|
2098 |
+
#: lib/help.php:181
|
2099 |
msgid "\"File Check\" configuration will not be exported/imported."
|
2100 |
msgstr ""
|
2101 |
"La configuration de \"File Check\" ne peut pas être importée ou exportée."
|
2102 |
|
2103 |
+
#: lib/help.php:188
|
2104 |
msgid ""
|
2105 |
"NinjaFirewall will automatically backup its configuration (options, policies "
|
2106 |
"and rules) everyday for the last 5 days. If you want to restore its "
|
2111 |
"restaurer sa configuration à une date antérieure, sélectionnez le fichier "
|
2112 |
"correspondant dans la liste."
|
2113 |
|
2114 |
+
#: lib/help.php:202
|
2115 |
#, php-format
|
2116 |
msgid ""
|
2117 |
"Keep in mind, however, that the Firewall Policies apply to any PHP scripts "
|
2122 |
"scripts PHP</b> situés à l'intérieur du répertoire %s ainsi que ses sous-"
|
2123 |
"répertoires, et non pas seulement à la page d'index de WordPress."
|
2124 |
|
2125 |
+
#: lib/help.php:207
|
2126 |
msgid "Policies overview"
|
2127 |
msgstr "Politiques du pare-feu"
|
2128 |
|
2129 |
+
#: lib/help.php:209
|
2130 |
#, php-format
|
2131 |
msgid ""
|
2132 |
"Because NinjaFirewall sits in front of WordPress, it can hook, scan and "
|
2145 |
"adresses IP, avant que celles-ci n'atteignent votre application, que ce soit "
|
2146 |
"en mode HTTP ou HTTPS."
|
2147 |
|
2148 |
+
#: lib/help.php:211
|
2149 |
msgid ""
|
2150 |
"Use the options below to enable, disable or to tweak these rules according "
|
2151 |
"to your needs."
|
2153 |
"Utilisez les options ci-dessous pour configurer NinjaFirewall suivant vos "
|
2154 |
"besoins."
|
2155 |
|
2156 |
+
#: lib/help.php:218
|
2157 |
msgid "Scan and Sanitise"
|
2158 |
msgstr "Filtrer et Nettoyer"
|
2159 |
|
2160 |
+
#: lib/help.php:220
|
2161 |
msgid ""
|
2162 |
"You can choose to scan and reject dangerous content but also to sanitise "
|
2163 |
"requests and variables. Those two actions are different and can be combined "
|
2167 |
"mais aussi de les nettoyer. Ces deux actions sont différentes et peuvent "
|
2168 |
"être combinées pour plus de sécurité."
|
2169 |
|
2170 |
+
#: lib/help.php:221
|
2171 |
msgid ""
|
2172 |
"Scan : if anything suspicious is detected, NinjaFirewall will block the "
|
2173 |
"request and return an HTTP error code and message (defined in the \"Firewall "
|
2179 |
"du Pare-feu\"). La requête ne pourra pas aboutir et la connexion sera fermée "
|
2180 |
"immédiatement."
|
2181 |
|
2182 |
+
#: lib/help.php:222
|
2183 |
#, php-format
|
2184 |
msgid ""
|
2185 |
"Sanitise : this option will not block but sanitise the user request by "
|
2197 |
"HTML correspondantes. S'il s'agit d'une variable et de sa valeur (<code>?"
|
2198 |
"variable=valeur</code>), les deux éléments seront nettoyés."
|
2199 |
|
2200 |
+
#: lib/help.php:224
|
2201 |
msgid ""
|
2202 |
"This action will be performed when the filtering process is over, right "
|
2203 |
"before NinjaFirewall forwards the request to your PHP script."
|
2206 |
"juste avant que NinjaFirewall fasse suivre la requête à votre application "
|
2207 |
"PHP."
|
2208 |
|
2209 |
+
#: lib/help.php:227
|
2210 |
msgid ""
|
2211 |
"If you enabled <code>POST</code> requests sanitising, articles and messages "
|
2212 |
"posted by your visitors could be corrupted with excessive backslashes or "
|
2216 |
"commentaires et messages de vos visiteurs pourraient être endommagés par "
|
2217 |
"cette option."
|
2218 |
|
2219 |
+
#: lib/help.php:239
|
2220 |
msgid "Whether to filter HTTP and/or HTTPS traffic"
|
2221 |
msgstr ""
|
2222 |
"Sélectionnez le type de trafic filtré par le pare-feu (HTTP et/ou HTTPS)."
|
2223 |
|
2224 |
+
#: lib/help.php:242
|
2225 |
msgid "File Uploads:"
|
2226 |
msgstr "Autoriser les téléchargements :"
|
2227 |
|
2228 |
+
#: lib/help.php:242
|
2229 |
msgid "whether to allow/disallow file uploads."
|
2230 |
msgstr ""
|
2231 |
"vous pouvez autoriser ou interdire tout téléchargement de fichiers vers "
|
2232 |
"votre site."
|
2233 |
|
2234 |
+
#: lib/help.php:243
|
2235 |
msgid "Sanitise filenames:"
|
2236 |
msgstr "Nettoyer le nom des fichiers :"
|
2237 |
|
2238 |
+
#: lib/help.php:243
|
2239 |
msgid ""
|
2240 |
"any character that is not a letter <code>a-zA-Z</code>, a digit <code>0-9</"
|
2241 |
"code>, a dot <code>.</code>, a hyphen <code>-</code> or an underscore "
|
2247 |
"d'union <code>-</code> ou un caractère de soulignement <code>_</code>, celui-"
|
2248 |
"si sera remplacé par le caractère de substitution."
|
2249 |
|
2250 |
+
#: lib/help.php:246
|
2251 |
msgid ""
|
2252 |
"Whether to block direct access to PHP files located in specific WordPress "
|
2253 |
"directories."
|
2255 |
"S'il faut bloquer l’accès direct à tout fichier PHP se trouvant dans l'un de "
|
2256 |
"ces répertoires."
|
2257 |
|
2258 |
+
#: lib/help.php:247
|
2259 |
msgid ""
|
2260 |
"enabling this policy will block any attempt (e.g., exploiting a "
|
2261 |
"vulnerability, using a backdoor etc) to modify some important WordPress "
|
2268 |
"enverra également une alerte par e-mail avec tous les détails concernant le "
|
2269 |
"problème. Elle est activée par défaut."
|
2270 |
|
2271 |
+
#: lib/help.php:248
|
2272 |
msgid ""
|
2273 |
"enabling this policy will block any attempt (e.g., exploiting a "
|
2274 |
"vulnerability, using a backdoor etc) to create a user account. If you allow "
|
2279 |
"de création d'un compte d'utilisateur. Si vous autorisez l'inscription des "
|
2280 |
"utilisateurs, vous ne devez pas l'activer."
|
2281 |
|
2282 |
+
#: lib/help.php:249
|
2283 |
#, php-format
|
2284 |
msgid ""
|
2285 |
"many vulnerabilities in plugins are exploited via the admin-ajax.php script. "
|
2293 |
"d’y accéder. L'adresse IP du serveur (%s) et les adresses IP privées ne "
|
2294 |
"seront pas bloquées."
|
2295 |
|
2296 |
+
#: lib/help.php:250
|
2297 |
msgid "Protect against username enumeration:"
|
2298 |
msgstr "Protéger contre l'énumération des comptes utilisateurs :"
|
2299 |
|
2300 |
+
#: lib/help.php:250
|
2301 |
msgid ""
|
2302 |
"it is possible to enumerate usernames either through the WordPress author "
|
2303 |
"archives, the REST API or the login page. Although this is not a "
|
2314 |
"WordPress, certains hackers utilisent ces astuces pour récupérer les noms "
|
2315 |
"d'utilisateur afin de lancer des attaques par force brute plus précises."
|
2316 |
|
2317 |
+
#: lib/help.php:251
|
2318 |
msgid "WordPress REST API:"
|
2319 |
msgstr "API REST de WordPress :"
|
2320 |
|
2321 |
+
#: lib/help.php:251
|
2322 |
msgid ""
|
2323 |
"it allows you to access your WordPress site's data through an easy-to-use "
|
2324 |
"HTTP REST API. Since WordPress 4.7, it is enabled by default. NinjaFirewall "
|
2328 |
"Depuis WordPress 4.7, cette elle est activée par défaut. NinjaFirewall vous "
|
2329 |
"permet de bloquer tout accès a cette API si vous ne l'utilisez pas."
|
2330 |
|
2331 |
+
#: lib/help.php:252
|
2332 |
msgid "WordPress XML-RPC API:"
|
2333 |
msgstr "API XML-RPC de WordPress :"
|
2334 |
|
2335 |
+
#: lib/help.php:252
|
2336 |
msgid ""
|
2337 |
"XML-RPC is a remote procedure call (RPC) protocol which uses XML to encode "
|
2338 |
"its calls and HTTP as a transport mechanism. WordPress has an XMLRPC API "
|
2352 |
"requêtes qui utilisent la méthode <code>system.multicall</code> ou les "
|
2353 |
"Pingbacks."
|
2354 |
|
2355 |
+
#: lib/help.php:253
|
2356 |
msgid ""
|
2357 |
"Block <code>POST</code> requests in the themes folder <code>/wp-content/"
|
2358 |
"themes</code>:"
|
2360 |
"Bloquer les requêtes <code>POST</code> dans le dossier des thèmes <code>/wp-"
|
2361 |
"content/themes</code> :"
|
2362 |
|
2363 |
+
#: lib/help.php:253
|
2364 |
msgid ""
|
2365 |
"this option can be useful to block hackers from installing backdoor in the "
|
2366 |
"PHP theme files. However, because some custom themes may include an HTML "
|
2372 |
"de recherche ou de contact etc) nécessitant des requêtes <code>POST</code> , "
|
2373 |
"cette option n'est pas activée par défaut."
|
2374 |
|
2375 |
+
#: lib/help.php:254
|
2376 |
msgid "Force SSL for admin and logins <code>FORCE_SSL_ADMIN</code>:"
|
2377 |
msgstr ""
|
2378 |
"Forcer la connexion sécurisée au Tableau de bord <code>FORCE_SSL_ADMIN</"
|
2379 |
"code> :"
|
2380 |
|
2381 |
+
#: lib/help.php:254
|
2382 |
msgid ""
|
2383 |
"enable this option when you want to secure logins and the admin area so that "
|
2384 |
"both passwords and cookies are never sent in the clear. Ensure that you can "
|
2390 |
"connexion via HTTPS avant d'activer cette option, sinon vous risquez de "
|
2391 |
"bloquer l’accès à votre site !"
|
2392 |
|
2393 |
+
#: lib/help.php:255
|
2394 |
msgid "Disable the plugin and theme editor <code>DISALLOW_FILE_EDIT</code>:"
|
2395 |
msgstr ""
|
2396 |
"Désactiver l’éditeur de thème et d'extension <code>DISALLOW_FILE_EDIT</"
|
2397 |
"code> :"
|
2398 |
|
2399 |
+
#: lib/help.php:255
|
2400 |
msgid ""
|
2401 |
"disabling the plugin and theme editor provides an additional layer of "
|
2402 |
"security if a hacker gains access to a well-privileged user account."
|
2406 |
"pourrait pas l'utiliser pour insérer une porte dérobée dans l'un de vos "
|
2407 |
"scripts PHP."
|
2408 |
|
2409 |
+
#: lib/help.php:256
|
2410 |
msgid ""
|
2411 |
"Disable plugin and theme update/installation <code>DISALLOW_FILE_MODS</code>:"
|
2412 |
msgstr ""
|
2413 |
"Désactiver l'installation et mise à jour des thèmes et extensions "
|
2414 |
"<code>DISALLOW_FILE_MODS</code> :"
|
2415 |
|
2416 |
+
#: lib/help.php:256
|
2417 |
msgid ""
|
2418 |
"this option will block users being able to use the plugin and theme "
|
2419 |
"installation/update functionality from the WordPress admin area. Setting "
|
2423 |
"installation ou mise à jour d'une extension ou d'un thème. Elle désactive "
|
2424 |
"aussi l’éditeur de thème et d'extension."
|
2425 |
|
2426 |
+
#: lib/help.php:257
|
2427 |
+
msgid ""
|
2428 |
+
"Disable the fatal error handler <code>WP_DISABLE_FATAL_ERROR_HANDLER</code>:"
|
2429 |
msgstr ""
|
2430 |
+
"Désactiver le gestionnaire d'erreurs fatales "
|
2431 |
+
"<code>WP_DISABLE_FATAL_ERROR_HANDLER</code> :"
|
2432 |
|
2433 |
+
#: lib/help.php:257
|
2434 |
msgid ""
|
2435 |
"this option will disable the WSOD protection introduced in WordPress 5.1."
|
2436 |
msgstr ""
|
2437 |
"cette option désactivera la protection WSOD introduite dans WordPress 5.1."
|
2438 |
|
2439 |
+
#: lib/help.php:265
|
2440 |
msgid "Whether to scan and/or sanitise the <code>GET</code> variable."
|
2441 |
msgstr "S'il faut filtrer / nettoyer la variable <code>GET</code>."
|
2442 |
|
2443 |
+
#: lib/help.php:268
|
2444 |
msgid "Whether to scan and/or sanitise the <code>POST</code> variable."
|
2445 |
msgstr "S'il faut filtrer / nettoyer la variable <code>POST</code>."
|
2446 |
|
2447 |
+
#: lib/help.php:269
|
2448 |
msgid "Decode Base64-encoded <code>POST</code> variable:"
|
2449 |
msgstr ""
|
2450 |
"Décoder les chaîne encodées en Base64 dans la variable <code>POST</"
|
2451 |
"code> :"
|
2452 |
|
2453 |
+
#: lib/help.php:269
|
2454 |
msgid ""
|
2455 |
"NinjaFirewall will decode and scan base64 encoded values in order to detect "
|
2456 |
"obfuscated malicious code. This option is only available for the <code>POST</"
|
2459 |
"NinjaFirewall peut décoder et filtrer les chaînes de caractères encodées en "
|
2460 |
"Base64 afin d'y détecter du code malveillant caché."
|
2461 |
|
2462 |
+
#: lib/help.php:272
|
2463 |
msgid "Whether to sanitise the <code>REQUEST</code> variable."
|
2464 |
msgstr "S'il faut filtrer / nettoyer la variable <code>REQUEST</code>."
|
2465 |
|
2466 |
+
#: lib/help.php:275
|
2467 |
msgid "Whether to scan and/or sanitise cookies."
|
2468 |
msgstr "S'il faut filtrer / nettoyer les cookies."
|
2469 |
|
2470 |
+
#: lib/help.php:278
|
2471 |
msgid "Whether to scan and/or sanitise <code>HTTP_USER_AGENT</code> requests."
|
2472 |
msgstr "S'il faut filtrer / nettoyer la variable <code>HTTP_USER_AGENT</code>."
|
2473 |
|
2474 |
+
#: lib/help.php:279
|
2475 |
msgid "Block suspicious bots/scanners:"
|
2476 |
msgstr "Bloquer les requêtes provenant de bots/scanners malveillants :"
|
2477 |
|
2478 |
+
#: lib/help.php:279
|
2479 |
msgid ""
|
2480 |
"rejects some known bots, scanners and various malicious scripts attempting "
|
2481 |
"to access your blog."
|
2482 |
msgstr ""
|
2483 |
"cette option peut bloquer de nombreux crawlers, spambots et autres scrappers."
|
2484 |
|
2485 |
+
#: lib/help.php:282
|
2486 |
msgid "Whether to scan and/or sanitise <code>HTTP_REFERER</code> requests."
|
2487 |
msgstr "S'il faut filtrer / nettoyer la variable <code>HTTP_REFERER</code>."
|
2488 |
|
2489 |
+
#: lib/help.php:283
|
2490 |
msgid ""
|
2491 |
"Block POST requests that do not have an <code>HTTP_REFERER</code> header:"
|
2492 |
msgstr ""
|
2493 |
"Bloquer les requêtes POST qui n'ont pas d'en-tête <code>HTTP_REFERER</"
|
2494 |
"code> :"
|
2495 |
|
2496 |
+
#: lib/help.php:283
|
2497 |
msgid ""
|
2498 |
"this option will block any <code>POST</code> request that does not have a "
|
2499 |
"Referrer header (<code>HTTP_REFERER</code> variable). If you need external "
|
2510 |
"vous utilisez des scripts comme Paypal IPN, WordPress WP-Cron etc, "
|
2511 |
"désactivez cette fonction."
|
2512 |
|
2513 |
+
#: lib/help.php:286
|
2514 |
msgid "Block localhost IP in <code>GET/POST</code> requests:"
|
2515 |
msgstr ""
|
2516 |
"Bloquer les requêtes <code>GET/POST</code> contenant l'IP localhost :"
|
2517 |
|
2518 |
+
#: lib/help.php:286
|
2519 |
msgid ""
|
2520 |
"this option will block any <code>GET</code> or <code>POST</code> request "
|
2521 |
"containing the localhost IP (127.0.0.1). It can be useful to block SQL "
|
2526 |
"les programmes malveillants. Attention toutefois à ne pas bloquer certains "
|
2527 |
"scripts d'installation ou de configuration si vous l'activez. "
|
2528 |
|
2529 |
+
#: lib/help.php:287
|
2530 |
msgid "Block HTTP requests with an IP in the <code>HTTP_HOST</code> header:"
|
2531 |
msgstr ""
|
2532 |
"Bloquer les requêtes HTTP dont l'en-tête <code>HTTP_HOST</code> contient une "
|
2533 |
"IP :"
|
2534 |
|
2535 |
+
#: lib/help.php:287
|
2536 |
#, php-format
|
2537 |
msgid ""
|
2538 |
"this option will reject any request using an IP instead of a domain name in "
|
2548 |
"application trouvent les sites en scannant les plages d'adresses IP plutôt "
|
2549 |
"que les noms de domaine. "
|
2550 |
|
2551 |
+
#: lib/help.php:288
|
2552 |
msgid "Scan traffic coming from localhost and private IP address spaces:"
|
2553 |
msgstr ""
|
2554 |
"Filtrer les connexions provenant de localhost et d'adresses IP privées :"
|
2555 |
|
2556 |
+
#: lib/help.php:288
|
2557 |
msgid ""
|
2558 |
"this option will allow the firewall to scan traffic from all non-routable "
|
2559 |
"private IPs (IPv4 and IPv6) as well as the localhost IP. We recommend to "
|
2564 |
"Nous vous recommandons de le garder activé si vous avez 2 ou plusieurs "
|
2565 |
"serveurs reliés entre eux."
|
2566 |
|
2567 |
+
#: lib/help.php:297
|
2568 |
msgid ""
|
2569 |
"In addition to filtering incoming requests, NinjaFirewall can also hook the "
|
2570 |
"HTTP response in order to alter its headers. Those modifications can help to "
|
2575 |
"peuvent aider à atténuer les menaces telles que les attaques XSS, phishing "
|
2576 |
"et clickjacking."
|
2577 |
|
2578 |
+
#: lib/help.php:299
|
2579 |
msgid ""
|
2580 |
"Set <code>X-Content-Type-Options</code> to protect against MIME type "
|
2581 |
"confusion attacks:"
|
2583 |
"Activer <code>X-Content-Type-Options</code> pour protéger contre les "
|
2584 |
"attaques basées sur la confusion du type MIME :"
|
2585 |
|
2586 |
+
#: lib/help.php:299
|
2587 |
msgid ""
|
2588 |
"this header will send the nosniff value to instruct the browser to disable "
|
2589 |
"content or MIME sniffing and to use the content-type returned by the server. "
|
2598 |
"dans certains cas, peut entraîner des problèmes de sécurité tels que les "
|
2599 |
"attaques basées sur la confusion du type MIME."
|
2600 |
|
2601 |
+
#: lib/help.php:300
|
2602 |
msgid ""
|
2603 |
"Set <code>X-Frame-Options</code> to protect against clickjacking attempts:"
|
2604 |
msgstr ""
|
2605 |
"Activer <code>X-Frame-Options</code> pour protéger contre les attaques de "
|
2606 |
"détournement de clic (clickjacking) :"
|
2607 |
|
2608 |
+
#: lib/help.php:300
|
2609 |
msgid ""
|
2610 |
"this header indicates a policy whether a browser must not allow to render a "
|
2611 |
"page in a <frame> or <iframe>. Hosts can declare this policy in "
|
2619 |
"sont pas intégré dans d'autres pages ou cadres, notamment d'un autre site. "
|
2620 |
"NinjaFirewall accepte deux valeurs différentes :"
|
2621 |
|
2622 |
+
#: lib/help.php:302
|
2623 |
msgid ""
|
2624 |
"a browser receiving content with this header must not display this content "
|
2625 |
"in any frame from a page of different origin than the content itself."
|
2627 |
"un navigateur ne doit pas afficher le contenu dans une <frame> ou <"
|
2628 |
"iframe> d'une page d'origine différente que le contenu lui-même."
|
2629 |
|
2630 |
+
#: lib/help.php:303
|
2631 |
msgid ""
|
2632 |
"a browser receiving content with this header must not display this content "
|
2633 |
"in any frame."
|
2635 |
"un navigateur ne doit jamais afficher le contenu dans une <frame> ou "
|
2636 |
"<iframe>"
|
2637 |
|
2638 |
+
#: lib/help.php:306
|
2639 |
msgid "NinjaFirewall does not support the <code>ALLOW-FROM</code> value."
|
2640 |
msgstr ""
|
2641 |
"La valeur <code>ALLOW-FROM</code> n'est pas prise en charge par "
|
2642 |
"NinjaFirewall."
|
2643 |
|
2644 |
+
#: lib/help.php:308
|
2645 |
msgid ""
|
2646 |
"Since v3.1.3, WordPress sets this value to <code>SAMEORIGIN</code> for the "
|
2647 |
"administrator and the login page only."
|
2649 |
"Depuis la version 3.1.3, WordPress active <code>SAMEORIGIN</code> pour "
|
2650 |
"l'administrateur et la page de connexion uniquement."
|
2651 |
|
2652 |
+
#: lib/help.php:309
|
2653 |
msgid ""
|
2654 |
"Set <code>X-XSS-Protection</code> (IE/Edge, Chrome, Opera and Safari "
|
2655 |
"browsers):"
|
2656 |
msgstr ""
|
2657 |
"Activer <code>X-XSS-Protection</code> (IE/Edge, Opera, Chrome et Safari)"
|
2658 |
|
2659 |
+
#: lib/help.php:309
|
2660 |
msgid ""
|
2661 |
"this header allows browsers to identify and block XSS attacks by preventing "
|
2662 |
"malicious scripts from executing. It is enabled by default on all compatible "
|
2666 |
"attaques XSS en empêchant un script malveillant de s'exécuter. Notez que "
|
2667 |
"cette option est activée par défaut sur ces navigateurs."
|
2668 |
|
2669 |
+
#: lib/help.php:310
|
2670 |
msgid ""
|
2671 |
"If a visitor disabled their browser's XSS filter, you cannot re-enable it "
|
2672 |
"with that option."
|
2674 |
"Si un visiteur désactive le filtre XSS de son navigateur, vous ne pouvez pas "
|
2675 |
"le réactiver avec cette option."
|
2676 |
|
2677 |
+
#: lib/help.php:312
|
2678 |
msgid ""
|
2679 |
"Force <code>HttpOnly</code> flag on all cookies to mitigate XSS attacks:"
|
2680 |
msgstr ""
|
2681 |
"Activer la propriété <code>HttpOnly</code> pour tous les cookies afin "
|
2682 |
"d'atténuer les menaces XSS qui génèrent des vols de cookies :"
|
2683 |
|
2684 |
+
#: lib/help.php:312
|
2685 |
msgid ""
|
2686 |
"adding this flag to cookies helps to mitigate the risk of cross-site "
|
2687 |
"scripting by preventing them from being accessed through client-side "
|
2698 |
"dans la réponse HTTP juste avant que celle-ci ne soit envoyée à vos "
|
2699 |
"visiteurs."
|
2700 |
|
2701 |
+
#: lib/help.php:313
|
2702 |
msgid ""
|
2703 |
"If your PHP scripts send cookies that need to be accessed from JavaScript, "
|
2704 |
"you should keep that option disabled."
|
2706 |
"Si vos scripts PHP envoient des cookies qui doivent être accessibles à "
|
2707 |
"partir de JavaScript, vous devez garder cette option désactivée."
|
2708 |
|
2709 |
+
#: lib/help.php:314
|
2710 |
msgid ""
|
2711 |
"Set <code>Strict-Transport-Security</code> (HSTS) to enforce secure "
|
2712 |
"connections to the server:"
|
2714 |
"Activer <code>Strict-Transport-Security</code> (HSTS) pour forcer les "
|
2715 |
"connexions sécurisées vers le serveur "
|
2716 |
|
2717 |
+
#: lib/help.php:314
|
2718 |
msgid ""
|
2719 |
"this policy enforces secure HTTPS connections to the server. Web browsers "
|
2720 |
"will not allow the user to access the web application over insecure HTTP "
|
2727 |
"de cookies ou les attaques du type \"Man-in-the-middle\". La plupart des "
|
2728 |
"navigateurs récents sont compatibles avec cette politique."
|
2729 |
|
2730 |
+
#: lib/help.php:315
|
2731 |
msgid "Set <code>Content-Security-Policy</code>:"
|
2732 |
msgstr "Activer <code>Content-Security-Policy</code> :"
|
2733 |
|
2734 |
+
#: lib/help.php:315
|
2735 |
msgid ""
|
2736 |
"this policy helps to mitigate threats such as XSS, phishing and clickjacking "
|
2737 |
"attacks. It covers JavaScript, CSS, HTML frames, web workers, fonts, images, "
|
2741 |
"code JavaScript, les styles CSS, frames/iframes HTML, polices, images, "
|
2742 |
"objets (Java, ActiveX, fichiers audio et video), mais aussi les WebSocket."
|
2743 |
|
2744 |
+
#: lib/help.php:315
|
2745 |
msgid ""
|
2746 |
"NinjaFirewall lets you configure the CSP policy separately for the frontend "
|
2747 |
"(blog, website) and the backend (WordPress admin dashboard)."
|
2749 |
"NinjaFirewall vous permet de configurer CSP séparément pour le site et "
|
2750 |
"l'interface d'administration de WordPress."
|
2751 |
|
2752 |
+
#: lib/help.php:316
|
2753 |
msgid "Set <code>Referrer-Policy</code>:"
|
2754 |
msgstr "Activer <code>Referrer-Policy</code> :"
|
2755 |
|
2756 |
+
#: lib/help.php:316
|
2757 |
msgid ""
|
2758 |
"this HTTP header governs which referrer information, sent in the Referer "
|
2759 |
"header, should be included with requests made."
|
2761 |
"cet en-tête HTTP détermine quelles informations de provenance doivent être "
|
2762 |
"incluses dans l'en-tête Referer."
|
2763 |
|
2764 |
+
#: lib/help.php:320
|
2765 |
msgid "Block PHP built-in wrappers:"
|
2766 |
msgstr "Bloquer les gestionnaires (wrappers) PHP dangereux :"
|
2767 |
|
2768 |
+
#: lib/help.php:320
|
2769 |
msgid ""
|
2770 |
"PHP has several wrappers for use with the filesystem functions. It is "
|
2771 |
"possible for an attacker to use them to bypass firewalls and various IDS to "
|
2785 |
"requête <code>GET</code> ou <code>POST</code>, des cookies, ou dans les "
|
2786 |
"variables <code>HTTP_REFERER</code> et <code>HTTP_USER_AGENT</code>."
|
2787 |
|
2788 |
+
#: lib/help.php:321
|
2789 |
msgid "Block serialized PHP objects:"
|
2790 |
msgstr "Bloquer les objets PHP sérialisés :"
|
2791 |
|
2792 |
+
#: lib/help.php:321
|
2793 |
#, php-format
|
2794 |
msgid ""
|
2795 |
"Object Serialization is a PHP feature used by many applications to generate "
|
2808 |
"<code>POST</code>, les cookies, ou dans les variables <code>HTTP_REFERER</"
|
2809 |
"code> et <code>HTTP_USER_AGENT</code>."
|
2810 |
|
2811 |
+
#: lib/help.php:322
|
2812 |
msgid "Hide PHP notice and error messages:"
|
2813 |
msgstr "Masquer les messages d'erreur de PHP :"
|
2814 |
|
2815 |
+
#: lib/help.php:322
|
2816 |
msgid ""
|
2817 |
"this option lets you hide errors returned by your scripts. Such errors can "
|
2818 |
"leak sensitive informations which can be exploited by hackers."
|
2821 |
"afficher des informations sensibles qui peuvent être exploitées "
|
2822 |
"ultérieurement par des pirates."
|
2823 |
|
2824 |
+
#: lib/help.php:323
|
2825 |
msgid ""
|
2826 |
"Sanitise <code>PHP_SELF</code>, <code>PATH_TRANSLATED</code>, "
|
2827 |
"<code>PATH_INFO</code>:"
|
2829 |
"Nettoyer <code>PHP_SELF</code>, <code>PATH_TRANSLATED</code>, "
|
2830 |
"<code>PATH_INFO</code> :"
|
2831 |
|
2832 |
+
#: lib/help.php:323
|
2833 |
msgid ""
|
2834 |
"this option can sanitise any dangerous characters found in those 3 server "
|
2835 |
"variables to prevent various XSS and database injection attempts."
|
2837 |
"activez ces options si vous souhaitez que le pare-feu nettoie ces trois "
|
2838 |
"variables."
|
2839 |
|
2840 |
+
#: lib/help.php:326
|
2841 |
#, php-format
|
2842 |
msgid ""
|
2843 |
"Block the <code>DOCUMENT_ROOT</code> server variable (%s) in HTTP requests:"
|
2845 |
"Bloquer les requêtes HTTP contenant la variable <code>DOCUMENT_ROOT</code> "
|
2846 |
"(%s) :"
|
2847 |
|
2848 |
+
#: lib/help.php:326
|
2849 |
msgid ""
|
2850 |
"this option will block scripts attempting to pass the <code>DOCUMENT_ROOT</"
|
2851 |
"code> server variable in a <code>GET</code> or <code>POST</code> request. "
|
2858 |
"cette variable, mais pas la plupart des applications légitimes (hormis "
|
2859 |
"certains scripts d'installation ou de configuration)."
|
2860 |
|
2861 |
+
#: lib/help.php:327
|
2862 |
msgid "Block ASCII character 0x00 (NULL byte):"
|
2863 |
msgstr "Bloquer le caractère ASCII 0x00 (NULL byte) :"
|
2864 |
|
2865 |
+
#: lib/help.php:327
|
2866 |
msgid ""
|
2867 |
"this option will reject any <code>GET</code> or <code>POST</code> request, "
|
2868 |
"<code>HTTP_USER_AGENT</code>, <code>REQUEST_URI</code>, <code>PHP_SELF</"
|
2876 |
"contenant le caractère ASCI 0x00 (NULL byte) sera bloquée immédiatement. Ce "
|
2877 |
"caractère est dangereux et devrait toujours être rejeté."
|
2878 |
|
2879 |
+
#: lib/help.php:328
|
2880 |
msgid "Block ASCII control characters 1 to 8 and 14 to 31:"
|
2881 |
msgstr "Bloquer les caractères de contrôle ASCII 1 à 8 et 14 à 31 :"
|
2882 |
|
2883 |
+
#: lib/help.php:328
|
2884 |
msgid ""
|
2885 |
"this option will reject any <code>GET</code> or <code>POST</code> request, "
|
2886 |
"<code>HTTP_USER_AGENT</code>, <code>HTTP_REFERER</code> variables containing "
|
2890 |
"variable <code>HTTP_USER_AGENT</code>, <code>HTTP_REFERER</code> contenant "
|
2891 |
"des caractères ASCII 1 à 8 et 14 à 31 sera bloquée."
|
2892 |
|
2893 |
+
#: lib/help.php:336
|
2894 |
#, php-format
|
2895 |
msgid ""
|
2896 |
"By default, any logged in WordPress administrator will not be blocked by "
|
2910 |
"les options de la <a href=\"%s\">Page de Connexion</a> qui, si elle sont "
|
2911 |
"activées, seront toujours appliquées."
|
2912 |
|
2913 |
+
#: lib/help.php:350
|
2914 |
msgid ""
|
2915 |
"File Guard can detect, in real-time, any access to a PHP file that was "
|
2916 |
"recently modified or created, and alert you about this."
|
2918 |
"File Guard peut détecter, en temps réel, tout accès à un fichier PHP qui a "
|
2919 |
"été récemment modifié ou créé, et vous alerter à ce sujet."
|
2920 |
|
2921 |
+
#: lib/help.php:352
|
2922 |
msgid ""
|
2923 |
"If a hacker uploaded a shell script to your site (or injected a backdoor "
|
2924 |
"into an already existing file) and tried to directly access that file using "
|
2937 |
"envoyées à l'adresse e-mail de contact définie dans le menu \"Notifications "
|
2938 |
"d’Événement\"."
|
2939 |
|
2940 |
+
#: lib/help.php:353
|
2941 |
msgid ""
|
2942 |
"If you do not want to monitor a folder, you can exclude its full path or a "
|
2943 |
"part of it (e.g., <code>/var/www/public_html/cache/</code> or <code>/cache/</"
|
2951 |
"variable <code>$_SERVER[\"SCRIPT_FILENAME\"]</code> et, si elle correspond, "
|
2952 |
"l'ignorera."
|
2953 |
|
2954 |
+
#: lib/help.php:354
|
2955 |
msgid ""
|
2956 |
"Multiple values must be comma-separated (e.g., <code>/foo/bar/,/cache/</"
|
2957 |
"code>)."
|
2959 |
"Plusieurs valeurs doivent être séparées par des virgules (par ex. <code>/foo/"
|
2960 |
"bar/,/cache/</code>)."
|
2961 |
|
2962 |
+
#: lib/help.php:355
|
2963 |
msgid ""
|
2964 |
"File Guard real-time detection is a totally unique feature, because "
|
2965 |
"NinjaFirewall is the only plugin for WordPress that can hook HTTP requests "
|
2971 |
"intercepter les requêtes HTTP envoyées à tout script PHP, même si ce dernier "
|
2972 |
"ne fait pas partie de WordPress (logiciel tiers, backdoor, etc)."
|
2973 |
|
2974 |
+
#: lib/help.php:364 lib/network.php:32 ninjafirewall.php:751
|
2975 |
msgid "Network"
|
2976 |
msgstr "Réseau"
|
2977 |
|
2978 |
+
#: lib/help.php:366
|
2979 |
msgid ""
|
2980 |
"Even if NinjaFirewall administration menu is only available to the Super "
|
2981 |
"Admin (from the main site), you can still display its status to all sites in "
|
2987 |
"du réseau en ajoutant une petite icône à leur barre d'administration. Elle "
|
2988 |
"ne sera visible que par les administrateurs de ces sites."
|
2989 |
|
2990 |
+
#: lib/help.php:368
|
2991 |
msgid ""
|
2992 |
"It is recommended to enable this feature as it is the only way to know "
|
2993 |
"whether the sites in your network are protected and if NinjaFirewall "
|
2997 |
"si les sites de votre réseau sont protégés et si l'installation de "
|
2998 |
"NinjaFirewall a réussi."
|
2999 |
|
3000 |
+
#: lib/help.php:370
|
3001 |
msgid ""
|
3002 |
"Note that when it is disabled, the icon still remains visible to you, the "
|
3003 |
"Super Admin."
|
3005 |
"Notez que même lorsqu'il est désactivé, l'icône reste visible pour vous, le "
|
3006 |
"Super Administrateur."
|
3007 |
|
3008 |
+
#: lib/help.php:381
|
3009 |
msgid ""
|
3010 |
"File Check lets you perform file integrity monitoring upon request or on a "
|
3011 |
"specific interval."
|
3013 |
"File Check vous permet d'effectuer une analyse de l'intégrité de vos "
|
3014 |
"fichiers sur demande ou à un intervalle spécifique défini."
|
3015 |
|
3016 |
+
#: lib/help.php:383
|
3017 |
msgid ""
|
3018 |
"You need to create a snapshot of all your files and then, at a later time, "
|
3019 |
"you can scan your system to compare it with the previous snapshot. Any "
|
3026 |
"permissions et propriétés des fichiers, leur création et suppression ainsi "
|
3027 |
"que l'horodatage."
|
3028 |
|
3029 |
+
#: lib/help.php:384
|
3030 |
#, php-format
|
3031 |
msgid ""
|
3032 |
"Create a snapshot of all files stored in that directory: by default, the "
|
3036 |
"répertoire : par défaut, le repertoire est l'<code>ABSPATH</code> de "
|
3037 |
"WordPress (%s)"
|
3038 |
|
3039 |
+
#: lib/help.php:385
|
3040 |
msgid ""
|
3041 |
"Exclude the following files/folders: you can enter a directory or a file "
|
3042 |
"name (e.g., <code>/foo/bar/</code>), or a part of it (e.g., <code>foo</"
|
3047 |
"partie de celui-ci (par ex. <code>foo</code>), ou même exclure une extension "
|
3048 |
"de fichier (par ex. <code>.css</code>)."
|
3049 |
|
3050 |
+
#: lib/help.php:387
|
3051 |
msgid ""
|
3052 |
"Multiple values must be comma-separated (e.g., <code>/foo/bar/,.css,.png</"
|
3053 |
"code>)."
|
3055 |
"Plusieurs valeurs doivent être séparées par des virgules (par ex. <code>/foo/"
|
3056 |
"bar/,.css,.png</code>)."
|
3057 |
|
3058 |
+
#: lib/help.php:388
|
3059 |
msgid ""
|
3060 |
"Do not follow symbolic links: by default, NinjaFirewall will not follow "
|
3061 |
"symbolic links."
|
3063 |
"Ne pas suivre les liens symboliques : par défaut, NinjaFirewall ignore "
|
3064 |
"les liens symboliques lors de son analyse des fichiers."
|
3065 |
|
3066 |
+
#: lib/help.php:393
|
3067 |
msgid "Scheduled scans"
|
3068 |
msgstr "Analyses planifiées"
|
3069 |
|
3070 |
+
#: lib/help.php:394
|
3071 |
msgid ""
|
3072 |
"NinjaFirewall can scan your system on a specific interval (hourly, "
|
3073 |
"twicedaily or daily)."
|
3075 |
"NinjaFirewall peut scanner votre système à intervalle régulier (une fois par "
|
3076 |
"heure, deux fois par jour ou tous les jours)."
|
3077 |
|
3078 |
+
#: lib/help.php:396
|
3079 |
msgid ""
|
3080 |
"It can either send you a scan report only if changes are detected, or always "
|
3081 |
"send you one after each scan."
|
3084 |
"été détectés, ou bien vous en envoyer un systématiquement après chaque "
|
3085 |
"analyse."
|
3086 |
|
3087 |
+
#: lib/help.php:398
|
3088 |
msgid ""
|
3089 |
"Reports will be sent to the contact email address defined in the \"Event "
|
3090 |
"Notifications\" menu."
|
3092 |
"Les rapports seront envoyés à l'adresse e-mail définie dans la page "
|
3093 |
"\"Notifications d'Événement\"."
|
3094 |
|
3095 |
+
#: lib/help.php:400
|
3096 |
#, php-format
|
3097 |
msgid ""
|
3098 |
"Scheduled scans rely on <a href=\"%s\">WordPress pseudo cron</a> which works "
|
3101 |
"Les analyses planifiées utilisent le <a href=\"%s\">pseudo cron de "
|
3102 |
"WordPress</a> qui ne fonctionne que si votre site reçoit un trafic suffisant."
|
3103 |
|
3104 |
+
#: lib/help.php:414
|
3105 |
msgid ""
|
3106 |
"NinjaFirewall can alert you by email on specific events triggered within "
|
3107 |
"your blog. They include installations, updates, activations etc, as well as "
|
3120 |
"après avoir pénétré dans votre Tableau de bord de WordPress, d'y installer "
|
3121 |
"une porte dérobée (backdoor) afin de prendre le contrôle de votre blog."
|
3122 |
|
3123 |
+
#: lib/help.php:425 lib/login_protection.php:21 ninjafirewall.php:759
|
3124 |
msgid "Login Protection"
|
3125 |
msgstr "Page de Connexion"
|
3126 |
|
3127 |
+
#: lib/help.php:429
|
3128 |
msgid ""
|
3129 |
"By processing incoming HTTP requests before your blog and any of its "
|
3130 |
"plugins, NinjaFirewall is the only plugin for WordPress able to protect it "
|
3137 |
"compris les attaques distribuées provenant de plusieurs milliers d'adresses "
|
3138 |
"IP différentes."
|
3139 |
|
3140 |
+
#: lib/help.php:431
|
3141 |
msgid ""
|
3142 |
"You can choose two different types of protection: a password or a captcha. "
|
3143 |
"You can enable the protection only if an attack is detected or to keep it "
|
3147 |
"captcha. Vous pouvez choisir d'activer la protection uniquement lorsqu'une "
|
3148 |
"attaque est détectée ou bien l'activer en permanence."
|
3149 |
|
3150 |
+
#: lib/help.php:433
|
3151 |
msgid "Yes, if under attack:"
|
3152 |
msgstr "Oui, si attaque en cours :"
|
3153 |
|
3154 |
+
#: lib/help.php:435
|
3155 |
msgid ""
|
3156 |
"The protection will be triggered when too many login attempts are detected, "
|
3157 |
"regardless of the offending IP. It blocks the attack instantly and prevents "
|
3166 |
"utilisant soit une combinaison nom d'utilisateur / mot de passe prédéfinie, "
|
3167 |
"soit un code captcha."
|
3168 |
|
3169 |
+
#: lib/help.php:437
|
3170 |
msgid "Always ON:"
|
3171 |
msgstr "Toujours activée :"
|
3172 |
|
3173 |
+
#: lib/help.php:439
|
3174 |
msgid ""
|
3175 |
"NinjaFirewall will always enforce the HTTP authentication or captcha "
|
3176 |
"implementation each time you access the login page."
|
3178 |
"Vous serez toujours invité à saisir votre nom d'utilisateur / mot de passe, "
|
3179 |
"ou le code du captcha, chaque fois que vous accéderez à la page de connexion."
|
3180 |
|
3181 |
+
#: lib/help.php:442
|
3182 |
msgid "Type of protection:"
|
3183 |
msgstr "Type de protection :"
|
3184 |
|
3185 |
+
#: lib/help.php:443
|
3186 |
msgid ""
|
3187 |
"<b>Password:</b> It password-protects the login page. NinjaFirewall uses its "
|
3188 |
"own very fast authentication scheme and it is compatible with any HTTP "
|
3192 |
"utilise son propre système d'authentification, rapide et compatible avec "
|
3193 |
"n'importe quel serveur HTTP (Apache, Nginx, Lighttpd etc)."
|
3194 |
|
3195 |
+
#: lib/help.php:444
|
3196 |
msgid "<b>Captcha:</b> It will display a 5-character captcha code."
|
3197 |
msgstr "<b>Captcha :</b> Affichera un code captcha à 5 caractères."
|
3198 |
|
3199 |
+
#: lib/help.php:445
|
3200 |
msgid "Bot protection:"
|
3201 |
msgstr "Protection contre les bots :"
|
3202 |
|
3203 |
+
#: lib/help.php:446
|
3204 |
msgid ""
|
3205 |
"NinjaFirewall will attempt to block bots and scripts immediately, i.e., even "
|
3206 |
"before they start a brute-force attack."
|
3208 |
"NinjaFirewall tentera de bloquer les bots et les scripts immédiatement, "
|
3209 |
"c'est-à-dire avant même qu'ils ne commencent une attaque par force brute."
|
3210 |
|
3211 |
+
#: lib/help.php:454
|
3212 |
msgid "AUTH log"
|
3213 |
msgstr "Journal d'authentification"
|
3214 |
|
3215 |
+
#: lib/help.php:457
|
3216 |
msgid ""
|
3217 |
"NinjaFirewall can write to the server Authentication log when the brute-"
|
3218 |
"force protection is triggered. This can be useful to the system "
|
3224 |
"surveillance ou pour bloquer l'IP incriminée au niveau du pare-feu du "
|
3225 |
"serveur."
|
3226 |
|
3227 |
+
#: lib/help.php:459
|
3228 |
msgid ""
|
3229 |
"If you have a shared hosting account, keep this option disabled as you do "
|
3230 |
"not have any access to the server's logs."
|
3232 |
"Si vous avez un hébergement mutualisé, laissez cette option désactivée car "
|
3233 |
"vous n'avez pas accès aux journaux du serveur."
|
3234 |
|
3235 |
+
#: lib/help.php:461
|
3236 |
msgid ""
|
3237 |
"On Debian-based systems, the log is located in <code>/var/log/auth.log</"
|
3238 |
"code>, and on Red Hat-based systems in <code>/var/log/secure</code>. The "
|
3242 |
"sous Red Hat, dans <code>/var/log/secure</code>. Le format utilisé est le "
|
3243 |
"suivant :"
|
3244 |
|
3245 |
+
#: lib/help.php:464
|
3246 |
msgid "AA: the process ID (PID)."
|
3247 |
msgstr "AA : l'identifiant de processus (PID)."
|
3248 |
|
3249 |
+
#: lib/help.php:465
|
3250 |
msgid "BB: the user IPv4 or IPv6 address."
|
3251 |
msgstr "BB : L'adresse IPv4 ou IPv6 de l'utilisateur."
|
3252 |
|
3253 |
+
#: lib/help.php:466
|
3254 |
msgid "CC: the blog (sub-)domain name."
|
3255 |
msgstr "CC : le nom de (sous-)domaine du blog."
|
3256 |
|
3257 |
+
#: lib/help.php:467
|
3258 |
msgid ""
|
3259 |
"DD: the target: it can be either <code>wp-login.php</code> or <code>XML-RPC "
|
3260 |
"API</code>."
|
3262 |
"DD : la cible; il peut s'agir soit de <code>wp-login.php</code>, soit de "
|
3263 |
"<code>XML-RPC API</code>."
|
3264 |
|
3265 |
+
#: lib/help.php:468
|
3266 |
msgid "EE: the time, in minutes, the protection will remain active."
|
3267 |
msgstr ""
|
3268 |
"EE : le temps, en minutes, pendant lequel la protection restera active."
|
3269 |
|
3270 |
+
#: lib/help.php:470
|
3271 |
msgid "Sample loglines:"
|
3272 |
msgstr "Exemple :"
|
3273 |
|
3274 |
+
#: lib/help.php:473
|
3275 |
#, php-format
|
3276 |
msgid ""
|
3277 |
"Be careful if you are behind a load balancer, reverse-proxy or CDN because "
|
3291 |
"Alternativement, vous pouvez utiliser le fichier <code><a href=\"%s\">."
|
3292 |
"htninja</a></code>."
|
3293 |
|
3294 |
+
#: lib/help.php:489
|
3295 |
msgid ""
|
3296 |
"The firewall log displays blocked and sanitised requests as well as some "
|
3297 |
"useful information. It has 6 columns:"
|
3299 |
"Le journal du pare-feu affiche les requêtes HTTP qui ont été bloquées ou "
|
3300 |
"nettoyées ainsi que d'autres informations utiles. Il a six colonnes :"
|
3301 |
|
3302 |
+
#: lib/help.php:490
|
3303 |
msgid "DATE : date and time of the incident."
|
3304 |
msgstr "DATE : date et heure de l'incident."
|
3305 |
|
3306 |
+
#: lib/help.php:491
|
3307 |
msgid ""
|
3308 |
"INCIDENT : unique incident number/ID as it was displayed to the blocked user."
|
3309 |
msgstr ""
|
3310 |
"INCIDENT : le numéro d'incident (ID) unique. Par défaut, il sera aussi "
|
3311 |
"affiché à l'utilisateur dont la requête aura été bloquée par le pare-feu."
|
3312 |
|
3313 |
+
#: lib/help.php:492
|
3314 |
msgid ""
|
3315 |
"LEVEL : level of severity (<code>CRITICAL</code>, <code>HIGH</code> or "
|
3316 |
"<code>MEDIUM</code>), information (<code>INFO</code>, <code>UPLOAD</code>) "
|
3320 |
"<code>MEDIUM</code>), information (<code>INFO</code>, <code>UPLOAD</code>) "
|
3321 |
"et mode débogage (<code>DEBUG_ON</code>)."
|
3322 |
|
3323 |
+
#: lib/help.php:493
|
3324 |
msgid ""
|
3325 |
"RULE : reference of the NinjaFirewall built-in security rule that triggered "
|
3326 |
"the action. A hyphen (<code>-</code>) instead of a number means it was a "
|
3331 |
"d'un numéro signifie que la règle provient de votre configuration "
|
3332 |
"personnelle de la page \"Politiques du Pare-feu\"."
|
3333 |
|
3334 |
+
#: lib/help.php:494
|
3335 |
msgid "IP : the user IPv4 or IPv6 address."
|
3336 |
msgstr "BB : L'adresse IPv4 ou IPv6 de l'utilisateur."
|
3337 |
|
3338 |
+
#: lib/help.php:495
|
3339 |
msgid ""
|
3340 |
"REQUEST : the HTTP request including offending variables and values as well "
|
3341 |
"as the reason the action was logged."
|
3343 |
"REQUEST : la requête HTTP avec ses variables et valeurs, ainsi que la raison "
|
3344 |
"qui a déclenché l'incident."
|
3345 |
|
3346 |
+
#: lib/help.php:502
|
3347 |
msgid ""
|
3348 |
"This options lets you configure NinjaFirewall to delete its old logs "
|
3349 |
"automatically. By default, logs are never deleted, <b>even when uninstall "
|
3356 |
"cette valeur à <code>0</code> si vous ne voulez pas supprimer les anciens "
|
3357 |
"journaux."
|
3358 |
|
3359 |
+
#: lib/help.php:510
|
3360 |
msgid ""
|
3361 |
"Centralized Logging lets you remotely access the firewall log of all your "
|
3362 |
"NinjaFirewall protected websites from one single installation. You do not "
|
3367 |
"NinjaFirewall. Vous n'avez plus besoin de vous connecter à chaque site pour "
|
3368 |
"analyser vos journaux."
|
3369 |
|
3370 |
+
#: lib/help.php:510
|
3371 |
#, php-format
|
3372 |
msgid "<a href=\"%s\">Consult our blog</a> for more info about it."
|
3373 |
msgstr ""
|
3374 |
"<a href=\"%s\">Consultez notre blog pour plus d'informations à ce sujet</a>."
|
3375 |
|
3376 |
+
#: lib/help.php:511
|
3377 |
msgid ""
|
3378 |
"Enter your public key (optional): This is the public key that was created "
|
3379 |
"from your main server."
|
3381 |
"Entrez votre clé publique (optionnel) : Il s'agit de la clé qui a été créée "
|
3382 |
"depuis le serveur principal."
|
3383 |
|
3384 |
+
#: lib/help.php:514
|
3385 |
msgid ""
|
3386 |
"Centralized Logging will keep working even if NinjaFirewall is disabled. "
|
3387 |
"Delete your public key below if you want to disable it."
|
3390 |
"NinjaFirewall. Si vous souhaitez complètement désactiver cette option, "
|
3391 |
"supprimez votre clé publique ci-dessous. "
|
3392 |
|
3393 |
+
#: lib/help.php:536 lib/live_log.php:37 lib/live_log.php:75
|
3394 |
+
#: ninjafirewall.php:767
|
3395 |
msgid "Live Log"
|
3396 |
msgstr "Live Log"
|
3397 |
|
3398 |
+
#: lib/help.php:538
|
3399 |
msgid ""
|
3400 |
"Live Log lets you watch your blog traffic in real time, just like the Unix "
|
3401 |
"<code>tail -f</code> command. Note that requests sent to static elements "
|
3407 |
"statiques comme les fichiers JS/CSS ou les images ne sont pas traitées par "
|
3408 |
"NinjaFirewall."
|
3409 |
|
3410 |
+
#: lib/help.php:540
|
3411 |
msgid ""
|
3412 |
"You can enable/disable the monitoring process, change the refresh rate, "
|
3413 |
"clear the screen, enable automatic vertical scrolling, change the log "
|
3418 |
"effacer l'écran, changer le format d'affichage, le fuseau horaire et choisir "
|
3419 |
"le type de trafic à visualiser (HTTP/HTTPS)."
|
3420 |
|
3421 |
+
#: lib/help.php:540
|
3422 |
msgid ""
|
3423 |
"You can also apply filters to include or exclude files and folders "
|
3424 |
"(REQUEST_URI)."
|
3426 |
"Vous pouvez également appliquer des filtres pour inclure ou exclure des "
|
3427 |
"fichiers et des dossiers (REQUEST_URI)."
|
3428 |
|
3429 |
+
#: lib/help.php:543
|
3430 |
msgid ""
|
3431 |
"Live Log does not make use of any WordPress core file (e.g., <code>admin-"
|
3432 |
"ajax.php</code>). It communicates directly with the firewall without loading "
|
3440 |
"serveur, même si vous ajustez son intervalle de rafraîchissement de la page "
|
3441 |
"sur la fréquence la plus rapide (5 secondes)."
|
3442 |
|
3443 |
+
#: lib/help.php:545
|
3444 |
msgid ""
|
3445 |
"If you are using the optional <code>.htninja</code> configuration file to "
|
3446 |
"whitelist your IP, the Live Log feature will not work."
|
3449 |
"pour toujours accepter les requêtes provenant de votre adresse IP, Live Log "
|
3450 |
"ne fonctionnera pas."
|
3451 |
|
3452 |
+
#: lib/help.php:550
|
3453 |
msgid "Log Format"
|
3454 |
msgstr "Format d'affichage"
|
3455 |
|
3456 |
+
#: lib/help.php:551
|
3457 |
msgid "You can easily customize the log format. Possible values are:"
|
3458 |
msgstr ""
|
3459 |
"Vous pouvez facilement changer le format d'affichage en combinant une ou "
|
3460 |
"plusieurs des valeurs suivantes :"
|
3461 |
|
3462 |
+
#: lib/help.php:552
|
3463 |
msgid "<code>%time</code>: the server date, time and timezone."
|
3464 |
msgstr "<code>%time</code> : la date, heure et fuseau horaire du serveur."
|
3465 |
|
3466 |
+
#: lib/help.php:553
|
3467 |
msgid "<code>%name</code>: authenticated user (HTTP basic auth), if any."
|
3468 |
msgstr ""
|
3469 |
"<code>%name</code> : le nom de l'utilisateur (Authentification HTTP), s'il "
|
3470 |
"existe."
|
3471 |
|
3472 |
+
#: lib/help.php:554
|
3473 |
#, php-format
|
3474 |
msgid ""
|
3475 |
"<code>%client</code>: the client REMOTE_ADDR. If you are behind a load "
|
3479 |
"serveur est derrière un CDN ou un proxy, cette variable retournera l'adresse "
|
3480 |
"IP de celui-ci."
|
3481 |
|
3482 |
+
#: lib/help.php:555
|
3483 |
msgid "<code>%method</code>: HTTP method (e.g., GET, POST)."
|
3484 |
msgstr "<code>%method</code> : la méthode HTTP (ex. GET, POST)."
|
3485 |
|
3486 |
+
#: lib/help.php:556
|
3487 |
#, php-format
|
3488 |
msgid ""
|
3489 |
"<code>%uri</code>: the URI which was given in order to access the page "
|
3490 |
"(REQUEST_URI)."
|
3491 |
msgstr "<code>%uri</code> : l'URI donnée pour accéder à la page (REQUEST_URI)."
|
3492 |
|
3493 |
+
#: lib/help.php:557
|
3494 |
msgid "<code>%referrer</code>: the referrer (HTTP_REFERER), if any."
|
3495 |
msgstr "<code>%referrer</code> : le referrer (HTTP_REFERER), s'il existe."
|
3496 |
|
3497 |
+
#: lib/help.php:558
|
3498 |
#, php-format
|
3499 |
msgid "<code>%ua</code>: the user-agent (HTTP_USER_AGENT), if any."
|
3500 |
msgstr ""
|
3501 |
"<code>%ua</code> : l'en-tête User-Agent (HTTP_USER_AGENT), s'il existe."
|
3502 |
|
3503 |
+
#: lib/help.php:559
|
3504 |
#, php-format
|
3505 |
msgid ""
|
3506 |
"<code>%forward</code>: HTTP_X_FORWARDED_FOR, if any. If you are behind a "
|
3510 |
"votre serveur est derrière un CDN ou un proxy, cette variable retournera "
|
3511 |
"l'adresse réelle du client."
|
3512 |
|
3513 |
+
#: lib/help.php:560
|
3514 |
msgid "<code>%host</code>: the requested host (HTTP_HOST), if any."
|
3515 |
msgstr ""
|
3516 |
"<code>%host</code> : l'en-tête Host de la requête courante (HTTP_HOST), si "
|
3517 |
"elle existe."
|
3518 |
|
3519 |
+
#: lib/help.php:561
|
3520 |
msgid ""
|
3521 |
"Additionally, you can include any of the following characters: <code>\"</"
|
3522 |
"code>, <code>%</code>, <code>[</code>, <code>]</code>, <code>space</code> "
|
3526 |
"%</code>, <code>[</code>, <code>]</code>, <code>espace</code> et toute "
|
3527 |
"lettre minuscule <code>a-z</code>."
|
3528 |
|
3529 |
+
#: lib/help.php:573 lib/rules_editor.php:27 ninjafirewall.php:771
|
3530 |
msgid "Rules Editor"
|
3531 |
msgstr "Éditeur de Règles"
|
3532 |
|
3533 |
+
#: lib/help.php:575
|
3534 |
msgid ""
|
3535 |
"Besides the \"Firewall Policies\", NinjaFirewall includes also a large set "
|
3536 |
"of built-in rules used to protect your blog against the most common "
|
3547 |
"règles, vous pouvez utiliser l’Éditeur de règles ci-dessous pour les "
|
3548 |
"désactiver individuellement :"
|
3549 |
|
3550 |
+
#: lib/help.php:577
|
3551 |
msgid ""
|
3552 |
"Check your firewall log and find the rule ID you want to disable (it is "
|
3553 |
"displayed in the <code>RULE</code> column)."
|
3555 |
"Consultez le journal du pare-feu afin d'y trouver l'ID de la règle que vous "
|
3556 |
"souhaitez désactiver (il est affiché dans la colonne <code>RULE</code>)."
|
3557 |
|
3558 |
+
#: lib/help.php:578
|
3559 |
msgid ""
|
3560 |
"Select its ID from the enabled rules list below and click the \"Disable it\" "
|
3561 |
"button."
|
3563 |
"Sélectionnez son ID dans la liste des règles ci-dessous et cliquez sur le "
|
3564 |
"bouton \"Désactiver\"."
|
3565 |
|
3566 |
+
#: lib/help.php:580
|
3567 |
msgid ""
|
3568 |
"Note: if the <code>RULE</code> column from your log shows a hyphen <code>-</"
|
3569 |
"code> instead of a number, that means that the rule can be changed in the "
|
3573 |
"d'union <code>-</code> à la place d'un nombre, cela signifie que la règle ne "
|
3574 |
"peut être modifiée quand dans la page \"Politiques du Pare-feu\"."
|
3575 |
|
3576 |
+
#: lib/help.php:585
|
3577 |
msgid "Credits"
|
3578 |
msgstr "Crédits"
|
3579 |
|
3580 |
+
#: lib/help.php:587
|
3581 |
msgid ""
|
3582 |
"NinjaFirewall security rules protect against many vulnerabilities. Some of "
|
3583 |
"them were reported by the following companies, individuals or mailing lists:"
|
3586 |
"vulnérabilités. Certaines d'entre elles ont été découvertes par les "
|
3587 |
"entreprises, particuliers ou listes de diffusion suivantes:"
|
3588 |
|
3589 |
+
#: lib/help.php:638 lib/overview.php:186
|
3590 |
msgid "Updates"
|
3591 |
msgstr "Mises à Jour"
|
3592 |
|
3593 |
+
#: lib/help.php:640
|
3594 |
msgid ""
|
3595 |
"To get the most efficient protection, you can ask NinjaFirewall to "
|
3596 |
"automatically update its security rules."
|
3598 |
"Pour bénéficier de la protection la plus efficace, vous pouvez demander à "
|
3599 |
"NinjaFirewall de mettre à jour ses règles de sécurité automatiquement."
|
3600 |
|
3601 |
+
#: lib/help.php:642
|
3602 |
msgid ""
|
3603 |
"Each time a new vulnerability is found in WordPress or one of its plugins/"
|
3604 |
"themes, a new set of security rules will be made available to protect "
|
3608 |
"extensions ou ses thèmes, un nouvel ensemble de règles de sécurité est "
|
3609 |
"disponible pour protéger contre cette vulnérabilité si nécessaire."
|
3610 |
|
3611 |
+
#: lib/help.php:644
|
3612 |
msgid ""
|
3613 |
"Only security rules will be downloaded. If a new version of NinjaFirewall "
|
3614 |
"(including new files, options and features) was available, it would have to "
|
3619 |
"jour depuis la page des \"Extensions\" de votre tableau de bord, comme "
|
3620 |
"d'habitude."
|
3621 |
|
3622 |
+
#: lib/help.php:646
|
3623 |
msgid ""
|
3624 |
"We recommend to enable this feature, as it is the <strong>best way to keep "
|
3625 |
"your WordPress secure</strong> against new vulnerabilities."
|
3628 |
"<strong>meilleure façon de garder votre WordPress protégé</strong> contre "
|
3629 |
"les dernières vulnérabilités."
|
3630 |
|
3631 |
+
#: lib/install.php:60
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3632 |
#, php-format
|
3633 |
msgid ""
|
3634 |
+
"Error: Your .htaccess file is not writable, please change its permissions: %s"
|
|
|
3635 |
msgstr ""
|
3636 |
+
"Erreur : Votre fichier .htaccess n'est pas accessible en écriture. Veuillez "
|
3637 |
+
"modifier ses autorisations : %s"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3638 |
|
3639 |
+
#: lib/install.php:85 ninjafirewall.php:576 ninjafirewall.php:580
|
|
|
|
|
|
|
|
|
3640 |
#, php-format
|
3641 |
+
msgid "Error: wrong parameter value (%s)."
|
3642 |
+
msgstr "Erreur : Mauvais paramètre (%s)."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3643 |
|
3644 |
+
#: lib/install.php:92 lib/install.php:168 lib/install.php:189
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3645 |
#, php-format
|
3646 |
msgid ""
|
3647 |
+
"Error: The following file is not writable, please change its permissions: %s"
|
|
|
3648 |
msgstr ""
|
3649 |
+
"Erreur : Le fichier suivant n'est pas accessible en écriture. Veuillez "
|
3650 |
+
"modifier ses autorisations : %s"
|
3651 |
|
3652 |
+
#: lib/install.php:115
|
3653 |
#, php-format
|
3654 |
msgid ""
|
3655 |
+
"NinjaFirewall detected that the requested changes seemed to crash your blog. "
|
3656 |
+
"%s"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3657 |
msgstr ""
|
3658 |
+
"NinjaFirewall a détecté que les modifications demandées semblaient planter "
|
3659 |
+
"votre blog. %s"
|
3660 |
|
3661 |
+
#: lib/install.php:116
|
3662 |
msgid ""
|
3663 |
+
"Changes have been undone. You may need to modify your selection and try "
|
3664 |
+
"again."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3665 |
msgstr ""
|
3666 |
+
"Les modifications ont été annulées. Vous devriez peut-être modifier votre "
|
3667 |
+
"sélection et réessayer."
|
3668 |
|
3669 |
+
#: lib/install.php:126
|
|
|
|
|
|
|
|
|
3670 |
#, php-format
|
3671 |
+
msgid "The website front-end returned: HTTP %s %s."
|
3672 |
+
msgstr "La page d'accueil du site a retourné : HTTP %s %s."
|
|
|
|
|
3673 |
|
3674 |
+
#: lib/install.php:138
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3675 |
#, php-format
|
3676 |
+
msgid "The website front-end returned a fatal error: %s."
|
3677 |
+
msgstr "La page d'accueil du site a retourné une erreur fatale : %s."
|
|
|
|
|
|
|
|
|
3678 |
|
3679 |
+
#: lib/install.php:218 lib/install.php:243 lib/install.php:268
|
3680 |
+
#: lib/install.php:289
|
3681 |
+
msgid "File is not writable"
|
3682 |
+
msgstr "Le fichier n'est pas accessible en écriture"
|
|
|
3683 |
|
3684 |
+
#: lib/install_default.php:164
|
|
|
3685 |
msgid ""
|
3686 |
+
"Error: The installer cannot download the security rules from wordpress.org "
|
3687 |
+
"website."
|
3688 |
msgstr ""
|
3689 |
+
"Erreur : Impossible de télécharger les règles de sécurité depuis le site de "
|
3690 |
+
"wordpress.org."
|
3691 |
|
3692 |
+
#: lib/install_default.php:165
|
3693 |
msgid ""
|
3694 |
+
"The server may be temporarily down or you may have network connectivity "
|
3695 |
+
"problems? Please try again in a few minutes."
|
3696 |
msgstr ""
|
3697 |
+
"Le serveur est peut être temporairement en panne ou bien vous avez des "
|
3698 |
+
"problèmes de connectivité réseau ? Veuillez ré-essayer d'ici quelques "
|
3699 |
+
"minutes."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3700 |
|
3701 |
+
#: lib/install_default.php:166
|
3702 |
msgid ""
|
3703 |
+
"NinjaFirewall downloads its rules over an HTTPS secure connection. Maybe "
|
3704 |
+
"your server does not support SSL? You can force NinjaFirewall to use a non-"
|
3705 |
+
"secure HTTP connection by adding the following directive to your <strong>wp-"
|
3706 |
+
"config.php</strong> file:"
|
3707 |
msgstr ""
|
3708 |
+
"NinjaFirewall télécharge ses règles de sécurité en utilisant une connexion "
|
3709 |
+
"sécurisée (HTTPS). Peut-être que votre serveur ne prend pas en charge "
|
3710 |
+
"HTTPS ? Dans ce cas, vous pouvez demander à NinjaFirewall d'utiliser une "
|
3711 |
+
"connexion non-sécurisée (HTTP) en ajoutant la ligne suivante dans votre "
|
3712 |
+
"fichier <strong>wp-config.php</strong> :"
|
3713 |
|
3714 |
#: lib/live_log.php:29
|
3715 |
msgid ""
|
3730 |
"et assurez vous que l'option \"Ajouter l'Administrateur à la liste blanche\" "
|
3731 |
"est activée."
|
3732 |
|
3733 |
+
#: lib/live_log.php:105
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3734 |
msgid "Refresh rate:"
|
3735 |
msgstr "Intervalle :"
|
3736 |
|
3737 |
+
#: lib/live_log.php:107
|
3738 |
msgid "5 seconds"
|
3739 |
msgstr "5 secondes"
|
3740 |
|
3741 |
+
#: lib/live_log.php:108
|
3742 |
msgid "10 seconds"
|
3743 |
msgstr "10 secondes"
|
3744 |
|
3745 |
+
#: lib/live_log.php:109
|
3746 |
msgid "20 seconds"
|
3747 |
msgstr "20 secondes"
|
3748 |
|
3749 |
+
#: lib/live_log.php:110
|
3750 |
msgid "45 seconds"
|
3751 |
msgstr "45 secondes"
|
3752 |
|
3753 |
+
#: lib/live_log.php:112
|
3754 |
msgid "Clear screen"
|
3755 |
msgstr "Effacer"
|
3756 |
|
3757 |
+
#: lib/live_log.php:113
|
3758 |
msgid "Autoscrolling"
|
3759 |
msgstr "Défilement auto."
|
3760 |
|
3761 |
+
#: lib/live_log.php:118
|
3762 |
msgid "Live Log will not display whitelisted users and brute-force attacks."
|
3763 |
msgstr ""
|
3764 |
"Live Log n'affiche pas les connexions de l'administrateur, ni les attaques "
|
3765 |
"par force brute."
|
3766 |
|
3767 |
+
#: lib/live_log.php:155
|
3768 |
+
msgid "Live Log Options"
|
3769 |
+
msgstr "Options de Live Log"
|
3770 |
|
3771 |
+
#: lib/live_log.php:158
|
3772 |
msgid "Inclusion and exclusion filters (REQUEST_URI)"
|
3773 |
msgstr "Filtres d'inclusion et d'exclusion (REQUEST_URI)"
|
3774 |
|
3775 |
+
#: lib/live_log.php:162
|
3776 |
msgid "Must include"
|
3777 |
msgstr "Doit inclure"
|
3778 |
|
3779 |
+
#: lib/live_log.php:163
|
3780 |
msgid "Must not include"
|
3781 |
msgstr "Ne doit pas inclure"
|
3782 |
|
3783 |
+
#: lib/live_log.php:167
|
3784 |
msgid ""
|
3785 |
"Full or partial case-sensitive REQUEST_URI string. Multiple values must be "
|
3786 |
"comma-separated."
|
3788 |
"Chaîne de caractères REQUEST_URI complète ou partielle, sensible à la casse. "
|
3789 |
"Plusieurs valeurs doivent être séparées par des virgules."
|
3790 |
|
3791 |
+
#: lib/live_log.php:171
|
3792 |
msgid "Format"
|
3793 |
msgstr "Format d'affichage"
|
3794 |
|
3795 |
+
#: lib/live_log.php:174
|
3796 |
msgid "Custom"
|
3797 |
msgstr "Autre"
|
3798 |
|
3799 |
+
#: lib/live_log.php:175
|
3800 |
msgid "See contextual help for available log format."
|
3801 |
msgstr ""
|
3802 |
"Consultez l'aide contextuelle pour avoir plus d'information sur les formats "
|
3803 |
"disponibles."
|
3804 |
|
3805 |
+
#: lib/live_log.php:179
|
3806 |
msgid "Display"
|
3807 |
msgstr "Afficher"
|
3808 |
|
3809 |
+
#: lib/live_log.php:189
|
3810 |
msgid "Timezone"
|
3811 |
msgstr "Fuseau horaire"
|
3812 |
|
3813 |
+
#: lib/live_log.php:204
|
3814 |
msgid "Save Live Log Options"
|
3815 |
msgstr "Sauvegarder les options"
|
3816 |
|
3817 |
+
#: lib/live_log.php:243
|
3818 |
msgid "Error: please enter the custom log format."
|
3819 |
msgstr "Erreur : veuillez entrer le format d'affichage."
|
3820 |
|
3821 |
+
#: lib/login_protection.php:72 lib/login_protection.php:126
|
3822 |
+
#: lib/login_protection.php:476
|
3823 |
msgid "Access restricted"
|
3824 |
msgstr "Accès limité"
|
3825 |
|
3826 |
+
#: lib/login_protection.php:81 lib/login_protection.php:130
|
3827 |
+
#: lib/login_protection.php:486
|
3828 |
msgid "Type the characters you see in the picture below:"
|
3829 |
msgstr "Entrez le texte de l'image ci-dessous :"
|
3830 |
|
3831 |
+
#: lib/login_protection.php:186
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3832 |
msgid ""
|
3833 |
+
"GD Support is not available on your server, the CAPTCHA option is disabled."
|
|
|
3834 |
msgstr ""
|
3835 |
+
"L'extension PHP GD n'est pas disponible sur votre serveur, la protection par "
|
3836 |
+
"CAPTCHA ne peut pas fonctionner."
|
|
|
|
|
|
|
|
|
3837 |
|
3838 |
+
#: lib/login_protection.php:191
|
3839 |
msgid ""
|
3840 |
"Error: GD Support is not available on your server, the captcha protection "
|
3841 |
"will not work!"
|
3843 |
"Erreur : L'extension PHP GD n'est pas disponible sur votre serveur, la "
|
3844 |
"protection par captcha ne peut pas fonctionner."
|
3845 |
|
3846 |
+
#: lib/login_protection.php:201
|
3847 |
msgid "Enable brute force attack protection"
|
3848 |
msgstr "Activer la protection contre les attaques par force brute"
|
3849 |
|
3850 |
+
#: lib/login_protection.php:214
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3851 |
msgid "Type of protection"
|
3852 |
msgstr "Type de protection"
|
3853 |
|
3854 |
+
#: lib/login_protection.php:216
|
3855 |
+
msgid "Username + Password"
|
3856 |
+
msgstr "Nom d'utilisateur + mot de passe"
|
3857 |
+
|
3858 |
+
#: lib/login_protection.php:217
|
3859 |
+
msgid "Captcha image"
|
3860 |
+
msgstr "Image CAPTCHA"
|
3861 |
|
3862 |
+
#: lib/login_protection.php:222
|
3863 |
+
msgid "When to enable the protection"
|
3864 |
+
msgstr "Quand activer la protection"
|
3865 |
|
3866 |
+
#: lib/login_protection.php:224
|
3867 |
+
msgid "Always enabled"
|
3868 |
+
msgstr "Toujours activer"
|
3869 |
+
|
3870 |
+
#: lib/login_protection.php:225
|
3871 |
+
msgid "When under attack"
|
3872 |
+
msgstr "Si attaque en cours"
|
3873 |
+
|
3874 |
+
#: lib/login_protection.php:235
|
3875 |
msgid "Protect the login page against"
|
3876 |
msgstr "Protéger la page de connexion contre"
|
3877 |
|
3878 |
+
#: lib/login_protection.php:237
|
3879 |
msgid "<code>GET</code> request attacks"
|
3880 |
msgstr "Les attaques <code>GET</code>"
|
3881 |
|
3882 |
+
#: lib/login_protection.php:238
|
3883 |
msgid "<code>POST</code> request attacks (default)"
|
3884 |
msgstr "Les attaques <code>POST</code> (défaut)"
|
3885 |
|
3886 |
+
#: lib/login_protection.php:239
|
3887 |
msgid "<code>GET</code> and <code>POST</code> requests attacks"
|
3888 |
msgstr "Les attaques <code>GET</code> et <code>POST</code>"
|
3889 |
|
3890 |
+
#: lib/login_protection.php:243
|
3891 |
msgid "Enable protection"
|
3892 |
msgstr "Activer la protection"
|
3893 |
|
3894 |
+
#: lib/login_protection.php:246
|
3895 |
#, php-format
|
3896 |
msgid "For %1$s minutes, if more than %2$s %3$s requests within %4$s seconds."
|
3897 |
msgstr ""
|
3898 |
"Pendant %1$s minutes, si plus de %2$s requêtes %3$s détectées en moins de "
|
3899 |
"%4$s secondes."
|
3900 |
|
3901 |
+
#: lib/login_protection.php:267
|
3902 |
msgid "HTTP authentication"
|
3903 |
msgstr "Authentification HTTP"
|
3904 |
|
3905 |
+
#: lib/login_protection.php:269
|
3906 |
msgid "User:"
|
3907 |
msgstr "Utilisateur :"
|
3908 |
|
3909 |
+
#: lib/login_protection.php:269
|
3910 |
msgid "Password:"
|
3911 |
msgstr "Mot de passe :"
|
3912 |
|
3913 |
+
#: lib/login_protection.php:270
|
3914 |
msgid "User and Password must be from 6 to 32 characters."
|
3915 |
msgstr "L'utilisateur et mot de passe doivent comporter de 6 à 32 caractères."
|
3916 |
|
3917 |
+
#: lib/login_protection.php:271
|
3918 |
msgid "Message (max. 1024 characters, HTML tags allowed)"
|
3919 |
msgstr "Message (1 024 caractères maximum, balises HTML acceptées)"
|
3920 |
|
3921 |
+
#: lib/login_protection.php:282
|
3922 |
msgid "Message"
|
3923 |
msgstr "Message"
|
3924 |
|
3925 |
+
#: lib/login_protection.php:285
|
3926 |
msgid "This message will be displayed above the captcha. Max. 255 characters."
|
3927 |
msgstr "Ce message sera affiché au-dessus du captcha."
|
3928 |
|
3929 |
+
#: lib/login_protection.php:296
|
3930 |
msgid "Various options"
|
3931 |
msgstr "Options diverses"
|
3932 |
|
3933 |
+
#: lib/login_protection.php:301
|
3934 |
msgid ""
|
3935 |
"If you are using the Jetpack plugin, blocking access to the XML-RPC API may "
|
3936 |
"prevent it from working correctly."
|
3938 |
"Si vous utilisez l'extension Jetpack, bloquer l'accès à l'API XML-RPC "
|
3939 |
"pourrait l’empêcher de fonctionner correctement."
|
3940 |
|
3941 |
+
#: lib/login_protection.php:307
|
3942 |
+
msgid "Apply the protection to the <code>xmlrpc.php</code> script as well"
|
3943 |
+
msgstr "Activer aussi la protection pour le fichier <code>xmlrpc.php</code>"
|
|
|
|
|
|
|
|
|
3944 |
|
3945 |
+
#: lib/login_protection.php:315
|
3946 |
+
msgid "Enable bot protection"
|
3947 |
+
msgstr "Activer la protection contre les bots"
|
3948 |
|
3949 |
+
#: lib/login_protection.php:329
|
3950 |
+
msgid "Write the incident to the server Authentication log"
|
3951 |
msgstr ""
|
3952 |
+
"Enregistrer l'incident dans le journal des authentifications du serveur"
|
|
|
|
|
|
|
|
|
|
|
3953 |
|
3954 |
+
#: lib/login_protection.php:335
|
3955 |
msgid "Your server configuration is not compatible with that option."
|
3956 |
msgstr ""
|
3957 |
"La configuration de votre serveur n'est pas compatible avec cette option."
|
3958 |
|
3959 |
+
#: lib/login_protection.php:338
|
3960 |
msgid ""
|
3961 |
+
"The login protection must be set to \"When under attack\" in order to use "
|
3962 |
"this option."
|
3963 |
msgstr ""
|
3964 |
+
"La protection doit être activée sur \"Si attaque en cours\" afin de pouvoir "
|
3965 |
+
"utiliser cette option."
|
3966 |
|
3967 |
+
#: lib/login_protection.php:350
|
3968 |
+
msgid "Disable NinjaFirewall's signature on the login protection page"
|
3969 |
+
msgstr "Désactiver la signature de NinjaFirewall sur la page de connexion"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3970 |
|
3971 |
+
#: lib/login_protection.php:362
|
3972 |
msgid "Save Login Protection"
|
3973 |
msgstr "Sauvegarder les options"
|
3974 |
|
3975 |
+
#: lib/login_protection.php:365
|
3976 |
msgid "See our benchmark and stress-test:"
|
3977 |
msgstr "Consultez nos benchmarks :"
|
3978 |
|
3979 |
+
#: lib/login_protection.php:384
|
3980 |
#, php-format
|
3981 |
msgid "Error: %s directory is not writable. Please chmod it to 0777."
|
3982 |
msgstr ""
|
3983 |
"Erreur : impossible d’écrire dans le répertoire %s. Assurez-vous qu'il "
|
3984 |
"n'est pas en lecture seule."
|
3985 |
|
3986 |
+
#: lib/login_protection.php:458
|
3987 |
msgid "Error: please enter a user name for HTTP authentication."
|
3988 |
msgstr ""
|
3989 |
"Erreur : veuillez entrer un nom d'utilisateur pour l'authentification HTTP."
|
3990 |
|
3991 |
+
#: lib/login_protection.php:460
|
3992 |
msgid "Error: HTTP authentication user name is not valid."
|
3993 |
msgstr ""
|
3994 |
"Erreur : le nom d'utilisateur pour l'authentification HTTP n'est pas valide."
|
3995 |
|
3996 |
+
#: lib/login_protection.php:466
|
3997 |
msgid "Error: please enter a user name and password for HTTP authentication."
|
3998 |
msgstr ""
|
3999 |
"Erreur : veuillez entrer un nom d'utilisateur et mot de passe pour "
|
4000 |
"l'authentification HTTP."
|
4001 |
|
4002 |
+
#: lib/login_protection.php:469
|
4003 |
msgid "Error: password must be from 6 to 32 characters."
|
4004 |
msgstr "Erreur : le mot de passe doit comporter de 6 à 32 caractères."
|
4005 |
|
4006 |
+
#: lib/login_protection.php:504
|
4007 |
#, php-format
|
4008 |
msgid "Error: unable to write to the %s configuration file"
|
4009 |
msgstr "Erreur : impossible d’écrire dans le fichier de configuration %s"
|
4010 |
|
4011 |
+
#: lib/network.php:24 ninjafirewall.php:1075 ninjafirewall.php:1079
|
4012 |
#, php-format
|
4013 |
msgid "You are not allowed to perform this task (%s)."
|
4014 |
msgstr "Vous n'êtes pas autorisé à effectuer cette tâche (%s)."
|
4017 |
msgid "You do not have a multisite network."
|
4018 |
msgstr "Vous ne disposez pas d'un réseau multisite."
|
4019 |
|
4020 |
+
#: lib/network.php:65
|
4021 |
msgid "NinjaFirewall Status"
|
4022 |
msgstr "Statut de NinjaFirewall"
|
4023 |
|
4024 |
+
#: lib/network.php:68
|
4025 |
msgid ""
|
4026 |
"Display NinjaFirewall status icon in the admin bar of all sites in the "
|
4027 |
"network"
|
4029 |
"Afficher l'icône du statut de NinjaFirewall dans la barre d'administration "
|
4030 |
"de tous les sites du réseau"
|
4031 |
|
4032 |
+
#: lib/network.php:77
|
4033 |
msgid "Save Network options"
|
4034 |
msgstr "Sauvegarder les options"
|
4035 |
|
4036 |
+
#: lib/overview.php:49
|
4037 |
+
msgid "Make sure you followed the instructions and restarted Openlitespeed."
|
4038 |
+
msgstr ""
|
4039 |
+
"Assurez-vous de bien suivre les instructions et de redémarrer Openlitespeed."
|
4040 |
+
|
4041 |
+
#: lib/overview.php:53
|
4042 |
+
#, php-format
|
4043 |
+
msgid ""
|
4044 |
+
"Make sure your HTTP server support the %s directive in .htaccess files. Or "
|
4045 |
+
"maybe you need to restart your HTTP server to apply the changes?"
|
4046 |
+
msgstr ""
|
4047 |
+
"Assurez-vous que votre serveur HTTP prend en charge la directive %s dans les "
|
4048 |
+
"fichiers .htaccess. Ou peut-être devez-vous redémarrer votre serveur HTTP "
|
4049 |
+
"pour appliquer les changements ?"
|
4050 |
+
|
4051 |
+
#: lib/overview.php:61
|
4052 |
+
#, php-format
|
4053 |
+
msgid ""
|
4054 |
+
"Because PHP caches INI files, you may need to wait up to five minutes before "
|
4055 |
+
"the changes are reloaded by the PHP interpreter. <strong>Please wait for "
|
4056 |
+
"<font id=\"nfw-waf-count\">%d</font> seconds</strong> before trying again "
|
4057 |
+
"(you can navigate away from this page and come back in a few minutes)."
|
4058 |
+
msgstr ""
|
4059 |
+
"Parce que PHP met en cache les fichiers INI, vous devez attendre jusqu'à "
|
4060 |
+
"cinq minutes avant qu'il prenne en compte les modifications effectuées. "
|
4061 |
+
"<strong>Veuillez patienter pendant <font id=\"nfw-waf-count\">%d</font> "
|
4062 |
+
"secondes</strong> avant de réessayer (vous pouvez quitter cette page et "
|
4063 |
+
"revenir dans quelques minutes)."
|
4064 |
+
|
4065 |
+
#: lib/overview.php:69
|
4066 |
+
msgid "Oops! Full WAF mode is not enabled yet."
|
4067 |
+
msgstr "Oops! Le mode Full WAF n'est pas encore activé."
|
4068 |
+
|
4069 |
+
#: lib/overview.php:80
|
4070 |
+
msgid "NinjaFirewall (WP Edition)"
|
4071 |
+
msgstr "NinjaFirewall (WP Edition)"
|
4072 |
+
|
4073 |
+
#: lib/overview.php:85
|
4074 |
msgid "Congratulations, NinjaFirewall is up and running!"
|
4075 |
msgstr "Félicitations, NinjaFirewall est bien activé !"
|
4076 |
|
4077 |
+
#: lib/overview.php:86
|
4078 |
msgid ""
|
4079 |
"If you need help, click on the contextual \"Help\" menu tab located in the "
|
4080 |
"upper right corner of each page."
|
4082 |
"Si vous avez besoin d'aide, cliquez sur l'onglet \"Aide\" situé dans le coin "
|
4083 |
"supérieur droit de chaque page."
|
4084 |
|
4085 |
+
#: lib/overview.php:88
|
4086 |
msgid "A \"Quick Start, FAQ & Troubleshooting Guide\" email was sent to"
|
4087 |
msgstr ""
|
4088 |
"Un e-mail \"Guide d'Utilisation, d'Installation et de Dépannage\" a été "
|
4089 |
"envoyé à l'adresse"
|
4090 |
|
4091 |
+
#: lib/overview.php:110
|
4092 |
+
msgid "Unknown error"
|
4093 |
+
msgstr "Erreur inconnue"
|
4094 |
|
4095 |
+
#: lib/overview.php:114 lib/overview.php:122
|
4096 |
msgid "Firewall"
|
4097 |
msgstr "Pare-feu"
|
4098 |
|
4099 |
+
#: lib/overview.php:130
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4100 |
msgid "Mode"
|
4101 |
msgstr "Mode"
|
4102 |
|
4103 |
+
#: lib/overview.php:135 lib/overview.php:141
|
4104 |
#, php-format
|
4105 |
msgid "NinjaFirewall is running in %s mode."
|
4106 |
msgstr "NinjaFirewall fonctionne en mode %s."
|
4107 |
|
4108 |
+
#: lib/overview.php:135
|
4109 |
+
msgid "WordPress WAF"
|
4110 |
+
msgstr "WordPress WAF"
|
4111 |
+
|
4112 |
+
#: lib/overview.php:137
|
4113 |
+
#, php-format
|
4114 |
+
msgid ""
|
4115 |
+
"For better protection, <a %s>click here</a> to enable its Full WAF mode."
|
4116 |
+
msgstr ""
|
4117 |
+
"Pour une meilleure protection, <a %s>cliquez ici</a> pour activer son mode "
|
4118 |
+
"Full WAF."
|
4119 |
+
|
4120 |
+
#: lib/overview.php:137
|
4121 |
+
msgid "Click to install NinjaFirewall in Full WAF mode."
|
4122 |
+
msgstr "Cliquez pour installer NinjaFirewall en mode Full WAF."
|
4123 |
+
|
4124 |
+
#: lib/overview.php:141
|
4125 |
+
msgid "Full WAF"
|
4126 |
+
msgstr "Full WAF"
|
4127 |
+
|
4128 |
+
#: lib/overview.php:153
|
4129 |
msgid "Enabled."
|
4130 |
msgstr "Activé."
|
4131 |
|
4132 |
+
#: lib/overview.php:153
|
4133 |
msgid "Click here to turn Debugging Mode off"
|
4134 |
msgstr "Cliquez ici pour désactiver le mode Débogage"
|
4135 |
|
4136 |
+
#: lib/overview.php:159
|
4137 |
+
msgid "Edition"
|
4138 |
+
msgstr "Édition"
|
4139 |
+
|
4140 |
+
#: lib/overview.php:160
|
4141 |
+
msgid "Need more security? Get Premium!"
|
4142 |
+
msgstr "Besoin de plus de sécurité ? Découvrez NinjaFirewall WP+ Edition !"
|
4143 |
|
4144 |
+
#: lib/overview.php:163 lib/utils.php:724
|
4145 |
msgid "Version"
|
4146 |
msgstr "Version"
|
4147 |
|
4148 |
+
#: lib/overview.php:164
|
4149 |
msgid "Security rules:"
|
4150 |
msgstr "Règles de sécurité :"
|
4151 |
|
4152 |
+
#: lib/overview.php:168
|
4153 |
+
msgid "PHP SAPI"
|
4154 |
+
msgstr "PHP SAPI"
|
4155 |
+
|
4156 |
+
#: lib/overview.php:187
|
4157 |
msgid "Security rules updates are disabled."
|
4158 |
msgstr "La mise à jour automatique des règles de sécurité est désactivée."
|
4159 |
|
4160 |
+
#: lib/overview.php:187
|
4161 |
msgid ""
|
4162 |
"If you want your blog to be protected against the latest threats, enable "
|
4163 |
"automatic security rules updates."
|
4165 |
"Pour garder votre WordPress protégé contre les dernières vulnérabilités, "
|
4166 |
"pensez à l'activer."
|
4167 |
|
4168 |
+
#: lib/overview.php:195 lib/overview.php:203
|
4169 |
msgid "Admin user"
|
4170 |
msgstr "Administrateur"
|
4171 |
|
4172 |
+
#: lib/overview.php:196
|
4173 |
#, php-format
|
4174 |
msgid ""
|
4175 |
"You are not whitelisted. Ensure that the \"Do not block WordPress "
|
4182 |
"\"%s\">Politiques du Pare-feu</a>, sinon vous pourriez être bloqué par le "
|
4183 |
"pare-feu lorsque vous travaillez depuis votre Tableau de bord."
|
4184 |
|
4185 |
+
#: lib/overview.php:204
|
4186 |
msgid "You are whitelisted by the firewall."
|
4187 |
msgstr "Vous êtes dans la liste blanche du pare-feu."
|
4188 |
|
4189 |
+
#: lib/overview.php:211
|
4190 |
msgid "Restrictions"
|
4191 |
msgstr "Restrictions"
|
4192 |
|
4193 |
+
#: lib/overview.php:212
|
4194 |
+
msgid "Access to NinjaFirewall is restricted to specific users."
|
4195 |
+
msgstr "L'accès à NinjaFirewall est restreint à certains utilisateurs."
|
4196 |
|
4197 |
+
#: lib/overview.php:223
|
4198 |
msgid "User session"
|
4199 |
msgstr "Session utilisateur"
|
4200 |
|
4201 |
+
#: lib/overview.php:224
|
4202 |
msgid ""
|
4203 |
"It seems that the user session set by NinjaFirewall was not found by the "
|
4204 |
"firewall script."
|
4206 |
"Il semble que la session d'utilisateur définie par NinjaFirewall n'a pas été "
|
4207 |
"trouvé par le script du pare-feu."
|
4208 |
|
4209 |
+
#: lib/overview.php:232
|
4210 |
#, php-format
|
4211 |
msgid ""
|
4212 |
"the public key is invalid. Please <a href=\"%s\">check your configuration</"
|
4215 |
"la clé publique est invalide. Veuillez vérifier <a href=\"%s\">votre "
|
4216 |
"configuration</a>."
|
4217 |
|
4218 |
+
#: lib/overview.php:236
|
4219 |
msgid "No IP address restriction."
|
4220 |
msgstr "Aucune restriction d'accès par adresse IP."
|
4221 |
|
4222 |
+
#: lib/overview.php:239
|
4223 |
#, php-format
|
4224 |
msgid "IP address %s is allowed to access NinjaFirewall's log on this server."
|
4225 |
msgstr ""
|
4226 |
"L'adresse IP %s est autorisée à accéder au journal du pare-feu de "
|
4227 |
"NinjaFirewall."
|
4228 |
|
4229 |
+
#: lib/overview.php:242
|
4230 |
#, php-format
|
4231 |
msgid ""
|
4232 |
"the whitelisted IP is not valid. Please <a href=\"%s\">check your "
|
4235 |
"l'adresse IP est invalide. Veuillez vérifier <a href=\"%s\">votre "
|
4236 |
"configuration</a>."
|
4237 |
|
4238 |
+
#: lib/overview.php:251
|
4239 |
#, php-format
|
4240 |
msgid "Error: %s"
|
4241 |
msgstr "Erreur : %s"
|
4242 |
|
4243 |
+
#: lib/overview.php:266
|
4244 |
msgid "Source IP"
|
4245 |
msgstr "IP source"
|
4246 |
|
4247 |
+
#: lib/overview.php:267
|
4248 |
#, php-format
|
4249 |
msgid "You have a private IP : %s"
|
4250 |
msgstr "Vous avez l'adresse IP d'un réseau privé : %s"
|
4251 |
|
4252 |
+
#: lib/overview.php:267
|
4253 |
#, php-format
|
4254 |
msgid ""
|
4255 |
"If your site is behind a reverse proxy or a load balancer, ensure that you "
|
4261 |
"la bonne adresse IP, sinon utilisez le fichier de configuration %s de "
|
4262 |
"NinjaFirewall. "
|
4263 |
|
4264 |
+
#: lib/overview.php:275 lib/overview.php:285
|
4265 |
msgid "CDN detection"
|
4266 |
msgstr "Détection CDN"
|
4267 |
|
4268 |
+
#: lib/overview.php:276
|
4269 |
#, php-format
|
4270 |
msgid ""
|
4271 |
"%s detected: you seem to be using Cloudflare CDN services. Ensure that you "
|
4276 |
"vous d'avoir configuré votre serveur HTTP afin qu'il fasse suivre la bonne "
|
4277 |
"adresse IP, sinon utilisez le fichier de configuration %s de NinjaFirewall."
|
4278 |
|
4279 |
+
#: lib/overview.php:286
|
4280 |
#, php-format
|
4281 |
msgid ""
|
4282 |
"%s detected: you seem to be using Incapsula CDN services. Ensure that you "
|
4287 |
"vous d'avoir configuré votre serveur HTTP afin qu'il fasse suivre la bonne "
|
4288 |
"adresse IP, sinon utilisez le fichier de configuration %s de NinjaFirewall."
|
4289 |
|
4290 |
+
#: lib/overview.php:295 lib/overview.php:304
|
4291 |
msgid "Log dir"
|
4292 |
msgstr "Répertoire du Journal"
|
4293 |
|
4294 |
+
#: lib/overview.php:296 lib/overview.php:305
|
4295 |
#, php-format
|
4296 |
msgid "%s directory is not writable! Please chmod it to 0777 or equivalent."
|
4297 |
msgstr ""
|
4298 |
"Le répertoire %s est en lecture seule ! Veuillez changer ses permissions "
|
4299 |
"(0777 ou équivalent)."
|
4300 |
|
4301 |
+
#: lib/overview.php:313
|
4302 |
msgid "Optional configuration file"
|
4303 |
msgstr "Fichier de configuration"
|
4304 |
|
4305 |
+
#: lib/overview.php:320
|
4306 |
msgid "MySQLi link identifier"
|
4307 |
msgstr "Identifiant de lien MySQLi"
|
4308 |
|
4309 |
+
#: lib/overview.php:321
|
4310 |
msgid "A MySQLi link identifier was detected in your <code>.htninja</code>."
|
4311 |
msgstr ""
|
4312 |
"Un identifiant de lien MySQLi a été détecté dans votre fichier <code>."
|
4313 |
"htninja</code>."
|
4314 |
|
4315 |
+
#: lib/rules_editor.php:37
|
4316 |
msgid "Error: you did not select a rule to disable."
|
4317 |
msgstr "Erreur : vous devez sélectionner la règle à désactiver."
|
4318 |
|
4319 |
+
#: lib/rules_editor.php:39 lib/rules_editor.php:54
|
4320 |
msgid "Error: to change this rule, use the \"Firewall Policies\" menu."
|
4321 |
msgstr ""
|
4322 |
"Erreur : pour modifier cette règle, utilisez le menu \"Politiques du Pare-feu"
|
4323 |
"\"."
|
4324 |
|
4325 |
+
#: lib/rules_editor.php:41 lib/rules_editor.php:56
|
4326 |
msgid "Error: this rule does not exist."
|
4327 |
msgstr "Erreur : cette règle n'existe pas."
|
4328 |
|
4329 |
+
#: lib/rules_editor.php:45
|
4330 |
#, php-format
|
4331 |
msgid "Rule ID %s has been disabled."
|
4332 |
msgstr "La règle %s a été désactivée."
|
4333 |
|
4334 |
+
#: lib/rules_editor.php:52
|
4335 |
msgid "Error: you did not select a rule to enable."
|
4336 |
msgstr "Erreur : vous devez sélectionner la règle à activer."
|
4337 |
|
4338 |
+
#: lib/rules_editor.php:60
|
4339 |
#, php-format
|
4340 |
msgid "Rule ID %s has been enabled."
|
4341 |
msgstr "La règle %s a été activée."
|
4342 |
|
4343 |
+
#: lib/rules_editor.php:70
|
4344 |
msgid "Error: no rules found."
|
4345 |
msgstr "Erreur : aucune règle de sécurité trouvée."
|
4346 |
|
4347 |
+
#: lib/rules_editor.php:92
|
4348 |
msgid "NinjaFirewall built-in security rules"
|
4349 |
msgstr "Éditeur de règles du pare-feu"
|
4350 |
|
4351 |
+
#: lib/rules_editor.php:95
|
4352 |
msgid "Select the rule you want to disable or enable"
|
4353 |
msgstr "Sélectionnez la règle à activer ou désactiver"
|
4354 |
|
4355 |
+
#: lib/rules_editor.php:99
|
4356 |
msgid "Total rules enabled"
|
4357 |
msgstr "Règles activées"
|
4358 |
|
4359 |
# Todo ?
|
4360 |
+
#: lib/rules_editor.php:105 lib/rules_editor.php:134
|
4361 |
msgid "Remote/local file inclusion"
|
4362 |
msgstr "Remote/local file inclusion"
|
4363 |
|
4364 |
# Todo ?
|
4365 |
+
#: lib/rules_editor.php:107 lib/rules_editor.php:136
|
4366 |
msgid "Cross-site scripting"
|
4367 |
msgstr "Cross-site scripting"
|
4368 |
|
4369 |
# Todo ?
|
4370 |
+
#: lib/rules_editor.php:109 lib/rules_editor.php:138
|
4371 |
msgid "Code injection"
|
4372 |
msgstr "Code injection"
|
4373 |
|
4374 |
# Todo ?
|
4375 |
+
#: lib/rules_editor.php:111 lib/rules_editor.php:140
|
4376 |
msgid "SQL injection"
|
4377 |
msgstr "SQL injection"
|
4378 |
|
4379 |
+
#: lib/rules_editor.php:113 lib/rules_editor.php:142
|
4380 |
msgid "Various vulnerability"
|
4381 |
msgstr "Vulnérabilité (divers)"
|
4382 |
|
4383 |
# Todo ?
|
4384 |
+
#: lib/rules_editor.php:115 lib/rules_editor.php:144
|
4385 |
msgid "Backdoor/shell"
|
4386 |
msgstr "Backdoor/shell"
|
4387 |
|
4388 |
+
#: lib/rules_editor.php:117 lib/rules_editor.php:146
|
4389 |
msgid "Application specific"
|
4390 |
msgstr "Application spécifique"
|
4391 |
|
4392 |
+
#: lib/rules_editor.php:119 lib/rules_editor.php:148
|
4393 |
msgid "WordPress vulnerability"
|
4394 |
msgstr "Vulnérabilité WordPress"
|
4395 |
|
4396 |
+
#: lib/rules_editor.php:121 lib/rules_editor.php:150
|
4397 |
msgid "Rule ID"
|
4398 |
msgstr "Règle"
|
4399 |
|
4400 |
+
#: lib/rules_editor.php:124
|
4401 |
msgid "Disable it"
|
4402 |
msgstr "Désactiver"
|
4403 |
|
4404 |
+
#: lib/rules_editor.php:129
|
4405 |
msgid "Total rules disabled"
|
4406 |
msgstr "Règles désactivées"
|
4407 |
|
4408 |
+
#: lib/rules_editor.php:154
|
4409 |
msgid "Enable it"
|
4410 |
msgstr "Activer"
|
4411 |
|
4412 |
+
#: lib/rules_update.php:73 lib/wpplus.php:217 ninjafirewall.php:775
|
4413 |
msgid "Rules Update"
|
4414 |
msgstr "Mise à Jour des Règles"
|
4415 |
|
4423 |
msgid "Security rules have been updated."
|
4424 |
msgstr "Les règles de sécurité ont été mises à jour."
|
4425 |
|
4426 |
+
#: lib/rules_update.php:94 lib/rules_update.php:429
|
4427 |
msgid "No security rules update available."
|
4428 |
msgstr "Aucune mise à jour des règles de sécurité disponible."
|
4429 |
|
4430 |
+
#: lib/rules_update.php:112
|
|
|
|
|
|
|
|
|
4431 |
#, php-format
|
4432 |
msgid ""
|
4433 |
+
"It seems that %s is set. Ensure you have another way to run WP-Cron, "
|
4434 |
"otherwise NinjaFirewall automatic updates will not work."
|
4435 |
msgstr ""
|
4436 |
"Il semble que %s est activé. Assurez vous de pouvoir exécuter WP-Cron, sinon "
|
4437 |
"les mises à jour automatiques ne pourront pas être effectuées."
|
4438 |
|
4439 |
+
#: lib/rules_update.php:139
|
4440 |
+
msgid "Automatically update NinjaFirewall security rules"
|
4441 |
+
msgstr "Activer la mise à jour automatique des règles de sécurité"
|
4442 |
+
|
4443 |
+
#: lib/rules_update.php:151
|
4444 |
msgid "Check for updates"
|
4445 |
msgstr "Vérifier les mises à jour"
|
4446 |
|
4447 |
+
#: lib/rules_update.php:154
|
4448 |
msgid "Every 15 minutes"
|
4449 |
msgstr "Toutes les 15 minutes"
|
4450 |
|
4451 |
+
#: lib/rules_update.php:155
|
4452 |
msgid "Every 30 minutes"
|
4453 |
msgstr "Toutes les 30 minutes"
|
4454 |
|
4455 |
+
#: lib/rules_update.php:170
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4456 |
msgid ""
|
4457 |
"The next scheduled date is in the past! WordPress wp-cron may not be working "
|
4458 |
"or may have been disabled."
|
4461 |
"passé ! Essayez de recharger cette page, sinon vérifiez que WP-Cron n'a "
|
4462 |
"pas été désactivé."
|
4463 |
|
4464 |
+
#: lib/rules_update.php:174
|
4465 |
+
#, php-format
|
4466 |
+
msgid ""
|
4467 |
+
"Next scheduled update will start in approximately %s day, %s hour(s), %s "
|
4468 |
+
"minute(s) and %s seconds."
|
4469 |
+
msgstr ""
|
4470 |
+
"La prochaine vérification des mises à jour aura lieu dans %s jour, %s "
|
4471 |
+
"heure(s), %s minute(s) et %s secondes."
|
4472 |
+
|
4473 |
+
#: lib/rules_update.php:182
|
4474 |
msgid "Notification"
|
4475 |
msgstr "Notification"
|
4476 |
|
4477 |
+
#: lib/rules_update.php:184
|
4478 |
msgid "Send me a report by email when security rules have been updated."
|
4479 |
msgstr ""
|
4480 |
"Envoyez-moi un rapport par e-mail lorsque les règles de sécurité ont été "
|
4481 |
"mises à jour."
|
4482 |
|
4483 |
+
#: lib/rules_update.php:185
|
4484 |
msgid ""
|
4485 |
"Reports will be sent to the contact email address defined in the Event "
|
4486 |
"Notifications menu."
|
4488 |
"Les rapports seront envoyés à l'adresse e-mail définie dans la page "
|
4489 |
"\"Notifications d'Événement\"."
|
4490 |
|
4491 |
+
#: lib/rules_update.php:195
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4492 |
msgid "The updates log is currently empty."
|
4493 |
msgstr "Le journal des mises à jour est vide."
|
4494 |
|
4495 |
+
#: lib/rules_update.php:199
|
4496 |
msgid "Updates Log"
|
4497 |
msgstr "Journal des mises à jour"
|
4498 |
|
4499 |
+
#: lib/rules_update.php:206
|
|
|
|
|
|
|
|
|
4500 |
msgid "Log is flushed automatically."
|
4501 |
msgstr "Le journal est purgé automatiquement."
|
4502 |
|
4503 |
+
#: lib/rules_update.php:217
|
4504 |
+
msgid "Save Updates Options"
|
4505 |
+
msgstr "Sauvegarder les options"
|
4506 |
+
|
4507 |
+
#: lib/rules_update.php:218
|
4508 |
+
msgid "Check For Updates Now!"
|
4509 |
+
msgstr "Vérifier les mises à jour maintenant ! "
|
4510 |
+
|
4511 |
+
#: lib/rules_update.php:226
|
4512 |
+
msgid "Delete Log"
|
4513 |
+
msgstr "Supprimer le journal"
|
4514 |
+
|
4515 |
+
#: lib/rules_update.php:316
|
4516 |
msgid "Error: Wrong rules format."
|
4517 |
msgstr "Erreur : Le format des règles téléchargées ne correspond pas."
|
4518 |
|
4519 |
+
#: lib/rules_update.php:325
|
4520 |
msgid "Error: Unable to unserialize the new rules."
|
4521 |
msgstr ""
|
4522 |
"Erreur : Impossible d'extraire les règles du fichier téléchargé (unable to "
|
4523 |
"unserialize the new rules)."
|
4524 |
|
4525 |
+
#: lib/rules_update.php:333
|
4526 |
msgid "Error: Unserialized rules seem corrupted."
|
4527 |
msgstr ""
|
4528 |
"Erreur : Le fichier des règles téléchargé semblent corrompu (unserialized "
|
4529 |
"rules seem corrupted)."
|
4530 |
|
4531 |
+
#: lib/rules_update.php:373
|
4532 |
#, php-format
|
4533 |
msgid "Security rules updated to version %s."
|
4534 |
msgstr "Les règles de sécurité ont été mises à jour vers la version %s."
|
4535 |
|
4536 |
+
#: lib/rules_update.php:409
|
4537 |
msgid ""
|
4538 |
"Error: Your version of NinjaFirewall is too old and is not compatible with "
|
4539 |
"those rules. Please upgrade it."
|
4541 |
"Erreur : Votre version de NinjaFirewall est trop ancienne et n'est pas "
|
4542 |
"compatible avec ces règles de sécurité. Mettez à jour NinjaFirewall."
|
4543 |
|
4544 |
+
#: lib/rules_update.php:418
|
4545 |
msgid "Error: Unable to retrieve the new rules version."
|
4546 |
msgstr "Erreur : Impossible de récupérer la nouvelle version des règles."
|
4547 |
|
4548 |
+
#: lib/rules_update.php:436
|
4549 |
#, php-format
|
4550 |
msgid "Error: Server returned a %s HTTP error code (#1)."
|
4551 |
msgstr "Erreur : Le serveur a retourné un code d'erreur HTTP %s (#1)."
|
4552 |
|
4553 |
+
#: lib/rules_update.php:443 lib/rules_update.php:509
|
4554 |
msgid "Error: Unable to connect to the remote server"
|
4555 |
msgstr "Erreur : Impossible de se connecter au serveur distant"
|
4556 |
|
4557 |
+
#: lib/rules_update.php:473
|
4558 |
#, php-format
|
4559 |
msgid "Error: The new rules versions do not match (%s != %s)."
|
4560 |
msgstr ""
|
4561 |
"Erreur : La versions des nouvelles règles ne correspond pas (%s != %s)."
|
4562 |
|
4563 |
+
#: lib/rules_update.php:487
|
4564 |
#, php-format
|
4565 |
msgid ""
|
4566 |
"Error: The new rules %s digital signature is not correct. Aborting update, "
|
4569 |
"Erreur : La signature numérique des nouvelles règles %s n'est pas correcte. "
|
4570 |
"Annulation de la mise à jour, les règles ont peut-être été altérées."
|
4571 |
|
4572 |
+
#: lib/rules_update.php:502
|
4573 |
#, php-format
|
4574 |
msgid "Error: Server returned a %s HTTP error code (#2)."
|
4575 |
msgstr "Erreur : Le serveur a retourné un code d'erreur HTTP %s (#2)."
|
4576 |
|
4577 |
+
#: lib/rules_update.php:542
|
4578 |
msgid "[NinjaFirewall] Security rules update"
|
4579 |
msgstr "[NinjaFirewall] Mise à jour des règles de sécurité"
|
4580 |
|
4581 |
+
#: lib/rules_update.php:543
|
4582 |
msgid "NinjaFirewall security rules have been updated:"
|
4583 |
msgstr "Les règles de sécurité de NinjaFirewall ont été mises à jour :"
|
4584 |
|
4585 |
+
#: lib/rules_update.php:549
|
4586 |
msgid "Rules version:"
|
4587 |
msgstr "Version des règles :"
|
4588 |
|
4589 |
+
#: lib/rules_update.php:551
|
4590 |
msgid ""
|
4591 |
"This notification can be turned off from NinjaFirewall \"Rules Update\" page."
|
4592 |
msgstr ""
|
4593 |
"Cette notification peut être désactivée depuis la page \"Mise à Jour des "
|
4594 |
"Règles\" de NinjaFirewall."
|
4595 |
|
4596 |
+
#: lib/statistics.php:27 ninjafirewall.php:720
|
4597 |
msgid "Statistics"
|
4598 |
msgstr "Statistiques"
|
4599 |
|
4600 |
+
#: lib/statistics.php:83
|
4601 |
msgid "You do not have any stats for the selected month yet."
|
4602 |
msgstr "Vous n'avez pas de statistiques pour le mois sélectionné."
|
4603 |
|
4604 |
+
#: lib/statistics.php:117
|
4605 |
+
msgid "Average time per request"
|
4606 |
+
msgstr "Durée moyenne par requête"
|
4607 |
+
|
4608 |
+
#: lib/statistics.php:118 lib/statistics.php:122 lib/statistics.php:126
|
4609 |
+
msgid "seconds"
|
4610 |
+
msgstr "secondes"
|
4611 |
+
|
4612 |
+
#: lib/statistics.php:121
|
4613 |
+
msgid "Fastest request"
|
4614 |
+
msgstr "Requête la plus rapide"
|
4615 |
+
|
4616 |
+
#: lib/statistics.php:125
|
4617 |
+
msgid "Slowest request"
|
4618 |
+
msgstr "Requête la plus lente"
|
4619 |
+
|
4620 |
+
#: lib/statistics.php:133
|
4621 |
msgid "Critical"
|
4622 |
msgstr "Critique"
|
4623 |
|
4624 |
+
#: lib/statistics.php:134
|
4625 |
msgid "High"
|
4626 |
msgstr "Élevé"
|
4627 |
|
4628 |
+
#: lib/statistics.php:135
|
4629 |
msgid "Medium"
|
4630 |
msgstr "Moyen"
|
4631 |
|
4632 |
+
#: lib/statistics.php:192
|
4633 |
+
msgid "Select monthly stats to view..."
|
4634 |
+
msgstr "Sélectionnez les statistiques à afficher"
|
4635 |
|
4636 |
+
#: lib/thickbox.php:37
|
4637 |
+
msgid "Upgrade to Full WAF mode"
|
4638 |
+
msgstr "Passer en mode Full WAF"
|
4639 |
|
4640 |
+
#: lib/thickbox.php:42
|
4641 |
+
msgid ""
|
4642 |
+
"In <strong>Full WAF</strong> mode, all scripts located inside the blog "
|
4643 |
+
"installation directories and sub-directories are protected by NinjaFirewall, "
|
4644 |
+
"including those that aren't part of the WordPress package. It gives you the "
|
4645 |
+
"highest possible level of protection: security without compromise."
|
4646 |
+
msgstr ""
|
4647 |
+
"En mode <strong>Full WAF</strong>, tous les scripts situés dans le "
|
4648 |
+
"répertoire et sous-répertoires d'installation de votre blog sont protégés, y "
|
4649 |
+
"compris ceux qui ne font pas partie de WordPress. Cela vous offre le niveau "
|
4650 |
+
"de protection le plus élevé possible : La sécurité sans aucun compromis."
|
4651 |
|
4652 |
+
#: lib/thickbox.php:44
|
4653 |
+
#, php-format
|
4654 |
+
msgid ""
|
4655 |
+
"It works on most websites right out of the box, or may require <a href=\"%s"
|
4656 |
+
"\" title=\"%s\">some very little tweaks</a>. But in a few cases, mostly "
|
4657 |
+
"because of some shared hosting plans restrictions, it may simply not work at "
|
4658 |
+
"all."
|
4659 |
+
msgstr ""
|
4660 |
+
"La plupart du temps, l'installation fonctionne sans aucun problème, ou peut "
|
4661 |
+
"nécessiter <a href=\"%s\" title=\"%s\">quelques petits ajustements</a>. Mais "
|
4662 |
+
"dans quelques cas, principalement en raison de certaines restrictions "
|
4663 |
+
"d'hébergement partagé, il se peut que l'installation ne puisse pas "
|
4664 |
+
"fonctionner du tout."
|
4665 |
+
|
4666 |
+
#: lib/thickbox.php:46
|
4667 |
+
msgid ""
|
4668 |
+
"If this happened to you, don't worry: you could still run it in "
|
4669 |
+
"<strong>WordPress WAF</strong> mode. Despite being less powerful than the "
|
4670 |
+
"<b>Full WAF</b> mode, it offers a level of protection and performance much "
|
4671 |
+
"higher than other security plugins."
|
4672 |
+
msgstr ""
|
4673 |
+
"Si cela se produisait, ne vous inquiétez pas : vous pourrez l'utiliser en "
|
4674 |
+
"mode <strong>WordPress WAF</strong>. Bien que moins puissant que le mode "
|
4675 |
+
"<strong>Full WAF</strong>, il offre tout de même des performances et un "
|
4676 |
+
"niveau de protection très supérieur aux autres extensions de sécurité pour "
|
4677 |
+
"WordPress disponibles sur le marché."
|
4678 |
+
|
4679 |
+
#: lib/thickbox.php:52
|
4680 |
+
msgid "(recommended)"
|
4681 |
+
msgstr "(recommandé)"
|
4682 |
+
|
4683 |
+
#: lib/thickbox.php:112
|
4684 |
+
msgid "Select your HTTP server and your PHP server API"
|
4685 |
+
msgstr "Sélectionnez votre serveur HTTP et PHP SAPI"
|
4686 |
+
|
4687 |
+
#: lib/thickbox.php:122
|
4688 |
+
msgid "Other webserver + CGI/FastCGI or PHP-FPM"
|
4689 |
+
msgstr "Autre serveur + CGI/FastCGI ou PHP-FPM"
|
4690 |
+
|
4691 |
+
#: lib/thickbox.php:124
|
4692 |
+
msgid "View PHPINFO"
|
4693 |
+
msgstr "Voir PHPINFO"
|
4694 |
+
|
4695 |
+
#: lib/thickbox.php:153
|
4696 |
+
msgid "Select the PHP initialization file supported by your server"
|
4697 |
+
msgstr ""
|
4698 |
+
"Sélectionnez le type de fichier de configuration PHP utilisé par votre "
|
4699 |
+
"serveur"
|
4700 |
+
|
4701 |
+
#: lib/thickbox.php:165
|
4702 |
+
msgid "Let NinjaFirewall make the necessary changes (recommended)."
|
4703 |
+
msgstr "Laissez NinjaFirewall faire les changements (recommandé)."
|
4704 |
+
|
4705 |
+
#: lib/thickbox.php:166
|
4706 |
+
msgid "I want to make the changes myself."
|
4707 |
+
msgstr "Je veux faire les changements moi-même."
|
4708 |
+
|
4709 |
+
#: lib/thickbox.php:168
|
4710 |
+
msgid ""
|
4711 |
+
"Ensure that you have FTP access to your website so that, if there were a "
|
4712 |
+
"problem during the installation of the firewall, you could easily undo the "
|
4713 |
+
"changes."
|
4714 |
+
msgstr ""
|
4715 |
+
"Assurez-vous d'avoir un accès FTP à votre site de sorte que, s'il y avait un "
|
4716 |
+
"problème pendant l'installation du pare-feu, vous pourriez annuler les "
|
4717 |
+
"modifications."
|
4718 |
+
|
4719 |
+
#: lib/thickbox.php:171
|
4720 |
+
msgid "Please make the changes below, then click on the \"Finish\" button."
|
4721 |
+
msgstr ""
|
4722 |
+
"Veuillez faire les modifications ci-dessous, puis cliquer sur le bouton "
|
4723 |
+
"\"Finaliser\"."
|
4724 |
|
4725 |
+
#: lib/thickbox.php:178
|
4726 |
+
#, php-format
|
4727 |
+
msgid ""
|
4728 |
+
"The %s file must be created, and the following lines of code added to it:"
|
4729 |
+
msgstr ""
|
4730 |
+
"Le fichier %s doit être créé, et les lignes suivantes doivent y être "
|
4731 |
+
"ajoutées :"
|
4732 |
+
|
4733 |
+
#: lib/thickbox.php:179
|
4734 |
+
#, php-format
|
4735 |
+
msgid "The following lines of code must be added to your existing %s file:"
|
4736 |
+
msgstr "Les lignes suivantes doivent être ajoutées à votre fichier %s :"
|
4737 |
+
|
4738 |
+
#: lib/thickbox.php:239
|
4739 |
+
msgid ""
|
4740 |
+
"Log in to your Openlitespeed admin dashboard, click on \"Virtual Host\", "
|
4741 |
+
"select your domain, add the following instructions to the \"php.ini Override"
|
4742 |
+
"\" section in the \"General\" tab, and restart Openlitespeed:"
|
4743 |
+
msgstr ""
|
4744 |
+
"Connectez-vous à votre tableau de bord Openlitespeed, cliquez sur \"Virtual "
|
4745 |
+
"Host\", sélectionnez votre domaine, ajoutez les instructions suivantes à la "
|
4746 |
+
"section \"php.ini Override\" de l'onglet \"Général\", puis redémarrez "
|
4747 |
+
"Openlitespeed:"
|
4748 |
+
|
4749 |
+
#: lib/thickbox.php:246
|
4750 |
+
msgid ""
|
4751 |
+
"Important: if one day you wanted to uninstall NinjaFirewall, do not forget "
|
4752 |
+
"to remove these instructions from your Openlitespeed admin dashboard "
|
4753 |
+
"<strong>before</strong> uninstalling NinjaFirewall because this installer "
|
4754 |
+
"could not do it for you."
|
4755 |
+
msgstr ""
|
4756 |
+
"Important : si vous souhaitez un jour désinstaller NinjaFirewall, n’oubliez "
|
4757 |
+
"pas de supprimer ces instructions de votre tableau de bord Openlitespeed "
|
4758 |
+
"<strong>avant</strong> de désinstaller NinjaFirewall, car cet installateur "
|
4759 |
+
"ne pourra pas le faire à votre place."
|
4760 |
+
|
4761 |
+
#: lib/thickbox.php:264
|
4762 |
+
msgid "Finish"
|
4763 |
+
msgstr "Finaliser"
|
4764 |
+
|
4765 |
+
#: lib/utils.php:200
|
4766 |
msgid "Blocked user account creation"
|
4767 |
msgstr "Création de compte d'utilisateur bloquée"
|
4768 |
|
4769 |
+
#: lib/utils.php:212
|
4770 |
msgid "NinjaFirewall has blocked an attempt to create a user account:"
|
4771 |
msgstr ""
|
4772 |
"NinjaFirewall a bloqué une tentative de création d'un compte d'utilisateur :"
|
4773 |
|
4774 |
+
#: lib/utils.php:215 lib/utils.php:1010
|
4775 |
msgid "Username:"
|
4776 |
msgstr "Utilisateur :"
|
4777 |
|
4778 |
+
#: lib/utils.php:216 lib/utils.php:1015 lib/utils.php:1379
|
4779 |
msgid "User IP:"
|
4780 |
msgstr "IP utilisateur :"
|
4781 |
|
4782 |
+
#: lib/utils.php:219 lib/utils.php:840 lib/utils.php:1018 lib/utils.php:1382
|
4783 |
msgid "Date:"
|
4784 |
msgstr "Date :"
|
4785 |
|
4786 |
+
#: lib/utils.php:228 lib/utils.php:1027 lib/utils.php:1374
|
4787 |
msgid "A PHP backtrace has been attached to this message for your convenience."
|
4788 |
msgstr ""
|
4789 |
"La pile d'exécution de PHP est jointe à ce message pour votre commodité."
|
4790 |
|
4791 |
+
#: lib/utils.php:251 lib/utils.php:252 lib/utils.php:1052 lib/utils.php:1053
|
4792 |
+
#: lib/utils.php:1279 lib/utils.php:1280
|
4793 |
msgid "You are not allowed to perform this task."
|
4794 |
msgstr "Vous n'êtes pas autorisé à effectuer cette tâche."
|
4795 |
|
4796 |
+
#: lib/utils.php:519 lib/utils.php:523
|
4797 |
msgid "NinjaFirewall error"
|
4798 |
msgstr "NinjaFirewall Erreur"
|
4799 |
|
4800 |
+
#: lib/utils.php:520
|
4801 |
#, php-format
|
4802 |
msgid ""
|
4803 |
"%s directory cannot be created. Please review your installation and ensure "
|
4806 |
"Le répertoire %s ne peut pas être créé. Vérifiez votre installation et "
|
4807 |
"assurez vous que %s n'est pas en lecture seule."
|
4808 |
|
4809 |
+
#: lib/utils.php:524
|
4810 |
#, php-format
|
4811 |
msgid ""
|
4812 |
"%s directory is read-only. Please review your installation and ensure that "
|
4815 |
"Le répertoire %s est en lecture seule. Vérifiez votre installation et les "
|
4816 |
"permissions de %s."
|
4817 |
|
4818 |
+
#: lib/utils.php:543
|
4819 |
+
msgid "unknown error"
|
4820 |
+
msgstr "erreur inconnue"
|
4821 |
+
|
4822 |
+
#: lib/utils.php:545
|
4823 |
msgid "NinjaFirewall fatal error:"
|
4824 |
msgstr "NinjaFirewall erreur fatale :"
|
4825 |
|
4826 |
+
#: lib/utils.php:546
|
4827 |
msgid "Review your installation, your site is not protected."
|
4828 |
msgstr "Vérifiez votre installation, votre site n'est pas protégé."
|
4829 |
|
4830 |
+
#: lib/utils.php:563
|
4831 |
msgid "Alert: WordPress console login"
|
4832 |
msgstr "Alerte : Connexion à WordPress"
|
4833 |
|
4834 |
+
#: lib/utils.php:565
|
4835 |
msgid "-Blog:"
|
4836 |
msgstr "- Blog :"
|
4837 |
|
4838 |
+
#: lib/utils.php:569
|
4839 |
msgid "Someone just logged in to your WordPress admin console:"
|
4840 |
msgstr "Quelqu'un vient de se connecter à votre Tableau de bord de WordPress:"
|
4841 |
|
4842 |
+
#: lib/utils.php:570
|
4843 |
msgid "-User:"
|
4844 |
msgstr "- Nom :"
|
4845 |
|
4846 |
+
#: lib/utils.php:571
|
4847 |
msgid "-IP:"
|
4848 |
msgstr "- IP :"
|
4849 |
|
4850 |
+
#: lib/utils.php:572
|
4851 |
msgid "-Date:"
|
4852 |
msgstr "- Date :"
|
4853 |
|
4854 |
+
#: lib/utils.php:575
|
4855 |
msgid "Support forum"
|
4856 |
msgstr "Forum "
|
4857 |
|
4858 |
+
#: lib/utils.php:636 lib/utils.php:663
|
4859 |
msgid "Forbidden access"
|
4860 |
msgstr "Accès interdit"
|
4861 |
|
4862 |
+
#: lib/utils.php:682
|
4863 |
#, php-format
|
4864 |
msgid ""
|
4865 |
"<strong>ERROR</strong>: Invalid username or password.<br /><a href=\"%s"
|
4868 |
"<strong>ERREUR</strong>: Identifiant ou mot de passe invalide.<br /><a href="
|
4869 |
"\"%s\">Mot de passe perdu</a> ?"
|
4870 |
|
4871 |
+
#: lib/utils.php:716
|
4872 |
msgid "Plugin"
|
4873 |
msgstr "Extension"
|
4874 |
|
4875 |
+
#: lib/utils.php:716 lib/utils.php:720
|
4876 |
msgid "uploaded"
|
4877 |
msgstr "téléchargé(e)"
|
4878 |
|
4879 |
+
#: lib/utils.php:716 lib/utils.php:720
|
4880 |
msgid "installed"
|
4881 |
msgstr "installé(e)"
|
4882 |
|
4883 |
+
#: lib/utils.php:716 lib/utils.php:720
|
4884 |
msgid "activated"
|
4885 |
msgstr "activé(e)"
|
4886 |
|
4887 |
+
#: lib/utils.php:717
|
4888 |
msgid "updated"
|
4889 |
msgstr "mis(e) à jour"
|
4890 |
|
4891 |
+
#: lib/utils.php:717
|
4892 |
msgid "deactivated"
|
4893 |
msgstr "désactivé(e)"
|
4894 |
|
4895 |
+
#: lib/utils.php:717 lib/utils.php:721
|
4896 |
msgid "deleted"
|
4897 |
msgstr "supprimé(e)"
|
4898 |
|
4899 |
+
#: lib/utils.php:717 lib/utils.php:721
|
4900 |
msgid "Name"
|
4901 |
msgstr "Nom"
|
4902 |
|
4903 |
+
#: lib/utils.php:720
|
4904 |
msgid "Theme"
|
4905 |
msgstr "Thème"
|
4906 |
|
4907 |
+
#: lib/utils.php:724
|
4908 |
msgid "upgraded"
|
4909 |
msgstr "mis(e) à jour"
|
4910 |
|
4911 |
+
#: lib/utils.php:732
|
4912 |
msgid "[NinjaFirewall] Alert:"
|
4913 |
msgstr "[NinjaFirewall] Alerte :"
|
4914 |
|
4915 |
+
#: lib/utils.php:738
|
4916 |
msgid "NinjaFirewall has detected the following activity on your account:"
|
4917 |
msgstr "NinjaFirewall a détecté l'activité suivante sur votre compte :"
|
4918 |
|
4919 |
+
#: lib/utils.php:835
|
4920 |
msgid "[NinjaFirewall] Alert: Database changes detected"
|
4921 |
msgstr "[NinjaFirewall] Alerte: Modification dans la base de données"
|
4922 |
|
4923 |
+
#: lib/utils.php:836
|
4924 |
msgid ""
|
4925 |
"NinjaFirewall has detected that one or more administrator accounts were "
|
4926 |
"modified in the database:"
|
4928 |
"NinjaFirewall a détecté que un ou plusieurs comptes d'administrateur ont été "
|
4929 |
"modifiés dans la base de données:"
|
4930 |
|
4931 |
+
#: lib/utils.php:841
|
4932 |
#, php-format
|
4933 |
msgid "Total administrators : %s"
|
4934 |
msgstr "Nombre d'administrateurs : %s"
|
4935 |
|
4936 |
+
#: lib/utils.php:850
|
4937 |
msgid ""
|
4938 |
"If you cannot see any modifications in the above fields, it is possible that "
|
4939 |
"the administrator password was changed."
|
4941 |
"Si vous ne voyez pas de modifications dans les données ci-dessus, il est "
|
4942 |
"possible que le mot de passe administrateur ait été changé."
|
4943 |
|
4944 |
+
#: lib/utils.php:986
|
4945 |
msgid "Blocked privilege escalation attempt"
|
4946 |
msgstr "Tentatives d'élévation des privilèges"
|
4947 |
|
4948 |
+
#: lib/utils.php:1003
|
4949 |
+
msgid ""
|
4950 |
+
"NinjaFirewall has blocked an attempt to modify a user capability by someone "
|
4951 |
+
"who does not have administrative privileges:"
|
4952 |
msgstr ""
|
4953 |
+
"NinjaFirewall a bloqué une tentative de modification de certaines Capacités "
|
4954 |
+
"par un utilisateur ne disposant pas de privilèges administratifs :"
|
4955 |
|
4956 |
+
#: lib/utils.php:1064
|
4957 |
msgid ""
|
4958 |
"NinjaFirewall brute-force protection is enabled and you are temporarily "
|
4959 |
"whitelisted."
|
4961 |
"La protection de NinjaFirewall contre les attaques par force brute est "
|
4962 |
"activée. Vous êtes temporairement dans la liste blanche."
|
4963 |
|
4964 |
+
#: lib/utils.php:1079
|
4965 |
#, php-format
|
4966 |
msgid ""
|
4967 |
"Hey, it seems that you've been using NinjaFirewall for some time. If you "
|
4974 |
"a>. Il a fallu des milliers d'heures pour le développer, mais il suffit "
|
4975 |
"seulement de quelques minutes pour le noter. Merci !"
|
4976 |
|
4977 |
+
#: lib/utils.php:1346
|
4978 |
msgid ""
|
4979 |
"The attempt was blocked and the option was reversed to its original value."
|
4980 |
msgstr ""
|
4981 |
"La tentative a été bloquée et l'option a été remise à sa valeur d'origine."
|
4982 |
|
4983 |
+
#: lib/utils.php:1351
|
4984 |
msgid "Attempt to modify WordPress settings"
|
4985 |
msgstr "Tentative de modification des paramètres de WordPress"
|
4986 |
|
4987 |
+
#: lib/utils.php:1352
|
4988 |
msgid ""
|
4989 |
"NinjaFirewall has blocked an attempt to modify some important WordPress "
|
4990 |
"settings by a user that does not have administrative privileges:"
|
4993 |
"importants de WordPress par un utilisateur ne disposant pas de privilèges "
|
4994 |
"administratifs :"
|
4995 |
|
4996 |
+
#: lib/utils.php:1353 lib/utils.php:1362
|
4997 |
#, php-format
|
4998 |
msgid "Option: %s"
|
4999 |
msgstr "Option: %s"
|
5000 |
|
5001 |
+
#: lib/utils.php:1354
|
5002 |
#, php-format
|
5003 |
msgid "Original value: %s"
|
5004 |
msgstr "Valeur originale : %s"
|
5005 |
|
5006 |
+
#: lib/utils.php:1355
|
5007 |
#, php-format
|
5008 |
msgid "Modified value: %s"
|
5009 |
msgstr "Valeur modifiée : %s"
|
5010 |
|
5011 |
+
#: lib/utils.php:1356 lib/utils.php:1364
|
5012 |
#, php-format
|
5013 |
msgid "Action taken: %s"
|
5014 |
msgstr "Action prise : %s"
|
5015 |
|
5016 |
+
#: lib/utils.php:1360
|
5017 |
msgid "Code injection attempt in WordPress options table"
|
5018 |
msgstr "Tentative d'injection de code dans la table des options de WordPress"
|
5019 |
|
5020 |
+
#: lib/utils.php:1361
|
5021 |
msgid ""
|
5022 |
"NinjaFirewall has blocked an attempt to inject code in the WordPress options "
|
5023 |
"table by a user that does not have administrative privileges:"
|
5026 |
"options de WordPress par un utilisateur ne disposant pas de privilèges "
|
5027 |
"administratifs :"
|
5028 |
|
5029 |
+
#: lib/utils.php:1363
|
5030 |
#, php-format
|
5031 |
msgid "Code: %s"
|
5032 |
msgstr "Code : %s"
|
5033 |
|
5034 |
+
#: lib/utils.php:1384
|
5035 |
msgid ""
|
5036 |
"This protection (and notification) can be turned off from NinjaFirewall "
|
5037 |
"\"Firewall Policies\" page."
|
5039 |
"Cette protection (et notification) peut être désactivée à partir de la page "
|
5040 |
"\"Politiques du Pare-feu\" de NinjaFirewall."
|
5041 |
|
5042 |
+
#: lib/utils.php:1418
|
5043 |
+
#, php-format
|
5044 |
+
msgid "Error, cannot create the %s folder."
|
5045 |
+
msgstr "Erreur, impossible de créer le répertoire %s."
|
5046 |
+
|
5047 |
+
#: lib/utils.php:1418 lib/utils.php:1426 lib/utils.php:1434
|
5048 |
+
msgid "Check your server permissions and try again."
|
5049 |
+
msgstr "Vérifiez les autorisations de votre serveur et réessayez."
|
5050 |
+
|
5051 |
+
#: lib/utils.php:1426
|
5052 |
+
#, php-format
|
5053 |
+
msgid "Error, the %s folder is not writable."
|
5054 |
+
msgstr "Erreur, le répertoire %s est en lecture seule."
|
5055 |
+
|
5056 |
+
#: lib/utils.php:1434
|
5057 |
+
#, php-format
|
5058 |
+
msgid "Error, cannot write %s."
|
5059 |
+
msgstr "Erreur, impossible d'écrire dans %s."
|
5060 |
+
|
5061 |
+
#: lib/wpplus.php:29
|
5062 |
+
msgid "Need more security?"
|
5063 |
+
msgstr "Besoin de plus de sécurité ?"
|
5064 |
|
5065 |
+
#: lib/wpplus.php:34
|
5066 |
+
#, php-format
|
5067 |
msgid ""
|
5068 |
+
"Take the time to explore NinjaFirewall %s, a supercharged Edition of our Web "
|
5069 |
+
"Application Firewall. It adds many new exciting features and blazing fast "
|
5070 |
+
"performances to make it the fastest and most powerful security plugin for "
|
5071 |
+
"WordPress, no less!"
|
5072 |
msgstr ""
|
5073 |
+
"Prenez le temps d'explorer NinjaFirewall %s, une version encore plus musclée "
|
5074 |
+
"de notre pare-feu applicatif. Elle offre de meilleures performances et "
|
5075 |
+
"contient de nouvelles fonctionnalités et options qui en font l'extension de "
|
5076 |
+
"sécurité pour WordPress la plus avancée et la plus puissante sur le marché, "
|
5077 |
+
"rien de moins !"
|
5078 |
+
|
5079 |
+
#: lib/wpplus.php:44
|
5080 |
+
msgid "New Features"
|
5081 |
+
msgstr "Nouvelles options et fonctionnalités"
|
5082 |
|
5083 |
+
#: lib/wpplus.php:49
|
5084 |
msgid "Access Control"
|
5085 |
msgstr "Contrôle d'Accès"
|
5086 |
|
5087 |
+
#: lib/wpplus.php:50
|
5088 |
msgid ""
|
5089 |
+
"Access Control is a powerful set of directives that can be used to allow or "
|
5090 |
+
"restrict access to your blog, depending on the <strong>User Role</strong>, "
|
5091 |
+
"<strong>IP</strong>, <strong>Geolocation</strong>, <strong>Requested URL</"
|
5092 |
+
"strong>, <strong>User-agent</strong> visitors behavior (<strong>Rate "
|
5093 |
+
"Limiting</strong>) and <strong>User Input</strong>. Those directives will be "
|
5094 |
+
"processed before the Firewall Policies and NinjaFirewall's built-in security "
|
5095 |
+
"rules."
|
5096 |
msgstr ""
|
5097 |
+
"Le Contrôle d'Accès est un puissant ensemble de directives qui peut être "
|
5098 |
+
"utilisé pour autoriser ou restreindre l'accès à votre blog selon de nombreux "
|
5099 |
+
"critères : <strong>Rôle</strong> de l'utilisateur, <strong>adresse IP</"
|
5100 |
+
"strong>, <strong>Géolocalisation</strong>, <strong>URL demandée</strong>, "
|
5101 |
+
"<strong>User-agent</strong>, le comportement des visiteurs "
|
5102 |
+
"(<strong>Limitation du trafic</strong>) et les <strong>Entrées utilisateur</"
|
5103 |
+
"strong>."
|
5104 |
|
5105 |
+
#: lib/wpplus.php:51
|
5106 |
msgid ""
|
5107 |
"Its main configuration allows you to whitelist WordPress users depending on "
|
5108 |
"their roles, to select the source IP (useful if your site is using a CDN or "
|
5109 |
"behind a reverse-proxy/load balancer), and the HTTP methods all directives "
|
5110 |
+
"should apply to."
|
5111 |
msgstr ""
|
5112 |
"Sa configuration principale vous permet de créer une liste blanche des "
|
5113 |
"utilisateurs de WordPress en fonction de leurs rôles, de sélectionner "
|
5114 |
"l'adresse IP source (utile si votre site utilise un CDN ou un équilibreur de "
|
5115 |
"charge), et les méthodes HTTP auxquelles s'appliqueront toutes les "
|
5116 |
+
"directives."
|
5117 |
+
|
5118 |
+
#: lib/wpplus.php:54 lib/wpplus.php:55 lib/wpplus.php:63 lib/wpplus.php:64
|
5119 |
+
#: lib/wpplus.php:81 lib/wpplus.php:82 lib/wpplus.php:93 lib/wpplus.php:94
|
5120 |
+
#: lib/wpplus.php:102 lib/wpplus.php:103 lib/wpplus.php:120 lib/wpplus.php:121
|
5121 |
+
#: lib/wpplus.php:129 lib/wpplus.php:130 lib/wpplus.php:147 lib/wpplus.php:148
|
5122 |
+
#: lib/wpplus.php:156 lib/wpplus.php:157 lib/wpplus.php:176 lib/wpplus.php:177
|
5123 |
+
#: lib/wpplus.php:193 lib/wpplus.php:194 lib/wpplus.php:202 lib/wpplus.php:203
|
5124 |
+
#: lib/wpplus.php:222 lib/wpplus.php:223 lib/wpplus.php:231 lib/wpplus.php:232
|
5125 |
+
msgid "Click to enlarge image."
|
5126 |
+
msgstr "Cliquez pour agrandir l'image."
|
5127 |
|
5128 |
+
#: lib/wpplus.php:67
|
5129 |
+
msgid "Geolocation Access Control"
|
5130 |
+
msgstr "Contrôle d'accès par Géolocalisation"
|
5131 |
+
|
5132 |
+
#: lib/wpplus.php:68
|
5133 |
msgid ""
|
5134 |
+
"Geolocation can be used to block visitors from specific countries. It can "
|
5135 |
+
"apply to the whole blog or only to specific folders or scripts (e.g., /wp-"
|
5136 |
+
"login.php, /xmlrpc.php etc). If you have a theme or a plugin that needs to "
|
5137 |
+
"know your visitors location, you can even ask NinjaFirewall to append the "
|
5138 |
+
"country code to the PHP headers."
|
5139 |
msgstr ""
|
5140 |
+
"La géolocalisation peut être utilisée pour bloquer les visiteurs en "
|
5141 |
+
"provenance de pays spécifiques. Il peut s'appliquer à tout le site ou bien à "
|
5142 |
+
"certains scripts ou répertoires uniquement (ex: /wp-login.php, xmlrpc.php "
|
5143 |
+
"etc). Si vous avez un thème ou une extension qui nécessite de géolocaliser "
|
5144 |
+
"vos visiteurs, vous pouvez même demander à NinjaFirewall d’insérer le code à "
|
5145 |
+
"deux lettres du pays dans les en-têtes PHP"
|
5146 |
+
|
5147 |
+
#: lib/wpplus.php:77
|
5148 |
+
msgid "IP Access Control"
|
5149 |
+
msgstr "Contrôle d'Accès par IP"
|
5150 |
|
5151 |
+
#: lib/wpplus.php:78
|
5152 |
msgid ""
|
5153 |
+
"The IP Access Control allows you to permanently allow or block an IP, a "
|
5154 |
+
"whole range of IP addresses <strong>and even AS numbers</strong> (Autonomous "
|
5155 |
+
"System number). IPv4 and IPv6 are fully supported by NinjaFirewall."
|
5156 |
msgstr ""
|
5157 |
+
"Le Contrôle d'Accès par IP peut immédiatement accepter ou bloquer une "
|
5158 |
+
"adresse IP, une plage d'adresses <strong>ou même un numéro AS</strong> "
|
5159 |
+
"(Autonomous System). NinjaFirewall est compatible avec l'IPv4 et l'IPv6."
|
5160 |
|
5161 |
+
#: lib/wpplus.php:88
|
5162 |
msgid ""
|
5163 |
+
"The IP Access Control can slow down aggressive bots, crawlers, web scrapers "
|
5164 |
"or even small HTTP attacks with its <strong>Rate-Limiting</strong> feature."
|
5165 |
msgstr ""
|
5166 |
+
"Le Contrôle d'Accès par IP vous permet de ralentir les bots, crawlers, web "
|
5167 |
"scrapers ou même de petites attaques HTTP avec son option <strong>Limiter le "
|
5168 |
"trafic</strong>."
|
5169 |
|
5170 |
+
#: lib/wpplus.php:90
|
5171 |
msgid ""
|
5172 |
"Because it can block attackers <strong>before WordPress and all its plugins "
|
5173 |
+
"are loaded</strong> and can handle a lot of HTTP requests per second, "
|
5174 |
"NinjaFirewall will save precious bandwidth and reduce your server load."
|
5175 |
msgstr ""
|
5176 |
"Parce qu'il peut bloquer les attaques <strong>avant que WordPress et ses "
|
5178 |
"requêtes HTTP par seconde, NinjaFirewall vous fera économiser de la bande "
|
5179 |
"passante et permettra de réduire la charge du serveur."
|
5180 |
|
5181 |
+
#: lib/wpplus.php:106
|
5182 |
+
msgid "URL Access Control"
|
5183 |
+
msgstr "Contrôle d'Accès par URL"
|
5184 |
+
|
5185 |
+
#: lib/wpplus.php:107
|
5186 |
msgid ""
|
5187 |
+
"URL Access Control lets you permanently allow/block any access to one or "
|
5188 |
+
"more PHP scripts based on their <code>SCRIPT_NAME</code>."
|
5189 |
msgstr ""
|
5190 |
+
"Le Contrôle d'accès par URL vous permet d'autoriser ou bloquer tout accès à "
|
5191 |
+
"un ou plusieurs scripts PHP basé sur leur chemin ou leur nom "
|
5192 |
+
"(<code>SCRIPT_NAME</code>)."
|
5193 |
|
5194 |
+
#: lib/wpplus.php:116
|
5195 |
+
msgid "Bot Access Control"
|
5196 |
+
msgstr "Contrôle d'accès Bot"
|
5197 |
+
|
5198 |
+
#: lib/wpplus.php:117
|
5199 |
msgid ""
|
5200 |
+
"Bot Access Control allows you block bots, scanners and various annoying "
|
5201 |
+
"crawlers."
|
5202 |
msgstr ""
|
5203 |
+
"Avec le Contrôle d'accès par Bot vous pouvez bloquer les robots, scanners et "
|
5204 |
+
"autres robots ennuyeux."
|
5205 |
|
5206 |
+
#: lib/wpplus.php:133
|
5207 |
+
msgid "User Input Access Control"
|
5208 |
+
msgstr "Contrôle d'Accès d'Entrée Utilisateur"
|
5209 |
+
|
5210 |
+
#: lib/wpplus.php:134
|
5211 |
msgid ""
|
5212 |
+
"User Input Access Control allows you to to ignore or block some specific "
|
5213 |
+
"user input."
|
5214 |
msgstr ""
|
5215 |
+
"Le Contrôle d'accès d'entrée utilisateur vous permet d’ignorer ou de bloquer "
|
5216 |
+
"une entrée utilisateur spécifique."
|
5217 |
|
5218 |
+
#: lib/wpplus.php:143
|
5219 |
msgid ""
|
5220 |
+
"The Web Filter can hook the response body, i.e., the output of the HTML "
|
5221 |
+
"page, and search it for some specific keywords. Such filter can be useful to "
|
5222 |
+
"identify errors, hacked content and data leakage issues in the response body "
|
5223 |
+
"sent to your visitors."
|
|
|
|
|
|
|
|
|
5224 |
msgstr ""
|
5225 |
+
"Le Web Filter peut intercepter les requêtes sortantes, c'est à dire le "
|
5226 |
+
"contenu de la page HTML, et rechercher des mots clés spécifiques. Un tel "
|
5227 |
+
"filtre peut être utile pour identifier les erreurs, les contenus piratés et "
|
5228 |
+
"les problèmes de fuite de données dans le corps de la réponse envoyée à vos "
|
5229 |
+
"visiteurs."
|
|
|
|
|
5230 |
|
5231 |
+
#: lib/wpplus.php:144
|
5232 |
msgid ""
|
5233 |
"In the case of a positive detection, NinjaFirewall will not block the "
|
5234 |
"response body but will send you an alert by email. It can even attach the "
|
5235 |
+
"whole HTML source of the page for your review."
|
5236 |
msgstr ""
|
5237 |
"En cas de détection positive, NinjaFirewall ne bloquera pas la requête mais "
|
5238 |
+
"vous enverra immédiatement une alerte par e-mail."
|
5239 |
|
5240 |
+
#: lib/wpplus.php:160
|
5241 |
msgid "Antispam"
|
5242 |
msgstr "Antispam"
|
5243 |
|
5244 |
+
#: lib/wpplus.php:161
|
5245 |
msgid ""
|
5246 |
+
"The Antispam can protect your blog comment and registration forms against "
|
5247 |
+
"spam. The protection is totally transparent to your visitors and does not "
|
5248 |
+
"require any interaction: no CAPTCHA, no math puzzles or trivia questions. "
|
5249 |
+
"Extremely easy to activate, but powerful enough to make spam bots life as "
|
5250 |
+
"miserable as possible."
|
5251 |
msgstr ""
|
5252 |
+
"L'Antispam peut protéger les formulaires de commentaire et d'inscription de "
|
5253 |
+
"votre blog contre le spam. La protection est totalement transparente pour "
|
5254 |
+
"vos visiteurs et ne nécessite ni CAPTCHA ni interaction de leur part. "
|
5255 |
+
"Extrêmement facile à activer, mais assez puissante pour ne laisser aucune "
|
5256 |
+
"chance aux spammeurs."
|
5257 |
|
5258 |
+
#: lib/wpplus.php:162
|
5259 |
msgid ""
|
5260 |
"NinjaFirewall antispam feature works only with WordPress built-in comment "
|
5261 |
"and registration forms."
|
5263 |
"L'option anti-spam de NinjaFirewall ne fonctionne qu'avec les formulaires "
|
5264 |
"intégrés à WordPress (commentaire et d'inscription)."
|
5265 |
|
5266 |
+
#: lib/wpplus.php:171
|
5267 |
#, php-format
|
5268 |
msgid ""
|
5269 |
+
"Centralized Logging lets you remotely access the firewall log of all your "
|
5270 |
+
"NinjaFirewall protected websites from one single installation, using the <a "
|
5271 |
+
"href=\"%s\">Centralized Logging</a> feature. You do not need any longer to "
|
5272 |
+
"log in to individual servers to analyse your log data."
|
|
|
5273 |
msgstr ""
|
5274 |
+
"La Centralisation des Logs vous permet d’accéder, depuis votre blog "
|
5275 |
+
"principal, au journal du pare-feu de chacun de vos sites protégés par "
|
5276 |
+
"NinjaFirewall. Vous n'avez plus besoin de vous connecter à chaque site pour "
|
5277 |
+
"analyser vos journaux. <a href=\"%s\">Consultez notre blog</a> pour plus "
|
5278 |
+
"d'informations à ce sujet."
|
5279 |
|
5280 |
+
#: lib/wpplus.php:173
|
5281 |
msgid ""
|
5282 |
"There is no limit to the number of websites you can connect to, and they can "
|
5283 |
"be running any edition of NinjaFirewall: WP, <font color=\"#21759B\">WP+</"
|
5287 |
"version de NinjaFirewall : WP, <font color=\"#21759B\">WP+</font>, Pro ou "
|
5288 |
"<font color=\"red\">Pro+</font>."
|
5289 |
|
5290 |
+
#: lib/wpplus.php:184
|
5291 |
msgid "Improved features"
|
5292 |
msgstr "Fonctionnalités améliorées"
|
5293 |
|
5294 |
+
#: lib/wpplus.php:189
|
5295 |
+
msgid "File uploads"
|
5296 |
+
msgstr "Téléchargements de fichier"
|
5297 |
|
5298 |
+
#: lib/wpplus.php:190
|
5299 |
msgid ""
|
5300 |
+
"You can allow uploads while rejecting potentially dangerous files: scripts "
|
5301 |
+
"(PHP, CGI, Ruby, Python, bash/shell), C/C++ source code, binaries (MZ/PE/NE "
|
5302 |
+
"and ELF formats), system files (.htaccess, .htpasswd and PHP INI) and SVG "
|
5303 |
+
"files containing Javascript/XML events. You can easily limit the size of "
|
5304 |
+
"each uploaded file too, without having to modify your PHP configuration."
|
|
|
5305 |
msgstr ""
|
5306 |
+
"Vous pouvez autoriser ou interdire tout téléchargement de fichier vers votre "
|
5307 |
+
"site, ou bien bloquer uniquement les fichiers potentiellement dangereux : "
|
|
|
5308 |
"scripts (PHP, CGI, Ruby, Python, bash/shell), code source C/C++, fichiers "
|
5309 |
"exécutables (MZ/PE/NE et ELF), certains fichiers systèmes (.htaccess, ."
|
5310 |
+
"htpasswd et PHP INI) et les fichiers SVG contenant du JavaScript ou des "
|
5311 |
"Événements XML. Vous pouvez aussi sélectionner la taille maximale d'un "
|
5312 |
+
"fichier téléchargé, sans avoir à modifier la configuration de PHP."
|
5313 |
|
5314 |
+
#: lib/wpplus.php:208
|
|
|
|
|
|
|
|
|
5315 |
msgid ""
|
5316 |
"The log menu has been revamped too. You can disable the firewall log, delete "
|
5317 |
"the current one, enable its rotation based on the size of the file and, if "
|
5318 |
"any, view each rotated log separately. Quick filtering options are easily "
|
5319 |
"accessible from checkboxes and the log can be exported as a TSV (tab-"
|
5320 |
+
"separated values) text file. You can also easily add any IP to your Access "
|
5321 |
+
"Control whitelist or blacklist."
|
5322 |
msgstr ""
|
5323 |
"Le <b>Journal du Pare-feu</b> a été remanié. Vous pouvez maintenant le "
|
5324 |
"désactiver, le supprimer et permettre sa rotation en vous basant sur la "
|
5325 |
"taille du fichier. Des options de filtrage rapides sont facilement "
|
5326 |
"accessibles à partir de cases à cocher et le journal peut également être "
|
5327 |
"exporté dans un fichier au format TSV (valeurs séparées par des "
|
5328 |
+
"tabulations). Vous pouvez facilement ajouter une adresse IP à votre liste "
|
5329 |
+
"blanche ou votre liste noire du Contrôle d'Accès depuis cette page."
|
5330 |
|
5331 |
+
#: lib/wpplus.php:209
|
5332 |
msgid ""
|
5333 |
"It is also possible to redirect all incidents and events to the Syslog "
|
5334 |
"server:"
|
5336 |
"Il est également possible de rediriger tous les incidents et les événements "
|
5337 |
"vers le serveur Syslog :"
|
5338 |
|
5339 |
+
#: lib/wpplus.php:219
|
5340 |
+
msgid ""
|
5341 |
+
"You can check for security rules updates <b>as often as every 15 minutes</"
|
5342 |
+
"b>, versus one hour for the free WP Edition. Don't leave your blog at risk!"
|
5343 |
+
msgstr ""
|
5344 |
+
"Vous pouvez vérifier les mises à jour des règles de sécurité <b>toutes les "
|
5345 |
+
"15 minutes</b>, contre une heure pour la version gratuite WP Edition. Ne "
|
5346 |
+
"prenez aucun risque avec votre blog !"
|
5347 |
|
5348 |
+
#: lib/wpplus.php:233
|
5349 |
msgid ""
|
5350 |
+
"This feature requires that PHP was compiled with the <code>--enable-shmop</"
|
5351 |
+
"code> parameter and that NinjaFirewall is running in \"Full WAF\" mode."
|
|
|
5352 |
msgstr ""
|
5353 |
+
"Cette fonction nécessite que PHP soit compilé avec le paramètre <code>--"
|
5354 |
+
"enable-shmop</code> et que NinjaFirewall soit installé en mode \"Full WAF\". "
|
|
|
5355 |
|
5356 |
+
#: lib/wpplus.php:236
|
5357 |
+
msgid "Shared Memory use"
|
5358 |
+
msgstr "Utilisation de la mémoire partagée"
|
5359 |
|
5360 |
+
#: lib/wpplus.php:238
|
5361 |
#, php-format
|
5362 |
msgid ""
|
5363 |
"Although NinjaFirewall is already <a href=\"%s\">much faster than other "
|
5370 |
"Edition</b> améliore encore plus ses performances en utilisant la mémoire "
|
5371 |
"partagée."
|
5372 |
|
5373 |
+
#: lib/wpplus.php:238
|
5374 |
msgid ""
|
5375 |
"This allows easier and faster inter-process communication between the "
|
5376 |
"firewall and the plugin part of NinjaFirewall and, because its data and "
|
5382 |
"stockées en mémoire et le pare-feu n'a même plus besoin de se connecter à la "
|
5383 |
"base de données pour y accéder."
|
5384 |
|
5385 |
+
#: lib/wpplus.php:238
|
5386 |
msgid ""
|
5387 |
"This dramatically increases the processing speed (there is nothing faster "
|
5388 |
"than RAM), prevents blocking I/O and MySQL slow queries. On a very busy "
|
5389 |
"server like a multi-site network, the firewall processing speed will "
|
5390 |
"increase from 25% to 30%. It can be enabled from the \"Firewall Options\" "
|
5391 |
+
"menu."
|
5392 |
msgstr ""
|
5393 |
"Cela augmente considérablement la vitesse de traitement (il n'y a rien de "
|
5394 |
"plus rapide que la mémoire), empêche le blocage des E/S et les requêtes "
|
5395 |
"lentes MySQL. Sur un serveur très sollicité comme un réseau multi-site, la "
|
5396 |
"vitesse de traitement de pare-feu va augmenter de 25% à 30%. Cette option "
|
5397 |
+
"peut être activé à partir de la page \"Options du pare-feu\"."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5398 |
|
5399 |
+
#: lib/wpplus.php:245
|
5400 |
msgid ""
|
5401 |
"Learn more</a> about the <font color=\"#21759B\">WP+</font> Edition unique "
|
5402 |
"features."
|
5404 |
"En savoir plus</a> sur les caractéristiques uniques de la version <font "
|
5405 |
"color=\"#21759B\">WP+</font>."
|
5406 |
|
5407 |
+
#: lib/wpplus.php:246
|
5408 |
msgid "Compare</a> the WP and <font color=\"#21759B\">WP+</font> Editions."
|
5409 |
msgstr "Comparez</a> les versions WP et <font color=\"#21759B\">WP+</font>."
|
5410 |
|
5512 |
msgid "The PHP msqli extension is missing or not loaded."
|
5513 |
msgstr "L'extension PHP mysqli est manquante ou bien n'est pas chargée."
|
5514 |
|
5515 |
+
#: ninjafirewall.php:82
|
5516 |
+
msgid "Cannot retrieve user options from database (#4)"
|
5517 |
+
msgstr ""
|
5518 |
+
"Impossible de récupérer les options de l'utilisateur dans la base de données "
|
5519 |
+
"(#4)"
|
5520 |
+
|
5521 |
+
#: ninjafirewall.php:83
|
5522 |
+
msgid "Cannot retrieve user rules from database (#4)"
|
5523 |
+
msgstr ""
|
5524 |
+
"Impossible de récupérer les règles de l'utilisateur dans la base de données "
|
5525 |
+
"(#4)"
|
5526 |
+
|
5527 |
+
#: ninjafirewall.php:109
|
5528 |
msgid ""
|
5529 |
"You do not have \"unfiltered_html\" capability. Please enable it in order to "
|
5530 |
"run NinjaFirewall (or make sure you do not have \"DISALLOW_UNFILTERED_HTML\" "
|
5535 |
"la directive \"DISALLOW_UNFILTERED_HTML\" activée dans votre fichier wp-"
|
5536 |
"config.php)."
|
5537 |
|
5538 |
+
#: ninjafirewall.php:116
|
5539 |
#, php-format
|
5540 |
msgid ""
|
5541 |
"NinjaFirewall requires WordPress 3.3 or greater but your current version is "
|
5544 |
"NinjaFirewall nécessite au moins WordPress 3.3 mais votre version de "
|
5545 |
"WordPress est %s."
|
5546 |
|
5547 |
+
#: ninjafirewall.php:120
|
5548 |
#, php-format
|
5549 |
msgid ""
|
5550 |
"NinjaFirewall requires PHP 5.3 or greater but your current version is %s."
|
5551 |
msgstr ""
|
5552 |
"NinjaFirewall nécessite au moins PHP 5.3 mais votre version de PHP est %s."
|
5553 |
|
5554 |
+
#: ninjafirewall.php:124
|
5555 |
#, php-format
|
5556 |
msgid "NinjaFirewall requires the PHP %s extension."
|
5557 |
msgstr "NinjaFirewall nécessite l'extension PHP %s."
|
5558 |
|
5559 |
+
#: ninjafirewall.php:128
|
5560 |
msgid ""
|
5561 |
"You have SAFE_MODE enabled. Please disable it, it is deprecated as of PHP "
|
5562 |
"5.3.0 (see http://php.net/safe-mode)."
|
5565 |
"devenue obsolète depuis PHP 5.3 et a été supprimée depuis PHP 5.4 (cf. "
|
5566 |
"http://php.net/safe-mode)."
|
5567 |
|
5568 |
+
#: ninjafirewall.php:132
|
5569 |
msgid "You are not allowed to activate NinjaFirewall."
|
5570 |
msgstr "Vous n’êtes pas autorisé à activer NinjaFirewall."
|
5571 |
|
5572 |
+
#: ninjafirewall.php:136
|
5573 |
msgid "NinjaFirewall is not compatible with Microsoft Windows."
|
5574 |
msgstr "NinjaFirewall n'est pas compatible avec Microsoft Windows."
|
5575 |
|
5576 |
+
#: ninjafirewall.php:288
|
5577 |
+
msgid ""
|
5578 |
+
"All fields will be restored to their default values and any changes you made "
|
5579 |
+
"will be lost. Continue?"
|
5580 |
+
msgstr ""
|
5581 |
+
"Tous les champs vont être re-initialisés et vos changements seront perdus. "
|
5582 |
+
"Continuer ?"
|
5583 |
+
|
5584 |
+
#: ninjafirewall.php:292
|
5585 |
+
msgid "Missing security nonce, try to reload the page."
|
5586 |
+
msgstr "La nonce de sécurité est manquante, essayer de recharger cette page."
|
5587 |
+
|
5588 |
+
#: ninjafirewall.php:294
|
5589 |
+
msgid "Please select the HTTP server in the list."
|
5590 |
+
msgstr "Sélectionnez votre serveur HTTP dans la list."
|
5591 |
+
|
5592 |
+
#: ninjafirewall.php:298
|
5593 |
+
msgid ""
|
5594 |
+
"This action will restore the selected configuration file and will override "
|
5595 |
+
"all your current firewall options, policies and rules. Continue?"
|
5596 |
+
msgstr ""
|
5597 |
+
"Cette action va restaurer le fichier de configuration sélectionné et "
|
5598 |
+
"remplacera toutes les options, politiques et règles de pare-feu actuelles. "
|
5599 |
+
"Continuer ?"
|
5600 |
+
|
5601 |
+
#: ninjafirewall.php:302
|
5602 |
+
msgid ""
|
5603 |
+
"Any character that is not a letter [a-zA-Z], a digit [0-9], a dot [.], a "
|
5604 |
+
"hyphen [-] or an underscore [_] will be removed from the filename and "
|
5605 |
+
"replaced with the substitution character. Continue?"
|
5606 |
+
msgstr ""
|
5607 |
+
"Tout caractère qui n'est pas une lettre [a-zA-Z], un chiffre [0-9], un point "
|
5608 |
+
"[.], un trait d'union[-] ou un caractère de soulignement[_], sera supprimé "
|
5609 |
+
"du nom du fichier et remplacé par le caractère de substitution."
|
5610 |
+
|
5611 |
+
#: ninjafirewall.php:304
|
5612 |
+
msgid ""
|
5613 |
+
"Ensure that you can access your admin console over HTTPS before enabling "
|
5614 |
+
"this option, otherwise you will lock yourself out of your site. Continue?"
|
5615 |
+
msgstr ""
|
5616 |
+
"Assurez-vous de bien disposer d'une connexion HTTPS avant d'activer cette "
|
5617 |
+
"option, sinon vous risqueriez de ne plus pouvoir accéder à l'interface "
|
5618 |
+
"d'administration. Continuer ?"
|
5619 |
+
|
5620 |
+
#: ninjafirewall.php:308
|
5621 |
+
msgid "Delete the current snapshot ?"
|
5622 |
+
msgstr "Supprimer l'instantané actuel ?"
|
5623 |
+
|
5624 |
+
#: ninjafirewall.php:312
|
5625 |
+
msgid "Invalid character."
|
5626 |
+
msgstr "Caractère invalide."
|
5627 |
+
|
5628 |
+
#: ninjafirewall.php:314
|
5629 |
+
msgid "\"admin\" is not acceptable, please choose another user name."
|
5630 |
+
msgstr ""
|
5631 |
+
"\"admin\" n\\'est pas acceptable, merci de bien vouloir choisir un autre "
|
5632 |
+
"identifiant."
|
5633 |
+
|
5634 |
+
#: ninjafirewall.php:316
|
5635 |
+
msgid "Please enter max 1024 character only."
|
5636 |
+
msgstr "Veuillez ne pas entrer plus de 1 024 caractères."
|
5637 |
+
|
5638 |
+
#: ninjafirewall.php:318
|
5639 |
+
msgid "Select when to enable the login protection."
|
5640 |
+
msgstr "Veuillez sélectionner quand activer la protection."
|
5641 |
+
|
5642 |
+
#: ninjafirewall.php:320
|
5643 |
+
msgid "Enter a name and a password for the HTTP authentication."
|
5644 |
+
msgstr ""
|
5645 |
+
"Veuillez entrer un nom d'utilisateur et mot de passe pour l'authentification "
|
5646 |
+
"HTTP."
|
5647 |
+
|
5648 |
+
#: ninjafirewall.php:324
|
5649 |
+
msgid "Your public key is not valid."
|
5650 |
+
msgstr "Votre clé publique n\\'est pas valide."
|
5651 |
+
|
5652 |
+
#: ninjafirewall.php:328
|
5653 |
+
msgid "No traffic yet, please wait"
|
5654 |
+
msgstr "Aucun visiteur actuellement, veuillez patienter"
|
5655 |
+
|
5656 |
+
#: ninjafirewall.php:330
|
5657 |
+
msgid "seconds..."
|
5658 |
+
msgstr "secondes..."
|
5659 |
+
|
5660 |
+
#: ninjafirewall.php:332
|
5661 |
+
msgid "Error: Live Log did not receive the expected response from your server:"
|
5662 |
+
msgstr "Erreur : le serveur distant n\\'a pas retourné la réponse attendue :"
|
5663 |
+
|
5664 |
+
#: ninjafirewall.php:334
|
5665 |
+
msgid "Error: URL does not seem to exist (404 Not Found):"
|
5666 |
+
msgstr "Erreur : l'URL ne semble pas exister (404 Not Found) :"
|
5667 |
+
|
5668 |
+
#: ninjafirewall.php:336
|
5669 |
+
msgid "Error: Cannot find your log file. Try to reload this page."
|
5670 |
+
msgstr ""
|
5671 |
+
"Erreur : Impossible de trouver le fichier log. Essayez de recharger cette "
|
5672 |
+
"page."
|
5673 |
+
|
5674 |
+
#: ninjafirewall.php:338
|
5675 |
+
msgid "Error: The HTTP server returned the following error code:"
|
5676 |
+
msgstr "Erreur : Le serveur HTTP a retourné le code d'erreur suivant :"
|
5677 |
+
|
5678 |
+
#: ninjafirewall.php:561
|
5679 |
+
msgid "Error: Security nonces do not match. Reload the page and try again."
|
5680 |
+
msgstr ""
|
5681 |
+
"Erreur : Les nonces de sécurité ne correspondent pas. Veuillez recharger "
|
5682 |
+
"cette page."
|
5683 |
+
|
5684 |
+
#: ninjafirewall.php:567
|
5685 |
+
msgid "Error: NinjaFirewall is disabled"
|
5686 |
+
msgstr "Erreur : NinjaFirewall est désactivé"
|
5687 |
+
|
5688 |
+
#: ninjafirewall.php:572
|
5689 |
+
#, php-format
|
5690 |
+
msgid "Error: missing parameter (%s)."
|
5691 |
+
msgstr "Erreur : Paramètre manquant (%s)."
|
5692 |
+
|
5693 |
+
#: ninjafirewall.php:715
|
5694 |
msgid "NinjaFirewall: Overview"
|
5695 |
msgstr "NinjaFirewall : Aperçu"
|
5696 |
|
5697 |
+
#: ninjafirewall.php:720
|
5698 |
msgid "NinjaFirewall: Statistics"
|
5699 |
msgstr "NinjaFirewall : Statistiques"
|
5700 |
|
5701 |
+
#: ninjafirewall.php:725
|
5702 |
msgid "NinjaFirewall: Firewall Options"
|
5703 |
msgstr "NinjaFirewall : Options du Pare-feu"
|
5704 |
|
5705 |
+
#: ninjafirewall.php:729
|
5706 |
msgid "NinjaFirewall: Firewall Policies"
|
5707 |
msgstr "NinjaFirewall : Politiques du Pare-feu"
|
5708 |
|
5709 |
+
#: ninjafirewall.php:733
|
5710 |
msgid "NinjaFirewall: File Guard"
|
5711 |
msgstr "NinjaFirewall: File Guard"
|
5712 |
|
5713 |
+
#: ninjafirewall.php:737
|
5714 |
msgid "NinjaFirewall: File Check"
|
5715 |
msgstr "NinjaFirewall: File Check"
|
5716 |
|
5717 |
+
#: ninjafirewall.php:747
|
5718 |
msgid "NinjaFirewall: Anti-Malware"
|
5719 |
msgstr "NinjaFirewall : Anti-Malware"
|
5720 |
|
5721 |
+
#: ninjafirewall.php:751
|
5722 |
msgid "NinjaFirewall: Network"
|
5723 |
msgstr "NinjaFirewall : Réseau"
|
5724 |
|
5725 |
+
#: ninjafirewall.php:755
|
5726 |
msgid "NinjaFirewall: Event Notifications"
|
5727 |
msgstr "NinjaFirewall : Notifications d’Événement"
|
5728 |
|
5729 |
+
#: ninjafirewall.php:759
|
5730 |
msgid "NinjaFirewall: Log-in Protection"
|
5731 |
msgstr "NinjaFirewall : Page de Connexion"
|
5732 |
|
5733 |
+
#: ninjafirewall.php:763
|
5734 |
msgid "NinjaFirewall: Firewall Log"
|
5735 |
msgstr "NinjaFirewall : Journal du Pare-feu"
|
5736 |
|
5737 |
+
#: ninjafirewall.php:767
|
5738 |
msgid "NinjaFirewall: Live Log"
|
5739 |
msgstr "NinjaFirewall: Live Log"
|
5740 |
|
5741 |
+
#: ninjafirewall.php:771
|
5742 |
msgid "NinjaFirewall: Rules Editor"
|
5743 |
msgstr "NinjaFirewall : Éditeur de Règles"
|
5744 |
|
5745 |
+
#: ninjafirewall.php:775
|
5746 |
msgid "NinjaFirewall: Rules Update"
|
5747 |
msgstr "NinjaFirewall: Mise à Jour des Règles"
|
5748 |
|
5749 |
+
#: ninjafirewall.php:782
|
5750 |
msgid "NinjaFirewall: About"
|
5751 |
msgstr "NinjaFirewall : À Propos"
|
5752 |
|
5753 |
+
#: ninjafirewall.php:782
|
5754 |
msgid "About..."
|
5755 |
msgstr "À Propos..."
|
5756 |
|
5757 |
+
#: ninjafirewall.php:822
|
5758 |
msgid "NinjaFirewall Settings"
|
5759 |
msgstr "Réglages de NinjaFirewall"
|
5760 |
|
5761 |
+
#: ninjafirewall.php:830
|
5762 |
msgid "NinjaFirewall is enabled"
|
5763 |
msgstr "NinjaFirewall est activé"
|
5764 |
|
5765 |
+
#: ninjafirewall.php:1010
|
5766 |
msgid "Access Restricted"
|
5767 |
msgstr "Accès limité"
|
5768 |
|
5769 |
+
#: ninjafirewall.php:1016
|
5770 |
msgid "Settings"
|
5771 |
msgstr "Réglages"
|
5772 |
|
5773 |
+
#: ninjafirewall.php:1017
|
5774 |
msgid "Upgrade to Premium"
|
5775 |
msgstr "Passez Premium !"
|
5776 |
|
5777 |
+
#: ninjafirewall.php:1018
|
5778 |
msgid "Rate it!"
|
5779 |
msgstr "Notez-le !"
|
5780 |
|
5781 |
+
#~ msgid "Disable the fatal error handler <code>WP_Fatal_Error_Handler</code>:"
|
5782 |
+
#~ msgstr ""
|
5783 |
+
#~ "Désactiver le gestionnaire d'erreurs fatales "
|
5784 |
+
#~ "<code>WP_Fatal_Error_Handler</code> :"
|
5785 |
+
|
5786 |
+
#~ msgid ""
|
5787 |
+
#~ "You may need to wait up to five minutes before PHP reloads the modified "
|
5788 |
+
#~ "INI files, because it caches them. <strong>Please wait for <font id=\"nfw-"
|
5789 |
+
#~ "waf-count\">%d</font> seconds</strong> before trying again (you can "
|
5790 |
+
#~ "navigate away from this page and come back in a few minutes)."
|
5791 |
+
#~ msgstr ""
|
5792 |
+
#~ "Vous devez peut-être attendre cinq minutes avant que PHP ne recharge les "
|
5793 |
+
#~ "fichiers INI modifiés, car il les met en cache. <strong>Veuillez "
|
5794 |
+
#~ "patienter pendant <font id=\"nfw-waf-count\">%d</font> secondes</strong> "
|
5795 |
+
#~ "avant de réessayer (vous pouvez quitter cette page et revenir dans "
|
5796 |
+
#~ "quelques minutes)."
|
5797 |
+
|
5798 |
+
#~ msgid ""
|
5799 |
+
#~ "The log menu has been revamped too. You can disable the firewall log, "
|
5800 |
+
#~ "delete the current one, enable its rotation based on the size of the file "
|
5801 |
+
#~ "and, if any, view each rotated log separately. Quick filtering options "
|
5802 |
+
#~ "are easily accessible from checkboxes and the log can be exported as a "
|
5803 |
+
#~ "TSV (tab-separated values) text file."
|
5804 |
+
#~ msgstr ""
|
5805 |
+
#~ "Le <b>Journal du Pare-feu</b> a été remanié. Vous pouvez maintenant le "
|
5806 |
+
#~ "désactiver, le supprimer et permettre sa rotation en vous basant sur la "
|
5807 |
+
#~ "taille du fichier. Des options de filtrage rapides sont facilement "
|
5808 |
+
#~ "accessibles à partir de cases à cocher et le journal peut également être "
|
5809 |
+
#~ "exporté dans un fichier au format TSV (valeurs séparées par des "
|
5810 |
+
#~ "tabulations) :"
|
5811 |
+
|
5812 |
+
#~ msgid "(not recommended)"
|
5813 |
+
#~ msgstr " (pas recommandé)"
|
5814 |
+
|
5815 |
+
#~ msgid "Need more security? Check out NinjaFirewall"
|
5816 |
+
#~ msgstr "Besoin de plus de sécurité ? Venez découvrir NinjaFirewall"
|
5817 |
+
|
5818 |
+
#~ msgid ""
|
5819 |
+
#~ "is a supercharged Edition of our Web Application Firewall. It adds many "
|
5820 |
+
#~ "new exciting features and blazing fast performances to make it the "
|
5821 |
+
#~ "fastest and most advanced security plugin for WordPress."
|
5822 |
+
#~ msgstr ""
|
5823 |
+
#~ "est une version encore plus musclée de notre pare-feu applicatif. Elle "
|
5824 |
+
#~ "offre de meilleures performances et contient de nouvelles fonctionnalités "
|
5825 |
+
#~ "qui en font l'extension de sécurité pour WordPress la plus avancée et "
|
5826 |
+
#~ "puissante sur le marché."
|
5827 |
+
|
5828 |
+
#~ msgid ""
|
5829 |
+
#~ "<b>Access Control</b> is a powerful set of directives that can be used to "
|
5830 |
+
#~ "allow or restrict access to your blog, depending on the <strong>User "
|
5831 |
+
#~ "Role</strong>, <strong>IP</strong>, <strong>Geolocation</strong>, "
|
5832 |
+
#~ "<strong>Requested URL</strong>, <strong>User-agent</strong> visitors "
|
5833 |
+
#~ "behavior (<strong>Rate Limiting</strong>)and <strong>User Input</strong>. "
|
5834 |
+
#~ "Those directives will be processed before the Firewall Policies and "
|
5835 |
+
#~ "NinjaFirewall's built-in security rules."
|
5836 |
+
#~ msgstr ""
|
5837 |
+
#~ "Le <b>Contrôle d'Accès</b> est un puissant ensemble de directives qui "
|
5838 |
+
#~ "peut être utilisé pour autoriser ou restreindre l'accès à votre blog "
|
5839 |
+
#~ "selon de nombreux critères : <strong>Rôle</strong> de l'utilisateur, "
|
5840 |
+
#~ "<strong>adresse IP</strong>, <strong>Géolocalisation</strong>, "
|
5841 |
+
#~ "<strong>URL demandée</strong>, <strong>User-agent</strong>, le "
|
5842 |
+
#~ "comportement des visiteurs (<strong>Limitation du trafic</strong>) et les "
|
5843 |
+
#~ "<strong>Entrées utilisateur</strong>."
|
5844 |
+
|
5845 |
+
#~ msgid ""
|
5846 |
+
#~ "Its main configuration allows you to whitelist WordPress users depending "
|
5847 |
+
#~ "on their roles, to select the source IP (useful if your site is using a "
|
5848 |
+
#~ "CDN or behind a reverse-proxy/load balancer), and the HTTP methods all "
|
5849 |
+
#~ "directives should apply to:"
|
5850 |
+
#~ msgstr ""
|
5851 |
+
#~ "Sa configuration principale vous permet de créer une liste blanche des "
|
5852 |
+
#~ "utilisateurs de WordPress en fonction de leurs rôles, de sélectionner "
|
5853 |
+
#~ "l'adresse IP source (utile si votre site utilise un CDN ou un équilibreur "
|
5854 |
+
#~ "de charge), et les méthodes HTTP auxquelles s'appliqueront toutes les "
|
5855 |
+
#~ "directives :"
|
5856 |
+
|
5857 |
+
#~ msgid ""
|
5858 |
+
#~ "<b>Access Control</b> can use geolocation to block visitors from specific "
|
5859 |
+
#~ "countries. It can apply to the whole blog or only to specific folders or "
|
5860 |
+
#~ "scripts (e.g., /wp-login.php, /xmlrpc.php etc). If you have a theme or a "
|
5861 |
+
#~ "plugin that needs to know your visitors location, you can even ask "
|
5862 |
+
#~ "NinjaFirewall to append the country code to the PHP headers:"
|
5863 |
+
#~ msgstr ""
|
5864 |
+
#~ "Le <b>Contrôle d'Accès</b> peut utiliser la géolocalisation pour bloquer "
|
5865 |
+
#~ "les visiteurs en provenance de pays spécifiques. Il peut s'appliquer à "
|
5866 |
+
#~ "tout le site ou bien à certains scripts ou répertoires uniquement (ex: /"
|
5867 |
+
#~ "wp-login.php, xmlrpc.php etc). Si vous avez un thème ou une extension "
|
5868 |
+
#~ "qui nécessite de géolocaliser vos visiteurs, vous pouvez même demander à "
|
5869 |
+
#~ "NinjaFirewall d’insérer le code à deux lettres du pays dans les en-têtes "
|
5870 |
+
#~ "PHP :"
|
5871 |
+
|
5872 |
+
#~ msgid ""
|
5873 |
+
#~ "<b>Access Control</b> can be used to whitelist/blacklist an IP or any "
|
5874 |
+
#~ "part of it. NinjaFirewall natively supports IPv4 and IPv6 protocols, for "
|
5875 |
+
#~ "both public and private addresses:"
|
5876 |
+
#~ msgstr ""
|
5877 |
+
#~ "Le <b>Contrôle d'Accès</b> peut immédiatement accepter ou bloquer une "
|
5878 |
+
#~ "adresse IP ou une partie de celle-ci. NinjaFirewall est compatible avec "
|
5879 |
+
#~ "l'IPv4 et l'IPv6 :"
|
5880 |
+
|
5881 |
+
#~ msgid ""
|
5882 |
+
#~ "<b>Access Control</b> can slow down aggressive bots, crawlers, web "
|
5883 |
+
#~ "scrapers or even small HTTP attacks with its <strong>Rate-Limiting</"
|
5884 |
+
#~ "strong> feature."
|
5885 |
+
#~ msgstr ""
|
5886 |
+
#~ "Le <b>Contrôle d'Accès</b> vous permet de ralentir les bots, crawlers, "
|
5887 |
+
#~ "web scrapers ou même de petites attaques HTTP avec son option "
|
5888 |
+
#~ "<strong>Limiter le trafic</strong>."
|
5889 |
+
|
5890 |
+
#~ msgid ""
|
5891 |
+
#~ "Because it can block attackers <strong>before WordPress and all its "
|
5892 |
+
#~ "plugins are loaded</strong> and can handle thousands of HTTP requests per "
|
5893 |
+
#~ "second, NinjaFirewall will save precious bandwidth and reduce your server "
|
5894 |
+
#~ "load."
|
5895 |
+
#~ msgstr ""
|
5896 |
+
#~ "Parce qu'il peut bloquer les attaques <strong>avant que WordPress et ses "
|
5897 |
+
#~ "extensions ne soient chargés</strong> et peut gérer un très grand nombre "
|
5898 |
+
#~ "de requêtes HTTP par seconde, NinjaFirewall vous fera économiser de la "
|
5899 |
+
#~ "bande passante et permettra de réduire la charge du serveur."
|
5900 |
+
|
5901 |
+
#~ msgid ""
|
5902 |
+
#~ "<b>URL Access Control</b> lets you permanently allow/block any access to "
|
5903 |
+
#~ "one or more PHP scripts based on their path or name:"
|
5904 |
+
#~ msgstr ""
|
5905 |
+
#~ "Le <b>Contrôle d'accès par URL</b> vous permet d'autoriser / bloquer tout "
|
5906 |
+
#~ "accès à un ou plusieurs scripts PHP basé sur leur chemin ou leur "
|
5907 |
+
#~ "nom :"
|
5908 |
+
|
5909 |
+
#~ msgid ""
|
5910 |
+
#~ "<b>Bots Access Control</b> allows you block bots, scanners and various "
|
5911 |
+
#~ "annoying crawlers:"
|
5912 |
+
#~ msgstr ""
|
5913 |
+
#~ "Avec le <b>Contrôle d'accès par Bot</b> vous pouvez bloquer les robots, "
|
5914 |
+
#~ "scanners et autres robots ennuyeux :"
|
5915 |
+
|
5916 |
+
#~ msgid ""
|
5917 |
+
#~ "<b>User Input Access Control</b> allows you to to ignore or block some "
|
5918 |
+
#~ "specific user input:"
|
5919 |
+
#~ msgstr ""
|
5920 |
+
#~ "Le <b>Contrôle d'accès d'entrée utilisateur</b> vous permet d’ignorer ou "
|
5921 |
+
#~ "de bloquer une entrée utilisateur spécifique :"
|
5922 |
+
|
5923 |
+
#~ msgid ""
|
5924 |
+
#~ "If NinjaFirewall can hook and scan incoming requests, the <b><font color="
|
5925 |
+
#~ "\"#21759B\">WP+</font> Edition</b> can also hook the response body (i.e., "
|
5926 |
+
#~ "the output of the HTML page right before it is sent to your visitors "
|
5927 |
+
#~ "browser) and search it for some specific keywords. Such a filter can be "
|
5928 |
+
#~ "useful to detect hacking or malware patterns injected into your HTML page "
|
5929 |
+
#~ "(text strings, spam links, malicious JavaScript code), hackers shell "
|
5930 |
+
#~ "script, redirections and even errors (PHP/MySQL errors). Some suggested "
|
5931 |
+
#~ "keywords as well as a default list are included."
|
5932 |
+
#~ msgstr ""
|
5933 |
+
#~ "Si NinjaFirewall peut filtrer les requêtes HTTP entrantes, la version "
|
5934 |
+
#~ "<b><font color=\"#21759B\">WP+</font> Edition</b> peut aussi intercepter "
|
5935 |
+
#~ "les requêtes sortantes, c'est à dire le contenu de la page HTML juste "
|
5936 |
+
#~ "avant que celui-ci ne soit envoyé au navigateur de l'utilisateur. Ce type "
|
5937 |
+
#~ "de filtre est particulièrement intéressant pour détecter du code "
|
5938 |
+
#~ "malveillant injectés dans vos pages HTML (texte, liens, code JavaScript "
|
5939 |
+
#~ "etc), des scripts utilisés par les hackers (shell, backdoor) et même des "
|
5940 |
+
#~ "erreurs (PHP, MySQL). "
|
5941 |
+
|
5942 |
+
#~ msgid ""
|
5943 |
+
#~ "In the case of a positive detection, NinjaFirewall will not block the "
|
5944 |
+
#~ "response body but will send you an alert by email. It can even attach the "
|
5945 |
+
#~ "whole HTML source of the page for your review:"
|
5946 |
+
#~ msgstr ""
|
5947 |
+
#~ "En cas de détection positive, NinjaFirewall ne bloquera pas la requête "
|
5948 |
+
#~ "mais vous enverra immédiatement une alerte par e-mail :"
|
5949 |
+
|
5950 |
+
#~ msgid ""
|
5951 |
+
#~ "NinjaFirewall (<font color=\"#21759B\">WP+</font> Edition) can protect "
|
5952 |
+
#~ "your blog comment and registration forms against spam. The protection is "
|
5953 |
+
#~ "totally transparent to your visitors and does not require any "
|
5954 |
+
#~ "interaction: no CAPTCHA, no math puzzles or trivia questions. Extremely "
|
5955 |
+
#~ "easy to activate, but powerful enough to make spam bots life as miserable "
|
5956 |
+
#~ "as possible:"
|
5957 |
+
#~ msgstr ""
|
5958 |
+
#~ "NinjaFirewall (<font color=\"#21759B\">WP+</font> Edition) peut protéger "
|
5959 |
+
#~ "les formulaires de commentaire et d'inscription de votre blog contre le "
|
5960 |
+
#~ "spam. La protection est totalement transparente pour vos visiteurs et ne "
|
5961 |
+
#~ "nécessite ni CAPTCHA ni interaction de leur part. Extrêmement facile à "
|
5962 |
+
#~ "activer, mais assez puissante pour ne laisser aucune chance aux "
|
5963 |
+
#~ "spammeurs :"
|
5964 |
+
|
5965 |
+
#~ msgid ""
|
5966 |
+
#~ "NinjaFirewall (<font color=\"#21759B\">WP+</font> Edition) lets you "
|
5967 |
+
#~ "remotely access the firewall log of all your NinjaFirewall protected "
|
5968 |
+
#~ "websites from one single installation, using the <a href=\"%s"
|
5969 |
+
#~ "\">Centralized Logging</a> feature. You do not need any longer to log in "
|
5970 |
+
#~ "to individual servers to analyse your log data."
|
5971 |
+
#~ msgstr ""
|
5972 |
+
#~ "NinjaFirewall (<font color=\"#21759B\">WP+</font> Edition) vous permet "
|
5973 |
+
#~ "d’accéder, depuis votre blog principal, au journal du pare-feu de chacun "
|
5974 |
+
#~ "de vos sites protégés par NinjaFirewall grâce à la fonction de <a href="
|
5975 |
+
#~ "\"%s\">Centralisation des Logs</a>. Vous n'avez plus besoin de vous "
|
5976 |
+
#~ "connecter à chaque site pour analyser vos journaux."
|
5977 |
+
|
5978 |
+
#~ msgid "File uploads:"
|
5979 |
+
#~ msgstr "Téléchargements :"
|
5980 |
+
|
5981 |
+
#~ msgid ""
|
5982 |
+
#~ "NinjaFirewall (<font color=\"#21759B\">WP+</font> Edition) makes it "
|
5983 |
+
#~ "possible to allow uploads while rejecting potentially dangerous files: "
|
5984 |
+
#~ "scripts (PHP, CGI, Ruby, Python, bash/shell), C/C++ source code, binaries "
|
5985 |
+
#~ "(MZ/PE/NE and ELF formats), system files (.htaccess, .htpasswd and PHP "
|
5986 |
+
#~ "INI) and SVG files containing Javascript/XML events. You can easily limit "
|
5987 |
+
#~ "the size of each uploaded file too, without having to modify your PHP "
|
5988 |
+
#~ "configuration:"
|
5989 |
+
#~ msgstr ""
|
5990 |
+
#~ "NinjaFirewall (<font color=\"#21759B\">WP+</font> Edition) vous permet "
|
5991 |
+
#~ "d'autoriser ou d'interdire tout téléchargement de fichiers vers votre "
|
5992 |
+
#~ "site, ou bien de bloquer uniquement les fichiers potentiellement "
|
5993 |
+
#~ "dangereux : scripts (PHP, CGI, Ruby, Python, bash/shell), code source C/C+"
|
5994 |
+
#~ "+, fichiers exécutables (MZ/PE/NE et ELF), certains fichiers systèmes (."
|
5995 |
+
#~ "htaccess, .htpasswd et PHP INI) et les fichiers SVG contenant du "
|
5996 |
+
#~ "Javascript ou des Événements XML. Vous pouvez aussi sélectionner la "
|
5997 |
+
#~ "taille maximale d'un fichier téléchargé, sans avoir à modifier la "
|
5998 |
+
#~ "configuration de PHP :"
|
5999 |
+
|
6000 |
+
#~ msgid "Firewall Log:"
|
6001 |
+
#~ msgstr "Journal du Pare-feu :"
|
6002 |
+
|
6003 |
+
#~ msgid "Rules Update:"
|
6004 |
+
#~ msgstr "Mise à Jour des Règles :"
|
6005 |
+
|
6006 |
+
#~ msgid ""
|
6007 |
+
#~ "The <b><font color=\"#21759B\">WP+</font> Edition</b> can check for "
|
6008 |
+
#~ "security rules updates <b>as often as every 15 minutes</b>, versus one "
|
6009 |
+
#~ "hour for the free WP Edition."
|
6010 |
+
#~ msgstr ""
|
6011 |
+
#~ "NinjaFirewall <b><font color=\"#21759B\">WP+</font> Edition</b> peut "
|
6012 |
+
#~ "vérifier les mises à jour des règles de sécurité <b>toutes les 15 "
|
6013 |
+
#~ "minutes</b>, contre une heure pour la version gratuite WP Edition."
|
6014 |
+
|
6015 |
+
#~ msgid "Shared Memory use:"
|
6016 |
+
#~ msgstr "Utilisation de la mémoire partagée :"
|
6017 |
+
|
6018 |
+
#~ msgid ""
|
6019 |
+
#~ "This dramatically increases the processing speed (there is nothing faster "
|
6020 |
+
#~ "than RAM), prevents blocking I/O and MySQL slow queries. On a very busy "
|
6021 |
+
#~ "server like a multi-site network, the firewall processing speed will "
|
6022 |
+
#~ "increase from 25% to 30%. It can be enabled from the \"Firewall Options\" "
|
6023 |
+
#~ "menu:"
|
6024 |
+
#~ msgstr ""
|
6025 |
+
#~ "Cela augmente considérablement la vitesse de traitement (il n'y a rien de "
|
6026 |
+
#~ "plus rapide que la mémoire), empêche le blocage des E/S et les requêtes "
|
6027 |
+
#~ "lentes MySQL. Sur un serveur très sollicité comme un réseau multi-site, "
|
6028 |
+
#~ "la vitesse de traitement de pare-feu va augmenter de 25% à 30%. Cette "
|
6029 |
+
#~ "option peut être activé à partir de la page \"Options du pare-feu"
|
6030 |
+
#~ "\" :"
|
6031 |
+
|
6032 |
+
#~ msgid ""
|
6033 |
+
#~ "This feature requires that PHP was compiled with the <code>--enable-"
|
6034 |
+
#~ "shmop</code> parameter."
|
6035 |
+
#~ msgstr ""
|
6036 |
+
#~ "Cette fonction nécessite que PHP soit compilé avec le paramètre <code>--"
|
6037 |
+
#~ "enable-shmop</code>."
|
6038 |
+
|
6039 |
+
#~ msgid "Oops! Full WAF mode not is not enabled yet."
|
6040 |
+
#~ msgstr "Oops! Le mode Full WAF n'est pas encore activé."
|
6041 |
+
|
6042 |
+
#~ msgid "Sleeping"
|
6043 |
+
#~ msgstr "Rafraîchissement dans"
|
6044 |
+
|
6045 |
+
#~ msgid ""
|
6046 |
+
#~ "Error: You have a copy of NinjaFirewall (%s) installed.<br />Please "
|
6047 |
+
#~ "uninstall it completely before attempting to install NinjaFirewall (WP "
|
6048 |
+
#~ "Edition)."
|
6049 |
+
#~ msgstr ""
|
6050 |
+
#~ "Erreur : Vous avez déjà une copie de NinjaFirewall (%s) installée<br /"
|
6051 |
+
#~ ">Veuillez la désinstaller complètement avant d'installer NinjaFirewall "
|
6052 |
+
#~ "(WP Edition)."
|
6053 |
+
|
6054 |
+
#~ msgid "Thank you for using NinjaFirewall"
|
6055 |
+
#~ msgstr "Merci d'utiliser NinjaFirewall"
|
6056 |
+
|
6057 |
+
#~ msgid ""
|
6058 |
+
#~ "This installer will help you to make the setup process as quick and easy "
|
6059 |
+
#~ "as possible."
|
6060 |
+
#~ msgstr ""
|
6061 |
+
#~ "Cet installateur va vous aider afin de rendre le processus d'installation "
|
6062 |
+
#~ "aussi rapide et facile que possible."
|
6063 |
+
|
6064 |
+
#~ msgid ""
|
6065 |
+
#~ "Although NinjaFirewall looks like a regular security plugin, it is not. "
|
6066 |
+
#~ "It can be installed and configured from the WordPress admin console, but "
|
6067 |
+
#~ "it is a stand-alone Web Application Firewall that sits in front of "
|
6068 |
+
#~ "WordPress."
|
6069 |
+
#~ msgstr ""
|
6070 |
+
#~ "Bien que NinjaFirewall ressemble à toute autre extension pour WordPress, "
|
6071 |
+
#~ "il est très différent. Il peut certes être installé et configuré à partir "
|
6072 |
+
#~ "de votre Tableau de Bord, mais c'est un pare-feu applicatif autonome qui "
|
6073 |
+
#~ "agit en amont de WordPress."
|
6074 |
+
|
6075 |
+
#~ msgid ""
|
6076 |
+
#~ "It can run in two different modes: <b>Full WAF</b> or <b>WordPress WAF</"
|
6077 |
+
#~ "b> modes."
|
6078 |
+
#~ msgstr ""
|
6079 |
+
#~ "Il peut fonctionner en deux modes différents : <b>Full WAF</b> ou "
|
6080 |
+
#~ "<b>WordPress WAF</b>."
|
6081 |
+
|
6082 |
+
#~ msgid "Full WAF mode"
|
6083 |
+
#~ msgstr "Mode Full WAF"
|
6084 |
+
|
6085 |
+
#~ msgid ""
|
6086 |
+
#~ "In <b>Full WAF</b> mode, NinjaFirewall will hook, scan, reject or "
|
6087 |
+
#~ "sanitise any HTTP and HTTPS request sent to a PHP script before it "
|
6088 |
+
#~ "reaches WordPress, its plugins or even the database. All scripts located "
|
6089 |
+
#~ "inside the blog installation directories and sub-directories will be "
|
6090 |
+
#~ "protected, including those that aren't part of the WordPress package. "
|
6091 |
+
#~ "Even encoded PHP scripts (e.g., ionCube), potential backdoors and shell "
|
6092 |
+
#~ "scripts (e.g., c99, r57) will be filtered by NinjaFirewall."
|
6093 |
+
#~ msgstr ""
|
6094 |
+
#~ "En mode <b>Full WAF</b>, NinjaFirewall peut intercepter, analyser, "
|
6095 |
+
#~ "nettoyer ou rejeter toute requête HTTP ou HTTPS envoyée à un script PHP "
|
6096 |
+
#~ "avant même que celle-ci n'atteigne WordPress ou l'une de ses extensions. "
|
6097 |
+
#~ "Tous les scripts situés dans le répertoire et sous-répertoires "
|
6098 |
+
#~ "d'installation de votre blog seront protégés, y compris ceux qui ne font "
|
6099 |
+
#~ "pas partie de WordPress. Même un script PHP encodé (par ex. ionCube), une "
|
6100 |
+
#~ "éventuelle porte dérobée ou un script shell (par ex. c99, r57 ) installés "
|
6101 |
+
#~ "par un pirate seront filtrés par NinjaFirewall."
|
6102 |
+
|
6103 |
+
#~ msgid ""
|
6104 |
+
#~ "That makes it a true firewall and gives you the highest possible level of "
|
6105 |
+
#~ "protection: <a href=\"%s\" title=\"%s\">security without compromise</a>."
|
6106 |
+
#~ msgstr ""
|
6107 |
+
#~ "Cela fait de lui un véritable pare-feu applicatif et vous offre le niveau "
|
6108 |
+
#~ "de protection le plus élevé possible : <a href=\"%s\" title=\"%s\">La "
|
6109 |
+
#~ "sécurité sans aucun compromis</a>."
|
6110 |
+
|
6111 |
+
#~ msgid ""
|
6112 |
+
#~ "To run NinjaFirewall in <b>Full WAF</b> mode, your server must allow the "
|
6113 |
+
#~ "use of the <code>auto_prepend_file</code> PHP directive. It is required "
|
6114 |
+
#~ "to instruct the PHP interpreter to load the firewall before WordPress or "
|
6115 |
+
#~ "any other script. Most of the time it works right out of the box, or may "
|
6116 |
+
#~ "require <a href=\"%s\" title=\"%s\">some very little tweaks</a>. But in a "
|
6117 |
+
#~ "few cases, mostly because of some shared hosting plans restrictions, it "
|
6118 |
+
#~ "may simply not work at all."
|
6119 |
+
#~ msgstr ""
|
6120 |
+
#~ "Pour installer NinjaFirewall en mode <b>Full WAF</b>, votre serveur doit "
|
6121 |
+
#~ "autoriser l'utilisation de la directive PHP <code>auto_prepend_file</"
|
6122 |
+
#~ "code>. Celle-ci est nécessaire pour forcer l'interpréteur PHP à charger "
|
6123 |
+
#~ "le pare-feu avant WordPress ou tout autre script. La plupart du temps, "
|
6124 |
+
#~ "l'installation fonctionne sans aucun problème ou, peut nécessiter <a href="
|
6125 |
+
#~ "\"%s\" title=\"%s\">quelques petits ajustements</a>. Mais dans quelques "
|
6126 |
+
#~ "cas, principalement en raison de certaines restrictions d'hébergement "
|
6127 |
+
#~ "partagé, il se peut que l'installation ne puisse pas fonctionner du tout."
|
6128 |
+
|
6129 |
+
#~ msgid "WordPress WAF mode"
|
6130 |
+
#~ msgstr "Mode WordPress WAF"
|
6131 |
+
|
6132 |
+
#~ msgid ""
|
6133 |
+
#~ "The <b>WordPress WAF</b> mode requires to load NinjaFirewall via the "
|
6134 |
+
#~ "WordPress wp-config.php script. This process makes it easy to setup and "
|
6135 |
+
#~ "the installation will always be successful, regardless of your hosting "
|
6136 |
+
#~ "plan restrictions."
|
6137 |
+
#~ msgstr ""
|
6138 |
+
#~ "Le mode <b>WordPress WAF</b> nécessite de charger NinjaFirewall via le "
|
6139 |
+
#~ "script wp-config.php de WordPress. L'installation est très simple et "
|
6140 |
+
#~ "toujours couronnée de succès et ce, quelles que soient les restrictions "
|
6141 |
+
#~ "de votre plan hébergement."
|
6142 |
+
|
6143 |
+
#~ msgid ""
|
6144 |
+
#~ "NinjaFirewall will still load before WordPress, its plugins and the "
|
6145 |
+
#~ "database and will run as fast as the <b>Full WAF</b> mode."
|
6146 |
+
#~ msgstr ""
|
6147 |
+
#~ "NinjaFirewall se chargera là encore avant WordPress, ses extensions et la "
|
6148 |
+
#~ "base de données, et ses performances seront identiques à celles du mode "
|
6149 |
+
#~ "<b>Full WAF</b>."
|
6150 |
+
|
6151 |
+
#~ msgid ""
|
6152 |
+
#~ "However, the downside of this mode is that NinjaFirewall will be able to "
|
6153 |
+
#~ "hook and filter HTTP requests sent to WordPress only. A few features such "
|
6154 |
+
#~ "as File Guard, the URL Access Control and Web Filter (WP+ Edition only) "
|
6155 |
+
#~ "will be limited."
|
6156 |
+
#~ msgstr ""
|
6157 |
+
#~ "Toutefois, l'inconvénient de ce mode est que NinjaFirewall ne pourra "
|
6158 |
+
#~ "intercepter, analyser, nettoyer ou rejeter que les requêtes HTTP ou HTTPS "
|
6159 |
+
#~ "directement adressées à WordPress uniquement, et non plus à tout autre "
|
6160 |
+
#~ "script PHP ou application tierce. Certaines fonctionnalités telles que "
|
6161 |
+
#~ "File Guard, le contrôle d'accès par URL et Web Filter (WP+ Edition "
|
6162 |
+
#~ "uniquement) seront limitées."
|
6163 |
+
|
6164 |
+
#~ msgid ""
|
6165 |
+
#~ "Despite being less powerful than the <b>Full WAF</b> mode, it still "
|
6166 |
+
#~ "offers a level of protection and performance higher than any other "
|
6167 |
+
#~ "security plugin."
|
6168 |
+
#~ msgstr ""
|
6169 |
+
#~ "Bien que moins puissant que <b>Full WAF</b>, le mode <b>WordPress WAF</b> "
|
6170 |
+
#~ "offre tout de même des performances et un niveau de protection supérieurs "
|
6171 |
+
#~ "aux autres extensions de sécurité pour WordPress disponibles sur le "
|
6172 |
+
#~ "marché."
|
6173 |
+
|
6174 |
+
#~ msgid "Installation"
|
6175 |
+
#~ msgstr "Installation"
|
6176 |
+
|
6177 |
+
#~ msgid ""
|
6178 |
+
#~ "We recommend to select the <b>Full WAF</b> mode option first. If it "
|
6179 |
+
#~ "fails, this installer will let you switch to the <b>WordPress WAF</b> "
|
6180 |
+
#~ "mode easily."
|
6181 |
+
#~ msgstr ""
|
6182 |
+
#~ "Nous vous recommandons de sélectionner d'abord l'option <b>Full WAF</b>. "
|
6183 |
+
#~ "Si elle échoue, ce programme d'installation vous proposera de passer "
|
6184 |
+
#~ "facilement au mode <b>WordPress WAF</b>."
|
6185 |
+
|
6186 |
+
#~ msgid "Full WAF mode (recommended)"
|
6187 |
+
#~ msgstr "Mode Full WAF (recommandé)"
|
6188 |
+
|
6189 |
+
#~ msgid ""
|
6190 |
+
#~ "Enter the email address where NinjaFirewall will send notifications and "
|
6191 |
+
#~ "reports:"
|
6192 |
+
#~ msgstr ""
|
6193 |
+
#~ "Entrez l'adresse e-mail où NinjaFirewall enverra ses notifications et "
|
6194 |
+
#~ "rapports :"
|
6195 |
+
|
6196 |
+
#~ msgid "Next Step"
|
6197 |
+
#~ msgstr "Étape suivante"
|
6198 |
+
|
6199 |
+
#~ msgid "Privacy policy"
|
6200 |
+
#~ msgstr "Politique de confidentialité"
|
6201 |
+
|
6202 |
+
#~ msgid ""
|
6203 |
+
#~ "NinjaFirewall cannot create its <code>nfwlog/</code>log and cache folder; "
|
6204 |
+
#~ "please make sure that the <code>%s</code> directory is writable"
|
6205 |
+
#~ msgstr ""
|
6206 |
+
#~ "NinjaFirewall ne peut pas créer le répertoire <code>nfwlog/</code>; "
|
6207 |
+
#~ "veuillez vous assurer que le répertoire <code>%s</code> est accessible en "
|
6208 |
+
#~ "écriture"
|
6209 |
+
|
6210 |
+
#~ msgid ""
|
6211 |
+
#~ "This is NinjaFirewall's logs, loader and cache directory. DO NOT alter or "
|
6212 |
+
#~ "remove it as long as NinjaFirewall is running!"
|
6213 |
+
#~ msgstr ""
|
6214 |
+
#~ "Ce répertoire est utilisé par NinjaFirewall. Veuillez NE PAS le supprimer "
|
6215 |
+
#~ "tant que NinjaFirewall est installé !"
|
6216 |
+
|
6217 |
+
#~ msgid "Try again"
|
6218 |
+
#~ msgstr "Essayer à nouveau"
|
6219 |
+
|
6220 |
+
#~ msgid "Quick Start, FAQ & Troubleshooting Guide"
|
6221 |
+
#~ msgstr "Guide d'Utilisation, d'Installation et de Dépannage"
|
6222 |
+
|
6223 |
+
#~ msgid "Hi,"
|
6224 |
+
#~ msgstr "Bonjour,"
|
6225 |
+
|
6226 |
+
#~ msgid ""
|
6227 |
+
#~ "This is NinjaFirewall's installer. Below are some helpful info and links "
|
6228 |
+
#~ "you may consider reading before using NinjaFirewall."
|
6229 |
+
#~ msgstr ""
|
6230 |
+
#~ "Je suis l'installateur de NinjaFirewall. Voici quelques informations et "
|
6231 |
+
#~ "liens qui pourraient vous être utiles (en langue anglaise) :"
|
6232 |
+
|
6233 |
+
#~ msgid "Must Read:"
|
6234 |
+
#~ msgstr "A lire aussi :"
|
6235 |
+
|
6236 |
+
#~ msgid "-Securing WordPress with NinjaFirewall. A step by step tutorial:"
|
6237 |
+
#~ msgstr ""
|
6238 |
+
#~ "-Sécurisation de WordPress avec NinjaFirewall. Un tutoriel étape par "
|
6239 |
+
#~ "étape :"
|
6240 |
+
|
6241 |
+
#~ msgid "-An introduction to NinjaFirewall filtering engine:"
|
6242 |
+
#~ msgstr "-Présentation du moteur de filtrage de NinjaFirewall :"
|
6243 |
+
|
6244 |
+
#~ msgid "-Testing NinjaFirewall without blocking your visitors:"
|
6245 |
+
#~ msgstr "-Tester NinjaFirewall sans bloquer vos visiteurs :"
|
6246 |
+
|
6247 |
+
#~ msgid "-Add your own code to the firewall: the \".htninja\" file:"
|
6248 |
+
#~ msgstr "-Ajoutez votre code au pare-feu: le fichier \".htninja\" :"
|
6249 |
+
|
6250 |
+
#~ msgid "-Restricting access to NinjaFirewall settings:"
|
6251 |
+
#~ msgstr "-Restreindre l'accès à la configuration de NinjaFirewall :"
|
6252 |
+
|
6253 |
+
#~ msgid "-Upgrading to PHP 7 with NinjaFirewall installed:"
|
6254 |
+
#~ msgstr "-Mise à niveau de PHP 5 vers PHP 7 avec NinjaFirewall installé :"
|
6255 |
+
|
6256 |
+
#~ msgid "-Keep your blog protected against the latest vulnerabilities:"
|
6257 |
+
#~ msgstr "-Gardez votre blog protégé contre les dernières vulnérabilités :"
|
6258 |
+
|
6259 |
+
#~ msgid "-Test your website security with our online scanner:"
|
6260 |
+
#~ msgstr "- Testez la sécurité de votre site avec notre scanner en ligne :"
|
6261 |
+
|
6262 |
+
#~ msgid "-NinjaFirewall Referral Program:"
|
6263 |
+
#~ msgstr "-Programme de parrainage de NinjaFirewall :"
|
6264 |
+
|
6265 |
+
#~ msgid "Troubleshooting:"
|
6266 |
+
#~ msgstr "Dépannage :"
|
6267 |
+
|
6268 |
+
#~ msgid "-Locked out of your site / Fatal error / WordPress crash?"
|
6269 |
+
#~ msgstr ""
|
6270 |
+
#~ "-Votre site n'est plus accessible / Erreur fatale / WordPress a planté ?"
|
6271 |
+
|
6272 |
+
#~ msgid "-Failed installation (\"Error: The firewall is not loaded\")?"
|
6273 |
+
#~ msgstr ""
|
6274 |
+
#~ "-Échec de l'installation (\"Erreur : Le pare-feu n'est pas activé.\") ?"
|
6275 |
+
|
6276 |
+
#~ msgid "-Blank page after INSTALLING NinjaFirewall?"
|
6277 |
+
#~ msgstr "-Page blanche après l'INSTALLATION de NinjaFirewall ?"
|
6278 |
+
|
6279 |
+
#~ msgid "-Blank page after UNINSTALLING NinjaFirewall?"
|
6280 |
+
#~ msgstr "-Page blanche après la DÉSINSTALLATION de NinjaFirewall ?"
|
6281 |
+
|
6282 |
+
#~ msgid "-500 Internal Server Error?"
|
6283 |
+
#~ msgstr "-500 Internal Server Error ?"
|
6284 |
+
|
6285 |
+
#~ msgid "-\"Cannot connect to WordPress database\" error message?"
|
6286 |
+
#~ msgstr "-Impossible de se connecter à la base de données WordPress ?"
|
6287 |
+
|
6288 |
+
#~ msgid "-How to disable NinjaFirewall?"
|
6289 |
+
#~ msgstr "-Comment désactiver NinjaFirewall ?"
|
6290 |
+
|
6291 |
+
#~ msgid "-Lost password (brute-force protection)?"
|
6292 |
+
#~ msgstr ""
|
6293 |
+
#~ "-Vous avez perdu le mot de passe de la protection contre les attaques par "
|
6294 |
+
#~ "force brute ?"
|
6295 |
+
|
6296 |
+
#~ msgid "-Blocked visitors (see below)?"
|
6297 |
+
#~ msgstr "-Vos visiteurs sont bloqués par erreur (voir ci-dessous) ?"
|
6298 |
+
|
6299 |
+
#~ msgid "-Exporting NinjaFirewall's configuration"
|
6300 |
+
#~ msgstr "-Exporter la configuration de NinjaFirewall"
|
6301 |
+
|
6302 |
+
#~ msgid "-NinjaFirewall (WP Edition) troubleshooter script"
|
6303 |
+
#~ msgstr "-Script de dépannage NinjaFirewall (WP Edition)"
|
6304 |
+
|
6305 |
+
#~ msgid "-Rename this file to \"wp-check.php\"."
|
6306 |
+
#~ msgstr "-Renommez ce fichier en \"wp-check.php\"."
|
6307 |
+
|
6308 |
+
#~ msgid "-Upload it into your WordPress root folder."
|
6309 |
+
#~ msgstr "-Téléchargez-le dans le repertoire racine de WordPress."
|
6310 |
+
|
6311 |
+
#~ msgid "-Goto http://YOUR WEBSITE/wp-check.php."
|
6312 |
+
#~ msgstr "-Rendez-vous sur http://VOTRE_SITE/wp-check.php."
|
6313 |
+
|
6314 |
+
#~ msgid "-Delete it afterwards."
|
6315 |
+
#~ msgstr "-Supprimez-le lorsque vous avez fini."
|
6316 |
+
|
6317 |
+
#~ msgid "FAQ:"
|
6318 |
+
#~ msgstr "FAQ :"
|
6319 |
+
|
6320 |
+
#~ msgid ""
|
6321 |
+
#~ "-Why is NinjaFirewall different from other security plugins for WordPress?"
|
6322 |
+
#~ msgstr ""
|
6323 |
+
#~ "-En quoi NinjaFirewall est-il différent des autres extensions de sécurité "
|
6324 |
+
#~ "pour WordPress ?"
|
6325 |
+
|
6326 |
+
#~ msgid "-Do I need root privileges to install NinjaFirewall?"
|
6327 |
+
#~ msgstr ""
|
6328 |
+
#~ "-Ai-je besoin d'avoir les privilèges root pour installer NinjaFirewall ?"
|
6329 |
+
|
6330 |
+
#~ msgid "-Does it work with Nginx?"
|
6331 |
+
#~ msgstr "-Est-ce qu'il fonctionne avec Nginx ?"
|
6332 |
+
|
6333 |
+
#~ msgid "-Do I need to alter my PHP scripts?"
|
6334 |
+
#~ msgstr "-Dois-je modifier mes script PHP ?"
|
6335 |
+
|
6336 |
+
#~ msgid ""
|
6337 |
+
#~ "-Will NinjaFirewall detect the correct IP of my visitors if I am behind a "
|
6338 |
+
#~ "CDN service like Cloudflare or Incapsula?"
|
6339 |
+
#~ msgstr ""
|
6340 |
+
#~ "-Est-ce que NinjaFirewall détectera la bonne adresse IP de mes visiteurs "
|
6341 |
+
#~ "si j'utilise un service CDN comme Cloudflare ou Incapsula ?"
|
6342 |
+
|
6343 |
+
#~ msgid ""
|
6344 |
+
#~ "-I moved my wp-config.php file to another directory. Will it work with "
|
6345 |
+
#~ "NinjaFirewall?"
|
6346 |
+
#~ msgstr ""
|
6347 |
+
#~ "-J'ai déplacé mon fichier wp-config.php dans un autre répertoire. "
|
6348 |
+
#~ "NinjaFirewall va-t-il fonctionner ?"
|
6349 |
+
|
6350 |
+
#~ msgid "-Will it slow down my site?"
|
6351 |
+
#~ msgstr "-Est-ce qu'il va ralentir mon site ?"
|
6352 |
+
|
6353 |
+
#~ msgid "-Is there a Microsoft Windows version?"
|
6354 |
+
#~ msgstr "-Existe-t-il une version pour Microsoft Windows ?"
|
6355 |
+
|
6356 |
+
#~ msgid "-Can I add/write my own security rules?"
|
6357 |
+
#~ msgstr "-Puis-je ajouter / écrire mes propres règles de sécurité ?"
|
6358 |
+
|
6359 |
+
#~ msgid "-Can I migrate my site(s) with NinjaFirewall installed?"
|
6360 |
+
#~ msgstr ""
|
6361 |
+
#~ "-Est-ce que je peux migrer mon site lorsque NinjaFirewall est installé ?"
|
6362 |
+
|
6363 |
+
#~ msgid "Help & Support Links:"
|
6364 |
+
#~ msgstr "Aide & Support :"
|
6365 |
+
|
6366 |
+
#~ msgid ""
|
6367 |
+
#~ "-Each page of NinjaFirewall includes a contextual help: click on "
|
6368 |
+
#~ "the \"Help\" menu tab located in the upper right corner of the "
|
6369 |
+
#~ "corresponding page."
|
6370 |
+
#~ msgstr ""
|
6371 |
+
#~ "-Si vous avez besoin d'aide, cliquez sur l'onglet \"Aide\" situé dans le "
|
6372 |
+
#~ "coin supérieur droit de chaque page."
|
6373 |
+
|
6374 |
+
#~ msgid "-Online documentation is also available here:"
|
6375 |
+
#~ msgstr "-Une documentation est aussi disponible en ligne :"
|
6376 |
+
|
6377 |
+
#~ msgid "-The WordPress support forum:"
|
6378 |
+
#~ msgstr "-Le forum de WordPress :"
|
6379 |
+
|
6380 |
+
#~ msgid "-Updates info are available via Twitter:"
|
6381 |
+
#~ msgstr "-Info sur les mises à jour via Twitter :"
|
6382 |
+
|
6383 |
+
#~ msgid "Error: The firewall is not loaded."
|
6384 |
+
#~ msgstr "Erreur : Le pare-feu n'est pas activé."
|
6385 |
+
|
6386 |
+
#~ msgid "Suggestions:"
|
6387 |
+
#~ msgstr "Suggestions :"
|
6388 |
+
|
6389 |
+
#~ msgid ""
|
6390 |
+
#~ "You selected <code>Apache + PHP module</code> as your HTTP server and PHP "
|
6391 |
+
#~ "SAPI. Maybe your HTTP server is <code>Apache + CGI/FastCGI</code>?"
|
6392 |
+
#~ msgstr ""
|
6393 |
+
#~ "Vous avez sélectionné <code>Apache + PHP module</code> comme serveur HTTP "
|
6394 |
+
#~ "et PHP SAPI. Peut-être que votre serveur utilise <code>Apache + CGI/"
|
6395 |
+
#~ "FastCGI</code> ?"
|
6396 |
+
|
6397 |
+
#~ msgid ""
|
6398 |
+
#~ "You can click the \"Go Back\" button and try to select another HTTP "
|
6399 |
+
#~ "server type."
|
6400 |
+
#~ msgstr ""
|
6401 |
+
#~ "Vous pouvez cliquer sur le bouton \"Retour\" et essayer de sélectionner "
|
6402 |
+
#~ "un autre type de serveur HTTP."
|
6403 |
+
|
6404 |
+
#~ msgid ""
|
6405 |
+
#~ "You have selected LiteSpeed as your HTTP server. Did you enable the "
|
6406 |
+
#~ "\"AllowOverride\" directive from its admin panel? Make sure it is "
|
6407 |
+
#~ "enabled, restart LiteSpeed and then, click the \"Test Again\" button "
|
6408 |
+
#~ "below."
|
6409 |
+
#~ msgstr ""
|
6410 |
+
#~ "Vous avez sélectionné LiteSpeed comme serveur HTTP. Avez-vous activé la "
|
6411 |
+
#~ "directive \"AllowOverride\" à partir de son panneau d'administration ? "
|
6412 |
+
#~ "Assurez-vous qu'elle est activée, redémarrez LiteSpeed, puis cliquez sur "
|
6413 |
+
#~ "le bouton \"Tester à nouveau\" ci-dessous."
|
6414 |
+
|
6415 |
+
#~ msgid "Test Again"
|
6416 |
+
#~ msgstr "Tester à nouveau"
|
6417 |
+
|
6418 |
+
#~ msgid ""
|
6419 |
+
#~ "You have selected <code>.user.ini</code> as your PHP initialization file. "
|
6420 |
+
#~ "Unlike <code>php.ini</code>, <code>.user.ini</code> files are not "
|
6421 |
+
#~ "reloaded immediately by PHP, but every five minutes. If this is your own "
|
6422 |
+
#~ "server, restart Apache (or PHP-FPM if applicable) to force PHP to reload "
|
6423 |
+
#~ "it, otherwise please <strong>wait up to five minutes</strong> and then, "
|
6424 |
+
#~ "click the \"Test Again\" button below."
|
6425 |
+
#~ msgstr ""
|
6426 |
+
#~ "Vous avez sélectionné <code>.user.ini</code> comme fichier "
|
6427 |
+
#~ "d'initialisation de PHP. Contrairement aux fichiers <code>php.ini</code>, "
|
6428 |
+
#~ "après leur modification les fichiers <code>.user.ini</code> ne sont pas "
|
6429 |
+
#~ "rechargés immédiatement par PHP, mais environ toutes les cinq minutes. Si "
|
6430 |
+
#~ "ceci est votre serveur, redémarrez Apache (ou PHP-FPM le cas échéant) "
|
6431 |
+
#~ "afin de forcer PHP à le recharger, sinon veuillez <strong>patienter "
|
6432 |
+
#~ "jusqu'à cinq minutes</strong> avant de cliquer sur le bouton \"Tester à "
|
6433 |
+
#~ "nouveau\" ci-dessous."
|
6434 |
+
|
6435 |
+
#~ msgid ""
|
6436 |
+
#~ "You selected <code>Apache + CGI/FastCGI</code> as your HTTP server and "
|
6437 |
+
#~ "PHP SAPI. Maybe your HTTP server is <code>Apache + PHP module</code>?"
|
6438 |
+
#~ msgstr ""
|
6439 |
+
#~ "Vous avez sélectionné <code>Apache + CGI/FastCGI</code> comme serveur "
|
6440 |
+
#~ "HTTP et PHP SAPI. Peut-être que votre serveur utilise <code>Apache + PHP "
|
6441 |
+
#~ "module</code> ?"
|
6442 |
+
|
6443 |
+
#~ msgid "Maybe you did not select the correct PHP INI ?"
|
6444 |
+
#~ msgstr ""
|
6445 |
+
#~ "Peut-être que vous n'avez pas sélectionné le bon fichier PHP INI ?"
|
6446 |
+
|
6447 |
+
#~ msgid "You can click the \"Go Back\" button and try to select another one."
|
6448 |
+
#~ msgstr ""
|
6449 |
+
#~ "Vous pouvez cliquer sur le bouton \"Retour\" et essayer d'en sélectionner "
|
6450 |
+
#~ "un autre."
|
6451 |
+
|
6452 |
+
#~ msgid "Go Back"
|
6453 |
+
#~ msgstr "Retour"
|
6454 |
+
|
6455 |
+
#~ msgid ""
|
6456 |
+
#~ "If none of the above suggestions work, you can still install "
|
6457 |
+
#~ "NinjaFirewall in %s mode by clicking the button below. Setup is easy and "
|
6458 |
+
#~ "will always work."
|
6459 |
+
#~ msgstr ""
|
6460 |
+
#~ "Si aucune des suggestions ci-dessus ne fonctionnent, vous pouvez "
|
6461 |
+
#~ "installer NinjaFirewall en mode %s en cliquant sur le bouton ci-dessous. "
|
6462 |
+
#~ "L'installation est facile et toujours couronnée de succès."
|
6463 |
+
|
6464 |
+
#~ msgid "Switch to the WordPress WAF mode installer »"
|
6465 |
+
#~ msgstr "Passer à l'installateur WordPress WAF »"
|
6466 |
+
|
6467 |
+
#~ msgid "Need help? Check our blog:"
|
6468 |
+
#~ msgstr "Besoin d'aide ? Consultez notre blog :"
|
6469 |
+
|
6470 |
+
#~ msgid ""
|
6471 |
+
#~ "This is the Overview page; it shows information about the firewall "
|
6472 |
+
#~ "status. We recommend you keep an eye on it because, in case of problems, "
|
6473 |
+
#~ "all possible errors and warnings will be displayed here."
|
6474 |
+
#~ msgstr ""
|
6475 |
+
#~ "La page Aperçu affiche toutes les informations relatives au bon "
|
6476 |
+
#~ "fonctionnement du pare-feu ainsi que les mises à jour; il vous est "
|
6477 |
+
#~ "conseillé de la consulter fréquemment car, en cas de problèmes, ceux-ci "
|
6478 |
+
#~ "seront indiqués ici."
|
6479 |
+
|
6480 |
+
#~ msgid "Securing WordPress with NinjaFirewall."
|
6481 |
+
#~ msgstr "Sécurisation de WordPress avec NinjaFirewall."
|
6482 |
+
|
6483 |
+
#~ msgid "Installation, help and troubleshooting"
|
6484 |
+
#~ msgstr "Installation, aide et problèmes"
|
6485 |
+
|
6486 |
+
#~ msgid "Support Forum"
|
6487 |
+
#~ msgstr "Forum"
|
6488 |
+
|
6489 |
+
#~ msgid "Updates via Twitter"
|
6490 |
+
#~ msgstr "Mises à jour via Twitter"
|
6491 |
+
|
6492 |
+
#~ msgid "Error:"
|
6493 |
+
#~ msgstr "Erreur :"
|
6494 |
+
|
6495 |
+
#~ msgid ""
|
6496 |
+
#~ "Your WordPress directory (%s) is different from your website document "
|
6497 |
+
#~ "root (%s). Because it is possible to install WordPress into a "
|
6498 |
+
#~ "subdirectory, but have the blog exist in the site root, NinjaFirewall "
|
6499 |
+
#~ "needs to know the exact location of the site root."
|
6500 |
+
#~ msgstr ""
|
6501 |
+
#~ "Le répertoire de WordPress (%s) est différent du répertoire racine de "
|
6502 |
+
#~ "votre site Web (%s). Parce qu'il est possible d'installer WordPress dans "
|
6503 |
+
#~ "un sous-répertoire, tout en ayant le blog à la racine du site, "
|
6504 |
+
#~ "NinjaFirewall a besoin de connaître l'emplacement de la racine du site."
|
6505 |
+
|
6506 |
+
#~ msgid ""
|
6507 |
+
#~ "Please edit the path below only if you have manually modified your "
|
6508 |
+
#~ "WordPress root directory as described in the <a href=\"%s\">Giving "
|
6509 |
+
#~ "WordPress Its Own Directory</a> article."
|
6510 |
+
#~ msgstr ""
|
6511 |
+
#~ "Veuillez corriger le chemin ci-dessous uniquement si vous avez modifié "
|
6512 |
+
#~ "manuellement votre répertoire racine de WordPress comme décrit dans "
|
6513 |
+
#~ "l'article <a href=\"%s\">Giving WordPress Its Own Directory</a>."
|
6514 |
+
|
6515 |
+
#~ msgid "Most users should not change this value."
|
6516 |
+
#~ msgstr "La plupart des utilisateurs ne devront pas changer cette valeur."
|
6517 |
+
|
6518 |
+
#~ msgid "Path to WordPress site root directory:"
|
6519 |
+
#~ msgstr "Chemin vers le répertoire racine de WordPress :"
|
6520 |
+
|
6521 |
+
#~ msgid "please enter the full path to WordPress folder."
|
6522 |
+
#~ msgstr "veuillez entrer le chemin complet vers le répertoire de WordPress."
|
6523 |
+
|
6524 |
+
#~ msgid ""
|
6525 |
+
#~ "cannot find the %s directory! Please correct the full path to WordPress "
|
6526 |
+
#~ "site root directory."
|
6527 |
+
#~ msgstr ""
|
6528 |
+
#~ "impossible de trouver le répertoire %s ! Veuillez corriger le chemin "
|
6529 |
+
#~ "complet vers le répertoire racine de WordPress."
|
6530 |
+
|
6531 |
+
#~ msgid "Please select the PHP initialization file supported by your server."
|
6532 |
+
#~ msgstr ""
|
6533 |
+
#~ "Sélectionnez le type de fichier de configuration PHP utilisé par votre "
|
6534 |
+
#~ "serveur."
|
6535 |
+
|
6536 |
+
#~ msgid ""
|
6537 |
+
#~ "Error: NinjaFirewall log directory is not writable (%s). Please chmod it "
|
6538 |
+
#~ "to 0777 and reload this page."
|
6539 |
+
#~ msgstr ""
|
6540 |
+
#~ "Erreur : le répertoire du journal et cache de NinjaFirewall (%s) n'est "
|
6541 |
+
#~ "pas accessible en écriture. Veuillez changer ses permissions (par ex. "
|
6542 |
+
#~ "0777) et recharger cette page."
|
6543 |
+
|
6544 |
+
#~ msgid "System configuration"
|
6545 |
+
#~ msgstr "Configuration du système"
|
6546 |
+
|
6547 |
+
#~ msgid ""
|
6548 |
+
#~ "NinjaFirewall detected that the PHP <code>auto_prepend_file</code> "
|
6549 |
+
#~ "directive seems to be used by another application: %s."
|
6550 |
+
#~ msgstr ""
|
6551 |
+
#~ "NinjaFirewall a détecté que <code>auto_prepend_file</code> est déjà "
|
6552 |
+
#~ "utilisé par une autre application : %s."
|
6553 |
+
|
6554 |
+
#~ msgid ""
|
6555 |
+
#~ "Because NinjaFirewall needs to use that directive, it will override it."
|
6556 |
+
#~ msgstr ""
|
6557 |
+
#~ "Parce qu’il a besoin de cette directive, NinjaFirewall va la remplacer "
|
6558 |
+
#~ "par la sienne."
|
6559 |
+
|
6560 |
+
#~ msgid "Multisite network detected:"
|
6561 |
+
#~ msgstr "Réseau multi-site détecté :"
|
6562 |
+
|
6563 |
+
#~ msgid ""
|
6564 |
+
#~ "NinjaFirewall will protect all sites from your network and its "
|
6565 |
+
#~ "configuration interface will be accessible only to the Super Admin from "
|
6566 |
+
#~ "the network main site."
|
6567 |
+
#~ msgstr ""
|
6568 |
+
#~ "NinjaFirewall protégera tous les sites de votre réseau; son interface de "
|
6569 |
+
#~ "configuration ne sera accessible qu'au Super Administrateur à partir du "
|
6570 |
+
#~ "site principal du réseau."
|
6571 |
+
|
6572 |
+
#~ msgid "CGI or PHP-FPM"
|
6573 |
+
#~ msgstr "CGI ou PHP-FPM"
|
6574 |
+
|
6575 |
+
#~ msgid "Other webserver + CGI/FastCGI"
|
6576 |
+
#~ msgstr "Autre serveur + CGI/FastCGI"
|
6577 |
+
|
6578 |
+
#~ msgid "Other webserver + HHVM"
|
6579 |
+
#~ msgstr "Autre serveur + HHVM"
|
6580 |
+
|
6581 |
+
#~ msgid "view PHPINFO"
|
6582 |
+
#~ msgstr "voir PHPINFO"
|
6583 |
+
|
6584 |
+
#~ msgid ""
|
6585 |
+
#~ "Please <a href=\"%s\">check our blog</a> if you want to install "
|
6586 |
+
#~ "NinjaFirewall on HHVM."
|
6587 |
+
#~ msgstr ""
|
6588 |
+
#~ "Veuillez consulter <a href=\"%s\">notre blog</a> afin d'installer "
|
6589 |
+
#~ "NinjaFirewall avec HHVM."
|
6590 |
+
|
6591 |
+
#~ msgid "Used by most shared hosting accounts."
|
6592 |
+
#~ msgstr "Utilisé par la plupart des hébergements mutualisés"
|
6593 |
+
|
6594 |
+
#~ msgid "The default PHP INI file since PHP 5.3.0"
|
6595 |
+
#~ msgstr "Le fichier PHP INI par défaut depuis PHP 5.3.0"
|
6596 |
+
|
6597 |
+
#~ msgid "more info"
|
6598 |
+
#~ msgstr "plus d'info"
|
6599 |
+
|
6600 |
+
#~ msgid "A few shared hosting accounts. Seldom used."
|
6601 |
+
#~ msgstr "Quelques hébergements mutualisés. Rarement utilisé."
|
6602 |
+
|
6603 |
+
#~ msgid "select your HTTP server and PHP SAPI."
|
6604 |
+
#~ msgstr "sélectionnez votre serveur HTTP et PHP SAPI."
|
6605 |
+
|
6606 |
+
#~ msgid "select the PHP initialization file supported by your server."
|
6607 |
+
#~ msgstr ""
|
6608 |
+
#~ "sélectionnez le type de fichier de configuration PHP utilisé par votre "
|
6609 |
+
#~ "serveur."
|
6610 |
+
|
6611 |
+
#~ msgid "Firewall Integration"
|
6612 |
+
#~ msgstr "Intégration du Pare-feu"
|
6613 |
+
|
6614 |
+
#~ msgid ""
|
6615 |
+
#~ "The <code>%s</code> file must be created, and the following lines of code "
|
6616 |
+
#~ "added to it:"
|
6617 |
+
#~ msgstr ""
|
6618 |
+
#~ "Le fichier <code>%s</code> doit être créé, et les lignes suivantes "
|
6619 |
+
#~ "doivent y être ajoutées :"
|
6620 |
+
|
6621 |
+
#~ msgid ""
|
6622 |
+
#~ "The following <font color=\"green\">green lines</font> of code must be "
|
6623 |
+
#~ "added to your <code>%s</code> file."
|
6624 |
+
#~ msgstr ""
|
6625 |
+
#~ "Les lignes de code de <font color=\"green\">couleur verte</font> doivent "
|
6626 |
+
#~ "être ajoutées à votre fichier <code>%s</code>."
|
6627 |
+
|
6628 |
+
#~ msgid "All other lines, if any, are the actual content of the file:"
|
6629 |
+
#~ msgstr ""
|
6630 |
+
#~ "Toutes les autres lignes, le cas échéant, sont le contenu actuel du "
|
6631 |
+
#~ "fichier et ne doivent pas être modifiées :"
|
6632 |
+
|
6633 |
+
#~ msgid "The file is not writable, I cannot edit it for you."
|
6634 |
+
#~ msgstr ""
|
6635 |
+
#~ "Le fichier est protégé en écriture, je ne peux pas faire ces changements "
|
6636 |
+
#~ "pour vous."
|
6637 |
+
|
6638 |
+
#~ msgid ""
|
6639 |
+
#~ "Add the following code to your <code>/etc/hhvm/php.ini</code> file, and "
|
6640 |
+
#~ "restart HHVM afterwards:"
|
6641 |
+
#~ msgstr ""
|
6642 |
+
#~ "Veuillez ajouter le code suivant au fichier <code>/etc/hhvm/php.ini</"
|
6643 |
+
#~ "code>, puis veuillez redémarrer HHVM :"
|
6644 |
+
|
6645 |
+
#~ msgid "Please make those changes, then click on button below."
|
6646 |
+
#~ msgstr ""
|
6647 |
+
#~ "Veuillez faire ces modifications, puis cliquez sur le bouton ci-dessous "
|
6648 |
+
#~ "pour continuer."
|
6649 |
+
|
6650 |
+
#~ msgid "Let NinjaFirewall make the above changes (recommended)."
|
6651 |
+
#~ msgstr "Laissez NinjaFirewall faire les changements ci-dessus (recommandé)."
|
6652 |
+
|
6653 |
+
#~ msgid "Please check our blog if you want to install NinjaFirewall on HHVM."
|
6654 |
+
#~ msgstr ""
|
6655 |
+
#~ "Veuillez consulter notre blog si vous souhaitez installer NinjaFirewall "
|
6656 |
+
#~ "avec HHVM."
|
6657 |
+
|
6658 |
+
#~ msgid "you must select how to make changes to your files."
|
6659 |
+
#~ msgstr ""
|
6660 |
+
#~ "vous devez sélectionner la façon dont vous souhaitez modifier vos "
|
6661 |
+
#~ "fichiers."
|
6662 |
+
|
6663 |
+
#~ msgid ""
|
6664 |
+
#~ "your WordPress root directory is not writable, I cannot make those "
|
6665 |
+
#~ "changes for you."
|
6666 |
+
#~ msgstr ""
|
6667 |
+
#~ "le répertoire racine de WordPress n'est pas accessible en écriture, je ne "
|
6668 |
+
#~ "peux pas faire ces changements pour vous."
|
6669 |
+
|
6670 |
+
#~ msgid "cannot write to <code>%s</code>, it is read-only."
|
6671 |
+
#~ msgstr ""
|
6672 |
+
#~ "impossible d’écrire dans <code>%s</code>, le fichier est en lecture seule."
|
6673 |
+
|
6674 |
+
#~ msgid "Your configuration was saved."
|
6675 |
+
#~ msgstr "Les modifications ont été enregistrées."
|
6676 |
+
|
6677 |
+
#~ msgid "A \"Quick Start, FAQ & Troubleshooting Guide\" email was sent to %s."
|
6678 |
+
#~ msgstr ""
|
6679 |
+
#~ "Un e-mail \"Guide d'Utilisation, d'Installation et de Dépannage\" a été "
|
6680 |
+
#~ "envoyé à %s."
|
6681 |
+
|
6682 |
+
#~ msgid ""
|
6683 |
+
#~ "Please click the button below to test if the firewall integration was "
|
6684 |
+
#~ "successful."
|
6685 |
+
#~ msgstr ""
|
6686 |
+
#~ "Veuillez cliquer sur le bouton ci-dessous pour vérifier le bon "
|
6687 |
+
#~ "fonctionnement du pare-feu."
|
6688 |
+
|
6689 |
+
#~ msgid "Test Firewall"
|
6690 |
+
#~ msgstr "Tester le pare-feu"
|
6691 |
+
|
6692 |
+
#~ msgid ""
|
6693 |
+
#~ "Unable to read the wp-config.php file (%s). Make sure it is readable and "
|
6694 |
+
#~ "try again."
|
6695 |
+
#~ msgstr ""
|
6696 |
+
#~ "Impossible de lire le fichier wp-config.php (%s). Veuillez-vous assurer "
|
6697 |
+
#~ "qu'il est bien accessible en lecture."
|
6698 |
+
|
6699 |
+
#~ msgid "Unable to find the wp-config.php file in the %s or %s directories."
|
6700 |
+
#~ msgstr ""
|
6701 |
+
#~ "Impossible de trouver le fichier wp-config.php dans les répertoires %s ou "
|
6702 |
+
#~ "%s."
|
6703 |
+
|
6704 |
+
#~ msgid ""
|
6705 |
+
#~ "The following <font color=\"green\">green lines</font> of code must be "
|
6706 |
+
#~ "added to your %s file."
|
6707 |
+
#~ msgstr ""
|
6708 |
+
#~ "Les lignes de code de <font color=\"green\">couleur verte</font> doivent "
|
6709 |
+
#~ "être ajoutées à votre fichier %s."
|
6710 |
+
|
6711 |
+
#~ msgid ""
|
6712 |
+
#~ "The file is not writable, I cannot edit it for you. Please make those "
|
6713 |
+
#~ "changes, then click on button below."
|
6714 |
+
#~ msgstr ""
|
6715 |
+
#~ "Le fichier est protégé en écriture, je ne peux pas le modifier pour vous. "
|
6716 |
+
#~ "Veuillez effectuer ces changements, puis cliquer sur le bouton ci-dessous."
|
6717 |
+
|
6718 |
+
#~ msgid "Back up the file (wp-config.bak.php) before editing it."
|
6719 |
+
#~ msgstr "Faire une sauvegarde du fichier (wp-config.bak.php)."
|
6720 |
+
|
6721 |
+
#~ msgid "Unable to find the wp-config.php file (#%s)."
|
6722 |
+
#~ msgstr "Impossible de trouver le fichier wp-config.php (#%s)."
|
6723 |
+
|
6724 |
+
#~ msgid ""
|
6725 |
+
#~ "The firewall is not loaded. Make sure that the required lines of code "
|
6726 |
+
#~ "were added to your wp-config.php file."
|
6727 |
+
#~ msgstr ""
|
6728 |
+
#~ "Le pare-feu n'est pas activé. Assurez-vous de bien ajouter les lignes de "
|
6729 |
+
#~ "code nécessaires au fichier wp-config.php."
|
6730 |
+
|
6731 |
+
#~ msgid ""
|
6732 |
+
#~ "You may need to wait up to five minutes before PHP reloads the modified "
|
6733 |
+
#~ "INI files, because it caches them. <strong>Please wait for %d seconds</"
|
6734 |
+
#~ "strong> before trying again (you can navigate away from this page and "
|
6735 |
+
#~ "come back in a few minutes)."
|
6736 |
+
#~ msgstr ""
|
6737 |
+
#~ "Vous devez peut-être attendre cinq minutes avant que PHP ne recharge les "
|
6738 |
+
#~ "fichiers INI modifiés, car il les met en cache. <strong>Veuillez "
|
6739 |
+
#~ "patienter pendant %d secondes</strong> avant de réessayer (vous pouvez "
|
6740 |
+
#~ "quitter cette page et revenir dans quelques minutes)."
|
6741 |
+
|
6742 |
+
#~ msgid ""
|
6743 |
+
#~ "In <strong>Full WAF</strong> mode, all scripts located inside the blog "
|
6744 |
+
#~ "installation directories and sub-directories will be protected by "
|
6745 |
+
#~ "NinjaFirewall, including those that aren't part of the WordPress package. "
|
6746 |
+
#~ "It will give you the highest possible level of protection: security "
|
6747 |
+
#~ "without compromise."
|
6748 |
+
#~ msgstr ""
|
6749 |
+
#~ "En mode <strong>Full WAF</strong>, tous les scripts situés dans le "
|
6750 |
+
#~ "répertoire et sous-répertoires d'installation de votre blog seront "
|
6751 |
+
#~ "protégés, y compris ceux qui ne font pas partie de WordPress. Cela vous "
|
6752 |
+
#~ "offre le niveau de protection le plus élevé possible : La sécurité sans "
|
6753 |
+
#~ "aucun compromis."
|
6754 |
+
|
6755 |
+
#~ msgid "NinjaFirewall Full WAF mode setup"
|
6756 |
+
#~ msgstr "Installation mode Full WAF"
|
6757 |
+
|
6758 |
+
#~ msgid ""
|
6759 |
+
#~ "For maximum security, <a %s>click here</a> to switch to Full WAF mode."
|
6760 |
+
#~ msgstr ""
|
6761 |
+
#~ "Pour une meilleure protection, <a %s>cliquez ici</a> pour activer son "
|
6762 |
+
#~ "mode Full WAF."
|
6763 |
+
|
6764 |
+
#~ msgid "For maximum security, consider switching to <a %s>Full WAF mode</a>."
|
6765 |
+
#~ msgstr ""
|
6766 |
+
#~ "Pour bénéficier d'encore plus de sécurité, nous vous conseillons de "
|
6767 |
+
#~ "passer en mode <a %s>Full WAF</a>."
|
6768 |
+
|
6769 |
+
#~ msgid ""
|
6770 |
+
#~ "Changes have been undone. You may need to modify your selection and try "
|
6771 |
+
#~ "again."
|
6772 |
+
#~ msgstr ""
|
6773 |
+
#~ "Les modifications ont été annulées. Vous devriez peut-être modifier votre "
|
6774 |
+
#~ "sélection et réessayer."
|
6775 |
+
|
6776 |
+
#~ msgid "Applies to the login page only."
|
6777 |
+
#~ msgstr "Ne s'applique qu'à la Page de connexion."
|
6778 |
+
|
6779 |
+
#~ msgid "Error: cannot find your log file. Try to reload this page."
|
6780 |
+
#~ msgstr ""
|
6781 |
+
#~ "Erreur : impossible de trouver le fichier log. Essayez de recharger cette "
|
6782 |
+
#~ "page."
|
6783 |
+
|
6784 |
+
#~ msgid "Error: the HTTP server returned the following error code:"
|
6785 |
+
#~ msgstr "Erreur : le serveur HTTP a retourné le code d\\'erreur suivant :"
|
6786 |
+
|
6787 |
+
#~ msgid ""
|
6788 |
+
#~ "Disabling access to the REST or XML-RPC API may break some functionality "
|
6789 |
+
#~ "on your blog, its themes or plugins (e.g., Gutenberg, Jetpack, Contact "
|
6790 |
+
#~ "Form 7 etc)."
|
6791 |
+
#~ msgstr ""
|
6792 |
+
#~ "L'activation de ces options peut rompre certaines fonctionnalités de "
|
6793 |
+
#~ "votre blog, ses thèmes ou ses extensions (ex.: Gutenberg, Jetpack, "
|
6794 |
+
#~ "Contact Form 7 etc)."
|
6795 |
+
|
6796 |
+
#~ msgid ""
|
6797 |
+
#~ "NinjaFirewall has blocked an attempt to gain administrative privileges:"
|
6798 |
+
#~ msgstr ""
|
6799 |
+
#~ "NinjaFirewall a bloqué un utilisateur ayant essayé d'élever ses "
|
6800 |
+
#~ "privilèges pour devenir administrateur du blog :"
|
6801 |
+
|
6802 |
+
#~ msgid "Yes (default)"
|
6803 |
+
#~ msgstr "Oui (défaut)"
|
6804 |
+
|
6805 |
+
#~ msgid "Delete the current snapshot?"
|
6806 |
+
#~ msgstr "Supprimer l'instantané actuel ?"
|
6807 |
+
|
6808 |
+
#~ msgid ""
|
6809 |
+
#~ "It seems that %s is enabled. Ensure you have another way to run WP-Cron, "
|
6810 |
+
#~ "otherwise NinjaFirewall scheduled scans will not work."
|
6811 |
+
#~ msgstr ""
|
6812 |
+
#~ "Il semble que %s est activé. Assurez vous de pouvoir exécuter WP-Cron, "
|
6813 |
+
#~ "sinon File Check ne pourra pas se lancer automatiquement."
|
6814 |
+
|
6815 |
+
#~ msgid "Please enter a number from 1 to 99."
|
6816 |
+
#~ msgstr "Veuillez entrer un nombre de 1 à 99."
|
6817 |
+
|
6818 |
+
#~ msgid "Yes (recommended)"
|
6819 |
+
#~ msgstr "Oui (recommandé)"
|
6820 |
+
|
6821 |
+
#~ msgid "CSS style sheets"
|
6822 |
+
#~ msgstr "des feuilles de style CSS"
|
6823 |
+
|
6824 |
+
#~ msgid "Javascript code"
|
6825 |
+
#~ msgstr "du code Javascript"
|
6826 |
+
|
6827 |
+
#~ msgid ""
|
6828 |
+
#~ "Your message seems to contain %s. For security reasons, it cannot be "
|
6829 |
+
#~ "previewed from the admin dashboard."
|
6830 |
+
#~ msgstr ""
|
6831 |
+
#~ "Votre message semble contenir %s. Pour des raisons de sécurité, il ne "
|
6832 |
+
#~ "peut pas être prévisualisé à partir du Tableau de Bord d'administration."
|
6833 |
+
|
6834 |
+
#~ msgid "Refresh preview"
|
6835 |
+
#~ msgstr "Réactualiser"
|
6836 |
+
|
6837 |
+
#~ msgid "Warning: your site is not protected!"
|
6838 |
+
#~ msgstr "Attention, votre site n'est pas protégé !"
|
6839 |
+
|
6840 |
+
#~ msgid "Disabled (default)"
|
6841 |
+
#~ msgstr "Désactivé (défaut)"
|
6842 |
+
|
6843 |
+
#~ msgid "Anonymize IP addresses by removing the last 3 characters."
|
6844 |
+
#~ msgstr "Anonymiser les adresses IP en supprimant les 3 derniers caractères."
|
6845 |
+
|
6846 |
+
#~ msgid "Preview message"
|
6847 |
+
#~ msgstr "Prévisualiser"
|
6848 |
+
|
6849 |
+
#~ msgid "All fields will be restored to their default values. Go ahead?"
|
6850 |
+
#~ msgstr ""
|
6851 |
+
#~ "Tous les champs vont être réinitialisés avec leur valeur par défaut. "
|
6852 |
+
#~ "Continuer ?"
|
6853 |
+
|
6854 |
+
#~ msgid ""
|
6855 |
+
#~ "WARNING: ensure that you can access your admin console over HTTPS before "
|
6856 |
+
#~ "enabling this option, otherwise you will lock yourself out of your site. "
|
6857 |
+
#~ "Go ahead?"
|
6858 |
+
#~ msgstr ""
|
6859 |
+
#~ "AVERTISSEMENT: assurez-vous que vous pouvez accéder à votre Tableau de "
|
6860 |
+
#~ "bord via HTTPS avant d'activer cette option, sinon vous risquez de "
|
6861 |
+
#~ "bloquer l’accès à votre site. Continuer ?"
|
6862 |
+
|
6863 |
+
#~ msgid ""
|
6864 |
+
#~ "If you are using the %s plugin, blocking <code>system.multicall</code> "
|
6865 |
+
#~ "may prevent it from working correctly."
|
6866 |
+
#~ msgstr ""
|
6867 |
+
#~ "Si vous utilisez l'extension %s, bloquer <code>system.multicall</code> "
|
6868 |
+
#~ "pourrait l’empêcher de fonctionner correctement."
|
6869 |
+
|
6870 |
+
#~ msgid "This feature is only available when running WordPress 4.7 or above."
|
6871 |
+
#~ msgstr "Cette option ne peut être activée qu'avec WordPress 4.7 ou plus."
|
6872 |
+
|
6873 |
+
#~ msgid ""
|
6874 |
+
#~ "Disabling access to the REST or XML-RPC API may break some functionality "
|
6875 |
+
#~ "on your blog, its themes or plugins."
|
6876 |
+
#~ msgstr ""
|
6877 |
+
#~ "L'activation de ces options peut rompre certaines fonctionnalités de "
|
6878 |
+
#~ "votre blog, ses thèmes ou ses plugins."
|
6879 |
+
|
6880 |
+
#~ msgid ""
|
6881 |
+
#~ "This option is disabled because the %s PHP function is not available on "
|
6882 |
+
#~ "your server."
|
6883 |
+
#~ msgstr ""
|
6884 |
+
#~ "Cette option n'est pas disponible parce que la fonction PHP %s n'est pas "
|
6885 |
+
#~ "présente sur votre serveur."
|
6886 |
+
|
6887 |
+
#~ msgid ""
|
6888 |
+
#~ "If your PHP scripts use cookies that need to be accessed from JavaScript, "
|
6889 |
+
#~ "you should disable this option."
|
6890 |
+
#~ msgstr ""
|
6891 |
+
#~ "Si vos scripts PHP envoient des cookies qui doivent être accessibles à "
|
6892 |
+
#~ "partir de JavaScript, vous devez garder cette option désactivée."
|
6893 |
+
|
6894 |
+
#~ msgid "Set <code>max-age</code> to 0"
|
6895 |
+
#~ msgstr "Régler <code>max-age</code> à 0"
|
6896 |
+
|
6897 |
+
#~ msgid "Loading..."
|
6898 |
+
#~ msgstr "Chargement..."
|
6899 |
+
|
6900 |
+
#~ msgid "No traffic yet, please wait..."
|
6901 |
+
#~ msgstr "Aucun visiteur actuellement, veuillez patienter..."
|
6902 |
+
|
6903 |
+
#~ msgid "Error: URL does not seem to exist:"
|
6904 |
+
#~ msgstr "Erreur : l\\'URL ne semble pas valide :"
|
6905 |
+
|
6906 |
+
#~ msgid "On"
|
6907 |
+
#~ msgstr "Activer"
|
6908 |
+
|
6909 |
+
#~ msgid "Off"
|
6910 |
+
#~ msgstr "Stopper"
|
6911 |
+
|
6912 |
+
#~ msgid "Live Log options"
|
6913 |
+
#~ msgstr "Options"
|
6914 |
+
|
6915 |
+
#~ msgid "Please enter a number from 1 to 99 in 'Password-protect' field."
|
6916 |
+
#~ msgstr ""
|
6917 |
+
#~ "Veuillez entrer uniquement des nombres de 1 à 99 dans les champs "
|
6918 |
+
#~ "\\'Protéger par mot de passe\\'."
|
6919 |
+
|
6920 |
+
#~ msgid ""
|
6921 |
+
#~ "Note: Access to the XML-RPC API will be completely disabled when the "
|
6922 |
+
#~ "brute-force attack protection is set to 'Always ON'."
|
6923 |
+
#~ msgstr ""
|
6924 |
+
#~ "L'accès API XML-RPC sera complètement désactivé lorsque la protection est "
|
6925 |
+
#~ "toujours activée."
|
6926 |
+
|
6927 |
+
#~ msgid "GD Support is not available on your server."
|
6928 |
+
#~ msgstr "L'extension PHP GD n'est pas disponible sur votre serveur."
|
6929 |
+
|
6930 |
+
#~ msgid "Yes, if under attack"
|
6931 |
+
#~ msgstr "Oui, si attaque en cours"
|
6932 |
+
|
6933 |
+
#~ msgid "Always ON"
|
6934 |
+
#~ msgstr "Toujours activer"
|
6935 |
+
|
6936 |
+
#~ msgid "Password"
|
6937 |
+
#~ msgstr "Mot de passe"
|
6938 |
+
|
6939 |
+
#~ msgid "Captcha"
|
6940 |
+
#~ msgstr "Captcha"
|
6941 |
+
|
6942 |
+
#~ msgid "XML-RPC API"
|
6943 |
+
#~ msgstr "API XML-RPC"
|
6944 |
+
|
6945 |
+
#~ msgid "Apply the protection to the <code>xmlrpc.php</code> script as well."
|
6946 |
+
#~ msgstr ""
|
6947 |
+
#~ "Activer aussi la protection pour le fichier <code>xmlrpc.php</code>."
|
6948 |
+
|
6949 |
+
#~ msgid "Bot protection"
|
6950 |
+
#~ msgstr "Protection contre les bots"
|
6951 |
+
|
6952 |
+
#~ msgid "Enable bot protection (applies to <code>wp-login.php</code> only.)"
|
6953 |
+
#~ msgstr ""
|
6954 |
+
#~ "Activer la protection contre les bots (ne s'applique qu'à <code>wp-login."
|
6955 |
+
#~ "php</code>)."
|
6956 |
+
|
6957 |
+
#~ msgid "Authentication log"
|
6958 |
+
#~ msgstr "Journal d'authentification"
|
6959 |
+
|
6960 |
+
#~ msgid ""
|
6961 |
+
#~ "The login protection must be set to \"Yes, if under attack\" in order to "
|
6962 |
+
#~ "use this option."
|
6963 |
+
#~ msgstr ""
|
6964 |
+
#~ "La protection doit être activée sur \"Oui, si attaque en cours\" afin de "
|
6965 |
+
#~ "pouvoir utiliser cette option."
|
6966 |
+
|
6967 |
+
#~ msgid "Write the incident to the server Authentication log."
|
6968 |
+
#~ msgstr ""
|
6969 |
+
#~ "Enregistrer l'incident dans le journal des authentifications du serveur."
|
6970 |
+
|
6971 |
+
#~ msgid "Signature"
|
6972 |
+
#~ msgstr "Signature"
|
6973 |
+
|
6974 |
+
#~ msgid ""
|
6975 |
+
#~ "Disable the <i>Brute-force protection by NinjaFirewall</i> signature on "
|
6976 |
+
#~ "the protection page."
|
6977 |
+
#~ msgstr ""
|
6978 |
+
#~ "Ne pas afficher <i>Brute-force protection by NinjaFirewall</i> sur la "
|
6979 |
+
#~ "page de connexion."
|
6980 |
+
|
6981 |
+
#~ msgid "Access to NinjaFirewall is restricted to:"
|
6982 |
+
#~ msgstr "L'accès à NinjaFirewall est restreint à :"
|
6983 |
+
|
6984 |
+
#~ msgid ""
|
6985 |
+
#~ "It seems that %s is enabled. Ensure you have another way to run WP-Cron, "
|
6986 |
+
#~ "otherwise NinjaFirewall automatic updates will not work."
|
6987 |
+
#~ msgstr ""
|
6988 |
+
#~ "Il semble que %s est activé. Assurez vous de pouvoir exécuter WP-Cron, "
|
6989 |
+
#~ "sinon les mises à jour automatiques ne pourront pas être effectuées."
|
6990 |
+
|
6991 |
#~ msgid ""
|
6992 |
#~ "Benchmarks show the time NinjaFirewall took, in seconds, to proceed each "
|
6993 |
#~ "request it has blocked."
|
languages/ninjafirewall.pot
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
msgid ""
|
3 |
msgstr ""
|
4 |
"Project-Id-Version: Stable (latest release)\n"
|
5 |
-
"POT-Creation-Date: 2019-
|
6 |
"PO-Revision-Date: 2018-04-05 22:52+0700\n"
|
7 |
"Last-Translator: NinTechNet <contact@nintechnet.com>\n"
|
8 |
"Language-Team: \n"
|
@@ -18,540 +18,133 @@ msgstr ""
|
|
18 |
"X-Poedit-SearchPath-0: .\n"
|
19 |
"X-Poedit-SearchPathExcluded-0: /languages\n"
|
20 |
|
21 |
-
#: install.php:128 install.php:373 lib/install_fullwaf.php:301
|
22 |
-
#: lib/install_fullwaf.php:618 lib/install_wpwaf.php:48
|
23 |
-
#: lib/install_wpwaf.php:201 lib/overview.php:32
|
24 |
-
msgid "NinjaFirewall (WP Edition)"
|
25 |
-
msgstr ""
|
26 |
-
|
27 |
-
#: install.php:132
|
28 |
-
#, php-format
|
29 |
-
msgid ""
|
30 |
-
"Error: You have a copy of NinjaFirewall (%s) installed.<br />Please "
|
31 |
-
"uninstall it completely before attempting to install NinjaFirewall (WP "
|
32 |
-
"Edition)."
|
33 |
-
msgstr ""
|
34 |
-
|
35 |
-
#: install.php:136
|
36 |
-
msgid "Thank you for using NinjaFirewall"
|
37 |
-
msgstr ""
|
38 |
-
|
39 |
-
#: install.php:136
|
40 |
-
msgid ""
|
41 |
-
"This installer will help you to make the setup process as quick and easy as "
|
42 |
-
"possible."
|
43 |
-
msgstr ""
|
44 |
-
|
45 |
-
#: install.php:138
|
46 |
-
msgid ""
|
47 |
-
"Although NinjaFirewall looks like a regular security plugin, it is not. It "
|
48 |
-
"can be installed and configured from the WordPress admin console, but it is "
|
49 |
-
"a stand-alone Web Application Firewall that sits in front of WordPress."
|
50 |
-
msgstr ""
|
51 |
-
|
52 |
-
#: install.php:138
|
53 |
-
msgid ""
|
54 |
-
"It can run in two different modes: <b>Full WAF</b> or <b>WordPress WAF</b> "
|
55 |
-
"modes."
|
56 |
-
msgstr ""
|
57 |
-
|
58 |
-
#: install.php:140
|
59 |
-
msgid "Full WAF mode"
|
60 |
-
msgstr ""
|
61 |
-
|
62 |
-
#: install.php:142
|
63 |
-
msgid ""
|
64 |
-
"In <b>Full WAF</b> mode, NinjaFirewall will hook, scan, reject or sanitise "
|
65 |
-
"any HTTP and HTTPS request sent to a PHP script before it reaches WordPress, "
|
66 |
-
"its plugins or even the database. All scripts located inside the blog "
|
67 |
-
"installation directories and sub-directories will be protected, including "
|
68 |
-
"those that aren't part of the WordPress package. Even encoded PHP scripts (e."
|
69 |
-
"g., ionCube), potential backdoors and shell scripts (e.g., c99, r57) will be "
|
70 |
-
"filtered by NinjaFirewall."
|
71 |
-
msgstr ""
|
72 |
-
|
73 |
-
#: install.php:144
|
74 |
-
#, php-format
|
75 |
-
msgid ""
|
76 |
-
"That makes it a true firewall and gives you the highest possible level of "
|
77 |
-
"protection: <a href=\"%s\" title=\"%s\">security without compromise</a>."
|
78 |
-
msgstr ""
|
79 |
-
|
80 |
-
#: install.php:146
|
81 |
-
#, php-format
|
82 |
-
msgid ""
|
83 |
-
"To run NinjaFirewall in <b>Full WAF</b> mode, your server must allow the use "
|
84 |
-
"of the <code>auto_prepend_file</code> PHP directive. It is required to "
|
85 |
-
"instruct the PHP interpreter to load the firewall before WordPress or any "
|
86 |
-
"other script. Most of the time it works right out of the box, or may require "
|
87 |
-
"<a href=\"%s\" title=\"%s\">some very little tweaks</a>. But in a few cases, "
|
88 |
-
"mostly because of some shared hosting plans restrictions, it may simply not "
|
89 |
-
"work at all."
|
90 |
-
msgstr ""
|
91 |
-
|
92 |
-
#: install.php:148 install.php:164
|
93 |
-
msgid "WordPress WAF mode"
|
94 |
-
msgstr ""
|
95 |
-
|
96 |
-
#: install.php:150
|
97 |
-
msgid ""
|
98 |
-
"The <b>WordPress WAF</b> mode requires to load NinjaFirewall via the "
|
99 |
-
"WordPress wp-config.php script. This process makes it easy to setup and the "
|
100 |
-
"installation will always be successful, regardless of your hosting plan "
|
101 |
-
"restrictions."
|
102 |
-
msgstr ""
|
103 |
-
|
104 |
-
#: install.php:150
|
105 |
-
msgid ""
|
106 |
-
"NinjaFirewall will still load before WordPress, its plugins and the database "
|
107 |
-
"and will run as fast as the <b>Full WAF</b> mode."
|
108 |
-
msgstr ""
|
109 |
-
|
110 |
-
#: install.php:152
|
111 |
-
msgid ""
|
112 |
-
"However, the downside of this mode is that NinjaFirewall will be able to "
|
113 |
-
"hook and filter HTTP requests sent to WordPress only. A few features such as "
|
114 |
-
"File Guard, the URL Access Control and Web Filter (WP+ Edition only) will be "
|
115 |
-
"limited."
|
116 |
-
msgstr ""
|
117 |
-
|
118 |
-
#: install.php:154
|
119 |
-
msgid ""
|
120 |
-
"Despite being less powerful than the <b>Full WAF</b> mode, it still offers a "
|
121 |
-
"level of protection and performance higher than any other security plugin."
|
122 |
-
msgstr ""
|
123 |
-
|
124 |
-
#: install.php:156 ninjafirewall.php:464
|
125 |
-
msgid "Installation"
|
126 |
-
msgstr ""
|
127 |
-
|
128 |
-
#: install.php:158
|
129 |
-
msgid ""
|
130 |
-
"We recommend to select the <b>Full WAF</b> mode option first. If it fails, "
|
131 |
-
"this installer will let you switch to the <b>WordPress WAF</b> mode easily."
|
132 |
-
msgstr ""
|
133 |
-
|
134 |
-
#: install.php:162
|
135 |
-
msgid "Full WAF mode (recommended)"
|
136 |
-
msgstr ""
|
137 |
-
|
138 |
-
#: install.php:166
|
139 |
-
msgid ""
|
140 |
-
"Enter the email address where NinjaFirewall will send notifications and "
|
141 |
-
"reports:"
|
142 |
-
msgstr ""
|
143 |
-
|
144 |
-
#: install.php:168 lib/install_fullwaf.php:45 lib/install_fullwaf.php:235
|
145 |
-
#: lib/install_fullwaf.php:489 lib/install_wpwaf.php:140
|
146 |
-
msgid "Next Step"
|
147 |
-
msgstr ""
|
148 |
-
|
149 |
-
#: install.php:175
|
150 |
-
msgid "Privacy policy"
|
151 |
-
msgstr ""
|
152 |
-
|
153 |
-
#: install.php:177 lib/about.php:198 lib/help.php:460
|
154 |
-
msgid ""
|
155 |
-
"Your website can run NinjaFirewall and be compliant with the General Data "
|
156 |
-
"Protection Regulation (GDPR). For more info, please visit our blog:"
|
157 |
-
msgstr ""
|
158 |
-
|
159 |
-
#: install.php:198
|
160 |
-
#, php-format
|
161 |
-
msgid ""
|
162 |
-
"NinjaFirewall cannot create its <code>nfwlog/</code>log and cache folder; "
|
163 |
-
"please make sure that the <code>%s</code> directory is writable"
|
164 |
-
msgstr ""
|
165 |
-
|
166 |
-
#: install.php:232
|
167 |
-
msgid ""
|
168 |
-
"This is NinjaFirewall's logs, loader and cache directory. DO NOT alter or "
|
169 |
-
"remove it as long as NinjaFirewall is running!"
|
170 |
-
msgstr ""
|
171 |
-
|
172 |
-
#: install.php:258 lib/firewall_policies.php:107 lib/help.php:168
|
173 |
-
#: lib/install_fullwaf.php:33 lib/install_fullwaf.php:141 ninjafirewall.php:489
|
174 |
-
msgid "Firewall Policies"
|
175 |
-
msgstr ""
|
176 |
-
|
177 |
-
#: install.php:266
|
178 |
-
msgid "Try again"
|
179 |
-
msgstr ""
|
180 |
-
|
181 |
-
#: install.php:284
|
182 |
-
msgid "Quick Start, FAQ & Troubleshooting Guide"
|
183 |
-
msgstr ""
|
184 |
-
|
185 |
-
#: install.php:285
|
186 |
-
msgid "Hi,"
|
187 |
-
msgstr ""
|
188 |
-
|
189 |
-
#: install.php:287
|
190 |
-
msgid ""
|
191 |
-
"This is NinjaFirewall's installer. Below are some helpful info and links you "
|
192 |
-
"may consider reading before using NinjaFirewall."
|
193 |
-
msgstr ""
|
194 |
-
|
195 |
-
#: install.php:289
|
196 |
-
msgid "Must Read:"
|
197 |
-
msgstr ""
|
198 |
-
|
199 |
-
#: install.php:291
|
200 |
-
msgid "-Securing WordPress with NinjaFirewall. A step by step tutorial:"
|
201 |
-
msgstr ""
|
202 |
-
|
203 |
-
#: install.php:294
|
204 |
-
msgid "-An introduction to NinjaFirewall filtering engine:"
|
205 |
-
msgstr ""
|
206 |
-
|
207 |
-
#: install.php:297
|
208 |
-
msgid "-Testing NinjaFirewall without blocking your visitors:"
|
209 |
-
msgstr ""
|
210 |
-
|
211 |
-
#: install.php:300
|
212 |
-
msgid "-Add your own code to the firewall: the \".htninja\" file:"
|
213 |
-
msgstr ""
|
214 |
-
|
215 |
-
#: install.php:303
|
216 |
-
msgid "-Restricting access to NinjaFirewall settings:"
|
217 |
-
msgstr ""
|
218 |
-
|
219 |
-
#: install.php:306
|
220 |
-
msgid "-Upgrading to PHP 7 with NinjaFirewall installed:"
|
221 |
-
msgstr ""
|
222 |
-
|
223 |
-
#: install.php:309
|
224 |
-
msgid "-Keep your blog protected against the latest vulnerabilities:"
|
225 |
-
msgstr ""
|
226 |
-
|
227 |
-
#: install.php:312
|
228 |
-
msgid "-Test your website security with our online scanner:"
|
229 |
-
msgstr ""
|
230 |
-
|
231 |
-
#: install.php:315
|
232 |
-
msgid "-NinjaFirewall Referral Program:"
|
233 |
-
msgstr ""
|
234 |
-
|
235 |
-
#: install.php:318
|
236 |
-
msgid "Troubleshooting:"
|
237 |
-
msgstr ""
|
238 |
-
|
239 |
-
#: install.php:321
|
240 |
-
msgid "-Locked out of your site / Fatal error / WordPress crash?"
|
241 |
-
msgstr ""
|
242 |
-
|
243 |
-
#: install.php:322
|
244 |
-
msgid "-Failed installation (\"Error: The firewall is not loaded\")?"
|
245 |
-
msgstr ""
|
246 |
-
|
247 |
-
#: install.php:323
|
248 |
-
msgid "-Blank page after INSTALLING NinjaFirewall?"
|
249 |
-
msgstr ""
|
250 |
-
|
251 |
-
#: install.php:324
|
252 |
-
msgid "-Blank page after UNINSTALLING NinjaFirewall?"
|
253 |
-
msgstr ""
|
254 |
-
|
255 |
-
#: install.php:325
|
256 |
-
msgid "-500 Internal Server Error?"
|
257 |
-
msgstr ""
|
258 |
-
|
259 |
-
#: install.php:326
|
260 |
-
msgid "-\"Cannot connect to WordPress database\" error message?"
|
261 |
-
msgstr ""
|
262 |
-
|
263 |
-
#: install.php:327
|
264 |
-
msgid "-How to disable NinjaFirewall?"
|
265 |
-
msgstr ""
|
266 |
-
|
267 |
-
#: install.php:328
|
268 |
-
msgid "-Lost password (brute-force protection)?"
|
269 |
-
msgstr ""
|
270 |
-
|
271 |
-
#: install.php:329
|
272 |
-
msgid "-Blocked visitors (see below)?"
|
273 |
-
msgstr ""
|
274 |
-
|
275 |
-
#: install.php:330
|
276 |
-
msgid "-Exporting NinjaFirewall's configuration"
|
277 |
-
msgstr ""
|
278 |
-
|
279 |
-
#: install.php:332
|
280 |
-
msgid "-NinjaFirewall (WP Edition) troubleshooter script"
|
281 |
-
msgstr ""
|
282 |
-
|
283 |
-
#: install.php:334
|
284 |
-
msgid "-Rename this file to \"wp-check.php\"."
|
285 |
-
msgstr ""
|
286 |
-
|
287 |
-
#: install.php:335
|
288 |
-
msgid "-Upload it into your WordPress root folder."
|
289 |
-
msgstr ""
|
290 |
-
|
291 |
-
#: install.php:336
|
292 |
-
msgid "-Goto http://YOUR WEBSITE/wp-check.php."
|
293 |
-
msgstr ""
|
294 |
-
|
295 |
-
#: install.php:337
|
296 |
-
msgid "-Delete it afterwards."
|
297 |
-
msgstr ""
|
298 |
-
|
299 |
-
#: install.php:339
|
300 |
-
msgid "FAQ:"
|
301 |
-
msgstr ""
|
302 |
-
|
303 |
-
#: install.php:342
|
304 |
-
msgid ""
|
305 |
-
"-Why is NinjaFirewall different from other security plugins for WordPress?"
|
306 |
-
msgstr ""
|
307 |
-
|
308 |
-
#: install.php:343
|
309 |
-
msgid "-Do I need root privileges to install NinjaFirewall?"
|
310 |
-
msgstr ""
|
311 |
-
|
312 |
-
#: install.php:344
|
313 |
-
msgid "-Does it work with Nginx?"
|
314 |
-
msgstr ""
|
315 |
-
|
316 |
-
#: install.php:345
|
317 |
-
msgid "-Do I need to alter my PHP scripts?"
|
318 |
-
msgstr ""
|
319 |
-
|
320 |
-
#: install.php:346
|
321 |
-
msgid ""
|
322 |
-
"-Will NinjaFirewall detect the correct IP of my visitors if I am behind a "
|
323 |
-
"CDN service like Cloudflare or Incapsula?"
|
324 |
-
msgstr ""
|
325 |
-
|
326 |
-
#: install.php:347
|
327 |
-
msgid ""
|
328 |
-
"-I moved my wp-config.php file to another directory. Will it work with "
|
329 |
-
"NinjaFirewall?"
|
330 |
-
msgstr ""
|
331 |
-
|
332 |
-
#: install.php:348
|
333 |
-
msgid "-Will it slow down my site?"
|
334 |
-
msgstr ""
|
335 |
-
|
336 |
-
#: install.php:349
|
337 |
-
msgid "-Is there a Microsoft Windows version?"
|
338 |
-
msgstr ""
|
339 |
-
|
340 |
-
#: install.php:350
|
341 |
-
msgid "-Can I add/write my own security rules?"
|
342 |
-
msgstr ""
|
343 |
-
|
344 |
-
#: install.php:351
|
345 |
-
msgid "-Can I migrate my site(s) with NinjaFirewall installed?"
|
346 |
-
msgstr ""
|
347 |
-
|
348 |
-
#: install.php:353
|
349 |
-
msgid "Help & Support Links:"
|
350 |
-
msgstr ""
|
351 |
-
|
352 |
-
#: install.php:354
|
353 |
-
msgid ""
|
354 |
-
"-Each page of NinjaFirewall includes a contextual help: click on the \"Help"
|
355 |
-
"\" menu tab located in the upper right corner of the corresponding page."
|
356 |
-
msgstr ""
|
357 |
-
|
358 |
-
#: install.php:355
|
359 |
-
msgid "-Online documentation is also available here:"
|
360 |
-
msgstr ""
|
361 |
-
|
362 |
-
#: install.php:356
|
363 |
-
msgid "-The WordPress support forum:"
|
364 |
-
msgstr ""
|
365 |
-
|
366 |
-
#: install.php:357
|
367 |
-
msgid "-Updates info are available via Twitter:"
|
368 |
-
msgstr ""
|
369 |
-
|
370 |
-
#: install.php:378
|
371 |
-
msgid "Error: The firewall is not loaded."
|
372 |
-
msgstr ""
|
373 |
-
|
374 |
-
#: install.php:379
|
375 |
-
msgid "Suggestions:"
|
376 |
-
msgstr ""
|
377 |
-
|
378 |
-
#: install.php:383
|
379 |
-
msgid ""
|
380 |
-
"You selected <code>Apache + PHP module</code> as your HTTP server and PHP "
|
381 |
-
"SAPI. Maybe your HTTP server is <code>Apache + CGI/FastCGI</code>?"
|
382 |
-
msgstr ""
|
383 |
-
|
384 |
-
#: install.php:385 install.php:413
|
385 |
-
msgid ""
|
386 |
-
"You can click the \"Go Back\" button and try to select another HTTP server "
|
387 |
-
"type."
|
388 |
-
msgstr ""
|
389 |
-
|
390 |
-
#: install.php:389
|
391 |
-
msgid ""
|
392 |
-
"You have selected LiteSpeed as your HTTP server. Did you enable the "
|
393 |
-
"\"AllowOverride\" directive from its admin panel? Make sure it is enabled, "
|
394 |
-
"restart LiteSpeed and then, click the \"Test Again\" button below."
|
395 |
-
msgstr ""
|
396 |
-
|
397 |
-
#: install.php:391 install.php:402
|
398 |
-
msgid "Test Again"
|
399 |
-
msgstr ""
|
400 |
-
|
401 |
-
#: install.php:400
|
402 |
-
msgid ""
|
403 |
-
"You have selected <code>.user.ini</code> as your PHP initialization file. "
|
404 |
-
"Unlike <code>php.ini</code>, <code>.user.ini</code> files are not reloaded "
|
405 |
-
"immediately by PHP, but every five minutes. If this is your own server, "
|
406 |
-
"restart Apache (or PHP-FPM if applicable) to force PHP to reload it, "
|
407 |
-
"otherwise please <strong>wait up to five minutes</strong> and then, click "
|
408 |
-
"the \"Test Again\" button below."
|
409 |
-
msgstr ""
|
410 |
-
|
411 |
-
#: install.php:411
|
412 |
-
msgid ""
|
413 |
-
"You selected <code>Apache + CGI/FastCGI</code> as your HTTP server and PHP "
|
414 |
-
"SAPI. Maybe your HTTP server is <code>Apache + PHP module</code>?"
|
415 |
-
msgstr ""
|
416 |
-
|
417 |
-
#: install.php:416
|
418 |
-
msgid "Maybe you did not select the correct PHP INI ?"
|
419 |
-
msgstr ""
|
420 |
-
|
421 |
-
#: install.php:418
|
422 |
-
msgid "You can click the \"Go Back\" button and try to select another one."
|
423 |
-
msgstr ""
|
424 |
-
|
425 |
-
#: install.php:422
|
426 |
-
msgid "Go Back"
|
427 |
-
msgstr ""
|
428 |
-
|
429 |
-
#: install.php:428
|
430 |
-
#, php-format
|
431 |
-
msgid ""
|
432 |
-
"If none of the above suggestions work, you can still install NinjaFirewall "
|
433 |
-
"in %s mode by clicking the button below. Setup is easy and will always work."
|
434 |
-
msgstr ""
|
435 |
-
|
436 |
-
#: install.php:433
|
437 |
-
msgid "Switch to the WordPress WAF mode installer »"
|
438 |
-
msgstr ""
|
439 |
-
|
440 |
-
#: install.php:437
|
441 |
-
msgid "Need help? Check our blog:"
|
442 |
-
msgstr ""
|
443 |
-
|
444 |
#: lib/about.php:31
|
445 |
msgid "Error : cannot find changelog :("
|
446 |
msgstr ""
|
447 |
|
448 |
-
#: lib/about.php:
|
449 |
msgid "About"
|
450 |
msgstr ""
|
451 |
|
452 |
-
#: lib/about.php:
|
453 |
msgid "A powerful antivirus<br />scanner for WordPress."
|
454 |
msgstr ""
|
455 |
|
456 |
-
#: lib/about.php:
|
457 |
msgid "Free Download"
|
458 |
msgstr ""
|
459 |
|
460 |
-
#: lib/about.php:
|
461 |
msgid "Website Monitoring<br />for just $4.99/month."
|
462 |
msgstr ""
|
463 |
|
464 |
-
#: lib/about.php:
|
465 |
msgid "7-Day Free Trial"
|
466 |
msgstr ""
|
467 |
|
468 |
-
#: lib/about.php:
|
469 |
msgid "Malware removal<br />and hack recovery."
|
470 |
msgstr ""
|
471 |
|
472 |
-
#: lib/about.php:
|
473 |
msgid "Clean Your Site!"
|
474 |
msgstr ""
|
475 |
|
476 |
-
#: lib/about.php:
|
477 |
msgid "Changelog"
|
478 |
msgstr ""
|
479 |
|
480 |
-
#: lib/about.php:
|
481 |
msgid "Spread the word!"
|
482 |
msgstr ""
|
483 |
|
484 |
-
#: lib/about.php:
|
485 |
msgid "Referral Program"
|
486 |
msgstr ""
|
487 |
|
488 |
-
#: lib/about.php:
|
489 |
msgid "System Info"
|
490 |
msgstr ""
|
491 |
|
492 |
-
#: lib/about.php:
|
493 |
msgid "GDPR Compliance"
|
494 |
msgstr ""
|
495 |
|
496 |
-
#: lib/about.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
497 |
msgid "PHP version"
|
498 |
msgstr ""
|
499 |
|
500 |
-
#: lib/about.php:
|
501 |
msgid "HTTP server"
|
502 |
msgstr ""
|
503 |
|
504 |
-
#: lib/about.php:
|
505 |
msgid "Operating System"
|
506 |
msgstr ""
|
507 |
|
508 |
-
#: lib/about.php:
|
509 |
msgid "Load Average"
|
510 |
msgstr ""
|
511 |
|
512 |
-
#: lib/about.php:
|
513 |
msgid "RAM"
|
514 |
msgstr ""
|
515 |
|
516 |
-
#: lib/about.php:
|
517 |
msgid "MB free"
|
518 |
msgstr ""
|
519 |
|
520 |
-
#: lib/about.php:
|
521 |
msgid "MB total"
|
522 |
msgstr ""
|
523 |
|
524 |
-
#: lib/about.php:
|
525 |
msgid "Processor"
|
526 |
msgid_plural "Processors"
|
527 |
msgstr[0] ""
|
528 |
msgstr[1] ""
|
529 |
|
530 |
-
#: lib/about.php:
|
531 |
msgid "CPU core:"
|
532 |
msgid_plural "CPU cores:"
|
533 |
msgstr[0] ""
|
534 |
msgstr[1] ""
|
535 |
|
536 |
-
#: lib/about.php:
|
537 |
msgid "CPU model"
|
538 |
msgstr ""
|
539 |
|
540 |
-
#: lib/about.php:
|
541 |
#, php-format
|
542 |
msgid ""
|
543 |
"By joining our NinjaFirewall Referral Program you can earn up to %s for "
|
544 |
"every payment made by a user who signs up using your personal referral link."
|
545 |
msgstr ""
|
546 |
|
547 |
-
#: lib/about.php:
|
548 |
#, php-format
|
549 |
msgid ""
|
550 |
"For more info and subscription, please check our <a href=\"%s\">Referral "
|
551 |
"Program page</a>."
|
552 |
msgstr ""
|
553 |
|
554 |
-
#: lib/
|
|
|
|
|
|
|
|
|
|
|
|
|
555 |
msgid "Anti-Malware"
|
556 |
msgstr ""
|
557 |
|
@@ -584,11 +177,11 @@ msgstr ""
|
|
584 |
msgid "NinjaFirewall Statistics"
|
585 |
msgstr ""
|
586 |
|
587 |
-
#: lib/dashboard_widget.php:54 lib/statistics.php:
|
588 |
msgid "Blocked threats"
|
589 |
msgstr ""
|
590 |
|
591 |
-
#: lib/dashboard_widget.php:58 lib/statistics.php:
|
592 |
msgid "Threats level"
|
593 |
msgstr ""
|
594 |
|
@@ -604,257 +197,264 @@ msgstr ""
|
|
604 |
msgid "Medium:"
|
605 |
msgstr ""
|
606 |
|
|
|
|
|
|
|
|
|
607 |
#: lib/dashboard_widget.php:86
|
608 |
msgid "View firewall log"
|
609 |
msgstr ""
|
610 |
|
611 |
-
#: lib/event_notifications.php:
|
612 |
msgid "Event Notifications"
|
613 |
msgstr ""
|
614 |
|
615 |
-
#: lib/event_notifications.php:
|
616 |
-
#: lib/firewall_log.php:58 lib/firewall_options.php:
|
617 |
-
#: lib/firewall_policies.php:
|
618 |
-
#: lib/
|
619 |
msgid "Your changes have been saved."
|
620 |
msgstr ""
|
621 |
|
622 |
-
#: lib/event_notifications.php:
|
623 |
msgid "WordPress admin dashboard"
|
624 |
msgstr ""
|
625 |
|
626 |
-
#: lib/event_notifications.php:
|
627 |
msgid "Send me an alert whenever"
|
628 |
msgstr ""
|
629 |
|
630 |
-
#: lib/event_notifications.php:
|
631 |
msgid "An administrator logs in (default)"
|
632 |
msgstr ""
|
633 |
|
634 |
-
#: lib/event_notifications.php:
|
635 |
msgid "Someone - user, admin, editor, etc - logs in"
|
636 |
msgstr ""
|
637 |
|
638 |
-
#: lib/event_notifications.php:
|
639 |
msgid "No, thanks (not recommended)"
|
640 |
msgstr ""
|
641 |
|
642 |
-
#: lib/event_notifications.php:
|
643 |
msgid "Plugins"
|
644 |
msgstr ""
|
645 |
|
646 |
-
#: lib/event_notifications.php:
|
647 |
-
#: lib/event_notifications.php:
|
648 |
msgid "Send me an alert whenever someone"
|
649 |
msgstr ""
|
650 |
|
651 |
-
#: lib/event_notifications.php:
|
652 |
msgid "Uploads a plugin (default)"
|
653 |
msgstr ""
|
654 |
|
655 |
-
#: lib/event_notifications.php:
|
656 |
msgid "Installs a plugin (default)"
|
657 |
msgstr ""
|
658 |
|
659 |
-
#: lib/event_notifications.php:
|
660 |
msgid "Activates a plugin"
|
661 |
msgstr ""
|
662 |
|
663 |
-
#: lib/event_notifications.php:
|
664 |
msgid "Updates a plugin"
|
665 |
msgstr ""
|
666 |
|
667 |
-
#: lib/event_notifications.php:
|
668 |
msgid "Deactivates a plugin (default)"
|
669 |
msgstr ""
|
670 |
|
671 |
-
#: lib/event_notifications.php:
|
672 |
msgid "Deletes a plugin"
|
673 |
msgstr ""
|
674 |
|
675 |
-
#: lib/event_notifications.php:
|
676 |
msgid "Themes"
|
677 |
msgstr ""
|
678 |
|
679 |
-
#: lib/event_notifications.php:
|
680 |
msgid "Uploads a theme (default)"
|
681 |
msgstr ""
|
682 |
|
683 |
-
#: lib/event_notifications.php:
|
684 |
msgid "Installs a theme (default)"
|
685 |
msgstr ""
|
686 |
|
687 |
-
#: lib/event_notifications.php:
|
688 |
msgid "Activates a theme"
|
689 |
msgstr ""
|
690 |
|
691 |
-
#: lib/event_notifications.php:
|
692 |
msgid "Deletes a theme"
|
693 |
msgstr ""
|
694 |
|
695 |
-
#: lib/event_notifications.php:
|
696 |
msgid "Core"
|
697 |
msgstr ""
|
698 |
|
699 |
-
#: lib/event_notifications.php:
|
700 |
msgid "Updates WordPress (default)"
|
701 |
msgstr ""
|
702 |
|
703 |
-
#: lib/event_notifications.php:
|
704 |
msgid "Administrator account"
|
705 |
msgstr ""
|
706 |
|
707 |
-
#: lib/event_notifications.php:
|
708 |
msgid ""
|
709 |
"An administrator account is created, modified or deleted in the database "
|
710 |
"(default)"
|
711 |
msgstr ""
|
712 |
|
713 |
-
#: lib/event_notifications.php:
|
714 |
msgid "A user attempts to gain administrative privileges (default)"
|
715 |
msgstr ""
|
716 |
|
717 |
-
#: lib/event_notifications.php:
|
718 |
msgid "Daily report"
|
719 |
msgstr ""
|
720 |
|
721 |
-
#: lib/event_notifications.php:
|
722 |
msgid "Send me a daily activity report"
|
723 |
msgstr ""
|
724 |
|
725 |
-
#: lib/event_notifications.php:
|
726 |
-
#: lib/
|
727 |
-
#: lib/firewall_policies.php:
|
728 |
-
#: lib/
|
729 |
-
#: lib/
|
730 |
-
|
731 |
-
#: lib/firewall_policies.php:1064 lib/firewall_policies.php:1120
|
732 |
-
#: lib/firewall_policies.php:1130 lib/firewall_policies.php:1140
|
733 |
-
#: lib/firewall_policies.php:1150 lib/firewall_policies.php:1197
|
734 |
-
#: lib/firewall_policies.php:1207 lib/network.php:63 lib/rules_update.php:145
|
735 |
-
msgid "Yes (default)"
|
736 |
msgstr ""
|
737 |
|
738 |
-
#: lib/event_notifications.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
739 |
msgid "Log"
|
740 |
msgstr ""
|
741 |
|
742 |
-
#: lib/event_notifications.php:
|
743 |
msgid "Write all events to the firewall log"
|
744 |
msgstr ""
|
745 |
|
746 |
-
#: lib/event_notifications.php:
|
747 |
msgid "PHP backtrace"
|
748 |
msgstr ""
|
749 |
|
750 |
-
#: lib/event_notifications.php:
|
751 |
msgid "Attach a PHP backtrace to important notifications"
|
752 |
msgstr ""
|
753 |
|
754 |
-
#: lib/event_notifications.php:
|
755 |
msgid "Disable backtrace"
|
756 |
msgstr ""
|
757 |
|
758 |
-
#: lib/event_notifications.php:
|
759 |
msgid "Low verbosity"
|
760 |
msgstr ""
|
761 |
|
762 |
-
#: lib/event_notifications.php:
|
763 |
msgid "Medium verbosity (default)"
|
764 |
msgstr ""
|
765 |
|
766 |
-
#: lib/event_notifications.php:
|
767 |
msgid "High verbosity"
|
768 |
msgstr ""
|
769 |
|
770 |
-
#: lib/event_notifications.php:
|
771 |
#, php-format
|
772 |
msgid "<a href=\"%s\">Consult our blog</a> for more info."
|
773 |
msgstr ""
|
774 |
|
775 |
-
#: lib/event_notifications.php:
|
776 |
msgid "Contact email"
|
777 |
msgstr ""
|
778 |
|
779 |
-
#: lib/event_notifications.php:
|
780 |
msgid "Alerts should be sent to"
|
781 |
msgstr ""
|
782 |
|
783 |
-
#: lib/event_notifications.php:
|
784 |
msgid ""
|
785 |
"Multiple recipients must be comma-separated (e.g., <code>joe@example.org,"
|
786 |
"alice@example.org</code>)."
|
787 |
msgstr ""
|
788 |
|
789 |
-
#: lib/event_notifications.php:
|
790 |
msgid "Only to me, the Super Admin"
|
791 |
msgstr ""
|
792 |
|
793 |
-
#: lib/event_notifications.php:
|
794 |
msgid "default"
|
795 |
msgstr ""
|
796 |
|
797 |
-
#: lib/event_notifications.php:
|
798 |
msgid "To the administrator of the site where originated the alert"
|
799 |
msgstr ""
|
800 |
|
801 |
-
#: lib/event_notifications.php:
|
802 |
msgid "Other(s):"
|
803 |
msgstr ""
|
804 |
|
805 |
-
#: lib/event_notifications.php:
|
806 |
msgid "Save Event Notifications"
|
807 |
msgstr ""
|
808 |
|
809 |
-
#: lib/event_notifications.php:
|
810 |
msgid "[NinjaFirewall] Daily Activity Report"
|
811 |
msgstr ""
|
812 |
|
813 |
-
#: lib/event_notifications.php:
|
814 |
#, php-format
|
815 |
msgid "Daily activity report for: %s"
|
816 |
msgstr ""
|
817 |
|
818 |
-
#: lib/event_notifications.php:
|
819 |
msgid "Date Range Processed: Yesterday"
|
820 |
msgstr ""
|
821 |
|
822 |
-
#: lib/event_notifications.php:
|
823 |
msgid "Blocked threats:"
|
824 |
msgstr ""
|
825 |
|
826 |
-
#: lib/event_notifications.php:
|
827 |
msgid "critical:"
|
828 |
msgstr ""
|
829 |
|
830 |
-
#: lib/event_notifications.php:
|
831 |
msgid "high:"
|
832 |
msgstr ""
|
833 |
|
834 |
-
#: lib/event_notifications.php:
|
835 |
msgid "medium:"
|
836 |
msgstr ""
|
837 |
|
838 |
-
#: lib/event_notifications.php:
|
839 |
msgid "Blocked brute-force attacks:"
|
840 |
msgstr ""
|
841 |
|
842 |
-
#: lib/event_notifications.php:
|
843 |
msgid ""
|
844 |
"This notification can be turned off from NinjaFirewall \"Event Notifications"
|
845 |
"\" page."
|
846 |
msgstr ""
|
847 |
|
848 |
-
#: lib/event_notifications.php:
|
849 |
-
#: lib/file_check.php:
|
850 |
-
#: lib/utils.php:
|
851 |
msgid "Support forum:"
|
852 |
msgstr ""
|
853 |
|
854 |
-
#: lib/event_notifications.php:
|
855 |
-
#: lib/file_check.php:
|
856 |
-
#: lib/utils.php:
|
857 |
-
#: lib/utils.php:
|
858 |
#, php-format
|
859 |
msgid ""
|
860 |
"Need more security? Check out our supercharged NinjaFirewall (WP+ Edition): "
|
@@ -877,7 +477,7 @@ msgstr ""
|
|
877 |
msgid "You must create a snapshot first."
|
878 |
msgstr ""
|
879 |
|
880 |
-
#: lib/file_check.php:104 lib/file_check.php:
|
881 |
msgid "NinjaFirewall detected that changes were made to your files."
|
882 |
msgstr ""
|
883 |
|
@@ -885,7 +485,7 @@ msgstr ""
|
|
885 |
msgid "No changes detected."
|
886 |
msgstr ""
|
887 |
|
888 |
-
#: lib/file_check.php:129 lib/help.php:
|
889 |
msgid "File Check"
|
890 |
msgstr ""
|
891 |
|
@@ -898,11 +498,11 @@ msgstr ""
|
|
898 |
msgid "Default: %s"
|
899 |
msgstr ""
|
900 |
|
901 |
-
#: lib/file_check.php:158 lib/file_guard.php:
|
902 |
msgid "Exclude the following files/folders (optional)"
|
903 |
msgstr ""
|
904 |
|
905 |
-
#: lib/file_check.php:159 lib/file_guard.php:
|
906 |
msgid "e.g.,"
|
907 |
msgstr ""
|
908 |
|
@@ -912,307 +512,291 @@ msgid ""
|
|
912 |
"separated"
|
913 |
msgstr ""
|
914 |
|
915 |
-
#: lib/file_check.php:
|
916 |
msgid "Do not follow symbolic links (default)"
|
917 |
msgstr ""
|
918 |
|
919 |
-
#: lib/file_check.php:
|
920 |
msgid "Create Snapshot"
|
921 |
msgstr ""
|
922 |
|
923 |
-
#: lib/file_check.php:
|
924 |
-
msgid "Delete the current snapshot?"
|
925 |
-
msgstr ""
|
926 |
-
|
927 |
-
#: lib/file_check.php:311
|
928 |
msgid "Last snapshot"
|
929 |
msgstr ""
|
930 |
|
931 |
-
#: lib/file_check.php:
|
932 |
#, php-format
|
933 |
msgid "Created on: %s"
|
934 |
msgstr ""
|
935 |
|
936 |
-
#: lib/file_check.php:
|
937 |
#, php-format
|
938 |
msgid "Total files: %s "
|
939 |
msgstr ""
|
940 |
|
941 |
-
#: lib/file_check.php:
|
942 |
msgid "Directory:"
|
943 |
msgstr ""
|
944 |
|
945 |
-
#: lib/file_check.php:
|
946 |
msgid "Exclusion:"
|
947 |
msgstr ""
|
948 |
|
949 |
-
#: lib/file_check.php:
|
950 |
msgid "Symlinks:"
|
951 |
msgstr ""
|
952 |
|
953 |
-
#: lib/file_check.php:
|
954 |
msgid "follow"
|
955 |
msgstr ""
|
956 |
|
957 |
-
#: lib/file_check.php:
|
958 |
msgid "do not follow"
|
959 |
msgstr ""
|
960 |
|
961 |
-
#: lib/file_check.php:
|
962 |
#, php-format
|
963 |
msgid "Processing time: %s seconds"
|
964 |
msgstr ""
|
965 |
|
966 |
-
#: lib/file_check.php:
|
967 |
msgid "Download Snapshot"
|
968 |
msgstr ""
|
969 |
|
970 |
-
#: lib/file_check.php:
|
971 |
msgid "Delete Snapshot"
|
972 |
msgstr ""
|
973 |
|
974 |
-
#: lib/file_check.php:
|
975 |
msgid "Last changes"
|
976 |
msgstr ""
|
977 |
|
978 |
-
#: lib/file_check.php:
|
979 |
#, php-format
|
980 |
msgid "New files: %s"
|
981 |
msgstr ""
|
982 |
|
983 |
-
#: lib/file_check.php:
|
984 |
#, php-format
|
985 |
msgid "Deleted files: %s"
|
986 |
msgstr ""
|
987 |
|
988 |
-
#: lib/file_check.php:
|
989 |
#, php-format
|
990 |
msgid "Modified files: %s"
|
991 |
msgstr ""
|
992 |
|
993 |
-
#: lib/file_check.php:
|
994 |
msgid "View Changes"
|
995 |
msgstr ""
|
996 |
|
997 |
-
#: lib/file_check.php:
|
998 |
msgid "Download Changes"
|
999 |
msgstr ""
|
1000 |
|
1001 |
-
#: lib/file_check.php:
|
1002 |
msgid "Click a file to get more info about it."
|
1003 |
msgstr ""
|
1004 |
|
1005 |
-
#: lib/file_check.php:
|
1006 |
msgid "New files:"
|
1007 |
msgstr ""
|
1008 |
|
1009 |
-
#: lib/file_check.php:
|
1010 |
msgid "Size"
|
1011 |
msgstr ""
|
1012 |
|
1013 |
-
#: lib/file_check.php:
|
1014 |
msgid "Access"
|
1015 |
msgstr ""
|
1016 |
|
1017 |
-
#: lib/file_check.php:
|
1018 |
msgid "Uid / Gid"
|
1019 |
msgstr ""
|
1020 |
|
1021 |
-
#: lib/file_check.php:
|
1022 |
msgid "Modify"
|
1023 |
msgstr ""
|
1024 |
|
1025 |
-
#: lib/file_check.php:
|
1026 |
msgid "Change"
|
1027 |
msgstr ""
|
1028 |
|
1029 |
-
#: lib/file_check.php:
|
1030 |
msgid "Deleted files:"
|
1031 |
msgstr ""
|
1032 |
|
1033 |
-
#: lib/file_check.php:
|
1034 |
msgid "Modified files:"
|
1035 |
msgstr ""
|
1036 |
|
1037 |
-
#: lib/file_check.php:
|
1038 |
msgid "Old"
|
1039 |
msgstr ""
|
1040 |
|
1041 |
-
#: lib/file_check.php:
|
1042 |
msgid "New"
|
1043 |
msgstr ""
|
1044 |
|
1045 |
-
#: lib/file_check.php:
|
1046 |
msgid "None"
|
1047 |
msgstr ""
|
1048 |
|
1049 |
-
#: lib/file_check.php:
|
1050 |
msgid "Scan System For File Changes"
|
1051 |
msgstr ""
|
1052 |
|
1053 |
-
#: lib/file_check.php:
|
1054 |
msgid "Options"
|
1055 |
msgstr ""
|
1056 |
|
1057 |
-
#: lib/file_check.php:
|
1058 |
#, php-format
|
1059 |
msgid ""
|
1060 |
-
"It seems that %s is
|
1061 |
"otherwise NinjaFirewall scheduled scans will not work."
|
1062 |
msgstr ""
|
1063 |
|
1064 |
-
#: lib/file_check.php:
|
1065 |
msgid "Enable scheduled scans"
|
1066 |
msgstr ""
|
1067 |
|
1068 |
-
#: lib/file_check.php:
|
1069 |
-
#: lib/firewall_policies.php:479 lib/firewall_policies.php:489
|
1070 |
-
#: lib/firewall_policies.php:499 lib/firewall_policies.php:509
|
1071 |
-
#: lib/firewall_policies.php:579 lib/firewall_policies.php:622
|
1072 |
-
#: lib/firewall_policies.php:654 lib/firewall_policies.php:692
|
1073 |
-
#: lib/firewall_policies.php:780 lib/firewall_policies.php:800
|
1074 |
-
#: lib/firewall_policies.php:843 lib/firewall_policies.php:973
|
1075 |
-
#: lib/firewall_policies.php:987 lib/firewall_policies.php:1012
|
1076 |
-
#: lib/firewall_policies.php:1220 lib/login_protection.php:295
|
1077 |
msgid "No (default)"
|
1078 |
msgstr ""
|
1079 |
|
1080 |
-
#: lib/file_check.php:
|
1081 |
msgid "Hourly"
|
1082 |
msgstr ""
|
1083 |
|
1084 |
-
#: lib/file_check.php:
|
1085 |
msgid "Twicedaily"
|
1086 |
msgstr ""
|
1087 |
|
1088 |
-
#: lib/file_check.php:
|
1089 |
msgid "Daily"
|
1090 |
msgstr ""
|
1091 |
|
1092 |
-
#: lib/file_check.php:
|
1093 |
#, php-format
|
1094 |
msgid ""
|
1095 |
"Next scan will start in approximately %s day(s), %s hour(s), %s minute(s) "
|
1096 |
"and %s second(s)."
|
1097 |
msgstr ""
|
1098 |
|
1099 |
-
#: lib/file_check.php:
|
1100 |
msgid ""
|
1101 |
"The next scheduled scan date is in the past! WordPress wp-cron may not be "
|
1102 |
"working or may have been disabled."
|
1103 |
msgstr ""
|
1104 |
|
1105 |
-
#: lib/file_check.php:
|
1106 |
msgid "Scheduled scan report"
|
1107 |
msgstr ""
|
1108 |
|
1109 |
-
#: lib/file_check.php:
|
1110 |
msgid "Send me a report by email only if changes are detected (default)"
|
1111 |
msgstr ""
|
1112 |
|
1113 |
-
#: lib/file_check.php:
|
1114 |
msgid "Always send me a report by email after a scheduled scan"
|
1115 |
msgstr ""
|
1116 |
|
1117 |
-
#: lib/file_check.php:
|
1118 |
msgid "Save Scan Options"
|
1119 |
msgstr ""
|
1120 |
|
1121 |
-
#: lib/file_check.php:
|
1122 |
msgid "Enter the full path to the directory to be scanned."
|
1123 |
msgstr ""
|
1124 |
|
1125 |
-
#: lib/file_check.php:
|
1126 |
#, php-format
|
1127 |
msgid "The directory %s does not exist."
|
1128 |
msgstr ""
|
1129 |
|
1130 |
-
#: lib/file_check.php:
|
1131 |
#, php-format
|
1132 |
msgid "The directory %s is not readable."
|
1133 |
msgstr ""
|
1134 |
|
1135 |
-
#: lib/file_check.php:
|
1136 |
#, php-format
|
1137 |
msgid "Cannot write to %s."
|
1138 |
msgstr ""
|
1139 |
|
1140 |
-
#: lib/file_check.php:
|
1141 |
#, php-format
|
1142 |
msgid "Error : cannot open %s directory."
|
1143 |
msgstr ""
|
1144 |
|
1145 |
-
#: lib/file_check.php:
|
1146 |
#, php-format
|
1147 |
msgid "Error : %s directory is not readable."
|
1148 |
msgstr ""
|
1149 |
|
1150 |
-
#: lib/file_check.php:
|
1151 |
#, php-format
|
1152 |
msgid "Missing options line %s, please try again."
|
1153 |
msgstr ""
|
1154 |
|
1155 |
-
#: lib/file_check.php:
|
1156 |
#, php-format
|
1157 |
msgid "Cannot create %s."
|
1158 |
msgstr ""
|
1159 |
|
1160 |
-
#: lib/file_check.php:
|
1161 |
msgid "Error reading old snapshot file."
|
1162 |
msgstr ""
|
1163 |
|
1164 |
-
#: lib/file_check.php:
|
1165 |
msgid "Error reading new snapshot file."
|
1166 |
msgstr ""
|
1167 |
|
1168 |
-
#: lib/file_check.php:
|
1169 |
msgid "New file"
|
1170 |
msgstr ""
|
1171 |
|
1172 |
-
#: lib/file_check.php:
|
1173 |
msgid "Modified file"
|
1174 |
msgstr ""
|
1175 |
|
1176 |
-
#: lib/file_check.php:
|
1177 |
msgid "Deleted file"
|
1178 |
msgstr ""
|
1179 |
|
1180 |
-
#: lib/file_check.php:
|
1181 |
msgid "[NinjaFirewall] Alert: File Check detection"
|
1182 |
msgstr ""
|
1183 |
|
1184 |
-
#: lib/file_check.php:
|
1185 |
-
#: lib/file_check.php:
|
1186 |
-
#: lib/utils.php:
|
1187 |
msgid "Blog:"
|
1188 |
msgstr ""
|
1189 |
|
1190 |
-
#: lib/file_check.php:
|
1191 |
#, php-format
|
1192 |
msgid "Date: %s"
|
1193 |
msgstr ""
|
1194 |
|
1195 |
-
#: lib/file_check.php:
|
1196 |
msgid "See attached file for details."
|
1197 |
msgstr ""
|
1198 |
|
1199 |
-
#: lib/file_check.php:
|
1200 |
msgid "[NinjaFirewall] File Check report"
|
1201 |
msgstr ""
|
1202 |
|
1203 |
-
#: lib/file_check.php:
|
1204 |
msgid "NinjaFirewall did not detect changes in your files."
|
1205 |
msgstr ""
|
1206 |
|
1207 |
-
#: lib/file_guard.php:
|
1208 |
-
msgid "Please enter a number from 1 to 99."
|
1209 |
-
msgstr ""
|
1210 |
-
|
1211 |
-
#: lib/file_guard.php:54 lib/help.php:285 ninjafirewall.php:493
|
1212 |
msgid "File Guard"
|
1213 |
msgstr ""
|
1214 |
|
1215 |
-
#: lib/file_guard.php:
|
1216 |
#, php-format
|
1217 |
msgid ""
|
1218 |
"You are running NinjaFirewall in <i>WordPress WAF</i> mode. The %s feature "
|
@@ -1221,57 +805,50 @@ msgid ""
|
|
1221 |
"to any PHP script, you will need to run NinjaFirewall in %s mode."
|
1222 |
msgstr ""
|
1223 |
|
1224 |
-
#: lib/file_guard.php:
|
1225 |
#, php-format
|
1226 |
msgid ""
|
1227 |
"The cache directory %s is not writable. Please change its permissions (0777 "
|
1228 |
"or equivalent)."
|
1229 |
msgstr ""
|
1230 |
|
1231 |
-
#: lib/file_guard.php:
|
1232 |
msgid "Enable File Guard"
|
1233 |
msgstr ""
|
1234 |
|
1235 |
-
#: lib/file_guard.php:
|
1236 |
-
|
|
|
|
|
1237 |
msgstr ""
|
1238 |
|
1239 |
-
#: lib/file_guard.php:
|
1240 |
-
#: lib/
|
1241 |
-
|
1242 |
-
#: lib/firewall_policies.php:727 lib/firewall_policies.php:737
|
1243 |
-
#: lib/firewall_policies.php:747 lib/firewall_policies.php:790
|
1244 |
-
#: lib/firewall_policies.php:833 lib/firewall_policies.php:853
|
1245 |
-
#: lib/firewall_policies.php:915 lib/firewall_policies.php:1067
|
1246 |
-
#: lib/firewall_policies.php:1123 lib/firewall_policies.php:1133
|
1247 |
-
#: lib/firewall_policies.php:1143 lib/firewall_policies.php:1153
|
1248 |
-
#: lib/firewall_policies.php:1200 lib/firewall_policies.php:1210
|
1249 |
-
#: lib/network.php:64 lib/rules_update.php:148
|
1250 |
-
msgid "No"
|
1251 |
msgstr ""
|
1252 |
|
1253 |
-
#: lib/file_guard.php:
|
1254 |
msgid "Real-time detection"
|
1255 |
msgstr ""
|
1256 |
|
1257 |
-
#: lib/file_guard.php:
|
1258 |
#, php-format
|
1259 |
msgid ""
|
1260 |
"Monitor file activity and send an alert when someone is accessing a PHP "
|
1261 |
"script that was modified or created less than %s hour(s) ago."
|
1262 |
msgstr ""
|
1263 |
|
1264 |
-
#: lib/file_guard.php:
|
1265 |
msgid "or"
|
1266 |
msgstr ""
|
1267 |
|
1268 |
-
#: lib/file_guard.php:
|
1269 |
msgid ""
|
1270 |
"Full or partial case-sensitive string(s), max. 255 characters. Multiple "
|
1271 |
"values must be comma-separated"
|
1272 |
msgstr ""
|
1273 |
|
1274 |
-
#: lib/file_guard.php:
|
1275 |
msgid "Save File Guard options"
|
1276 |
msgstr ""
|
1277 |
|
@@ -1295,544 +872,464 @@ msgstr ""
|
|
1295 |
msgid "Your public key has been saved"
|
1296 |
msgstr ""
|
1297 |
|
1298 |
-
#: lib/firewall_log.php:
|
|
|
1299 |
msgid "Firewall Log"
|
1300 |
msgstr ""
|
1301 |
|
1302 |
-
#: lib/firewall_log.php:
|
1303 |
msgid "Error"
|
1304 |
msgstr ""
|
1305 |
|
1306 |
-
#: lib/firewall_log.php:
|
1307 |
msgid "Note"
|
1308 |
msgstr ""
|
1309 |
|
1310 |
-
#: lib/firewall_log.php:
|
1311 |
#, php-format
|
1312 |
msgid "your log has %s lines. I will display the last %s lines only."
|
1313 |
msgstr ""
|
1314 |
|
1315 |
-
#: lib/firewall_log.php:
|
1316 |
msgid "Viewing:"
|
1317 |
msgstr ""
|
1318 |
|
1319 |
-
#: lib/firewall_log.php:
|
1320 |
msgid "bytes"
|
1321 |
msgstr ""
|
1322 |
|
1323 |
-
#: lib/firewall_log.php:
|
1324 |
msgid "The selected log is empty."
|
1325 |
msgstr ""
|
1326 |
|
1327 |
-
#: lib/firewall_log.php:
|
1328 |
msgid ""
|
1329 |
"The log shows all threats that were blocked by the firewall, unless stated "
|
1330 |
"otherwise. It is rotated monthly."
|
1331 |
msgstr ""
|
1332 |
|
1333 |
-
#: lib/firewall_log.php:
|
1334 |
msgid "Log Options"
|
1335 |
msgstr ""
|
1336 |
|
1337 |
-
#: lib/firewall_log.php:
|
1338 |
msgid "Auto-delete log"
|
1339 |
msgstr ""
|
1340 |
|
1341 |
-
#: lib/firewall_log.php:
|
1342 |
#, php-format
|
1343 |
msgid "Automatically delete logs older than %s days"
|
1344 |
msgstr ""
|
1345 |
|
1346 |
-
#: lib/firewall_log.php:
|
1347 |
msgid "Set this option to 0 to disable it."
|
1348 |
msgstr ""
|
1349 |
|
1350 |
-
#: lib/firewall_log.php:
|
1351 |
msgid "Save Log Options"
|
1352 |
msgstr ""
|
1353 |
|
1354 |
-
#: lib/firewall_log.php:
|
1355 |
-
#: lib/wpplus.php:
|
1356 |
-
msgid "Centralized Logging"
|
1357 |
-
msgstr ""
|
1358 |
-
|
1359 |
-
#: lib/firewall_log.php:205
|
1360 |
-
msgid "Enter your public key (optional)"
|
1361 |
-
msgstr ""
|
1362 |
-
|
1363 |
-
#: lib/firewall_log.php:208
|
1364 |
-
#, php-format
|
1365 |
-
msgid ""
|
1366 |
-
"<a href=\"%s\">Consult our blog</a> if you want to enable centralized "
|
1367 |
-
"logging."
|
1368 |
-
msgstr ""
|
1369 |
-
|
1370 |
-
#: lib/firewall_log.php:215
|
1371 |
-
msgid "Save Public Key"
|
1372 |
-
msgstr ""
|
1373 |
-
|
1374 |
-
#: lib/firewall_log.php:217
|
1375 |
-
msgid "Delete Public Key"
|
1376 |
-
msgstr ""
|
1377 |
-
|
1378 |
-
#: lib/firewall_log.php:236
|
1379 |
-
msgid "Your public key is not valid."
|
1380 |
-
msgstr ""
|
1381 |
-
|
1382 |
-
#: lib/firewall_log.php:313
|
1383 |
-
msgid "The requested log does not exist."
|
1384 |
-
msgstr ""
|
1385 |
-
|
1386 |
-
#: lib/firewall_log.php:320
|
1387 |
-
msgid "Unable to open the log for read operation."
|
1388 |
-
msgstr ""
|
1389 |
-
|
1390 |
-
#: lib/firewall_options.php:32
|
1391 |
-
msgid ""
|
1392 |
-
"This action will restore the selected configuration file and will override "
|
1393 |
-
"all your current firewall options, policies and rules. Continue?"
|
1394 |
-
msgstr ""
|
1395 |
-
|
1396 |
-
#: lib/firewall_options.php:52
|
1397 |
-
msgid "CSS style sheets"
|
1398 |
msgstr ""
|
1399 |
|
1400 |
-
#: lib/
|
1401 |
-
msgid "
|
1402 |
msgstr ""
|
1403 |
|
1404 |
-
#: lib/
|
1405 |
#, php-format
|
1406 |
msgid ""
|
1407 |
-
"
|
1408 |
-
"
|
1409 |
msgstr ""
|
1410 |
|
1411 |
-
#: lib/
|
1412 |
-
msgid "
|
1413 |
msgstr ""
|
1414 |
|
1415 |
-
#: lib/
|
1416 |
-
msgid "
|
1417 |
msgstr ""
|
1418 |
|
1419 |
-
#: lib/
|
1420 |
-
msgid "
|
1421 |
msgstr ""
|
1422 |
|
1423 |
-
#: lib/
|
1424 |
-
|
1425 |
-
#: lib/overview.php:78 lib/overview.php:210
|
1426 |
-
msgid "Enabled"
|
1427 |
msgstr ""
|
1428 |
|
1429 |
-
#: lib/firewall_options.php:
|
1430 |
-
msgid "
|
1431 |
msgstr ""
|
1432 |
|
1433 |
-
#: lib/firewall_options.php:
|
1434 |
-
msgid "
|
1435 |
msgstr ""
|
1436 |
|
1437 |
-
#: lib/firewall_options.php:
|
1438 |
msgid "Debugging mode"
|
1439 |
msgstr ""
|
1440 |
|
1441 |
-
#: lib/firewall_options.php:
|
1442 |
-
msgid "Disabled (default)"
|
1443 |
-
msgstr ""
|
1444 |
-
|
1445 |
-
#: lib/firewall_options.php:147
|
1446 |
msgid "HTTP error code to return"
|
1447 |
msgstr ""
|
1448 |
|
1449 |
-
#: lib/firewall_options.php:
|
1450 |
msgid "400 Bad Request"
|
1451 |
msgstr ""
|
1452 |
|
1453 |
-
#: lib/firewall_options.php:
|
1454 |
msgid "403 Forbidden (default)"
|
1455 |
msgstr ""
|
1456 |
|
1457 |
-
#: lib/firewall_options.php:
|
1458 |
msgid "404 Not Found"
|
1459 |
msgstr ""
|
1460 |
|
1461 |
-
#: lib/firewall_options.php:
|
1462 |
msgid "406 Not Acceptable"
|
1463 |
msgstr ""
|
1464 |
|
1465 |
-
#: lib/firewall_options.php:
|
1466 |
msgid "418 I'm a teapot"
|
1467 |
msgstr ""
|
1468 |
|
1469 |
-
#: lib/firewall_options.php:
|
1470 |
msgid "500 Internal Server Error"
|
1471 |
msgstr ""
|
1472 |
|
1473 |
-
#: lib/firewall_options.php:
|
1474 |
msgid "503 Service Unavailable"
|
1475 |
msgstr ""
|
1476 |
|
1477 |
-
#: lib/firewall_options.php:
|
1478 |
msgid "IP anonymization"
|
1479 |
msgstr ""
|
1480 |
|
1481 |
-
#: lib/firewall_options.php:
|
1482 |
-
msgid "Anonymize IP addresses by removing the last 3 characters."
|
1483 |
-
msgstr ""
|
1484 |
-
|
1485 |
-
#: lib/firewall_options.php:174
|
1486 |
#, php-format
|
1487 |
msgid ""
|
1488 |
"Does not apply to private IP addresses and the <a href=\"%s\">Login "
|
1489 |
"Protection</a>."
|
1490 |
msgstr ""
|
1491 |
|
1492 |
-
#: lib/firewall_options.php:
|
1493 |
msgid "Blocked user message"
|
1494 |
msgstr ""
|
1495 |
|
1496 |
-
#: lib/firewall_options.php:
|
1497 |
-
msgid "
|
1498 |
msgstr ""
|
1499 |
|
1500 |
-
#: lib/firewall_options.php:
|
1501 |
msgid "Default message"
|
1502 |
msgstr ""
|
1503 |
|
1504 |
-
#: lib/firewall_options.php:
|
1505 |
msgid "Firewall configuration"
|
1506 |
msgstr ""
|
1507 |
|
1508 |
-
#: lib/firewall_options.php:
|
1509 |
msgid "Export configuration"
|
1510 |
msgstr ""
|
1511 |
|
1512 |
-
#: lib/firewall_options.php:
|
1513 |
msgid "Download"
|
1514 |
msgstr ""
|
1515 |
|
1516 |
-
#: lib/firewall_options.php:
|
1517 |
msgid "File Check configuration will not be exported/imported."
|
1518 |
msgstr ""
|
1519 |
|
1520 |
-
#: lib/firewall_options.php:
|
1521 |
msgid "Import configuration"
|
1522 |
msgstr ""
|
1523 |
|
1524 |
-
#: lib/firewall_options.php:
|
1525 |
#, php-format
|
1526 |
msgid "Imported configuration must match plugin version %s."
|
1527 |
msgstr ""
|
1528 |
|
1529 |
-
#: lib/firewall_options.php:
|
1530 |
msgid "It will override all your current firewall options and rules."
|
1531 |
msgstr ""
|
1532 |
|
1533 |
-
#: lib/firewall_options.php:
|
1534 |
msgid "Configuration backup"
|
1535 |
msgstr ""
|
1536 |
|
1537 |
-
#: lib/firewall_options.php:
|
1538 |
msgid "Save Firewall Options"
|
1539 |
msgstr ""
|
1540 |
|
1541 |
-
#: lib/firewall_options.php:
|
1542 |
msgid "Available backup files"
|
1543 |
msgstr ""
|
1544 |
|
1545 |
-
#: lib/firewall_options.php:
|
1546 |
#, php-format
|
1547 |
msgid ""
|
1548 |
"To restore NinjaFirewall's configuration to an earlier date, select it in "
|
1549 |
"the list and click '%s'."
|
1550 |
msgstr ""
|
1551 |
|
1552 |
-
#: lib/firewall_options.php:
|
1553 |
msgid "There are no backup available yet, check back later."
|
1554 |
msgstr ""
|
1555 |
|
1556 |
-
#: lib/firewall_options.php:
|
1557 |
#, php-format
|
1558 |
msgid "Uploaded file is either corrupted or its format is not supported (#%s)"
|
1559 |
msgstr ""
|
1560 |
|
1561 |
-
#: lib/firewall_options.php:
|
1562 |
msgid "The imported file is not compatible with that version of NinjaFirewall"
|
1563 |
msgstr ""
|
1564 |
|
1565 |
-
#: lib/firewall_options.php:
|
1566 |
msgid "[NinjaFirewall] Alert: Firewall is disabled"
|
1567 |
msgstr ""
|
1568 |
|
1569 |
-
#: lib/firewall_options.php:
|
1570 |
-
#: lib/utils.php:
|
1571 |
msgid "-Blog :"
|
1572 |
msgstr ""
|
1573 |
|
1574 |
-
#: lib/firewall_options.php:
|
1575 |
msgid "Someone disabled NinjaFirewall from your WordPress admin dashboard:"
|
1576 |
msgstr ""
|
1577 |
|
1578 |
-
#: lib/firewall_options.php:
|
1579 |
msgid ""
|
1580 |
"NinjaFirewall is disabled because someone enabled debugging mode from your "
|
1581 |
"WordPress admin dashboard:"
|
1582 |
msgstr ""
|
1583 |
|
1584 |
-
#: lib/firewall_options.php:
|
1585 |
msgid "[NinjaFirewall] Alert: Firewall override settings"
|
1586 |
msgstr ""
|
1587 |
|
1588 |
-
#: lib/firewall_options.php:
|
1589 |
msgid ""
|
1590 |
"Someone imported a new configuration which overrode the firewall settings:"
|
1591 |
msgstr ""
|
1592 |
|
1593 |
-
#: lib/firewall_options.php:
|
1594 |
msgid "-User :"
|
1595 |
msgstr ""
|
1596 |
|
1597 |
-
#: lib/firewall_options.php:
|
1598 |
msgid "-IP :"
|
1599 |
msgstr ""
|
1600 |
|
1601 |
-
#: lib/firewall_options.php:
|
1602 |
msgid "-Date :"
|
1603 |
msgstr ""
|
1604 |
|
1605 |
-
#: lib/firewall_policies.php:26 lib/firewall_policies.php:461
|
1606 |
-
#: lib/firewall_policies.php:476 lib/firewall_policies.php:486
|
1607 |
-
#: lib/firewall_policies.php:496 lib/firewall_policies.php:506
|
1608 |
-
#: lib/firewall_policies.php:576 lib/firewall_policies.php:619
|
1609 |
-
#: lib/firewall_policies.php:651 lib/firewall_policies.php:689
|
1610 |
-
#: lib/firewall_policies.php:777 lib/firewall_policies.php:797
|
1611 |
-
#: lib/firewall_policies.php:840 lib/firewall_policies.php:972
|
1612 |
-
#: lib/firewall_policies.php:986 lib/firewall_policies.php:1011
|
1613 |
-
#: lib/firewall_policies.php:1217
|
1614 |
-
msgid "Yes"
|
1615 |
-
msgstr ""
|
1616 |
-
|
1617 |
-
#: lib/firewall_policies.php:28 lib/firewall_policies.php:192
|
1618 |
-
#: lib/firewall_policies.php:390
|
1619 |
-
msgid "(default)"
|
1620 |
-
msgstr ""
|
1621 |
-
|
1622 |
#: lib/firewall_policies.php:29
|
1623 |
#, php-format
|
1624 |
msgid ""
|
1625 |
"This feature is only available when NinjaFirewall is running in %s mode."
|
1626 |
msgstr ""
|
1627 |
|
1628 |
-
#: lib/firewall_policies.php:
|
1629 |
-
msgid "
|
1630 |
-
msgstr ""
|
1631 |
-
|
1632 |
-
#: lib/firewall_policies.php:72
|
1633 |
-
msgid ""
|
1634 |
-
"WARNING: ensure that you can access your admin console over HTTPS before "
|
1635 |
-
"enabling this option, otherwise you will lock yourself out of your site. Go "
|
1636 |
-
"ahead?"
|
1637 |
-
msgstr ""
|
1638 |
-
|
1639 |
-
#: lib/firewall_policies.php:81
|
1640 |
-
msgid ""
|
1641 |
-
"Any character that is not a letter [a-zA-Z], a digit [0-9], a dot [.], a "
|
1642 |
-
"hyphen [-] or an underscore [_] will be removed from the filename and "
|
1643 |
-
"replaced with the substitution character. Continue?"
|
1644 |
msgstr ""
|
1645 |
|
1646 |
-
#: lib/firewall_policies.php:
|
1647 |
msgid "Default values were restored."
|
1648 |
msgstr ""
|
1649 |
|
1650 |
-
#: lib/firewall_policies.php:
|
1651 |
msgid "No action taken."
|
1652 |
msgstr ""
|
1653 |
|
1654 |
-
#: lib/firewall_policies.php:
|
1655 |
msgid "Basic Policies"
|
1656 |
msgstr ""
|
1657 |
|
1658 |
-
#: lib/firewall_policies.php:
|
1659 |
msgid "Intermediate Policies"
|
1660 |
msgstr ""
|
1661 |
|
1662 |
-
#: lib/firewall_policies.php:
|
1663 |
msgid "Advanced Policies"
|
1664 |
msgstr ""
|
1665 |
|
1666 |
-
#: lib/firewall_policies.php:
|
1667 |
msgid "Enable NinjaFirewall for"
|
1668 |
msgstr ""
|
1669 |
|
1670 |
-
#: lib/firewall_policies.php:
|
1671 |
msgid "HTTP and HTTPS traffic (default)"
|
1672 |
msgstr ""
|
1673 |
|
1674 |
-
#: lib/firewall_policies.php:
|
1675 |
msgid "HTTP traffic only"
|
1676 |
msgstr ""
|
1677 |
|
1678 |
-
#: lib/firewall_policies.php:
|
1679 |
msgid "HTTPS traffic only"
|
1680 |
msgstr ""
|
1681 |
|
1682 |
-
#: lib/firewall_policies.php:
|
1683 |
msgid "Uploads"
|
1684 |
msgstr ""
|
1685 |
|
1686 |
-
#: lib/firewall_policies.php:
|
1687 |
msgid "File Uploads"
|
1688 |
msgstr ""
|
1689 |
|
1690 |
-
#: lib/firewall_policies.php:
|
1691 |
msgid "Allow uploads"
|
1692 |
msgstr ""
|
1693 |
|
1694 |
-
#: lib/firewall_policies.php:
|
|
|
|
|
|
|
|
|
1695 |
msgid "Disallow uploads"
|
1696 |
msgstr ""
|
1697 |
|
1698 |
-
#: lib/firewall_policies.php:
|
1699 |
msgid "Sanitise filenames"
|
1700 |
msgstr ""
|
1701 |
|
1702 |
-
#: lib/firewall_policies.php:
|
1703 |
msgid "substitution character:"
|
1704 |
msgstr ""
|
1705 |
|
1706 |
-
#: lib/firewall_policies.php:
|
1707 |
msgid "Block direct access to any PHP file located in one of these directories"
|
1708 |
msgstr ""
|
1709 |
|
1710 |
-
#: lib/firewall_policies.php:
|
1711 |
msgid ""
|
1712 |
"NinjaFirewall will not block access to the TinyMCE WYSIWYG editor even if "
|
1713 |
"this option is enabled."
|
1714 |
msgstr ""
|
1715 |
|
1716 |
-
#: lib/firewall_policies.php:
|
1717 |
msgid ""
|
1718 |
"Unless you have PHP scripts in a \"/cache/\" folder that need to be accessed "
|
1719 |
"by your visitors, we recommend to enable this option."
|
1720 |
msgstr ""
|
1721 |
|
1722 |
-
#: lib/firewall_policies.php:
|
1723 |
-
#, php-format
|
1724 |
-
msgid ""
|
1725 |
-
"If you are using the %s plugin, blocking <code>system.multicall</code> may "
|
1726 |
-
"prevent it from working correctly."
|
1727 |
-
msgstr ""
|
1728 |
-
|
1729 |
-
#: lib/firewall_policies.php:387
|
1730 |
msgid "General"
|
1731 |
msgstr ""
|
1732 |
|
1733 |
-
#: lib/firewall_policies.php:
|
1734 |
msgid "Block attempts to modify important WordPress settings"
|
1735 |
msgstr ""
|
1736 |
|
1737 |
-
#: lib/firewall_policies.php:
|
1738 |
msgid "Block user accounts creation"
|
1739 |
msgstr ""
|
1740 |
|
1741 |
-
#: lib/firewall_policies.php:
|
1742 |
msgid "Do not enable this policy if you allow user registration."
|
1743 |
msgstr ""
|
1744 |
|
1745 |
-
#: lib/firewall_policies.php:
|
1746 |
msgid "WordPress AJAX"
|
1747 |
msgstr ""
|
1748 |
|
1749 |
-
#: lib/firewall_policies.php:
|
1750 |
msgid "Protect <code>admin-ajax.php</code> against suspicious bots"
|
1751 |
msgstr ""
|
1752 |
|
1753 |
-
#: lib/firewall_policies.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1754 |
msgid "Protect against username enumeration"
|
1755 |
msgstr ""
|
1756 |
|
1757 |
-
#: lib/firewall_policies.php:
|
1758 |
msgid "Through the author archives"
|
1759 |
msgstr ""
|
1760 |
|
1761 |
-
#: lib/firewall_policies.php:
|
1762 |
msgid "Through the login page"
|
1763 |
msgstr ""
|
1764 |
|
1765 |
-
#: lib/firewall_policies.php:
|
1766 |
msgid "Through the WordPress REST API"
|
1767 |
msgstr ""
|
1768 |
|
1769 |
-
#: lib/firewall_policies.php:
|
1770 |
-
msgid "This feature is only available when running WordPress 4.7 or above."
|
1771 |
-
msgstr ""
|
1772 |
-
|
1773 |
-
#: lib/firewall_policies.php:432
|
1774 |
msgid "WordPress REST API"
|
1775 |
msgstr ""
|
1776 |
|
1777 |
-
#: lib/firewall_policies.php:
|
1778 |
msgid "Block any access to the API"
|
1779 |
msgstr ""
|
1780 |
|
1781 |
-
#: lib/firewall_policies.php:
|
1782 |
msgid "WordPress XML-RPC API"
|
1783 |
msgstr ""
|
1784 |
|
1785 |
-
#: lib/firewall_policies.php:
|
1786 |
msgid "Block <code>system.multicall</code> method"
|
1787 |
msgstr ""
|
1788 |
|
1789 |
-
#: lib/firewall_policies.php:
|
1790 |
msgid "Block Pingbacks"
|
1791 |
msgstr ""
|
1792 |
|
1793 |
-
#: lib/firewall_policies.php:
|
1794 |
msgid ""
|
1795 |
"Disabling access to the REST or XML-RPC API may break some functionality on "
|
1796 |
-
"your blog, its themes or plugins."
|
|
|
1797 |
msgstr ""
|
1798 |
|
1799 |
-
#: lib/firewall_policies.php:
|
1800 |
msgid "Block <code>POST</code> requests in the themes folder"
|
1801 |
msgstr ""
|
1802 |
|
1803 |
-
#: lib/firewall_policies.php:
|
1804 |
msgid "Force SSL for admin and logins"
|
1805 |
msgstr ""
|
1806 |
|
1807 |
-
#: lib/firewall_policies.php:
|
1808 |
msgid "Disable the plugin and theme editor"
|
1809 |
msgstr ""
|
1810 |
|
1811 |
-
#: lib/firewall_policies.php:
|
1812 |
msgid "Disable plugin and theme update/installation"
|
1813 |
msgstr ""
|
1814 |
|
1815 |
-
#: lib/firewall_policies.php:
|
1816 |
msgid "Disable the fatal error handler"
|
1817 |
msgstr ""
|
1818 |
|
1819 |
-
#: lib/firewall_policies.php:
|
1820 |
msgid "Users Whitelist"
|
1821 |
msgstr ""
|
1822 |
|
1823 |
-
#: lib/firewall_policies.php:
|
1824 |
msgid "Add the Administrator to the whitelist (default)."
|
1825 |
msgstr ""
|
1826 |
|
1827 |
-
#: lib/firewall_policies.php:
|
1828 |
msgid "Add all logged in users to the whitelist."
|
1829 |
msgstr ""
|
1830 |
|
1831 |
-
#: lib/firewall_policies.php:
|
1832 |
msgid "Disable users whitelist."
|
1833 |
msgstr ""
|
1834 |
|
1835 |
-
#: lib/firewall_policies.php:
|
1836 |
msgid ""
|
1837 |
"Note: This feature does not apply to <code>FORCE_SSL_ADMIN</code>, "
|
1838 |
"<code>DISALLOW_FILE_EDIT</code>, <code>DISALLOW_FILE_MODS</code> and "
|
@@ -1840,329 +1337,507 @@ msgid ""
|
|
1840 |
"always enforced."
|
1841 |
msgstr ""
|
1842 |
|
1843 |
-
#: lib/firewall_policies.php:
|
1844 |
msgid "HTTP GET variable"
|
1845 |
msgstr ""
|
1846 |
|
1847 |
-
#: lib/firewall_policies.php:
|
1848 |
msgid "Scan <code>GET</code> variable"
|
1849 |
msgstr ""
|
1850 |
|
1851 |
-
#: lib/firewall_policies.php:
|
1852 |
msgid "Sanitise <code>GET</code> variable"
|
1853 |
msgstr ""
|
1854 |
|
1855 |
-
#: lib/firewall_policies.php:
|
1856 |
msgid "HTTP POST variable"
|
1857 |
msgstr ""
|
1858 |
|
1859 |
-
#: lib/firewall_policies.php:
|
1860 |
msgid "Scan <code>POST</code> variable"
|
1861 |
msgstr ""
|
1862 |
|
1863 |
-
#: lib/firewall_policies.php:
|
1864 |
msgid "Sanitise <code>POST</code> variable"
|
1865 |
msgstr ""
|
1866 |
|
1867 |
-
#: lib/firewall_policies.php:
|
1868 |
msgid "Do not enable this option unless you know what you are doing!"
|
1869 |
msgstr ""
|
1870 |
|
1871 |
-
#: lib/firewall_policies.php:
|
1872 |
msgid "Decode Base64-encoded <code>POST</code> variable"
|
1873 |
msgstr ""
|
1874 |
|
1875 |
-
#: lib/firewall_policies.php:
|
1876 |
msgid "HTTP REQUEST variable"
|
1877 |
msgstr ""
|
1878 |
|
1879 |
-
#: lib/firewall_policies.php:
|
1880 |
msgid "Sanitise <code>REQUEST</code> variable"
|
1881 |
msgstr ""
|
1882 |
|
1883 |
-
#: lib/firewall_policies.php:
|
1884 |
msgid "Cookies"
|
1885 |
msgstr ""
|
1886 |
|
1887 |
-
#: lib/firewall_policies.php:
|
1888 |
msgid "Scan cookies"
|
1889 |
msgstr ""
|
1890 |
|
1891 |
-
#: lib/firewall_policies.php:
|
1892 |
msgid "Sanitise cookies"
|
1893 |
msgstr ""
|
1894 |
|
1895 |
-
#: lib/firewall_policies.php:
|
1896 |
msgid "HTTP_USER_AGENT server variable"
|
1897 |
msgstr ""
|
1898 |
|
1899 |
-
#: lib/firewall_policies.php:
|
1900 |
msgid "Scan <code>HTTP_USER_AGENT</code>"
|
1901 |
msgstr ""
|
1902 |
|
1903 |
-
#: lib/firewall_policies.php:
|
1904 |
msgid "Sanitise <code>HTTP_USER_AGENT</code>"
|
1905 |
msgstr ""
|
1906 |
|
1907 |
-
#: lib/firewall_policies.php:
|
1908 |
msgid "Block suspicious bots/scanners"
|
1909 |
msgstr ""
|
1910 |
|
1911 |
-
#: lib/firewall_policies.php:
|
1912 |
msgid "HTTP_REFERER server variable"
|
1913 |
msgstr ""
|
1914 |
|
1915 |
-
#: lib/firewall_policies.php:
|
1916 |
msgid "Scan <code>HTTP_REFERER</code>"
|
1917 |
msgstr ""
|
1918 |
|
1919 |
-
#: lib/firewall_policies.php:
|
1920 |
msgid "Sanitise <code>HTTP_REFERER</code>"
|
1921 |
msgstr ""
|
1922 |
|
1923 |
-
#: lib/firewall_policies.php:
|
1924 |
msgid ""
|
1925 |
"Block <code>POST</code> requests that do not have an <code>HTTP_REFERER</"
|
1926 |
"code> header"
|
1927 |
msgstr ""
|
1928 |
|
1929 |
-
#: lib/firewall_policies.php:
|
1930 |
msgid ""
|
1931 |
"Keep this option disabled if you are using scripts like Paypal IPN, "
|
1932 |
"WordPress WP-Cron etc"
|
1933 |
msgstr ""
|
1934 |
|
1935 |
-
#: lib/firewall_policies.php:
|
1936 |
msgid "Block localhost IP in <code>GET/POST</code> request"
|
1937 |
msgstr ""
|
1938 |
|
1939 |
-
#: lib/firewall_policies.php:
|
1940 |
msgid "Block HTTP requests with an IP in the <code>HTTP_HOST</code> header"
|
1941 |
msgstr ""
|
1942 |
|
1943 |
-
#: lib/firewall_policies.php:
|
1944 |
msgid "Scan traffic coming from localhost and private IP address spaces"
|
1945 |
msgstr ""
|
1946 |
|
1947 |
-
#: lib/firewall_policies.php:
|
1948 |
#, php-format
|
1949 |
msgid ""
|
1950 |
-
"
|
1951 |
-
"server."
|
1952 |
msgstr ""
|
1953 |
|
1954 |
-
#: lib/firewall_policies.php:
|
1955 |
msgid "HTTP response headers"
|
1956 |
msgstr ""
|
1957 |
|
1958 |
-
#: lib/firewall_policies.php:
|
1959 |
#, php-format
|
1960 |
msgid "Set %s to protect against MIME type confusion attacks"
|
1961 |
msgstr ""
|
1962 |
|
1963 |
-
#: lib/firewall_policies.php:
|
1964 |
#, php-format
|
1965 |
msgid "Set %s to protect against clickjacking attempts"
|
1966 |
msgstr ""
|
1967 |
|
1968 |
-
#: lib/firewall_policies.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
1969 |
#, php-format
|
1970 |
msgid "Set %s (IE/Edge, Chrome, Opera and Safari browsers)"
|
1971 |
msgstr ""
|
1972 |
|
1973 |
-
#: lib/firewall_policies.php:
|
1974 |
-
#: lib/firewall_policies.php:
|
1975 |
#, php-format
|
1976 |
msgid "Set to %s"
|
1977 |
msgstr ""
|
1978 |
|
1979 |
-
#: lib/firewall_policies.php:
|
1980 |
#, php-format
|
1981 |
msgid "Force %s flag on all cookies to mitigate XSS attacks"
|
1982 |
msgstr ""
|
1983 |
|
1984 |
-
#: lib/firewall_policies.php:
|
1985 |
msgid ""
|
1986 |
"If your PHP scripts use cookies that need to be accessed from JavaScript, "
|
1987 |
-
"you should
|
1988 |
msgstr ""
|
1989 |
|
1990 |
-
#: lib/firewall_policies.php:
|
1991 |
msgid ""
|
1992 |
"HSTS headers can only be set when you are accessing your site over HTTPS."
|
1993 |
msgstr ""
|
1994 |
|
1995 |
-
#: lib/firewall_policies.php:
|
1996 |
#, php-format
|
1997 |
msgid "Set %s (HSTS) to enforce secure connections to the server"
|
1998 |
msgstr ""
|
1999 |
|
2000 |
-
#: lib/firewall_policies.php:
|
|
|
|
|
|
|
|
|
2001 |
msgid "1 month"
|
2002 |
msgstr ""
|
2003 |
|
2004 |
-
#: lib/firewall_policies.php:
|
2005 |
msgid "6 months"
|
2006 |
msgstr ""
|
2007 |
|
2008 |
-
#: lib/firewall_policies.php:
|
2009 |
msgid "1 year"
|
2010 |
msgstr ""
|
2011 |
|
2012 |
-
#: lib/firewall_policies.php:
|
2013 |
msgid "Apply to subdomains"
|
2014 |
msgstr ""
|
2015 |
|
2016 |
-
#: lib/firewall_policies.php:
|
2017 |
-
msgid "Set <code>max-age</code> to 0"
|
2018 |
-
msgstr ""
|
2019 |
-
|
2020 |
-
#: lib/firewall_policies.php:969
|
2021 |
#, php-format
|
2022 |
msgid "Set %s for the website frontend"
|
2023 |
msgstr ""
|
2024 |
|
2025 |
-
#: lib/firewall_policies.php:
|
2026 |
msgid "This CSP header will apply to the website frontend only."
|
2027 |
msgstr ""
|
2028 |
|
2029 |
-
#: lib/firewall_policies.php:
|
2030 |
#, php-format
|
2031 |
msgid "Set %s for the WordPress admin dashboard"
|
2032 |
msgstr ""
|
2033 |
|
2034 |
-
#: lib/firewall_policies.php:
|
2035 |
msgid "This CSP header will apply to the WordPress admin dashboard only."
|
2036 |
msgstr ""
|
2037 |
|
2038 |
-
#: lib/firewall_policies.php:
|
2039 |
#, php-format
|
2040 |
msgid "Set %s (Chrome, Opera and Firefox browsers)"
|
2041 |
msgstr ""
|
2042 |
|
2043 |
-
#: lib/firewall_policies.php:
|
2044 |
msgid ""
|
2045 |
"Block PHP built-in wrappers in <code>GET</code>, <code>POST</code>, "
|
2046 |
"<code>HTTP_USER_AGENT</code>, <code>HTTP_REFERER</code> and cookies"
|
2047 |
msgstr ""
|
2048 |
|
2049 |
-
#: lib/firewall_policies.php:
|
2050 |
msgid "Block serialized PHP objects in the following global variables"
|
2051 |
msgstr ""
|
2052 |
|
2053 |
-
#: lib/firewall_policies.php:
|
2054 |
msgid "Hide PHP notice and error messages"
|
2055 |
msgstr ""
|
2056 |
|
2057 |
-
#: lib/firewall_policies.php:
|
2058 |
msgid "Sanitise <code>PHP_SELF</code>"
|
2059 |
msgstr ""
|
2060 |
|
2061 |
-
#: lib/firewall_policies.php:
|
2062 |
msgid "Sanitise <code>PATH_TRANSLATED</code>"
|
2063 |
msgstr ""
|
2064 |
|
2065 |
-
#: lib/firewall_policies.php:
|
2066 |
msgid "Sanitise <code>PATH_INFO</code>"
|
2067 |
msgstr ""
|
2068 |
|
2069 |
-
#: lib/firewall_policies.php:
|
2070 |
msgid "This option is not compatible with your actual configuration."
|
2071 |
msgstr ""
|
2072 |
|
2073 |
-
#: lib/firewall_policies.php:
|
2074 |
msgid "Various"
|
2075 |
msgstr ""
|
2076 |
|
2077 |
-
#: lib/firewall_policies.php:
|
2078 |
msgid "Block the <code>DOCUMENT_ROOT</code> server variable in HTTP request"
|
2079 |
msgstr ""
|
2080 |
|
2081 |
-
#: lib/firewall_policies.php:
|
2082 |
msgid "Block ASCII character 0x00 (NULL byte)"
|
2083 |
msgstr ""
|
2084 |
|
2085 |
-
#: lib/firewall_policies.php:
|
2086 |
msgid "Block ASCII control characters 1 to 8 and 14 to 31"
|
2087 |
msgstr ""
|
2088 |
|
2089 |
-
#: lib/firewall_policies.php:
|
2090 |
msgid "Save Firewall Policies"
|
2091 |
msgstr ""
|
2092 |
|
2093 |
-
#: lib/firewall_policies.php:
|
2094 |
msgid "Restore Default Values"
|
2095 |
msgstr ""
|
2096 |
|
2097 |
-
#: lib/help.php:37 ninjafirewall.php:
|
2098 |
msgid "Overview"
|
2099 |
msgstr ""
|
2100 |
|
2101 |
-
#: lib/help.php:
|
2102 |
-
msgid ""
|
2103 |
-
"This is the Overview page; it shows information about the firewall status. "
|
2104 |
-
"We recommend you keep an eye on it because, in case of problems, all "
|
2105 |
-
"possible errors and warnings will be displayed here."
|
2106 |
msgstr ""
|
2107 |
|
2108 |
-
#: lib/help.php:
|
2109 |
-
msgid "
|
|
|
|
|
2110 |
msgstr ""
|
2111 |
|
2112 |
-
#: lib/help.php:
|
2113 |
-
msgid "
|
2114 |
msgstr ""
|
2115 |
|
2116 |
-
#: lib/help.php:
|
2117 |
-
msgid "
|
2118 |
msgstr ""
|
2119 |
|
2120 |
#: lib/help.php:47
|
2121 |
-
msgid "
|
2122 |
msgstr ""
|
2123 |
|
2124 |
#: lib/help.php:48
|
2125 |
-
msgid "
|
2126 |
msgstr ""
|
2127 |
|
2128 |
-
#: lib/help.php:
|
2129 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2130 |
msgstr ""
|
2131 |
|
2132 |
#: lib/help.php:63
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2133 |
msgid ""
|
2134 |
"Statistics are taken from the current log. It is rotated on the first day of "
|
2135 |
"each month."
|
2136 |
msgstr ""
|
2137 |
|
2138 |
-
#: lib/help.php:
|
2139 |
#, php-format
|
2140 |
msgid ""
|
2141 |
"You can view the log by clicking on the <a href=\"%s\">Firewall Log</a> menu."
|
2142 |
msgstr ""
|
2143 |
|
2144 |
-
#: lib/help.php:
|
2145 |
msgid "Benchmarks"
|
2146 |
msgstr ""
|
2147 |
|
2148 |
-
#: lib/help.php:
|
2149 |
msgid ""
|
2150 |
"Benchmarks show the time NinjaFirewall took, in seconds, to process each "
|
2151 |
"request it has blocked."
|
2152 |
msgstr ""
|
2153 |
|
2154 |
-
#: lib/help.php:
|
2155 |
#, php-format
|
2156 |
msgid ""
|
2157 |
"This option allows you to disable NinjaFirewall. It has basically the same "
|
2158 |
"effect as deactivating it from the <a href=\"%s\">Plugins</a> menu page."
|
2159 |
msgstr ""
|
2160 |
|
2161 |
-
#: lib/help.php:
|
2162 |
msgid "Your site will remain unprotected until you enable it again."
|
2163 |
msgstr ""
|
2164 |
|
2165 |
-
#: lib/help.php:
|
2166 |
#, php-format
|
2167 |
msgid ""
|
2168 |
"In Debugging mode, NinjaFirewall will not block or sanitise suspicious "
|
@@ -2170,7 +1845,7 @@ msgid ""
|
|
2170 |
"display <code>DEBUG_ON</code> in the LEVEL column."
|
2171 |
msgstr ""
|
2172 |
|
2173 |
-
#: lib/help.php:
|
2174 |
msgid ""
|
2175 |
"We recommend to run it in Debugging Mode for at least 24 hours after "
|
2176 |
"installing it on a new site and then to keep an eye on the firewall log "
|
@@ -2179,63 +1854,63 @@ msgid ""
|
|
2179 |
"wrongly triggered."
|
2180 |
msgstr ""
|
2181 |
|
2182 |
-
#: lib/help.php:
|
2183 |
msgid ""
|
2184 |
"This option will anonymize IP addresses in the firewall log by removing "
|
2185 |
"their last 3 characters."
|
2186 |
msgstr ""
|
2187 |
|
2188 |
-
#: lib/help.php:
|
2189 |
msgid ""
|
2190 |
"It does not apply to private IP addresses and the Login Protection feature."
|
2191 |
msgstr ""
|
2192 |
|
2193 |
-
#: lib/help.php:
|
2194 |
msgid ""
|
2195 |
"Note that it will affect only IP addresses written to the firewall log after "
|
2196 |
"enabling this option."
|
2197 |
msgstr ""
|
2198 |
|
2199 |
-
#: lib/help.php:
|
2200 |
msgid ""
|
2201 |
"Also, if you are redirecting events to the syslog server (NinjaFirewall "
|
2202 |
"<font color=\"#21759B\">WP+</font> Edition), IP addresses will be anonymized "
|
2203 |
"too."
|
2204 |
msgstr ""
|
2205 |
|
2206 |
-
#: lib/help.php:
|
2207 |
msgid "Error code and message to return"
|
2208 |
msgstr ""
|
2209 |
|
2210 |
-
#: lib/help.php:
|
2211 |
msgid ""
|
2212 |
"Lets you customize the HTTP error code returned by NinjaFirewall when "
|
2213 |
"blocking a dangerous request and the message to display to the user."
|
2214 |
msgstr ""
|
2215 |
|
2216 |
-
#: lib/help.php:
|
2217 |
msgid "You can use any HTML tags and 3 built-in variables:"
|
2218 |
msgstr ""
|
2219 |
|
2220 |
-
#: lib/help.php:
|
2221 |
msgid "the blocked user IP."
|
2222 |
msgstr ""
|
2223 |
|
2224 |
-
#: lib/help.php:
|
2225 |
msgid ""
|
2226 |
"the unique incident number as it will appear in the firewall log \"INCIDENT"
|
2227 |
"\" column."
|
2228 |
msgstr ""
|
2229 |
|
2230 |
-
#: lib/help.php:
|
2231 |
msgid "NinjaFirewall logo."
|
2232 |
msgstr ""
|
2233 |
|
2234 |
-
#: lib/help.php:
|
2235 |
msgid "Export/import configuration"
|
2236 |
msgstr ""
|
2237 |
|
2238 |
-
#: lib/help.php:
|
2239 |
#, php-format
|
2240 |
msgid ""
|
2241 |
"This options lets you export you current configuration or import it from "
|
@@ -2244,18 +1919,18 @@ msgid ""
|
|
2244 |
"rejected. Note that importing will override all firewall rules and options."
|
2245 |
msgstr ""
|
2246 |
|
2247 |
-
#: lib/help.php:
|
2248 |
msgid "\"File Check\" configuration will not be exported/imported."
|
2249 |
msgstr ""
|
2250 |
|
2251 |
-
#: lib/help.php:
|
2252 |
msgid ""
|
2253 |
"NinjaFirewall will automatically backup its configuration (options, policies "
|
2254 |
"and rules) everyday for the last 5 days. If you want to restore its "
|
2255 |
"configuration to an earlier date, select the corresponding file in the list."
|
2256 |
msgstr ""
|
2257 |
|
2258 |
-
#: lib/help.php:
|
2259 |
#, php-format
|
2260 |
msgid ""
|
2261 |
"Keep in mind, however, that the Firewall Policies apply to any PHP scripts "
|
@@ -2263,11 +1938,11 @@ msgid ""
|
|
2263 |
"your WordPress index page."
|
2264 |
msgstr ""
|
2265 |
|
2266 |
-
#: lib/help.php:
|
2267 |
msgid "Policies overview"
|
2268 |
msgstr ""
|
2269 |
|
2270 |
-
#: lib/help.php:
|
2271 |
#, php-format
|
2272 |
msgid ""
|
2273 |
"Because NinjaFirewall sits in front of WordPress, it can hook, scan and "
|
@@ -2278,24 +1953,24 @@ msgid ""
|
|
2278 |
"<code><a href=\"%s\">$_SERVER</a></code> in HTTP and/or HTTPS mode."
|
2279 |
msgstr ""
|
2280 |
|
2281 |
-
#: lib/help.php:
|
2282 |
msgid ""
|
2283 |
"Use the options below to enable, disable or to tweak these rules according "
|
2284 |
"to your needs."
|
2285 |
msgstr ""
|
2286 |
|
2287 |
-
#: lib/help.php:
|
2288 |
msgid "Scan and Sanitise"
|
2289 |
msgstr ""
|
2290 |
|
2291 |
-
#: lib/help.php:
|
2292 |
msgid ""
|
2293 |
"You can choose to scan and reject dangerous content but also to sanitise "
|
2294 |
"requests and variables. Those two actions are different and can be combined "
|
2295 |
"together for better security."
|
2296 |
msgstr ""
|
2297 |
|
2298 |
-
#: lib/help.php:
|
2299 |
msgid ""
|
2300 |
"Scan : if anything suspicious is detected, NinjaFirewall will block the "
|
2301 |
"request and return an HTTP error code and message (defined in the \"Firewall "
|
@@ -2303,7 +1978,7 @@ msgid ""
|
|
2303 |
"closed immediately."
|
2304 |
msgstr ""
|
2305 |
|
2306 |
-
#: lib/help.php:
|
2307 |
#, php-format
|
2308 |
msgid ""
|
2309 |
"Sanitise : this option will not block but sanitise the user request by "
|
@@ -2314,36 +1989,36 @@ msgid ""
|
|
2314 |
"sanitised."
|
2315 |
msgstr ""
|
2316 |
|
2317 |
-
#: lib/help.php:
|
2318 |
msgid ""
|
2319 |
"This action will be performed when the filtering process is over, right "
|
2320 |
"before NinjaFirewall forwards the request to your PHP script."
|
2321 |
msgstr ""
|
2322 |
|
2323 |
-
#: lib/help.php:
|
2324 |
msgid ""
|
2325 |
"If you enabled <code>POST</code> requests sanitising, articles and messages "
|
2326 |
"posted by your visitors could be corrupted with excessive backslashes or "
|
2327 |
"substitution characters."
|
2328 |
msgstr ""
|
2329 |
|
2330 |
-
#: lib/help.php:
|
2331 |
msgid "Whether to filter HTTP and/or HTTPS traffic"
|
2332 |
msgstr ""
|
2333 |
|
2334 |
-
#: lib/help.php:
|
2335 |
msgid "File Uploads:"
|
2336 |
msgstr ""
|
2337 |
|
2338 |
-
#: lib/help.php:
|
2339 |
msgid "whether to allow/disallow file uploads."
|
2340 |
msgstr ""
|
2341 |
|
2342 |
-
#: lib/help.php:
|
2343 |
msgid "Sanitise filenames:"
|
2344 |
msgstr ""
|
2345 |
|
2346 |
-
#: lib/help.php:
|
2347 |
msgid ""
|
2348 |
"any character that is not a letter <code>a-zA-Z</code>, a digit <code>0-9</"
|
2349 |
"code>, a dot <code>.</code>, a hyphen <code>-</code> or an underscore "
|
@@ -2351,13 +2026,13 @@ msgid ""
|
|
2351 |
"substitution character."
|
2352 |
msgstr ""
|
2353 |
|
2354 |
-
#: lib/help.php:
|
2355 |
msgid ""
|
2356 |
"Whether to block direct access to PHP files located in specific WordPress "
|
2357 |
"directories."
|
2358 |
msgstr ""
|
2359 |
|
2360 |
-
#: lib/help.php:
|
2361 |
msgid ""
|
2362 |
"enabling this policy will block any attempt (e.g., exploiting a "
|
2363 |
"vulnerability, using a backdoor etc) to modify some important WordPress "
|
@@ -2365,14 +2040,14 @@ msgid ""
|
|
2365 |
"regarding the issue. It is enabled by default."
|
2366 |
msgstr ""
|
2367 |
|
2368 |
-
#: lib/help.php:
|
2369 |
msgid ""
|
2370 |
"enabling this policy will block any attempt (e.g., exploiting a "
|
2371 |
"vulnerability, using a backdoor etc) to create a user account. If you allow "
|
2372 |
"user registration, you should not enable it."
|
2373 |
msgstr ""
|
2374 |
|
2375 |
-
#: lib/help.php:
|
2376 |
#, php-format
|
2377 |
msgid ""
|
2378 |
"many vulnerabilities in plugins are exploited via the admin-ajax.php script. "
|
@@ -2381,11 +2056,11 @@ msgid ""
|
|
2381 |
"addresses will not be blocked."
|
2382 |
msgstr ""
|
2383 |
|
2384 |
-
#: lib/help.php:
|
2385 |
msgid "Protect against username enumeration:"
|
2386 |
msgstr ""
|
2387 |
|
2388 |
-
#: lib/help.php:
|
2389 |
msgid ""
|
2390 |
"it is possible to enumerate usernames either through the WordPress author "
|
2391 |
"archives, the REST API or the login page. Although this is not a "
|
@@ -2397,22 +2072,22 @@ msgid ""
|
|
2397 |
"block the request immediately."
|
2398 |
msgstr ""
|
2399 |
|
2400 |
-
#: lib/help.php:
|
2401 |
msgid "WordPress REST API:"
|
2402 |
msgstr ""
|
2403 |
|
2404 |
-
#: lib/help.php:
|
2405 |
msgid ""
|
2406 |
"it allows you to access your WordPress site's data through an easy-to-use "
|
2407 |
"HTTP REST API. Since WordPress 4.7, it is enabled by default. NinjaFirewall "
|
2408 |
"allows you to block any access to that API if you do not intend to use it."
|
2409 |
msgstr ""
|
2410 |
|
2411 |
-
#: lib/help.php:
|
2412 |
msgid "WordPress XML-RPC API:"
|
2413 |
msgstr ""
|
2414 |
|
2415 |
-
#: lib/help.php:
|
2416 |
msgid ""
|
2417 |
"XML-RPC is a remote procedure call (RPC) protocol which uses XML to encode "
|
2418 |
"its calls and HTTP as a transport mechanism. WordPress has an XMLRPC API "
|
@@ -2423,24 +2098,24 @@ msgid ""
|
|
2423 |
"used in brute-force amplification attacks or to block Pingbacks."
|
2424 |
msgstr ""
|
2425 |
|
2426 |
-
#: lib/help.php:
|
2427 |
msgid ""
|
2428 |
"Block <code>POST</code> requests in the themes folder <code>/wp-content/"
|
2429 |
"themes</code>:"
|
2430 |
msgstr ""
|
2431 |
|
2432 |
-
#: lib/help.php:
|
2433 |
msgid ""
|
2434 |
"this option can be useful to block hackers from installing backdoor in the "
|
2435 |
"PHP theme files. However, because some custom themes may include an HTML "
|
2436 |
"form (contact, search form etc), this option is not enabled by default."
|
2437 |
msgstr ""
|
2438 |
|
2439 |
-
#: lib/help.php:
|
2440 |
msgid "Force SSL for admin and logins <code>FORCE_SSL_ADMIN</code>:"
|
2441 |
msgstr ""
|
2442 |
|
2443 |
-
#: lib/help.php:
|
2444 |
msgid ""
|
2445 |
"enable this option when you want to secure logins and the admin area so that "
|
2446 |
"both passwords and cookies are never sent in the clear. Ensure that you can "
|
@@ -2448,88 +2123,89 @@ msgid ""
|
|
2448 |
"you will lock yourself out of your site!"
|
2449 |
msgstr ""
|
2450 |
|
2451 |
-
#: lib/help.php:
|
2452 |
msgid "Disable the plugin and theme editor <code>DISALLOW_FILE_EDIT</code>:"
|
2453 |
msgstr ""
|
2454 |
|
2455 |
-
#: lib/help.php:
|
2456 |
msgid ""
|
2457 |
"disabling the plugin and theme editor provides an additional layer of "
|
2458 |
"security if a hacker gains access to a well-privileged user account."
|
2459 |
msgstr ""
|
2460 |
|
2461 |
-
#: lib/help.php:
|
2462 |
msgid ""
|
2463 |
"Disable plugin and theme update/installation <code>DISALLOW_FILE_MODS</code>:"
|
2464 |
msgstr ""
|
2465 |
|
2466 |
-
#: lib/help.php:
|
2467 |
msgid ""
|
2468 |
"this option will block users being able to use the plugin and theme "
|
2469 |
"installation/update functionality from the WordPress admin area. Setting "
|
2470 |
"this constant also disables the Plugin and Theme editor."
|
2471 |
msgstr ""
|
2472 |
|
2473 |
-
#: lib/help.php:
|
2474 |
-
msgid "
|
|
|
2475 |
msgstr ""
|
2476 |
|
2477 |
-
#: lib/help.php:
|
2478 |
msgid ""
|
2479 |
"this option will disable the WSOD protection introduced in WordPress 5.1."
|
2480 |
msgstr ""
|
2481 |
|
2482 |
-
#: lib/help.php:
|
2483 |
msgid "Whether to scan and/or sanitise the <code>GET</code> variable."
|
2484 |
msgstr ""
|
2485 |
|
2486 |
-
#: lib/help.php:
|
2487 |
msgid "Whether to scan and/or sanitise the <code>POST</code> variable."
|
2488 |
msgstr ""
|
2489 |
|
2490 |
-
#: lib/help.php:
|
2491 |
msgid "Decode Base64-encoded <code>POST</code> variable:"
|
2492 |
msgstr ""
|
2493 |
|
2494 |
-
#: lib/help.php:
|
2495 |
msgid ""
|
2496 |
"NinjaFirewall will decode and scan base64 encoded values in order to detect "
|
2497 |
"obfuscated malicious code. This option is only available for the <code>POST</"
|
2498 |
"code> variable."
|
2499 |
msgstr ""
|
2500 |
|
2501 |
-
#: lib/help.php:
|
2502 |
msgid "Whether to sanitise the <code>REQUEST</code> variable."
|
2503 |
msgstr ""
|
2504 |
|
2505 |
-
#: lib/help.php:
|
2506 |
msgid "Whether to scan and/or sanitise cookies."
|
2507 |
msgstr ""
|
2508 |
|
2509 |
-
#: lib/help.php:
|
2510 |
msgid "Whether to scan and/or sanitise <code>HTTP_USER_AGENT</code> requests."
|
2511 |
msgstr ""
|
2512 |
|
2513 |
-
#: lib/help.php:
|
2514 |
msgid "Block suspicious bots/scanners:"
|
2515 |
msgstr ""
|
2516 |
|
2517 |
-
#: lib/help.php:
|
2518 |
msgid ""
|
2519 |
"rejects some known bots, scanners and various malicious scripts attempting "
|
2520 |
"to access your blog."
|
2521 |
msgstr ""
|
2522 |
|
2523 |
-
#: lib/help.php:
|
2524 |
msgid "Whether to scan and/or sanitise <code>HTTP_REFERER</code> requests."
|
2525 |
msgstr ""
|
2526 |
|
2527 |
-
#: lib/help.php:
|
2528 |
msgid ""
|
2529 |
"Block POST requests that do not have an <code>HTTP_REFERER</code> header:"
|
2530 |
msgstr ""
|
2531 |
|
2532 |
-
#: lib/help.php:
|
2533 |
msgid ""
|
2534 |
"this option will block any <code>POST</code> request that does not have a "
|
2535 |
"Referrer header (<code>HTTP_REFERER</code> variable). If you need external "
|
@@ -2540,22 +2216,22 @@ msgid ""
|
|
2540 |
"default."
|
2541 |
msgstr ""
|
2542 |
|
2543 |
-
#: lib/help.php:
|
2544 |
msgid "Block localhost IP in <code>GET/POST</code> requests:"
|
2545 |
msgstr ""
|
2546 |
|
2547 |
-
#: lib/help.php:
|
2548 |
msgid ""
|
2549 |
"this option will block any <code>GET</code> or <code>POST</code> request "
|
2550 |
"containing the localhost IP (127.0.0.1). It can be useful to block SQL "
|
2551 |
"dumpers and various hacker's shell scripts."
|
2552 |
msgstr ""
|
2553 |
|
2554 |
-
#: lib/help.php:
|
2555 |
msgid "Block HTTP requests with an IP in the <code>HTTP_HOST</code> header:"
|
2556 |
msgstr ""
|
2557 |
|
2558 |
-
#: lib/help.php:
|
2559 |
#, php-format
|
2560 |
msgid ""
|
2561 |
"this option will reject any request using an IP instead of a domain name in "
|
@@ -2565,11 +2241,11 @@ msgid ""
|
|
2565 |
"than domain names."
|
2566 |
msgstr ""
|
2567 |
|
2568 |
-
#: lib/help.php:
|
2569 |
msgid "Scan traffic coming from localhost and private IP address spaces:"
|
2570 |
msgstr ""
|
2571 |
|
2572 |
-
#: lib/help.php:
|
2573 |
msgid ""
|
2574 |
"this option will allow the firewall to scan traffic from all non-routable "
|
2575 |
"private IPs (IPv4 and IPv6) as well as the localhost IP. We recommend to "
|
@@ -2577,20 +2253,20 @@ msgid ""
|
|
2577 |
"interconnected)."
|
2578 |
msgstr ""
|
2579 |
|
2580 |
-
#: lib/help.php:
|
2581 |
msgid ""
|
2582 |
"In addition to filtering incoming requests, NinjaFirewall can also hook the "
|
2583 |
"HTTP response in order to alter its headers. Those modifications can help to "
|
2584 |
"mitigate threats such as XSS, phishing and clickjacking attacks."
|
2585 |
msgstr ""
|
2586 |
|
2587 |
-
#: lib/help.php:
|
2588 |
msgid ""
|
2589 |
"Set <code>X-Content-Type-Options</code> to protect against MIME type "
|
2590 |
"confusion attacks:"
|
2591 |
msgstr ""
|
2592 |
|
2593 |
-
#: lib/help.php:
|
2594 |
msgid ""
|
2595 |
"this header will send the nosniff value to instruct the browser to disable "
|
2596 |
"content or MIME sniffing and to use the content-type returned by the server. "
|
@@ -2599,12 +2275,12 @@ msgid ""
|
|
2599 |
"such as MIME Confusion Attacks."
|
2600 |
msgstr ""
|
2601 |
|
2602 |
-
#: lib/help.php:
|
2603 |
msgid ""
|
2604 |
"Set <code>X-Frame-Options</code> to protect against clickjacking attempts:"
|
2605 |
msgstr ""
|
2606 |
|
2607 |
-
#: lib/help.php:
|
2608 |
msgid ""
|
2609 |
"this header indicates a policy whether a browser must not allow to render a "
|
2610 |
"page in a <frame> or <iframe>. Hosts can declare this policy in "
|
@@ -2613,53 +2289,53 @@ msgid ""
|
|
2613 |
"NinjaFirewall accepts two different values:"
|
2614 |
msgstr ""
|
2615 |
|
2616 |
-
#: lib/help.php:
|
2617 |
msgid ""
|
2618 |
"a browser receiving content with this header must not display this content "
|
2619 |
"in any frame from a page of different origin than the content itself."
|
2620 |
msgstr ""
|
2621 |
|
2622 |
-
#: lib/help.php:
|
2623 |
msgid ""
|
2624 |
"a browser receiving content with this header must not display this content "
|
2625 |
"in any frame."
|
2626 |
msgstr ""
|
2627 |
|
2628 |
-
#: lib/help.php:
|
2629 |
msgid "NinjaFirewall does not support the <code>ALLOW-FROM</code> value."
|
2630 |
msgstr ""
|
2631 |
|
2632 |
-
#: lib/help.php:
|
2633 |
msgid ""
|
2634 |
"Since v3.1.3, WordPress sets this value to <code>SAMEORIGIN</code> for the "
|
2635 |
"administrator and the login page only."
|
2636 |
msgstr ""
|
2637 |
|
2638 |
-
#: lib/help.php:
|
2639 |
msgid ""
|
2640 |
"Set <code>X-XSS-Protection</code> (IE/Edge, Chrome, Opera and Safari "
|
2641 |
"browsers):"
|
2642 |
msgstr ""
|
2643 |
|
2644 |
-
#: lib/help.php:
|
2645 |
msgid ""
|
2646 |
"this header allows browsers to identify and block XSS attacks by preventing "
|
2647 |
"malicious scripts from executing. It is enabled by default on all compatible "
|
2648 |
"browsers."
|
2649 |
msgstr ""
|
2650 |
|
2651 |
-
#: lib/help.php:
|
2652 |
msgid ""
|
2653 |
"If a visitor disabled their browser's XSS filter, you cannot re-enable it "
|
2654 |
"with that option."
|
2655 |
msgstr ""
|
2656 |
|
2657 |
-
#: lib/help.php:
|
2658 |
msgid ""
|
2659 |
"Force <code>HttpOnly</code> flag on all cookies to mitigate XSS attacks:"
|
2660 |
msgstr ""
|
2661 |
|
2662 |
-
#: lib/help.php:
|
2663 |
msgid ""
|
2664 |
"adding this flag to cookies helps to mitigate the risk of cross-site "
|
2665 |
"scripting by preventing them from being accessed through client-side "
|
@@ -2670,19 +2346,19 @@ msgid ""
|
|
2670 |
"sets that flag on the logged in user cookies only."
|
2671 |
msgstr ""
|
2672 |
|
2673 |
-
#: lib/help.php:
|
2674 |
msgid ""
|
2675 |
"If your PHP scripts send cookies that need to be accessed from JavaScript, "
|
2676 |
"you should keep that option disabled."
|
2677 |
msgstr ""
|
2678 |
|
2679 |
-
#: lib/help.php:
|
2680 |
msgid ""
|
2681 |
"Set <code>Strict-Transport-Security</code> (HSTS) to enforce secure "
|
2682 |
"connections to the server:"
|
2683 |
msgstr ""
|
2684 |
|
2685 |
-
#: lib/help.php:
|
2686 |
msgid ""
|
2687 |
"this policy enforces secure HTTPS connections to the server. Web browsers "
|
2688 |
"will not allow the user to access the web application over insecure HTTP "
|
@@ -2690,38 +2366,38 @@ msgid ""
|
|
2690 |
"attacks. Most recent browsers support HSTS headers."
|
2691 |
msgstr ""
|
2692 |
|
2693 |
-
#: lib/help.php:
|
2694 |
msgid "Set <code>Content-Security-Policy</code>:"
|
2695 |
msgstr ""
|
2696 |
|
2697 |
-
#: lib/help.php:
|
2698 |
msgid ""
|
2699 |
"this policy helps to mitigate threats such as XSS, phishing and clickjacking "
|
2700 |
"attacks. It covers JavaScript, CSS, HTML frames, web workers, fonts, images, "
|
2701 |
"objects (Java, ActiveX, audio and video files), and other HTML5 features."
|
2702 |
msgstr ""
|
2703 |
|
2704 |
-
#: lib/help.php:
|
2705 |
msgid ""
|
2706 |
"NinjaFirewall lets you configure the CSP policy separately for the frontend "
|
2707 |
"(blog, website) and the backend (WordPress admin dashboard)."
|
2708 |
msgstr ""
|
2709 |
|
2710 |
-
#: lib/help.php:
|
2711 |
msgid "Set <code>Referrer-Policy</code>:"
|
2712 |
msgstr ""
|
2713 |
|
2714 |
-
#: lib/help.php:
|
2715 |
msgid ""
|
2716 |
"this HTTP header governs which referrer information, sent in the Referer "
|
2717 |
"header, should be included with requests made."
|
2718 |
msgstr ""
|
2719 |
|
2720 |
-
#: lib/help.php:
|
2721 |
msgid "Block PHP built-in wrappers:"
|
2722 |
msgstr ""
|
2723 |
|
2724 |
-
#: lib/help.php:
|
2725 |
msgid ""
|
2726 |
"PHP has several wrappers for use with the filesystem functions. It is "
|
2727 |
"possible for an attacker to use them to bypass firewalls and various IDS to "
|
@@ -2732,11 +2408,11 @@ msgid ""
|
|
2732 |
"request, cookies, user agent and referrer variables."
|
2733 |
msgstr ""
|
2734 |
|
2735 |
-
#: lib/help.php:
|
2736 |
msgid "Block serialized PHP objects:"
|
2737 |
msgstr ""
|
2738 |
|
2739 |
-
#: lib/help.php:
|
2740 |
#, php-format
|
2741 |
msgid ""
|
2742 |
"Object Serialization is a PHP feature used by many applications to generate "
|
@@ -2747,35 +2423,35 @@ msgid ""
|
|
2747 |
"code> request, cookies, user agent and referrer variables."
|
2748 |
msgstr ""
|
2749 |
|
2750 |
-
#: lib/help.php:
|
2751 |
msgid "Hide PHP notice and error messages:"
|
2752 |
msgstr ""
|
2753 |
|
2754 |
-
#: lib/help.php:
|
2755 |
msgid ""
|
2756 |
"this option lets you hide errors returned by your scripts. Such errors can "
|
2757 |
"leak sensitive informations which can be exploited by hackers."
|
2758 |
msgstr ""
|
2759 |
|
2760 |
-
#: lib/help.php:
|
2761 |
msgid ""
|
2762 |
"Sanitise <code>PHP_SELF</code>, <code>PATH_TRANSLATED</code>, "
|
2763 |
"<code>PATH_INFO</code>:"
|
2764 |
msgstr ""
|
2765 |
|
2766 |
-
#: lib/help.php:
|
2767 |
msgid ""
|
2768 |
"this option can sanitise any dangerous characters found in those 3 server "
|
2769 |
"variables to prevent various XSS and database injection attempts."
|
2770 |
msgstr ""
|
2771 |
|
2772 |
-
#: lib/help.php:
|
2773 |
#, php-format
|
2774 |
msgid ""
|
2775 |
"Block the <code>DOCUMENT_ROOT</code> server variable (%s) in HTTP requests:"
|
2776 |
msgstr ""
|
2777 |
|
2778 |
-
#: lib/help.php:
|
2779 |
msgid ""
|
2780 |
"this option will block scripts attempting to pass the <code>DOCUMENT_ROOT</"
|
2781 |
"code> server variable in a <code>GET</code> or <code>POST</code> request. "
|
@@ -2783,11 +2459,11 @@ msgid ""
|
|
2783 |
"legitimate programs do not."
|
2784 |
msgstr ""
|
2785 |
|
2786 |
-
#: lib/help.php:
|
2787 |
msgid "Block ASCII character 0x00 (NULL byte):"
|
2788 |
msgstr ""
|
2789 |
|
2790 |
-
#: lib/help.php:
|
2791 |
msgid ""
|
2792 |
"this option will reject any <code>GET</code> or <code>POST</code> request, "
|
2793 |
"<code>HTTP_USER_AGENT</code>, <code>REQUEST_URI</code>, <code>PHP_SELF</"
|
@@ -2796,18 +2472,18 @@ msgid ""
|
|
2796 |
"dangerous and should always be rejected."
|
2797 |
msgstr ""
|
2798 |
|
2799 |
-
#: lib/help.php:
|
2800 |
msgid "Block ASCII control characters 1 to 8 and 14 to 31:"
|
2801 |
msgstr ""
|
2802 |
|
2803 |
-
#: lib/help.php:
|
2804 |
msgid ""
|
2805 |
"this option will reject any <code>GET</code> or <code>POST</code> request, "
|
2806 |
"<code>HTTP_USER_AGENT</code>, <code>HTTP_REFERER</code> variables containing "
|
2807 |
"ASCII characters from 1 to 8 and 14 to 31."
|
2808 |
msgstr ""
|
2809 |
|
2810 |
-
#: lib/help.php:
|
2811 |
#, php-format
|
2812 |
msgid ""
|
2813 |
"By default, any logged in WordPress administrator will not be blocked by "
|
@@ -2819,13 +2495,13 @@ msgid ""
|
|
2819 |
"enforced."
|
2820 |
msgstr ""
|
2821 |
|
2822 |
-
#: lib/help.php:
|
2823 |
msgid ""
|
2824 |
"File Guard can detect, in real-time, any access to a PHP file that was "
|
2825 |
"recently modified or created, and alert you about this."
|
2826 |
msgstr ""
|
2827 |
|
2828 |
-
#: lib/help.php:
|
2829 |
msgid ""
|
2830 |
"If a hacker uploaded a shell script to your site (or injected a backdoor "
|
2831 |
"into an already existing file) and tried to directly access that file using "
|
@@ -2836,7 +2512,7 @@ msgid ""
|
|
2836 |
"Notifications\" menu."
|
2837 |
msgstr ""
|
2838 |
|
2839 |
-
#: lib/help.php:
|
2840 |
msgid ""
|
2841 |
"If you do not want to monitor a folder, you can exclude its full path or a "
|
2842 |
"part of it (e.g., <code>/var/www/public_html/cache/</code> or <code>/cache/</"
|
@@ -2845,13 +2521,13 @@ msgid ""
|
|
2845 |
"will ignore it."
|
2846 |
msgstr ""
|
2847 |
|
2848 |
-
#: lib/help.php:
|
2849 |
msgid ""
|
2850 |
"Multiple values must be comma-separated (e.g., <code>/foo/bar/,/cache/</"
|
2851 |
"code>)."
|
2852 |
msgstr ""
|
2853 |
|
2854 |
-
#: lib/help.php:
|
2855 |
msgid ""
|
2856 |
"File Guard real-time detection is a totally unique feature, because "
|
2857 |
"NinjaFirewall is the only plugin for WordPress that can hook HTTP requests "
|
@@ -2859,11 +2535,11 @@ msgid ""
|
|
2859 |
"package (third-party software, shell script, backdoor etc)."
|
2860 |
msgstr ""
|
2861 |
|
2862 |
-
#: lib/help.php:
|
2863 |
msgid "Network"
|
2864 |
msgstr ""
|
2865 |
|
2866 |
-
#: lib/help.php:
|
2867 |
msgid ""
|
2868 |
"Even if NinjaFirewall administration menu is only available to the Super "
|
2869 |
"Admin (from the main site), you can still display its status to all sites in "
|
@@ -2871,26 +2547,26 @@ msgid ""
|
|
2871 |
"be visible only to the administrators of those sites."
|
2872 |
msgstr ""
|
2873 |
|
2874 |
-
#: lib/help.php:
|
2875 |
msgid ""
|
2876 |
"It is recommended to enable this feature as it is the only way to know "
|
2877 |
"whether the sites in your network are protected and if NinjaFirewall "
|
2878 |
"installation was successful."
|
2879 |
msgstr ""
|
2880 |
|
2881 |
-
#: lib/help.php:
|
2882 |
msgid ""
|
2883 |
"Note that when it is disabled, the icon still remains visible to you, the "
|
2884 |
"Super Admin."
|
2885 |
msgstr ""
|
2886 |
|
2887 |
-
#: lib/help.php:
|
2888 |
msgid ""
|
2889 |
"File Check lets you perform file integrity monitoring upon request or on a "
|
2890 |
"specific interval."
|
2891 |
msgstr ""
|
2892 |
|
2893 |
-
#: lib/help.php:
|
2894 |
msgid ""
|
2895 |
"You need to create a snapshot of all your files and then, at a later time, "
|
2896 |
"you can scan your system to compare it with the previous snapshot. Any "
|
@@ -2898,62 +2574,62 @@ msgid ""
|
|
2898 |
"file ownership, timestamp as well as file creation and deletion."
|
2899 |
msgstr ""
|
2900 |
|
2901 |
-
#: lib/help.php:
|
2902 |
#, php-format
|
2903 |
msgid ""
|
2904 |
"Create a snapshot of all files stored in that directory: by default, the "
|
2905 |
"directory is set to WordPress <code>ABSPATH</code> (%s)"
|
2906 |
msgstr ""
|
2907 |
|
2908 |
-
#: lib/help.php:
|
2909 |
msgid ""
|
2910 |
"Exclude the following files/folders: you can enter a directory or a file "
|
2911 |
"name (e.g., <code>/foo/bar/</code>), or a part of it (e.g., <code>foo</"
|
2912 |
"code>). Or you can exclude a file extension (e.g., <code>.css</code>)."
|
2913 |
msgstr ""
|
2914 |
|
2915 |
-
#: lib/help.php:
|
2916 |
msgid ""
|
2917 |
"Multiple values must be comma-separated (e.g., <code>/foo/bar/,.css,.png</"
|
2918 |
"code>)."
|
2919 |
msgstr ""
|
2920 |
|
2921 |
-
#: lib/help.php:
|
2922 |
msgid ""
|
2923 |
"Do not follow symbolic links: by default, NinjaFirewall will not follow "
|
2924 |
"symbolic links."
|
2925 |
msgstr ""
|
2926 |
|
2927 |
-
#: lib/help.php:
|
2928 |
msgid "Scheduled scans"
|
2929 |
msgstr ""
|
2930 |
|
2931 |
-
#: lib/help.php:
|
2932 |
msgid ""
|
2933 |
"NinjaFirewall can scan your system on a specific interval (hourly, "
|
2934 |
"twicedaily or daily)."
|
2935 |
msgstr ""
|
2936 |
|
2937 |
-
#: lib/help.php:
|
2938 |
msgid ""
|
2939 |
"It can either send you a scan report only if changes are detected, or always "
|
2940 |
"send you one after each scan."
|
2941 |
msgstr ""
|
2942 |
|
2943 |
-
#: lib/help.php:
|
2944 |
msgid ""
|
2945 |
"Reports will be sent to the contact email address defined in the \"Event "
|
2946 |
"Notifications\" menu."
|
2947 |
msgstr ""
|
2948 |
|
2949 |
-
#: lib/help.php:
|
2950 |
#, php-format
|
2951 |
msgid ""
|
2952 |
"Scheduled scans rely on <a href=\"%s\">WordPress pseudo cron</a> which works "
|
2953 |
"only if your site gets sufficient traffic."
|
2954 |
msgstr ""
|
2955 |
|
2956 |
-
#: lib/help.php:
|
2957 |
msgid ""
|
2958 |
"NinjaFirewall can alert you by email on specific events triggered within "
|
2959 |
"your blog. They include installations, updates, activations etc, as well as "
|
@@ -2964,11 +2640,11 @@ msgid ""
|
|
2964 |
"theme in order to take full control of your website."
|
2965 |
msgstr ""
|
2966 |
|
2967 |
-
#: lib/help.php:
|
2968 |
msgid "Login Protection"
|
2969 |
msgstr ""
|
2970 |
|
2971 |
-
#: lib/help.php:
|
2972 |
msgid ""
|
2973 |
"By processing incoming HTTP requests before your blog and any of its "
|
2974 |
"plugins, NinjaFirewall is the only plugin for WordPress able to protect it "
|
@@ -2976,18 +2652,18 @@ msgid ""
|
|
2976 |
"from several thousands of different IPs."
|
2977 |
msgstr ""
|
2978 |
|
2979 |
-
#: lib/help.php:
|
2980 |
msgid ""
|
2981 |
"You can choose two different types of protection: a password or a captcha. "
|
2982 |
"You can enable the protection only if an attack is detected or to keep it "
|
2983 |
"always activated."
|
2984 |
msgstr ""
|
2985 |
|
2986 |
-
#: lib/help.php:
|
2987 |
msgid "Yes, if under attack:"
|
2988 |
msgstr ""
|
2989 |
|
2990 |
-
#: lib/help.php:
|
2991 |
msgid ""
|
2992 |
"The protection will be triggered when too many login attempts are detected, "
|
2993 |
"regardless of the offending IP. It blocks the attack instantly and prevents "
|
@@ -2996,92 +2672,92 @@ msgid ""
|
|
2996 |
"combination or the captcha code. "
|
2997 |
msgstr ""
|
2998 |
|
2999 |
-
#: lib/help.php:
|
3000 |
msgid "Always ON:"
|
3001 |
msgstr ""
|
3002 |
|
3003 |
-
#: lib/help.php:
|
3004 |
msgid ""
|
3005 |
"NinjaFirewall will always enforce the HTTP authentication or captcha "
|
3006 |
"implementation each time you access the login page."
|
3007 |
msgstr ""
|
3008 |
|
3009 |
-
#: lib/help.php:
|
3010 |
msgid "Type of protection:"
|
3011 |
msgstr ""
|
3012 |
|
3013 |
-
#: lib/help.php:
|
3014 |
msgid ""
|
3015 |
"<b>Password:</b> It password-protects the login page. NinjaFirewall uses its "
|
3016 |
"own very fast authentication scheme and it is compatible with any HTTP "
|
3017 |
"server (Apache, Nginx, Lighttpd etc)."
|
3018 |
msgstr ""
|
3019 |
|
3020 |
-
#: lib/help.php:
|
3021 |
msgid "<b>Captcha:</b> It will display a 5-character captcha code."
|
3022 |
msgstr ""
|
3023 |
|
3024 |
-
#: lib/help.php:
|
3025 |
msgid "Bot protection:"
|
3026 |
msgstr ""
|
3027 |
|
3028 |
-
#: lib/help.php:
|
3029 |
msgid ""
|
3030 |
"NinjaFirewall will attempt to block bots and scripts immediately, i.e., even "
|
3031 |
"before they start a brute-force attack."
|
3032 |
msgstr ""
|
3033 |
|
3034 |
-
#: lib/help.php:
|
3035 |
msgid "AUTH log"
|
3036 |
msgstr ""
|
3037 |
|
3038 |
-
#: lib/help.php:
|
3039 |
msgid ""
|
3040 |
"NinjaFirewall can write to the server Authentication log when the brute-"
|
3041 |
"force protection is triggered. This can be useful to the system "
|
3042 |
"administrator for monitoring purposes or banning IPs at the server level."
|
3043 |
msgstr ""
|
3044 |
|
3045 |
-
#: lib/help.php:
|
3046 |
msgid ""
|
3047 |
"If you have a shared hosting account, keep this option disabled as you do "
|
3048 |
"not have any access to the server's logs."
|
3049 |
msgstr ""
|
3050 |
|
3051 |
-
#: lib/help.php:
|
3052 |
msgid ""
|
3053 |
"On Debian-based systems, the log is located in <code>/var/log/auth.log</"
|
3054 |
"code>, and on Red Hat-based systems in <code>/var/log/secure</code>. The "
|
3055 |
"logline uses the following format:"
|
3056 |
msgstr ""
|
3057 |
|
3058 |
-
#: lib/help.php:
|
3059 |
msgid "AA: the process ID (PID)."
|
3060 |
msgstr ""
|
3061 |
|
3062 |
-
#: lib/help.php:
|
3063 |
msgid "BB: the user IPv4 or IPv6 address."
|
3064 |
msgstr ""
|
3065 |
|
3066 |
-
#: lib/help.php:
|
3067 |
msgid "CC: the blog (sub-)domain name."
|
3068 |
msgstr ""
|
3069 |
|
3070 |
-
#: lib/help.php:
|
3071 |
msgid ""
|
3072 |
"DD: the target: it can be either <code>wp-login.php</code> or <code>XML-RPC "
|
3073 |
"API</code>."
|
3074 |
msgstr ""
|
3075 |
|
3076 |
-
#: lib/help.php:
|
3077 |
msgid "EE: the time, in minutes, the protection will remain active."
|
3078 |
msgstr ""
|
3079 |
|
3080 |
-
#: lib/help.php:
|
3081 |
msgid "Sample loglines:"
|
3082 |
msgstr ""
|
3083 |
|
3084 |
-
#: lib/help.php:
|
3085 |
#, php-format
|
3086 |
msgid ""
|
3087 |
"Be careful if you are behind a load balancer, reverse-proxy or CDN because "
|
@@ -3092,46 +2768,46 @@ msgid ""
|
|
3092 |
"otherwise you will likely block legitimate users."
|
3093 |
msgstr ""
|
3094 |
|
3095 |
-
#: lib/help.php:
|
3096 |
msgid ""
|
3097 |
"The firewall log displays blocked and sanitised requests as well as some "
|
3098 |
"useful information. It has 6 columns:"
|
3099 |
msgstr ""
|
3100 |
|
3101 |
-
#: lib/help.php:
|
3102 |
msgid "DATE : date and time of the incident."
|
3103 |
msgstr ""
|
3104 |
|
3105 |
-
#: lib/help.php:
|
3106 |
msgid ""
|
3107 |
"INCIDENT : unique incident number/ID as it was displayed to the blocked user."
|
3108 |
msgstr ""
|
3109 |
|
3110 |
-
#: lib/help.php:
|
3111 |
msgid ""
|
3112 |
"LEVEL : level of severity (<code>CRITICAL</code>, <code>HIGH</code> or "
|
3113 |
"<code>MEDIUM</code>), information (<code>INFO</code>, <code>UPLOAD</code>) "
|
3114 |
"and debugging mode (<code>DEBUG_ON</code>)."
|
3115 |
msgstr ""
|
3116 |
|
3117 |
-
#: lib/help.php:
|
3118 |
msgid ""
|
3119 |
"RULE : reference of the NinjaFirewall built-in security rule that triggered "
|
3120 |
"the action. A hyphen (<code>-</code>) instead of a number means it was a "
|
3121 |
"rule from the \"Firewall Policies\" page."
|
3122 |
msgstr ""
|
3123 |
|
3124 |
-
#: lib/help.php:
|
3125 |
msgid "IP : the user IPv4 or IPv6 address."
|
3126 |
msgstr ""
|
3127 |
|
3128 |
-
#: lib/help.php:
|
3129 |
msgid ""
|
3130 |
"REQUEST : the HTTP request including offending variables and values as well "
|
3131 |
"as the reason the action was logged."
|
3132 |
msgstr ""
|
3133 |
|
3134 |
-
#: lib/help.php:
|
3135 |
msgid ""
|
3136 |
"This options lets you configure NinjaFirewall to delete its old logs "
|
3137 |
"automatically. By default, logs are never deleted, <b>even when uninstall "
|
@@ -3139,56 +2815,56 @@ msgid ""
|
|
3139 |
"delete old logs."
|
3140 |
msgstr ""
|
3141 |
|
3142 |
-
#: lib/help.php:
|
3143 |
msgid ""
|
3144 |
"Centralized Logging lets you remotely access the firewall log of all your "
|
3145 |
"NinjaFirewall protected websites from one single installation. You do not "
|
3146 |
"need any longer to log in to individual servers to analyse your log data."
|
3147 |
msgstr ""
|
3148 |
|
3149 |
-
#: lib/help.php:
|
3150 |
#, php-format
|
3151 |
msgid "<a href=\"%s\">Consult our blog</a> for more info about it."
|
3152 |
msgstr ""
|
3153 |
|
3154 |
-
#: lib/help.php:
|
3155 |
msgid ""
|
3156 |
"Enter your public key (optional): This is the public key that was created "
|
3157 |
"from your main server."
|
3158 |
msgstr ""
|
3159 |
|
3160 |
-
#: lib/help.php:
|
3161 |
msgid ""
|
3162 |
"Centralized Logging will keep working even if NinjaFirewall is disabled. "
|
3163 |
"Delete your public key below if you want to disable it."
|
3164 |
msgstr ""
|
3165 |
|
3166 |
-
#: lib/help.php:
|
3167 |
-
#: ninjafirewall.php:
|
3168 |
msgid "Live Log"
|
3169 |
msgstr ""
|
3170 |
|
3171 |
-
#: lib/help.php:
|
3172 |
msgid ""
|
3173 |
"Live Log lets you watch your blog traffic in real time, just like the Unix "
|
3174 |
"<code>tail -f</code> command. Note that requests sent to static elements "
|
3175 |
"like JS/CSS files and images are not managed by NinjaFirewall."
|
3176 |
msgstr ""
|
3177 |
|
3178 |
-
#: lib/help.php:
|
3179 |
msgid ""
|
3180 |
"You can enable/disable the monitoring process, change the refresh rate, "
|
3181 |
"clear the screen, enable automatic vertical scrolling, change the log "
|
3182 |
"format, select which traffic you want to view (HTTP/HTTPS) and the timezone."
|
3183 |
msgstr ""
|
3184 |
|
3185 |
-
#: lib/help.php:
|
3186 |
msgid ""
|
3187 |
"You can also apply filters to include or exclude files and folders "
|
3188 |
"(REQUEST_URI)."
|
3189 |
msgstr ""
|
3190 |
|
3191 |
-
#: lib/help.php:
|
3192 |
msgid ""
|
3193 |
"Live Log does not make use of any WordPress core file (e.g., <code>admin-"
|
3194 |
"ajax.php</code>). It communicates directly with the firewall without loading "
|
@@ -3197,78 +2873,78 @@ msgid ""
|
|
3197 |
"value."
|
3198 |
msgstr ""
|
3199 |
|
3200 |
-
#: lib/help.php:
|
3201 |
msgid ""
|
3202 |
"If you are using the optional <code>.htninja</code> configuration file to "
|
3203 |
"whitelist your IP, the Live Log feature will not work."
|
3204 |
msgstr ""
|
3205 |
|
3206 |
-
#: lib/help.php:
|
3207 |
msgid "Log Format"
|
3208 |
msgstr ""
|
3209 |
|
3210 |
-
#: lib/help.php:
|
3211 |
msgid "You can easily customize the log format. Possible values are:"
|
3212 |
msgstr ""
|
3213 |
|
3214 |
-
#: lib/help.php:
|
3215 |
msgid "<code>%time</code>: the server date, time and timezone."
|
3216 |
msgstr ""
|
3217 |
|
3218 |
-
#: lib/help.php:
|
3219 |
msgid "<code>%name</code>: authenticated user (HTTP basic auth), if any."
|
3220 |
msgstr ""
|
3221 |
|
3222 |
-
#: lib/help.php:
|
3223 |
#, php-format
|
3224 |
msgid ""
|
3225 |
"<code>%client</code>: the client REMOTE_ADDR. If you are behind a load "
|
3226 |
"balancer or CDN, this will be its IP."
|
3227 |
msgstr ""
|
3228 |
|
3229 |
-
#: lib/help.php:
|
3230 |
msgid "<code>%method</code>: HTTP method (e.g., GET, POST)."
|
3231 |
msgstr ""
|
3232 |
|
3233 |
-
#: lib/help.php:
|
3234 |
#, php-format
|
3235 |
msgid ""
|
3236 |
"<code>%uri</code>: the URI which was given in order to access the page "
|
3237 |
"(REQUEST_URI)."
|
3238 |
msgstr ""
|
3239 |
|
3240 |
-
#: lib/help.php:
|
3241 |
msgid "<code>%referrer</code>: the referrer (HTTP_REFERER), if any."
|
3242 |
msgstr ""
|
3243 |
|
3244 |
-
#: lib/help.php:
|
3245 |
#, php-format
|
3246 |
msgid "<code>%ua</code>: the user-agent (HTTP_USER_AGENT), if any."
|
3247 |
msgstr ""
|
3248 |
|
3249 |
-
#: lib/help.php:
|
3250 |
#, php-format
|
3251 |
msgid ""
|
3252 |
"<code>%forward</code>: HTTP_X_FORWARDED_FOR, if any. If you are behind a "
|
3253 |
"load balancer or CDN, this will likely be the visitor true IP."
|
3254 |
msgstr ""
|
3255 |
|
3256 |
-
#: lib/help.php:
|
3257 |
msgid "<code>%host</code>: the requested host (HTTP_HOST), if any."
|
3258 |
msgstr ""
|
3259 |
|
3260 |
-
#: lib/help.php:
|
3261 |
msgid ""
|
3262 |
"Additionally, you can include any of the following characters: <code>\"</"
|
3263 |
"code>, <code>%</code>, <code>[</code>, <code>]</code>, <code>space</code> "
|
3264 |
"and lowercase letters <code>a-z</code>."
|
3265 |
msgstr ""
|
3266 |
|
3267 |
-
#: lib/help.php:
|
3268 |
msgid "Rules Editor"
|
3269 |
msgstr ""
|
3270 |
|
3271 |
-
#: lib/help.php:
|
3272 |
msgid ""
|
3273 |
"Besides the \"Firewall Policies\", NinjaFirewall includes also a large set "
|
3274 |
"of built-in rules used to protect your blog against the most common "
|
@@ -3278,350 +2954,128 @@ msgid ""
|
|
3278 |
"individually:"
|
3279 |
msgstr ""
|
3280 |
|
3281 |
-
#: lib/help.php:
|
3282 |
msgid ""
|
3283 |
"Check your firewall log and find the rule ID you want to disable (it is "
|
3284 |
"displayed in the <code>RULE</code> column)."
|
3285 |
msgstr ""
|
3286 |
|
3287 |
-
#: lib/help.php:
|
3288 |
msgid ""
|
3289 |
"Select its ID from the enabled rules list below and click the \"Disable it\" "
|
3290 |
"button."
|
3291 |
msgstr ""
|
3292 |
|
3293 |
-
#: lib/help.php:
|
3294 |
msgid ""
|
3295 |
"Note: if the <code>RULE</code> column from your log shows a hyphen <code>-</"
|
3296 |
"code> instead of a number, that means that the rule can be changed in the "
|
3297 |
"\"Firewall Policies\" page."
|
3298 |
msgstr ""
|
3299 |
|
3300 |
-
#: lib/help.php:
|
3301 |
msgid "Credits"
|
3302 |
msgstr ""
|
3303 |
|
3304 |
-
#: lib/help.php:
|
3305 |
msgid ""
|
3306 |
"NinjaFirewall security rules protect against many vulnerabilities. Some of "
|
3307 |
"them were reported by the following companies, individuals or mailing lists:"
|
3308 |
msgstr ""
|
3309 |
|
3310 |
-
#: lib/help.php:
|
3311 |
msgid "Updates"
|
3312 |
msgstr ""
|
3313 |
|
3314 |
-
#: lib/help.php:
|
3315 |
msgid ""
|
3316 |
"To get the most efficient protection, you can ask NinjaFirewall to "
|
3317 |
"automatically update its security rules."
|
3318 |
msgstr ""
|
3319 |
|
3320 |
-
#: lib/help.php:
|
3321 |
msgid ""
|
3322 |
"Each time a new vulnerability is found in WordPress or one of its plugins/"
|
3323 |
"themes, a new set of security rules will be made available to protect "
|
3324 |
"against such vulnerability if needed."
|
3325 |
msgstr ""
|
3326 |
|
3327 |
-
#: lib/help.php:
|
3328 |
msgid ""
|
3329 |
"Only security rules will be downloaded. If a new version of NinjaFirewall "
|
3330 |
"(including new files, options and features) was available, it would have to "
|
3331 |
"be updated from the dashboard plugins menu as usual."
|
3332 |
msgstr ""
|
3333 |
|
3334 |
-
#: lib/help.php:
|
3335 |
msgid ""
|
3336 |
"We recommend to enable this feature, as it is the <strong>best way to keep "
|
3337 |
"your WordPress secure</strong> against new vulnerabilities."
|
3338 |
msgstr ""
|
3339 |
|
3340 |
-
#: lib/
|
3341 |
-
msgid ""
|
3342 |
-
"Error: The installer cannot download the security rules from wordpress.org "
|
3343 |
-
"website."
|
3344 |
-
msgstr ""
|
3345 |
-
|
3346 |
-
#: lib/install_default.php:171
|
3347 |
-
msgid ""
|
3348 |
-
"The server may be temporarily down or you may have network connectivity "
|
3349 |
-
"problems? Please try again in a few minutes."
|
3350 |
-
msgstr ""
|
3351 |
-
|
3352 |
-
#: lib/install_default.php:172
|
3353 |
-
msgid ""
|
3354 |
-
"NinjaFirewall downloads its rules over an HTTPS secure connection. Maybe "
|
3355 |
-
"your server does not support SSL? You can force NinjaFirewall to use a non-"
|
3356 |
-
"secure HTTP connection by adding the following directive to your <strong>wp-"
|
3357 |
-
"config.php</strong> file:"
|
3358 |
-
msgstr ""
|
3359 |
-
|
3360 |
-
#: lib/install_fullwaf.php:35 lib/install_fullwaf.php:149
|
3361 |
-
#: lib/install_fullwaf.php:304 lib/install_wpwaf.php:53
|
3362 |
-
#: lib/install_wpwaf.php:63 lib/install_wpwaf.php:70
|
3363 |
-
msgid "Error:"
|
3364 |
-
msgstr ""
|
3365 |
-
|
3366 |
-
#: lib/install_fullwaf.php:39
|
3367 |
-
#, php-format
|
3368 |
-
msgid ""
|
3369 |
-
"Your WordPress directory (%s) is different from your website document root "
|
3370 |
-
"(%s). Because it is possible to install WordPress into a subdirectory, but "
|
3371 |
-
"have the blog exist in the site root, NinjaFirewall needs to know the exact "
|
3372 |
-
"location of the site root."
|
3373 |
-
msgstr ""
|
3374 |
-
|
3375 |
-
#: lib/install_fullwaf.php:40
|
3376 |
-
#, php-format
|
3377 |
-
msgid ""
|
3378 |
-
"Please edit the path below only if you have manually modified your WordPress "
|
3379 |
-
"root directory as described in the <a href=\"%s\">Giving WordPress Its Own "
|
3380 |
-
"Directory</a> article."
|
3381 |
-
msgstr ""
|
3382 |
-
|
3383 |
-
#: lib/install_fullwaf.php:41
|
3384 |
-
msgid "Most users should not change this value."
|
3385 |
-
msgstr ""
|
3386 |
-
|
3387 |
-
#: lib/install_fullwaf.php:42
|
3388 |
-
msgid "Path to WordPress site root directory:"
|
3389 |
-
msgstr ""
|
3390 |
-
|
3391 |
-
#: lib/install_fullwaf.php:57 lib/install_fullwaf.php:249
|
3392 |
-
msgid "please enter the full path to WordPress folder."
|
3393 |
-
msgstr ""
|
3394 |
-
|
3395 |
-
#: lib/install_fullwaf.php:62
|
3396 |
-
#, php-format
|
3397 |
-
msgid ""
|
3398 |
-
"cannot find the %s directory! Please correct the full path to WordPress site "
|
3399 |
-
"root directory."
|
3400 |
-
msgstr ""
|
3401 |
-
|
3402 |
-
#: lib/install_fullwaf.php:75
|
3403 |
-
msgid "(recommended)"
|
3404 |
-
msgstr ""
|
3405 |
-
|
3406 |
-
#: lib/install_fullwaf.php:118
|
3407 |
-
msgid "Please select the PHP initialization file supported by your server."
|
3408 |
-
msgstr ""
|
3409 |
-
|
3410 |
-
#: lib/install_fullwaf.php:144
|
3411 |
-
#, php-format
|
3412 |
-
msgid ""
|
3413 |
-
"Error: NinjaFirewall log directory is not writable (%s). Please chmod it to "
|
3414 |
-
"0777 and reload this page."
|
3415 |
-
msgstr ""
|
3416 |
-
|
3417 |
-
#: lib/install_fullwaf.php:153
|
3418 |
-
msgid "System configuration"
|
3419 |
-
msgstr ""
|
3420 |
-
|
3421 |
-
#: lib/install_fullwaf.php:159
|
3422 |
#, php-format
|
3423 |
msgid ""
|
3424 |
-
"
|
3425 |
-
"seems to be used by another application: %s."
|
3426 |
msgstr ""
|
3427 |
|
3428 |
-
#: lib/
|
3429 |
-
msgid "Because NinjaFirewall needs to use that directive, it will override it."
|
3430 |
-
msgstr ""
|
3431 |
-
|
3432 |
-
#: lib/install_fullwaf.php:166 lib/install_wpwaf.php:95
|
3433 |
-
msgid "Multisite network detected:"
|
3434 |
-
msgstr ""
|
3435 |
-
|
3436 |
-
#: lib/install_fullwaf.php:166 lib/install_wpwaf.php:95
|
3437 |
-
msgid ""
|
3438 |
-
"NinjaFirewall will protect all sites from your network and its configuration "
|
3439 |
-
"interface will be accessible only to the Super Admin from the network main "
|
3440 |
-
"site."
|
3441 |
-
msgstr ""
|
3442 |
-
|
3443 |
-
#: lib/install_fullwaf.php:175
|
3444 |
-
msgid "Select your HTTP server and your PHP server API"
|
3445 |
-
msgstr ""
|
3446 |
-
|
3447 |
-
#: lib/install_fullwaf.php:182
|
3448 |
-
msgid "CGI or PHP-FPM"
|
3449 |
-
msgstr ""
|
3450 |
-
|
3451 |
-
#: lib/install_fullwaf.php:184
|
3452 |
-
msgid "Other webserver + CGI/FastCGI"
|
3453 |
-
msgstr ""
|
3454 |
-
|
3455 |
-
#: lib/install_fullwaf.php:185
|
3456 |
-
msgid "Other webserver + HHVM"
|
3457 |
-
msgstr ""
|
3458 |
-
|
3459 |
-
#: lib/install_fullwaf.php:186
|
3460 |
-
msgid "view PHPINFO"
|
3461 |
-
msgstr ""
|
3462 |
-
|
3463 |
-
#: lib/install_fullwaf.php:194
|
3464 |
#, php-format
|
3465 |
-
msgid ""
|
3466 |
-
"Please <a href=\"%s\">check our blog</a> if you want to install "
|
3467 |
-
"NinjaFirewall on HHVM."
|
3468 |
-
msgstr ""
|
3469 |
-
|
3470 |
-
#: lib/install_fullwaf.php:223
|
3471 |
-
msgid "Select the PHP initialization file supported by your server"
|
3472 |
-
msgstr ""
|
3473 |
-
|
3474 |
-
#: lib/install_fullwaf.php:226
|
3475 |
-
msgid "Used by most shared hosting accounts."
|
3476 |
-
msgstr ""
|
3477 |
-
|
3478 |
-
#: lib/install_fullwaf.php:228
|
3479 |
-
msgid "The default PHP INI file since PHP 5.3.0"
|
3480 |
-
msgstr ""
|
3481 |
-
|
3482 |
-
#: lib/install_fullwaf.php:228
|
3483 |
-
msgid "more info"
|
3484 |
-
msgstr ""
|
3485 |
-
|
3486 |
-
#: lib/install_fullwaf.php:230
|
3487 |
-
msgid "A few shared hosting accounts. Seldom used."
|
3488 |
-
msgstr ""
|
3489 |
-
|
3490 |
-
#: lib/install_fullwaf.php:254 lib/install_fullwaf.php:514
|
3491 |
-
msgid "select your HTTP server and PHP SAPI."
|
3492 |
msgstr ""
|
3493 |
|
3494 |
-
#: lib/
|
3495 |
-
msgid "select the PHP initialization file supported by your server."
|
3496 |
-
msgstr ""
|
3497 |
-
|
3498 |
-
#: lib/install_fullwaf.php:307 lib/install_wpwaf.php:89
|
3499 |
-
msgid "Firewall Integration"
|
3500 |
-
msgstr ""
|
3501 |
-
|
3502 |
-
#: lib/install_fullwaf.php:312
|
3503 |
#, php-format
|
3504 |
msgid ""
|
3505 |
-
"The
|
3506 |
-
"added to it:"
|
3507 |
msgstr ""
|
3508 |
|
3509 |
-
#: lib/
|
3510 |
#, php-format
|
3511 |
msgid ""
|
3512 |
-
"
|
3513 |
-
"
|
3514 |
-
msgstr ""
|
3515 |
-
|
3516 |
-
#: lib/install_fullwaf.php:313 lib/install_wpwaf.php:101
|
3517 |
-
msgid "All other lines, if any, are the actual content of the file:"
|
3518 |
-
msgstr ""
|
3519 |
-
|
3520 |
-
#: lib/install_fullwaf.php:315
|
3521 |
-
msgid "The file is not writable, I cannot edit it for you."
|
3522 |
-
msgstr ""
|
3523 |
-
|
3524 |
-
#: lib/install_fullwaf.php:397
|
3525 |
-
msgid ""
|
3526 |
-
"Add the following code to your <code>/etc/hhvm/php.ini</code> file, and "
|
3527 |
-
"restart HHVM afterwards:"
|
3528 |
-
msgstr ""
|
3529 |
-
|
3530 |
-
#: lib/install_fullwaf.php:462 lib/install_wpwaf.php:135
|
3531 |
-
msgid "Please make those changes, then click on button below."
|
3532 |
-
msgstr ""
|
3533 |
-
|
3534 |
-
#: lib/install_fullwaf.php:467 lib/install_wpwaf.php:127
|
3535 |
-
msgid "Let NinjaFirewall make the above changes (recommended)."
|
3536 |
-
msgstr ""
|
3537 |
-
|
3538 |
-
#: lib/install_fullwaf.php:470 lib/install_wpwaf.php:131
|
3539 |
-
msgid ""
|
3540 |
-
"Ensure that you have FTP access to your website so that, if there were a "
|
3541 |
-
"problem during the installation of the firewall, you could easily undo the "
|
3542 |
-
"changes."
|
3543 |
-
msgstr ""
|
3544 |
-
|
3545 |
-
#: lib/install_fullwaf.php:475 lib/install_wpwaf.php:134
|
3546 |
-
msgid "I want to make the changes myself."
|
3547 |
-
msgstr ""
|
3548 |
-
|
3549 |
-
#: lib/install_fullwaf.php:484
|
3550 |
-
msgid "Please check our blog if you want to install NinjaFirewall on HHVM."
|
3551 |
-
msgstr ""
|
3552 |
-
|
3553 |
-
#: lib/install_fullwaf.php:504
|
3554 |
-
msgid "you must select how to make changes to your files."
|
3555 |
msgstr ""
|
3556 |
|
3557 |
-
#: lib/
|
3558 |
msgid ""
|
3559 |
-
"
|
3560 |
-
"
|
3561 |
-
msgstr ""
|
3562 |
-
|
3563 |
-
#: lib/install_fullwaf.php:545 lib/install_fullwaf.php:588
|
3564 |
-
#, php-format
|
3565 |
-
msgid "cannot write to <code>%s</code>, it is read-only."
|
3566 |
-
msgstr ""
|
3567 |
-
|
3568 |
-
#: lib/install_fullwaf.php:620 lib/install_wpwaf.php:203
|
3569 |
-
msgid "Your configuration was saved."
|
3570 |
msgstr ""
|
3571 |
|
3572 |
-
#: lib/
|
3573 |
#, php-format
|
3574 |
-
msgid "
|
3575 |
-
msgstr ""
|
3576 |
-
|
3577 |
-
#: lib/install_fullwaf.php:630 lib/install_wpwaf.php:213
|
3578 |
-
msgid ""
|
3579 |
-
"Please click the button below to test if the firewall integration was "
|
3580 |
-
"successful."
|
3581 |
-
msgstr ""
|
3582 |
-
|
3583 |
-
#: lib/install_fullwaf.php:632 lib/install_wpwaf.php:215
|
3584 |
-
msgid "Test Firewall"
|
3585 |
msgstr ""
|
3586 |
|
3587 |
-
#: lib/
|
3588 |
#, php-format
|
3589 |
-
msgid ""
|
3590 |
-
"Unable to read the wp-config.php file (%s). Make sure it is readable and try "
|
3591 |
-
"again."
|
3592 |
msgstr ""
|
3593 |
|
3594 |
-
#: lib/
|
3595 |
-
|
3596 |
-
msgid "
|
3597 |
msgstr ""
|
3598 |
|
3599 |
-
#: lib/
|
3600 |
-
#, php-format
|
3601 |
msgid ""
|
3602 |
-
"The
|
3603 |
-
"
|
3604 |
msgstr ""
|
3605 |
|
3606 |
-
#: lib/
|
3607 |
msgid ""
|
3608 |
-
"The
|
3609 |
-
"
|
3610 |
-
msgstr ""
|
3611 |
-
|
3612 |
-
#: lib/install_wpwaf.php:129
|
3613 |
-
msgid "Back up the file (wp-config.bak.php) before editing it."
|
3614 |
-
msgstr ""
|
3615 |
-
|
3616 |
-
#: lib/install_wpwaf.php:155
|
3617 |
-
#, php-format
|
3618 |
-
msgid "Unable to find the wp-config.php file (#%s)."
|
3619 |
msgstr ""
|
3620 |
|
3621 |
-
#: lib/
|
3622 |
msgid ""
|
3623 |
-
"
|
3624 |
-
"
|
|
|
|
|
3625 |
msgstr ""
|
3626 |
|
3627 |
#: lib/live_log.php:29
|
@@ -3638,337 +3092,261 @@ msgid ""
|
|
3638 |
"Administrator to the whitelist\" option is enabled."
|
3639 |
msgstr ""
|
3640 |
|
3641 |
-
#: lib/live_log.php:
|
3642 |
-
msgid "Loading..."
|
3643 |
-
msgstr ""
|
3644 |
-
|
3645 |
-
#: lib/live_log.php:112 lib/live_log.php:141 lib/live_log.php:239
|
3646 |
-
msgid "No traffic yet, please wait..."
|
3647 |
-
msgstr ""
|
3648 |
-
|
3649 |
-
#: lib/live_log.php:115
|
3650 |
-
msgid "Error: Live Log did not receive the expected response from your server:"
|
3651 |
-
msgstr ""
|
3652 |
-
|
3653 |
-
#: lib/live_log.php:134
|
3654 |
-
msgid "Error: URL does not seem to exist:"
|
3655 |
-
msgstr ""
|
3656 |
-
|
3657 |
-
#: lib/live_log.php:136
|
3658 |
-
msgid "Error: cannot find your log file. Try to reload this page."
|
3659 |
-
msgstr ""
|
3660 |
-
|
3661 |
-
#: lib/live_log.php:138
|
3662 |
-
msgid "Error: the HTTP server returned the following error code:"
|
3663 |
-
msgstr ""
|
3664 |
-
|
3665 |
-
#: lib/live_log.php:143 lib/live_log.php:156 lib/live_log.php:176
|
3666 |
-
msgid "Sleeping"
|
3667 |
-
msgstr ""
|
3668 |
-
|
3669 |
-
#: lib/live_log.php:143 lib/live_log.php:156 lib/live_log.php:176
|
3670 |
-
msgid "seconds"
|
3671 |
-
msgstr ""
|
3672 |
-
|
3673 |
-
#: lib/live_log.php:243
|
3674 |
-
msgid "On"
|
3675 |
-
msgstr ""
|
3676 |
-
|
3677 |
-
#: lib/live_log.php:243
|
3678 |
-
msgid "Off"
|
3679 |
-
msgstr ""
|
3680 |
-
|
3681 |
-
#: lib/live_log.php:243
|
3682 |
msgid "Refresh rate:"
|
3683 |
msgstr ""
|
3684 |
|
3685 |
-
#: lib/live_log.php:
|
3686 |
msgid "5 seconds"
|
3687 |
msgstr ""
|
3688 |
|
3689 |
-
#: lib/live_log.php:
|
3690 |
msgid "10 seconds"
|
3691 |
msgstr ""
|
3692 |
|
3693 |
-
#: lib/live_log.php:
|
3694 |
msgid "20 seconds"
|
3695 |
msgstr ""
|
3696 |
|
3697 |
-
#: lib/live_log.php:
|
3698 |
msgid "45 seconds"
|
3699 |
msgstr ""
|
3700 |
|
3701 |
-
#: lib/live_log.php:
|
3702 |
msgid "Clear screen"
|
3703 |
msgstr ""
|
3704 |
|
3705 |
-
#: lib/live_log.php:
|
3706 |
msgid "Autoscrolling"
|
3707 |
msgstr ""
|
3708 |
|
3709 |
-
#: lib/live_log.php:
|
3710 |
msgid "Live Log will not display whitelisted users and brute-force attacks."
|
3711 |
msgstr ""
|
3712 |
|
3713 |
-
#: lib/live_log.php:
|
3714 |
-
msgid "Live Log
|
3715 |
msgstr ""
|
3716 |
|
3717 |
-
#: lib/live_log.php:
|
3718 |
msgid "Inclusion and exclusion filters (REQUEST_URI)"
|
3719 |
msgstr ""
|
3720 |
|
3721 |
-
#: lib/live_log.php:
|
3722 |
msgid "Must include"
|
3723 |
msgstr ""
|
3724 |
|
3725 |
-
#: lib/live_log.php:
|
3726 |
msgid "Must not include"
|
3727 |
msgstr ""
|
3728 |
|
3729 |
-
#: lib/live_log.php:
|
3730 |
msgid ""
|
3731 |
"Full or partial case-sensitive REQUEST_URI string. Multiple values must be "
|
3732 |
"comma-separated."
|
3733 |
msgstr ""
|
3734 |
|
3735 |
-
#: lib/live_log.php:
|
3736 |
msgid "Format"
|
3737 |
msgstr ""
|
3738 |
|
3739 |
-
#: lib/live_log.php:
|
3740 |
msgid "Custom"
|
3741 |
msgstr ""
|
3742 |
|
3743 |
-
#: lib/live_log.php:
|
3744 |
msgid "See contextual help for available log format."
|
3745 |
msgstr ""
|
3746 |
|
3747 |
-
#: lib/live_log.php:
|
3748 |
msgid "Display"
|
3749 |
msgstr ""
|
3750 |
|
3751 |
-
#: lib/live_log.php:
|
3752 |
msgid "Timezone"
|
3753 |
msgstr ""
|
3754 |
|
3755 |
-
#: lib/live_log.php:
|
3756 |
msgid "Save Live Log Options"
|
3757 |
msgstr ""
|
3758 |
|
3759 |
-
#: lib/live_log.php:
|
3760 |
msgid "Error: please enter the custom log format."
|
3761 |
msgstr ""
|
3762 |
|
3763 |
-
#: lib/login_protection.php:
|
3764 |
-
#: lib/login_protection.php:
|
3765 |
msgid "Access restricted"
|
3766 |
msgstr ""
|
3767 |
|
3768 |
-
#: lib/login_protection.php:
|
3769 |
-
#: lib/login_protection.php:
|
3770 |
msgid "Type the characters you see in the picture below:"
|
3771 |
msgstr ""
|
3772 |
|
3773 |
-
#: lib/login_protection.php:
|
3774 |
-
msgid "Please enter a number from 1 to 99 in 'Password-protect' field."
|
3775 |
-
msgstr ""
|
3776 |
-
|
3777 |
-
#: lib/login_protection.php:145
|
3778 |
-
msgid "Invalid character."
|
3779 |
-
msgstr ""
|
3780 |
-
|
3781 |
-
#: lib/login_protection.php:150
|
3782 |
-
msgid "\"admin\" is not acceptable, please choose another user name."
|
3783 |
-
msgstr ""
|
3784 |
-
|
3785 |
-
#: lib/login_protection.php:158
|
3786 |
-
msgid "Please enter max 1024 character only."
|
3787 |
-
msgstr ""
|
3788 |
-
|
3789 |
-
#: lib/login_protection.php:211
|
3790 |
msgid ""
|
3791 |
-
"
|
3792 |
-
"force attack protection is set to 'Always ON'."
|
3793 |
-
msgstr ""
|
3794 |
-
|
3795 |
-
#: lib/login_protection.php:271
|
3796 |
-
msgid "GD Support is not available on your server."
|
3797 |
msgstr ""
|
3798 |
|
3799 |
-
#: lib/login_protection.php:
|
3800 |
msgid ""
|
3801 |
"Error: GD Support is not available on your server, the captcha protection "
|
3802 |
"will not work!"
|
3803 |
msgstr ""
|
3804 |
|
3805 |
-
#: lib/login_protection.php:
|
3806 |
msgid "Enable brute force attack protection"
|
3807 |
msgstr ""
|
3808 |
|
3809 |
-
#: lib/login_protection.php:
|
3810 |
-
msgid "
|
3811 |
msgstr ""
|
3812 |
|
3813 |
-
#: lib/login_protection.php:
|
3814 |
-
msgid "
|
3815 |
msgstr ""
|
3816 |
|
3817 |
-
#: lib/login_protection.php:
|
3818 |
-
msgid "
|
|
|
|
|
|
|
|
|
3819 |
msgstr ""
|
3820 |
|
3821 |
-
#: lib/login_protection.php:
|
3822 |
-
msgid "
|
3823 |
msgstr ""
|
3824 |
|
3825 |
-
#: lib/login_protection.php:
|
3826 |
-
msgid "
|
3827 |
msgstr ""
|
3828 |
|
3829 |
-
#: lib/login_protection.php:
|
3830 |
msgid "Protect the login page against"
|
3831 |
msgstr ""
|
3832 |
|
3833 |
-
#: lib/login_protection.php:
|
3834 |
msgid "<code>GET</code> request attacks"
|
3835 |
msgstr ""
|
3836 |
|
3837 |
-
#: lib/login_protection.php:
|
3838 |
msgid "<code>POST</code> request attacks (default)"
|
3839 |
msgstr ""
|
3840 |
|
3841 |
-
#: lib/login_protection.php:
|
3842 |
msgid "<code>GET</code> and <code>POST</code> requests attacks"
|
3843 |
msgstr ""
|
3844 |
|
3845 |
-
#: lib/login_protection.php:
|
3846 |
msgid "Enable protection"
|
3847 |
msgstr ""
|
3848 |
|
3849 |
-
#: lib/login_protection.php:
|
3850 |
#, php-format
|
3851 |
msgid "For %1$s minutes, if more than %2$s %3$s requests within %4$s seconds."
|
3852 |
msgstr ""
|
3853 |
|
3854 |
-
#: lib/login_protection.php:
|
3855 |
msgid "HTTP authentication"
|
3856 |
msgstr ""
|
3857 |
|
3858 |
-
#: lib/login_protection.php:
|
3859 |
msgid "User:"
|
3860 |
msgstr ""
|
3861 |
|
3862 |
-
#: lib/login_protection.php:
|
3863 |
msgid "Password:"
|
3864 |
msgstr ""
|
3865 |
|
3866 |
-
#: lib/login_protection.php:
|
3867 |
msgid "User and Password must be from 6 to 32 characters."
|
3868 |
msgstr ""
|
3869 |
|
3870 |
-
#: lib/login_protection.php:
|
3871 |
msgid "Message (max. 1024 characters, HTML tags allowed)"
|
3872 |
msgstr ""
|
3873 |
|
3874 |
-
#: lib/login_protection.php:
|
3875 |
msgid "Message"
|
3876 |
msgstr ""
|
3877 |
|
3878 |
-
#: lib/login_protection.php:
|
3879 |
msgid "This message will be displayed above the captcha. Max. 255 characters."
|
3880 |
msgstr ""
|
3881 |
|
3882 |
-
#: lib/login_protection.php:
|
3883 |
msgid "Various options"
|
3884 |
msgstr ""
|
3885 |
|
3886 |
-
#: lib/login_protection.php:
|
3887 |
msgid ""
|
3888 |
"If you are using the Jetpack plugin, blocking access to the XML-RPC API may "
|
3889 |
"prevent it from working correctly."
|
3890 |
msgstr ""
|
3891 |
|
3892 |
-
#: lib/login_protection.php:
|
3893 |
-
msgid "
|
3894 |
-
msgstr ""
|
3895 |
-
|
3896 |
-
#: lib/login_protection.php:392
|
3897 |
-
msgid "Apply the protection to the <code>xmlrpc.php</code> script as well."
|
3898 |
-
msgstr ""
|
3899 |
-
|
3900 |
-
#: lib/login_protection.php:397
|
3901 |
-
msgid "Bot protection"
|
3902 |
msgstr ""
|
3903 |
|
3904 |
-
#: lib/login_protection.php:
|
3905 |
-
msgid "Enable bot protection
|
3906 |
msgstr ""
|
3907 |
|
3908 |
-
#: lib/login_protection.php:
|
3909 |
-
msgid "Authentication log"
|
3910 |
msgstr ""
|
3911 |
|
3912 |
-
#: lib/login_protection.php:
|
3913 |
msgid "Your server configuration is not compatible with that option."
|
3914 |
msgstr ""
|
3915 |
|
3916 |
-
#: lib/login_protection.php:
|
3917 |
msgid ""
|
3918 |
-
"The login protection must be set to \"
|
3919 |
"this option."
|
3920 |
msgstr ""
|
3921 |
|
3922 |
-
#: lib/login_protection.php:
|
3923 |
-
msgid "
|
3924 |
-
msgstr ""
|
3925 |
-
|
3926 |
-
#: lib/login_protection.php:423
|
3927 |
-
msgid "Signature"
|
3928 |
-
msgstr ""
|
3929 |
-
|
3930 |
-
#. translators: "Brute-force protection by NinjaFirewall" should not be translated.
|
3931 |
-
#: lib/login_protection.php:427
|
3932 |
-
msgid ""
|
3933 |
-
"Disable the <i>Brute-force protection by NinjaFirewall</i> signature on the "
|
3934 |
-
"protection page."
|
3935 |
msgstr ""
|
3936 |
|
3937 |
-
#: lib/login_protection.php:
|
3938 |
msgid "Save Login Protection"
|
3939 |
msgstr ""
|
3940 |
|
3941 |
-
#: lib/login_protection.php:
|
3942 |
msgid "See our benchmark and stress-test:"
|
3943 |
msgstr ""
|
3944 |
|
3945 |
-
#: lib/login_protection.php:
|
3946 |
#, php-format
|
3947 |
msgid "Error: %s directory is not writable. Please chmod it to 0777."
|
3948 |
msgstr ""
|
3949 |
|
3950 |
-
#: lib/login_protection.php:
|
3951 |
msgid "Error: please enter a user name for HTTP authentication."
|
3952 |
msgstr ""
|
3953 |
|
3954 |
-
#: lib/login_protection.php:
|
3955 |
msgid "Error: HTTP authentication user name is not valid."
|
3956 |
msgstr ""
|
3957 |
|
3958 |
-
#: lib/login_protection.php:
|
3959 |
msgid "Error: please enter a user name and password for HTTP authentication."
|
3960 |
msgstr ""
|
3961 |
|
3962 |
-
#: lib/login_protection.php:
|
3963 |
msgid "Error: password must be from 6 to 32 characters."
|
3964 |
msgstr ""
|
3965 |
|
3966 |
-
#: lib/login_protection.php:
|
3967 |
#, php-format
|
3968 |
msgid "Error: unable to write to the %s configuration file"
|
3969 |
msgstr ""
|
3970 |
|
3971 |
-
#: lib/network.php:24 ninjafirewall.php:
|
3972 |
#, php-format
|
3973 |
msgid "You are not allowed to perform this task (%s)."
|
3974 |
msgstr ""
|
@@ -3977,94 +3355,140 @@ msgstr ""
|
|
3977 |
msgid "You do not have a multisite network."
|
3978 |
msgstr ""
|
3979 |
|
3980 |
-
#: lib/network.php:
|
3981 |
msgid "NinjaFirewall Status"
|
3982 |
msgstr ""
|
3983 |
|
3984 |
-
#: lib/network.php:
|
3985 |
msgid ""
|
3986 |
"Display NinjaFirewall status icon in the admin bar of all sites in the "
|
3987 |
"network"
|
3988 |
msgstr ""
|
3989 |
|
3990 |
-
#: lib/network.php:
|
3991 |
-
msgid "Save Network options"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3992 |
msgstr ""
|
3993 |
|
3994 |
-
#: lib/overview.php:
|
3995 |
msgid "Congratulations, NinjaFirewall is up and running!"
|
3996 |
msgstr ""
|
3997 |
|
3998 |
-
#: lib/overview.php:
|
3999 |
msgid ""
|
4000 |
"If you need help, click on the contextual \"Help\" menu tab located in the "
|
4001 |
"upper right corner of each page."
|
4002 |
msgstr ""
|
4003 |
|
4004 |
-
#: lib/overview.php:
|
4005 |
msgid "A \"Quick Start, FAQ & Troubleshooting Guide\" email was sent to"
|
4006 |
msgstr ""
|
4007 |
|
4008 |
-
#: lib/overview.php:
|
4009 |
-
msgid "
|
4010 |
msgstr ""
|
4011 |
|
4012 |
-
#: lib/overview.php:
|
4013 |
msgid "Firewall"
|
4014 |
msgstr ""
|
4015 |
|
4016 |
-
#: lib/overview.php:
|
4017 |
-
msgid "
|
4018 |
msgstr ""
|
4019 |
|
4020 |
-
#: lib/overview.php:
|
4021 |
-
|
|
|
4022 |
msgstr ""
|
4023 |
|
4024 |
-
#: lib/overview.php:
|
4025 |
-
msgid "
|
4026 |
msgstr ""
|
4027 |
|
4028 |
-
#: lib/overview.php:
|
4029 |
#, php-format
|
4030 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
4031 |
msgstr ""
|
4032 |
|
4033 |
-
#: lib/overview.php:
|
|
|
|
|
|
|
|
|
4034 |
msgid "Enabled."
|
4035 |
msgstr ""
|
4036 |
|
4037 |
-
#: lib/overview.php:
|
4038 |
msgid "Click here to turn Debugging Mode off"
|
4039 |
msgstr ""
|
4040 |
|
4041 |
-
#: lib/overview.php:
|
4042 |
-
msgid "
|
|
|
|
|
|
|
|
|
4043 |
msgstr ""
|
4044 |
|
4045 |
-
#: lib/overview.php:
|
4046 |
msgid "Version"
|
4047 |
msgstr ""
|
4048 |
|
4049 |
-
#: lib/overview.php:
|
4050 |
msgid "Security rules:"
|
4051 |
msgstr ""
|
4052 |
|
4053 |
-
#: lib/overview.php:
|
|
|
|
|
|
|
|
|
4054 |
msgid "Security rules updates are disabled."
|
4055 |
msgstr ""
|
4056 |
|
4057 |
-
#: lib/overview.php:
|
4058 |
msgid ""
|
4059 |
"If you want your blog to be protected against the latest threats, enable "
|
4060 |
"automatic security rules updates."
|
4061 |
msgstr ""
|
4062 |
|
4063 |
-
#: lib/overview.php:
|
4064 |
msgid "Admin user"
|
4065 |
msgstr ""
|
4066 |
|
4067 |
-
#: lib/overview.php:
|
4068 |
#, php-format
|
4069 |
msgid ""
|
4070 |
"You are not whitelisted. Ensure that the \"Do not block WordPress "
|
@@ -4073,66 +3497,66 @@ msgid ""
|
|
4073 |
"your administration dashboard."
|
4074 |
msgstr ""
|
4075 |
|
4076 |
-
#: lib/overview.php:
|
4077 |
msgid "You are whitelisted by the firewall."
|
4078 |
msgstr ""
|
4079 |
|
4080 |
-
#: lib/overview.php:
|
4081 |
msgid "Restrictions"
|
4082 |
msgstr ""
|
4083 |
|
4084 |
-
#: lib/overview.php:
|
4085 |
-
msgid "Access to NinjaFirewall is restricted to
|
4086 |
msgstr ""
|
4087 |
|
4088 |
-
#: lib/overview.php:
|
4089 |
msgid "User session"
|
4090 |
msgstr ""
|
4091 |
|
4092 |
-
#: lib/overview.php:
|
4093 |
msgid ""
|
4094 |
"It seems that the user session set by NinjaFirewall was not found by the "
|
4095 |
"firewall script."
|
4096 |
msgstr ""
|
4097 |
|
4098 |
-
#: lib/overview.php:
|
4099 |
#, php-format
|
4100 |
msgid ""
|
4101 |
"the public key is invalid. Please <a href=\"%s\">check your configuration</"
|
4102 |
"a>."
|
4103 |
msgstr ""
|
4104 |
|
4105 |
-
#: lib/overview.php:
|
4106 |
msgid "No IP address restriction."
|
4107 |
msgstr ""
|
4108 |
|
4109 |
-
#: lib/overview.php:
|
4110 |
#, php-format
|
4111 |
msgid "IP address %s is allowed to access NinjaFirewall's log on this server."
|
4112 |
msgstr ""
|
4113 |
|
4114 |
-
#: lib/overview.php:
|
4115 |
#, php-format
|
4116 |
msgid ""
|
4117 |
"the whitelisted IP is not valid. Please <a href=\"%s\">check your "
|
4118 |
"configuration</a>."
|
4119 |
msgstr ""
|
4120 |
|
4121 |
-
#: lib/overview.php:
|
4122 |
#, php-format
|
4123 |
msgid "Error: %s"
|
4124 |
msgstr ""
|
4125 |
|
4126 |
-
#: lib/overview.php:
|
4127 |
msgid "Source IP"
|
4128 |
msgstr ""
|
4129 |
|
4130 |
-
#: lib/overview.php:
|
4131 |
#, php-format
|
4132 |
msgid "You have a private IP : %s"
|
4133 |
msgstr ""
|
4134 |
|
4135 |
-
#: lib/overview.php:
|
4136 |
#, php-format
|
4137 |
msgid ""
|
4138 |
"If your site is behind a reverse proxy or a load balancer, ensure that you "
|
@@ -4140,11 +3564,11 @@ msgid ""
|
|
4140 |
"otherwise use the NinjaFirewall %s configuration file."
|
4141 |
msgstr ""
|
4142 |
|
4143 |
-
#: lib/overview.php:
|
4144 |
msgid "CDN detection"
|
4145 |
msgstr ""
|
4146 |
|
4147 |
-
#: lib/overview.php:
|
4148 |
#, php-format
|
4149 |
msgid ""
|
4150 |
"%s detected: you seem to be using Cloudflare CDN services. Ensure that you "
|
@@ -4152,7 +3576,7 @@ msgid ""
|
|
4152 |
"otherwise use the NinjaFirewall %s configuration file."
|
4153 |
msgstr ""
|
4154 |
|
4155 |
-
#: lib/overview.php:
|
4156 |
#, php-format
|
4157 |
msgid ""
|
4158 |
"%s detected: you seem to be using Incapsula CDN services. Ensure that you "
|
@@ -4160,118 +3584,118 @@ msgid ""
|
|
4160 |
"otherwise use the NinjaFirewall %s configuration file."
|
4161 |
msgstr ""
|
4162 |
|
4163 |
-
#: lib/overview.php:
|
4164 |
msgid "Log dir"
|
4165 |
msgstr ""
|
4166 |
|
4167 |
-
#: lib/overview.php:
|
4168 |
#, php-format
|
4169 |
msgid "%s directory is not writable! Please chmod it to 0777 or equivalent."
|
4170 |
msgstr ""
|
4171 |
|
4172 |
-
#: lib/overview.php:
|
4173 |
msgid "Optional configuration file"
|
4174 |
msgstr ""
|
4175 |
|
4176 |
-
#: lib/overview.php:
|
4177 |
msgid "MySQLi link identifier"
|
4178 |
msgstr ""
|
4179 |
|
4180 |
-
#: lib/overview.php:
|
4181 |
msgid "A MySQLi link identifier was detected in your <code>.htninja</code>."
|
4182 |
msgstr ""
|
4183 |
|
4184 |
-
#: lib/rules_editor.php:
|
4185 |
msgid "Error: you did not select a rule to disable."
|
4186 |
msgstr ""
|
4187 |
|
4188 |
-
#: lib/rules_editor.php:
|
4189 |
msgid "Error: to change this rule, use the \"Firewall Policies\" menu."
|
4190 |
msgstr ""
|
4191 |
|
4192 |
-
#: lib/rules_editor.php:
|
4193 |
msgid "Error: this rule does not exist."
|
4194 |
msgstr ""
|
4195 |
|
4196 |
-
#: lib/rules_editor.php:
|
4197 |
#, php-format
|
4198 |
msgid "Rule ID %s has been disabled."
|
4199 |
msgstr ""
|
4200 |
|
4201 |
-
#: lib/rules_editor.php:
|
4202 |
msgid "Error: you did not select a rule to enable."
|
4203 |
msgstr ""
|
4204 |
|
4205 |
-
#: lib/rules_editor.php:
|
4206 |
#, php-format
|
4207 |
msgid "Rule ID %s has been enabled."
|
4208 |
msgstr ""
|
4209 |
|
4210 |
-
#: lib/rules_editor.php:
|
4211 |
msgid "Error: no rules found."
|
4212 |
msgstr ""
|
4213 |
|
4214 |
-
#: lib/rules_editor.php:
|
4215 |
msgid "NinjaFirewall built-in security rules"
|
4216 |
msgstr ""
|
4217 |
|
4218 |
-
#: lib/rules_editor.php:
|
4219 |
msgid "Select the rule you want to disable or enable"
|
4220 |
msgstr ""
|
4221 |
|
4222 |
-
#: lib/rules_editor.php:
|
4223 |
msgid "Total rules enabled"
|
4224 |
msgstr ""
|
4225 |
|
4226 |
-
#: lib/rules_editor.php:
|
4227 |
msgid "Remote/local file inclusion"
|
4228 |
msgstr ""
|
4229 |
|
4230 |
-
#: lib/rules_editor.php:
|
4231 |
msgid "Cross-site scripting"
|
4232 |
msgstr ""
|
4233 |
|
4234 |
-
#: lib/rules_editor.php:
|
4235 |
msgid "Code injection"
|
4236 |
msgstr ""
|
4237 |
|
4238 |
-
#: lib/rules_editor.php:
|
4239 |
msgid "SQL injection"
|
4240 |
msgstr ""
|
4241 |
|
4242 |
-
#: lib/rules_editor.php:
|
4243 |
msgid "Various vulnerability"
|
4244 |
msgstr ""
|
4245 |
|
4246 |
-
#: lib/rules_editor.php:
|
4247 |
msgid "Backdoor/shell"
|
4248 |
msgstr ""
|
4249 |
|
4250 |
-
#: lib/rules_editor.php:
|
4251 |
msgid "Application specific"
|
4252 |
msgstr ""
|
4253 |
|
4254 |
-
#: lib/rules_editor.php:
|
4255 |
msgid "WordPress vulnerability"
|
4256 |
msgstr ""
|
4257 |
|
4258 |
-
#: lib/rules_editor.php:
|
4259 |
msgid "Rule ID"
|
4260 |
msgstr ""
|
4261 |
|
4262 |
-
#: lib/rules_editor.php:
|
4263 |
msgid "Disable it"
|
4264 |
msgstr ""
|
4265 |
|
4266 |
-
#: lib/rules_editor.php:
|
4267 |
msgid "Total rules disabled"
|
4268 |
msgstr ""
|
4269 |
|
4270 |
-
#: lib/rules_editor.php:
|
4271 |
msgid "Enable it"
|
4272 |
msgstr ""
|
4273 |
|
4274 |
-
#: lib/rules_update.php:73 ninjafirewall.php:
|
4275 |
msgid "Rules Update"
|
4276 |
msgstr ""
|
4277 |
|
@@ -4283,368 +3707,476 @@ msgstr ""
|
|
4283 |
msgid "Security rules have been updated."
|
4284 |
msgstr ""
|
4285 |
|
4286 |
-
#: lib/rules_update.php:94 lib/rules_update.php:
|
4287 |
msgid "No security rules update available."
|
4288 |
msgstr ""
|
4289 |
|
4290 |
-
#: lib/rules_update.php:
|
4291 |
-
msgid "Automatically update NinjaFirewall security rules"
|
4292 |
-
msgstr ""
|
4293 |
-
|
4294 |
-
#: lib/rules_update.php:157
|
4295 |
#, php-format
|
4296 |
msgid ""
|
4297 |
-
"It seems that %s is
|
4298 |
"otherwise NinjaFirewall automatic updates will not work."
|
4299 |
msgstr ""
|
4300 |
|
4301 |
-
#: lib/rules_update.php:
|
|
|
|
|
|
|
|
|
4302 |
msgid "Check for updates"
|
4303 |
msgstr ""
|
4304 |
|
4305 |
-
#: lib/rules_update.php:
|
4306 |
msgid "Every 15 minutes"
|
4307 |
msgstr ""
|
4308 |
|
4309 |
-
#: lib/rules_update.php:
|
4310 |
msgid "Every 30 minutes"
|
4311 |
msgstr ""
|
4312 |
|
4313 |
-
#: lib/rules_update.php:
|
4314 |
-
#, php-format
|
4315 |
msgid ""
|
4316 |
-
"
|
4317 |
-
"
|
4318 |
msgstr ""
|
4319 |
|
4320 |
-
#: lib/rules_update.php:
|
|
|
4321 |
msgid ""
|
4322 |
-
"
|
4323 |
-
"
|
4324 |
msgstr ""
|
4325 |
|
4326 |
-
#: lib/rules_update.php:
|
4327 |
msgid "Notification"
|
4328 |
msgstr ""
|
4329 |
|
4330 |
-
#: lib/rules_update.php:
|
4331 |
msgid "Send me a report by email when security rules have been updated."
|
4332 |
msgstr ""
|
4333 |
|
4334 |
-
#: lib/rules_update.php:
|
4335 |
msgid ""
|
4336 |
"Reports will be sent to the contact email address defined in the Event "
|
4337 |
"Notifications menu."
|
4338 |
msgstr ""
|
4339 |
|
4340 |
-
#: lib/rules_update.php:
|
4341 |
-
msgid "
|
4342 |
msgstr ""
|
4343 |
|
4344 |
-
#: lib/rules_update.php:
|
4345 |
-
msgid "
|
4346 |
msgstr ""
|
4347 |
|
4348 |
-
#: lib/rules_update.php:
|
4349 |
-
msgid "
|
4350 |
msgstr ""
|
4351 |
|
4352 |
-
#: lib/rules_update.php:
|
4353 |
-
msgid "Updates
|
4354 |
msgstr ""
|
4355 |
|
4356 |
-
#: lib/rules_update.php:
|
4357 |
-
msgid "
|
4358 |
msgstr ""
|
4359 |
|
4360 |
-
#: lib/rules_update.php:
|
4361 |
-
msgid "Log
|
4362 |
msgstr ""
|
4363 |
|
4364 |
-
#: lib/rules_update.php:
|
4365 |
msgid "Error: Wrong rules format."
|
4366 |
msgstr ""
|
4367 |
|
4368 |
-
#: lib/rules_update.php:
|
4369 |
msgid "Error: Unable to unserialize the new rules."
|
4370 |
msgstr ""
|
4371 |
|
4372 |
-
#: lib/rules_update.php:
|
4373 |
msgid "Error: Unserialized rules seem corrupted."
|
4374 |
msgstr ""
|
4375 |
|
4376 |
-
#: lib/rules_update.php:
|
4377 |
#, php-format
|
4378 |
msgid "Security rules updated to version %s."
|
4379 |
msgstr ""
|
4380 |
|
4381 |
-
#: lib/rules_update.php:
|
4382 |
msgid ""
|
4383 |
"Error: Your version of NinjaFirewall is too old and is not compatible with "
|
4384 |
"those rules. Please upgrade it."
|
4385 |
msgstr ""
|
4386 |
|
4387 |
-
#: lib/rules_update.php:
|
4388 |
msgid "Error: Unable to retrieve the new rules version."
|
4389 |
msgstr ""
|
4390 |
|
4391 |
-
#: lib/rules_update.php:
|
4392 |
#, php-format
|
4393 |
msgid "Error: Server returned a %s HTTP error code (#1)."
|
4394 |
msgstr ""
|
4395 |
|
4396 |
-
#: lib/rules_update.php:
|
4397 |
msgid "Error: Unable to connect to the remote server"
|
4398 |
msgstr ""
|
4399 |
|
4400 |
-
#: lib/rules_update.php:
|
4401 |
#, php-format
|
4402 |
msgid "Error: The new rules versions do not match (%s != %s)."
|
4403 |
msgstr ""
|
4404 |
|
4405 |
-
#: lib/rules_update.php:
|
4406 |
#, php-format
|
4407 |
msgid ""
|
4408 |
"Error: The new rules %s digital signature is not correct. Aborting update, "
|
4409 |
"rules may have been tampered with."
|
4410 |
msgstr ""
|
4411 |
|
4412 |
-
#: lib/rules_update.php:
|
4413 |
#, php-format
|
4414 |
msgid "Error: Server returned a %s HTTP error code (#2)."
|
4415 |
msgstr ""
|
4416 |
|
4417 |
-
#: lib/rules_update.php:
|
4418 |
msgid "[NinjaFirewall] Security rules update"
|
4419 |
msgstr ""
|
4420 |
|
4421 |
-
#: lib/rules_update.php:
|
4422 |
msgid "NinjaFirewall security rules have been updated:"
|
4423 |
msgstr ""
|
4424 |
|
4425 |
-
#: lib/rules_update.php:
|
4426 |
msgid "Rules version:"
|
4427 |
msgstr ""
|
4428 |
|
4429 |
-
#: lib/rules_update.php:
|
4430 |
msgid ""
|
4431 |
"This notification can be turned off from NinjaFirewall \"Rules Update\" page."
|
4432 |
msgstr ""
|
4433 |
|
4434 |
-
#: lib/statistics.php:27 ninjafirewall.php:
|
4435 |
msgid "Statistics"
|
4436 |
msgstr ""
|
4437 |
|
4438 |
-
#: lib/statistics.php:
|
4439 |
msgid "You do not have any stats for the selected month yet."
|
4440 |
msgstr ""
|
4441 |
|
4442 |
-
#: lib/statistics.php:
|
4443 |
-
msgid "
|
|
|
|
|
|
|
|
|
4444 |
msgstr ""
|
4445 |
|
4446 |
#: lib/statistics.php:121
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4447 |
msgid "High"
|
4448 |
msgstr ""
|
4449 |
|
4450 |
-
#: lib/statistics.php:
|
4451 |
msgid "Medium"
|
4452 |
msgstr ""
|
4453 |
|
4454 |
-
#: lib/statistics.php:
|
4455 |
-
msgid "
|
4456 |
msgstr ""
|
4457 |
|
4458 |
-
#: lib/
|
4459 |
-
msgid "
|
4460 |
msgstr ""
|
4461 |
|
4462 |
-
#: lib/
|
4463 |
-
msgid "
|
|
|
|
|
|
|
|
|
4464 |
msgstr ""
|
4465 |
|
4466 |
-
#: lib/
|
4467 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4468 |
msgstr ""
|
4469 |
|
4470 |
-
#: lib/utils.php:
|
4471 |
msgid "Blocked user account creation"
|
4472 |
msgstr ""
|
4473 |
|
4474 |
-
#: lib/utils.php:
|
4475 |
msgid "NinjaFirewall has blocked an attempt to create a user account:"
|
4476 |
msgstr ""
|
4477 |
|
4478 |
-
#: lib/utils.php:
|
4479 |
msgid "Username:"
|
4480 |
msgstr ""
|
4481 |
|
4482 |
-
#: lib/utils.php:
|
4483 |
msgid "User IP:"
|
4484 |
msgstr ""
|
4485 |
|
4486 |
-
#: lib/utils.php:
|
4487 |
msgid "Date:"
|
4488 |
msgstr ""
|
4489 |
|
4490 |
-
#: lib/utils.php:
|
4491 |
msgid "A PHP backtrace has been attached to this message for your convenience."
|
4492 |
msgstr ""
|
4493 |
|
4494 |
-
#: lib/utils.php:
|
4495 |
-
#: lib/utils.php:
|
4496 |
msgid "You are not allowed to perform this task."
|
4497 |
msgstr ""
|
4498 |
|
4499 |
-
#: lib/utils.php:
|
4500 |
msgid "NinjaFirewall error"
|
4501 |
msgstr ""
|
4502 |
|
4503 |
-
#: lib/utils.php:
|
4504 |
#, php-format
|
4505 |
msgid ""
|
4506 |
"%s directory cannot be created. Please review your installation and ensure "
|
4507 |
"that %s is writable."
|
4508 |
msgstr ""
|
4509 |
|
4510 |
-
#: lib/utils.php:
|
4511 |
#, php-format
|
4512 |
msgid ""
|
4513 |
"%s directory is read-only. Please review your installation and ensure that "
|
4514 |
"%s is writable."
|
4515 |
msgstr ""
|
4516 |
|
4517 |
-
#: lib/utils.php:
|
|
|
|
|
|
|
|
|
4518 |
msgid "NinjaFirewall fatal error:"
|
4519 |
msgstr ""
|
4520 |
|
4521 |
-
#: lib/utils.php:
|
4522 |
msgid "Review your installation, your site is not protected."
|
4523 |
msgstr ""
|
4524 |
|
4525 |
-
#: lib/utils.php:
|
4526 |
msgid "Alert: WordPress console login"
|
4527 |
msgstr ""
|
4528 |
|
4529 |
-
#: lib/utils.php:
|
4530 |
msgid "-Blog:"
|
4531 |
msgstr ""
|
4532 |
|
4533 |
-
#: lib/utils.php:
|
4534 |
msgid "Someone just logged in to your WordPress admin console:"
|
4535 |
msgstr ""
|
4536 |
|
4537 |
-
#: lib/utils.php:
|
4538 |
msgid "-User:"
|
4539 |
msgstr ""
|
4540 |
|
4541 |
-
#: lib/utils.php:
|
4542 |
msgid "-IP:"
|
4543 |
msgstr ""
|
4544 |
|
4545 |
-
#: lib/utils.php:
|
4546 |
msgid "-Date:"
|
4547 |
msgstr ""
|
4548 |
|
4549 |
-
#: lib/utils.php:
|
4550 |
msgid "Support forum"
|
4551 |
msgstr ""
|
4552 |
|
4553 |
-
#: lib/utils.php:
|
4554 |
msgid "Forbidden access"
|
4555 |
msgstr ""
|
4556 |
|
4557 |
-
#: lib/utils.php:
|
4558 |
#, php-format
|
4559 |
msgid ""
|
4560 |
"<strong>ERROR</strong>: Invalid username or password.<br /><a href=\"%s"
|
4561 |
"\">Lost your password</a>?"
|
4562 |
msgstr ""
|
4563 |
|
4564 |
-
#: lib/utils.php:
|
4565 |
msgid "Plugin"
|
4566 |
msgstr ""
|
4567 |
|
4568 |
-
#: lib/utils.php:
|
4569 |
msgid "uploaded"
|
4570 |
msgstr ""
|
4571 |
|
4572 |
-
#: lib/utils.php:
|
4573 |
msgid "installed"
|
4574 |
msgstr ""
|
4575 |
|
4576 |
-
#: lib/utils.php:
|
4577 |
msgid "activated"
|
4578 |
msgstr ""
|
4579 |
|
4580 |
-
#: lib/utils.php:
|
4581 |
msgid "updated"
|
4582 |
msgstr ""
|
4583 |
|
4584 |
-
#: lib/utils.php:
|
4585 |
msgid "deactivated"
|
4586 |
msgstr ""
|
4587 |
|
4588 |
-
#: lib/utils.php:
|
4589 |
msgid "deleted"
|
4590 |
msgstr ""
|
4591 |
|
4592 |
-
#: lib/utils.php:
|
4593 |
msgid "Name"
|
4594 |
msgstr ""
|
4595 |
|
4596 |
-
#: lib/utils.php:
|
4597 |
msgid "Theme"
|
4598 |
msgstr ""
|
4599 |
|
4600 |
-
#: lib/utils.php:
|
4601 |
msgid "upgraded"
|
4602 |
msgstr ""
|
4603 |
|
4604 |
-
#: lib/utils.php:
|
4605 |
msgid "[NinjaFirewall] Alert:"
|
4606 |
msgstr ""
|
4607 |
|
4608 |
-
#: lib/utils.php:
|
4609 |
msgid "NinjaFirewall has detected the following activity on your account:"
|
4610 |
msgstr ""
|
4611 |
|
4612 |
-
#: lib/utils.php:
|
4613 |
msgid "[NinjaFirewall] Alert: Database changes detected"
|
4614 |
msgstr ""
|
4615 |
|
4616 |
-
#: lib/utils.php:
|
4617 |
msgid ""
|
4618 |
"NinjaFirewall has detected that one or more administrator accounts were "
|
4619 |
"modified in the database:"
|
4620 |
msgstr ""
|
4621 |
|
4622 |
-
#: lib/utils.php:
|
4623 |
#, php-format
|
4624 |
msgid "Total administrators : %s"
|
4625 |
msgstr ""
|
4626 |
|
4627 |
-
#: lib/utils.php:
|
4628 |
msgid ""
|
4629 |
"If you cannot see any modifications in the above fields, it is possible that "
|
4630 |
"the administrator password was changed."
|
4631 |
msgstr ""
|
4632 |
|
4633 |
-
#: lib/utils.php:
|
4634 |
msgid "Blocked privilege escalation attempt"
|
4635 |
msgstr ""
|
4636 |
|
4637 |
-
#: lib/utils.php:
|
4638 |
-
msgid "
|
|
|
|
|
4639 |
msgstr ""
|
4640 |
|
4641 |
-
#: lib/utils.php:
|
4642 |
msgid ""
|
4643 |
"NinjaFirewall brute-force protection is enabled and you are temporarily "
|
4644 |
"whitelisted."
|
4645 |
msgstr ""
|
4646 |
|
4647 |
-
#: lib/utils.php:
|
4648 |
#, php-format
|
4649 |
msgid ""
|
4650 |
"Hey, it seems that you've been using NinjaFirewall for some time. If you "
|
@@ -4653,252 +4185,298 @@ msgid ""
|
|
4653 |
"rate it. Thank you!"
|
4654 |
msgstr ""
|
4655 |
|
4656 |
-
#: lib/utils.php:
|
4657 |
msgid ""
|
4658 |
"The attempt was blocked and the option was reversed to its original value."
|
4659 |
msgstr ""
|
4660 |
|
4661 |
-
#: lib/utils.php:
|
4662 |
msgid "Attempt to modify WordPress settings"
|
4663 |
msgstr ""
|
4664 |
|
4665 |
-
#: lib/utils.php:
|
4666 |
msgid ""
|
4667 |
"NinjaFirewall has blocked an attempt to modify some important WordPress "
|
4668 |
"settings by a user that does not have administrative privileges:"
|
4669 |
msgstr ""
|
4670 |
|
4671 |
-
#: lib/utils.php:
|
4672 |
#, php-format
|
4673 |
msgid "Option: %s"
|
4674 |
msgstr ""
|
4675 |
|
4676 |
-
#: lib/utils.php:
|
4677 |
#, php-format
|
4678 |
msgid "Original value: %s"
|
4679 |
msgstr ""
|
4680 |
|
4681 |
-
#: lib/utils.php:
|
4682 |
#, php-format
|
4683 |
msgid "Modified value: %s"
|
4684 |
msgstr ""
|
4685 |
|
4686 |
-
#: lib/utils.php:
|
4687 |
#, php-format
|
4688 |
msgid "Action taken: %s"
|
4689 |
msgstr ""
|
4690 |
|
4691 |
-
#: lib/utils.php:
|
4692 |
msgid "Code injection attempt in WordPress options table"
|
4693 |
msgstr ""
|
4694 |
|
4695 |
-
#: lib/utils.php:
|
4696 |
msgid ""
|
4697 |
"NinjaFirewall has blocked an attempt to inject code in the WordPress options "
|
4698 |
"table by a user that does not have administrative privileges:"
|
4699 |
msgstr ""
|
4700 |
|
4701 |
-
#: lib/utils.php:
|
4702 |
#, php-format
|
4703 |
msgid "Code: %s"
|
4704 |
msgstr ""
|
4705 |
|
4706 |
-
#: lib/utils.php:
|
4707 |
msgid ""
|
4708 |
"This protection (and notification) can be turned off from NinjaFirewall "
|
4709 |
"\"Firewall Policies\" page."
|
4710 |
msgstr ""
|
4711 |
|
4712 |
-
#: lib/
|
4713 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4714 |
msgstr ""
|
4715 |
|
4716 |
-
|
4717 |
-
|
4718 |
msgid ""
|
4719 |
-
"
|
4720 |
-
"
|
4721 |
-
"most
|
|
|
4722 |
msgstr ""
|
4723 |
|
4724 |
-
#: lib/wpplus.php:
|
|
|
|
|
|
|
|
|
4725 |
msgid "Access Control"
|
4726 |
msgstr ""
|
4727 |
|
4728 |
-
#: lib/wpplus.php:
|
4729 |
msgid ""
|
4730 |
-
"
|
4731 |
-
"
|
4732 |
-
"
|
4733 |
-
"
|
4734 |
-
"
|
4735 |
-
"
|
4736 |
-
"
|
4737 |
msgstr ""
|
4738 |
|
4739 |
-
#: lib/wpplus.php:
|
4740 |
msgid ""
|
4741 |
"Its main configuration allows you to whitelist WordPress users depending on "
|
4742 |
"their roles, to select the source IP (useful if your site is using a CDN or "
|
4743 |
"behind a reverse-proxy/load balancer), and the HTTP methods all directives "
|
4744 |
-
"should apply to
|
4745 |
msgstr ""
|
4746 |
|
4747 |
-
#: lib/wpplus.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4748 |
msgid ""
|
4749 |
-
"
|
4750 |
-
"
|
4751 |
-
"
|
4752 |
-
"
|
4753 |
-
"
|
|
|
|
|
|
|
|
|
4754 |
msgstr ""
|
4755 |
|
4756 |
-
#: lib/wpplus.php:
|
4757 |
msgid ""
|
4758 |
-
"
|
4759 |
-
"
|
4760 |
-
"
|
4761 |
msgstr ""
|
4762 |
|
4763 |
-
#: lib/wpplus.php:
|
4764 |
msgid ""
|
4765 |
-
"
|
4766 |
"or even small HTTP attacks with its <strong>Rate-Limiting</strong> feature."
|
4767 |
msgstr ""
|
4768 |
|
4769 |
-
#: lib/wpplus.php:
|
4770 |
msgid ""
|
4771 |
"Because it can block attackers <strong>before WordPress and all its plugins "
|
4772 |
-
"are loaded</strong> and can handle
|
4773 |
"NinjaFirewall will save precious bandwidth and reduce your server load."
|
4774 |
msgstr ""
|
4775 |
|
4776 |
-
#: lib/wpplus.php:
|
|
|
|
|
|
|
|
|
4777 |
msgid ""
|
4778 |
-
"
|
4779 |
-
"
|
|
|
|
|
|
|
|
|
4780 |
msgstr ""
|
4781 |
|
4782 |
-
#: lib/wpplus.php:
|
4783 |
msgid ""
|
4784 |
-
"
|
4785 |
-
"
|
4786 |
msgstr ""
|
4787 |
|
4788 |
-
#: lib/wpplus.php:
|
|
|
|
|
|
|
|
|
4789 |
msgid ""
|
4790 |
-
"
|
4791 |
-
"
|
4792 |
msgstr ""
|
4793 |
|
4794 |
-
#: lib/wpplus.php:
|
4795 |
msgid ""
|
4796 |
-
"
|
4797 |
-
"
|
4798 |
-
"
|
4799 |
-
"
|
4800 |
-
"useful to detect hacking or malware patterns injected into your HTML page "
|
4801 |
-
"(text strings, spam links, malicious JavaScript code), hackers shell script, "
|
4802 |
-
"redirections and even errors (PHP/MySQL errors). Some suggested keywords as "
|
4803 |
-
"well as a default list are included."
|
4804 |
msgstr ""
|
4805 |
|
4806 |
-
#: lib/wpplus.php:
|
4807 |
msgid ""
|
4808 |
"In the case of a positive detection, NinjaFirewall will not block the "
|
4809 |
"response body but will send you an alert by email. It can even attach the "
|
4810 |
-
"whole HTML source of the page for your review
|
4811 |
msgstr ""
|
4812 |
|
4813 |
-
#: lib/wpplus.php:
|
4814 |
msgid "Antispam"
|
4815 |
msgstr ""
|
4816 |
|
4817 |
-
#: lib/wpplus.php:
|
4818 |
msgid ""
|
4819 |
-
"
|
4820 |
-
"
|
4821 |
-
"
|
4822 |
-
"
|
4823 |
-
"
|
4824 |
msgstr ""
|
4825 |
|
4826 |
-
#: lib/wpplus.php:
|
4827 |
msgid ""
|
4828 |
"NinjaFirewall antispam feature works only with WordPress built-in comment "
|
4829 |
"and registration forms."
|
4830 |
msgstr ""
|
4831 |
|
4832 |
-
#: lib/wpplus.php:
|
4833 |
#, php-format
|
4834 |
msgid ""
|
4835 |
-
"
|
4836 |
-
"
|
4837 |
-
"
|
4838 |
-
"
|
4839 |
-
"analyse your log data."
|
4840 |
msgstr ""
|
4841 |
|
4842 |
-
#: lib/wpplus.php:
|
4843 |
msgid ""
|
4844 |
"There is no limit to the number of websites you can connect to, and they can "
|
4845 |
"be running any edition of NinjaFirewall: WP, <font color=\"#21759B\">WP+</"
|
4846 |
"font>, Pro or <font color=\"red\">Pro+</font>."
|
4847 |
msgstr ""
|
4848 |
|
4849 |
-
#: lib/wpplus.php:
|
4850 |
msgid "Improved features"
|
4851 |
msgstr ""
|
4852 |
|
4853 |
-
#: lib/wpplus.php:
|
4854 |
-
msgid "File uploads
|
4855 |
msgstr ""
|
4856 |
|
4857 |
-
#: lib/wpplus.php:
|
4858 |
msgid ""
|
4859 |
-
"
|
4860 |
-
"
|
4861 |
-
"
|
4862 |
-
"
|
4863 |
-
"
|
4864 |
-
"uploaded file too, without having to modify your PHP configuration:"
|
4865 |
-
msgstr ""
|
4866 |
-
|
4867 |
-
#: lib/wpplus.php:114
|
4868 |
-
msgid "Firewall Log:"
|
4869 |
msgstr ""
|
4870 |
|
4871 |
-
#: lib/wpplus.php:
|
4872 |
msgid ""
|
4873 |
"The log menu has been revamped too. You can disable the firewall log, delete "
|
4874 |
"the current one, enable its rotation based on the size of the file and, if "
|
4875 |
"any, view each rotated log separately. Quick filtering options are easily "
|
4876 |
"accessible from checkboxes and the log can be exported as a TSV (tab-"
|
4877 |
-
"separated values) text file."
|
|
|
4878 |
msgstr ""
|
4879 |
|
4880 |
-
#: lib/wpplus.php:
|
4881 |
msgid ""
|
4882 |
"It is also possible to redirect all incidents and events to the Syslog "
|
4883 |
"server:"
|
4884 |
msgstr ""
|
4885 |
|
4886 |
-
#: lib/wpplus.php:
|
4887 |
-
msgid "
|
|
|
|
|
4888 |
msgstr ""
|
4889 |
|
4890 |
-
#: lib/wpplus.php:
|
4891 |
msgid ""
|
4892 |
-
"
|
4893 |
-
"
|
4894 |
-
"free WP Edition."
|
4895 |
msgstr ""
|
4896 |
|
4897 |
-
#: lib/wpplus.php:
|
4898 |
-
msgid "Shared Memory use
|
4899 |
msgstr ""
|
4900 |
|
4901 |
-
#: lib/wpplus.php:
|
4902 |
#, php-format
|
4903 |
msgid ""
|
4904 |
"Although NinjaFirewall is already <a href=\"%s\">much faster than other "
|
@@ -4907,7 +4485,7 @@ msgid ""
|
|
4907 |
"order to speed things up even more."
|
4908 |
msgstr ""
|
4909 |
|
4910 |
-
#: lib/wpplus.php:
|
4911 |
msgid ""
|
4912 |
"This allows easier and faster inter-process communication between the "
|
4913 |
"firewall and the plugin part of NinjaFirewall and, because its data and "
|
@@ -4915,28 +4493,22 @@ msgid ""
|
|
4915 |
"need to connect to the database any longer."
|
4916 |
msgstr ""
|
4917 |
|
4918 |
-
#: lib/wpplus.php:
|
4919 |
msgid ""
|
4920 |
"This dramatically increases the processing speed (there is nothing faster "
|
4921 |
"than RAM), prevents blocking I/O and MySQL slow queries. On a very busy "
|
4922 |
"server like a multi-site network, the firewall processing speed will "
|
4923 |
"increase from 25% to 30%. It can be enabled from the \"Firewall Options\" "
|
4924 |
-
"menu
|
4925 |
-
msgstr ""
|
4926 |
-
|
4927 |
-
#: lib/wpplus.php:135
|
4928 |
-
msgid ""
|
4929 |
-
"This feature requires that PHP was compiled with the <code>--enable-shmop</"
|
4930 |
-
"code> parameter."
|
4931 |
msgstr ""
|
4932 |
|
4933 |
-
#: lib/wpplus.php:
|
4934 |
msgid ""
|
4935 |
"Learn more</a> about the <font color=\"#21759B\">WP+</font> Edition unique "
|
4936 |
"features."
|
4937 |
msgstr ""
|
4938 |
|
4939 |
-
#: lib/wpplus.php:
|
4940 |
msgid "Compare</a> the WP and <font color=\"#21759B\">WP+</font> Editions."
|
4941 |
msgstr ""
|
4942 |
|
@@ -5021,129 +4593,235 @@ msgstr ""
|
|
5021 |
msgid "The PHP msqli extension is missing or not loaded."
|
5022 |
msgstr ""
|
5023 |
|
5024 |
-
#: ninjafirewall.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5025 |
msgid ""
|
5026 |
"You do not have \"unfiltered_html\" capability. Please enable it in order to "
|
5027 |
"run NinjaFirewall (or make sure you do not have \"DISALLOW_UNFILTERED_HTML\" "
|
5028 |
"in your wp-config.php script)."
|
5029 |
msgstr ""
|
5030 |
|
5031 |
-
#: ninjafirewall.php:
|
5032 |
#, php-format
|
5033 |
msgid ""
|
5034 |
"NinjaFirewall requires WordPress 3.3 or greater but your current version is "
|
5035 |
"%s."
|
5036 |
msgstr ""
|
5037 |
|
5038 |
-
#: ninjafirewall.php:
|
5039 |
#, php-format
|
5040 |
msgid ""
|
5041 |
"NinjaFirewall requires PHP 5.3 or greater but your current version is %s."
|
5042 |
msgstr ""
|
5043 |
|
5044 |
-
#: ninjafirewall.php:
|
5045 |
#, php-format
|
5046 |
msgid "NinjaFirewall requires the PHP %s extension."
|
5047 |
msgstr ""
|
5048 |
|
5049 |
-
#: ninjafirewall.php:
|
5050 |
msgid ""
|
5051 |
"You have SAFE_MODE enabled. Please disable it, it is deprecated as of PHP "
|
5052 |
"5.3.0 (see http://php.net/safe-mode)."
|
5053 |
msgstr ""
|
5054 |
|
5055 |
-
#: ninjafirewall.php:
|
5056 |
msgid "You are not allowed to activate NinjaFirewall."
|
5057 |
msgstr ""
|
5058 |
|
5059 |
-
#: ninjafirewall.php:
|
5060 |
msgid "NinjaFirewall is not compatible with Microsoft Windows."
|
5061 |
msgstr ""
|
5062 |
|
5063 |
-
#: ninjafirewall.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5064 |
msgid "NinjaFirewall: Overview"
|
5065 |
msgstr ""
|
5066 |
|
5067 |
-
#: ninjafirewall.php:
|
5068 |
msgid "NinjaFirewall: Statistics"
|
5069 |
msgstr ""
|
5070 |
|
5071 |
-
#: ninjafirewall.php:
|
5072 |
msgid "NinjaFirewall: Firewall Options"
|
5073 |
msgstr ""
|
5074 |
|
5075 |
-
#: ninjafirewall.php:
|
5076 |
msgid "NinjaFirewall: Firewall Policies"
|
5077 |
msgstr ""
|
5078 |
|
5079 |
-
#: ninjafirewall.php:
|
5080 |
msgid "NinjaFirewall: File Guard"
|
5081 |
msgstr ""
|
5082 |
|
5083 |
-
#: ninjafirewall.php:
|
5084 |
msgid "NinjaFirewall: File Check"
|
5085 |
msgstr ""
|
5086 |
|
5087 |
-
#: ninjafirewall.php:
|
5088 |
msgid "NinjaFirewall: Anti-Malware"
|
5089 |
msgstr ""
|
5090 |
|
5091 |
-
#: ninjafirewall.php:
|
5092 |
msgid "NinjaFirewall: Network"
|
5093 |
msgstr ""
|
5094 |
|
5095 |
-
#: ninjafirewall.php:
|
5096 |
msgid "NinjaFirewall: Event Notifications"
|
5097 |
msgstr ""
|
5098 |
|
5099 |
-
#: ninjafirewall.php:
|
5100 |
msgid "NinjaFirewall: Log-in Protection"
|
5101 |
msgstr ""
|
5102 |
|
5103 |
-
#: ninjafirewall.php:
|
5104 |
msgid "NinjaFirewall: Firewall Log"
|
5105 |
msgstr ""
|
5106 |
|
5107 |
-
#: ninjafirewall.php:
|
5108 |
msgid "NinjaFirewall: Live Log"
|
5109 |
msgstr ""
|
5110 |
|
5111 |
-
#: ninjafirewall.php:
|
5112 |
msgid "NinjaFirewall: Rules Editor"
|
5113 |
msgstr ""
|
5114 |
|
5115 |
-
#: ninjafirewall.php:
|
5116 |
msgid "NinjaFirewall: Rules Update"
|
5117 |
msgstr ""
|
5118 |
|
5119 |
-
#: ninjafirewall.php:
|
5120 |
msgid "NinjaFirewall: About"
|
5121 |
msgstr ""
|
5122 |
|
5123 |
-
#: ninjafirewall.php:
|
5124 |
msgid "About..."
|
5125 |
msgstr ""
|
5126 |
|
5127 |
-
#: ninjafirewall.php:
|
5128 |
msgid "NinjaFirewall Settings"
|
5129 |
msgstr ""
|
5130 |
|
5131 |
-
#: ninjafirewall.php:
|
5132 |
msgid "NinjaFirewall is enabled"
|
5133 |
msgstr ""
|
5134 |
|
5135 |
-
#: ninjafirewall.php:
|
5136 |
msgid "Access Restricted"
|
5137 |
msgstr ""
|
5138 |
|
5139 |
-
#: ninjafirewall.php:
|
5140 |
msgid "Settings"
|
5141 |
msgstr ""
|
5142 |
|
5143 |
-
#: ninjafirewall.php:
|
5144 |
msgid "Upgrade to Premium"
|
5145 |
msgstr ""
|
5146 |
|
5147 |
-
#: ninjafirewall.php:
|
5148 |
msgid "Rate it!"
|
5149 |
msgstr ""
|
2 |
msgid ""
|
3 |
msgstr ""
|
4 |
"Project-Id-Version: Stable (latest release)\n"
|
5 |
+
"POT-Creation-Date: 2019-06-24 18:07+0700\n"
|
6 |
"PO-Revision-Date: 2018-04-05 22:52+0700\n"
|
7 |
"Last-Translator: NinTechNet <contact@nintechnet.com>\n"
|
8 |
"Language-Team: \n"
|
18 |
"X-Poedit-SearchPath-0: .\n"
|
19 |
"X-Poedit-SearchPathExcluded-0: /languages\n"
|
20 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
#: lib/about.php:31
|
22 |
msgid "Error : cannot find changelog :("
|
23 |
msgstr ""
|
24 |
|
25 |
+
#: lib/about.php:36
|
26 |
msgid "About"
|
27 |
msgstr ""
|
28 |
|
29 |
+
#: lib/about.php:56
|
30 |
msgid "A powerful antivirus<br />scanner for WordPress."
|
31 |
msgstr ""
|
32 |
|
33 |
+
#: lib/about.php:58
|
34 |
msgid "Free Download"
|
35 |
msgstr ""
|
36 |
|
37 |
+
#: lib/about.php:62
|
38 |
msgid "Website Monitoring<br />for just $4.99/month."
|
39 |
msgstr ""
|
40 |
|
41 |
+
#: lib/about.php:64
|
42 |
msgid "7-Day Free Trial"
|
43 |
msgstr ""
|
44 |
|
45 |
+
#: lib/about.php:68
|
46 |
msgid "Malware removal<br />and hack recovery."
|
47 |
msgstr ""
|
48 |
|
49 |
+
#: lib/about.php:70
|
50 |
msgid "Clean Your Site!"
|
51 |
msgstr ""
|
52 |
|
53 |
+
#: lib/about.php:82
|
54 |
msgid "Changelog"
|
55 |
msgstr ""
|
56 |
|
57 |
+
#: lib/about.php:82
|
58 |
msgid "Spread the word!"
|
59 |
msgstr ""
|
60 |
|
61 |
+
#: lib/about.php:82
|
62 |
msgid "Referral Program"
|
63 |
msgstr ""
|
64 |
|
65 |
+
#: lib/about.php:82
|
66 |
msgid "System Info"
|
67 |
msgstr ""
|
68 |
|
69 |
+
#: lib/about.php:82 lib/help.php:521
|
70 |
msgid "GDPR Compliance"
|
71 |
msgstr ""
|
72 |
|
73 |
+
#: lib/about.php:88 lib/help.php:56
|
74 |
+
msgid ""
|
75 |
+
"Stay informed about the latest vulnerabilities in WordPress plugins and "
|
76 |
+
"themes."
|
77 |
+
msgstr ""
|
78 |
+
|
79 |
+
#: lib/about.php:89
|
80 |
+
msgid "Rate it on WordPress.org!"
|
81 |
+
msgstr ""
|
82 |
+
|
83 |
+
#: lib/about.php:113
|
84 |
msgid "PHP version"
|
85 |
msgstr ""
|
86 |
|
87 |
+
#: lib/about.php:122
|
88 |
msgid "HTTP server"
|
89 |
msgstr ""
|
90 |
|
91 |
+
#: lib/about.php:125
|
92 |
msgid "Operating System"
|
93 |
msgstr ""
|
94 |
|
95 |
+
#: lib/about.php:128
|
96 |
msgid "Load Average"
|
97 |
msgstr ""
|
98 |
|
99 |
+
#: lib/about.php:146
|
100 |
msgid "RAM"
|
101 |
msgstr ""
|
102 |
|
103 |
+
#: lib/about.php:146
|
104 |
msgid "MB free"
|
105 |
msgstr ""
|
106 |
|
107 |
+
#: lib/about.php:146
|
108 |
msgid "MB total"
|
109 |
msgstr ""
|
110 |
|
111 |
+
#: lib/about.php:154
|
112 |
msgid "Processor"
|
113 |
msgid_plural "Processors"
|
114 |
msgstr[0] ""
|
115 |
msgstr[1] ""
|
116 |
|
117 |
+
#: lib/about.php:154
|
118 |
msgid "CPU core:"
|
119 |
msgid_plural "CPU cores:"
|
120 |
msgstr[0] ""
|
121 |
msgstr[1] ""
|
122 |
|
123 |
+
#: lib/about.php:155
|
124 |
msgid "CPU model"
|
125 |
msgstr ""
|
126 |
|
127 |
+
#: lib/about.php:167
|
128 |
#, php-format
|
129 |
msgid ""
|
130 |
"By joining our NinjaFirewall Referral Program you can earn up to %s for "
|
131 |
"every payment made by a user who signs up using your personal referral link."
|
132 |
msgstr ""
|
133 |
|
134 |
+
#: lib/about.php:168
|
135 |
#, php-format
|
136 |
msgid ""
|
137 |
"For more info and subscription, please check our <a href=\"%s\">Referral "
|
138 |
"Program page</a>."
|
139 |
msgstr ""
|
140 |
|
141 |
+
#: lib/about.php:177 lib/help.php:523
|
142 |
+
msgid ""
|
143 |
+
"Your website can run NinjaFirewall and be compliant with the General Data "
|
144 |
+
"Protection Regulation (GDPR). For more info, please visit our blog:"
|
145 |
+
msgstr ""
|
146 |
+
|
147 |
+
#: lib/anti_malware.php:24 ninjafirewall.php:747
|
148 |
msgid "Anti-Malware"
|
149 |
msgstr ""
|
150 |
|
177 |
msgid "NinjaFirewall Statistics"
|
178 |
msgstr ""
|
179 |
|
180 |
+
#: lib/dashboard_widget.php:54 lib/statistics.php:105 lib/statistics.php:138
|
181 |
msgid "Blocked threats"
|
182 |
msgstr ""
|
183 |
|
184 |
+
#: lib/dashboard_widget.php:58 lib/statistics.php:109
|
185 |
msgid "Threats level"
|
186 |
msgstr ""
|
187 |
|
197 |
msgid "Medium:"
|
198 |
msgstr ""
|
199 |
|
200 |
+
#: lib/dashboard_widget.php:86
|
201 |
+
msgid "View statistics"
|
202 |
+
msgstr ""
|
203 |
+
|
204 |
#: lib/dashboard_widget.php:86
|
205 |
msgid "View firewall log"
|
206 |
msgstr ""
|
207 |
|
208 |
+
#: lib/event_notifications.php:34 lib/help.php:413 ninjafirewall.php:755
|
209 |
msgid "Event Notifications"
|
210 |
msgstr ""
|
211 |
|
212 |
+
#: lib/event_notifications.php:42 lib/file_check.php:113 lib/file_guard.php:47
|
213 |
+
#: lib/firewall_log.php:58 lib/firewall_options.php:42
|
214 |
+
#: lib/firewall_policies.php:71 lib/live_log.php:82 lib/login_protection.php:30
|
215 |
+
#: lib/network.php:52 lib/rules_update.php:104
|
216 |
msgid "Your changes have been saved."
|
217 |
msgstr ""
|
218 |
|
219 |
+
#: lib/event_notifications.php:52
|
220 |
msgid "WordPress admin dashboard"
|
221 |
msgstr ""
|
222 |
|
223 |
+
#: lib/event_notifications.php:55 lib/event_notifications.php:124
|
224 |
msgid "Send me an alert whenever"
|
225 |
msgstr ""
|
226 |
|
227 |
+
#: lib/event_notifications.php:57
|
228 |
msgid "An administrator logs in (default)"
|
229 |
msgstr ""
|
230 |
|
231 |
+
#: lib/event_notifications.php:58
|
232 |
msgid "Someone - user, admin, editor, etc - logs in"
|
233 |
msgstr ""
|
234 |
|
235 |
+
#: lib/event_notifications.php:59
|
236 |
msgid "No, thanks (not recommended)"
|
237 |
msgstr ""
|
238 |
|
239 |
+
#: lib/event_notifications.php:66
|
240 |
msgid "Plugins"
|
241 |
msgstr ""
|
242 |
|
243 |
+
#: lib/event_notifications.php:69 lib/event_notifications.php:86
|
244 |
+
#: lib/event_notifications.php:101
|
245 |
msgid "Send me an alert whenever someone"
|
246 |
msgstr ""
|
247 |
|
248 |
+
#: lib/event_notifications.php:71
|
249 |
msgid "Uploads a plugin (default)"
|
250 |
msgstr ""
|
251 |
|
252 |
+
#: lib/event_notifications.php:72
|
253 |
msgid "Installs a plugin (default)"
|
254 |
msgstr ""
|
255 |
|
256 |
+
#: lib/event_notifications.php:73
|
257 |
msgid "Activates a plugin"
|
258 |
msgstr ""
|
259 |
|
260 |
+
#: lib/event_notifications.php:74
|
261 |
msgid "Updates a plugin"
|
262 |
msgstr ""
|
263 |
|
264 |
+
#: lib/event_notifications.php:75
|
265 |
msgid "Deactivates a plugin (default)"
|
266 |
msgstr ""
|
267 |
|
268 |
+
#: lib/event_notifications.php:76
|
269 |
msgid "Deletes a plugin"
|
270 |
msgstr ""
|
271 |
|
272 |
+
#: lib/event_notifications.php:83
|
273 |
msgid "Themes"
|
274 |
msgstr ""
|
275 |
|
276 |
+
#: lib/event_notifications.php:88
|
277 |
msgid "Uploads a theme (default)"
|
278 |
msgstr ""
|
279 |
|
280 |
+
#: lib/event_notifications.php:89
|
281 |
msgid "Installs a theme (default)"
|
282 |
msgstr ""
|
283 |
|
284 |
+
#: lib/event_notifications.php:90
|
285 |
msgid "Activates a theme"
|
286 |
msgstr ""
|
287 |
|
288 |
+
#: lib/event_notifications.php:91
|
289 |
msgid "Deletes a theme"
|
290 |
msgstr ""
|
291 |
|
292 |
+
#: lib/event_notifications.php:98
|
293 |
msgid "Core"
|
294 |
msgstr ""
|
295 |
|
296 |
+
#: lib/event_notifications.php:103
|
297 |
msgid "Updates WordPress (default)"
|
298 |
msgstr ""
|
299 |
|
300 |
+
#: lib/event_notifications.php:121
|
301 |
msgid "Administrator account"
|
302 |
msgstr ""
|
303 |
|
304 |
+
#: lib/event_notifications.php:126
|
305 |
msgid ""
|
306 |
"An administrator account is created, modified or deleted in the database "
|
307 |
"(default)"
|
308 |
msgstr ""
|
309 |
|
310 |
+
#: lib/event_notifications.php:127
|
311 |
msgid "A user attempts to gain administrative privileges (default)"
|
312 |
msgstr ""
|
313 |
|
314 |
+
#: lib/event_notifications.php:134
|
315 |
msgid "Daily report"
|
316 |
msgstr ""
|
317 |
|
318 |
+
#: lib/event_notifications.php:137
|
319 |
msgid "Send me a daily activity report"
|
320 |
msgstr ""
|
321 |
|
322 |
+
#: lib/event_notifications.php:139 lib/event_notifications.php:151
|
323 |
+
#: lib/firewall_options.php:78 lib/firewall_options.php:113
|
324 |
+
#: lib/firewall_policies.php:25 lib/login_protection.php:309
|
325 |
+
#: lib/login_protection.php:324 lib/login_protection.php:345
|
326 |
+
#: lib/login_protection.php:352 lib/network.php:70
|
327 |
+
msgid "Yes"
|
|
|
|
|
|
|
|
|
|
|
328 |
msgstr ""
|
329 |
|
330 |
+
#: lib/event_notifications.php:139 lib/event_notifications.php:151
|
331 |
+
#: lib/firewall_options.php:78 lib/firewall_options.php:113
|
332 |
+
#: lib/firewall_policies.php:26 lib/login_protection.php:309
|
333 |
+
#: lib/login_protection.php:324 lib/login_protection.php:345
|
334 |
+
#: lib/login_protection.php:352 lib/network.php:70
|
335 |
+
msgid "No"
|
336 |
+
msgstr ""
|
337 |
+
|
338 |
+
#: lib/event_notifications.php:146
|
339 |
msgid "Log"
|
340 |
msgstr ""
|
341 |
|
342 |
+
#: lib/event_notifications.php:149
|
343 |
msgid "Write all events to the firewall log"
|
344 |
msgstr ""
|
345 |
|
346 |
+
#: lib/event_notifications.php:163
|
347 |
msgid "PHP backtrace"
|
348 |
msgstr ""
|
349 |
|
350 |
+
#: lib/event_notifications.php:166
|
351 |
msgid "Attach a PHP backtrace to important notifications"
|
352 |
msgstr ""
|
353 |
|
354 |
+
#: lib/event_notifications.php:169
|
355 |
msgid "Disable backtrace"
|
356 |
msgstr ""
|
357 |
|
358 |
+
#: lib/event_notifications.php:170
|
359 |
msgid "Low verbosity"
|
360 |
msgstr ""
|
361 |
|
362 |
+
#: lib/event_notifications.php:171
|
363 |
msgid "Medium verbosity (default)"
|
364 |
msgstr ""
|
365 |
|
366 |
+
#: lib/event_notifications.php:172
|
367 |
msgid "High verbosity"
|
368 |
msgstr ""
|
369 |
|
370 |
+
#: lib/event_notifications.php:174
|
371 |
#, php-format
|
372 |
msgid "<a href=\"%s\">Consult our blog</a> for more info."
|
373 |
msgstr ""
|
374 |
|
375 |
+
#: lib/event_notifications.php:184 lib/event_notifications.php:214
|
376 |
msgid "Contact email"
|
377 |
msgstr ""
|
378 |
|
379 |
+
#: lib/event_notifications.php:187 lib/event_notifications.php:217
|
380 |
msgid "Alerts should be sent to"
|
381 |
msgstr ""
|
382 |
|
383 |
+
#: lib/event_notifications.php:196 lib/event_notifications.php:222
|
384 |
msgid ""
|
385 |
"Multiple recipients must be comma-separated (e.g., <code>joe@example.org,"
|
386 |
"alice@example.org</code>)."
|
387 |
msgstr ""
|
388 |
|
389 |
+
#: lib/event_notifications.php:219
|
390 |
msgid "Only to me, the Super Admin"
|
391 |
msgstr ""
|
392 |
|
393 |
+
#: lib/event_notifications.php:219
|
394 |
msgid "default"
|
395 |
msgstr ""
|
396 |
|
397 |
+
#: lib/event_notifications.php:220
|
398 |
msgid "To the administrator of the site where originated the alert"
|
399 |
msgstr ""
|
400 |
|
401 |
+
#: lib/event_notifications.php:221
|
402 |
msgid "Other(s):"
|
403 |
msgstr ""
|
404 |
|
405 |
+
#: lib/event_notifications.php:233
|
406 |
msgid "Save Event Notifications"
|
407 |
msgstr ""
|
408 |
|
409 |
+
#: lib/event_notifications.php:461
|
410 |
msgid "[NinjaFirewall] Daily Activity Report"
|
411 |
msgstr ""
|
412 |
|
413 |
+
#: lib/event_notifications.php:471
|
414 |
#, php-format
|
415 |
msgid "Daily activity report for: %s"
|
416 |
msgstr ""
|
417 |
|
418 |
+
#: lib/event_notifications.php:472
|
419 |
msgid "Date Range Processed: Yesterday"
|
420 |
msgstr ""
|
421 |
|
422 |
+
#: lib/event_notifications.php:474
|
423 |
msgid "Blocked threats:"
|
424 |
msgstr ""
|
425 |
|
426 |
+
#: lib/event_notifications.php:476
|
427 |
msgid "critical:"
|
428 |
msgstr ""
|
429 |
|
430 |
+
#: lib/event_notifications.php:477
|
431 |
msgid "high:"
|
432 |
msgstr ""
|
433 |
|
434 |
+
#: lib/event_notifications.php:478
|
435 |
msgid "medium:"
|
436 |
msgstr ""
|
437 |
|
438 |
+
#: lib/event_notifications.php:480
|
439 |
msgid "Blocked brute-force attacks:"
|
440 |
msgstr ""
|
441 |
|
442 |
+
#: lib/event_notifications.php:481 lib/utils.php:851 lib/utils.php:1030
|
443 |
msgid ""
|
444 |
"This notification can be turned off from NinjaFirewall \"Event Notifications"
|
445 |
"\" page."
|
446 |
msgstr ""
|
447 |
|
448 |
+
#: lib/event_notifications.php:485 lib/file_check.php:783
|
449 |
+
#: lib/file_check.php:804 lib/firewall_options.php:515 lib/rules_update.php:553
|
450 |
+
#: lib/utils.php:746
|
451 |
msgid "Support forum:"
|
452 |
msgstr ""
|
453 |
|
454 |
+
#: lib/event_notifications.php:488 lib/file_check.php:786
|
455 |
+
#: lib/file_check.php:807 lib/firewall_options.php:518 lib/rules_update.php:556
|
456 |
+
#: lib/utils.php:235 lib/utils.php:578 lib/utils.php:749 lib/utils.php:856
|
457 |
+
#: lib/utils.php:1035 lib/utils.php:1389
|
458 |
#, php-format
|
459 |
msgid ""
|
460 |
"Need more security? Check out our supercharged NinjaFirewall (WP+ Edition): "
|
477 |
msgid "You must create a snapshot first."
|
478 |
msgstr ""
|
479 |
|
480 |
+
#: lib/file_check.php:104 lib/file_check.php:769
|
481 |
msgid "NinjaFirewall detected that changes were made to your files."
|
482 |
msgstr ""
|
483 |
|
485 |
msgid "No changes detected."
|
486 |
msgstr ""
|
487 |
|
488 |
+
#: lib/file_check.php:129 lib/help.php:380 ninjafirewall.php:737
|
489 |
msgid "File Check"
|
490 |
msgstr ""
|
491 |
|
498 |
msgid "Default: %s"
|
499 |
msgstr ""
|
500 |
|
501 |
+
#: lib/file_check.php:158 lib/file_guard.php:90
|
502 |
msgid "Exclude the following files/folders (optional)"
|
503 |
msgstr ""
|
504 |
|
505 |
+
#: lib/file_check.php:159 lib/file_guard.php:91 lib/live_log.php:165
|
506 |
msgid "e.g.,"
|
507 |
msgstr ""
|
508 |
|
512 |
"separated"
|
513 |
msgstr ""
|
514 |
|
515 |
+
#: lib/file_check.php:165
|
516 |
msgid "Do not follow symbolic links (default)"
|
517 |
msgstr ""
|
518 |
|
519 |
+
#: lib/file_check.php:171
|
520 |
msgid "Create Snapshot"
|
521 |
msgstr ""
|
522 |
|
523 |
+
#: lib/file_check.php:239
|
|
|
|
|
|
|
|
|
524 |
msgid "Last snapshot"
|
525 |
msgstr ""
|
526 |
|
527 |
+
#: lib/file_check.php:241
|
528 |
#, php-format
|
529 |
msgid "Created on: %s"
|
530 |
msgstr ""
|
531 |
|
532 |
+
#: lib/file_check.php:242
|
533 |
#, php-format
|
534 |
msgid "Total files: %s "
|
535 |
msgstr ""
|
536 |
|
537 |
+
#: lib/file_check.php:244
|
538 |
msgid "Directory:"
|
539 |
msgstr ""
|
540 |
|
541 |
+
#: lib/file_check.php:248
|
542 |
msgid "Exclusion:"
|
543 |
msgstr ""
|
544 |
|
545 |
+
#: lib/file_check.php:254
|
546 |
msgid "Symlinks:"
|
547 |
msgstr ""
|
548 |
|
549 |
+
#: lib/file_check.php:256
|
550 |
msgid "follow"
|
551 |
msgstr ""
|
552 |
|
553 |
+
#: lib/file_check.php:258
|
554 |
msgid "do not follow"
|
555 |
msgstr ""
|
556 |
|
557 |
+
#: lib/file_check.php:262
|
558 |
#, php-format
|
559 |
msgid "Processing time: %s seconds"
|
560 |
msgstr ""
|
561 |
|
562 |
+
#: lib/file_check.php:267
|
563 |
msgid "Download Snapshot"
|
564 |
msgstr ""
|
565 |
|
566 |
+
#: lib/file_check.php:267
|
567 |
msgid "Delete Snapshot"
|
568 |
msgstr ""
|
569 |
|
570 |
+
#: lib/file_check.php:272
|
571 |
msgid "Last changes"
|
572 |
msgstr ""
|
573 |
|
574 |
+
#: lib/file_check.php:279 lib/file_check.php:777
|
575 |
#, php-format
|
576 |
msgid "New files: %s"
|
577 |
msgstr ""
|
578 |
|
579 |
+
#: lib/file_check.php:280 lib/file_check.php:779
|
580 |
#, php-format
|
581 |
msgid "Deleted files: %s"
|
582 |
msgstr ""
|
583 |
|
584 |
+
#: lib/file_check.php:281 lib/file_check.php:778
|
585 |
#, php-format
|
586 |
msgid "Modified files: %s"
|
587 |
msgstr ""
|
588 |
|
589 |
+
#: lib/file_check.php:285
|
590 |
msgid "View Changes"
|
591 |
msgstr ""
|
592 |
|
593 |
+
#: lib/file_check.php:289
|
594 |
msgid "Download Changes"
|
595 |
msgstr ""
|
596 |
|
597 |
+
#: lib/file_check.php:301
|
598 |
msgid "Click a file to get more info about it."
|
599 |
msgstr ""
|
600 |
|
601 |
+
#: lib/file_check.php:304
|
602 |
msgid "New files:"
|
603 |
msgstr ""
|
604 |
|
605 |
+
#: lib/file_check.php:313 lib/file_check.php:366
|
606 |
msgid "Size"
|
607 |
msgstr ""
|
608 |
|
609 |
+
#: lib/file_check.php:317 lib/file_check.php:371
|
610 |
msgid "Access"
|
611 |
msgstr ""
|
612 |
|
613 |
+
#: lib/file_check.php:321 lib/file_check.php:376
|
614 |
msgid "Uid / Gid"
|
615 |
msgstr ""
|
616 |
|
617 |
+
#: lib/file_check.php:325 lib/file_check.php:381
|
618 |
msgid "Modify"
|
619 |
msgstr ""
|
620 |
|
621 |
+
#: lib/file_check.php:329 lib/file_check.php:386
|
622 |
msgid "Change"
|
623 |
msgstr ""
|
624 |
|
625 |
+
#: lib/file_check.php:339
|
626 |
msgid "Deleted files:"
|
627 |
msgstr ""
|
628 |
|
629 |
+
#: lib/file_check.php:352
|
630 |
msgid "Modified files:"
|
631 |
msgstr ""
|
632 |
|
633 |
+
#: lib/file_check.php:362
|
634 |
msgid "Old"
|
635 |
msgstr ""
|
636 |
|
637 |
+
#: lib/file_check.php:363
|
638 |
msgid "New"
|
639 |
msgstr ""
|
640 |
|
641 |
+
#: lib/file_check.php:402 lib/live_log.php:161
|
642 |
msgid "None"
|
643 |
msgstr ""
|
644 |
|
645 |
+
#: lib/file_check.php:412
|
646 |
msgid "Scan System For File Changes"
|
647 |
msgstr ""
|
648 |
|
649 |
+
#: lib/file_check.php:429
|
650 |
msgid "Options"
|
651 |
msgstr ""
|
652 |
|
653 |
+
#: lib/file_check.php:436
|
654 |
#, php-format
|
655 |
msgid ""
|
656 |
+
"It seems that %s is set. Ensure you have another way to run WP-Cron, "
|
657 |
"otherwise NinjaFirewall scheduled scans will not work."
|
658 |
msgstr ""
|
659 |
|
660 |
+
#: lib/file_check.php:442
|
661 |
msgid "Enable scheduled scans"
|
662 |
msgstr ""
|
663 |
|
664 |
+
#: lib/file_check.php:444
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
665 |
msgid "No (default)"
|
666 |
msgstr ""
|
667 |
|
668 |
+
#: lib/file_check.php:445 lib/rules_update.php:156
|
669 |
msgid "Hourly"
|
670 |
msgstr ""
|
671 |
|
672 |
+
#: lib/file_check.php:446 lib/rules_update.php:157
|
673 |
msgid "Twicedaily"
|
674 |
msgstr ""
|
675 |
|
676 |
+
#: lib/file_check.php:447 lib/rules_update.php:158
|
677 |
msgid "Daily"
|
678 |
msgstr ""
|
679 |
|
680 |
+
#: lib/file_check.php:454
|
681 |
#, php-format
|
682 |
msgid ""
|
683 |
"Next scan will start in approximately %s day(s), %s hour(s), %s minute(s) "
|
684 |
"and %s second(s)."
|
685 |
msgstr ""
|
686 |
|
687 |
+
#: lib/file_check.php:461
|
688 |
msgid ""
|
689 |
"The next scheduled scan date is in the past! WordPress wp-cron may not be "
|
690 |
"working or may have been disabled."
|
691 |
msgstr ""
|
692 |
|
693 |
+
#: lib/file_check.php:469
|
694 |
msgid "Scheduled scan report"
|
695 |
msgstr ""
|
696 |
|
697 |
+
#: lib/file_check.php:471
|
698 |
msgid "Send me a report by email only if changes are detected (default)"
|
699 |
msgstr ""
|
700 |
|
701 |
+
#: lib/file_check.php:472
|
702 |
msgid "Always send me a report by email after a scheduled scan"
|
703 |
msgstr ""
|
704 |
|
705 |
+
#: lib/file_check.php:477
|
706 |
msgid "Save Scan Options"
|
707 |
msgstr ""
|
708 |
|
709 |
+
#: lib/file_check.php:489
|
710 |
msgid "Enter the full path to the directory to be scanned."
|
711 |
msgstr ""
|
712 |
|
713 |
+
#: lib/file_check.php:496
|
714 |
#, php-format
|
715 |
msgid "The directory %s does not exist."
|
716 |
msgstr ""
|
717 |
|
718 |
+
#: lib/file_check.php:499
|
719 |
#, php-format
|
720 |
msgid "The directory %s is not readable."
|
721 |
msgstr ""
|
722 |
|
723 |
+
#: lib/file_check.php:540
|
724 |
#, php-format
|
725 |
msgid "Cannot write to %s."
|
726 |
msgstr ""
|
727 |
|
728 |
+
#: lib/file_check.php:570
|
729 |
#, php-format
|
730 |
msgid "Error : cannot open %s directory."
|
731 |
msgstr ""
|
732 |
|
733 |
+
#: lib/file_check.php:573
|
734 |
#, php-format
|
735 |
msgid "Error : %s directory is not readable."
|
736 |
msgstr ""
|
737 |
|
738 |
+
#: lib/file_check.php:588
|
739 |
#, php-format
|
740 |
msgid "Missing options line %s, please try again."
|
741 |
msgstr ""
|
742 |
|
743 |
+
#: lib/file_check.php:598
|
744 |
#, php-format
|
745 |
msgid "Cannot create %s."
|
746 |
msgstr ""
|
747 |
|
748 |
+
#: lib/file_check.php:615
|
749 |
msgid "Error reading old snapshot file."
|
750 |
msgstr ""
|
751 |
|
752 |
+
#: lib/file_check.php:626
|
753 |
msgid "Error reading new snapshot file."
|
754 |
msgstr ""
|
755 |
|
756 |
+
#: lib/file_check.php:742 ninjafirewall.php:407
|
757 |
msgid "New file"
|
758 |
msgstr ""
|
759 |
|
760 |
+
#: lib/file_check.php:743 ninjafirewall.php:408
|
761 |
msgid "Modified file"
|
762 |
msgstr ""
|
763 |
|
764 |
+
#: lib/file_check.php:744 ninjafirewall.php:409
|
765 |
msgid "Deleted file"
|
766 |
msgstr ""
|
767 |
|
768 |
+
#: lib/file_check.php:768
|
769 |
msgid "[NinjaFirewall] Alert: File Check detection"
|
770 |
msgstr ""
|
771 |
|
772 |
+
#: lib/file_check.php:771 lib/file_check.php:773 lib/file_check.php:798
|
773 |
+
#: lib/file_check.php:800 lib/rules_update.php:545 lib/rules_update.php:547
|
774 |
+
#: lib/utils.php:214 lib/utils.php:839 lib/utils.php:1005 lib/utils.php:1378
|
775 |
msgid "Blog:"
|
776 |
msgstr ""
|
777 |
|
778 |
+
#: lib/file_check.php:775 lib/file_check.php:802 lib/rules_update.php:550
|
779 |
#, php-format
|
780 |
msgid "Date: %s"
|
781 |
msgstr ""
|
782 |
|
783 |
+
#: lib/file_check.php:781
|
784 |
msgid "See attached file for details."
|
785 |
msgstr ""
|
786 |
|
787 |
+
#: lib/file_check.php:795
|
788 |
msgid "[NinjaFirewall] File Check report"
|
789 |
msgstr ""
|
790 |
|
791 |
+
#: lib/file_check.php:796
|
792 |
msgid "NinjaFirewall did not detect changes in your files."
|
793 |
msgstr ""
|
794 |
|
795 |
+
#: lib/file_guard.php:28 lib/help.php:348 ninjafirewall.php:733
|
|
|
|
|
|
|
|
|
796 |
msgid "File Guard"
|
797 |
msgstr ""
|
798 |
|
799 |
+
#: lib/file_guard.php:32
|
800 |
#, php-format
|
801 |
msgid ""
|
802 |
"You are running NinjaFirewall in <i>WordPress WAF</i> mode. The %s feature "
|
805 |
"to any PHP script, you will need to run NinjaFirewall in %s mode."
|
806 |
msgstr ""
|
807 |
|
808 |
+
#: lib/file_guard.php:38
|
809 |
#, php-format
|
810 |
msgid ""
|
811 |
"The cache directory %s is not writable. Please change its permissions (0777 "
|
812 |
"or equivalent)."
|
813 |
msgstr ""
|
814 |
|
815 |
+
#: lib/file_guard.php:70
|
816 |
msgid "Enable File Guard"
|
817 |
msgstr ""
|
818 |
|
819 |
+
#: lib/file_guard.php:72 lib/firewall_options.php:64 lib/live_log.php:102
|
820 |
+
#: lib/login_protection.php:203 lib/overview.php:123 lib/overview.php:257
|
821 |
+
#: lib/rules_update.php:141
|
822 |
+
msgid "Enabled"
|
823 |
msgstr ""
|
824 |
|
825 |
+
#: lib/file_guard.php:72 lib/firewall_options.php:64 lib/live_log.php:102
|
826 |
+
#: lib/login_protection.php:203 lib/rules_update.php:141
|
827 |
+
msgid "Disabled"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
828 |
msgstr ""
|
829 |
|
830 |
+
#: lib/file_guard.php:82
|
831 |
msgid "Real-time detection"
|
832 |
msgstr ""
|
833 |
|
834 |
+
#: lib/file_guard.php:85
|
835 |
#, php-format
|
836 |
msgid ""
|
837 |
"Monitor file activity and send an alert when someone is accessing a PHP "
|
838 |
"script that was modified or created less than %s hour(s) ago."
|
839 |
msgstr ""
|
840 |
|
841 |
+
#: lib/file_guard.php:91 lib/live_log.php:165
|
842 |
msgid "or"
|
843 |
msgstr ""
|
844 |
|
845 |
+
#: lib/file_guard.php:91
|
846 |
msgid ""
|
847 |
"Full or partial case-sensitive string(s), max. 255 characters. Multiple "
|
848 |
"values must be comma-separated"
|
849 |
msgstr ""
|
850 |
|
851 |
+
#: lib/file_guard.php:96
|
852 |
msgid "Save File Guard options"
|
853 |
msgstr ""
|
854 |
|
872 |
msgid "Your public key has been saved"
|
873 |
msgstr ""
|
874 |
|
875 |
+
#: lib/firewall_log.php:81 lib/help.php:487 lib/wpplus.php:206
|
876 |
+
#: ninjafirewall.php:763
|
877 |
msgid "Firewall Log"
|
878 |
msgstr ""
|
879 |
|
880 |
+
#: lib/firewall_log.php:88
|
881 |
msgid "Error"
|
882 |
msgstr ""
|
883 |
|
884 |
+
#: lib/firewall_log.php:95
|
885 |
msgid "Note"
|
886 |
msgstr ""
|
887 |
|
888 |
+
#: lib/firewall_log.php:95
|
889 |
#, php-format
|
890 |
msgid "your log has %s lines. I will display the last %s lines only."
|
891 |
msgstr ""
|
892 |
|
893 |
+
#: lib/firewall_log.php:99
|
894 |
msgid "Viewing:"
|
895 |
msgstr ""
|
896 |
|
897 |
+
#: lib/firewall_log.php:106 lib/firewall_options.php:193
|
898 |
msgid "bytes"
|
899 |
msgstr ""
|
900 |
|
901 |
+
#: lib/firewall_log.php:147 lib/firewall_log.php:308
|
902 |
msgid "The selected log is empty."
|
903 |
msgstr ""
|
904 |
|
905 |
+
#: lib/firewall_log.php:152
|
906 |
msgid ""
|
907 |
"The log shows all threats that were blocked by the firewall, unless stated "
|
908 |
"otherwise. It is rotated monthly."
|
909 |
msgstr ""
|
910 |
|
911 |
+
#: lib/firewall_log.php:165
|
912 |
msgid "Log Options"
|
913 |
msgstr ""
|
914 |
|
915 |
+
#: lib/firewall_log.php:169 lib/help.php:500
|
916 |
msgid "Auto-delete log"
|
917 |
msgstr ""
|
918 |
|
919 |
+
#: lib/firewall_log.php:173
|
920 |
#, php-format
|
921 |
msgid "Automatically delete logs older than %s days"
|
922 |
msgstr ""
|
923 |
|
924 |
+
#: lib/firewall_log.php:175
|
925 |
msgid "Set this option to 0 to disable it."
|
926 |
msgstr ""
|
927 |
|
928 |
+
#: lib/firewall_log.php:181
|
929 |
msgid "Save Log Options"
|
930 |
msgstr ""
|
931 |
|
932 |
+
#: lib/firewall_log.php:197 lib/help.php:508 lib/overview.php:247
|
933 |
+
#: lib/wpplus.php:170
|
934 |
+
msgid "Centralized Logging"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
935 |
msgstr ""
|
936 |
|
937 |
+
#: lib/firewall_log.php:200
|
938 |
+
msgid "Enter your public key (optional)"
|
939 |
msgstr ""
|
940 |
|
941 |
+
#: lib/firewall_log.php:203
|
942 |
#, php-format
|
943 |
msgid ""
|
944 |
+
"<a href=\"%s\">Consult our blog</a> if you want to enable centralized "
|
945 |
+
"logging."
|
946 |
msgstr ""
|
947 |
|
948 |
+
#: lib/firewall_log.php:210
|
949 |
+
msgid "Save Public Key"
|
950 |
msgstr ""
|
951 |
|
952 |
+
#: lib/firewall_log.php:212
|
953 |
+
msgid "Delete Public Key"
|
954 |
msgstr ""
|
955 |
|
956 |
+
#: lib/firewall_log.php:287
|
957 |
+
msgid "The requested log does not exist."
|
958 |
msgstr ""
|
959 |
|
960 |
+
#: lib/firewall_log.php:294
|
961 |
+
msgid "Unable to open the log for read operation."
|
|
|
|
|
962 |
msgstr ""
|
963 |
|
964 |
+
#: lib/firewall_options.php:29 ninjafirewall.php:725
|
965 |
+
msgid "Firewall Options"
|
966 |
msgstr ""
|
967 |
|
968 |
+
#: lib/firewall_options.php:62 lib/help.php:145
|
969 |
+
msgid "Firewall protection"
|
970 |
msgstr ""
|
971 |
|
972 |
+
#: lib/firewall_options.php:76 lib/help.php:153 lib/overview.php:152
|
973 |
msgid "Debugging mode"
|
974 |
msgstr ""
|
975 |
|
976 |
+
#: lib/firewall_options.php:89
|
|
|
|
|
|
|
|
|
977 |
msgid "HTTP error code to return"
|
978 |
msgstr ""
|
979 |
|
980 |
+
#: lib/firewall_options.php:92
|
981 |
msgid "400 Bad Request"
|
982 |
msgstr ""
|
983 |
|
984 |
+
#: lib/firewall_options.php:93
|
985 |
msgid "403 Forbidden (default)"
|
986 |
msgstr ""
|
987 |
|
988 |
+
#: lib/firewall_options.php:94
|
989 |
msgid "404 Not Found"
|
990 |
msgstr ""
|
991 |
|
992 |
+
#: lib/firewall_options.php:95
|
993 |
msgid "406 Not Acceptable"
|
994 |
msgstr ""
|
995 |
|
996 |
+
#: lib/firewall_options.php:96
|
997 |
msgid "418 I'm a teapot"
|
998 |
msgstr ""
|
999 |
|
1000 |
+
#: lib/firewall_options.php:97
|
1001 |
msgid "500 Internal Server Error"
|
1002 |
msgstr ""
|
1003 |
|
1004 |
+
#: lib/firewall_options.php:98
|
1005 |
msgid "503 Service Unavailable"
|
1006 |
msgstr ""
|
1007 |
|
1008 |
+
#: lib/firewall_options.php:111 lib/help.php:160
|
1009 |
msgid "IP anonymization"
|
1010 |
msgstr ""
|
1011 |
|
1012 |
+
#: lib/firewall_options.php:114
|
|
|
|
|
|
|
|
|
1013 |
#, php-format
|
1014 |
msgid ""
|
1015 |
"Does not apply to private IP addresses and the <a href=\"%s\">Login "
|
1016 |
"Protection</a>."
|
1017 |
msgstr ""
|
1018 |
|
1019 |
+
#: lib/firewall_options.php:128
|
1020 |
msgid "Blocked user message"
|
1021 |
msgstr ""
|
1022 |
|
1023 |
+
#: lib/firewall_options.php:131
|
1024 |
+
msgid "HTML code, including CSS and JS, is allowed."
|
1025 |
msgstr ""
|
1026 |
|
1027 |
+
#: lib/firewall_options.php:133
|
1028 |
msgid "Default message"
|
1029 |
msgstr ""
|
1030 |
|
1031 |
+
#: lib/firewall_options.php:141
|
1032 |
msgid "Firewall configuration"
|
1033 |
msgstr ""
|
1034 |
|
1035 |
+
#: lib/firewall_options.php:145
|
1036 |
msgid "Export configuration"
|
1037 |
msgstr ""
|
1038 |
|
1039 |
+
#: lib/firewall_options.php:147
|
1040 |
msgid "Download"
|
1041 |
msgstr ""
|
1042 |
|
1043 |
+
#: lib/firewall_options.php:148
|
1044 |
msgid "File Check configuration will not be exported/imported."
|
1045 |
msgstr ""
|
1046 |
|
1047 |
+
#: lib/firewall_options.php:152
|
1048 |
msgid "Import configuration"
|
1049 |
msgstr ""
|
1050 |
|
1051 |
+
#: lib/firewall_options.php:157
|
1052 |
#, php-format
|
1053 |
msgid "Imported configuration must match plugin version %s."
|
1054 |
msgstr ""
|
1055 |
|
1056 |
+
#: lib/firewall_options.php:158
|
1057 |
msgid "It will override all your current firewall options and rules."
|
1058 |
msgstr ""
|
1059 |
|
1060 |
+
#: lib/firewall_options.php:163 lib/help.php:186
|
1061 |
msgid "Configuration backup"
|
1062 |
msgstr ""
|
1063 |
|
1064 |
+
#: lib/firewall_options.php:169 lib/firewall_options.php:198
|
1065 |
msgid "Save Firewall Options"
|
1066 |
msgstr ""
|
1067 |
|
1068 |
+
#: lib/firewall_options.php:189
|
1069 |
msgid "Available backup files"
|
1070 |
msgstr ""
|
1071 |
|
1072 |
+
#: lib/firewall_options.php:198
|
1073 |
#, php-format
|
1074 |
msgid ""
|
1075 |
"To restore NinjaFirewall's configuration to an earlier date, select it in "
|
1076 |
"the list and click '%s'."
|
1077 |
msgstr ""
|
1078 |
|
1079 |
+
#: lib/firewall_options.php:202
|
1080 |
msgid "There are no backup available yet, check back later."
|
1081 |
msgstr ""
|
1082 |
|
1083 |
+
#: lib/firewall_options.php:340
|
1084 |
#, php-format
|
1085 |
msgid "Uploaded file is either corrupted or its format is not supported (#%s)"
|
1086 |
msgstr ""
|
1087 |
|
1088 |
+
#: lib/firewall_options.php:369
|
1089 |
msgid "The imported file is not compatible with that version of NinjaFirewall"
|
1090 |
msgstr ""
|
1091 |
|
1092 |
+
#: lib/firewall_options.php:489
|
1093 |
msgid "[NinjaFirewall] Alert: Firewall is disabled"
|
1094 |
msgstr ""
|
1095 |
|
1096 |
+
#: lib/firewall_options.php:491 lib/firewall_options.php:493 lib/utils.php:734
|
1097 |
+
#: lib/utils.php:736
|
1098 |
msgid "-Blog :"
|
1099 |
msgstr ""
|
1100 |
|
1101 |
+
#: lib/firewall_options.php:497
|
1102 |
msgid "Someone disabled NinjaFirewall from your WordPress admin dashboard:"
|
1103 |
msgstr ""
|
1104 |
|
1105 |
+
#: lib/firewall_options.php:500
|
1106 |
msgid ""
|
1107 |
"NinjaFirewall is disabled because someone enabled debugging mode from your "
|
1108 |
"WordPress admin dashboard:"
|
1109 |
msgstr ""
|
1110 |
|
1111 |
+
#: lib/firewall_options.php:503
|
1112 |
msgid "[NinjaFirewall] Alert: Firewall override settings"
|
1113 |
msgstr ""
|
1114 |
|
1115 |
+
#: lib/firewall_options.php:504
|
1116 |
msgid ""
|
1117 |
"Someone imported a new configuration which overrode the firewall settings:"
|
1118 |
msgstr ""
|
1119 |
|
1120 |
+
#: lib/firewall_options.php:510 lib/utils.php:741
|
1121 |
msgid "-User :"
|
1122 |
msgstr ""
|
1123 |
|
1124 |
+
#: lib/firewall_options.php:511 lib/utils.php:742
|
1125 |
msgid "-IP :"
|
1126 |
msgstr ""
|
1127 |
|
1128 |
+
#: lib/firewall_options.php:512 lib/utils.php:743
|
1129 |
msgid "-Date :"
|
1130 |
msgstr ""
|
1131 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1132 |
#: lib/firewall_policies.php:29
|
1133 |
#, php-format
|
1134 |
msgid ""
|
1135 |
"This feature is only available when NinjaFirewall is running in %s mode."
|
1136 |
msgstr ""
|
1137 |
|
1138 |
+
#: lib/firewall_policies.php:62 lib/help.php:231 ninjafirewall.php:729
|
1139 |
+
msgid "Firewall Policies"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1140 |
msgstr ""
|
1141 |
|
1142 |
+
#: lib/firewall_policies.php:74
|
1143 |
msgid "Default values were restored."
|
1144 |
msgstr ""
|
1145 |
|
1146 |
+
#: lib/firewall_policies.php:76
|
1147 |
msgid "No action taken."
|
1148 |
msgstr ""
|
1149 |
|
1150 |
+
#: lib/firewall_policies.php:85 lib/help.php:236
|
1151 |
msgid "Basic Policies"
|
1152 |
msgstr ""
|
1153 |
|
1154 |
+
#: lib/firewall_policies.php:86 lib/help.php:262
|
1155 |
msgid "Intermediate Policies"
|
1156 |
msgstr ""
|
1157 |
|
1158 |
+
#: lib/firewall_policies.php:87 lib/help.php:293
|
1159 |
msgid "Advanced Policies"
|
1160 |
msgstr ""
|
1161 |
|
1162 |
+
#: lib/firewall_policies.php:111
|
1163 |
msgid "Enable NinjaFirewall for"
|
1164 |
msgstr ""
|
1165 |
|
1166 |
+
#: lib/firewall_policies.php:113 lib/live_log.php:182
|
1167 |
msgid "HTTP and HTTPS traffic (default)"
|
1168 |
msgstr ""
|
1169 |
|
1170 |
+
#: lib/firewall_policies.php:114 lib/live_log.php:183
|
1171 |
msgid "HTTP traffic only"
|
1172 |
msgstr ""
|
1173 |
|
1174 |
+
#: lib/firewall_policies.php:115 lib/live_log.php:184
|
1175 |
msgid "HTTPS traffic only"
|
1176 |
msgstr ""
|
1177 |
|
1178 |
+
#: lib/firewall_policies.php:141 lib/help.php:241
|
1179 |
msgid "Uploads"
|
1180 |
msgstr ""
|
1181 |
|
1182 |
+
#: lib/firewall_policies.php:144
|
1183 |
msgid "File Uploads"
|
1184 |
msgstr ""
|
1185 |
|
1186 |
+
#: lib/firewall_policies.php:147
|
1187 |
msgid "Allow uploads"
|
1188 |
msgstr ""
|
1189 |
|
1190 |
+
#: lib/firewall_policies.php:147
|
1191 |
+
msgid "(default)"
|
1192 |
+
msgstr ""
|
1193 |
+
|
1194 |
+
#: lib/firewall_policies.php:148
|
1195 |
msgid "Disallow uploads"
|
1196 |
msgstr ""
|
1197 |
|
1198 |
+
#: lib/firewall_policies.php:152
|
1199 |
msgid "Sanitise filenames"
|
1200 |
msgstr ""
|
1201 |
|
1202 |
+
#: lib/firewall_policies.php:152
|
1203 |
msgid "substitution character:"
|
1204 |
msgstr ""
|
1205 |
|
1206 |
+
#: lib/firewall_policies.php:276
|
1207 |
msgid "Block direct access to any PHP file located in one of these directories"
|
1208 |
msgstr ""
|
1209 |
|
1210 |
+
#: lib/firewall_policies.php:306
|
1211 |
msgid ""
|
1212 |
"NinjaFirewall will not block access to the TinyMCE WYSIWYG editor even if "
|
1213 |
"this option is enabled."
|
1214 |
msgstr ""
|
1215 |
|
1216 |
+
#: lib/firewall_policies.php:321
|
1217 |
msgid ""
|
1218 |
"Unless you have PHP scripts in a \"/cache/\" folder that need to be accessed "
|
1219 |
"by your visitors, we recommend to enable this option."
|
1220 |
msgstr ""
|
1221 |
|
1222 |
+
#: lib/firewall_policies.php:330
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1223 |
msgid "General"
|
1224 |
msgstr ""
|
1225 |
|
1226 |
+
#: lib/firewall_policies.php:332 lib/help.php:247
|
1227 |
msgid "Block attempts to modify important WordPress settings"
|
1228 |
msgstr ""
|
1229 |
|
1230 |
+
#: lib/firewall_policies.php:333 lib/help.php:248
|
1231 |
msgid "Block user accounts creation"
|
1232 |
msgstr ""
|
1233 |
|
1234 |
+
#: lib/firewall_policies.php:334
|
1235 |
msgid "Do not enable this policy if you allow user registration."
|
1236 |
msgstr ""
|
1237 |
|
1238 |
+
#: lib/firewall_policies.php:346 lib/help.php:249
|
1239 |
msgid "WordPress AJAX"
|
1240 |
msgstr ""
|
1241 |
|
1242 |
+
#: lib/firewall_policies.php:348
|
1243 |
msgid "Protect <code>admin-ajax.php</code> against suspicious bots"
|
1244 |
msgstr ""
|
1245 |
|
1246 |
+
#: lib/firewall_policies.php:349
|
1247 |
+
#, php-format
|
1248 |
+
msgid ""
|
1249 |
+
"Your server IP (%s), localhost and private IP addresses will not be affected "
|
1250 |
+
"by this policy."
|
1251 |
+
msgstr ""
|
1252 |
+
|
1253 |
+
#: lib/firewall_policies.php:354
|
1254 |
msgid "Protect against username enumeration"
|
1255 |
msgstr ""
|
1256 |
|
1257 |
+
#: lib/firewall_policies.php:356
|
1258 |
msgid "Through the author archives"
|
1259 |
msgstr ""
|
1260 |
|
1261 |
+
#: lib/firewall_policies.php:357
|
1262 |
msgid "Through the login page"
|
1263 |
msgstr ""
|
1264 |
|
1265 |
+
#: lib/firewall_policies.php:358
|
1266 |
msgid "Through the WordPress REST API"
|
1267 |
msgstr ""
|
1268 |
|
1269 |
+
#: lib/firewall_policies.php:363
|
|
|
|
|
|
|
|
|
1270 |
msgid "WordPress REST API"
|
1271 |
msgstr ""
|
1272 |
|
1273 |
+
#: lib/firewall_policies.php:365 lib/firewall_policies.php:371
|
1274 |
msgid "Block any access to the API"
|
1275 |
msgstr ""
|
1276 |
|
1277 |
+
#: lib/firewall_policies.php:369
|
1278 |
msgid "WordPress XML-RPC API"
|
1279 |
msgstr ""
|
1280 |
|
1281 |
+
#: lib/firewall_policies.php:372
|
1282 |
msgid "Block <code>system.multicall</code> method"
|
1283 |
msgstr ""
|
1284 |
|
1285 |
+
#: lib/firewall_policies.php:373
|
1286 |
msgid "Block Pingbacks"
|
1287 |
msgstr ""
|
1288 |
|
1289 |
+
#: lib/firewall_policies.php:375
|
1290 |
msgid ""
|
1291 |
"Disabling access to the REST or XML-RPC API may break some functionality on "
|
1292 |
+
"your blog, its themes or plugins (e.g., Gutenberg editor, Jetpack, Contact "
|
1293 |
+
"Form 7 etc)."
|
1294 |
msgstr ""
|
1295 |
|
1296 |
+
#: lib/firewall_policies.php:380
|
1297 |
msgid "Block <code>POST</code> requests in the themes folder"
|
1298 |
msgstr ""
|
1299 |
|
1300 |
+
#: lib/firewall_policies.php:390
|
1301 |
msgid "Force SSL for admin and logins"
|
1302 |
msgstr ""
|
1303 |
|
1304 |
+
#: lib/firewall_policies.php:396
|
1305 |
msgid "Disable the plugin and theme editor"
|
1306 |
msgstr ""
|
1307 |
|
1308 |
+
#: lib/firewall_policies.php:402
|
1309 |
msgid "Disable plugin and theme update/installation"
|
1310 |
msgstr ""
|
1311 |
|
1312 |
+
#: lib/firewall_policies.php:408
|
1313 |
msgid "Disable the fatal error handler"
|
1314 |
msgstr ""
|
1315 |
|
1316 |
+
#: lib/firewall_policies.php:430 lib/help.php:334
|
1317 |
msgid "Users Whitelist"
|
1318 |
msgstr ""
|
1319 |
|
1320 |
+
#: lib/firewall_policies.php:432
|
1321 |
msgid "Add the Administrator to the whitelist (default)."
|
1322 |
msgstr ""
|
1323 |
|
1324 |
+
#: lib/firewall_policies.php:433
|
1325 |
msgid "Add all logged in users to the whitelist."
|
1326 |
msgstr ""
|
1327 |
|
1328 |
+
#: lib/firewall_policies.php:434
|
1329 |
msgid "Disable users whitelist."
|
1330 |
msgstr ""
|
1331 |
|
1332 |
+
#: lib/firewall_policies.php:435
|
1333 |
msgid ""
|
1334 |
"Note: This feature does not apply to <code>FORCE_SSL_ADMIN</code>, "
|
1335 |
"<code>DISALLOW_FILE_EDIT</code>, <code>DISALLOW_FILE_MODS</code> and "
|
1337 |
"always enforced."
|
1338 |
msgstr ""
|
1339 |
|
1340 |
+
#: lib/firewall_policies.php:460 lib/help.php:264
|
1341 |
msgid "HTTP GET variable"
|
1342 |
msgstr ""
|
1343 |
|
1344 |
+
#: lib/firewall_policies.php:463
|
1345 |
msgid "Scan <code>GET</code> variable"
|
1346 |
msgstr ""
|
1347 |
|
1348 |
+
#: lib/firewall_policies.php:469
|
1349 |
msgid "Sanitise <code>GET</code> variable"
|
1350 |
msgstr ""
|
1351 |
|
1352 |
+
#: lib/firewall_policies.php:495 lib/help.php:267
|
1353 |
msgid "HTTP POST variable"
|
1354 |
msgstr ""
|
1355 |
|
1356 |
+
#: lib/firewall_policies.php:498
|
1357 |
msgid "Scan <code>POST</code> variable"
|
1358 |
msgstr ""
|
1359 |
|
1360 |
+
#: lib/firewall_policies.php:504
|
1361 |
msgid "Sanitise <code>POST</code> variable"
|
1362 |
msgstr ""
|
1363 |
|
1364 |
+
#: lib/firewall_policies.php:507 lib/firewall_policies.php:532
|
1365 |
msgid "Do not enable this option unless you know what you are doing!"
|
1366 |
msgstr ""
|
1367 |
|
1368 |
+
#: lib/firewall_policies.php:511
|
1369 |
msgid "Decode Base64-encoded <code>POST</code> variable"
|
1370 |
msgstr ""
|
1371 |
|
1372 |
+
#: lib/firewall_policies.php:526 lib/help.php:271
|
1373 |
msgid "HTTP REQUEST variable"
|
1374 |
msgstr ""
|
1375 |
|
1376 |
+
#: lib/firewall_policies.php:529
|
1377 |
msgid "Sanitise <code>REQUEST</code> variable"
|
1378 |
msgstr ""
|
1379 |
|
1380 |
+
#: lib/firewall_policies.php:551 lib/help.php:274
|
1381 |
msgid "Cookies"
|
1382 |
msgstr ""
|
1383 |
|
1384 |
+
#: lib/firewall_policies.php:554
|
1385 |
msgid "Scan cookies"
|
1386 |
msgstr ""
|
1387 |
|
1388 |
+
#: lib/firewall_policies.php:560
|
1389 |
msgid "Sanitise cookies"
|
1390 |
msgstr ""
|
1391 |
|
1392 |
+
#: lib/firewall_policies.php:586 lib/help.php:277
|
1393 |
msgid "HTTP_USER_AGENT server variable"
|
1394 |
msgstr ""
|
1395 |
|
1396 |
+
#: lib/firewall_policies.php:589
|
1397 |
msgid "Scan <code>HTTP_USER_AGENT</code>"
|
1398 |
msgstr ""
|
1399 |
|
1400 |
+
#: lib/firewall_policies.php:595
|
1401 |
msgid "Sanitise <code>HTTP_USER_AGENT</code>"
|
1402 |
msgstr ""
|
1403 |
|
1404 |
+
#: lib/firewall_policies.php:601
|
1405 |
msgid "Block suspicious bots/scanners"
|
1406 |
msgstr ""
|
1407 |
|
1408 |
+
#: lib/firewall_policies.php:627 lib/help.php:281
|
1409 |
msgid "HTTP_REFERER server variable"
|
1410 |
msgstr ""
|
1411 |
|
1412 |
+
#: lib/firewall_policies.php:630
|
1413 |
msgid "Scan <code>HTTP_REFERER</code>"
|
1414 |
msgstr ""
|
1415 |
|
1416 |
+
#: lib/firewall_policies.php:636
|
1417 |
msgid "Sanitise <code>HTTP_REFERER</code>"
|
1418 |
msgstr ""
|
1419 |
|
1420 |
+
#: lib/firewall_policies.php:642
|
1421 |
msgid ""
|
1422 |
"Block <code>POST</code> requests that do not have an <code>HTTP_REFERER</"
|
1423 |
"code> header"
|
1424 |
msgstr ""
|
1425 |
|
1426 |
+
#: lib/firewall_policies.php:645
|
1427 |
msgid ""
|
1428 |
"Keep this option disabled if you are using scripts like Paypal IPN, "
|
1429 |
"WordPress WP-Cron etc"
|
1430 |
msgstr ""
|
1431 |
|
1432 |
+
#: lib/firewall_policies.php:672
|
1433 |
msgid "Block localhost IP in <code>GET/POST</code> request"
|
1434 |
msgstr ""
|
1435 |
|
1436 |
+
#: lib/firewall_policies.php:678
|
1437 |
msgid "Block HTTP requests with an IP in the <code>HTTP_HOST</code> header"
|
1438 |
msgstr ""
|
1439 |
|
1440 |
+
#: lib/firewall_policies.php:684
|
1441 |
msgid "Scan traffic coming from localhost and private IP address spaces"
|
1442 |
msgstr ""
|
1443 |
|
1444 |
+
#: lib/firewall_policies.php:703
|
1445 |
#, php-format
|
1446 |
msgid ""
|
1447 |
+
"The \"HTTP response headers\" options below are disabled because the %s PHP "
|
1448 |
+
"function is not available on your server."
|
1449 |
msgstr ""
|
1450 |
|
1451 |
+
#: lib/firewall_policies.php:723 lib/help.php:295
|
1452 |
msgid "HTTP response headers"
|
1453 |
msgstr ""
|
1454 |
|
1455 |
+
#: lib/firewall_policies.php:731
|
1456 |
#, php-format
|
1457 |
msgid "Set %s to protect against MIME type confusion attacks"
|
1458 |
msgstr ""
|
1459 |
|
1460 |
+
#: lib/firewall_policies.php:737
|
1461 |
#, php-format
|
1462 |
msgid "Set %s to protect against clickjacking attempts"
|
1463 |
msgstr ""
|
1464 |
|
1465 |
+
#: lib/firewall_policies.php:744
|
1466 |
+
msgid ""
|
1467 |
+
"Setting this option to <code>DENY</code> may break some functionality on "
|
1468 |
+
"your blog, its themes or plugins."
|
1469 |
+
msgstr ""
|
1470 |
+
|
1471 |
+
#: lib/firewall_policies.php:749
|
1472 |
#, php-format
|
1473 |
msgid "Set %s (IE/Edge, Chrome, Opera and Safari browsers)"
|
1474 |
msgstr ""
|
1475 |
|
1476 |
+
#: lib/firewall_policies.php:753 lib/firewall_policies.php:754
|
1477 |
+
#: lib/firewall_policies.php:755
|
1478 |
#, php-format
|
1479 |
msgid "Set to %s"
|
1480 |
msgstr ""
|
1481 |
|
1482 |
+
#: lib/firewall_policies.php:760
|
1483 |
#, php-format
|
1484 |
msgid "Force %s flag on all cookies to mitigate XSS attacks"
|
1485 |
msgstr ""
|
1486 |
|
1487 |
+
#: lib/firewall_policies.php:763
|
1488 |
msgid ""
|
1489 |
"If your PHP scripts use cookies that need to be accessed from JavaScript, "
|
1490 |
+
"you should not enable this option."
|
1491 |
msgstr ""
|
1492 |
|
1493 |
+
#: lib/firewall_policies.php:772
|
1494 |
msgid ""
|
1495 |
"HSTS headers can only be set when you are accessing your site over HTTPS."
|
1496 |
msgstr ""
|
1497 |
|
1498 |
+
#: lib/firewall_policies.php:780
|
1499 |
#, php-format
|
1500 |
msgid "Set %s (HSTS) to enforce secure connections to the server"
|
1501 |
msgstr ""
|
1502 |
|
1503 |
+
#: lib/firewall_policies.php:784
|
1504 |
+
msgid "Set \"max-age\" to 0"
|
1505 |
+
msgstr ""
|
1506 |
+
|
1507 |
+
#: lib/firewall_policies.php:785
|
1508 |
msgid "1 month"
|
1509 |
msgstr ""
|
1510 |
|
1511 |
+
#: lib/firewall_policies.php:786
|
1512 |
msgid "6 months"
|
1513 |
msgstr ""
|
1514 |
|
1515 |
+
#: lib/firewall_policies.php:787
|
1516 |
msgid "1 year"
|
1517 |
msgstr ""
|
1518 |
|
1519 |
+
#: lib/firewall_policies.php:789
|
1520 |
msgid "Apply to subdomains"
|
1521 |
msgstr ""
|
1522 |
|
1523 |
+
#: lib/firewall_policies.php:813
|
|
|
|
|
|
|
|
|
1524 |
#, php-format
|
1525 |
msgid "Set %s for the website frontend"
|
1526 |
msgstr ""
|
1527 |
|
1528 |
+
#: lib/firewall_policies.php:818
|
1529 |
msgid "This CSP header will apply to the website frontend only."
|
1530 |
msgstr ""
|
1531 |
|
1532 |
+
#: lib/firewall_policies.php:822
|
1533 |
#, php-format
|
1534 |
msgid "Set %s for the WordPress admin dashboard"
|
1535 |
msgstr ""
|
1536 |
|
1537 |
+
#: lib/firewall_policies.php:827
|
1538 |
msgid "This CSP header will apply to the WordPress admin dashboard only."
|
1539 |
msgstr ""
|
1540 |
|
1541 |
+
#: lib/firewall_policies.php:843
|
1542 |
#, php-format
|
1543 |
msgid "Set %s (Chrome, Opera and Firefox browsers)"
|
1544 |
msgstr ""
|
1545 |
|
1546 |
+
#: lib/firewall_policies.php:893
|
1547 |
msgid ""
|
1548 |
"Block PHP built-in wrappers in <code>GET</code>, <code>POST</code>, "
|
1549 |
"<code>HTTP_USER_AGENT</code>, <code>HTTP_REFERER</code> and cookies"
|
1550 |
msgstr ""
|
1551 |
|
1552 |
+
#: lib/firewall_policies.php:932
|
1553 |
msgid "Block serialized PHP objects in the following global variables"
|
1554 |
msgstr ""
|
1555 |
|
1556 |
+
#: lib/firewall_policies.php:942
|
1557 |
msgid "Hide PHP notice and error messages"
|
1558 |
msgstr ""
|
1559 |
|
1560 |
+
#: lib/firewall_policies.php:948
|
1561 |
msgid "Sanitise <code>PHP_SELF</code>"
|
1562 |
msgstr ""
|
1563 |
|
1564 |
+
#: lib/firewall_policies.php:954
|
1565 |
msgid "Sanitise <code>PATH_TRANSLATED</code>"
|
1566 |
msgstr ""
|
1567 |
|
1568 |
+
#: lib/firewall_policies.php:960
|
1569 |
msgid "Sanitise <code>PATH_INFO</code>"
|
1570 |
msgstr ""
|
1571 |
|
1572 |
+
#: lib/firewall_policies.php:974
|
1573 |
msgid "This option is not compatible with your actual configuration."
|
1574 |
msgstr ""
|
1575 |
|
1576 |
+
#: lib/firewall_policies.php:996 lib/help.php:325
|
1577 |
msgid "Various"
|
1578 |
msgstr ""
|
1579 |
|
1580 |
+
#: lib/firewall_policies.php:999
|
1581 |
msgid "Block the <code>DOCUMENT_ROOT</code> server variable in HTTP request"
|
1582 |
msgstr ""
|
1583 |
|
1584 |
+
#: lib/firewall_policies.php:1006
|
1585 |
msgid "Block ASCII character 0x00 (NULL byte)"
|
1586 |
msgstr ""
|
1587 |
|
1588 |
+
#: lib/firewall_policies.php:1012
|
1589 |
msgid "Block ASCII control characters 1 to 8 and 14 to 31"
|
1590 |
msgstr ""
|
1591 |
|
1592 |
+
#: lib/firewall_policies.php:1025
|
1593 |
msgid "Save Firewall Policies"
|
1594 |
msgstr ""
|
1595 |
|
1596 |
+
#: lib/firewall_policies.php:1027
|
1597 |
msgid "Restore Default Values"
|
1598 |
msgstr ""
|
1599 |
|
1600 |
+
#: lib/help.php:37 ninjafirewall.php:715
|
1601 |
msgid "Overview"
|
1602 |
msgstr ""
|
1603 |
|
1604 |
+
#: lib/help.php:41
|
1605 |
+
msgid "Quick Start, FAQ, Support and Troubleshooting Guide."
|
|
|
|
|
|
|
1606 |
msgstr ""
|
1607 |
|
1608 |
+
#: lib/help.php:42
|
1609 |
+
msgid ""
|
1610 |
+
"Below are some helpful info and links you may consider reading before using "
|
1611 |
+
"NinjaFirewall:"
|
1612 |
msgstr ""
|
1613 |
|
1614 |
+
#: lib/help.php:44
|
1615 |
+
msgid "Must Read"
|
1616 |
msgstr ""
|
1617 |
|
1618 |
+
#: lib/help.php:46
|
1619 |
+
msgid "Securing WordPress with NinjaFirewall: A step by step tutorial."
|
1620 |
msgstr ""
|
1621 |
|
1622 |
#: lib/help.php:47
|
1623 |
+
msgid "An introduction to NinjaFirewall filtering engine."
|
1624 |
msgstr ""
|
1625 |
|
1626 |
#: lib/help.php:48
|
1627 |
+
msgid "NinjaFirewall Full WAF vs WordPress WAF mode."
|
1628 |
msgstr ""
|
1629 |
|
1630 |
+
#: lib/help.php:49
|
1631 |
+
msgid "Testing NinjaFirewall without blocking your visitors."
|
1632 |
+
msgstr ""
|
1633 |
+
|
1634 |
+
#: lib/help.php:50
|
1635 |
+
msgid "Add your own code to the firewall: the \".htninja\" file."
|
1636 |
+
msgstr ""
|
1637 |
+
|
1638 |
+
#: lib/help.php:51
|
1639 |
+
msgid "Restricting access to NinjaFirewall settings."
|
1640 |
+
msgstr ""
|
1641 |
+
|
1642 |
+
#: lib/help.php:52
|
1643 |
+
msgid "Upgrading to PHP 7 with NinjaFirewall installed."
|
1644 |
+
msgstr ""
|
1645 |
+
|
1646 |
+
#: lib/help.php:53
|
1647 |
+
msgid "Keep your blog protected against the latest vulnerabilities."
|
1648 |
+
msgstr ""
|
1649 |
+
|
1650 |
+
#: lib/help.php:54
|
1651 |
+
msgid "Test your website security with our online scanner."
|
1652 |
+
msgstr ""
|
1653 |
+
|
1654 |
+
#: lib/help.php:55
|
1655 |
+
msgid "NinjaFirewall Referral Program."
|
1656 |
+
msgstr ""
|
1657 |
+
|
1658 |
+
#: lib/help.php:57
|
1659 |
+
msgid "Our blog."
|
1660 |
+
msgstr ""
|
1661 |
+
|
1662 |
+
#: lib/help.php:60
|
1663 |
+
msgid "Troubleshooting"
|
1664 |
+
msgstr ""
|
1665 |
+
|
1666 |
+
#: lib/help.php:62
|
1667 |
+
msgid "Locked out of your site / Fatal error / WordPress crash?"
|
1668 |
msgstr ""
|
1669 |
|
1670 |
#: lib/help.php:63
|
1671 |
+
msgid "Failed installation (\"Error: The firewall is not loaded\")?"
|
1672 |
+
msgstr ""
|
1673 |
+
|
1674 |
+
#: lib/help.php:64
|
1675 |
+
msgid "Blank page after INSTALLING NinjaFirewall?"
|
1676 |
+
msgstr ""
|
1677 |
+
|
1678 |
+
#: lib/help.php:65
|
1679 |
+
msgid "Blank page after UNINSTALLING NinjaFirewall?"
|
1680 |
+
msgstr ""
|
1681 |
+
|
1682 |
+
#: lib/help.php:66
|
1683 |
+
msgid "500 Internal Server Error?"
|
1684 |
+
msgstr ""
|
1685 |
+
|
1686 |
+
#: lib/help.php:67
|
1687 |
+
msgid "\"Cannot connect to WordPress database\" error message?"
|
1688 |
+
msgstr ""
|
1689 |
+
|
1690 |
+
#: lib/help.php:68
|
1691 |
+
msgid "How to disable NinjaFirewall?"
|
1692 |
+
msgstr ""
|
1693 |
+
|
1694 |
+
#: lib/help.php:69
|
1695 |
+
msgid "Lost password (brute-force protection)?"
|
1696 |
+
msgstr ""
|
1697 |
+
|
1698 |
+
#: lib/help.php:70
|
1699 |
+
msgid "Blocked visitors?"
|
1700 |
+
msgstr ""
|
1701 |
+
|
1702 |
+
#: lib/help.php:71
|
1703 |
+
msgid "Exporting NinjaFirewall's configuration"
|
1704 |
+
msgstr ""
|
1705 |
+
|
1706 |
+
#: lib/help.php:72 lib/help.php:96
|
1707 |
+
msgid "Click here."
|
1708 |
+
msgstr ""
|
1709 |
+
|
1710 |
+
#: lib/help.php:75
|
1711 |
+
msgid "NinjaFirewall troubleshooter script"
|
1712 |
+
msgstr ""
|
1713 |
+
|
1714 |
+
#: lib/help.php:77
|
1715 |
+
msgid "Click to download."
|
1716 |
+
msgstr ""
|
1717 |
+
|
1718 |
+
#: lib/help.php:78
|
1719 |
+
msgid "Rename this file to \"wp-check.php\"."
|
1720 |
+
msgstr ""
|
1721 |
+
|
1722 |
+
#: lib/help.php:79
|
1723 |
+
msgid "Upload it into your WordPress root folder."
|
1724 |
+
msgstr ""
|
1725 |
+
|
1726 |
+
#: lib/help.php:80
|
1727 |
+
msgid "Goto http://YOUR WEBSITE/wp-check.php."
|
1728 |
+
msgstr ""
|
1729 |
+
|
1730 |
+
#: lib/help.php:81
|
1731 |
+
msgid "Delete it afterwards."
|
1732 |
+
msgstr ""
|
1733 |
+
|
1734 |
+
#: lib/help.php:84
|
1735 |
+
msgid "FAQ"
|
1736 |
+
msgstr ""
|
1737 |
+
|
1738 |
+
#: lib/help.php:86
|
1739 |
+
msgid ""
|
1740 |
+
"Why is NinjaFirewall different from other security plugins for WordPress?"
|
1741 |
+
msgstr ""
|
1742 |
+
|
1743 |
+
#: lib/help.php:87
|
1744 |
+
msgid "Do I need root privileges to install NinjaFirewall?"
|
1745 |
+
msgstr ""
|
1746 |
+
|
1747 |
+
#: lib/help.php:88
|
1748 |
+
msgid "Does it work with Nginx?"
|
1749 |
+
msgstr ""
|
1750 |
+
|
1751 |
+
#: lib/help.php:89
|
1752 |
+
msgid "Do I need to alter my PHP scripts?"
|
1753 |
+
msgstr ""
|
1754 |
+
|
1755 |
+
#: lib/help.php:90
|
1756 |
+
msgid ""
|
1757 |
+
"Will NinjaFirewall detect the correct IP of my visitors if I am behind a CDN "
|
1758 |
+
"service like Cloudflare or Incapsula?"
|
1759 |
+
msgstr ""
|
1760 |
+
|
1761 |
+
#: lib/help.php:91
|
1762 |
+
msgid ""
|
1763 |
+
"I moved my wp-config.php file to another directory. Will it work with "
|
1764 |
+
"NinjaFirewall?"
|
1765 |
+
msgstr ""
|
1766 |
+
|
1767 |
+
#: lib/help.php:92
|
1768 |
+
msgid "Will it slow down my site?"
|
1769 |
+
msgstr ""
|
1770 |
+
|
1771 |
+
#: lib/help.php:93
|
1772 |
+
msgid "Is there a Microsoft Windows version?"
|
1773 |
+
msgstr ""
|
1774 |
+
|
1775 |
+
#: lib/help.php:94
|
1776 |
+
msgid "Can I add/write my own security rules?"
|
1777 |
+
msgstr ""
|
1778 |
+
|
1779 |
+
#: lib/help.php:95
|
1780 |
+
msgid "Can I migrate my site(s) with NinjaFirewall installed?"
|
1781 |
+
msgstr ""
|
1782 |
+
|
1783 |
+
#: lib/help.php:99
|
1784 |
+
msgid "Help and Support"
|
1785 |
+
msgstr ""
|
1786 |
+
|
1787 |
+
#: lib/help.php:101
|
1788 |
+
msgid "WordPress forum: "
|
1789 |
+
msgstr ""
|
1790 |
+
|
1791 |
+
#: lib/help.php:102
|
1792 |
+
msgid "Online support (Premium customers only): "
|
1793 |
+
msgstr ""
|
1794 |
+
|
1795 |
+
#: lib/help.php:110
|
1796 |
+
msgid "For more information:"
|
1797 |
+
msgstr ""
|
1798 |
+
|
1799 |
+
#: lib/help.php:111
|
1800 |
+
msgid "NinTechNet's updates and security announcements:"
|
1801 |
+
msgstr ""
|
1802 |
+
|
1803 |
+
#: lib/help.php:124 lib/statistics.php:101
|
1804 |
+
msgid "Monthly stats"
|
1805 |
+
msgstr ""
|
1806 |
+
|
1807 |
+
#: lib/help.php:126
|
1808 |
msgid ""
|
1809 |
"Statistics are taken from the current log. It is rotated on the first day of "
|
1810 |
"each month."
|
1811 |
msgstr ""
|
1812 |
|
1813 |
+
#: lib/help.php:128
|
1814 |
#, php-format
|
1815 |
msgid ""
|
1816 |
"You can view the log by clicking on the <a href=\"%s\">Firewall Log</a> menu."
|
1817 |
msgstr ""
|
1818 |
|
1819 |
+
#: lib/help.php:132 lib/statistics.php:113
|
1820 |
msgid "Benchmarks"
|
1821 |
msgstr ""
|
1822 |
|
1823 |
+
#: lib/help.php:134
|
1824 |
msgid ""
|
1825 |
"Benchmarks show the time NinjaFirewall took, in seconds, to process each "
|
1826 |
"request it has blocked."
|
1827 |
msgstr ""
|
1828 |
|
1829 |
+
#: lib/help.php:147
|
1830 |
#, php-format
|
1831 |
msgid ""
|
1832 |
"This option allows you to disable NinjaFirewall. It has basically the same "
|
1833 |
"effect as deactivating it from the <a href=\"%s\">Plugins</a> menu page."
|
1834 |
msgstr ""
|
1835 |
|
1836 |
+
#: lib/help.php:149
|
1837 |
msgid "Your site will remain unprotected until you enable it again."
|
1838 |
msgstr ""
|
1839 |
|
1840 |
+
#: lib/help.php:155
|
1841 |
#, php-format
|
1842 |
msgid ""
|
1843 |
"In Debugging mode, NinjaFirewall will not block or sanitise suspicious "
|
1845 |
"display <code>DEBUG_ON</code> in the LEVEL column."
|
1846 |
msgstr ""
|
1847 |
|
1848 |
+
#: lib/help.php:156
|
1849 |
msgid ""
|
1850 |
"We recommend to run it in Debugging Mode for at least 24 hours after "
|
1851 |
"installing it on a new site and then to keep an eye on the firewall log "
|
1854 |
"wrongly triggered."
|
1855 |
msgstr ""
|
1856 |
|
1857 |
+
#: lib/help.php:161
|
1858 |
msgid ""
|
1859 |
"This option will anonymize IP addresses in the firewall log by removing "
|
1860 |
"their last 3 characters."
|
1861 |
msgstr ""
|
1862 |
|
1863 |
+
#: lib/help.php:161
|
1864 |
msgid ""
|
1865 |
"It does not apply to private IP addresses and the Login Protection feature."
|
1866 |
msgstr ""
|
1867 |
|
1868 |
+
#: lib/help.php:162
|
1869 |
msgid ""
|
1870 |
"Note that it will affect only IP addresses written to the firewall log after "
|
1871 |
"enabling this option."
|
1872 |
msgstr ""
|
1873 |
|
1874 |
+
#: lib/help.php:162
|
1875 |
msgid ""
|
1876 |
"Also, if you are redirecting events to the syslog server (NinjaFirewall "
|
1877 |
"<font color=\"#21759B\">WP+</font> Edition), IP addresses will be anonymized "
|
1878 |
"too."
|
1879 |
msgstr ""
|
1880 |
|
1881 |
+
#: lib/help.php:166
|
1882 |
msgid "Error code and message to return"
|
1883 |
msgstr ""
|
1884 |
|
1885 |
+
#: lib/help.php:168
|
1886 |
msgid ""
|
1887 |
"Lets you customize the HTTP error code returned by NinjaFirewall when "
|
1888 |
"blocking a dangerous request and the message to display to the user."
|
1889 |
msgstr ""
|
1890 |
|
1891 |
+
#: lib/help.php:169
|
1892 |
msgid "You can use any HTML tags and 3 built-in variables:"
|
1893 |
msgstr ""
|
1894 |
|
1895 |
+
#: lib/help.php:170
|
1896 |
msgid "the blocked user IP."
|
1897 |
msgstr ""
|
1898 |
|
1899 |
+
#: lib/help.php:171
|
1900 |
msgid ""
|
1901 |
"the unique incident number as it will appear in the firewall log \"INCIDENT"
|
1902 |
"\" column."
|
1903 |
msgstr ""
|
1904 |
|
1905 |
+
#: lib/help.php:172
|
1906 |
msgid "NinjaFirewall logo."
|
1907 |
msgstr ""
|
1908 |
|
1909 |
+
#: lib/help.php:177
|
1910 |
msgid "Export/import configuration"
|
1911 |
msgstr ""
|
1912 |
|
1913 |
+
#: lib/help.php:179
|
1914 |
#, php-format
|
1915 |
msgid ""
|
1916 |
"This options lets you export you current configuration or import it from "
|
1919 |
"rejected. Note that importing will override all firewall rules and options."
|
1920 |
msgstr ""
|
1921 |
|
1922 |
+
#: lib/help.php:181
|
1923 |
msgid "\"File Check\" configuration will not be exported/imported."
|
1924 |
msgstr ""
|
1925 |
|
1926 |
+
#: lib/help.php:188
|
1927 |
msgid ""
|
1928 |
"NinjaFirewall will automatically backup its configuration (options, policies "
|
1929 |
"and rules) everyday for the last 5 days. If you want to restore its "
|
1930 |
"configuration to an earlier date, select the corresponding file in the list."
|
1931 |
msgstr ""
|
1932 |
|
1933 |
+
#: lib/help.php:202
|
1934 |
#, php-format
|
1935 |
msgid ""
|
1936 |
"Keep in mind, however, that the Firewall Policies apply to any PHP scripts "
|
1938 |
"your WordPress index page."
|
1939 |
msgstr ""
|
1940 |
|
1941 |
+
#: lib/help.php:207
|
1942 |
msgid "Policies overview"
|
1943 |
msgstr ""
|
1944 |
|
1945 |
+
#: lib/help.php:209
|
1946 |
#, php-format
|
1947 |
msgid ""
|
1948 |
"Because NinjaFirewall sits in front of WordPress, it can hook, scan and "
|
1953 |
"<code><a href=\"%s\">$_SERVER</a></code> in HTTP and/or HTTPS mode."
|
1954 |
msgstr ""
|
1955 |
|
1956 |
+
#: lib/help.php:211
|
1957 |
msgid ""
|
1958 |
"Use the options below to enable, disable or to tweak these rules according "
|
1959 |
"to your needs."
|
1960 |
msgstr ""
|
1961 |
|
1962 |
+
#: lib/help.php:218
|
1963 |
msgid "Scan and Sanitise"
|
1964 |
msgstr ""
|
1965 |
|
1966 |
+
#: lib/help.php:220
|
1967 |
msgid ""
|
1968 |
"You can choose to scan and reject dangerous content but also to sanitise "
|
1969 |
"requests and variables. Those two actions are different and can be combined "
|
1970 |
"together for better security."
|
1971 |
msgstr ""
|
1972 |
|
1973 |
+
#: lib/help.php:221
|
1974 |
msgid ""
|
1975 |
"Scan : if anything suspicious is detected, NinjaFirewall will block the "
|
1976 |
"request and return an HTTP error code and message (defined in the \"Firewall "
|
1978 |
"closed immediately."
|
1979 |
msgstr ""
|
1980 |
|
1981 |
+
#: lib/help.php:222
|
1982 |
#, php-format
|
1983 |
msgid ""
|
1984 |
"Sanitise : this option will not block but sanitise the user request by "
|
1989 |
"sanitised."
|
1990 |
msgstr ""
|
1991 |
|
1992 |
+
#: lib/help.php:224
|
1993 |
msgid ""
|
1994 |
"This action will be performed when the filtering process is over, right "
|
1995 |
"before NinjaFirewall forwards the request to your PHP script."
|
1996 |
msgstr ""
|
1997 |
|
1998 |
+
#: lib/help.php:227
|
1999 |
msgid ""
|
2000 |
"If you enabled <code>POST</code> requests sanitising, articles and messages "
|
2001 |
"posted by your visitors could be corrupted with excessive backslashes or "
|
2002 |
"substitution characters."
|
2003 |
msgstr ""
|
2004 |
|
2005 |
+
#: lib/help.php:239
|
2006 |
msgid "Whether to filter HTTP and/or HTTPS traffic"
|
2007 |
msgstr ""
|
2008 |
|
2009 |
+
#: lib/help.php:242
|
2010 |
msgid "File Uploads:"
|
2011 |
msgstr ""
|
2012 |
|
2013 |
+
#: lib/help.php:242
|
2014 |
msgid "whether to allow/disallow file uploads."
|
2015 |
msgstr ""
|
2016 |
|
2017 |
+
#: lib/help.php:243
|
2018 |
msgid "Sanitise filenames:"
|
2019 |
msgstr ""
|
2020 |
|
2021 |
+
#: lib/help.php:243
|
2022 |
msgid ""
|
2023 |
"any character that is not a letter <code>a-zA-Z</code>, a digit <code>0-9</"
|
2024 |
"code>, a dot <code>.</code>, a hyphen <code>-</code> or an underscore "
|
2026 |
"substitution character."
|
2027 |
msgstr ""
|
2028 |
|
2029 |
+
#: lib/help.php:246
|
2030 |
msgid ""
|
2031 |
"Whether to block direct access to PHP files located in specific WordPress "
|
2032 |
"directories."
|
2033 |
msgstr ""
|
2034 |
|
2035 |
+
#: lib/help.php:247
|
2036 |
msgid ""
|
2037 |
"enabling this policy will block any attempt (e.g., exploiting a "
|
2038 |
"vulnerability, using a backdoor etc) to modify some important WordPress "
|
2040 |
"regarding the issue. It is enabled by default."
|
2041 |
msgstr ""
|
2042 |
|
2043 |
+
#: lib/help.php:248
|
2044 |
msgid ""
|
2045 |
"enabling this policy will block any attempt (e.g., exploiting a "
|
2046 |
"vulnerability, using a backdoor etc) to create a user account. If you allow "
|
2047 |
"user registration, you should not enable it."
|
2048 |
msgstr ""
|
2049 |
|
2050 |
+
#: lib/help.php:249
|
2051 |
#, php-format
|
2052 |
msgid ""
|
2053 |
"many vulnerabilities in plugins are exploited via the admin-ajax.php script. "
|
2056 |
"addresses will not be blocked."
|
2057 |
msgstr ""
|
2058 |
|
2059 |
+
#: lib/help.php:250
|
2060 |
msgid "Protect against username enumeration:"
|
2061 |
msgstr ""
|
2062 |
|
2063 |
+
#: lib/help.php:250
|
2064 |
msgid ""
|
2065 |
"it is possible to enumerate usernames either through the WordPress author "
|
2066 |
"archives, the REST API or the login page. Although this is not a "
|
2072 |
"block the request immediately."
|
2073 |
msgstr ""
|
2074 |
|
2075 |
+
#: lib/help.php:251
|
2076 |
msgid "WordPress REST API:"
|
2077 |
msgstr ""
|
2078 |
|
2079 |
+
#: lib/help.php:251
|
2080 |
msgid ""
|
2081 |
"it allows you to access your WordPress site's data through an easy-to-use "
|
2082 |
"HTTP REST API. Since WordPress 4.7, it is enabled by default. NinjaFirewall "
|
2083 |
"allows you to block any access to that API if you do not intend to use it."
|
2084 |
msgstr ""
|
2085 |
|
2086 |
+
#: lib/help.php:252
|
2087 |
msgid "WordPress XML-RPC API:"
|
2088 |
msgstr ""
|
2089 |
|
2090 |
+
#: lib/help.php:252
|
2091 |
msgid ""
|
2092 |
"XML-RPC is a remote procedure call (RPC) protocol which uses XML to encode "
|
2093 |
"its calls and HTTP as a transport mechanism. WordPress has an XMLRPC API "
|
2098 |
"used in brute-force amplification attacks or to block Pingbacks."
|
2099 |
msgstr ""
|
2100 |
|
2101 |
+
#: lib/help.php:253
|
2102 |
msgid ""
|
2103 |
"Block <code>POST</code> requests in the themes folder <code>/wp-content/"
|
2104 |
"themes</code>:"
|
2105 |
msgstr ""
|
2106 |
|
2107 |
+
#: lib/help.php:253
|
2108 |
msgid ""
|
2109 |
"this option can be useful to block hackers from installing backdoor in the "
|
2110 |
"PHP theme files. However, because some custom themes may include an HTML "
|
2111 |
"form (contact, search form etc), this option is not enabled by default."
|
2112 |
msgstr ""
|
2113 |
|
2114 |
+
#: lib/help.php:254
|
2115 |
msgid "Force SSL for admin and logins <code>FORCE_SSL_ADMIN</code>:"
|
2116 |
msgstr ""
|
2117 |
|
2118 |
+
#: lib/help.php:254
|
2119 |
msgid ""
|
2120 |
"enable this option when you want to secure logins and the admin area so that "
|
2121 |
"both passwords and cookies are never sent in the clear. Ensure that you can "
|
2123 |
"you will lock yourself out of your site!"
|
2124 |
msgstr ""
|
2125 |
|
2126 |
+
#: lib/help.php:255
|
2127 |
msgid "Disable the plugin and theme editor <code>DISALLOW_FILE_EDIT</code>:"
|
2128 |
msgstr ""
|
2129 |
|
2130 |
+
#: lib/help.php:255
|
2131 |
msgid ""
|
2132 |
"disabling the plugin and theme editor provides an additional layer of "
|
2133 |
"security if a hacker gains access to a well-privileged user account."
|
2134 |
msgstr ""
|
2135 |
|
2136 |
+
#: lib/help.php:256
|
2137 |
msgid ""
|
2138 |
"Disable plugin and theme update/installation <code>DISALLOW_FILE_MODS</code>:"
|
2139 |
msgstr ""
|
2140 |
|
2141 |
+
#: lib/help.php:256
|
2142 |
msgid ""
|
2143 |
"this option will block users being able to use the plugin and theme "
|
2144 |
"installation/update functionality from the WordPress admin area. Setting "
|
2145 |
"this constant also disables the Plugin and Theme editor."
|
2146 |
msgstr ""
|
2147 |
|
2148 |
+
#: lib/help.php:257
|
2149 |
+
msgid ""
|
2150 |
+
"Disable the fatal error handler <code>WP_DISABLE_FATAL_ERROR_HANDLER</code>:"
|
2151 |
msgstr ""
|
2152 |
|
2153 |
+
#: lib/help.php:257
|
2154 |
msgid ""
|
2155 |
"this option will disable the WSOD protection introduced in WordPress 5.1."
|
2156 |
msgstr ""
|
2157 |
|
2158 |
+
#: lib/help.php:265
|
2159 |
msgid "Whether to scan and/or sanitise the <code>GET</code> variable."
|
2160 |
msgstr ""
|
2161 |
|
2162 |
+
#: lib/help.php:268
|
2163 |
msgid "Whether to scan and/or sanitise the <code>POST</code> variable."
|
2164 |
msgstr ""
|
2165 |
|
2166 |
+
#: lib/help.php:269
|
2167 |
msgid "Decode Base64-encoded <code>POST</code> variable:"
|
2168 |
msgstr ""
|
2169 |
|
2170 |
+
#: lib/help.php:269
|
2171 |
msgid ""
|
2172 |
"NinjaFirewall will decode and scan base64 encoded values in order to detect "
|
2173 |
"obfuscated malicious code. This option is only available for the <code>POST</"
|
2174 |
"code> variable."
|
2175 |
msgstr ""
|
2176 |
|
2177 |
+
#: lib/help.php:272
|
2178 |
msgid "Whether to sanitise the <code>REQUEST</code> variable."
|
2179 |
msgstr ""
|
2180 |
|
2181 |
+
#: lib/help.php:275
|
2182 |
msgid "Whether to scan and/or sanitise cookies."
|
2183 |
msgstr ""
|
2184 |
|
2185 |
+
#: lib/help.php:278
|
2186 |
msgid "Whether to scan and/or sanitise <code>HTTP_USER_AGENT</code> requests."
|
2187 |
msgstr ""
|
2188 |
|
2189 |
+
#: lib/help.php:279
|
2190 |
msgid "Block suspicious bots/scanners:"
|
2191 |
msgstr ""
|
2192 |
|
2193 |
+
#: lib/help.php:279
|
2194 |
msgid ""
|
2195 |
"rejects some known bots, scanners and various malicious scripts attempting "
|
2196 |
"to access your blog."
|
2197 |
msgstr ""
|
2198 |
|
2199 |
+
#: lib/help.php:282
|
2200 |
msgid "Whether to scan and/or sanitise <code>HTTP_REFERER</code> requests."
|
2201 |
msgstr ""
|
2202 |
|
2203 |
+
#: lib/help.php:283
|
2204 |
msgid ""
|
2205 |
"Block POST requests that do not have an <code>HTTP_REFERER</code> header:"
|
2206 |
msgstr ""
|
2207 |
|
2208 |
+
#: lib/help.php:283
|
2209 |
msgid ""
|
2210 |
"this option will block any <code>POST</code> request that does not have a "
|
2211 |
"Referrer header (<code>HTTP_REFERER</code> variable). If you need external "
|
2216 |
"default."
|
2217 |
msgstr ""
|
2218 |
|
2219 |
+
#: lib/help.php:286
|
2220 |
msgid "Block localhost IP in <code>GET/POST</code> requests:"
|
2221 |
msgstr ""
|
2222 |
|
2223 |
+
#: lib/help.php:286
|
2224 |
msgid ""
|
2225 |
"this option will block any <code>GET</code> or <code>POST</code> request "
|
2226 |
"containing the localhost IP (127.0.0.1). It can be useful to block SQL "
|
2227 |
"dumpers and various hacker's shell scripts."
|
2228 |
msgstr ""
|
2229 |
|
2230 |
+
#: lib/help.php:287
|
2231 |
msgid "Block HTTP requests with an IP in the <code>HTTP_HOST</code> header:"
|
2232 |
msgstr ""
|
2233 |
|
2234 |
+
#: lib/help.php:287
|
2235 |
#, php-format
|
2236 |
msgid ""
|
2237 |
"this option will reject any request using an IP instead of a domain name in "
|
2241 |
"than domain names."
|
2242 |
msgstr ""
|
2243 |
|
2244 |
+
#: lib/help.php:288
|
2245 |
msgid "Scan traffic coming from localhost and private IP address spaces:"
|
2246 |
msgstr ""
|
2247 |
|
2248 |
+
#: lib/help.php:288
|
2249 |
msgid ""
|
2250 |
"this option will allow the firewall to scan traffic from all non-routable "
|
2251 |
"private IPs (IPv4 and IPv6) as well as the localhost IP. We recommend to "
|
2253 |
"interconnected)."
|
2254 |
msgstr ""
|
2255 |
|
2256 |
+
#: lib/help.php:297
|
2257 |
msgid ""
|
2258 |
"In addition to filtering incoming requests, NinjaFirewall can also hook the "
|
2259 |
"HTTP response in order to alter its headers. Those modifications can help to "
|
2260 |
"mitigate threats such as XSS, phishing and clickjacking attacks."
|
2261 |
msgstr ""
|
2262 |
|
2263 |
+
#: lib/help.php:299
|
2264 |
msgid ""
|
2265 |
"Set <code>X-Content-Type-Options</code> to protect against MIME type "
|
2266 |
"confusion attacks:"
|
2267 |
msgstr ""
|
2268 |
|
2269 |
+
#: lib/help.php:299
|
2270 |
msgid ""
|
2271 |
"this header will send the nosniff value to instruct the browser to disable "
|
2272 |
"content or MIME sniffing and to use the content-type returned by the server. "
|
2275 |
"such as MIME Confusion Attacks."
|
2276 |
msgstr ""
|
2277 |
|
2278 |
+
#: lib/help.php:300
|
2279 |
msgid ""
|
2280 |
"Set <code>X-Frame-Options</code> to protect against clickjacking attempts:"
|
2281 |
msgstr ""
|
2282 |
|
2283 |
+
#: lib/help.php:300
|
2284 |
msgid ""
|
2285 |
"this header indicates a policy whether a browser must not allow to render a "
|
2286 |
"page in a <frame> or <iframe>. Hosts can declare this policy in "
|
2289 |
"NinjaFirewall accepts two different values:"
|
2290 |
msgstr ""
|
2291 |
|
2292 |
+
#: lib/help.php:302
|
2293 |
msgid ""
|
2294 |
"a browser receiving content with this header must not display this content "
|
2295 |
"in any frame from a page of different origin than the content itself."
|
2296 |
msgstr ""
|
2297 |
|
2298 |
+
#: lib/help.php:303
|
2299 |
msgid ""
|
2300 |
"a browser receiving content with this header must not display this content "
|
2301 |
"in any frame."
|
2302 |
msgstr ""
|
2303 |
|
2304 |
+
#: lib/help.php:306
|
2305 |
msgid "NinjaFirewall does not support the <code>ALLOW-FROM</code> value."
|
2306 |
msgstr ""
|
2307 |
|
2308 |
+
#: lib/help.php:308
|
2309 |
msgid ""
|
2310 |
"Since v3.1.3, WordPress sets this value to <code>SAMEORIGIN</code> for the "
|
2311 |
"administrator and the login page only."
|
2312 |
msgstr ""
|
2313 |
|
2314 |
+
#: lib/help.php:309
|
2315 |
msgid ""
|
2316 |
"Set <code>X-XSS-Protection</code> (IE/Edge, Chrome, Opera and Safari "
|
2317 |
"browsers):"
|
2318 |
msgstr ""
|
2319 |
|
2320 |
+
#: lib/help.php:309
|
2321 |
msgid ""
|
2322 |
"this header allows browsers to identify and block XSS attacks by preventing "
|
2323 |
"malicious scripts from executing. It is enabled by default on all compatible "
|
2324 |
"browsers."
|
2325 |
msgstr ""
|
2326 |
|
2327 |
+
#: lib/help.php:310
|
2328 |
msgid ""
|
2329 |
"If a visitor disabled their browser's XSS filter, you cannot re-enable it "
|
2330 |
"with that option."
|
2331 |
msgstr ""
|
2332 |
|
2333 |
+
#: lib/help.php:312
|
2334 |
msgid ""
|
2335 |
"Force <code>HttpOnly</code> flag on all cookies to mitigate XSS attacks:"
|
2336 |
msgstr ""
|
2337 |
|
2338 |
+
#: lib/help.php:312
|
2339 |
msgid ""
|
2340 |
"adding this flag to cookies helps to mitigate the risk of cross-site "
|
2341 |
"scripting by preventing them from being accessed through client-side "
|
2346 |
"sets that flag on the logged in user cookies only."
|
2347 |
msgstr ""
|
2348 |
|
2349 |
+
#: lib/help.php:313
|
2350 |
msgid ""
|
2351 |
"If your PHP scripts send cookies that need to be accessed from JavaScript, "
|
2352 |
"you should keep that option disabled."
|
2353 |
msgstr ""
|
2354 |
|
2355 |
+
#: lib/help.php:314
|
2356 |
msgid ""
|
2357 |
"Set <code>Strict-Transport-Security</code> (HSTS) to enforce secure "
|
2358 |
"connections to the server:"
|
2359 |
msgstr ""
|
2360 |
|
2361 |
+
#: lib/help.php:314
|
2362 |
msgid ""
|
2363 |
"this policy enforces secure HTTPS connections to the server. Web browsers "
|
2364 |
"will not allow the user to access the web application over insecure HTTP "
|
2366 |
"attacks. Most recent browsers support HSTS headers."
|
2367 |
msgstr ""
|
2368 |
|
2369 |
+
#: lib/help.php:315
|
2370 |
msgid "Set <code>Content-Security-Policy</code>:"
|
2371 |
msgstr ""
|
2372 |
|
2373 |
+
#: lib/help.php:315
|
2374 |
msgid ""
|
2375 |
"this policy helps to mitigate threats such as XSS, phishing and clickjacking "
|
2376 |
"attacks. It covers JavaScript, CSS, HTML frames, web workers, fonts, images, "
|
2377 |
"objects (Java, ActiveX, audio and video files), and other HTML5 features."
|
2378 |
msgstr ""
|
2379 |
|
2380 |
+
#: lib/help.php:315
|
2381 |
msgid ""
|
2382 |
"NinjaFirewall lets you configure the CSP policy separately for the frontend "
|
2383 |
"(blog, website) and the backend (WordPress admin dashboard)."
|
2384 |
msgstr ""
|
2385 |
|
2386 |
+
#: lib/help.php:316
|
2387 |
msgid "Set <code>Referrer-Policy</code>:"
|
2388 |
msgstr ""
|
2389 |
|
2390 |
+
#: lib/help.php:316
|
2391 |
msgid ""
|
2392 |
"this HTTP header governs which referrer information, sent in the Referer "
|
2393 |
"header, should be included with requests made."
|
2394 |
msgstr ""
|
2395 |
|
2396 |
+
#: lib/help.php:320
|
2397 |
msgid "Block PHP built-in wrappers:"
|
2398 |
msgstr ""
|
2399 |
|
2400 |
+
#: lib/help.php:320
|
2401 |
msgid ""
|
2402 |
"PHP has several wrappers for use with the filesystem functions. It is "
|
2403 |
"possible for an attacker to use them to bypass firewalls and various IDS to "
|
2408 |
"request, cookies, user agent and referrer variables."
|
2409 |
msgstr ""
|
2410 |
|
2411 |
+
#: lib/help.php:321
|
2412 |
msgid "Block serialized PHP objects:"
|
2413 |
msgstr ""
|
2414 |
|
2415 |
+
#: lib/help.php:321
|
2416 |
#, php-format
|
2417 |
msgid ""
|
2418 |
"Object Serialization is a PHP feature used by many applications to generate "
|
2423 |
"code> request, cookies, user agent and referrer variables."
|
2424 |
msgstr ""
|
2425 |
|
2426 |
+
#: lib/help.php:322
|
2427 |
msgid "Hide PHP notice and error messages:"
|
2428 |
msgstr ""
|
2429 |
|
2430 |
+
#: lib/help.php:322
|
2431 |
msgid ""
|
2432 |
"this option lets you hide errors returned by your scripts. Such errors can "
|
2433 |
"leak sensitive informations which can be exploited by hackers."
|
2434 |
msgstr ""
|
2435 |
|
2436 |
+
#: lib/help.php:323
|
2437 |
msgid ""
|
2438 |
"Sanitise <code>PHP_SELF</code>, <code>PATH_TRANSLATED</code>, "
|
2439 |
"<code>PATH_INFO</code>:"
|
2440 |
msgstr ""
|
2441 |
|
2442 |
+
#: lib/help.php:323
|
2443 |
msgid ""
|
2444 |
"this option can sanitise any dangerous characters found in those 3 server "
|
2445 |
"variables to prevent various XSS and database injection attempts."
|
2446 |
msgstr ""
|
2447 |
|
2448 |
+
#: lib/help.php:326
|
2449 |
#, php-format
|
2450 |
msgid ""
|
2451 |
"Block the <code>DOCUMENT_ROOT</code> server variable (%s) in HTTP requests:"
|
2452 |
msgstr ""
|
2453 |
|
2454 |
+
#: lib/help.php:326
|
2455 |
msgid ""
|
2456 |
"this option will block scripts attempting to pass the <code>DOCUMENT_ROOT</"
|
2457 |
"code> server variable in a <code>GET</code> or <code>POST</code> request. "
|
2459 |
"legitimate programs do not."
|
2460 |
msgstr ""
|
2461 |
|
2462 |
+
#: lib/help.php:327
|
2463 |
msgid "Block ASCII character 0x00 (NULL byte):"
|
2464 |
msgstr ""
|
2465 |
|
2466 |
+
#: lib/help.php:327
|
2467 |
msgid ""
|
2468 |
"this option will reject any <code>GET</code> or <code>POST</code> request, "
|
2469 |
"<code>HTTP_USER_AGENT</code>, <code>REQUEST_URI</code>, <code>PHP_SELF</"
|
2472 |
"dangerous and should always be rejected."
|
2473 |
msgstr ""
|
2474 |
|
2475 |
+
#: lib/help.php:328
|
2476 |
msgid "Block ASCII control characters 1 to 8 and 14 to 31:"
|
2477 |
msgstr ""
|
2478 |
|
2479 |
+
#: lib/help.php:328
|
2480 |
msgid ""
|
2481 |
"this option will reject any <code>GET</code> or <code>POST</code> request, "
|
2482 |
"<code>HTTP_USER_AGENT</code>, <code>HTTP_REFERER</code> variables containing "
|
2483 |
"ASCII characters from 1 to 8 and 14 to 31."
|
2484 |
msgstr ""
|
2485 |
|
2486 |
+
#: lib/help.php:336
|
2487 |
#, php-format
|
2488 |
msgid ""
|
2489 |
"By default, any logged in WordPress administrator will not be blocked by "
|
2495 |
"enforced."
|
2496 |
msgstr ""
|
2497 |
|
2498 |
+
#: lib/help.php:350
|
2499 |
msgid ""
|
2500 |
"File Guard can detect, in real-time, any access to a PHP file that was "
|
2501 |
"recently modified or created, and alert you about this."
|
2502 |
msgstr ""
|
2503 |
|
2504 |
+
#: lib/help.php:352
|
2505 |
msgid ""
|
2506 |
"If a hacker uploaded a shell script to your site (or injected a backdoor "
|
2507 |
"into an already existing file) and tried to directly access that file using "
|
2512 |
"Notifications\" menu."
|
2513 |
msgstr ""
|
2514 |
|
2515 |
+
#: lib/help.php:353
|
2516 |
msgid ""
|
2517 |
"If you do not want to monitor a folder, you can exclude its full path or a "
|
2518 |
"part of it (e.g., <code>/var/www/public_html/cache/</code> or <code>/cache/</"
|
2521 |
"will ignore it."
|
2522 |
msgstr ""
|
2523 |
|
2524 |
+
#: lib/help.php:354
|
2525 |
msgid ""
|
2526 |
"Multiple values must be comma-separated (e.g., <code>/foo/bar/,/cache/</"
|
2527 |
"code>)."
|
2528 |
msgstr ""
|
2529 |
|
2530 |
+
#: lib/help.php:355
|
2531 |
msgid ""
|
2532 |
"File Guard real-time detection is a totally unique feature, because "
|
2533 |
"NinjaFirewall is the only plugin for WordPress that can hook HTTP requests "
|
2535 |
"package (third-party software, shell script, backdoor etc)."
|
2536 |
msgstr ""
|
2537 |
|
2538 |
+
#: lib/help.php:364 lib/network.php:32 ninjafirewall.php:751
|
2539 |
msgid "Network"
|
2540 |
msgstr ""
|
2541 |
|
2542 |
+
#: lib/help.php:366
|
2543 |
msgid ""
|
2544 |
"Even if NinjaFirewall administration menu is only available to the Super "
|
2545 |
"Admin (from the main site), you can still display its status to all sites in "
|
2547 |
"be visible only to the administrators of those sites."
|
2548 |
msgstr ""
|
2549 |
|
2550 |
+
#: lib/help.php:368
|
2551 |
msgid ""
|
2552 |
"It is recommended to enable this feature as it is the only way to know "
|
2553 |
"whether the sites in your network are protected and if NinjaFirewall "
|
2554 |
"installation was successful."
|
2555 |
msgstr ""
|
2556 |
|
2557 |
+
#: lib/help.php:370
|
2558 |
msgid ""
|
2559 |
"Note that when it is disabled, the icon still remains visible to you, the "
|
2560 |
"Super Admin."
|
2561 |
msgstr ""
|
2562 |
|
2563 |
+
#: lib/help.php:381
|
2564 |
msgid ""
|
2565 |
"File Check lets you perform file integrity monitoring upon request or on a "
|
2566 |
"specific interval."
|
2567 |
msgstr ""
|
2568 |
|
2569 |
+
#: lib/help.php:383
|
2570 |
msgid ""
|
2571 |
"You need to create a snapshot of all your files and then, at a later time, "
|
2572 |
"you can scan your system to compare it with the previous snapshot. Any "
|
2574 |
"file ownership, timestamp as well as file creation and deletion."
|
2575 |
msgstr ""
|
2576 |
|
2577 |
+
#: lib/help.php:384
|
2578 |
#, php-format
|
2579 |
msgid ""
|
2580 |
"Create a snapshot of all files stored in that directory: by default, the "
|
2581 |
"directory is set to WordPress <code>ABSPATH</code> (%s)"
|
2582 |
msgstr ""
|
2583 |
|
2584 |
+
#: lib/help.php:385
|
2585 |
msgid ""
|
2586 |
"Exclude the following files/folders: you can enter a directory or a file "
|
2587 |
"name (e.g., <code>/foo/bar/</code>), or a part of it (e.g., <code>foo</"
|
2588 |
"code>). Or you can exclude a file extension (e.g., <code>.css</code>)."
|
2589 |
msgstr ""
|
2590 |
|
2591 |
+
#: lib/help.php:387
|
2592 |
msgid ""
|
2593 |
"Multiple values must be comma-separated (e.g., <code>/foo/bar/,.css,.png</"
|
2594 |
"code>)."
|
2595 |
msgstr ""
|
2596 |
|
2597 |
+
#: lib/help.php:388
|
2598 |
msgid ""
|
2599 |
"Do not follow symbolic links: by default, NinjaFirewall will not follow "
|
2600 |
"symbolic links."
|
2601 |
msgstr ""
|
2602 |
|
2603 |
+
#: lib/help.php:393
|
2604 |
msgid "Scheduled scans"
|
2605 |
msgstr ""
|
2606 |
|
2607 |
+
#: lib/help.php:394
|
2608 |
msgid ""
|
2609 |
"NinjaFirewall can scan your system on a specific interval (hourly, "
|
2610 |
"twicedaily or daily)."
|
2611 |
msgstr ""
|
2612 |
|
2613 |
+
#: lib/help.php:396
|
2614 |
msgid ""
|
2615 |
"It can either send you a scan report only if changes are detected, or always "
|
2616 |
"send you one after each scan."
|
2617 |
msgstr ""
|
2618 |
|
2619 |
+
#: lib/help.php:398
|
2620 |
msgid ""
|
2621 |
"Reports will be sent to the contact email address defined in the \"Event "
|
2622 |
"Notifications\" menu."
|
2623 |
msgstr ""
|
2624 |
|
2625 |
+
#: lib/help.php:400
|
2626 |
#, php-format
|
2627 |
msgid ""
|
2628 |
"Scheduled scans rely on <a href=\"%s\">WordPress pseudo cron</a> which works "
|
2629 |
"only if your site gets sufficient traffic."
|
2630 |
msgstr ""
|
2631 |
|
2632 |
+
#: lib/help.php:414
|
2633 |
msgid ""
|
2634 |
"NinjaFirewall can alert you by email on specific events triggered within "
|
2635 |
"your blog. They include installations, updates, activations etc, as well as "
|
2640 |
"theme in order to take full control of your website."
|
2641 |
msgstr ""
|
2642 |
|
2643 |
+
#: lib/help.php:425 lib/login_protection.php:21 ninjafirewall.php:759
|
2644 |
msgid "Login Protection"
|
2645 |
msgstr ""
|
2646 |
|
2647 |
+
#: lib/help.php:429
|
2648 |
msgid ""
|
2649 |
"By processing incoming HTTP requests before your blog and any of its "
|
2650 |
"plugins, NinjaFirewall is the only plugin for WordPress able to protect it "
|
2652 |
"from several thousands of different IPs."
|
2653 |
msgstr ""
|
2654 |
|
2655 |
+
#: lib/help.php:431
|
2656 |
msgid ""
|
2657 |
"You can choose two different types of protection: a password or a captcha. "
|
2658 |
"You can enable the protection only if an attack is detected or to keep it "
|
2659 |
"always activated."
|
2660 |
msgstr ""
|
2661 |
|
2662 |
+
#: lib/help.php:433
|
2663 |
msgid "Yes, if under attack:"
|
2664 |
msgstr ""
|
2665 |
|
2666 |
+
#: lib/help.php:435
|
2667 |
msgid ""
|
2668 |
"The protection will be triggered when too many login attempts are detected, "
|
2669 |
"regardless of the offending IP. It blocks the attack instantly and prevents "
|
2672 |
"combination or the captcha code. "
|
2673 |
msgstr ""
|
2674 |
|
2675 |
+
#: lib/help.php:437
|
2676 |
msgid "Always ON:"
|
2677 |
msgstr ""
|
2678 |
|
2679 |
+
#: lib/help.php:439
|
2680 |
msgid ""
|
2681 |
"NinjaFirewall will always enforce the HTTP authentication or captcha "
|
2682 |
"implementation each time you access the login page."
|
2683 |
msgstr ""
|
2684 |
|
2685 |
+
#: lib/help.php:442
|
2686 |
msgid "Type of protection:"
|
2687 |
msgstr ""
|
2688 |
|
2689 |
+
#: lib/help.php:443
|
2690 |
msgid ""
|
2691 |
"<b>Password:</b> It password-protects the login page. NinjaFirewall uses its "
|
2692 |
"own very fast authentication scheme and it is compatible with any HTTP "
|
2693 |
"server (Apache, Nginx, Lighttpd etc)."
|
2694 |
msgstr ""
|
2695 |
|
2696 |
+
#: lib/help.php:444
|
2697 |
msgid "<b>Captcha:</b> It will display a 5-character captcha code."
|
2698 |
msgstr ""
|
2699 |
|
2700 |
+
#: lib/help.php:445
|
2701 |
msgid "Bot protection:"
|
2702 |
msgstr ""
|
2703 |
|
2704 |
+
#: lib/help.php:446
|
2705 |
msgid ""
|
2706 |
"NinjaFirewall will attempt to block bots and scripts immediately, i.e., even "
|
2707 |
"before they start a brute-force attack."
|
2708 |
msgstr ""
|
2709 |
|
2710 |
+
#: lib/help.php:454
|
2711 |
msgid "AUTH log"
|
2712 |
msgstr ""
|
2713 |
|
2714 |
+
#: lib/help.php:457
|
2715 |
msgid ""
|
2716 |
"NinjaFirewall can write to the server Authentication log when the brute-"
|
2717 |
"force protection is triggered. This can be useful to the system "
|
2718 |
"administrator for monitoring purposes or banning IPs at the server level."
|
2719 |
msgstr ""
|
2720 |
|
2721 |
+
#: lib/help.php:459
|
2722 |
msgid ""
|
2723 |
"If you have a shared hosting account, keep this option disabled as you do "
|
2724 |
"not have any access to the server's logs."
|
2725 |
msgstr ""
|
2726 |
|
2727 |
+
#: lib/help.php:461
|
2728 |
msgid ""
|
2729 |
"On Debian-based systems, the log is located in <code>/var/log/auth.log</"
|
2730 |
"code>, and on Red Hat-based systems in <code>/var/log/secure</code>. The "
|
2731 |
"logline uses the following format:"
|
2732 |
msgstr ""
|
2733 |
|
2734 |
+
#: lib/help.php:464
|
2735 |
msgid "AA: the process ID (PID)."
|
2736 |
msgstr ""
|
2737 |
|
2738 |
+
#: lib/help.php:465
|
2739 |
msgid "BB: the user IPv4 or IPv6 address."
|
2740 |
msgstr ""
|
2741 |
|
2742 |
+
#: lib/help.php:466
|
2743 |
msgid "CC: the blog (sub-)domain name."
|
2744 |
msgstr ""
|
2745 |
|
2746 |
+
#: lib/help.php:467
|
2747 |
msgid ""
|
2748 |
"DD: the target: it can be either <code>wp-login.php</code> or <code>XML-RPC "
|
2749 |
"API</code>."
|
2750 |
msgstr ""
|
2751 |
|
2752 |
+
#: lib/help.php:468
|
2753 |
msgid "EE: the time, in minutes, the protection will remain active."
|
2754 |
msgstr ""
|
2755 |
|
2756 |
+
#: lib/help.php:470
|
2757 |
msgid "Sample loglines:"
|
2758 |
msgstr ""
|
2759 |
|
2760 |
+
#: lib/help.php:473
|
2761 |
#, php-format
|
2762 |
msgid ""
|
2763 |
"Be careful if you are behind a load balancer, reverse-proxy or CDN because "
|
2768 |
"otherwise you will likely block legitimate users."
|
2769 |
msgstr ""
|
2770 |
|
2771 |
+
#: lib/help.php:489
|
2772 |
msgid ""
|
2773 |
"The firewall log displays blocked and sanitised requests as well as some "
|
2774 |
"useful information. It has 6 columns:"
|
2775 |
msgstr ""
|
2776 |
|
2777 |
+
#: lib/help.php:490
|
2778 |
msgid "DATE : date and time of the incident."
|
2779 |
msgstr ""
|
2780 |
|
2781 |
+
#: lib/help.php:491
|
2782 |
msgid ""
|
2783 |
"INCIDENT : unique incident number/ID as it was displayed to the blocked user."
|
2784 |
msgstr ""
|
2785 |
|
2786 |
+
#: lib/help.php:492
|
2787 |
msgid ""
|
2788 |
"LEVEL : level of severity (<code>CRITICAL</code>, <code>HIGH</code> or "
|
2789 |
"<code>MEDIUM</code>), information (<code>INFO</code>, <code>UPLOAD</code>) "
|
2790 |
"and debugging mode (<code>DEBUG_ON</code>)."
|
2791 |
msgstr ""
|
2792 |
|
2793 |
+
#: lib/help.php:493
|
2794 |
msgid ""
|
2795 |
"RULE : reference of the NinjaFirewall built-in security rule that triggered "
|
2796 |
"the action. A hyphen (<code>-</code>) instead of a number means it was a "
|
2797 |
"rule from the \"Firewall Policies\" page."
|
2798 |
msgstr ""
|
2799 |
|
2800 |
+
#: lib/help.php:494
|
2801 |
msgid "IP : the user IPv4 or IPv6 address."
|
2802 |
msgstr ""
|
2803 |
|
2804 |
+
#: lib/help.php:495
|
2805 |
msgid ""
|
2806 |
"REQUEST : the HTTP request including offending variables and values as well "
|
2807 |
"as the reason the action was logged."
|
2808 |
msgstr ""
|
2809 |
|
2810 |
+
#: lib/help.php:502
|
2811 |
msgid ""
|
2812 |
"This options lets you configure NinjaFirewall to delete its old logs "
|
2813 |
"automatically. By default, logs are never deleted, <b>even when uninstall "
|
2815 |
"delete old logs."
|
2816 |
msgstr ""
|
2817 |
|
2818 |
+
#: lib/help.php:510
|
2819 |
msgid ""
|
2820 |
"Centralized Logging lets you remotely access the firewall log of all your "
|
2821 |
"NinjaFirewall protected websites from one single installation. You do not "
|
2822 |
"need any longer to log in to individual servers to analyse your log data."
|
2823 |
msgstr ""
|
2824 |
|
2825 |
+
#: lib/help.php:510
|
2826 |
#, php-format
|
2827 |
msgid "<a href=\"%s\">Consult our blog</a> for more info about it."
|
2828 |
msgstr ""
|
2829 |
|
2830 |
+
#: lib/help.php:511
|
2831 |
msgid ""
|
2832 |
"Enter your public key (optional): This is the public key that was created "
|
2833 |
"from your main server."
|
2834 |
msgstr ""
|
2835 |
|
2836 |
+
#: lib/help.php:514
|
2837 |
msgid ""
|
2838 |
"Centralized Logging will keep working even if NinjaFirewall is disabled. "
|
2839 |
"Delete your public key below if you want to disable it."
|
2840 |
msgstr ""
|
2841 |
|
2842 |
+
#: lib/help.php:536 lib/live_log.php:37 lib/live_log.php:75
|
2843 |
+
#: ninjafirewall.php:767
|
2844 |
msgid "Live Log"
|
2845 |
msgstr ""
|
2846 |
|
2847 |
+
#: lib/help.php:538
|
2848 |
msgid ""
|
2849 |
"Live Log lets you watch your blog traffic in real time, just like the Unix "
|
2850 |
"<code>tail -f</code> command. Note that requests sent to static elements "
|
2851 |
"like JS/CSS files and images are not managed by NinjaFirewall."
|
2852 |
msgstr ""
|
2853 |
|
2854 |
+
#: lib/help.php:540
|
2855 |
msgid ""
|
2856 |
"You can enable/disable the monitoring process, change the refresh rate, "
|
2857 |
"clear the screen, enable automatic vertical scrolling, change the log "
|
2858 |
"format, select which traffic you want to view (HTTP/HTTPS) and the timezone."
|
2859 |
msgstr ""
|
2860 |
|
2861 |
+
#: lib/help.php:540
|
2862 |
msgid ""
|
2863 |
"You can also apply filters to include or exclude files and folders "
|
2864 |
"(REQUEST_URI)."
|
2865 |
msgstr ""
|
2866 |
|
2867 |
+
#: lib/help.php:543
|
2868 |
msgid ""
|
2869 |
"Live Log does not make use of any WordPress core file (e.g., <code>admin-"
|
2870 |
"ajax.php</code>). It communicates directly with the firewall without loading "
|
2873 |
"value."
|
2874 |
msgstr ""
|
2875 |
|
2876 |
+
#: lib/help.php:545
|
2877 |
msgid ""
|
2878 |
"If you are using the optional <code>.htninja</code> configuration file to "
|
2879 |
"whitelist your IP, the Live Log feature will not work."
|
2880 |
msgstr ""
|
2881 |
|
2882 |
+
#: lib/help.php:550
|
2883 |
msgid "Log Format"
|
2884 |
msgstr ""
|
2885 |
|
2886 |
+
#: lib/help.php:551
|
2887 |
msgid "You can easily customize the log format. Possible values are:"
|
2888 |
msgstr ""
|
2889 |
|
2890 |
+
#: lib/help.php:552
|
2891 |
msgid "<code>%time</code>: the server date, time and timezone."
|
2892 |
msgstr ""
|
2893 |
|
2894 |
+
#: lib/help.php:553
|
2895 |
msgid "<code>%name</code>: authenticated user (HTTP basic auth), if any."
|
2896 |
msgstr ""
|
2897 |
|
2898 |
+
#: lib/help.php:554
|
2899 |
#, php-format
|
2900 |
msgid ""
|
2901 |
"<code>%client</code>: the client REMOTE_ADDR. If you are behind a load "
|
2902 |
"balancer or CDN, this will be its IP."
|
2903 |
msgstr ""
|
2904 |
|
2905 |
+
#: lib/help.php:555
|
2906 |
msgid "<code>%method</code>: HTTP method (e.g., GET, POST)."
|
2907 |
msgstr ""
|
2908 |
|
2909 |
+
#: lib/help.php:556
|
2910 |
#, php-format
|
2911 |
msgid ""
|
2912 |
"<code>%uri</code>: the URI which was given in order to access the page "
|
2913 |
"(REQUEST_URI)."
|
2914 |
msgstr ""
|
2915 |
|
2916 |
+
#: lib/help.php:557
|
2917 |
msgid "<code>%referrer</code>: the referrer (HTTP_REFERER), if any."
|
2918 |
msgstr ""
|
2919 |
|
2920 |
+
#: lib/help.php:558
|
2921 |
#, php-format
|
2922 |
msgid "<code>%ua</code>: the user-agent (HTTP_USER_AGENT), if any."
|
2923 |
msgstr ""
|
2924 |
|
2925 |
+
#: lib/help.php:559
|
2926 |
#, php-format
|
2927 |
msgid ""
|
2928 |
"<code>%forward</code>: HTTP_X_FORWARDED_FOR, if any. If you are behind a "
|
2929 |
"load balancer or CDN, this will likely be the visitor true IP."
|
2930 |
msgstr ""
|
2931 |
|
2932 |
+
#: lib/help.php:560
|
2933 |
msgid "<code>%host</code>: the requested host (HTTP_HOST), if any."
|
2934 |
msgstr ""
|
2935 |
|
2936 |
+
#: lib/help.php:561
|
2937 |
msgid ""
|
2938 |
"Additionally, you can include any of the following characters: <code>\"</"
|
2939 |
"code>, <code>%</code>, <code>[</code>, <code>]</code>, <code>space</code> "
|
2940 |
"and lowercase letters <code>a-z</code>."
|
2941 |
msgstr ""
|
2942 |
|
2943 |
+
#: lib/help.php:573 lib/rules_editor.php:27 ninjafirewall.php:771
|
2944 |
msgid "Rules Editor"
|
2945 |
msgstr ""
|
2946 |
|
2947 |
+
#: lib/help.php:575
|
2948 |
msgid ""
|
2949 |
"Besides the \"Firewall Policies\", NinjaFirewall includes also a large set "
|
2950 |
"of built-in rules used to protect your blog against the most common "
|
2954 |
"individually:"
|
2955 |
msgstr ""
|
2956 |
|
2957 |
+
#: lib/help.php:577
|
2958 |
msgid ""
|
2959 |
"Check your firewall log and find the rule ID you want to disable (it is "
|
2960 |
"displayed in the <code>RULE</code> column)."
|
2961 |
msgstr ""
|
2962 |
|
2963 |
+
#: lib/help.php:578
|
2964 |
msgid ""
|
2965 |
"Select its ID from the enabled rules list below and click the \"Disable it\" "
|
2966 |
"button."
|
2967 |
msgstr ""
|
2968 |
|
2969 |
+
#: lib/help.php:580
|
2970 |
msgid ""
|
2971 |
"Note: if the <code>RULE</code> column from your log shows a hyphen <code>-</"
|
2972 |
"code> instead of a number, that means that the rule can be changed in the "
|
2973 |
"\"Firewall Policies\" page."
|
2974 |
msgstr ""
|
2975 |
|
2976 |
+
#: lib/help.php:585
|
2977 |
msgid "Credits"
|
2978 |
msgstr ""
|
2979 |
|
2980 |
+
#: lib/help.php:587
|
2981 |
msgid ""
|
2982 |
"NinjaFirewall security rules protect against many vulnerabilities. Some of "
|
2983 |
"them were reported by the following companies, individuals or mailing lists:"
|
2984 |
msgstr ""
|
2985 |
|
2986 |
+
#: lib/help.php:638 lib/overview.php:186
|
2987 |
msgid "Updates"
|
2988 |
msgstr ""
|
2989 |
|
2990 |
+
#: lib/help.php:640
|
2991 |
msgid ""
|
2992 |
"To get the most efficient protection, you can ask NinjaFirewall to "
|
2993 |
"automatically update its security rules."
|
2994 |
msgstr ""
|
2995 |
|
2996 |
+
#: lib/help.php:642
|
2997 |
msgid ""
|
2998 |
"Each time a new vulnerability is found in WordPress or one of its plugins/"
|
2999 |
"themes, a new set of security rules will be made available to protect "
|
3000 |
"against such vulnerability if needed."
|
3001 |
msgstr ""
|
3002 |
|
3003 |
+
#: lib/help.php:644
|
3004 |
msgid ""
|
3005 |
"Only security rules will be downloaded. If a new version of NinjaFirewall "
|
3006 |
"(including new files, options and features) was available, it would have to "
|
3007 |
"be updated from the dashboard plugins menu as usual."
|
3008 |
msgstr ""
|
3009 |
|
3010 |
+
#: lib/help.php:646
|
3011 |
msgid ""
|
3012 |
"We recommend to enable this feature, as it is the <strong>best way to keep "
|
3013 |
"your WordPress secure</strong> against new vulnerabilities."
|
3014 |
msgstr ""
|
3015 |
|
3016 |
+
#: lib/install.php:60
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3017 |
#, php-format
|
3018 |
msgid ""
|
3019 |
+
"Error: Your .htaccess file is not writable, please change its permissions: %s"
|
|
|
3020 |
msgstr ""
|
3021 |
|
3022 |
+
#: lib/install.php:85 ninjafirewall.php:576 ninjafirewall.php:580
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3023 |
#, php-format
|
3024 |
+
msgid "Error: wrong parameter value (%s)."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3025 |
msgstr ""
|
3026 |
|
3027 |
+
#: lib/install.php:92 lib/install.php:168 lib/install.php:189
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3028 |
#, php-format
|
3029 |
msgid ""
|
3030 |
+
"Error: The following file is not writable, please change its permissions: %s"
|
|
|
3031 |
msgstr ""
|
3032 |
|
3033 |
+
#: lib/install.php:115
|
3034 |
#, php-format
|
3035 |
msgid ""
|
3036 |
+
"NinjaFirewall detected that the requested changes seemed to crash your blog. "
|
3037 |
+
"%s"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3038 |
msgstr ""
|
3039 |
|
3040 |
+
#: lib/install.php:116
|
3041 |
msgid ""
|
3042 |
+
"Changes have been undone. You may need to modify your selection and try "
|
3043 |
+
"again."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3044 |
msgstr ""
|
3045 |
|
3046 |
+
#: lib/install.php:126
|
3047 |
#, php-format
|
3048 |
+
msgid "The website front-end returned: HTTP %s %s."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3049 |
msgstr ""
|
3050 |
|
3051 |
+
#: lib/install.php:138
|
3052 |
#, php-format
|
3053 |
+
msgid "The website front-end returned a fatal error: %s."
|
|
|
|
|
3054 |
msgstr ""
|
3055 |
|
3056 |
+
#: lib/install.php:218 lib/install.php:243 lib/install.php:268
|
3057 |
+
#: lib/install.php:289
|
3058 |
+
msgid "File is not writable"
|
3059 |
msgstr ""
|
3060 |
|
3061 |
+
#: lib/install_default.php:164
|
|
|
3062 |
msgid ""
|
3063 |
+
"Error: The installer cannot download the security rules from wordpress.org "
|
3064 |
+
"website."
|
3065 |
msgstr ""
|
3066 |
|
3067 |
+
#: lib/install_default.php:165
|
3068 |
msgid ""
|
3069 |
+
"The server may be temporarily down or you may have network connectivity "
|
3070 |
+
"problems? Please try again in a few minutes."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3071 |
msgstr ""
|
3072 |
|
3073 |
+
#: lib/install_default.php:166
|
3074 |
msgid ""
|
3075 |
+
"NinjaFirewall downloads its rules over an HTTPS secure connection. Maybe "
|
3076 |
+
"your server does not support SSL? You can force NinjaFirewall to use a non-"
|
3077 |
+
"secure HTTP connection by adding the following directive to your <strong>wp-"
|
3078 |
+
"config.php</strong> file:"
|
3079 |
msgstr ""
|
3080 |
|
3081 |
#: lib/live_log.php:29
|
3092 |
"Administrator to the whitelist\" option is enabled."
|
3093 |
msgstr ""
|
3094 |
|
3095 |
+
#: lib/live_log.php:105
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3096 |
msgid "Refresh rate:"
|
3097 |
msgstr ""
|
3098 |
|
3099 |
+
#: lib/live_log.php:107
|
3100 |
msgid "5 seconds"
|
3101 |
msgstr ""
|
3102 |
|
3103 |
+
#: lib/live_log.php:108
|
3104 |
msgid "10 seconds"
|
3105 |
msgstr ""
|
3106 |
|
3107 |
+
#: lib/live_log.php:109
|
3108 |
msgid "20 seconds"
|
3109 |
msgstr ""
|
3110 |
|
3111 |
+
#: lib/live_log.php:110
|
3112 |
msgid "45 seconds"
|
3113 |
msgstr ""
|
3114 |
|
3115 |
+
#: lib/live_log.php:112
|
3116 |
msgid "Clear screen"
|
3117 |
msgstr ""
|
3118 |
|
3119 |
+
#: lib/live_log.php:113
|
3120 |
msgid "Autoscrolling"
|
3121 |
msgstr ""
|
3122 |
|
3123 |
+
#: lib/live_log.php:118
|
3124 |
msgid "Live Log will not display whitelisted users and brute-force attacks."
|
3125 |
msgstr ""
|
3126 |
|
3127 |
+
#: lib/live_log.php:155
|
3128 |
+
msgid "Live Log Options"
|
3129 |
msgstr ""
|
3130 |
|
3131 |
+
#: lib/live_log.php:158
|
3132 |
msgid "Inclusion and exclusion filters (REQUEST_URI)"
|
3133 |
msgstr ""
|
3134 |
|
3135 |
+
#: lib/live_log.php:162
|
3136 |
msgid "Must include"
|
3137 |
msgstr ""
|
3138 |
|
3139 |
+
#: lib/live_log.php:163
|
3140 |
msgid "Must not include"
|
3141 |
msgstr ""
|
3142 |
|
3143 |
+
#: lib/live_log.php:167
|
3144 |
msgid ""
|
3145 |
"Full or partial case-sensitive REQUEST_URI string. Multiple values must be "
|
3146 |
"comma-separated."
|
3147 |
msgstr ""
|
3148 |
|
3149 |
+
#: lib/live_log.php:171
|
3150 |
msgid "Format"
|
3151 |
msgstr ""
|
3152 |
|
3153 |
+
#: lib/live_log.php:174
|
3154 |
msgid "Custom"
|
3155 |
msgstr ""
|
3156 |
|
3157 |
+
#: lib/live_log.php:175
|
3158 |
msgid "See contextual help for available log format."
|
3159 |
msgstr ""
|
3160 |
|
3161 |
+
#: lib/live_log.php:179
|
3162 |
msgid "Display"
|
3163 |
msgstr ""
|
3164 |
|
3165 |
+
#: lib/live_log.php:189
|
3166 |
msgid "Timezone"
|
3167 |
msgstr ""
|
3168 |
|
3169 |
+
#: lib/live_log.php:204
|
3170 |
msgid "Save Live Log Options"
|
3171 |
msgstr ""
|
3172 |
|
3173 |
+
#: lib/live_log.php:243
|
3174 |
msgid "Error: please enter the custom log format."
|
3175 |
msgstr ""
|
3176 |
|
3177 |
+
#: lib/login_protection.php:72 lib/login_protection.php:126
|
3178 |
+
#: lib/login_protection.php:476
|
3179 |
msgid "Access restricted"
|
3180 |
msgstr ""
|
3181 |
|
3182 |
+
#: lib/login_protection.php:81 lib/login_protection.php:130
|
3183 |
+
#: lib/login_protection.php:486
|
3184 |
msgid "Type the characters you see in the picture below:"
|
3185 |
msgstr ""
|
3186 |
|
3187 |
+
#: lib/login_protection.php:186
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3188 |
msgid ""
|
3189 |
+
"GD Support is not available on your server, the CAPTCHA option is disabled."
|
|
|
|
|
|
|
|
|
|
|
3190 |
msgstr ""
|
3191 |
|
3192 |
+
#: lib/login_protection.php:191
|
3193 |
msgid ""
|
3194 |
"Error: GD Support is not available on your server, the captcha protection "
|
3195 |
"will not work!"
|
3196 |
msgstr ""
|
3197 |
|
3198 |
+
#: lib/login_protection.php:201
|
3199 |
msgid "Enable brute force attack protection"
|
3200 |
msgstr ""
|
3201 |
|
3202 |
+
#: lib/login_protection.php:214
|
3203 |
+
msgid "Type of protection"
|
3204 |
msgstr ""
|
3205 |
|
3206 |
+
#: lib/login_protection.php:216
|
3207 |
+
msgid "Username + Password"
|
3208 |
msgstr ""
|
3209 |
|
3210 |
+
#: lib/login_protection.php:217
|
3211 |
+
msgid "Captcha image"
|
3212 |
+
msgstr ""
|
3213 |
+
|
3214 |
+
#: lib/login_protection.php:222
|
3215 |
+
msgid "When to enable the protection"
|
3216 |
msgstr ""
|
3217 |
|
3218 |
+
#: lib/login_protection.php:224
|
3219 |
+
msgid "Always enabled"
|
3220 |
msgstr ""
|
3221 |
|
3222 |
+
#: lib/login_protection.php:225
|
3223 |
+
msgid "When under attack"
|
3224 |
msgstr ""
|
3225 |
|
3226 |
+
#: lib/login_protection.php:235
|
3227 |
msgid "Protect the login page against"
|
3228 |
msgstr ""
|
3229 |
|
3230 |
+
#: lib/login_protection.php:237
|
3231 |
msgid "<code>GET</code> request attacks"
|
3232 |
msgstr ""
|
3233 |
|
3234 |
+
#: lib/login_protection.php:238
|
3235 |
msgid "<code>POST</code> request attacks (default)"
|
3236 |
msgstr ""
|
3237 |
|
3238 |
+
#: lib/login_protection.php:239
|
3239 |
msgid "<code>GET</code> and <code>POST</code> requests attacks"
|
3240 |
msgstr ""
|
3241 |
|
3242 |
+
#: lib/login_protection.php:243
|
3243 |
msgid "Enable protection"
|
3244 |
msgstr ""
|
3245 |
|
3246 |
+
#: lib/login_protection.php:246
|
3247 |
#, php-format
|
3248 |
msgid "For %1$s minutes, if more than %2$s %3$s requests within %4$s seconds."
|
3249 |
msgstr ""
|
3250 |
|
3251 |
+
#: lib/login_protection.php:267
|
3252 |
msgid "HTTP authentication"
|
3253 |
msgstr ""
|
3254 |
|
3255 |
+
#: lib/login_protection.php:269
|
3256 |
msgid "User:"
|
3257 |
msgstr ""
|
3258 |
|
3259 |
+
#: lib/login_protection.php:269
|
3260 |
msgid "Password:"
|
3261 |
msgstr ""
|
3262 |
|
3263 |
+
#: lib/login_protection.php:270
|
3264 |
msgid "User and Password must be from 6 to 32 characters."
|
3265 |
msgstr ""
|
3266 |
|
3267 |
+
#: lib/login_protection.php:271
|
3268 |
msgid "Message (max. 1024 characters, HTML tags allowed)"
|
3269 |
msgstr ""
|
3270 |
|
3271 |
+
#: lib/login_protection.php:282
|
3272 |
msgid "Message"
|
3273 |
msgstr ""
|
3274 |
|
3275 |
+
#: lib/login_protection.php:285
|
3276 |
msgid "This message will be displayed above the captcha. Max. 255 characters."
|
3277 |
msgstr ""
|
3278 |
|
3279 |
+
#: lib/login_protection.php:296
|
3280 |
msgid "Various options"
|
3281 |
msgstr ""
|
3282 |
|
3283 |
+
#: lib/login_protection.php:301
|
3284 |
msgid ""
|
3285 |
"If you are using the Jetpack plugin, blocking access to the XML-RPC API may "
|
3286 |
"prevent it from working correctly."
|
3287 |
msgstr ""
|
3288 |
|
3289 |
+
#: lib/login_protection.php:307
|
3290 |
+
msgid "Apply the protection to the <code>xmlrpc.php</code> script as well"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3291 |
msgstr ""
|
3292 |
|
3293 |
+
#: lib/login_protection.php:315
|
3294 |
+
msgid "Enable bot protection"
|
3295 |
msgstr ""
|
3296 |
|
3297 |
+
#: lib/login_protection.php:329
|
3298 |
+
msgid "Write the incident to the server Authentication log"
|
3299 |
msgstr ""
|
3300 |
|
3301 |
+
#: lib/login_protection.php:335
|
3302 |
msgid "Your server configuration is not compatible with that option."
|
3303 |
msgstr ""
|
3304 |
|
3305 |
+
#: lib/login_protection.php:338
|
3306 |
msgid ""
|
3307 |
+
"The login protection must be set to \"When under attack\" in order to use "
|
3308 |
"this option."
|
3309 |
msgstr ""
|
3310 |
|
3311 |
+
#: lib/login_protection.php:350
|
3312 |
+
msgid "Disable NinjaFirewall's signature on the login protection page"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3313 |
msgstr ""
|
3314 |
|
3315 |
+
#: lib/login_protection.php:362
|
3316 |
msgid "Save Login Protection"
|
3317 |
msgstr ""
|
3318 |
|
3319 |
+
#: lib/login_protection.php:365
|
3320 |
msgid "See our benchmark and stress-test:"
|
3321 |
msgstr ""
|
3322 |
|
3323 |
+
#: lib/login_protection.php:384
|
3324 |
#, php-format
|
3325 |
msgid "Error: %s directory is not writable. Please chmod it to 0777."
|
3326 |
msgstr ""
|
3327 |
|
3328 |
+
#: lib/login_protection.php:458
|
3329 |
msgid "Error: please enter a user name for HTTP authentication."
|
3330 |
msgstr ""
|
3331 |
|
3332 |
+
#: lib/login_protection.php:460
|
3333 |
msgid "Error: HTTP authentication user name is not valid."
|
3334 |
msgstr ""
|
3335 |
|
3336 |
+
#: lib/login_protection.php:466
|
3337 |
msgid "Error: please enter a user name and password for HTTP authentication."
|
3338 |
msgstr ""
|
3339 |
|
3340 |
+
#: lib/login_protection.php:469
|
3341 |
msgid "Error: password must be from 6 to 32 characters."
|
3342 |
msgstr ""
|
3343 |
|
3344 |
+
#: lib/login_protection.php:504
|
3345 |
#, php-format
|
3346 |
msgid "Error: unable to write to the %s configuration file"
|
3347 |
msgstr ""
|
3348 |
|
3349 |
+
#: lib/network.php:24 ninjafirewall.php:1075 ninjafirewall.php:1079
|
3350 |
#, php-format
|
3351 |
msgid "You are not allowed to perform this task (%s)."
|
3352 |
msgstr ""
|
3355 |
msgid "You do not have a multisite network."
|
3356 |
msgstr ""
|
3357 |
|
3358 |
+
#: lib/network.php:65
|
3359 |
msgid "NinjaFirewall Status"
|
3360 |
msgstr ""
|
3361 |
|
3362 |
+
#: lib/network.php:68
|
3363 |
msgid ""
|
3364 |
"Display NinjaFirewall status icon in the admin bar of all sites in the "
|
3365 |
"network"
|
3366 |
msgstr ""
|
3367 |
|
3368 |
+
#: lib/network.php:77
|
3369 |
+
msgid "Save Network options"
|
3370 |
+
msgstr ""
|
3371 |
+
|
3372 |
+
#: lib/overview.php:49
|
3373 |
+
msgid "Make sure you followed the instructions and restarted Openlitespeed."
|
3374 |
+
msgstr ""
|
3375 |
+
|
3376 |
+
#: lib/overview.php:53
|
3377 |
+
#, php-format
|
3378 |
+
msgid ""
|
3379 |
+
"Make sure your HTTP server support the %s directive in .htaccess files. Or "
|
3380 |
+
"maybe you need to restart your HTTP server to apply the changes?"
|
3381 |
+
msgstr ""
|
3382 |
+
|
3383 |
+
#: lib/overview.php:61
|
3384 |
+
#, php-format
|
3385 |
+
msgid ""
|
3386 |
+
"Because PHP caches INI files, you may need to wait up to five minutes before "
|
3387 |
+
"the changes are reloaded by the PHP interpreter. <strong>Please wait for "
|
3388 |
+
"<font id=\"nfw-waf-count\">%d</font> seconds</strong> before trying again "
|
3389 |
+
"(you can navigate away from this page and come back in a few minutes)."
|
3390 |
+
msgstr ""
|
3391 |
+
|
3392 |
+
#: lib/overview.php:69
|
3393 |
+
msgid "Oops! Full WAF mode is not enabled yet."
|
3394 |
+
msgstr ""
|
3395 |
+
|
3396 |
+
#: lib/overview.php:80
|
3397 |
+
msgid "NinjaFirewall (WP Edition)"
|
3398 |
msgstr ""
|
3399 |
|
3400 |
+
#: lib/overview.php:85
|
3401 |
msgid "Congratulations, NinjaFirewall is up and running!"
|
3402 |
msgstr ""
|
3403 |
|
3404 |
+
#: lib/overview.php:86
|
3405 |
msgid ""
|
3406 |
"If you need help, click on the contextual \"Help\" menu tab located in the "
|
3407 |
"upper right corner of each page."
|
3408 |
msgstr ""
|
3409 |
|
3410 |
+
#: lib/overview.php:88
|
3411 |
msgid "A \"Quick Start, FAQ & Troubleshooting Guide\" email was sent to"
|
3412 |
msgstr ""
|
3413 |
|
3414 |
+
#: lib/overview.php:110
|
3415 |
+
msgid "Unknown error"
|
3416 |
msgstr ""
|
3417 |
|
3418 |
+
#: lib/overview.php:114 lib/overview.php:122
|
3419 |
msgid "Firewall"
|
3420 |
msgstr ""
|
3421 |
|
3422 |
+
#: lib/overview.php:130
|
3423 |
+
msgid "Mode"
|
3424 |
msgstr ""
|
3425 |
|
3426 |
+
#: lib/overview.php:135 lib/overview.php:141
|
3427 |
+
#, php-format
|
3428 |
+
msgid "NinjaFirewall is running in %s mode."
|
3429 |
msgstr ""
|
3430 |
|
3431 |
+
#: lib/overview.php:135
|
3432 |
+
msgid "WordPress WAF"
|
3433 |
msgstr ""
|
3434 |
|
3435 |
+
#: lib/overview.php:137
|
3436 |
#, php-format
|
3437 |
+
msgid ""
|
3438 |
+
"For better protection, <a %s>click here</a> to enable its Full WAF mode."
|
3439 |
+
msgstr ""
|
3440 |
+
|
3441 |
+
#: lib/overview.php:137
|
3442 |
+
msgid "Click to install NinjaFirewall in Full WAF mode."
|
3443 |
msgstr ""
|
3444 |
|
3445 |
+
#: lib/overview.php:141
|
3446 |
+
msgid "Full WAF"
|
3447 |
+
msgstr ""
|
3448 |
+
|
3449 |
+
#: lib/overview.php:153
|
3450 |
msgid "Enabled."
|
3451 |
msgstr ""
|
3452 |
|
3453 |
+
#: lib/overview.php:153
|
3454 |
msgid "Click here to turn Debugging Mode off"
|
3455 |
msgstr ""
|
3456 |
|
3457 |
+
#: lib/overview.php:159
|
3458 |
+
msgid "Edition"
|
3459 |
+
msgstr ""
|
3460 |
+
|
3461 |
+
#: lib/overview.php:160
|
3462 |
+
msgid "Need more security? Get Premium!"
|
3463 |
msgstr ""
|
3464 |
|
3465 |
+
#: lib/overview.php:163 lib/utils.php:724
|
3466 |
msgid "Version"
|
3467 |
msgstr ""
|
3468 |
|
3469 |
+
#: lib/overview.php:164
|
3470 |
msgid "Security rules:"
|
3471 |
msgstr ""
|
3472 |
|
3473 |
+
#: lib/overview.php:168
|
3474 |
+
msgid "PHP SAPI"
|
3475 |
+
msgstr ""
|
3476 |
+
|
3477 |
+
#: lib/overview.php:187
|
3478 |
msgid "Security rules updates are disabled."
|
3479 |
msgstr ""
|
3480 |
|
3481 |
+
#: lib/overview.php:187
|
3482 |
msgid ""
|
3483 |
"If you want your blog to be protected against the latest threats, enable "
|
3484 |
"automatic security rules updates."
|
3485 |
msgstr ""
|
3486 |
|
3487 |
+
#: lib/overview.php:195 lib/overview.php:203
|
3488 |
msgid "Admin user"
|
3489 |
msgstr ""
|
3490 |
|
3491 |
+
#: lib/overview.php:196
|
3492 |
#, php-format
|
3493 |
msgid ""
|
3494 |
"You are not whitelisted. Ensure that the \"Do not block WordPress "
|
3497 |
"your administration dashboard."
|
3498 |
msgstr ""
|
3499 |
|
3500 |
+
#: lib/overview.php:204
|
3501 |
msgid "You are whitelisted by the firewall."
|
3502 |
msgstr ""
|
3503 |
|
3504 |
+
#: lib/overview.php:211
|
3505 |
msgid "Restrictions"
|
3506 |
msgstr ""
|
3507 |
|
3508 |
+
#: lib/overview.php:212
|
3509 |
+
msgid "Access to NinjaFirewall is restricted to specific users."
|
3510 |
msgstr ""
|
3511 |
|
3512 |
+
#: lib/overview.php:223
|
3513 |
msgid "User session"
|
3514 |
msgstr ""
|
3515 |
|
3516 |
+
#: lib/overview.php:224
|
3517 |
msgid ""
|
3518 |
"It seems that the user session set by NinjaFirewall was not found by the "
|
3519 |
"firewall script."
|
3520 |
msgstr ""
|
3521 |
|
3522 |
+
#: lib/overview.php:232
|
3523 |
#, php-format
|
3524 |
msgid ""
|
3525 |
"the public key is invalid. Please <a href=\"%s\">check your configuration</"
|
3526 |
"a>."
|
3527 |
msgstr ""
|
3528 |
|
3529 |
+
#: lib/overview.php:236
|
3530 |
msgid "No IP address restriction."
|
3531 |
msgstr ""
|
3532 |
|
3533 |
+
#: lib/overview.php:239
|
3534 |
#, php-format
|
3535 |
msgid "IP address %s is allowed to access NinjaFirewall's log on this server."
|
3536 |
msgstr ""
|
3537 |
|
3538 |
+
#: lib/overview.php:242
|
3539 |
#, php-format
|
3540 |
msgid ""
|
3541 |
"the whitelisted IP is not valid. Please <a href=\"%s\">check your "
|
3542 |
"configuration</a>."
|
3543 |
msgstr ""
|
3544 |
|
3545 |
+
#: lib/overview.php:251
|
3546 |
#, php-format
|
3547 |
msgid "Error: %s"
|
3548 |
msgstr ""
|
3549 |
|
3550 |
+
#: lib/overview.php:266
|
3551 |
msgid "Source IP"
|
3552 |
msgstr ""
|
3553 |
|
3554 |
+
#: lib/overview.php:267
|
3555 |
#, php-format
|
3556 |
msgid "You have a private IP : %s"
|
3557 |
msgstr ""
|
3558 |
|
3559 |
+
#: lib/overview.php:267
|
3560 |
#, php-format
|
3561 |
msgid ""
|
3562 |
"If your site is behind a reverse proxy or a load balancer, ensure that you "
|
3564 |
"otherwise use the NinjaFirewall %s configuration file."
|
3565 |
msgstr ""
|
3566 |
|
3567 |
+
#: lib/overview.php:275 lib/overview.php:285
|
3568 |
msgid "CDN detection"
|
3569 |
msgstr ""
|
3570 |
|
3571 |
+
#: lib/overview.php:276
|
3572 |
#, php-format
|
3573 |
msgid ""
|
3574 |
"%s detected: you seem to be using Cloudflare CDN services. Ensure that you "
|
3576 |
"otherwise use the NinjaFirewall %s configuration file."
|
3577 |
msgstr ""
|
3578 |
|
3579 |
+
#: lib/overview.php:286
|
3580 |
#, php-format
|
3581 |
msgid ""
|
3582 |
"%s detected: you seem to be using Incapsula CDN services. Ensure that you "
|
3584 |
"otherwise use the NinjaFirewall %s configuration file."
|
3585 |
msgstr ""
|
3586 |
|
3587 |
+
#: lib/overview.php:295 lib/overview.php:304
|
3588 |
msgid "Log dir"
|
3589 |
msgstr ""
|
3590 |
|
3591 |
+
#: lib/overview.php:296 lib/overview.php:305
|
3592 |
#, php-format
|
3593 |
msgid "%s directory is not writable! Please chmod it to 0777 or equivalent."
|
3594 |
msgstr ""
|
3595 |
|
3596 |
+
#: lib/overview.php:313
|
3597 |
msgid "Optional configuration file"
|
3598 |
msgstr ""
|
3599 |
|
3600 |
+
#: lib/overview.php:320
|
3601 |
msgid "MySQLi link identifier"
|
3602 |
msgstr ""
|
3603 |
|
3604 |
+
#: lib/overview.php:321
|
3605 |
msgid "A MySQLi link identifier was detected in your <code>.htninja</code>."
|
3606 |
msgstr ""
|
3607 |
|
3608 |
+
#: lib/rules_editor.php:37
|
3609 |
msgid "Error: you did not select a rule to disable."
|
3610 |
msgstr ""
|
3611 |
|
3612 |
+
#: lib/rules_editor.php:39 lib/rules_editor.php:54
|
3613 |
msgid "Error: to change this rule, use the \"Firewall Policies\" menu."
|
3614 |
msgstr ""
|
3615 |
|
3616 |
+
#: lib/rules_editor.php:41 lib/rules_editor.php:56
|
3617 |
msgid "Error: this rule does not exist."
|
3618 |
msgstr ""
|
3619 |
|
3620 |
+
#: lib/rules_editor.php:45
|
3621 |
#, php-format
|
3622 |
msgid "Rule ID %s has been disabled."
|
3623 |
msgstr ""
|
3624 |
|
3625 |
+
#: lib/rules_editor.php:52
|
3626 |
msgid "Error: you did not select a rule to enable."
|
3627 |
msgstr ""
|
3628 |
|
3629 |
+
#: lib/rules_editor.php:60
|
3630 |
#, php-format
|
3631 |
msgid "Rule ID %s has been enabled."
|
3632 |
msgstr ""
|
3633 |
|
3634 |
+
#: lib/rules_editor.php:70
|
3635 |
msgid "Error: no rules found."
|
3636 |
msgstr ""
|
3637 |
|
3638 |
+
#: lib/rules_editor.php:92
|
3639 |
msgid "NinjaFirewall built-in security rules"
|
3640 |
msgstr ""
|
3641 |
|
3642 |
+
#: lib/rules_editor.php:95
|
3643 |
msgid "Select the rule you want to disable or enable"
|
3644 |
msgstr ""
|
3645 |
|
3646 |
+
#: lib/rules_editor.php:99
|
3647 |
msgid "Total rules enabled"
|
3648 |
msgstr ""
|
3649 |
|
3650 |
+
#: lib/rules_editor.php:105 lib/rules_editor.php:134
|
3651 |
msgid "Remote/local file inclusion"
|
3652 |
msgstr ""
|
3653 |
|
3654 |
+
#: lib/rules_editor.php:107 lib/rules_editor.php:136
|
3655 |
msgid "Cross-site scripting"
|
3656 |
msgstr ""
|
3657 |
|
3658 |
+
#: lib/rules_editor.php:109 lib/rules_editor.php:138
|
3659 |
msgid "Code injection"
|
3660 |
msgstr ""
|
3661 |
|
3662 |
+
#: lib/rules_editor.php:111 lib/rules_editor.php:140
|
3663 |
msgid "SQL injection"
|
3664 |
msgstr ""
|
3665 |
|
3666 |
+
#: lib/rules_editor.php:113 lib/rules_editor.php:142
|
3667 |
msgid "Various vulnerability"
|
3668 |
msgstr ""
|
3669 |
|
3670 |
+
#: lib/rules_editor.php:115 lib/rules_editor.php:144
|
3671 |
msgid "Backdoor/shell"
|
3672 |
msgstr ""
|
3673 |
|
3674 |
+
#: lib/rules_editor.php:117 lib/rules_editor.php:146
|
3675 |
msgid "Application specific"
|
3676 |
msgstr ""
|
3677 |
|
3678 |
+
#: lib/rules_editor.php:119 lib/rules_editor.php:148
|
3679 |
msgid "WordPress vulnerability"
|
3680 |
msgstr ""
|
3681 |
|
3682 |
+
#: lib/rules_editor.php:121 lib/rules_editor.php:150
|
3683 |
msgid "Rule ID"
|
3684 |
msgstr ""
|
3685 |
|
3686 |
+
#: lib/rules_editor.php:124
|
3687 |
msgid "Disable it"
|
3688 |
msgstr ""
|
3689 |
|
3690 |
+
#: lib/rules_editor.php:129
|
3691 |
msgid "Total rules disabled"
|
3692 |
msgstr ""
|
3693 |
|
3694 |
+
#: lib/rules_editor.php:154
|
3695 |
msgid "Enable it"
|
3696 |
msgstr ""
|
3697 |
|
3698 |
+
#: lib/rules_update.php:73 lib/wpplus.php:217 ninjafirewall.php:775
|
3699 |
msgid "Rules Update"
|
3700 |
msgstr ""
|
3701 |
|
3707 |
msgid "Security rules have been updated."
|
3708 |
msgstr ""
|
3709 |
|
3710 |
+
#: lib/rules_update.php:94 lib/rules_update.php:429
|
3711 |
msgid "No security rules update available."
|
3712 |
msgstr ""
|
3713 |
|
3714 |
+
#: lib/rules_update.php:112
|
|
|
|
|
|
|
|
|
3715 |
#, php-format
|
3716 |
msgid ""
|
3717 |
+
"It seems that %s is set. Ensure you have another way to run WP-Cron, "
|
3718 |
"otherwise NinjaFirewall automatic updates will not work."
|
3719 |
msgstr ""
|
3720 |
|
3721 |
+
#: lib/rules_update.php:139
|
3722 |
+
msgid "Automatically update NinjaFirewall security rules"
|
3723 |
+
msgstr ""
|
3724 |
+
|
3725 |
+
#: lib/rules_update.php:151
|
3726 |
msgid "Check for updates"
|
3727 |
msgstr ""
|
3728 |
|
3729 |
+
#: lib/rules_update.php:154
|
3730 |
msgid "Every 15 minutes"
|
3731 |
msgstr ""
|
3732 |
|
3733 |
+
#: lib/rules_update.php:155
|
3734 |
msgid "Every 30 minutes"
|
3735 |
msgstr ""
|
3736 |
|
3737 |
+
#: lib/rules_update.php:170
|
|
|
3738 |
msgid ""
|
3739 |
+
"The next scheduled date is in the past! WordPress wp-cron may not be working "
|
3740 |
+
"or may have been disabled."
|
3741 |
msgstr ""
|
3742 |
|
3743 |
+
#: lib/rules_update.php:174
|
3744 |
+
#, php-format
|
3745 |
msgid ""
|
3746 |
+
"Next scheduled update will start in approximately %s day, %s hour(s), %s "
|
3747 |
+
"minute(s) and %s seconds."
|
3748 |
msgstr ""
|
3749 |
|
3750 |
+
#: lib/rules_update.php:182
|
3751 |
msgid "Notification"
|
3752 |
msgstr ""
|
3753 |
|
3754 |
+
#: lib/rules_update.php:184
|
3755 |
msgid "Send me a report by email when security rules have been updated."
|
3756 |
msgstr ""
|
3757 |
|
3758 |
+
#: lib/rules_update.php:185
|
3759 |
msgid ""
|
3760 |
"Reports will be sent to the contact email address defined in the Event "
|
3761 |
"Notifications menu."
|
3762 |
msgstr ""
|
3763 |
|
3764 |
+
#: lib/rules_update.php:195
|
3765 |
+
msgid "The updates log is currently empty."
|
3766 |
msgstr ""
|
3767 |
|
3768 |
+
#: lib/rules_update.php:199
|
3769 |
+
msgid "Updates Log"
|
3770 |
msgstr ""
|
3771 |
|
3772 |
+
#: lib/rules_update.php:206
|
3773 |
+
msgid "Log is flushed automatically."
|
3774 |
msgstr ""
|
3775 |
|
3776 |
+
#: lib/rules_update.php:217
|
3777 |
+
msgid "Save Updates Options"
|
3778 |
msgstr ""
|
3779 |
|
3780 |
+
#: lib/rules_update.php:218
|
3781 |
+
msgid "Check For Updates Now!"
|
3782 |
msgstr ""
|
3783 |
|
3784 |
+
#: lib/rules_update.php:226
|
3785 |
+
msgid "Delete Log"
|
3786 |
msgstr ""
|
3787 |
|
3788 |
+
#: lib/rules_update.php:316
|
3789 |
msgid "Error: Wrong rules format."
|
3790 |
msgstr ""
|
3791 |
|
3792 |
+
#: lib/rules_update.php:325
|
3793 |
msgid "Error: Unable to unserialize the new rules."
|
3794 |
msgstr ""
|
3795 |
|
3796 |
+
#: lib/rules_update.php:333
|
3797 |
msgid "Error: Unserialized rules seem corrupted."
|
3798 |
msgstr ""
|
3799 |
|
3800 |
+
#: lib/rules_update.php:373
|
3801 |
#, php-format
|
3802 |
msgid "Security rules updated to version %s."
|
3803 |
msgstr ""
|
3804 |
|
3805 |
+
#: lib/rules_update.php:409
|
3806 |
msgid ""
|
3807 |
"Error: Your version of NinjaFirewall is too old and is not compatible with "
|
3808 |
"those rules. Please upgrade it."
|
3809 |
msgstr ""
|
3810 |
|
3811 |
+
#: lib/rules_update.php:418
|
3812 |
msgid "Error: Unable to retrieve the new rules version."
|
3813 |
msgstr ""
|
3814 |
|
3815 |
+
#: lib/rules_update.php:436
|
3816 |
#, php-format
|
3817 |
msgid "Error: Server returned a %s HTTP error code (#1)."
|
3818 |
msgstr ""
|
3819 |
|
3820 |
+
#: lib/rules_update.php:443 lib/rules_update.php:509
|
3821 |
msgid "Error: Unable to connect to the remote server"
|
3822 |
msgstr ""
|
3823 |
|
3824 |
+
#: lib/rules_update.php:473
|
3825 |
#, php-format
|
3826 |
msgid "Error: The new rules versions do not match (%s != %s)."
|
3827 |
msgstr ""
|
3828 |
|
3829 |
+
#: lib/rules_update.php:487
|
3830 |
#, php-format
|
3831 |
msgid ""
|
3832 |
"Error: The new rules %s digital signature is not correct. Aborting update, "
|
3833 |
"rules may have been tampered with."
|
3834 |
msgstr ""
|
3835 |
|
3836 |
+
#: lib/rules_update.php:502
|
3837 |
#, php-format
|
3838 |
msgid "Error: Server returned a %s HTTP error code (#2)."
|
3839 |
msgstr ""
|
3840 |
|
3841 |
+
#: lib/rules_update.php:542
|
3842 |
msgid "[NinjaFirewall] Security rules update"
|
3843 |
msgstr ""
|
3844 |
|
3845 |
+
#: lib/rules_update.php:543
|
3846 |
msgid "NinjaFirewall security rules have been updated:"
|
3847 |
msgstr ""
|
3848 |
|
3849 |
+
#: lib/rules_update.php:549
|
3850 |
msgid "Rules version:"
|
3851 |
msgstr ""
|
3852 |
|
3853 |
+
#: lib/rules_update.php:551
|
3854 |
msgid ""
|
3855 |
"This notification can be turned off from NinjaFirewall \"Rules Update\" page."
|
3856 |
msgstr ""
|
3857 |
|
3858 |
+
#: lib/statistics.php:27 ninjafirewall.php:720
|
3859 |
msgid "Statistics"
|
3860 |
msgstr ""
|
3861 |
|
3862 |
+
#: lib/statistics.php:83
|
3863 |
msgid "You do not have any stats for the selected month yet."
|
3864 |
msgstr ""
|
3865 |
|
3866 |
+
#: lib/statistics.php:117
|
3867 |
+
msgid "Average time per request"
|
3868 |
+
msgstr ""
|
3869 |
+
|
3870 |
+
#: lib/statistics.php:118 lib/statistics.php:122 lib/statistics.php:126
|
3871 |
+
msgid "seconds"
|
3872 |
msgstr ""
|
3873 |
|
3874 |
#: lib/statistics.php:121
|
3875 |
+
msgid "Fastest request"
|
3876 |
+
msgstr ""
|
3877 |
+
|
3878 |
+
#: lib/statistics.php:125
|
3879 |
+
msgid "Slowest request"
|
3880 |
+
msgstr ""
|
3881 |
+
|
3882 |
+
#: lib/statistics.php:133
|
3883 |
+
msgid "Critical"
|
3884 |
+
msgstr ""
|
3885 |
+
|
3886 |
+
#: lib/statistics.php:134
|
3887 |
msgid "High"
|
3888 |
msgstr ""
|
3889 |
|
3890 |
+
#: lib/statistics.php:135
|
3891 |
msgid "Medium"
|
3892 |
msgstr ""
|
3893 |
|
3894 |
+
#: lib/statistics.php:192
|
3895 |
+
msgid "Select monthly stats to view..."
|
3896 |
msgstr ""
|
3897 |
|
3898 |
+
#: lib/thickbox.php:37
|
3899 |
+
msgid "Upgrade to Full WAF mode"
|
3900 |
msgstr ""
|
3901 |
|
3902 |
+
#: lib/thickbox.php:42
|
3903 |
+
msgid ""
|
3904 |
+
"In <strong>Full WAF</strong> mode, all scripts located inside the blog "
|
3905 |
+
"installation directories and sub-directories are protected by NinjaFirewall, "
|
3906 |
+
"including those that aren't part of the WordPress package. It gives you the "
|
3907 |
+
"highest possible level of protection: security without compromise."
|
3908 |
msgstr ""
|
3909 |
|
3910 |
+
#: lib/thickbox.php:44
|
3911 |
+
#, php-format
|
3912 |
+
msgid ""
|
3913 |
+
"It works on most websites right out of the box, or may require <a href=\"%s"
|
3914 |
+
"\" title=\"%s\">some very little tweaks</a>. But in a few cases, mostly "
|
3915 |
+
"because of some shared hosting plans restrictions, it may simply not work at "
|
3916 |
+
"all."
|
3917 |
+
msgstr ""
|
3918 |
+
|
3919 |
+
#: lib/thickbox.php:46
|
3920 |
+
msgid ""
|
3921 |
+
"If this happened to you, don't worry: you could still run it in "
|
3922 |
+
"<strong>WordPress WAF</strong> mode. Despite being less powerful than the "
|
3923 |
+
"<b>Full WAF</b> mode, it offers a level of protection and performance much "
|
3924 |
+
"higher than other security plugins."
|
3925 |
+
msgstr ""
|
3926 |
+
|
3927 |
+
#: lib/thickbox.php:52
|
3928 |
+
msgid "(recommended)"
|
3929 |
+
msgstr ""
|
3930 |
+
|
3931 |
+
#: lib/thickbox.php:112
|
3932 |
+
msgid "Select your HTTP server and your PHP server API"
|
3933 |
+
msgstr ""
|
3934 |
+
|
3935 |
+
#: lib/thickbox.php:122
|
3936 |
+
msgid "Other webserver + CGI/FastCGI or PHP-FPM"
|
3937 |
+
msgstr ""
|
3938 |
+
|
3939 |
+
#: lib/thickbox.php:124
|
3940 |
+
msgid "View PHPINFO"
|
3941 |
+
msgstr ""
|
3942 |
+
|
3943 |
+
#: lib/thickbox.php:153
|
3944 |
+
msgid "Select the PHP initialization file supported by your server"
|
3945 |
+
msgstr ""
|
3946 |
+
|
3947 |
+
#: lib/thickbox.php:165
|
3948 |
+
msgid "Let NinjaFirewall make the necessary changes (recommended)."
|
3949 |
+
msgstr ""
|
3950 |
+
|
3951 |
+
#: lib/thickbox.php:166
|
3952 |
+
msgid "I want to make the changes myself."
|
3953 |
+
msgstr ""
|
3954 |
+
|
3955 |
+
#: lib/thickbox.php:168
|
3956 |
+
msgid ""
|
3957 |
+
"Ensure that you have FTP access to your website so that, if there were a "
|
3958 |
+
"problem during the installation of the firewall, you could easily undo the "
|
3959 |
+
"changes."
|
3960 |
+
msgstr ""
|
3961 |
+
|
3962 |
+
#: lib/thickbox.php:171
|
3963 |
+
msgid "Please make the changes below, then click on the \"Finish\" button."
|
3964 |
+
msgstr ""
|
3965 |
+
|
3966 |
+
#: lib/thickbox.php:178
|
3967 |
+
#, php-format
|
3968 |
+
msgid ""
|
3969 |
+
"The %s file must be created, and the following lines of code added to it:"
|
3970 |
+
msgstr ""
|
3971 |
+
|
3972 |
+
#: lib/thickbox.php:179
|
3973 |
+
#, php-format
|
3974 |
+
msgid "The following lines of code must be added to your existing %s file:"
|
3975 |
+
msgstr ""
|
3976 |
+
|
3977 |
+
#: lib/thickbox.php:239
|
3978 |
+
msgid ""
|
3979 |
+
"Log in to your Openlitespeed admin dashboard, click on \"Virtual Host\", "
|
3980 |
+
"select your domain, add the following instructions to the \"php.ini Override"
|
3981 |
+
"\" section in the \"General\" tab, and restart Openlitespeed:"
|
3982 |
+
msgstr ""
|
3983 |
+
|
3984 |
+
#: lib/thickbox.php:246
|
3985 |
+
msgid ""
|
3986 |
+
"Important: if one day you wanted to uninstall NinjaFirewall, do not forget "
|
3987 |
+
"to remove these instructions from your Openlitespeed admin dashboard "
|
3988 |
+
"<strong>before</strong> uninstalling NinjaFirewall because this installer "
|
3989 |
+
"could not do it for you."
|
3990 |
+
msgstr ""
|
3991 |
+
|
3992 |
+
#: lib/thickbox.php:264
|
3993 |
+
msgid "Finish"
|
3994 |
msgstr ""
|
3995 |
|
3996 |
+
#: lib/utils.php:200
|
3997 |
msgid "Blocked user account creation"
|
3998 |
msgstr ""
|
3999 |
|
4000 |
+
#: lib/utils.php:212
|
4001 |
msgid "NinjaFirewall has blocked an attempt to create a user account:"
|
4002 |
msgstr ""
|
4003 |
|
4004 |
+
#: lib/utils.php:215 lib/utils.php:1010
|
4005 |
msgid "Username:"
|
4006 |
msgstr ""
|
4007 |
|
4008 |
+
#: lib/utils.php:216 lib/utils.php:1015 lib/utils.php:1379
|
4009 |
msgid "User IP:"
|
4010 |
msgstr ""
|
4011 |
|
4012 |
+
#: lib/utils.php:219 lib/utils.php:840 lib/utils.php:1018 lib/utils.php:1382
|
4013 |
msgid "Date:"
|
4014 |
msgstr ""
|
4015 |
|
4016 |
+
#: lib/utils.php:228 lib/utils.php:1027 lib/utils.php:1374
|
4017 |
msgid "A PHP backtrace has been attached to this message for your convenience."
|
4018 |
msgstr ""
|
4019 |
|
4020 |
+
#: lib/utils.php:251 lib/utils.php:252 lib/utils.php:1052 lib/utils.php:1053
|
4021 |
+
#: lib/utils.php:1279 lib/utils.php:1280
|
4022 |
msgid "You are not allowed to perform this task."
|
4023 |
msgstr ""
|
4024 |
|
4025 |
+
#: lib/utils.php:519 lib/utils.php:523
|
4026 |
msgid "NinjaFirewall error"
|
4027 |
msgstr ""
|
4028 |
|
4029 |
+
#: lib/utils.php:520
|
4030 |
#, php-format
|
4031 |
msgid ""
|
4032 |
"%s directory cannot be created. Please review your installation and ensure "
|
4033 |
"that %s is writable."
|
4034 |
msgstr ""
|
4035 |
|
4036 |
+
#: lib/utils.php:524
|
4037 |
#, php-format
|
4038 |
msgid ""
|
4039 |
"%s directory is read-only. Please review your installation and ensure that "
|
4040 |
"%s is writable."
|
4041 |
msgstr ""
|
4042 |
|
4043 |
+
#: lib/utils.php:543
|
4044 |
+
msgid "unknown error"
|
4045 |
+
msgstr ""
|
4046 |
+
|
4047 |
+
#: lib/utils.php:545
|
4048 |
msgid "NinjaFirewall fatal error:"
|
4049 |
msgstr ""
|
4050 |
|
4051 |
+
#: lib/utils.php:546
|
4052 |
msgid "Review your installation, your site is not protected."
|
4053 |
msgstr ""
|
4054 |
|
4055 |
+
#: lib/utils.php:563
|
4056 |
msgid "Alert: WordPress console login"
|
4057 |
msgstr ""
|
4058 |
|
4059 |
+
#: lib/utils.php:565
|
4060 |
msgid "-Blog:"
|
4061 |
msgstr ""
|
4062 |
|
4063 |
+
#: lib/utils.php:569
|
4064 |
msgid "Someone just logged in to your WordPress admin console:"
|
4065 |
msgstr ""
|
4066 |
|
4067 |
+
#: lib/utils.php:570
|
4068 |
msgid "-User:"
|
4069 |
msgstr ""
|
4070 |
|
4071 |
+
#: lib/utils.php:571
|
4072 |
msgid "-IP:"
|
4073 |
msgstr ""
|
4074 |
|
4075 |
+
#: lib/utils.php:572
|
4076 |
msgid "-Date:"
|
4077 |
msgstr ""
|
4078 |
|
4079 |
+
#: lib/utils.php:575
|
4080 |
msgid "Support forum"
|
4081 |
msgstr ""
|
4082 |
|
4083 |
+
#: lib/utils.php:636 lib/utils.php:663
|
4084 |
msgid "Forbidden access"
|
4085 |
msgstr ""
|
4086 |
|
4087 |
+
#: lib/utils.php:682
|
4088 |
#, php-format
|
4089 |
msgid ""
|
4090 |
"<strong>ERROR</strong>: Invalid username or password.<br /><a href=\"%s"
|
4091 |
"\">Lost your password</a>?"
|
4092 |
msgstr ""
|
4093 |
|
4094 |
+
#: lib/utils.php:716
|
4095 |
msgid "Plugin"
|
4096 |
msgstr ""
|
4097 |
|
4098 |
+
#: lib/utils.php:716 lib/utils.php:720
|
4099 |
msgid "uploaded"
|
4100 |
msgstr ""
|
4101 |
|
4102 |
+
#: lib/utils.php:716 lib/utils.php:720
|
4103 |
msgid "installed"
|
4104 |
msgstr ""
|
4105 |
|
4106 |
+
#: lib/utils.php:716 lib/utils.php:720
|
4107 |
msgid "activated"
|
4108 |
msgstr ""
|
4109 |
|
4110 |
+
#: lib/utils.php:717
|
4111 |
msgid "updated"
|
4112 |
msgstr ""
|
4113 |
|
4114 |
+
#: lib/utils.php:717
|
4115 |
msgid "deactivated"
|
4116 |
msgstr ""
|
4117 |
|
4118 |
+
#: lib/utils.php:717 lib/utils.php:721
|
4119 |
msgid "deleted"
|
4120 |
msgstr ""
|
4121 |
|
4122 |
+
#: lib/utils.php:717 lib/utils.php:721
|
4123 |
msgid "Name"
|
4124 |
msgstr ""
|
4125 |
|
4126 |
+
#: lib/utils.php:720
|
4127 |
msgid "Theme"
|
4128 |
msgstr ""
|
4129 |
|
4130 |
+
#: lib/utils.php:724
|
4131 |
msgid "upgraded"
|
4132 |
msgstr ""
|
4133 |
|
4134 |
+
#: lib/utils.php:732
|
4135 |
msgid "[NinjaFirewall] Alert:"
|
4136 |
msgstr ""
|
4137 |
|
4138 |
+
#: lib/utils.php:738
|
4139 |
msgid "NinjaFirewall has detected the following activity on your account:"
|
4140 |
msgstr ""
|
4141 |
|
4142 |
+
#: lib/utils.php:835
|
4143 |
msgid "[NinjaFirewall] Alert: Database changes detected"
|
4144 |
msgstr ""
|
4145 |
|
4146 |
+
#: lib/utils.php:836
|
4147 |
msgid ""
|
4148 |
"NinjaFirewall has detected that one or more administrator accounts were "
|
4149 |
"modified in the database:"
|
4150 |
msgstr ""
|
4151 |
|
4152 |
+
#: lib/utils.php:841
|
4153 |
#, php-format
|
4154 |
msgid "Total administrators : %s"
|
4155 |
msgstr ""
|
4156 |
|
4157 |
+
#: lib/utils.php:850
|
4158 |
msgid ""
|
4159 |
"If you cannot see any modifications in the above fields, it is possible that "
|
4160 |
"the administrator password was changed."
|
4161 |
msgstr ""
|
4162 |
|
4163 |
+
#: lib/utils.php:986
|
4164 |
msgid "Blocked privilege escalation attempt"
|
4165 |
msgstr ""
|
4166 |
|
4167 |
+
#: lib/utils.php:1003
|
4168 |
+
msgid ""
|
4169 |
+
"NinjaFirewall has blocked an attempt to modify a user capability by someone "
|
4170 |
+
"who does not have administrative privileges:"
|
4171 |
msgstr ""
|
4172 |
|
4173 |
+
#: lib/utils.php:1064
|
4174 |
msgid ""
|
4175 |
"NinjaFirewall brute-force protection is enabled and you are temporarily "
|
4176 |
"whitelisted."
|
4177 |
msgstr ""
|
4178 |
|
4179 |
+
#: lib/utils.php:1079
|
4180 |
#, php-format
|
4181 |
msgid ""
|
4182 |
"Hey, it seems that you've been using NinjaFirewall for some time. If you "
|
4185 |
"rate it. Thank you!"
|
4186 |
msgstr ""
|
4187 |
|
4188 |
+
#: lib/utils.php:1346
|
4189 |
msgid ""
|
4190 |
"The attempt was blocked and the option was reversed to its original value."
|
4191 |
msgstr ""
|
4192 |
|
4193 |
+
#: lib/utils.php:1351
|
4194 |
msgid "Attempt to modify WordPress settings"
|
4195 |
msgstr ""
|
4196 |
|
4197 |
+
#: lib/utils.php:1352
|
4198 |
msgid ""
|
4199 |
"NinjaFirewall has blocked an attempt to modify some important WordPress "
|
4200 |
"settings by a user that does not have administrative privileges:"
|
4201 |
msgstr ""
|
4202 |
|
4203 |
+
#: lib/utils.php:1353 lib/utils.php:1362
|
4204 |
#, php-format
|
4205 |
msgid "Option: %s"
|
4206 |
msgstr ""
|
4207 |
|
4208 |
+
#: lib/utils.php:1354
|
4209 |
#, php-format
|
4210 |
msgid "Original value: %s"
|
4211 |
msgstr ""
|
4212 |
|
4213 |
+
#: lib/utils.php:1355
|
4214 |
#, php-format
|
4215 |
msgid "Modified value: %s"
|
4216 |
msgstr ""
|
4217 |
|
4218 |
+
#: lib/utils.php:1356 lib/utils.php:1364
|
4219 |
#, php-format
|
4220 |
msgid "Action taken: %s"
|
4221 |
msgstr ""
|
4222 |
|
4223 |
+
#: lib/utils.php:1360
|
4224 |
msgid "Code injection attempt in WordPress options table"
|
4225 |
msgstr ""
|
4226 |
|
4227 |
+
#: lib/utils.php:1361
|
4228 |
msgid ""
|
4229 |
"NinjaFirewall has blocked an attempt to inject code in the WordPress options "
|
4230 |
"table by a user that does not have administrative privileges:"
|
4231 |
msgstr ""
|
4232 |
|
4233 |
+
#: lib/utils.php:1363
|
4234 |
#, php-format
|
4235 |
msgid "Code: %s"
|
4236 |
msgstr ""
|
4237 |
|
4238 |
+
#: lib/utils.php:1384
|
4239 |
msgid ""
|
4240 |
"This protection (and notification) can be turned off from NinjaFirewall "
|
4241 |
"\"Firewall Policies\" page."
|
4242 |
msgstr ""
|
4243 |
|
4244 |
+
#: lib/utils.php:1418
|
4245 |
+
#, php-format
|
4246 |
+
msgid "Error, cannot create the %s folder."
|
4247 |
+
msgstr ""
|
4248 |
+
|
4249 |
+
#: lib/utils.php:1418 lib/utils.php:1426 lib/utils.php:1434
|
4250 |
+
msgid "Check your server permissions and try again."
|
4251 |
+
msgstr ""
|
4252 |
+
|
4253 |
+
#: lib/utils.php:1426
|
4254 |
+
#, php-format
|
4255 |
+
msgid "Error, the %s folder is not writable."
|
4256 |
+
msgstr ""
|
4257 |
+
|
4258 |
+
#: lib/utils.php:1434
|
4259 |
+
#, php-format
|
4260 |
+
msgid "Error, cannot write %s."
|
4261 |
+
msgstr ""
|
4262 |
+
|
4263 |
+
#: lib/wpplus.php:29
|
4264 |
+
msgid "Need more security?"
|
4265 |
msgstr ""
|
4266 |
|
4267 |
+
#: lib/wpplus.php:34
|
4268 |
+
#, php-format
|
4269 |
msgid ""
|
4270 |
+
"Take the time to explore NinjaFirewall %s, a supercharged Edition of our Web "
|
4271 |
+
"Application Firewall. It adds many new exciting features and blazing fast "
|
4272 |
+
"performances to make it the fastest and most powerful security plugin for "
|
4273 |
+
"WordPress, no less!"
|
4274 |
msgstr ""
|
4275 |
|
4276 |
+
#: lib/wpplus.php:44
|
4277 |
+
msgid "New Features"
|
4278 |
+
msgstr ""
|
4279 |
+
|
4280 |
+
#: lib/wpplus.php:49
|
4281 |
msgid "Access Control"
|
4282 |
msgstr ""
|
4283 |
|
4284 |
+
#: lib/wpplus.php:50
|
4285 |
msgid ""
|
4286 |
+
"Access Control is a powerful set of directives that can be used to allow or "
|
4287 |
+
"restrict access to your blog, depending on the <strong>User Role</strong>, "
|
4288 |
+
"<strong>IP</strong>, <strong>Geolocation</strong>, <strong>Requested URL</"
|
4289 |
+
"strong>, <strong>User-agent</strong> visitors behavior (<strong>Rate "
|
4290 |
+
"Limiting</strong>) and <strong>User Input</strong>. Those directives will be "
|
4291 |
+
"processed before the Firewall Policies and NinjaFirewall's built-in security "
|
4292 |
+
"rules."
|
4293 |
msgstr ""
|
4294 |
|
4295 |
+
#: lib/wpplus.php:51
|
4296 |
msgid ""
|
4297 |
"Its main configuration allows you to whitelist WordPress users depending on "
|
4298 |
"their roles, to select the source IP (useful if your site is using a CDN or "
|
4299 |
"behind a reverse-proxy/load balancer), and the HTTP methods all directives "
|
4300 |
+
"should apply to."
|
4301 |
msgstr ""
|
4302 |
|
4303 |
+
#: lib/wpplus.php:54 lib/wpplus.php:55 lib/wpplus.php:63 lib/wpplus.php:64
|
4304 |
+
#: lib/wpplus.php:81 lib/wpplus.php:82 lib/wpplus.php:93 lib/wpplus.php:94
|
4305 |
+
#: lib/wpplus.php:102 lib/wpplus.php:103 lib/wpplus.php:120 lib/wpplus.php:121
|
4306 |
+
#: lib/wpplus.php:129 lib/wpplus.php:130 lib/wpplus.php:147 lib/wpplus.php:148
|
4307 |
+
#: lib/wpplus.php:156 lib/wpplus.php:157 lib/wpplus.php:176 lib/wpplus.php:177
|
4308 |
+
#: lib/wpplus.php:193 lib/wpplus.php:194 lib/wpplus.php:202 lib/wpplus.php:203
|
4309 |
+
#: lib/wpplus.php:222 lib/wpplus.php:223 lib/wpplus.php:231 lib/wpplus.php:232
|
4310 |
+
msgid "Click to enlarge image."
|
4311 |
+
msgstr ""
|
4312 |
+
|
4313 |
+
#: lib/wpplus.php:67
|
4314 |
+
msgid "Geolocation Access Control"
|
4315 |
+
msgstr ""
|
4316 |
+
|
4317 |
+
#: lib/wpplus.php:68
|
4318 |
msgid ""
|
4319 |
+
"Geolocation can be used to block visitors from specific countries. It can "
|
4320 |
+
"apply to the whole blog or only to specific folders or scripts (e.g., /wp-"
|
4321 |
+
"login.php, /xmlrpc.php etc). If you have a theme or a plugin that needs to "
|
4322 |
+
"know your visitors location, you can even ask NinjaFirewall to append the "
|
4323 |
+
"country code to the PHP headers."
|
4324 |
+
msgstr ""
|
4325 |
+
|
4326 |
+
#: lib/wpplus.php:77
|
4327 |
+
msgid "IP Access Control"
|
4328 |
msgstr ""
|
4329 |
|
4330 |
+
#: lib/wpplus.php:78
|
4331 |
msgid ""
|
4332 |
+
"The IP Access Control allows you to permanently allow or block an IP, a "
|
4333 |
+
"whole range of IP addresses <strong>and even AS numbers</strong> (Autonomous "
|
4334 |
+
"System number). IPv4 and IPv6 are fully supported by NinjaFirewall."
|
4335 |
msgstr ""
|
4336 |
|
4337 |
+
#: lib/wpplus.php:88
|
4338 |
msgid ""
|
4339 |
+
"The IP Access Control can slow down aggressive bots, crawlers, web scrapers "
|
4340 |
"or even small HTTP attacks with its <strong>Rate-Limiting</strong> feature."
|
4341 |
msgstr ""
|
4342 |
|
4343 |
+
#: lib/wpplus.php:90
|
4344 |
msgid ""
|
4345 |
"Because it can block attackers <strong>before WordPress and all its plugins "
|
4346 |
+
"are loaded</strong> and can handle a lot of HTTP requests per second, "
|
4347 |
"NinjaFirewall will save precious bandwidth and reduce your server load."
|
4348 |
msgstr ""
|
4349 |
|
4350 |
+
#: lib/wpplus.php:106
|
4351 |
+
msgid "URL Access Control"
|
4352 |
+
msgstr ""
|
4353 |
+
|
4354 |
+
#: lib/wpplus.php:107
|
4355 |
msgid ""
|
4356 |
+
"URL Access Control lets you permanently allow/block any access to one or "
|
4357 |
+
"more PHP scripts based on their <code>SCRIPT_NAME</code>."
|
4358 |
+
msgstr ""
|
4359 |
+
|
4360 |
+
#: lib/wpplus.php:116
|
4361 |
+
msgid "Bot Access Control"
|
4362 |
msgstr ""
|
4363 |
|
4364 |
+
#: lib/wpplus.php:117
|
4365 |
msgid ""
|
4366 |
+
"Bot Access Control allows you block bots, scanners and various annoying "
|
4367 |
+
"crawlers."
|
4368 |
msgstr ""
|
4369 |
|
4370 |
+
#: lib/wpplus.php:133
|
4371 |
+
msgid "User Input Access Control"
|
4372 |
+
msgstr ""
|
4373 |
+
|
4374 |
+
#: lib/wpplus.php:134
|
4375 |
msgid ""
|
4376 |
+
"User Input Access Control allows you to to ignore or block some specific "
|
4377 |
+
"user input."
|
4378 |
msgstr ""
|
4379 |
|
4380 |
+
#: lib/wpplus.php:143
|
4381 |
msgid ""
|
4382 |
+
"The Web Filter can hook the response body, i.e., the output of the HTML "
|
4383 |
+
"page, and search it for some specific keywords. Such filter can be useful to "
|
4384 |
+
"identify errors, hacked content and data leakage issues in the response body "
|
4385 |
+
"sent to your visitors."
|
|
|
|
|
|
|
|
|
4386 |
msgstr ""
|
4387 |
|
4388 |
+
#: lib/wpplus.php:144
|
4389 |
msgid ""
|
4390 |
"In the case of a positive detection, NinjaFirewall will not block the "
|
4391 |
"response body but will send you an alert by email. It can even attach the "
|
4392 |
+
"whole HTML source of the page for your review."
|
4393 |
msgstr ""
|
4394 |
|
4395 |
+
#: lib/wpplus.php:160
|
4396 |
msgid "Antispam"
|
4397 |
msgstr ""
|
4398 |
|
4399 |
+
#: lib/wpplus.php:161
|
4400 |
msgid ""
|
4401 |
+
"The Antispam can protect your blog comment and registration forms against "
|
4402 |
+
"spam. The protection is totally transparent to your visitors and does not "
|
4403 |
+
"require any interaction: no CAPTCHA, no math puzzles or trivia questions. "
|
4404 |
+
"Extremely easy to activate, but powerful enough to make spam bots life as "
|
4405 |
+
"miserable as possible."
|
4406 |
msgstr ""
|
4407 |
|
4408 |
+
#: lib/wpplus.php:162
|
4409 |
msgid ""
|
4410 |
"NinjaFirewall antispam feature works only with WordPress built-in comment "
|
4411 |
"and registration forms."
|
4412 |
msgstr ""
|
4413 |
|
4414 |
+
#: lib/wpplus.php:171
|
4415 |
#, php-format
|
4416 |
msgid ""
|
4417 |
+
"Centralized Logging lets you remotely access the firewall log of all your "
|
4418 |
+
"NinjaFirewall protected websites from one single installation, using the <a "
|
4419 |
+
"href=\"%s\">Centralized Logging</a> feature. You do not need any longer to "
|
4420 |
+
"log in to individual servers to analyse your log data."
|
|
|
4421 |
msgstr ""
|
4422 |
|
4423 |
+
#: lib/wpplus.php:173
|
4424 |
msgid ""
|
4425 |
"There is no limit to the number of websites you can connect to, and they can "
|
4426 |
"be running any edition of NinjaFirewall: WP, <font color=\"#21759B\">WP+</"
|
4427 |
"font>, Pro or <font color=\"red\">Pro+</font>."
|
4428 |
msgstr ""
|
4429 |
|
4430 |
+
#: lib/wpplus.php:184
|
4431 |
msgid "Improved features"
|
4432 |
msgstr ""
|
4433 |
|
4434 |
+
#: lib/wpplus.php:189
|
4435 |
+
msgid "File uploads"
|
4436 |
msgstr ""
|
4437 |
|
4438 |
+
#: lib/wpplus.php:190
|
4439 |
msgid ""
|
4440 |
+
"You can allow uploads while rejecting potentially dangerous files: scripts "
|
4441 |
+
"(PHP, CGI, Ruby, Python, bash/shell), C/C++ source code, binaries (MZ/PE/NE "
|
4442 |
+
"and ELF formats), system files (.htaccess, .htpasswd and PHP INI) and SVG "
|
4443 |
+
"files containing Javascript/XML events. You can easily limit the size of "
|
4444 |
+
"each uploaded file too, without having to modify your PHP configuration."
|
|
|
|
|
|
|
|
|
|
|
4445 |
msgstr ""
|
4446 |
|
4447 |
+
#: lib/wpplus.php:208
|
4448 |
msgid ""
|
4449 |
"The log menu has been revamped too. You can disable the firewall log, delete "
|
4450 |
"the current one, enable its rotation based on the size of the file and, if "
|
4451 |
"any, view each rotated log separately. Quick filtering options are easily "
|
4452 |
"accessible from checkboxes and the log can be exported as a TSV (tab-"
|
4453 |
+
"separated values) text file. You can also easily add any IP to your Access "
|
4454 |
+
"Control whitelist or blacklist."
|
4455 |
msgstr ""
|
4456 |
|
4457 |
+
#: lib/wpplus.php:209
|
4458 |
msgid ""
|
4459 |
"It is also possible to redirect all incidents and events to the Syslog "
|
4460 |
"server:"
|
4461 |
msgstr ""
|
4462 |
|
4463 |
+
#: lib/wpplus.php:219
|
4464 |
+
msgid ""
|
4465 |
+
"You can check for security rules updates <b>as often as every 15 minutes</"
|
4466 |
+
"b>, versus one hour for the free WP Edition. Don't leave your blog at risk!"
|
4467 |
msgstr ""
|
4468 |
|
4469 |
+
#: lib/wpplus.php:233
|
4470 |
msgid ""
|
4471 |
+
"This feature requires that PHP was compiled with the <code>--enable-shmop</"
|
4472 |
+
"code> parameter and that NinjaFirewall is running in \"Full WAF\" mode."
|
|
|
4473 |
msgstr ""
|
4474 |
|
4475 |
+
#: lib/wpplus.php:236
|
4476 |
+
msgid "Shared Memory use"
|
4477 |
msgstr ""
|
4478 |
|
4479 |
+
#: lib/wpplus.php:238
|
4480 |
#, php-format
|
4481 |
msgid ""
|
4482 |
"Although NinjaFirewall is already <a href=\"%s\">much faster than other "
|
4485 |
"order to speed things up even more."
|
4486 |
msgstr ""
|
4487 |
|
4488 |
+
#: lib/wpplus.php:238
|
4489 |
msgid ""
|
4490 |
"This allows easier and faster inter-process communication between the "
|
4491 |
"firewall and the plugin part of NinjaFirewall and, because its data and "
|
4493 |
"need to connect to the database any longer."
|
4494 |
msgstr ""
|
4495 |
|
4496 |
+
#: lib/wpplus.php:238
|
4497 |
msgid ""
|
4498 |
"This dramatically increases the processing speed (there is nothing faster "
|
4499 |
"than RAM), prevents blocking I/O and MySQL slow queries. On a very busy "
|
4500 |
"server like a multi-site network, the firewall processing speed will "
|
4501 |
"increase from 25% to 30%. It can be enabled from the \"Firewall Options\" "
|
4502 |
+
"menu."
|
|
|
|
|
|
|
|
|
|
|
|
|
4503 |
msgstr ""
|
4504 |
|
4505 |
+
#: lib/wpplus.php:245
|
4506 |
msgid ""
|
4507 |
"Learn more</a> about the <font color=\"#21759B\">WP+</font> Edition unique "
|
4508 |
"features."
|
4509 |
msgstr ""
|
4510 |
|
4511 |
+
#: lib/wpplus.php:246
|
4512 |
msgid "Compare</a> the WP and <font color=\"#21759B\">WP+</font> Editions."
|
4513 |
msgstr ""
|
4514 |
|
4593 |
msgid "The PHP msqli extension is missing or not loaded."
|
4594 |
msgstr ""
|
4595 |
|
4596 |
+
#: ninjafirewall.php:82
|
4597 |
+
msgid "Cannot retrieve user options from database (#4)"
|
4598 |
+
msgstr ""
|
4599 |
+
|
4600 |
+
#: ninjafirewall.php:83
|
4601 |
+
msgid "Cannot retrieve user rules from database (#4)"
|
4602 |
+
msgstr ""
|
4603 |
+
|
4604 |
+
#: ninjafirewall.php:109
|
4605 |
msgid ""
|
4606 |
"You do not have \"unfiltered_html\" capability. Please enable it in order to "
|
4607 |
"run NinjaFirewall (or make sure you do not have \"DISALLOW_UNFILTERED_HTML\" "
|
4608 |
"in your wp-config.php script)."
|
4609 |
msgstr ""
|
4610 |
|
4611 |
+
#: ninjafirewall.php:116
|
4612 |
#, php-format
|
4613 |
msgid ""
|
4614 |
"NinjaFirewall requires WordPress 3.3 or greater but your current version is "
|
4615 |
"%s."
|
4616 |
msgstr ""
|
4617 |
|
4618 |
+
#: ninjafirewall.php:120
|
4619 |
#, php-format
|
4620 |
msgid ""
|
4621 |
"NinjaFirewall requires PHP 5.3 or greater but your current version is %s."
|
4622 |
msgstr ""
|
4623 |
|
4624 |
+
#: ninjafirewall.php:124
|
4625 |
#, php-format
|
4626 |
msgid "NinjaFirewall requires the PHP %s extension."
|
4627 |
msgstr ""
|
4628 |
|
4629 |
+
#: ninjafirewall.php:128
|
4630 |
msgid ""
|
4631 |
"You have SAFE_MODE enabled. Please disable it, it is deprecated as of PHP "
|
4632 |
"5.3.0 (see http://php.net/safe-mode)."
|
4633 |
msgstr ""
|
4634 |
|
4635 |
+
#: ninjafirewall.php:132
|
4636 |
msgid "You are not allowed to activate NinjaFirewall."
|
4637 |
msgstr ""
|
4638 |
|
4639 |
+
#: ninjafirewall.php:136
|
4640 |
msgid "NinjaFirewall is not compatible with Microsoft Windows."
|
4641 |
msgstr ""
|
4642 |
|
4643 |
+
#: ninjafirewall.php:288
|
4644 |
+
msgid ""
|
4645 |
+
"All fields will be restored to their default values and any changes you made "
|
4646 |
+
"will be lost. Continue?"
|
4647 |
+
msgstr ""
|
4648 |
+
|
4649 |
+
#: ninjafirewall.php:292
|
4650 |
+
msgid "Missing security nonce, try to reload the page."
|
4651 |
+
msgstr ""
|
4652 |
+
|
4653 |
+
#: ninjafirewall.php:294
|
4654 |
+
msgid "Please select the HTTP server in the list."
|
4655 |
+
msgstr ""
|
4656 |
+
|
4657 |
+
#: ninjafirewall.php:298
|
4658 |
+
msgid ""
|
4659 |
+
"This action will restore the selected configuration file and will override "
|
4660 |
+
"all your current firewall options, policies and rules. Continue?"
|
4661 |
+
msgstr ""
|
4662 |
+
|
4663 |
+
#: ninjafirewall.php:302
|
4664 |
+
msgid ""
|
4665 |
+
"Any character that is not a letter [a-zA-Z], a digit [0-9], a dot [.], a "
|
4666 |
+
"hyphen [-] or an underscore [_] will be removed from the filename and "
|
4667 |
+
"replaced with the substitution character. Continue?"
|
4668 |
+
msgstr ""
|
4669 |
+
|
4670 |
+
#: ninjafirewall.php:304
|
4671 |
+
msgid ""
|
4672 |
+
"Ensure that you can access your admin console over HTTPS before enabling "
|
4673 |
+
"this option, otherwise you will lock yourself out of your site. Continue?"
|
4674 |
+
msgstr ""
|
4675 |
+
|
4676 |
+
#: ninjafirewall.php:308
|
4677 |
+
msgid "Delete the current snapshot ?"
|
4678 |
+
msgstr ""
|
4679 |
+
|
4680 |
+
#: ninjafirewall.php:312
|
4681 |
+
msgid "Invalid character."
|
4682 |
+
msgstr ""
|
4683 |
+
|
4684 |
+
#: ninjafirewall.php:314
|
4685 |
+
msgid "\"admin\" is not acceptable, please choose another user name."
|
4686 |
+
msgstr ""
|
4687 |
+
|
4688 |
+
#: ninjafirewall.php:316
|
4689 |
+
msgid "Please enter max 1024 character only."
|
4690 |
+
msgstr ""
|
4691 |
+
|
4692 |
+
#: ninjafirewall.php:318
|
4693 |
+
msgid "Select when to enable the login protection."
|
4694 |
+
msgstr ""
|
4695 |
+
|
4696 |
+
#: ninjafirewall.php:320
|
4697 |
+
msgid "Enter a name and a password for the HTTP authentication."
|
4698 |
+
msgstr ""
|
4699 |
+
|
4700 |
+
#: ninjafirewall.php:324
|
4701 |
+
msgid "Your public key is not valid."
|
4702 |
+
msgstr ""
|
4703 |
+
|
4704 |
+
#: ninjafirewall.php:328
|
4705 |
+
msgid "No traffic yet, please wait"
|
4706 |
+
msgstr ""
|
4707 |
+
|
4708 |
+
#: ninjafirewall.php:330
|
4709 |
+
msgid "seconds..."
|
4710 |
+
msgstr ""
|
4711 |
+
|
4712 |
+
#: ninjafirewall.php:332
|
4713 |
+
msgid "Error: Live Log did not receive the expected response from your server:"
|
4714 |
+
msgstr ""
|
4715 |
+
|
4716 |
+
#: ninjafirewall.php:334
|
4717 |
+
msgid "Error: URL does not seem to exist (404 Not Found):"
|
4718 |
+
msgstr ""
|
4719 |
+
|
4720 |
+
#: ninjafirewall.php:336
|
4721 |
+
msgid "Error: Cannot find your log file. Try to reload this page."
|
4722 |
+
msgstr ""
|
4723 |
+
|
4724 |
+
#: ninjafirewall.php:338
|
4725 |
+
msgid "Error: The HTTP server returned the following error code:"
|
4726 |
+
msgstr ""
|
4727 |
+
|
4728 |
+
#: ninjafirewall.php:561
|
4729 |
+
msgid "Error: Security nonces do not match. Reload the page and try again."
|
4730 |
+
msgstr ""
|
4731 |
+
|
4732 |
+
#: ninjafirewall.php:567
|
4733 |
+
msgid "Error: NinjaFirewall is disabled"
|
4734 |
+
msgstr ""
|
4735 |
+
|
4736 |
+
#: ninjafirewall.php:572
|
4737 |
+
#, php-format
|
4738 |
+
msgid "Error: missing parameter (%s)."
|
4739 |
+
msgstr ""
|
4740 |
+
|
4741 |
+
#: ninjafirewall.php:715
|
4742 |
msgid "NinjaFirewall: Overview"
|
4743 |
msgstr ""
|
4744 |
|
4745 |
+
#: ninjafirewall.php:720
|
4746 |
msgid "NinjaFirewall: Statistics"
|
4747 |
msgstr ""
|
4748 |
|
4749 |
+
#: ninjafirewall.php:725
|
4750 |
msgid "NinjaFirewall: Firewall Options"
|
4751 |
msgstr ""
|
4752 |
|
4753 |
+
#: ninjafirewall.php:729
|
4754 |
msgid "NinjaFirewall: Firewall Policies"
|
4755 |
msgstr ""
|
4756 |
|
4757 |
+
#: ninjafirewall.php:733
|
4758 |
msgid "NinjaFirewall: File Guard"
|
4759 |
msgstr ""
|
4760 |
|
4761 |
+
#: ninjafirewall.php:737
|
4762 |
msgid "NinjaFirewall: File Check"
|
4763 |
msgstr ""
|
4764 |
|
4765 |
+
#: ninjafirewall.php:747
|
4766 |
msgid "NinjaFirewall: Anti-Malware"
|
4767 |
msgstr ""
|
4768 |
|
4769 |
+
#: ninjafirewall.php:751
|
4770 |
msgid "NinjaFirewall: Network"
|
4771 |
msgstr ""
|
4772 |
|
4773 |
+
#: ninjafirewall.php:755
|
4774 |
msgid "NinjaFirewall: Event Notifications"
|
4775 |
msgstr ""
|
4776 |
|
4777 |
+
#: ninjafirewall.php:759
|
4778 |
msgid "NinjaFirewall: Log-in Protection"
|
4779 |
msgstr ""
|
4780 |
|
4781 |
+
#: ninjafirewall.php:763
|
4782 |
msgid "NinjaFirewall: Firewall Log"
|
4783 |
msgstr ""
|
4784 |
|
4785 |
+
#: ninjafirewall.php:767
|
4786 |
msgid "NinjaFirewall: Live Log"
|
4787 |
msgstr ""
|
4788 |
|
4789 |
+
#: ninjafirewall.php:771
|
4790 |
msgid "NinjaFirewall: Rules Editor"
|
4791 |
msgstr ""
|
4792 |
|
4793 |
+
#: ninjafirewall.php:775
|
4794 |
msgid "NinjaFirewall: Rules Update"
|
4795 |
msgstr ""
|
4796 |
|
4797 |
+
#: ninjafirewall.php:782
|
4798 |
msgid "NinjaFirewall: About"
|
4799 |
msgstr ""
|
4800 |
|
4801 |
+
#: ninjafirewall.php:782
|
4802 |
msgid "About..."
|
4803 |
msgstr ""
|
4804 |
|
4805 |
+
#: ninjafirewall.php:822
|
4806 |
msgid "NinjaFirewall Settings"
|
4807 |
msgstr ""
|
4808 |
|
4809 |
+
#: ninjafirewall.php:830
|
4810 |
msgid "NinjaFirewall is enabled"
|
4811 |
msgstr ""
|
4812 |
|
4813 |
+
#: ninjafirewall.php:1010
|
4814 |
msgid "Access Restricted"
|
4815 |
msgstr ""
|
4816 |
|
4817 |
+
#: ninjafirewall.php:1016
|
4818 |
msgid "Settings"
|
4819 |
msgstr ""
|
4820 |
|
4821 |
+
#: ninjafirewall.php:1017
|
4822 |
msgid "Upgrade to Premium"
|
4823 |
msgstr ""
|
4824 |
|
4825 |
+
#: ninjafirewall.php:1018
|
4826 |
msgid "Rate it!"
|
4827 |
msgstr ""
|
lib/about.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
| GNU General Public License for more details. |
|
17 |
-
+---------------------------------------------------------------------+ i18n+ / sa
|
18 |
*/
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
@@ -31,29 +31,11 @@ if ( $data = @file_get_contents( dirname( plugin_dir_path(__FILE__) ) . '/readme
|
|
31 |
$changelog = __('Error : cannot find changelog :(', 'ninjafirewall');
|
32 |
}
|
33 |
|
34 |
-
|
35 |
-
// (e.g., changelog, privacy policy etc) :
|
36 |
-
echo '<script>
|
37 |
-
function show_table(table_id) {
|
38 |
-
var av_table = [11, 12, 13, 14, 15];
|
39 |
-
for (var i = 0; i < av_table.length; ++i) {
|
40 |
-
if ( table_id == av_table[i] ) {
|
41 |
-
jQuery("#" + table_id).slideDown();
|
42 |
-
} else {
|
43 |
-
jQuery("#" + av_table[i]).slideUp();
|
44 |
-
}
|
45 |
-
};
|
46 |
-
}
|
47 |
-
var dgs=0;
|
48 |
-
function nfw_eg() {
|
49 |
-
setTimeout("nfw_eg()",5);if(dgs<180){++dgs;document.body.style.webkitTransform = "rotate("+dgs+"deg)";document.body.style.msTransform = "rotate("+dgs+"deg)";document.body.style.transform = "rotate("+dgs+"deg)";}document.body.style.overflow="hidden";
|
50 |
-
}
|
51 |
-
</script>
|
52 |
<div class="wrap">
|
53 |
-
<h1><img style="vertical-align:top;width:33px;height:33px;" src="
|
54 |
<br />
|
55 |
-
<center>
|
56 |
-
?>
|
57 |
<table border="0" width="80%" style="padding:10px;-moz-box-shadow:-3px 5px 5px #999;-webkit-box-shadow:-3px 5px 5px #999;box-shadow:-3px 5px 5px #999;background-color:#749BBB;border:1px solid #638DB0;color:#fff;border-radius:6px">
|
58 |
<tr>
|
59 |
<td style="text-align:center">
|
@@ -62,7 +44,7 @@ function nfw_eg() {
|
|
62 |
<font onContextMenu="nfw_eg();return false;">©</font> 2012-<?php echo date( 'Y' ) ?> <a href="https://nintechnet.com/" target="_blank" title="The Ninja Technologies Network" style="color:#fcdc25"><strong>NinTechNet</strong></a>
|
63 |
<br />
|
64 |
The Ninja Technologies Network
|
65 |
-
<
|
66 |
</td>
|
67 |
</tr>
|
68 |
<tr style="text-align:center">
|
@@ -97,17 +79,14 @@ function nfw_eg() {
|
|
97 |
echo '
|
98 |
<br />
|
99 |
<br />
|
100 |
-
<input class="button-secondary" type="button" value="' . __('Changelog', 'ninjafirewall') . '" onclick="
|
101 |
<br />
|
102 |
<br />
|
103 |
-
|
104 |
<div id="11">
|
105 |
<table style="text-align:justify;border:2px #749BBB solid;padding:6px;border-radius:4px" border="0" width="600">
|
106 |
<tr style="text-align:center;">
|
107 |
-
<td><a href="
|
108 |
-
<td><a href="https://
|
109 |
-
<td><a href="http://twitter.com/share?text=NinjaFirewall&url=https://nintechnet.com/" target="_blank"><img title="Share it" src="' . plugins_url() . '/ninjafirewall/images/twitter.png" width="90" height="90" style="border: 0px solid #DFDFDF;padding:0px;-moz-box-shadow:-3px 5px 5px #999;-webkit-box-shadow:-3px 5px 5px #999;box-shadow:-3px 5px 5px #999;background-color:#FCFCFC;"></a></td>
|
110 |
-
<td><a href="https://wordpress.org/support/view/plugin-reviews/ninjafirewall?rate=5#postform"><img title="Rate it" border="0" src="'. plugins_url() .'/ninjafirewall/images/rate.png" width="116" height="28" style="border: 0px solid #DFDFDF;padding:0px;-moz-box-shadow:-3px 5px 5px #999;-webkit-box-shadow:-3px 5px 5px #999;box-shadow:-3px 5px 5px #999;background-color:#FCFCFC;"><br />Rate it on WordPress.org!</a>
|
111 |
</td>
|
112 |
</tr>
|
113 |
</table>
|
@@ -203,5 +182,5 @@ echo '
|
|
203 |
</center>
|
204 |
</div>';
|
205 |
|
206 |
-
|
207 |
// EOF
|
14 |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
| GNU General Public License for more details. |
|
17 |
+
+---------------------------------------------------------------------+ i18n+ / sa / 2
|
18 |
*/
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
31 |
$changelog = __('Error : cannot find changelog :(', 'ninjafirewall');
|
32 |
}
|
33 |
|
34 |
+
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
<div class="wrap">
|
36 |
+
<h1><img style="vertical-align:top;width:33px;height:33px;" src="<?php echo plugins_url( '/ninjafirewall/images/ninjafirewall_32.png' ) ?>"> <?php _e('About', 'ninjafirewall') ?></h1>
|
37 |
<br />
|
38 |
+
<center>
|
|
|
39 |
<table border="0" width="80%" style="padding:10px;-moz-box-shadow:-3px 5px 5px #999;-webkit-box-shadow:-3px 5px 5px #999;box-shadow:-3px 5px 5px #999;background-color:#749BBB;border:1px solid #638DB0;color:#fff;border-radius:6px">
|
40 |
<tr>
|
41 |
<td style="text-align:center">
|
44 |
<font onContextMenu="nfw_eg();return false;">©</font> 2012-<?php echo date( 'Y' ) ?> <a href="https://nintechnet.com/" target="_blank" title="The Ninja Technologies Network" style="color:#fcdc25"><strong>NinTechNet</strong></a>
|
45 |
<br />
|
46 |
The Ninja Technologies Network
|
47 |
+
<br />
|
48 |
</td>
|
49 |
</tr>
|
50 |
<tr style="text-align:center">
|
79 |
echo '
|
80 |
<br />
|
81 |
<br />
|
82 |
+
<input class="button-secondary" type="button" value="' . __('Changelog', 'ninjafirewall') . '" onclick="nfwjs_about_table(12);"> <input class="button-primary" type="button" value="' . __('Spread the word!', 'ninjafirewall') . '" onclick="nfwjs_about_table(11);" active> <input class="button-secondary" type="button" value="' . __('Referral Program', 'ninjafirewall') . '" onclick="nfwjs_about_table(14);"> <input class="button-secondary" type="button" value="' . __('System Info', 'ninjafirewall') . '" onclick="nfwjs_about_table(13);"> <input class="button-secondary" type="button" value="' . __('GDPR Compliance', 'ninjafirewall') . '" onclick="nfwjs_about_table(15);">
|
83 |
<br />
|
84 |
<br />
|
|
|
85 |
<div id="11">
|
86 |
<table style="text-align:justify;border:2px #749BBB solid;padding:6px;border-radius:4px" border="0" width="600">
|
87 |
<tr style="text-align:center;">
|
88 |
+
<td style="width:50%;vertical-align:top"><a href="https://twitter.com/nintechnet"><img border="1" src="'. plugins_url() .'/ninjafirewall/images/twitter_ntn.png" width="116" height="28" target="_blank"><br /><br />'. __('Stay informed about the latest vulnerabilities in WordPress plugins and themes.', 'ninjafirewall') .'</a></td>
|
89 |
+
<td style="width:50%;vertical-align:top"><a href="https://wordpress.org/support/view/plugin-reviews/ninjafirewall?rate=5#postform"><img title="Rate it" border="0" src="'. plugins_url() .'/ninjafirewall/images/rate.png" width="116" height="28" style="border: 0px solid #DFDFDF;padding:0px;-moz-box-shadow:-3px 5px 5px #999;-webkit-box-shadow:-3px 5px 5px #999;box-shadow:-3px 5px 5px #999;background-color:#FCFCFC;"><br /><br />'. __('Rate it on WordPress.org!', 'ninjafirewall') .'</a>
|
|
|
|
|
90 |
</td>
|
91 |
</tr>
|
92 |
</table>
|
182 |
</center>
|
183 |
</div>';
|
184 |
|
185 |
+
// ---------------------------------------------------------------------
|
186 |
// EOF
|
lib/dashboard_widget.php
CHANGED
@@ -83,7 +83,7 @@ function nfw_stats_widget(){
|
|
83 |
</td>
|
84 |
</tr>
|
85 |
</table>
|
86 |
-
<div align="right"><small><a href="admin.php?page=nfsublog">' . __('View firewall log', 'ninjafirewall') .'</a></small></div>';
|
87 |
}
|
88 |
-
|
89 |
// EOF
|
83 |
</td>
|
84 |
</tr>
|
85 |
</table>
|
86 |
+
<div align="right"><small><a href="admin.php?page=nfsubstat">' . __('View statistics', 'ninjafirewall') .'</a></small> - <small><a href="admin.php?page=nfsublog">' . __('View firewall log', 'ninjafirewall') .'</a></small></div>';
|
87 |
}
|
88 |
+
// =====================================================================
|
89 |
// EOF
|
lib/event_notifications.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
| GNU General Public License for more details. |
|
17 |
-
+---------------------------------------------------------------------+ i18n+ / sa
|
18 |
*/
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
@@ -30,18 +30,7 @@ nf_not_allowed( 'block', __LINE__ );
|
|
30 |
|
31 |
$nfw_options = nfw_get_option( 'nfw_options' );
|
32 |
|
33 |
-
echo '<
|
34 |
-
function ac_radio_toogle(on_off, rbutton) {
|
35 |
-
var what = "nfw_options["+rbutton+"]";
|
36 |
-
if (on_off) {
|
37 |
-
document.nfwalerts.elements[what].disabled = false;
|
38 |
-
document.nfwalerts.elements[what].focus();
|
39 |
-
} else {
|
40 |
-
document.nfwalerts.elements[what].disabled = true;
|
41 |
-
}
|
42 |
-
}
|
43 |
-
</script>
|
44 |
-
<div class="wrap">
|
45 |
<h1><img style="vertical-align:top;width:33px;height:33px;" src="'. plugins_url( '/ninjafirewall/images/ninjafirewall_32.png' ) .'"> ' . __('Event Notifications', 'ninjafirewall') . '</h1>';
|
46 |
|
47 |
// Saved ?
|
@@ -61,9 +50,9 @@ if (! isset( $nfw_options['a_0'] ) ) {
|
|
61 |
<form method="post" name="nfwalerts">
|
62 |
<?php wp_nonce_field('events_save', 'nfwnonce', 0); ?>
|
63 |
<h3><?php _e('WordPress admin dashboard', 'ninjafirewall') ?></h3>
|
64 |
-
<table class="form-table">
|
65 |
<tr>
|
66 |
-
<th scope="row"><?php _e('Send me an alert whenever', 'ninjafirewall') ?></th>
|
67 |
<td>
|
68 |
<p><label><input type="radio" name="nfw_options[a_0]" value="1"<?php checked( $nfw_options['a_0'], 1) ?>> <?php _e('An administrator logs in (default)', 'ninjafirewall') ?></label></p>
|
69 |
<p><label><input type="radio" name="nfw_options[a_0]" value="2"<?php checked( $nfw_options['a_0'], 2) ?>> <?php _e('Someone - user, admin, editor, etc - logs in', 'ninjafirewall') ?></label></p>
|
@@ -75,9 +64,9 @@ if (! isset( $nfw_options['a_0'] ) ) {
|
|
75 |
<br />
|
76 |
|
77 |
<h3><?php _e('Plugins', 'ninjafirewall') ?></h3>
|
78 |
-
<table class="form-table">
|
79 |
<tr>
|
80 |
-
<th scope="row"><?php _e('Send me an alert whenever someone', 'ninjafirewall') ?></th>
|
81 |
<td>
|
82 |
<p><label><input type="checkbox" name="nfw_options[a_11]" value="1"<?php checked( $nfw_options['a_11'], 1) ?>> <?php _e('Uploads a plugin (default)', 'ninjafirewall') ?></label></p>
|
83 |
<p><label><input type="checkbox" name="nfw_options[a_12]" value="1"<?php checked( $nfw_options['a_12'], 1) ?>> <?php _e('Installs a plugin (default)', 'ninjafirewall') ?></label></p>
|
@@ -92,9 +81,9 @@ if (! isset( $nfw_options['a_0'] ) ) {
|
|
92 |
<br />
|
93 |
|
94 |
<h3><?php _e('Themes', 'ninjafirewall') ?></h3>
|
95 |
-
<table class="form-table">
|
96 |
<tr>
|
97 |
-
<th scope="row"><?php _e('Send me an alert whenever someone', 'ninjafirewall') ?></th>
|
98 |
<td>
|
99 |
<p><label><input type="checkbox" name="nfw_options[a_21]" value="1"<?php checked( $nfw_options['a_21'], 1) ?>> <?php _e('Uploads a theme (default)', 'ninjafirewall') ?></label></p>
|
100 |
<p><label><input type="checkbox" name="nfw_options[a_22]" value="1"<?php checked( $nfw_options['a_22'], 1) ?>> <?php _e('Installs a theme (default)', 'ninjafirewall') ?></label></p>
|
@@ -107,9 +96,9 @@ if (! isset( $nfw_options['a_0'] ) ) {
|
|
107 |
<br />
|
108 |
|
109 |
<h3><?php _e('Core', 'ninjafirewall') ?></h3>
|
110 |
-
<table class="form-table">
|
111 |
<tr>
|
112 |
-
<th scope="row"><?php _e('Send me an alert whenever someone', 'ninjafirewall') ?></th>
|
113 |
<td>
|
114 |
<p><label><input type="checkbox" name="nfw_options[a_31]" value="1"<?php checked( $nfw_options['a_31'], 1) ?>> <?php _e('Updates WordPress (default)', 'ninjafirewall') ?></label></p>
|
115 |
</td>
|
@@ -130,9 +119,9 @@ if (! isset( $nfw_options['a_0'] ) ) {
|
|
130 |
}
|
131 |
?>
|
132 |
<h3><?php _e('Administrator account', 'ninjafirewall') ?></h3>
|
133 |
-
<table class="form-table">
|
134 |
<tr>
|
135 |
-
<th scope="row"><?php _e('Send me an alert whenever', 'ninjafirewall') ?></th>
|
136 |
<td>
|
137 |
<p><label><input type="checkbox" name="nfw_options[a_51]" value="1"<?php checked( $nfw_options['a_51'], 1) ?>> <?php _e('An administrator account is created, modified or deleted in the database (default)', 'ninjafirewall') ?></label></p>
|
138 |
<p><label><input type="checkbox" name="nfw_options[a_53]" value="1"<?php checked( $nfw_options['a_53'], 1) ?>> <?php _e('A user attempts to gain administrative privileges (default)', 'ninjafirewall') ?></label></p>
|
@@ -143,11 +132,11 @@ if (! isset( $nfw_options['a_0'] ) ) {
|
|
143 |
<br />
|
144 |
|
145 |
<h3><?php _e('Daily report', 'ninjafirewall') ?></h3>
|
146 |
-
<table class="form-table">
|
147 |
<tr>
|
148 |
-
<th scope="row"><?php _e('Send me a daily activity report', 'ninjafirewall') ?></th>
|
149 |
<td>
|
150 |
-
|
151 |
</td>
|
152 |
</tr>
|
153 |
</table>
|
@@ -155,11 +144,11 @@ if (! isset( $nfw_options['a_0'] ) ) {
|
|
155 |
<br />
|
156 |
|
157 |
<h3><?php _e('Log', 'ninjafirewall') ?></h3>
|
158 |
-
<table class="form-table">
|
159 |
<tr>
|
160 |
-
<th scope="row"><?php _e('Write all events to the firewall log', 'ninjafirewall') ?></th>
|
161 |
<td>
|
162 |
-
|
163 |
</td>
|
164 |
</tr>
|
165 |
</table>
|
@@ -172,9 +161,9 @@ if (! isset( $nfw_options['a_0'] ) ) {
|
|
172 |
}
|
173 |
?>
|
174 |
<h3><?php _e('PHP backtrace', 'ninjafirewall') ?></h3>
|
175 |
-
<table class="form-table">
|
176 |
<tr>
|
177 |
-
<th scope="row"><?php _e('Attach a PHP backtrace to important notifications', 'ninjafirewall') ?></th>
|
178 |
<td>
|
179 |
<select name="nfw_options[a_61]">
|
180 |
<option value="off"<?php selected( $nfw_options['a_61'], -1) ?>><?php _e('Disable backtrace', 'ninjafirewall') ?></option>
|
@@ -193,9 +182,9 @@ if (! isset( $nfw_options['a_0'] ) ) {
|
|
193 |
if (! is_multisite() ) {
|
194 |
?>
|
195 |
<h3><?php _e('Contact email', 'ninjafirewall') ?></h3>
|
196 |
-
<table class="form-table">
|
197 |
-
<tr
|
198 |
-
<th scope="row"><?php _e('Alerts should be sent to', 'ninjafirewall') ?></th>
|
199 |
<td>
|
200 |
<input class="regular-text" type="text" name="nfw_options[alert_email]" size="45" maxlength="250" value="<?php
|
201 |
if ( empty( $nfw_options['alert_email'])) {
|
@@ -223,9 +212,9 @@ if (! is_multisite() ) {
|
|
223 |
}
|
224 |
?>
|
225 |
<h3><?php _e('Contact email', 'ninjafirewall') ?></h3>
|
226 |
-
<table class="form-table">
|
227 |
-
<tr
|
228 |
-
<th scope="row"><?php _e('Alerts should be sent to', 'ninjafirewall') ?></th>
|
229 |
<td>
|
230 |
<p><label><input type="radio" name="nfw_options[alert_sa_only]" value="1"<?php checked( $nfw_options['alert_sa_only'], 1 ) ?> onclick="ac_radio_toogle(0,'alert_multirec');" /> <?php _e('Only to me, the Super Admin', 'ninjafirewall') ?>, <?php echo '<code>'. htmlspecialchars(get_option('admin_email')) . '</code>'; ?> (<?php _e('default', 'ninjafirewall') ?>)</label></p>
|
231 |
<p><label><input type="radio" name="nfw_options[alert_sa_only]" value="2"<?php checked( $nfw_options['alert_sa_only'], 2) ?> onclick="ac_radio_toogle(0,'alert_multirec');" /> <?php _e('To the administrator of the site where originated the alert', 'ninjafirewall') ?></label></p>
|
@@ -248,7 +237,7 @@ if (! is_multisite() ) {
|
|
248 |
</div>
|
249 |
<?php
|
250 |
|
251 |
-
|
252 |
|
253 |
function nf_sub_event_save() {
|
254 |
|
@@ -397,7 +386,7 @@ function nf_sub_event_save() {
|
|
397 |
|
398 |
}
|
399 |
|
400 |
-
|
401 |
|
402 |
function nf_daily_report() {
|
403 |
|
@@ -422,7 +411,7 @@ function nf_daily_report() {
|
|
422 |
nf_daily_report_email($recipient, $logstats);
|
423 |
|
424 |
}
|
425 |
-
|
426 |
function nf_daily_report_log() {
|
427 |
|
428 |
nfw_get_blogtimezone();
|
@@ -465,7 +454,7 @@ function nf_daily_report_log() {
|
|
465 |
return $logstats;
|
466 |
}
|
467 |
|
468 |
-
|
469 |
|
470 |
function nf_daily_report_email($recipient, $logstats) {
|
471 |
|
@@ -503,5 +492,5 @@ function nf_daily_report_email($recipient, $logstats) {
|
|
503 |
|
504 |
}
|
505 |
|
506 |
-
|
507 |
// EOF
|
14 |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
| GNU General Public License for more details. |
|
17 |
+
+---------------------------------------------------------------------+ i18n+ / sa / 2
|
18 |
*/
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
30 |
|
31 |
$nfw_options = nfw_get_option( 'nfw_options' );
|
32 |
|
33 |
+
echo '<div class="wrap">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
<h1><img style="vertical-align:top;width:33px;height:33px;" src="'. plugins_url( '/ninjafirewall/images/ninjafirewall_32.png' ) .'"> ' . __('Event Notifications', 'ninjafirewall') . '</h1>';
|
35 |
|
36 |
// Saved ?
|
50 |
<form method="post" name="nfwalerts">
|
51 |
<?php wp_nonce_field('events_save', 'nfwnonce', 0); ?>
|
52 |
<h3><?php _e('WordPress admin dashboard', 'ninjafirewall') ?></h3>
|
53 |
+
<table class="form-table nfw-table">
|
54 |
<tr>
|
55 |
+
<th scope="row" class="row-med"><?php _e('Send me an alert whenever', 'ninjafirewall') ?></th>
|
56 |
<td>
|
57 |
<p><label><input type="radio" name="nfw_options[a_0]" value="1"<?php checked( $nfw_options['a_0'], 1) ?>> <?php _e('An administrator logs in (default)', 'ninjafirewall') ?></label></p>
|
58 |
<p><label><input type="radio" name="nfw_options[a_0]" value="2"<?php checked( $nfw_options['a_0'], 2) ?>> <?php _e('Someone - user, admin, editor, etc - logs in', 'ninjafirewall') ?></label></p>
|
64 |
<br />
|
65 |
|
66 |
<h3><?php _e('Plugins', 'ninjafirewall') ?></h3>
|
67 |
+
<table class="form-table nfw-table">
|
68 |
<tr>
|
69 |
+
<th scope="row" class="row-med"><?php _e('Send me an alert whenever someone', 'ninjafirewall') ?></th>
|
70 |
<td>
|
71 |
<p><label><input type="checkbox" name="nfw_options[a_11]" value="1"<?php checked( $nfw_options['a_11'], 1) ?>> <?php _e('Uploads a plugin (default)', 'ninjafirewall') ?></label></p>
|
72 |
<p><label><input type="checkbox" name="nfw_options[a_12]" value="1"<?php checked( $nfw_options['a_12'], 1) ?>> <?php _e('Installs a plugin (default)', 'ninjafirewall') ?></label></p>
|
81 |
<br />
|
82 |
|
83 |
<h3><?php _e('Themes', 'ninjafirewall') ?></h3>
|
84 |
+
<table class="form-table nfw-table">
|
85 |
<tr>
|
86 |
+
<th scope="row" class="row-med"><?php _e('Send me an alert whenever someone', 'ninjafirewall') ?></th>
|
87 |
<td>
|
88 |
<p><label><input type="checkbox" name="nfw_options[a_21]" value="1"<?php checked( $nfw_options['a_21'], 1) ?>> <?php _e('Uploads a theme (default)', 'ninjafirewall') ?></label></p>
|
89 |
<p><label><input type="checkbox" name="nfw_options[a_22]" value="1"<?php checked( $nfw_options['a_22'], 1) ?>> <?php _e('Installs a theme (default)', 'ninjafirewall') ?></label></p>
|
96 |
<br />
|
97 |
|
98 |
<h3><?php _e('Core', 'ninjafirewall') ?></h3>
|
99 |
+
<table class="form-table nfw-table">
|
100 |
<tr>
|
101 |
+
<th scope="row" class="row-med"><?php _e('Send me an alert whenever someone', 'ninjafirewall') ?></th>
|
102 |
<td>
|
103 |
<p><label><input type="checkbox" name="nfw_options[a_31]" value="1"<?php checked( $nfw_options['a_31'], 1) ?>> <?php _e('Updates WordPress (default)', 'ninjafirewall') ?></label></p>
|
104 |
</td>
|
119 |
}
|
120 |
?>
|
121 |
<h3><?php _e('Administrator account', 'ninjafirewall') ?></h3>
|
122 |
+
<table class="form-table nfw-table">
|
123 |
<tr>
|
124 |
+
<th scope="row" class="row-med"><?php _e('Send me an alert whenever', 'ninjafirewall') ?></th>
|
125 |
<td>
|
126 |
<p><label><input type="checkbox" name="nfw_options[a_51]" value="1"<?php checked( $nfw_options['a_51'], 1) ?>> <?php _e('An administrator account is created, modified or deleted in the database (default)', 'ninjafirewall') ?></label></p>
|
127 |
<p><label><input type="checkbox" name="nfw_options[a_53]" value="1"<?php checked( $nfw_options['a_53'], 1) ?>> <?php _e('A user attempts to gain administrative privileges (default)', 'ninjafirewall') ?></label></p>
|
132 |
<br />
|
133 |
|
134 |
<h3><?php _e('Daily report', 'ninjafirewall') ?></h3>
|
135 |
+
<table class="form-table nfw-table">
|
136 |
<tr>
|
137 |
+
<th scope="row" class="row-med"><?php _e('Send me a daily activity report', 'ninjafirewall') ?></th>
|
138 |
<td>
|
139 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[a_52]', __('Yes', 'ninjafirewall'), __('No', 'ninjafirewall'), 'small', $nfw_options['a_52'] ) ?>
|
140 |
</td>
|
141 |
</tr>
|
142 |
</table>
|
144 |
<br />
|
145 |
|
146 |
<h3><?php _e('Log', 'ninjafirewall') ?></h3>
|
147 |
+
<table class="form-table nfw-table">
|
148 |
<tr>
|
149 |
+
<th scope="row" class="row-med"><?php _e('Write all events to the firewall log', 'ninjafirewall') ?></th>
|
150 |
<td>
|
151 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[a_41]', __('Yes', 'ninjafirewall'), __('No', 'ninjafirewall'), 'small', $nfw_options['a_41'] ) ?>
|
152 |
</td>
|
153 |
</tr>
|
154 |
</table>
|
161 |
}
|
162 |
?>
|
163 |
<h3><?php _e('PHP backtrace', 'ninjafirewall') ?></h3>
|
164 |
+
<table class="form-table nfw-table">
|
165 |
<tr>
|
166 |
+
<th scope="row" class="row-med"><?php _e('Attach a PHP backtrace to important notifications', 'ninjafirewall') ?></th>
|
167 |
<td>
|
168 |
<select name="nfw_options[a_61]">
|
169 |
<option value="off"<?php selected( $nfw_options['a_61'], -1) ?>><?php _e('Disable backtrace', 'ninjafirewall') ?></option>
|
182 |
if (! is_multisite() ) {
|
183 |
?>
|
184 |
<h3><?php _e('Contact email', 'ninjafirewall') ?></h3>
|
185 |
+
<table class="form-table nfw-table">
|
186 |
+
<tr>
|
187 |
+
<th scope="row" class="row-med"><?php _e('Alerts should be sent to', 'ninjafirewall') ?></th>
|
188 |
<td>
|
189 |
<input class="regular-text" type="text" name="nfw_options[alert_email]" size="45" maxlength="250" value="<?php
|
190 |
if ( empty( $nfw_options['alert_email'])) {
|
212 |
}
|
213 |
?>
|
214 |
<h3><?php _e('Contact email', 'ninjafirewall') ?></h3>
|
215 |
+
<table class="form-table nfw-table">
|
216 |
+
<tr>
|
217 |
+
<th scope="row" class="row-med"><?php _e('Alerts should be sent to', 'ninjafirewall') ?></th>
|
218 |
<td>
|
219 |
<p><label><input type="radio" name="nfw_options[alert_sa_only]" value="1"<?php checked( $nfw_options['alert_sa_only'], 1 ) ?> onclick="ac_radio_toogle(0,'alert_multirec');" /> <?php _e('Only to me, the Super Admin', 'ninjafirewall') ?>, <?php echo '<code>'. htmlspecialchars(get_option('admin_email')) . '</code>'; ?> (<?php _e('default', 'ninjafirewall') ?>)</label></p>
|
220 |
<p><label><input type="radio" name="nfw_options[alert_sa_only]" value="2"<?php checked( $nfw_options['alert_sa_only'], 2) ?> onclick="ac_radio_toogle(0,'alert_multirec');" /> <?php _e('To the administrator of the site where originated the alert', 'ninjafirewall') ?></label></p>
|
237 |
</div>
|
238 |
<?php
|
239 |
|
240 |
+
// ---------------------------------------------------------------------
|
241 |
|
242 |
function nf_sub_event_save() {
|
243 |
|
386 |
|
387 |
}
|
388 |
|
389 |
+
// ---------------------------------------------------------------------
|
390 |
|
391 |
function nf_daily_report() {
|
392 |
|
411 |
nf_daily_report_email($recipient, $logstats);
|
412 |
|
413 |
}
|
414 |
+
// ---------------------------------------------------------------------
|
415 |
function nf_daily_report_log() {
|
416 |
|
417 |
nfw_get_blogtimezone();
|
454 |
return $logstats;
|
455 |
}
|
456 |
|
457 |
+
// ---------------------------------------------------------------------
|
458 |
|
459 |
function nf_daily_report_email($recipient, $logstats) {
|
460 |
|
492 |
|
493 |
}
|
494 |
|
495 |
+
// ---------------------------------------------------------------------
|
496 |
// EOF
|
lib/file_check.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
| GNU General Public License for more details. |
|
17 |
-
+---------------------------------------------------------------------+ i18n+ / sa
|
18 |
*/
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
@@ -140,9 +140,9 @@ if (! file_exists($nfmon_snapshot) ) {
|
|
140 |
<br />
|
141 |
<form method="post" name="monitor_form">
|
142 |
<?php wp_nonce_field('filecheck_save', 'nfwnonce', 0); ?>
|
143 |
-
<table class="form-table">
|
144 |
<tr>
|
145 |
-
<th scope="row"><?php _e('Create a snapshot of all files stored in that directory', 'ninjafirewall') ?></th>
|
146 |
<td><input class="large-text" type="text" name="snapdir" value="<?php
|
147 |
if (! empty($nfw_options['snapdir']) ) {
|
148 |
echo htmlspecialchars($nfw_options['snapdir']);
|
@@ -150,18 +150,20 @@ if (! file_exists($nfmon_snapshot) ) {
|
|
150 |
echo htmlspecialchars(ABSPATH);
|
151 |
}
|
152 |
?>" required />
|
153 |
-
<
|
154 |
</td>
|
155 |
</tr>
|
156 |
|
157 |
<tr>
|
158 |
-
<th scope="row"><?php _e('Exclude the following files/folders (optional)', 'ninjafirewall') ?></th>
|
159 |
-
<td><input class="large-text" type="text" name="snapexclude" value="<?php echo htmlentities($nfw_options['snapexclude']); ?>" placeholder="<?php _e('e.g.,', 'ninjafirewall') ?> /wp-content/nfwlog/" maxlength="255"><br /><
|
160 |
</tr>
|
161 |
|
162 |
<tr>
|
163 |
-
<th scope="row"> </th>
|
164 |
-
<td
|
|
|
|
|
165 |
</tr>
|
166 |
|
167 |
</table>
|
@@ -229,86 +231,12 @@ if (file_exists($nfmon_diff) ) {
|
|
229 |
} else {
|
230 |
$mod = 0;
|
231 |
}
|
232 |
-
|
233 |
-
<script>
|
234 |
-
<?php if ($mod) { ?>
|
235 |
-
function file_info(what, where) {
|
236 |
-
if ( what == '' ) { return false; }
|
237 |
-
|
238 |
-
// Because we use a "multiple" select for aesthetic purposes
|
239 |
-
// but don't want the user to select multiple files, we focus
|
240 |
-
// only on the currently selected one:
|
241 |
-
var current_item = jQuery('#select-'+ where ).prop('selectedIndex');
|
242 |
-
jQuery('#select-'+ where ).prop('selectedIndex',current_item);
|
243 |
-
|
244 |
-
// New file :
|
245 |
-
if (where == 1) {
|
246 |
-
<?php if ($new_file) { ?>
|
247 |
-
var nfo = what.split(':');
|
248 |
-
document.getElementById('new_size').innerHTML = nfo[3];
|
249 |
-
document.getElementById('new_chmod').innerHTML = nfo[0];
|
250 |
-
document.getElementById('new_uidgid').innerHTML = nfo[1] + ' / ' + nfo[2];
|
251 |
-
document.getElementById('new_mtime').innerHTML = nfo[4].replace(/~/g, ':');
|
252 |
-
document.getElementById('new_ctime').innerHTML = nfo[5].replace(/~/g, ':');
|
253 |
-
document.getElementById('table_new').style.display = '';
|
254 |
-
<?php } ?>
|
255 |
-
// Modified file :
|
256 |
-
} else if (where == 2) {
|
257 |
-
<?php if ($mod_file) { ?>
|
258 |
-
var all = what.split('::');
|
259 |
-
var nfo = all[0].split(':');
|
260 |
-
var nfo2 = all[1].split(':');
|
261 |
-
document.getElementById('mod_size').innerHTML = nfo[3];
|
262 |
-
if (nfo[3] != nfo2[3]) {
|
263 |
-
document.getElementById('mod_size2').innerHTML = '<font color="red">'+ nfo2[3] +'</font>';
|
264 |
-
} else {
|
265 |
-
document.getElementById('mod_size2').innerHTML = nfo2[3];
|
266 |
-
}
|
267 |
-
document.getElementById('mod_chmod').innerHTML = nfo[0];
|
268 |
-
if (nfo[0] != nfo2[0]) {
|
269 |
-
document.getElementById('mod_chmod2').innerHTML = '<font color="red">'+ nfo2[0] +'</font>';
|
270 |
-
} else {
|
271 |
-
document.getElementById('mod_chmod2').innerHTML = nfo2[0];
|
272 |
-
}
|
273 |
-
document.getElementById('mod_uidgid').innerHTML = nfo[1] + ' / ' + nfo[2];
|
274 |
-
if ( (nfo[1] != nfo2[1]) || (nfo[2] != nfo2[2]) ) {
|
275 |
-
document.getElementById('mod_uidgid2').innerHTML = '<font color="red">'+ nfo2[1] + '/' + nfo2[2] +'</font>';
|
276 |
-
} else {
|
277 |
-
document.getElementById('mod_uidgid2').innerHTML = nfo2[1] + ' / ' + nfo2[2];
|
278 |
-
}
|
279 |
-
document.getElementById('mod_mtime').innerHTML = nfo[4].replace(/~/g, ':');
|
280 |
-
if (nfo[4] != nfo2[4]) {
|
281 |
-
document.getElementById('mod_mtime2').innerHTML = '<font color="red">'+ nfo2[4].replace(/~/g, ':') +'</font>';
|
282 |
-
} else {
|
283 |
-
document.getElementById('mod_mtime2').innerHTML = nfo2[4].replace(/~/g, ':');
|
284 |
-
}
|
285 |
-
document.getElementById('mod_ctime').innerHTML = nfo[5].replace(/~/g, ':');
|
286 |
-
if (nfo[5] != nfo2[5]) {
|
287 |
-
document.getElementById('mod_ctime2').innerHTML = '<font color="red">'+ nfo2[5].replace(/~/g, ':') +'</font>';
|
288 |
-
} else {
|
289 |
-
document.getElementById('mod_ctime2').innerHTML = nfo2[5].replace(/~/g, ':');
|
290 |
-
}
|
291 |
-
document.getElementById('table_mod').style.display = '';
|
292 |
-
<?php } ?>
|
293 |
-
}
|
294 |
-
}
|
295 |
-
<?php } ?>
|
296 |
-
function delit() {
|
297 |
-
if (confirm("<?php echo esc_js( __('Delete the current snapshot?', 'ninjafirewall') ) ?>") ) {
|
298 |
-
return true;
|
299 |
-
}
|
300 |
-
return false;
|
301 |
-
}
|
302 |
-
function nftoogle() {
|
303 |
-
jQuery("#changes_table").slideDown();
|
304 |
-
document.getElementById('vcbtn').disabled = true;
|
305 |
-
}
|
306 |
-
</script>
|
307 |
<br />
|
308 |
|
309 |
-
<table class="form-table">
|
310 |
<tr>
|
311 |
-
<th scope="row"><?php _e('Last snapshot', 'ninjafirewall') ?></th>
|
312 |
<td>
|
313 |
<p><?php printf( __('Created on: %s', 'ninjafirewall'), date_i18n('M d, Y @ H:i:s O', $stat['ctime'])); ?></p>
|
314 |
<p><?php printf( __('Total files: %s ', 'ninjafirewall'), number_format_i18n($count) ); ?></p>
|
@@ -336,12 +264,12 @@ if (file_exists($nfmon_diff) ) {
|
|
336 |
?>
|
337 |
<form method="post">
|
338 |
<?php wp_nonce_field('filecheck_save', 'nfwnonce', 0); ?>
|
339 |
-
<p><input type="submit" name="dlsnap" value="<?php _e('Download Snapshot', 'ninjafirewall') ?>" class="button-secondary" /> <input type="submit" class="button-secondary" onClick="return
|
340 |
</form>
|
341 |
</td>
|
342 |
</tr>
|
343 |
<tr>
|
344 |
-
<th scope="row"><?php _e('Last changes', 'ninjafirewall') ?></th>
|
345 |
<td>
|
346 |
|
347 |
<?php
|
@@ -354,7 +282,7 @@ if (file_exists($nfmon_diff) ) {
|
|
354 |
|
355 |
<form method="post">
|
356 |
<?php wp_nonce_field('filecheck_save', 'nfwnonce', 0); ?>
|
357 |
-
<p><input type="button" value="<?php _e('View Changes', 'ninjafirewall') ?>" onClick="
|
358 |
if (! empty($changes)) {
|
359 |
echo 'disabled="disabled" ';
|
360 |
}
|
@@ -374,32 +302,32 @@ if (file_exists($nfmon_diff) ) {
|
|
374 |
if ($new_file) {
|
375 |
echo '<tr><td>';
|
376 |
echo __('New files:', 'ninjafirewall') . ' ' . count($new_file). '<br />';
|
377 |
-
echo '<select id="select-1" name="sometext" multiple="multiple" style="width:100%;height:150px" onchange="
|
378 |
foreach($new_file as $k => $v) {
|
379 |
echo '<option value="' . htmlspecialchars($v) . '" title="' . htmlspecialchars($k) . '">' . htmlspecialchars($k) . '</option>';
|
380 |
}
|
381 |
echo'</select>
|
382 |
-
<p
|
383 |
<table id="table_new" style="width:100%;background-color:#F7F7F7;border:solid 1px #DFDFDF;display:none;">
|
384 |
<tr>
|
385 |
-
<th style="padding:
|
386 |
-
<td style="padding:
|
387 |
</tr>
|
388 |
<tr>
|
389 |
-
<th style="padding:
|
390 |
-
<td style="padding:
|
391 |
</tr>
|
392 |
<tr>
|
393 |
-
<th style="padding:
|
394 |
-
<td style="padding:
|
395 |
</tr>
|
396 |
<tr>
|
397 |
-
<th style="padding:
|
398 |
-
<td style="padding:
|
399 |
</tr>
|
400 |
<tr>
|
401 |
-
<th style="padding:
|
402 |
-
<td style="padding:
|
403 |
</tr>
|
404 |
</table>
|
405 |
</td></tr>';
|
@@ -422,42 +350,42 @@ if (file_exists($nfmon_diff) ) {
|
|
422 |
echo '
|
423 |
<tr>
|
424 |
<td>' . __('Modified files:', 'ninjafirewall') .' '. count($mod_file). '<br />' .
|
425 |
-
'<select id="select-2" name="sometext" multiple="multiple" style="width:100%;height:150px" onchange="
|
426 |
foreach($mod_file as $k => $v) {
|
427 |
echo '<option value="' . htmlspecialchars($v) . '" title="' . htmlspecialchars($k) . '">' . htmlspecialchars($k) . '</option>';
|
428 |
}
|
429 |
echo'</select>
|
430 |
-
<p
|
431 |
<table id="table_mod" style="width:100%;background-color:#F7F7F7;border:solid 1px #DFDFDF;display:none;">
|
432 |
<tr>
|
433 |
-
<th style="padding:
|
434 |
-
<td style="padding:
|
435 |
-
<td style="padding:
|
436 |
</tr>
|
437 |
<tr>
|
438 |
-
<th style="padding:
|
439 |
-
<td style="padding:
|
440 |
-
<td style="padding:
|
441 |
</tr>
|
442 |
<tr>
|
443 |
-
<th style="padding:
|
444 |
-
<td style="padding:
|
445 |
-
<td style="padding:
|
446 |
</tr>
|
447 |
<tr>
|
448 |
-
<th style="padding:
|
449 |
-
<td style="padding:
|
450 |
-
<td style="padding:
|
451 |
</tr>
|
452 |
<tr>
|
453 |
-
<th style="padding:
|
454 |
-
<td style="padding:
|
455 |
-
<td style="padding:
|
456 |
</tr>
|
457 |
<tr>
|
458 |
-
<th style="padding:
|
459 |
-
<td style="padding:
|
460 |
-
<td style="padding:
|
461 |
</tr>
|
462 |
</table>
|
463 |
</td>
|
@@ -505,13 +433,13 @@ if (file_exists($nfmon_diff) ) {
|
|
505 |
// If WP cron is disabled, we simply warn the user :
|
506 |
if ( defined('DISABLE_WP_CRON') ) {
|
507 |
?>
|
508 |
-
<p
|
509 |
<?php
|
510 |
}
|
511 |
?>
|
512 |
-
<table class="form-table">
|
513 |
<tr>
|
514 |
-
<th scope="row"><?php _e('Enable scheduled scans', 'ninjafirewall') ?></th>
|
515 |
<td>
|
516 |
<p><label><input type="radio" name="sched_scan" value="0"<?php checked($sched_scan, 0) ?> /><?php _e('No (default)', 'ninjafirewall') ?></label></p>
|
517 |
<p><label><input type="radio" name="sched_scan" value="1"<?php checked($sched_scan, 1) ?> /><?php _e('Hourly', 'ninjafirewall') ?></label></p>
|
@@ -523,14 +451,14 @@ if (file_exists($nfmon_diff) ) {
|
|
523 |
$now = new DateTime( date('M d, Y H:i:s', time() ) );
|
524 |
$diff = $now->diff($sched);
|
525 |
?>
|
526 |
-
<p
|
527 |
<?php
|
528 |
// Ensure that the scheduled scan time is in the future,
|
529 |
// not in the past, otherwise send a warning because wp-cron
|
530 |
// is obviously not working as expected :
|
531 |
if ( $nextscan < time() ) {
|
532 |
?>
|
533 |
-
<p
|
534 |
<?php
|
535 |
}
|
536 |
}
|
@@ -538,7 +466,7 @@ if (file_exists($nfmon_diff) ) {
|
|
538 |
</td>
|
539 |
</tr>
|
540 |
<tr>
|
541 |
-
<th scope="row"><?php _e('Scheduled scan report', 'ninjafirewall') ?></th>
|
542 |
<td>
|
543 |
<p><label><input type="radio" name="report_scan" value="0"<?php checked($report_scan, 0) ?> /><?php _e('Send me a report by email only if changes are detected (default)', 'ninjafirewall') ?></label></p>
|
544 |
<p><label><input type="radio" name="report_scan" value="1"<?php checked($report_scan, 1) ?> /><?php _e('Always send me a report by email after a scheduled scan', 'ninjafirewall') ?></label></p>
|
@@ -552,7 +480,7 @@ if (file_exists($nfmon_diff) ) {
|
|
552 |
</div>
|
553 |
<?php
|
554 |
|
555 |
-
|
556 |
|
557 |
function nf_sub_monitoring_create($nfmon_snapshot) {
|
558 |
|
@@ -613,7 +541,7 @@ function nf_sub_monitoring_create($nfmon_snapshot) {
|
|
613 |
}
|
614 |
}
|
615 |
|
616 |
-
|
617 |
|
618 |
function scd($snapdir, $snapexclude, $fh, $snapnoslink) {
|
619 |
|
@@ -646,7 +574,7 @@ function scd($snapdir, $snapexclude, $fh, $snapnoslink) {
|
|
646 |
}
|
647 |
}
|
648 |
|
649 |
-
|
650 |
|
651 |
function nf_sub_monitoring_scan($nfmon_snapshot, $nfmon_diff) {
|
652 |
|
@@ -755,7 +683,7 @@ function nf_sub_monitoring_scan($nfmon_snapshot, $nfmon_diff) {
|
|
755 |
}
|
756 |
}
|
757 |
|
758 |
-
|
759 |
|
760 |
function nf_scheduled_scan() {
|
761 |
|
@@ -792,7 +720,7 @@ function nf_scheduled_scan() {
|
|
792 |
|
793 |
}
|
794 |
|
795 |
-
|
796 |
|
797 |
function nf_scan_email($nfmon_diff, $log_dir) {
|
798 |
|
@@ -883,5 +811,5 @@ function nf_scan_email($nfmon_diff, $log_dir) {
|
|
883 |
}
|
884 |
}
|
885 |
|
886 |
-
|
887 |
// EOF
|
14 |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
| GNU General Public License for more details. |
|
17 |
+
+---------------------------------------------------------------------+ i18n+ / sa / 2
|
18 |
*/
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
140 |
<br />
|
141 |
<form method="post" name="monitor_form">
|
142 |
<?php wp_nonce_field('filecheck_save', 'nfwnonce', 0); ?>
|
143 |
+
<table class="form-table nfw-table">
|
144 |
<tr>
|
145 |
+
<th scope="row" class="row-med"><?php _e('Create a snapshot of all files stored in that directory', 'ninjafirewall') ?></th>
|
146 |
<td><input class="large-text" type="text" name="snapdir" value="<?php
|
147 |
if (! empty($nfw_options['snapdir']) ) {
|
148 |
echo htmlspecialchars($nfw_options['snapdir']);
|
150 |
echo htmlspecialchars(ABSPATH);
|
151 |
}
|
152 |
?>" required />
|
153 |
+
<p class="description"><?php printf( __('Default: %s', 'ninjafirewall'), htmlentities( rtrim( ABSPATH, '/\\ ' ) ) ) ?></p>
|
154 |
</td>
|
155 |
</tr>
|
156 |
|
157 |
<tr>
|
158 |
+
<th scope="row" class="row-med"><?php _e('Exclude the following files/folders (optional)', 'ninjafirewall') ?></th>
|
159 |
+
<td><input class="large-text" type="text" name="snapexclude" value="<?php echo htmlentities($nfw_options['snapexclude']); ?>" placeholder="<?php _e('e.g.,', 'ninjafirewall') ?> /wp-content/nfwlog/" maxlength="255"><br /><p class="description"><?php _e('Full or partial case-sensitive string(s). Multiple values must be comma-separated', 'ninjafirewall') ?> (<code>,</code>).</p></td>
|
160 |
</tr>
|
161 |
|
162 |
<tr>
|
163 |
+
<th scope="row" class="row-med"> </th>
|
164 |
+
<td>
|
165 |
+
<label><input type="checkbox" name="snapnoslink" value="1" checked="checked" /><?php _e('Do not follow symbolic links (default)', 'ninjafirewall') ?></label>
|
166 |
+
</td>
|
167 |
</tr>
|
168 |
|
169 |
</table>
|
231 |
} else {
|
232 |
$mod = 0;
|
233 |
}
|
234 |
+
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
235 |
<br />
|
236 |
|
237 |
+
<table class="form-table nfw-table">
|
238 |
<tr>
|
239 |
+
<th scope="row" class="row-med"><?php _e('Last snapshot', 'ninjafirewall') ?></th>
|
240 |
<td>
|
241 |
<p><?php printf( __('Created on: %s', 'ninjafirewall'), date_i18n('M d, Y @ H:i:s O', $stat['ctime'])); ?></p>
|
242 |
<p><?php printf( __('Total files: %s ', 'ninjafirewall'), number_format_i18n($count) ); ?></p>
|
264 |
?>
|
265 |
<form method="post">
|
266 |
<?php wp_nonce_field('filecheck_save', 'nfwnonce', 0); ?>
|
267 |
+
<p><input type="submit" name="dlsnap" value="<?php _e('Download Snapshot', 'ninjafirewall') ?>" class="button-secondary" /> <input type="submit" class="button-secondary" onClick="return nfwjs_del_snapshot();" value="<?php _e('Delete Snapshot', 'ninjafirewall') ?>" /><input type="hidden" name="nfw_act" value="delete" /></p>
|
268 |
</form>
|
269 |
</td>
|
270 |
</tr>
|
271 |
<tr>
|
272 |
+
<th scope="row" class="row-med"><?php _e('Last changes', 'ninjafirewall') ?></th>
|
273 |
<td>
|
274 |
|
275 |
<?php
|
282 |
|
283 |
<form method="post">
|
284 |
<?php wp_nonce_field('filecheck_save', 'nfwnonce', 0); ?>
|
285 |
+
<p><input type="button" value="<?php _e('View Changes', 'ninjafirewall') ?>" onClick="nfwjs_show_changes();" class="button-secondary" id="vcbtn" <?php
|
286 |
if (! empty($changes)) {
|
287 |
echo 'disabled="disabled" ';
|
288 |
}
|
302 |
if ($new_file) {
|
303 |
echo '<tr><td>';
|
304 |
echo __('New files:', 'ninjafirewall') . ' ' . count($new_file). '<br />';
|
305 |
+
echo '<select id="select-1" name="sometext" multiple="multiple" style="width:100%;height:150px" onchange="nfwjs_file_info(this.value, 1);">';
|
306 |
foreach($new_file as $k => $v) {
|
307 |
echo '<option value="' . htmlspecialchars($v) . '" title="' . htmlspecialchars($k) . '">' . htmlspecialchars($k) . '</option>';
|
308 |
}
|
309 |
echo'</select>
|
310 |
+
<p class="description">' . $more_info . '</p>
|
311 |
<table id="table_new" style="width:100%;background-color:#F7F7F7;border:solid 1px #DFDFDF;display:none;">
|
312 |
<tr>
|
313 |
+
<th style="padding:2px;width:25%;">' . __('Size', 'ninjafirewall') .'</th>
|
314 |
+
<td style="padding:2px" id="new_size"></td>
|
315 |
</tr>
|
316 |
<tr>
|
317 |
+
<th style="padding:2px;width:25%;">' . __('Access', 'ninjafirewall') .'</th>
|
318 |
+
<td style="padding:2px" id="new_chmod"></td>
|
319 |
</tr>
|
320 |
<tr>
|
321 |
+
<th style="padding:2px;width:25%;">' . __('Uid / Gid', 'ninjafirewall') .'</th>
|
322 |
+
<td style="padding:2px" id="new_uidgid"></td>
|
323 |
</tr>
|
324 |
<tr>
|
325 |
+
<th style="padding:2px;width:25%;">' . __('Modify', 'ninjafirewall') .'</th>
|
326 |
+
<td style="padding:2px" id="new_mtime"></td>
|
327 |
</tr>
|
328 |
<tr>
|
329 |
+
<th style="padding:2px;width:25%;">' . __('Change', 'ninjafirewall') .'</th>
|
330 |
+
<td style="padding:2px" id="new_ctime"></td>
|
331 |
</tr>
|
332 |
</table>
|
333 |
</td></tr>';
|
350 |
echo '
|
351 |
<tr>
|
352 |
<td>' . __('Modified files:', 'ninjafirewall') .' '. count($mod_file). '<br />' .
|
353 |
+
'<select id="select-2" name="sometext" multiple="multiple" style="width:100%;height:150px" onchange="nfwjs_file_info(this.value, 2);">';
|
354 |
foreach($mod_file as $k => $v) {
|
355 |
echo '<option value="' . htmlspecialchars($v) . '" title="' . htmlspecialchars($k) . '">' . htmlspecialchars($k) . '</option>';
|
356 |
}
|
357 |
echo'</select>
|
358 |
+
<p class="description">' . $more_info . '</p>
|
359 |
<table id="table_mod" style="width:100%;background-color:#F7F7F7;border:solid 1px #DFDFDF;display:none;">
|
360 |
<tr>
|
361 |
+
<th style="padding:2px;width:25%;"> </th>
|
362 |
+
<td style="padding:2px"><b>' . __('Old', 'ninjafirewall') .'</b></td>
|
363 |
+
<td style="padding:2px"><b>' . __('New', 'ninjafirewall') .'</b></td>
|
364 |
</tr>
|
365 |
<tr>
|
366 |
+
<th style="padding:2px;width:25%;">' . __('Size', 'ninjafirewall') .'</th>
|
367 |
+
<td style="padding:2px" id="mod_size"></td>
|
368 |
+
<td style="padding:2px" id="mod_size2"></td>
|
369 |
</tr>
|
370 |
<tr>
|
371 |
+
<th style="padding:2px;width:25%;">' . __('Access', 'ninjafirewall') .'</th>
|
372 |
+
<td style="padding:2px" id="mod_chmod"></td>
|
373 |
+
<td style="padding:2px" id="mod_chmod2"></td>
|
374 |
</tr>
|
375 |
<tr>
|
376 |
+
<th style="padding:2px;width:25%;">' . __('Uid / Gid', 'ninjafirewall') .'</th>
|
377 |
+
<td style="padding:2px" id="mod_uidgid"></td>
|
378 |
+
<td style="padding:2px" id="mod_uidgid2"></td>
|
379 |
</tr>
|
380 |
<tr>
|
381 |
+
<th style="padding:2px;width:25%;">' . __('Modify', 'ninjafirewall') .'</th>
|
382 |
+
<td style="padding:2px" id="mod_mtime"></td>
|
383 |
+
<td style="padding:2px" id="mod_mtime2"></td>
|
384 |
</tr>
|
385 |
<tr>
|
386 |
+
<th style="padding:2px;width:25%;">' . __('Change', 'ninjafirewall') .'</th>
|
387 |
+
<td style="padding:2px" id="mod_ctime"></td>
|
388 |
+
<td style="padding:2px" id="mod_ctime2"></td>
|
389 |
</tr>
|
390 |
</table>
|
391 |
</td>
|
433 |
// If WP cron is disabled, we simply warn the user :
|
434 |
if ( defined('DISABLE_WP_CRON') ) {
|
435 |
?>
|
436 |
+
<p class="description" style="color:red"><?php printf( __('It seems that %s is set. Ensure you have another way to run WP-Cron, otherwise NinjaFirewall scheduled scans will not work.', 'ninjafirewall'), '<code>DISABLE_WP_CRON</code>' ) ?></p>
|
437 |
<?php
|
438 |
}
|
439 |
?>
|
440 |
+
<table class="form-table nfw-table">
|
441 |
<tr>
|
442 |
+
<th scope="row" class="row-med"><?php _e('Enable scheduled scans', 'ninjafirewall') ?></th>
|
443 |
<td>
|
444 |
<p><label><input type="radio" name="sched_scan" value="0"<?php checked($sched_scan, 0) ?> /><?php _e('No (default)', 'ninjafirewall') ?></label></p>
|
445 |
<p><label><input type="radio" name="sched_scan" value="1"<?php checked($sched_scan, 1) ?> /><?php _e('Hourly', 'ninjafirewall') ?></label></p>
|
451 |
$now = new DateTime( date('M d, Y H:i:s', time() ) );
|
452 |
$diff = $now->diff($sched);
|
453 |
?>
|
454 |
+
<p class="description"><?php printf( __('Next scan will start in approximately %s day(s), %s hour(s), %s minute(s) and %s second(s).', 'ninjafirewall'), $diff->format('%a') % 7, $diff->format('%h'), $diff->format('%i'), $diff->format('%s') ) ?></p>
|
455 |
<?php
|
456 |
// Ensure that the scheduled scan time is in the future,
|
457 |
// not in the past, otherwise send a warning because wp-cron
|
458 |
// is obviously not working as expected :
|
459 |
if ( $nextscan < time() ) {
|
460 |
?>
|
461 |
+
<p class="description" style="color:red"><?php _e('The next scheduled scan date is in the past! WordPress wp-cron may not be working or may have been disabled.', 'ninjafirewall'); ?></p>
|
462 |
<?php
|
463 |
}
|
464 |
}
|
466 |
</td>
|
467 |
</tr>
|
468 |
<tr>
|
469 |
+
<th scope="row" class="row-med"><?php _e('Scheduled scan report', 'ninjafirewall') ?></th>
|
470 |
<td>
|
471 |
<p><label><input type="radio" name="report_scan" value="0"<?php checked($report_scan, 0) ?> /><?php _e('Send me a report by email only if changes are detected (default)', 'ninjafirewall') ?></label></p>
|
472 |
<p><label><input type="radio" name="report_scan" value="1"<?php checked($report_scan, 1) ?> /><?php _e('Always send me a report by email after a scheduled scan', 'ninjafirewall') ?></label></p>
|
480 |
</div>
|
481 |
<?php
|
482 |
|
483 |
+
// ---------------------------------------------------------------------
|
484 |
|
485 |
function nf_sub_monitoring_create($nfmon_snapshot) {
|
486 |
|
541 |
}
|
542 |
}
|
543 |
|
544 |
+
// ---------------------------------------------------------------------
|
545 |
|
546 |
function scd($snapdir, $snapexclude, $fh, $snapnoslink) {
|
547 |
|
574 |
}
|
575 |
}
|
576 |
|
577 |
+
// ---------------------------------------------------------------------
|
578 |
|
579 |
function nf_sub_monitoring_scan($nfmon_snapshot, $nfmon_diff) {
|
580 |
|
683 |
}
|
684 |
}
|
685 |
|
686 |
+
// ---------------------------------------------------------------------
|
687 |
|
688 |
function nf_scheduled_scan() {
|
689 |
|
720 |
|
721 |
}
|
722 |
|
723 |
+
// ---------------------------------------------------------------------
|
724 |
|
725 |
function nf_scan_email($nfmon_diff, $log_dir) {
|
726 |
|
811 |
}
|
812 |
}
|
813 |
|
814 |
+
// ---------------------------------------------------------------------
|
815 |
// EOF
|
lib/file_guard.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
| GNU General Public License for more details. |
|
17 |
-
+---------------------------------------------------------------------+ i18n+ / sa
|
18 |
*/
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
@@ -24,32 +24,6 @@ nf_not_allowed( 'block', __LINE__ );
|
|
24 |
$nfw_options = nfw_get_option( 'nfw_options' );
|
25 |
|
26 |
?>
|
27 |
-
<script>
|
28 |
-
function toggle_table(off) {
|
29 |
-
if ( off == 1 ) {
|
30 |
-
jQuery("#fg_table").slideDown();
|
31 |
-
} else if ( off == 2 ) {
|
32 |
-
jQuery("#fg_table").slideUp();
|
33 |
-
}
|
34 |
-
return;
|
35 |
-
}
|
36 |
-
function is_number(id) {
|
37 |
-
var e = document.getElementById(id);
|
38 |
-
if (! e.value ) { return }
|
39 |
-
if (! /^[1-9][0-9]?$/.test(e.value) ) {
|
40 |
-
alert("<?php echo esc_js( __('Please enter a number from 1 to 99.', 'ninjafirewall') ) ?>");
|
41 |
-
e.value = e.value.substring(0, e.value.length-1);
|
42 |
-
}
|
43 |
-
}
|
44 |
-
function check_fields() {
|
45 |
-
if (! document.nfwfilefuard.elements["nfw_options[fg_mtime]"]){
|
46 |
-
alert("<?php echo esc_js( __('Please enter a number from 1 to 99.', 'ninjafirewall') ) ?>");
|
47 |
-
return false;
|
48 |
-
}
|
49 |
-
return true;
|
50 |
-
}
|
51 |
-
</script>
|
52 |
-
|
53 |
<div class="wrap">
|
54 |
<h1><img style="vertical-align:top;width:33px;height:33px;" src="<?php echo plugins_url( '/ninjafirewall/images/ninjafirewall_32.png' ) ?>"> <?php _e('File Guard', 'ninjafirewall') ?></h1>
|
55 |
<?php
|
@@ -89,16 +63,13 @@ if ( empty($nfw_options['fg_exclude']) ) {
|
|
89 |
}
|
90 |
?>
|
91 |
<br />
|
92 |
-
<form method="post" name="nfwfilefuard"
|
93 |
<?php wp_nonce_field('fileguard_save', 'nfwnonce', 0); ?>
|
94 |
-
<table class="form-table">
|
95 |
<tr style="background-color:#F9F9F9;border: solid 1px #DFDFDF;">
|
96 |
-
<th scope="row"><?php _e('Enable File Guard', 'ninjafirewall') ?></th>
|
97 |
<td>
|
98 |
-
|
99 |
-
</td>
|
100 |
-
<td>
|
101 |
-
<label><input type="radio" name="nfw_options[fg_enable]" value="0"<?php checked($nfw_options['fg_enable'], 0) ?> onclick="toggle_table(2);"> <?php _e('No', 'ninjafirewall') ?></label>
|
102 |
</td>
|
103 |
</tr>
|
104 |
</table>
|
@@ -106,17 +77,17 @@ if ( empty($nfw_options['fg_exclude']) ) {
|
|
106 |
<br />
|
107 |
|
108 |
<div id="fg_table"<?php echo $nfw_options['fg_enable'] == 1 ? '' : ' style="display:none"' ?>>
|
109 |
-
<table class="form-table
|
110 |
-
<tr
|
111 |
-
<th scope="row"><?php _e('Real-time detection', 'ninjafirewall') ?></th>
|
112 |
<td>
|
113 |
<?php
|
114 |
-
printf( __('Monitor file activity and send an alert when someone is accessing a PHP script that was modified or created less than %s hour(s) ago.', 'ninjafirewall'), '<input maxlength="2" size="2" value="'. $nfw_options['fg_mtime'] .'" name="nfw_options[fg_mtime]" id="mtime"
|
115 |
?>
|
116 |
</td>
|
117 |
</tr>
|
118 |
<tr>
|
119 |
-
<th scope="row"><?php _e('Exclude the following files/folders (optional)', 'ninjafirewall') ?></th>
|
120 |
<td><input class="large-text" type="text" maxlength="255" name="nfw_options[fg_exclude]" value="<?php echo htmlspecialchars( $fg_exclude ); ?>" placeholder="<?php _e('e.g.,', 'ninjafirewall') ?> /foo/bar/cache/ <?php _e('or', 'ninjafirewall') ?> /cache/" /><br /><span class="description"><?php _e('Full or partial case-sensitive string(s), max. 255 characters. Multiple values must be comma-separated', 'ninjafirewall') ?> (<code>,</code>).</span></td>
|
121 |
</tr>
|
122 |
</table>
|
14 |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
| GNU General Public License for more details. |
|
17 |
+
+---------------------------------------------------------------------+ i18n+ / sa / 2
|
18 |
*/
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
24 |
$nfw_options = nfw_get_option( 'nfw_options' );
|
25 |
|
26 |
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
<div class="wrap">
|
28 |
<h1><img style="vertical-align:top;width:33px;height:33px;" src="<?php echo plugins_url( '/ninjafirewall/images/ninjafirewall_32.png' ) ?>"> <?php _e('File Guard', 'ninjafirewall') ?></h1>
|
29 |
<?php
|
63 |
}
|
64 |
?>
|
65 |
<br />
|
66 |
+
<form method="post" name="nfwfilefuard">
|
67 |
<?php wp_nonce_field('fileguard_save', 'nfwnonce', 0); ?>
|
68 |
+
<table class="form-table nfw-table">
|
69 |
<tr style="background-color:#F9F9F9;border: solid 1px #DFDFDF;">
|
70 |
+
<th scope="row" class="row-med"><?php _e('Enable File Guard', 'ninjafirewall') ?></th>
|
71 |
<td>
|
72 |
+
<?php nfw_toggle_switch( 'green', 'nfw_options[fg_enable]', __('Enabled', 'ninjafirewall'), __('Disabled', 'ninjafirewall'), 'large', $nfw_options['fg_enable'], false, 'onclick="nfwjs_up_down(\'fg_table\');"' ) ?>
|
|
|
|
|
|
|
73 |
</td>
|
74 |
</tr>
|
75 |
</table>
|
77 |
<br />
|
78 |
|
79 |
<div id="fg_table"<?php echo $nfw_options['fg_enable'] == 1 ? '' : ' style="display:none"' ?>>
|
80 |
+
<table class="form-table nfw-table">
|
81 |
+
<tr>
|
82 |
+
<th scope="row" class="row-med"><?php _e('Real-time detection', 'ninjafirewall') ?></th>
|
83 |
<td>
|
84 |
<?php
|
85 |
+
printf( __('Monitor file activity and send an alert when someone is accessing a PHP script that was modified or created less than %s hour(s) ago.', 'ninjafirewall'), '<input maxlength="2" size="2" value="'. $nfw_options['fg_mtime'] .'" name="nfw_options[fg_mtime]" id="mtime" class="small-text" type="number" />');
|
86 |
?>
|
87 |
</td>
|
88 |
</tr>
|
89 |
<tr>
|
90 |
+
<th scope="row" class="row-med"><?php _e('Exclude the following files/folders (optional)', 'ninjafirewall') ?></th>
|
91 |
<td><input class="large-text" type="text" maxlength="255" name="nfw_options[fg_exclude]" value="<?php echo htmlspecialchars( $fg_exclude ); ?>" placeholder="<?php _e('e.g.,', 'ninjafirewall') ?> /foo/bar/cache/ <?php _e('or', 'ninjafirewall') ?> /cache/" /><br /><span class="description"><?php _e('Full or partial case-sensitive string(s), max. 255 characters. Multiple values must be comma-separated', 'ninjafirewall') ?> (<code>,</code>).</span></td>
|
92 |
</tr>
|
93 |
</table>
|
lib/firewall.php
CHANGED
@@ -26,10 +26,9 @@ $nfw_['fw_starttime'] = microtime(true);
|
|
26 |
// ( see https://nintechnet.com/ninjafirewall/wp-edition/help/?htninja ) :
|
27 |
if ( @file_exists($nfw_['file'] = dirname($_SERVER['DOCUMENT_ROOT']) .'/.htninja') ||
|
28 |
@file_exists($nfw_['file'] = $_SERVER['DOCUMENT_ROOT'] .'/.htninja') ) {
|
29 |
-
$nfw_['res'] = @
|
30 |
if ( $nfw_['res'] == 'ALLOW' ) {
|
31 |
-
|
32 |
-
unset($nfw_);
|
33 |
return;
|
34 |
}
|
35 |
if ( $nfw_['res'] == 'BLOCK' ) {
|
@@ -71,105 +70,28 @@ if (empty ($wp_config)) {
|
|
71 |
$wp_config = dirname($nfw_['wp_content']) . '/wp-config.php';
|
72 |
}
|
73 |
|
74 |
-
//
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
$nfw_['mysqli'] = $GLOBALS['nfw_mysqli'];
|
79 |
-
$nfw_['table_prefix'] = $GLOBALS['nfw_table_prefix'];
|
80 |
-
|
81 |
-
// No DB link:
|
82 |
-
} else {
|
83 |
-
if (! file_exists($wp_config) ) {
|
84 |
-
if (! @file_exists( $wp_config = dirname( dirname($nfw_['wp_content']) ) . '/wp-config.php') ) {
|
85 |
-
define( 'NFW_STATUS', 1 );
|
86 |
-
unset($nfw_);
|
87 |
-
unset($wp_config);
|
88 |
-
return;
|
89 |
-
}
|
90 |
-
}
|
91 |
-
if (! $nfw_['fh'] = fopen($wp_config, 'r') ) {
|
92 |
-
define( 'NFW_STATUS', 2 );
|
93 |
-
unset($nfw_);
|
94 |
-
unset($wp_config);
|
95 |
-
return;
|
96 |
-
}
|
97 |
-
|
98 |
-
while (! feof($nfw_['fh'])) {
|
99 |
-
$nfw_['line'] = fgets($nfw_['fh']);
|
100 |
-
if ( preg_match('/^\s*define\s*\(\s*[\'"]DB_NAME[\'"]\s*,\s*[\'"](.+?)[\'"]/', $nfw_['line'], $nfw_['match']) ) {
|
101 |
-
$nfw_['DB_NAME'] = $nfw_['match'][1];
|
102 |
-
} elseif ( preg_match('/^\s*define\s*\(\s*[\'"]DB_USER[\'"]\s*,\s*[\'"](.+?)[\'"]/', $nfw_['line'], $nfw_['match']) ) {
|
103 |
-
$nfw_['DB_USER'] = $nfw_['match'][1];
|
104 |
-
} elseif ( preg_match('/^\s*define\s*\(\s*[\'"]DB_PASSWORD[\'"]\s*,\s*([\'"])(.+?)\1\s*\);/', $nfw_['line'], $nfw_['match']) ) {
|
105 |
-
$nfw_['DB_PASSWORD'] = stripcslashes( $nfw_['match'][2] );
|
106 |
-
} elseif ( preg_match('/^\s*define\s*\(\s*[\'"]DB_HOST[\'"]\s*,\s*[\'"](.+?)[\'"]/', $nfw_['line'], $nfw_['match']) ) {
|
107 |
-
$nfw_['DB_HOST'] = $nfw_['match'][1];
|
108 |
-
} elseif ( preg_match('/^\s*\$table_prefix\s*=\s*[\'"](.+?)[\'"]/', $nfw_['line'], $nfw_['match']) ) {
|
109 |
-
$nfw_['table_prefix'] = $nfw_['match'][1];
|
110 |
-
}
|
111 |
-
}
|
112 |
-
fclose($nfw_['fh']);
|
113 |
-
unset($wp_config);
|
114 |
-
if ( (! isset($nfw_['DB_NAME'])) || (! isset($nfw_['DB_USER'])) || (! isset($nfw_['DB_PASSWORD'])) || (! isset($nfw_['DB_HOST'])) || (! isset($nfw_['table_prefix'])) ) {
|
115 |
-
define( 'NFW_STATUS', 3 );
|
116 |
-
unset($nfw_);
|
117 |
-
return;
|
118 |
-
}
|
119 |
-
|
120 |
-
nfw_check_dbhost();
|
121 |
-
// Make sure mysqli extension is loaded:
|
122 |
-
if (! function_exists( 'mysqli_connect' ) ) {
|
123 |
-
define( 'NFW_STATUS', 14 );
|
124 |
-
unset($nfw_);
|
125 |
-
return;
|
126 |
-
}
|
127 |
-
@$nfw_['mysqli'] = new mysqli($nfw_['DB_HOST'], $nfw_['DB_USER'], $nfw_['DB_PASSWORD'], $nfw_['DB_NAME'], $nfw_['port'], $nfw_['socket']);
|
128 |
-
if ($nfw_['mysqli']->connect_error) {
|
129 |
-
define( 'NFW_STATUS', 4 );
|
130 |
-
unset($nfw_);
|
131 |
-
return;
|
132 |
-
}
|
133 |
-
}
|
134 |
-
|
135 |
-
if (! $nfw_['result'] = @$nfw_['mysqli']->query('SELECT * FROM `' . $nfw_['mysqli']->real_escape_string($nfw_['table_prefix']) . "options` WHERE `option_name` = 'nfw_options'")) {
|
136 |
-
// Maybe this is an old multisite install where the main site
|
137 |
-
// options table is named 'wp_1_options' instead of 'wp_options'?
|
138 |
-
if (! $nfw_['result'] = @$nfw_['mysqli']->query('SELECT * FROM `' . $nfw_['mysqli']->real_escape_string($nfw_['table_prefix']) . "1_options` WHERE `option_name` = 'nfw_options'")) {
|
139 |
-
define( 'NFW_STATUS', 5 );
|
140 |
-
$nfw_['mysqli']->close();
|
141 |
-
unset($nfw_);
|
142 |
-
return;
|
143 |
-
}
|
144 |
-
// Change the table prefix to match 'wp_1_options':
|
145 |
-
$nfw_['table_prefix'] = "{$nfw_['table_prefix']}1_";
|
146 |
-
}
|
147 |
-
|
148 |
-
if (! $nfw_['options'] = @$nfw_['result']->fetch_object() ) {
|
149 |
-
define( 'NFW_STATUS', 6 );
|
150 |
-
$nfw_['mysqli']->close();
|
151 |
-
unset($nfw_);
|
152 |
return;
|
153 |
}
|
154 |
-
$nfw_['result']->close();
|
155 |
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
return;
|
161 |
}
|
162 |
|
163 |
if (! empty($nfw_['nfw_options']['clogs_pubkey']) && isset($_POST['clogs_req']) ) {
|
164 |
-
|
165 |
fw_centlog();
|
166 |
exit;
|
167 |
}
|
168 |
|
169 |
if ( empty($nfw_['nfw_options']['enabled']) ) {
|
170 |
-
|
171 |
-
define( 'NFW_STATUS', 20 );
|
172 |
-
unset($nfw_);
|
173 |
return;
|
174 |
}
|
175 |
|
@@ -295,41 +217,27 @@ if ( isset( $_COOKIE[ $nfw_['session_name'] ] ) ) {
|
|
295 |
|
296 |
if (! empty($_SESSION['nfw_goodguy']) ) {
|
297 |
|
|
|
298 |
if (! empty($_SESSION['nfw_livelog']) && isset($_POST['livecls']) && isset($_POST['lines'])) {
|
299 |
-
|
300 |
fw_livelog_show();
|
301 |
}
|
302 |
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
if (! $nfw_['rules'] = @$nfw_['result']->fetch_object() ) {
|
308 |
-
nfw_quit(8);
|
309 |
-
return;
|
310 |
-
}
|
311 |
-
if (! $nfw_['nfw_rules'] = @unserialize($nfw_['rules']->option_value) ) {
|
312 |
-
nfw_quit(12);
|
313 |
return;
|
314 |
}
|
|
|
315 |
|
316 |
-
|
317 |
-
$nfw_['adm_rules'] = array();
|
318 |
-
foreach ($nfw_['nfw_rules']['999'] as $key => $value) {
|
319 |
-
if (empty($nfw_['nfw_rules'][$key]['ena']) ) { continue; }
|
320 |
-
$nfw_['adm_rules'][$key] = $nfw_['nfw_rules'][$key];
|
321 |
-
}
|
322 |
-
if (! empty($nfw_['adm_rules'])) {
|
323 |
-
nfw_check_request( $nfw_['adm_rules'], $nfw_['nfw_options'] );
|
324 |
-
}
|
325 |
-
}
|
326 |
-
nfw_quit(20);
|
327 |
return;
|
328 |
}
|
329 |
define('NFW_SWL', 1);
|
330 |
|
331 |
if ( file_exists($nfw_['log_dir'] .'/cache/livelogrun.php')) {
|
332 |
-
|
333 |
fw_livelog_record();
|
334 |
}
|
335 |
|
@@ -338,7 +246,7 @@ if (! empty($nfw_['nfw_options']['php_errors']) ) {
|
|
338 |
@ini_set('display_errors', 0);
|
339 |
}
|
340 |
|
341 |
-
if (
|
342 |
nfw_quit(20);
|
343 |
return;
|
344 |
}
|
@@ -353,7 +261,7 @@ if ( @$nfw_['nfw_options']['scan_protocol'] == 2 && NFW_IS_HTTPS == false ) {
|
|
353 |
}
|
354 |
|
355 |
if (! empty($nfw_['nfw_options']['fg_enable']) && ! defined('NFW_WPWAF') ) {
|
356 |
-
|
357 |
fw_fileguard();
|
358 |
}
|
359 |
|
@@ -415,24 +323,24 @@ if (! empty($nfw_['nfw_options']['wp_dir']) && preg_match( '`' . $nfw_['nfw_opti
|
|
415 |
|
416 |
nfw_check_upload();
|
417 |
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
}
|
422 |
|
423 |
-
|
424 |
-
|
|
|
|
|
425 |
return;
|
426 |
}
|
427 |
-
$nfw_['result']->close();
|
428 |
|
429 |
-
if (
|
430 |
-
|
431 |
-
|
|
|
432 |
}
|
433 |
|
434 |
-
nfw_check_request( $nfw_['nfw_rules'], $nfw_['nfw_options'] );
|
435 |
-
|
436 |
if (! empty($nfw_['nfw_options']['get_sanitise']) && ! empty($_GET) ){
|
437 |
$_GET = nfw_sanitise( $_GET, 1, 'GET');
|
438 |
}
|
@@ -479,6 +387,173 @@ function nfw_quit( $status ) {
|
|
479 |
$nfw_ = array();
|
480 |
}
|
481 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
482 |
// =====================================================================
|
483 |
// Check for HTTPS.
|
484 |
|
@@ -544,6 +619,18 @@ function nfw_check_ip() {
|
|
544 |
if (! defined('NFW_REMOTE_ADDR') ) {
|
545 |
define('NFW_REMOTE_ADDR', htmlspecialchars($_SERVER['REMOTE_ADDR']) );
|
546 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
547 |
}
|
548 |
|
549 |
// =====================================================================
|
@@ -665,6 +752,24 @@ function nfw_sanitize_filename( $array, $key, $value ) {
|
|
665 |
|
666 |
// =====================================================================
|
667 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
668 |
function nfw_check_request( $nfw_rules, $nfw_options ) {
|
669 |
|
670 |
if ( defined('NFW_STATUS') ) { return; }
|
@@ -1166,7 +1271,14 @@ function nfw_sanitise( $str, $how, $msg ) {
|
|
1166 |
if (is_string($str) ) {
|
1167 |
if (get_magic_quotes_gpc() ) { $str = stripslashes($str); }
|
1168 |
if ($how == 1) {
|
1169 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1170 |
$str2 = str_replace( array( '`', '<', '>'), array( '\\`', '<', '>'), $str2);
|
1171 |
if ( $msg == 'GET' && strpos( $str2, '/') !== false ) {
|
1172 |
$str2 = str_replace( array( '*', '?' ), array( '\*', '\?' ), $str2 );
|
@@ -1185,7 +1297,7 @@ function nfw_sanitise( $str, $how, $msg ) {
|
|
1185 |
return $str;
|
1186 |
}
|
1187 |
if ($str2 != $str) {
|
1188 |
-
nfw_log('Sanitising user input', $msg . ': ' . $str,
|
1189 |
}
|
1190 |
return $str2;
|
1191 |
|
@@ -1201,7 +1313,7 @@ function nfw_sanitise( $str, $how, $msg ) {
|
|
1201 |
}
|
1202 |
if ($occ) {
|
1203 |
unset($str[$key]);
|
1204 |
-
nfw_log('Sanitising user input', $msg . ': ' . $key,
|
1205 |
}
|
1206 |
$str[$key2] = nfw_sanitise($value, $how, $msg);
|
1207 |
}
|
@@ -1336,7 +1448,7 @@ function nfw_log($loginfo, $logdata, $loglevel, $ruleid) {
|
|
1336 |
$tmp . '[' . time() . '] ' . '[' . round( microtime(true) - $nfw_['fw_starttime'], 5) . '] ' .
|
1337 |
'[' . $_SERVER['SERVER_NAME'] . '] ' . '[#' . $nfw_['num_incident'] . '] ' .
|
1338 |
'[' . $ruleid . '] ' .
|
1339 |
-
'[' . $loglevel . '] ' . '[' . nfw_anonymize_ip(
|
1340 |
'[' . $http_ret_code . '] ' . '[' . $_SERVER['REQUEST_METHOD'] . '] ' .
|
1341 |
'[' . $_SERVER['SCRIPT_NAME'] . '] ' . '[' . $loginfo . '] ' .
|
1342 |
$encoding . "\n", FILE_APPEND | LOCK_EX );
|
@@ -1344,16 +1456,15 @@ function nfw_log($loginfo, $logdata, $loglevel, $ruleid) {
|
|
1344 |
|
1345 |
// =====================================================================
|
1346 |
|
1347 |
-
function nfw_anonymize_ip(
|
1348 |
|
1349 |
global $nfw_;
|
1350 |
|
1351 |
-
if (! empty( $nfw_['nfw_options']['anon_ip'] ) &&
|
1352 |
-
|
1353 |
-
return substr( $ip, 0, -3 ) .'xxx';
|
1354 |
}
|
1355 |
|
1356 |
-
return
|
1357 |
}
|
1358 |
|
1359 |
// =====================================================================
|
@@ -1564,9 +1675,9 @@ function nfw_check_auth( $auth_name, $auth_pass, $auth_msgtxt, $bf_rand, $b64, $
|
|
1564 |
$bf_nosig = '';
|
1565 |
}
|
1566 |
if ( $bf_type == 0 ) {
|
1567 |
-
$message = '<html><head><title>'. $bf_nosig .'</title><link rel="stylesheet" href="./wp-includes/css/buttons.min.css" type="text/css"><link rel="stylesheet" href="./wp-admin/css/login.min.css" type="text/css"></head><body class="login wp-core-ui" style="color:#444"><div id="login"><center><h2>' . $auth_msgtxt . '</h2><form method="post"><label>'. $bf_nosig .'</label><br><br><p><input class="input" type="text" name="u" placeholder="Username"></p><p><input class="input" type="password" name="p" placeholder="Password"></p><p align="right"><input type="submit" value="Login Page »" class="button-secondary"></p></form></center></div></body></html>';
|
1568 |
} else {
|
1569 |
-
$message = '<html><head><title>'. $bf_nosig .'</title><link rel="stylesheet" href="./wp-includes/css/buttons.min.css" type="text/css"><link rel="stylesheet" href="./wp-admin/css/login.min.css" type="text/css"></head><body class="login wp-core-ui" style="color:#444"><div id="login"><center><form method="post"><p><label>'. base64_decode( $captcha_text ) .'</label></p><br><p>' . nfw_get_captcha() . '</p><p><input class="input" type="text" name="c" autofocus></p><p align="right"><input type="submit" value="Login Page »" class="button-secondary"></p></form><br><label>'. $bf_nosig .'</label></center></div></body></html>';
|
1570 |
}
|
1571 |
if ( $bf_allow_bot == 0 ) {
|
1572 |
ini_set('zlib.output_compression','Off');
|
26 |
// ( see https://nintechnet.com/ninjafirewall/wp-edition/help/?htninja ) :
|
27 |
if ( @file_exists($nfw_['file'] = dirname($_SERVER['DOCUMENT_ROOT']) .'/.htninja') ||
|
28 |
@file_exists($nfw_['file'] = $_SERVER['DOCUMENT_ROOT'] .'/.htninja') ) {
|
29 |
+
$nfw_['res'] = @include_once $nfw_['file'];
|
30 |
if ( $nfw_['res'] == 'ALLOW' ) {
|
31 |
+
nfw_quit( 20 );
|
|
|
32 |
return;
|
33 |
}
|
34 |
if ( $nfw_['res'] == 'BLOCK' ) {
|
70 |
$wp_config = dirname($nfw_['wp_content']) . '/wp-config.php';
|
71 |
}
|
72 |
|
73 |
+
// Connection
|
74 |
+
$ret = nfw_connect();
|
75 |
+
if ( $ret !== true ) {
|
76 |
+
nfw_quit( $ret );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
return;
|
78 |
}
|
|
|
79 |
|
80 |
+
// Fetch options
|
81 |
+
$ret = nfw_get_data( 'nfw_options' );
|
82 |
+
if ( $ret !== true ) {
|
83 |
+
nfw_quit( $ret );
|
84 |
return;
|
85 |
}
|
86 |
|
87 |
if (! empty($nfw_['nfw_options']['clogs_pubkey']) && isset($_POST['clogs_req']) ) {
|
88 |
+
include_once 'fw_centlog.php';
|
89 |
fw_centlog();
|
90 |
exit;
|
91 |
}
|
92 |
|
93 |
if ( empty($nfw_['nfw_options']['enabled']) ) {
|
94 |
+
nfw_quit( 20 );
|
|
|
|
|
95 |
return;
|
96 |
}
|
97 |
|
217 |
|
218 |
if (! empty($_SESSION['nfw_goodguy']) ) {
|
219 |
|
220 |
+
// Look for Live Log AJAX request:
|
221 |
if (! empty($_SESSION['nfw_livelog']) && isset($_POST['livecls']) && isset($_POST['lines'])) {
|
222 |
+
include_once 'fw_livelog.php';
|
223 |
fw_livelog_show();
|
224 |
}
|
225 |
|
226 |
+
// Fetch admin rules
|
227 |
+
$ret = nfw_get_data( 'nfw_rules' );
|
228 |
+
if ( $ret !== true ) {
|
229 |
+
nfw_quit( $ret );
|
|
|
|
|
|
|
|
|
|
|
|
|
230 |
return;
|
231 |
}
|
232 |
+
nfw_check_admin_request();
|
233 |
|
234 |
+
nfw_quit( 20 );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
235 |
return;
|
236 |
}
|
237 |
define('NFW_SWL', 1);
|
238 |
|
239 |
if ( file_exists($nfw_['log_dir'] .'/cache/livelogrun.php')) {
|
240 |
+
include_once 'fw_livelog.php';
|
241 |
fw_livelog_record();
|
242 |
}
|
243 |
|
246 |
@ini_set('display_errors', 0);
|
247 |
}
|
248 |
|
249 |
+
if ( empty($nfw_['nfw_options']['allow_local_ip']) && ! filter_var(NFW_REMOTE_ADDR, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) ) {
|
250 |
nfw_quit(20);
|
251 |
return;
|
252 |
}
|
261 |
}
|
262 |
|
263 |
if (! empty($nfw_['nfw_options']['fg_enable']) && ! defined('NFW_WPWAF') ) {
|
264 |
+
include_once 'fw_fileguard.php';
|
265 |
fw_fileguard();
|
266 |
}
|
267 |
|
323 |
|
324 |
nfw_check_upload();
|
325 |
|
326 |
+
$nfw_['user_can'] = false;
|
327 |
+
if ( isset( $_SESSION['nfw_user_can'] ) ) {
|
328 |
+
$nfw_['user_can'] = nfw_check_postpage();
|
329 |
}
|
330 |
|
331 |
+
// Fetch rules
|
332 |
+
$ret = nfw_get_data( 'nfw_rules' );
|
333 |
+
if ( $ret !== true ) {
|
334 |
+
nfw_quit( $ret );
|
335 |
return;
|
336 |
}
|
|
|
337 |
|
338 |
+
if ( $nfw_['user_can'] == false ) {
|
339 |
+
nfw_check_request( $nfw_['nfw_rules'], $nfw_['nfw_options'] );
|
340 |
+
} else {
|
341 |
+
nfw_check_admin_request();
|
342 |
}
|
343 |
|
|
|
|
|
344 |
if (! empty($nfw_['nfw_options']['get_sanitise']) && ! empty($_GET) ){
|
345 |
$_GET = nfw_sanitise( $_GET, 1, 'GET');
|
346 |
}
|
387 |
$nfw_ = array();
|
388 |
}
|
389 |
|
390 |
+
// =====================================================================
|
391 |
+
// Connect to the DB.
|
392 |
+
|
393 |
+
function nfw_connect() {
|
394 |
+
|
395 |
+
global $nfw_, $wp_config;
|
396 |
+
|
397 |
+
// WPWAF mode?
|
398 |
+
if ( defined('NFW_WPWAF') && NFW_WPWAF == 2 ) {
|
399 |
+
$nfw_['wp_waf'] = 2;
|
400 |
+
return true;
|
401 |
+
}
|
402 |
+
|
403 |
+
// Check if we have a SQL link that was defined in the .htninja.
|
404 |
+
// See "Giving NinjaFirewall a MySQLi link identifier"
|
405 |
+
// at https://nintechnet.com/ninjafirewall/wp-edition/help/?htninja
|
406 |
+
if (! empty( $GLOBALS['nfw_mysqli'] ) && ! empty( $GLOBALS['nfw_table_prefix'] ) ) {
|
407 |
+
$nfw_['mysqli'] = $GLOBALS['nfw_mysqli'];
|
408 |
+
$nfw_['table_prefix'] = $GLOBALS['nfw_table_prefix'];
|
409 |
+
return true;
|
410 |
+
}
|
411 |
+
|
412 |
+
// DB
|
413 |
+
if (! file_exists( $wp_config ) ) {
|
414 |
+
if (! @file_exists( $wp_config = dirname( dirname($nfw_['wp_content']) ) . '/wp-config.php') ) {
|
415 |
+
return 1;
|
416 |
+
}
|
417 |
+
}
|
418 |
+
if (! $nfw_['fh'] = fopen($wp_config, 'r') ) {
|
419 |
+
return 2;
|
420 |
+
}
|
421 |
+
while (! feof($nfw_['fh'])) {
|
422 |
+
$nfw_['line'] = fgets($nfw_['fh']);
|
423 |
+
if ( preg_match('/^\s*define\s*\(\s*[\'"]DB_NAME[\'"]\s*,\s*[\'"](.+?)[\'"]/', $nfw_['line'], $nfw_['match']) ) {
|
424 |
+
$nfw_['DB_NAME'] = $nfw_['match'][1];
|
425 |
+
} elseif ( preg_match('/^\s*define\s*\(\s*[\'"]DB_USER[\'"]\s*,\s*[\'"](.+?)[\'"]/', $nfw_['line'], $nfw_['match']) ) {
|
426 |
+
$nfw_['DB_USER'] = $nfw_['match'][1];
|
427 |
+
} elseif ( preg_match('/^\s*define\s*\(\s*[\'"]DB_PASSWORD[\'"]\s*,\s*([\'"])(.+?)\1\s*\);/', $nfw_['line'], $nfw_['match']) ) {
|
428 |
+
$nfw_['DB_PASSWORD'] = stripcslashes( $nfw_['match'][2] );
|
429 |
+
} elseif ( preg_match('/^\s*define\s*\(\s*[\'"]DB_HOST[\'"]\s*,\s*[\'"](.+?)[\'"]/', $nfw_['line'], $nfw_['match']) ) {
|
430 |
+
$nfw_['DB_HOST'] = $nfw_['match'][1];
|
431 |
+
} elseif ( preg_match('/^\s*\$table_prefix\s*=\s*[\'"](.+?)[\'"]/', $nfw_['line'], $nfw_['match']) ) {
|
432 |
+
$nfw_['table_prefix'] = $nfw_['match'][1];
|
433 |
+
}
|
434 |
+
}
|
435 |
+
fclose($nfw_['fh']);
|
436 |
+
unset($wp_config);
|
437 |
+
if ( (! isset($nfw_['DB_NAME'])) || (! isset($nfw_['DB_USER'])) || (! isset($nfw_['DB_PASSWORD'])) || (! isset($nfw_['DB_HOST'])) || (! isset($nfw_['table_prefix'])) ) {
|
438 |
+
return 3;
|
439 |
+
}
|
440 |
+
|
441 |
+
nfw_check_dbhost();
|
442 |
+
// Make sure mysqli extension is loaded
|
443 |
+
if (! function_exists( 'mysqli_connect' ) ) {
|
444 |
+
return 14;
|
445 |
+
}
|
446 |
+
@$nfw_['mysqli'] = new mysqli($nfw_['DB_HOST'], $nfw_['DB_USER'], $nfw_['DB_PASSWORD'], $nfw_['DB_NAME'], $nfw_['port'], $nfw_['socket']);
|
447 |
+
if ($nfw_['mysqli']->connect_error) {
|
448 |
+
return 4;
|
449 |
+
}
|
450 |
+
|
451 |
+
return true;
|
452 |
+
}
|
453 |
+
|
454 |
+
// =====================================================================
|
455 |
+
// Fetch rules and options.
|
456 |
+
|
457 |
+
function nfw_get_data( $what ) {
|
458 |
+
|
459 |
+
global $nfw_;
|
460 |
+
|
461 |
+
if ( $what != 'nfw_rules' ) {
|
462 |
+
$what = 'nfw_options';
|
463 |
+
}
|
464 |
+
|
465 |
+
// WP API
|
466 |
+
if ( isset( $nfw_['wp_waf'] ) && $nfw_['wp_waf'] == 2 ) {
|
467 |
+
$nfw_[ $what ] = get_option( $what );
|
468 |
+
return true;
|
469 |
+
|
470 |
+
// DB
|
471 |
+
} else {
|
472 |
+
// Rules
|
473 |
+
if ( $what == 'nfw_rules' ) {
|
474 |
+
if (! $nfw_['result'] = @$nfw_['mysqli']->query('SELECT * FROM `' . $nfw_['mysqli']->real_escape_string($nfw_['table_prefix']) . "options` WHERE `option_name` = 'nfw_rules'") ) {
|
475 |
+
return 7;
|
476 |
+
}
|
477 |
+
if (! $nfw_['rules'] = @$nfw_['result']->fetch_object() ) {
|
478 |
+
return 8;
|
479 |
+
}
|
480 |
+
if (! $nfw_['nfw_rules'] = @unserialize( $nfw_['rules']->option_value ) ) {
|
481 |
+
return 12;
|
482 |
+
}
|
483 |
+
// Options
|
484 |
+
} else {
|
485 |
+
if (! $nfw_['result'] = @$nfw_['mysqli']->query('SELECT * FROM `' . $nfw_['mysqli']->real_escape_string($nfw_['table_prefix']) . "options` WHERE `option_name` = 'nfw_options'") ) {
|
486 |
+
|
487 |
+
// Maybe this is an old multisite install where the main site
|
488 |
+
// options table is named 'wp_1_options' instead of 'wp_options'
|
489 |
+
if (! $nfw_['result'] = @$nfw_['mysqli']->query('SELECT * FROM `' . $nfw_['mysqli']->real_escape_string($nfw_['table_prefix']) . "1_options` WHERE `option_name` = 'nfw_options'") ) {
|
490 |
+
return 5;
|
491 |
+
}
|
492 |
+
// Change the table prefix to match 'wp_1_options'
|
493 |
+
$nfw_['table_prefix'] = "{$nfw_['table_prefix']}1_";
|
494 |
+
}
|
495 |
+
if (! $nfw_['options'] = @$nfw_['result']->fetch_object() ) {
|
496 |
+
return 6;
|
497 |
+
}
|
498 |
+
if (! $nfw_['nfw_options'] = @unserialize( $nfw_['options']->option_value ) ) {
|
499 |
+
return 11;
|
500 |
+
}
|
501 |
+
}
|
502 |
+
|
503 |
+
// Make sure we have something or return an error
|
504 |
+
if ( $what == 'nfw_rules' && ! isset( $nfw_['nfw_rules']['1'] ) ) {
|
505 |
+
return 16;
|
506 |
+
} elseif ( $what == 'nfw_options' && ! isset( $nfw_['nfw_options']['enabled'] ) ) {
|
507 |
+
return 15;
|
508 |
+
}
|
509 |
+
|
510 |
+
// All good
|
511 |
+
return true;
|
512 |
+
}
|
513 |
+
}
|
514 |
+
|
515 |
+
// =====================================================================
|
516 |
+
|
517 |
+
function nfw_check_postpage() {
|
518 |
+
|
519 |
+
if ( empty( $_SERVER['REQUEST_URI'] ) || $_SERVER['REQUEST_METHOD'] != 'POST' ||
|
520 |
+
! in_array( $_SESSION['nfw_user_can'], array( 'edit_pages', 'edit_posts' ) ) ) {
|
521 |
+
|
522 |
+
return false;
|
523 |
+
}
|
524 |
+
$path = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH );
|
525 |
+
if ( $path == null ) {
|
526 |
+
|
527 |
+
return false;
|
528 |
+
}
|
529 |
+
|
530 |
+
if ( $path == '/wp-admin/post.php' ) {
|
531 |
+
if ( isset( $_POST['post_type'] ) && isset( $_POST['action'] ) && $_POST['action'] == 'editpost' ) {
|
532 |
+
if ( $_POST['post_type'] == 'page' && $_SESSION['nfw_user_can'] == 'edit_pages' ) {
|
533 |
+
return true;
|
534 |
+
}
|
535 |
+
if ( $_POST['post_type'] == 'post' && ( $_SESSION['nfw_user_can'] == 'edit_posts' || $_SESSION['nfw_user_can'] == 'edit_pages' ) ) {
|
536 |
+
return true;
|
537 |
+
}
|
538 |
+
}
|
539 |
+
return false;
|
540 |
+
}
|
541 |
+
|
542 |
+
if ( strpos( $path, '/wp-json/wp/v2/pages/' ) === 0 ) {
|
543 |
+
if ( $_SESSION['nfw_user_can'] == 'edit_pages' ) {
|
544 |
+
return true;
|
545 |
+
}
|
546 |
+
return false;
|
547 |
+
}
|
548 |
+
if ( strpos( $path, '/wp-json/wp/v2/posts/' ) === 0 ) {
|
549 |
+
if ( $_SESSION['nfw_user_can'] == 'edit_posts' ) {
|
550 |
+
return true;
|
551 |
+
}
|
552 |
+
}
|
553 |
+
|
554 |
+
return false;
|
555 |
+
}
|
556 |
+
|
557 |
// =====================================================================
|
558 |
// Check for HTTPS.
|
559 |
|
619 |
if (! defined('NFW_REMOTE_ADDR') ) {
|
620 |
define('NFW_REMOTE_ADDR', htmlspecialchars($_SERVER['REMOTE_ADDR']) );
|
621 |
}
|
622 |
+
|
623 |
+
if ( filter_var( NFW_REMOTE_ADDR, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 ) ) {
|
624 |
+
define( 'NFW_REMOTE_ADDR_IPV6', true );
|
625 |
+
} else {
|
626 |
+
define( 'NFW_REMOTE_ADDR_IPV6', false );
|
627 |
+
}
|
628 |
+
|
629 |
+
if (filter_var( NFW_REMOTE_ADDR, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE ) ) {
|
630 |
+
define( 'NFW_REMOTE_ADDR_PRIVATE', false );
|
631 |
+
} else {
|
632 |
+
define( 'NFW_REMOTE_ADDR_PRIVATE', true );
|
633 |
+
}
|
634 |
}
|
635 |
|
636 |
// =====================================================================
|
752 |
|
753 |
// =====================================================================
|
754 |
|
755 |
+
function nfw_check_admin_request() {
|
756 |
+
|
757 |
+
global $nfw_;
|
758 |
+
|
759 |
+
if ( isset( $nfw_['nfw_rules']['999'] ) ) {
|
760 |
+
$nfw_['adm_rules'] = array();
|
761 |
+
foreach ( $nfw_['nfw_rules']['999'] as $key => $value ) {
|
762 |
+
if ( empty( $nfw_['nfw_rules'][$key]['ena'] ) ) { continue; }
|
763 |
+
$nfw_['adm_rules'][$key] = $nfw_['nfw_rules'][$key];
|
764 |
+
}
|
765 |
+
if (! empty( $nfw_['adm_rules'] ) ) {
|
766 |
+
nfw_check_request( $nfw_['adm_rules'], $nfw_['nfw_options'] );
|
767 |
+
}
|
768 |
+
}
|
769 |
+
}
|
770 |
+
|
771 |
+
// =====================================================================
|
772 |
+
|
773 |
function nfw_check_request( $nfw_rules, $nfw_options ) {
|
774 |
|
775 |
if ( defined('NFW_STATUS') ) { return; }
|
1271 |
if (is_string($str) ) {
|
1272 |
if (get_magic_quotes_gpc() ) { $str = stripslashes($str); }
|
1273 |
if ($how == 1) {
|
1274 |
+
// Full WAF
|
1275 |
+
if (! empty( $nfw_['mysqli'] ) ) {
|
1276 |
+
$str2 = $nfw_['mysqli']->real_escape_string($str);
|
1277 |
+
// WP WAF
|
1278 |
+
} else {
|
1279 |
+
global $wpdb;
|
1280 |
+
$str2 = @$wpdb->_real_escape($str);
|
1281 |
+
}
|
1282 |
$str2 = str_replace( array( '`', '<', '>'), array( '\\`', '<', '>'), $str2);
|
1283 |
if ( $msg == 'GET' && strpos( $str2, '/') !== false ) {
|
1284 |
$str2 = str_replace( array( '*', '?' ), array( '\*', '\?' ), $str2 );
|
1297 |
return $str;
|
1298 |
}
|
1299 |
if ($str2 != $str) {
|
1300 |
+
nfw_log('Sanitising user input', $msg . ': ' . $str, 7, 0);
|
1301 |
}
|
1302 |
return $str2;
|
1303 |
|
1313 |
}
|
1314 |
if ($occ) {
|
1315 |
unset($str[$key]);
|
1316 |
+
nfw_log('Sanitising user input', $msg . ': ' . $key, 7, 0);
|
1317 |
}
|
1318 |
$str[$key2] = nfw_sanitise($value, $how, $msg);
|
1319 |
}
|
1448 |
$tmp . '[' . time() . '] ' . '[' . round( microtime(true) - $nfw_['fw_starttime'], 5) . '] ' .
|
1449 |
'[' . $_SERVER['SERVER_NAME'] . '] ' . '[#' . $nfw_['num_incident'] . '] ' .
|
1450 |
'[' . $ruleid . '] ' .
|
1451 |
+
'[' . $loglevel . '] ' . '[' . nfw_anonymize_ip() . '] ' .
|
1452 |
'[' . $http_ret_code . '] ' . '[' . $_SERVER['REQUEST_METHOD'] . '] ' .
|
1453 |
'[' . $_SERVER['SCRIPT_NAME'] . '] ' . '[' . $loginfo . '] ' .
|
1454 |
$encoding . "\n", FILE_APPEND | LOCK_EX );
|
1456 |
|
1457 |
// =====================================================================
|
1458 |
|
1459 |
+
function nfw_anonymize_ip() {
|
1460 |
|
1461 |
global $nfw_;
|
1462 |
|
1463 |
+
if (! empty( $nfw_['nfw_options']['anon_ip'] ) && NFW_REMOTE_ADDR_PRIVATE === false ) {
|
1464 |
+
return substr( NFW_REMOTE_ADDR, 0, -3 ) .'xxx';
|
|
|
1465 |
}
|
1466 |
|
1467 |
+
return NFW_REMOTE_ADDR;
|
1468 |
}
|
1469 |
|
1470 |
// =====================================================================
|
1675 |
$bf_nosig = '';
|
1676 |
}
|
1677 |
if ( $bf_type == 0 ) {
|
1678 |
+
$message = '<html><head><title>'. $bf_nosig .'</title><link rel="stylesheet" href="./wp-includes/css/buttons.min.css" type="text/css"><link rel="stylesheet" href="./wp-admin/css/login.min.css" type="text/css"></head><body class="login wp-core-ui" style="color:#444"><div id="login"><center><h2>' . $auth_msgtxt . '</h2><form method="post"><label>'. $bf_nosig .'</label><br><br><p><input class="input" type="text" name="u" placeholder="Username"></p><p><input class="input" type="password" name="p" placeholder="Password"></p><p align="right"><input type="submit" value="Login Page »" class="button-secondary"></p><input type="hidden" name="reauth" value="1"></form></center></div></body></html>';
|
1679 |
} else {
|
1680 |
+
$message = '<html><head><title>'. $bf_nosig .'</title><link rel="stylesheet" href="./wp-includes/css/buttons.min.css" type="text/css"><link rel="stylesheet" href="./wp-admin/css/login.min.css" type="text/css"></head><body class="login wp-core-ui" style="color:#444"><div id="login"><center><form method="post"><p><label>'. base64_decode( $captcha_text ) .'</label></p><br><p>' . nfw_get_captcha() . '</p><p><input class="input" type="text" name="c" autofocus></p><p align="right"><input type="submit" value="Login Page »" class="button-secondary"></p><input type="hidden" name="reauth" value="1"></form><br><label>'. $bf_nosig .'</label></center></div></body></html>';
|
1681 |
}
|
1682 |
if ( $bf_allow_bot == 0 ) {
|
1683 |
ini_set('zlib.output_compression','Off');
|
lib/firewall_log.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
| GNU General Public License for more details. |
|
17 |
-
+---------------------------------------------------------------------+ i18n+ / sa
|
18 |
*/
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
@@ -76,9 +76,6 @@ if ( isset( $_GET['nfw_logname'] ) && ! empty( $available_logs[$_GET['nfw_lognam
|
|
76 |
$selected_log = $monthly_log;
|
77 |
$data = nf_sub_log_read_local( $monthly_log, $log_dir, $max_lines-1 );
|
78 |
}
|
79 |
-
|
80 |
-
nf_sub_log_js_header();
|
81 |
-
|
82 |
?>
|
83 |
<div class="wrap">
|
84 |
<h1><img style="vertical-align:top;width:33px;height:33px;" src="<?php echo plugins_url( '/ninjafirewall/images/ninjafirewall_32.png' ) ?>"> <?php _e('Firewall Log', 'ninjafirewall') ?></h1>
|
@@ -151,9 +148,8 @@ if ( defined('NFW_TEXTAREA_HEIGHT') ) {
|
|
151 |
}
|
152 |
}
|
153 |
?></textarea>
|
154 |
-
<br />
|
155 |
<center>
|
156 |
-
<
|
157 |
</center>
|
158 |
</td>
|
159 |
</tr>
|
@@ -168,16 +164,15 @@ if ( empty( $nfw_options['auto_del_log'] ) ) {
|
|
168 |
?>
|
169 |
<h3><?php _e('Log Options', 'ninjafirewall') ?></h3>
|
170 |
<form method="post" action="?page=nfsublog"><?php wp_nonce_field('log_save', 'nfwnonce', 0); ?>
|
171 |
-
<table class="form-table">
|
172 |
<tr>
|
173 |
-
<th scope="row"><?php _e('Auto-delete log', 'ninjafirewall') ?></th>
|
174 |
<td>
|
175 |
<?php
|
176 |
$input = '<input type="number" name="nfw_options[auto_del_log]" min="0" value="'. (int) $nfw_options['auto_del_log'] .'" class="small-text" />';
|
177 |
printf( __('Automatically delete logs older than %s days', 'ninjafirewall' ), $input );
|
178 |
?>
|
179 |
-
<
|
180 |
-
<p><span class="description"><?php _e('Set this option to 0 to disable it.', 'ninjafirewall' ) ?></span></p>
|
181 |
</td>
|
182 |
</tr>
|
183 |
</table>
|
@@ -187,7 +182,7 @@ if ( empty( $nfw_options['auto_del_log'] ) ) {
|
|
187 |
</form>
|
188 |
|
189 |
<a name="clogs"></a>
|
190 |
-
<form name="frmlog2" method="post" action="?page=nfsublog" onsubmit="return
|
191 |
<?php
|
192 |
|
193 |
wp_nonce_field('clogs_pubkey', 'nfwnonce', 0);
|
@@ -200,48 +195,27 @@ if ( empty( $nfw_options['auto_del_log'] ) ) {
|
|
200 |
|
201 |
<a name="clogs"></a>
|
202 |
<h3><?php _e('Centralized Logging', 'ninjafirewall') ?></h3>
|
203 |
-
<table class="form-table">
|
204 |
<tr>
|
205 |
-
<th scope="row"><?php _e('Enter your public key (optional)', 'ninjafirewall') ?></th>
|
206 |
<td>
|
207 |
-
<input class="large-text" type="text" maxlength="80" name="nfw_options[clogs_pubkey]" value="<?php echo htmlspecialchars( $nfw_options['clogs_pubkey'] ) ?>" autocomplete="off" />
|
208 |
-
<p
|
209 |
</td>
|
210 |
</tr>
|
211 |
</table>
|
212 |
|
213 |
<br />
|
214 |
<input type="hidden" name="nfw_act" value="pubkey" />
|
215 |
-
<input class="button-primary" name="save_pubkey"
|
216 |
|
217 |
-
<input class="button-secondary" name="delete_pubkey"
|
218 |
|
219 |
</form>
|
220 |
-
|
221 |
<?php
|
222 |
-
echo '
|
223 |
-
</div>';
|
224 |
-
|
225 |
-
/* ------------------------------------------------------------------ */
|
226 |
-
|
227 |
-
function nf_sub_log_js_header() {
|
228 |
-
|
229 |
-
echo '<script>
|
230 |
-
var what;
|
231 |
-
function check_key() {
|
232 |
-
if (what == 1) { return true; }
|
233 |
-
var pubkey = document.frmlog2.elements["nfw_options[clogs_pubkey]"];
|
234 |
-
if (! pubkey.value.match( /^[a-f0-9]{40}:(?:[a-f0-9:.]{3,39}|\*)$/) ) {
|
235 |
-
pubkey.focus();
|
236 |
-
alert("'. esc_js( __('Your public key is not valid.', 'ninjafirewall') ) . '");
|
237 |
-
return false;
|
238 |
-
}
|
239 |
-
}
|
240 |
-
</script>';
|
241 |
-
|
242 |
-
}
|
243 |
|
244 |
-
|
245 |
|
246 |
function nf_sub_log_save_options( $nfw_options ) {
|
247 |
|
@@ -255,7 +229,7 @@ function nf_sub_log_save_options( $nfw_options ) {
|
|
255 |
|
256 |
}
|
257 |
|
258 |
-
|
259 |
|
260 |
function nf_sub_log_create( $log ) {
|
261 |
|
@@ -263,7 +237,7 @@ function nf_sub_log_create( $log ) {
|
|
263 |
|
264 |
}
|
265 |
|
266 |
-
|
267 |
|
268 |
function nf_sub_log_find_local( $log_dir ) {
|
269 |
|
@@ -283,7 +257,7 @@ function nf_sub_log_find_local( $log_dir ) {
|
|
283 |
return $available_logs;
|
284 |
}
|
285 |
|
286 |
-
|
287 |
|
288 |
function nf_sub_log_save_pubkey( $nfw_options ) {
|
289 |
|
@@ -298,7 +272,7 @@ function nf_sub_log_save_pubkey( $nfw_options ) {
|
|
298 |
|
299 |
}
|
300 |
|
301 |
-
|
302 |
|
303 |
function nf_sub_log_read_local( $log, $log_dir, $max_lines ) {
|
304 |
|
@@ -338,5 +312,5 @@ function nf_sub_log_read_local( $log, $log_dir, $max_lines ) {
|
|
338 |
|
339 |
}
|
340 |
|
341 |
-
|
342 |
// EOF
|
14 |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
| GNU General Public License for more details. |
|
17 |
+
+---------------------------------------------------------------------+ i18n+ / sa / 2
|
18 |
*/
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
76 |
$selected_log = $monthly_log;
|
77 |
$data = nf_sub_log_read_local( $monthly_log, $log_dir, $max_lines-1 );
|
78 |
}
|
|
|
|
|
|
|
79 |
?>
|
80 |
<div class="wrap">
|
81 |
<h1><img style="vertical-align:top;width:33px;height:33px;" src="<?php echo plugins_url( '/ninjafirewall/images/ninjafirewall_32.png' ) ?>"> <?php _e('Firewall Log', 'ninjafirewall') ?></h1>
|
148 |
}
|
149 |
}
|
150 |
?></textarea>
|
|
|
151 |
<center>
|
152 |
+
<p class="description"><?php _e('The log shows all threats that were blocked by the firewall, unless stated otherwise. It is rotated monthly.', 'ninjafirewall') ?></p>
|
153 |
</center>
|
154 |
</td>
|
155 |
</tr>
|
164 |
?>
|
165 |
<h3><?php _e('Log Options', 'ninjafirewall') ?></h3>
|
166 |
<form method="post" action="?page=nfsublog"><?php wp_nonce_field('log_save', 'nfwnonce', 0); ?>
|
167 |
+
<table class="form-table nfw-table">
|
168 |
<tr>
|
169 |
+
<th scope="row" class="row-med"><?php _e('Auto-delete log', 'ninjafirewall') ?></th>
|
170 |
<td>
|
171 |
<?php
|
172 |
$input = '<input type="number" name="nfw_options[auto_del_log]" min="0" value="'. (int) $nfw_options['auto_del_log'] .'" class="small-text" />';
|
173 |
printf( __('Automatically delete logs older than %s days', 'ninjafirewall' ), $input );
|
174 |
?>
|
175 |
+
<p class="description"><?php _e('Set this option to 0 to disable it.', 'ninjafirewall' ) ?></p>
|
|
|
176 |
</td>
|
177 |
</tr>
|
178 |
</table>
|
182 |
</form>
|
183 |
|
184 |
<a name="clogs"></a>
|
185 |
+
<form name="frmlog2" method="post" action="?page=nfsublog" onsubmit="return nfwjs_check_key();">
|
186 |
<?php
|
187 |
|
188 |
wp_nonce_field('clogs_pubkey', 'nfwnonce', 0);
|
195 |
|
196 |
<a name="clogs"></a>
|
197 |
<h3><?php _e('Centralized Logging', 'ninjafirewall') ?></h3>
|
198 |
+
<table class="form-table nfw-table">
|
199 |
<tr>
|
200 |
+
<th scope="row" class="row-med"><?php _e('Enter your public key (optional)', 'ninjafirewall') ?></th>
|
201 |
<td>
|
202 |
+
<input id="clogs-pubkey" class="large-text" type="text" maxlength="80" name="nfw_options[clogs_pubkey]" value="<?php echo htmlspecialchars( $nfw_options['clogs_pubkey'] ) ?>" autocomplete="off" />
|
203 |
+
<p class="description"><?php printf( __('<a href="%s">Consult our blog</a> if you want to enable centralized logging.', 'ninjafirewall'), 'https://blog.nintechnet.com/centralized-logging-with-ninjafirewall/' ) ?></p>
|
204 |
</td>
|
205 |
</tr>
|
206 |
</table>
|
207 |
|
208 |
<br />
|
209 |
<input type="hidden" name="nfw_act" value="pubkey" />
|
210 |
+
<input class="button-primary" name="save_pubkey" value="<?php _e('Save Public Key', 'ninjafirewall') ?>" type="submit" />
|
211 |
|
212 |
+
<input class="button-secondary" name="delete_pubkey" value="<?php _e('Delete Public Key', 'ninjafirewall') ?>" type="submit"<?php disabled($nfw_options['clogs_pubkey'], '' ) ?> />
|
213 |
|
214 |
</form>
|
215 |
+
</div>
|
216 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
217 |
|
218 |
+
// ---------------------------------------------------------------------
|
219 |
|
220 |
function nf_sub_log_save_options( $nfw_options ) {
|
221 |
|
229 |
|
230 |
}
|
231 |
|
232 |
+
// ---------------------------------------------------------------------
|
233 |
|
234 |
function nf_sub_log_create( $log ) {
|
235 |
|
237 |
|
238 |
}
|
239 |
|
240 |
+
// ---------------------------------------------------------------------
|
241 |
|
242 |
function nf_sub_log_find_local( $log_dir ) {
|
243 |
|
257 |
return $available_logs;
|
258 |
}
|
259 |
|
260 |
+
// ---------------------------------------------------------------------
|
261 |
|
262 |
function nf_sub_log_save_pubkey( $nfw_options ) {
|
263 |
|
272 |
|
273 |
}
|
274 |
|
275 |
+
// ---------------------------------------------------------------------
|
276 |
|
277 |
function nf_sub_log_read_local( $log, $log_dir, $max_lines ) {
|
278 |
|
312 |
|
313 |
}
|
314 |
|
315 |
+
// ---------------------------------------------------------------------
|
316 |
// EOF
|
lib/firewall_options.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
| GNU General Public License for more details. |
|
17 |
-
+---------------------------------------------------------------------+ i18n+ / sa
|
18 |
*/
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
@@ -24,55 +24,14 @@ nf_not_allowed( 'block', __LINE__ );
|
|
24 |
|
25 |
$nfw_options = nfw_get_option( 'nfw_options' );
|
26 |
|
27 |
-
|
28 |
-
<script>
|
29 |
-
var restoreconf = 0;
|
30 |
-
function save_options() {
|
31 |
-
if ( restoreconf > 0 ) {
|
32 |
-
if ( confirm( "'. esc_js( __('This action will restore the selected configuration file and will override all your current firewall options, policies and rules. Continue?', 'ninjafirewall') ) .'" ) ) {
|
33 |
-
return true;
|
34 |
-
}
|
35 |
-
return false;
|
36 |
-
}
|
37 |
-
return true;
|
38 |
-
}
|
39 |
-
function select_backup( what ) {
|
40 |
-
if ( what == 0 ) {
|
41 |
-
restoreconf = 0;
|
42 |
-
} else {
|
43 |
-
restoreconf = 1;
|
44 |
-
}
|
45 |
-
}
|
46 |
-
function preview_msg() {
|
47 |
-
var t1 = document.option_form.elements[\'nfw_options[blocked_msg]\'].value.replace(\'%%REM_ADDRESS%%\',\'' . htmlspecialchars(NFW_REMOTE_ADDR) . '\');
|
48 |
-
var t2 = t1.replace(\'%%NUM_INCIDENT%%\',\'1234567\');
|
49 |
-
var t3 = t2.replace(\'%%NINJA_LOGO%%\',\'<img src="' . plugins_url() . '/ninjafirewall/images/ninjafirewall_75.png" width="75" height="75" title="NinjaFirewall">\');
|
50 |
-
var ns;
|
51 |
-
if ( t3.match(/<style/i) ) {
|
52 |
-
ns = "'. esc_js( __('CSS style sheets', 'ninjafirewall') ) .'";
|
53 |
-
}
|
54 |
-
if ( t3.match(/<script/i) ) {
|
55 |
-
ns = "'. esc_js( __('Javascript code', 'ninjafirewall') ) .'";
|
56 |
-
}
|
57 |
-
if ( ns ) {
|
58 |
-
alert("'. sprintf( esc_js( __('Your message seems to contain %s. For security reasons, it cannot be previewed from the admin dashboard.', 'ninjafirewall') ), '"+ ns +"'). '");
|
59 |
-
return false;
|
60 |
-
}
|
61 |
-
document.getElementById(\'out_msg\').innerHTML = t3;
|
62 |
-
jQuery("#td_msg").slideDown();
|
63 |
-
document.getElementById(\'btn_msg\').value = \'' . esc_js( __('Refresh preview', 'ninjafirewall') ) . '\';
|
64 |
-
}
|
65 |
-
function default_msg() {
|
66 |
-
document.option_form.elements[\'nfw_options[blocked_msg]\'].value = "' . preg_replace( '/[\r\n]/', '\n', NFW_DEFAULT_MSG) .'";
|
67 |
-
}
|
68 |
-
</script>
|
69 |
-
|
70 |
<div class="wrap">
|
71 |
-
<h1><img style="vertical-align:top;width:33px;height:33px;" src="
|
|
|
72 |
|
73 |
// Saved options ?
|
74 |
-
if ( isset( $_POST['nfw_options']) ) {
|
75 |
-
if ( empty($_POST['nfwnonce']) || ! wp_verify_nonce($_POST['nfwnonce'], 'options_save') ) {
|
76 |
wp_nonce_ays('options_save');
|
77 |
}
|
78 |
$res = nf_sub_options_save();
|
@@ -84,142 +43,124 @@ if ( isset( $_POST['nfw_options']) ) {
|
|
84 |
}
|
85 |
}
|
86 |
|
87 |
-
|
88 |
-
<
|
|
|
|
|
89 |
<?php wp_nonce_field('options_save', 'nfwnonce', 0); ?>
|
90 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
91 |
<tr>
|
92 |
-
<th scope="row"><?php _e('Firewall protection', 'ninjafirewall') ?></th>
|
93 |
-
<?php
|
94 |
-
// Enabled :
|
95 |
-
if (! empty( $nfw_options['enabled']) ) {
|
96 |
-
echo '
|
97 |
-
<td width="20" align="left"> </td>
|
98 |
<td>
|
99 |
-
|
100 |
-
<option value="1" selected>' . __('Enabled', 'ninjafirewall') . '</option>
|
101 |
-
<option value="0">' . __('Disabled', 'ninjafirewall') . '</option>
|
102 |
-
</select>';
|
103 |
-
// Disabled :
|
104 |
-
} else {
|
105 |
-
echo '
|
106 |
-
<td width="20" align="left"><img src="' . plugins_url() . '/ninjafirewall/images/glyphicons-error.png"></td>
|
107 |
-
<td>
|
108 |
-
<select name="nfw_options[enabled]" style="width:200px">
|
109 |
-
<option value="1">' . __('Enabled', 'ninjafirewall') . '</option>
|
110 |
-
<option value="0" selected>' . __('Disabled', 'ninjafirewall') . '</option>
|
111 |
-
</select> <span class="description"> ' . __('Warning: your site is not protected!', 'ninjafirewall') . '</span>';
|
112 |
-
}
|
113 |
-
echo '
|
114 |
</td>
|
115 |
</tr>
|
116 |
-
<tr>
|
117 |
-
<th scope="row">' . __('Debugging mode', 'ninjafirewall') . '</th>';
|
118 |
|
119 |
-
|
120 |
-
if (
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
} else {
|
130 |
-
// Debugging disabled ?
|
131 |
-
echo '<td width="20"> </td>
|
132 |
<td>
|
133 |
-
|
134 |
-
|
135 |
-
<option value="0" selected>' . __('Disabled (default)', 'ninjafirewall') . '</option>
|
136 |
-
</select>
|
137 |
-
</td>';
|
138 |
-
}
|
139 |
-
|
140 |
-
// Get the HTTP error code to return :
|
141 |
-
if (! @preg_match( '/^(?:4(?:0[0346]|18)|50[03])$/', $nfw_options['ret_code']) ) {
|
142 |
-
$nfw_options['ret_code'] = '403';
|
143 |
-
}
|
144 |
-
?>
|
145 |
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
146 |
<tr>
|
147 |
-
<th scope="row"><?php _e('HTTP error code to return', 'ninjafirewall') ?></th>
|
148 |
-
<td width="20"> </td>
|
149 |
<td>
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
</td>
|
160 |
</tr>
|
161 |
|
162 |
-
<?php
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
?>
|
169 |
<tr>
|
170 |
-
<th scope="row"><?php _e('IP anonymization', 'ninjafirewall') ?></th>
|
171 |
-
<td width="20"> </td>
|
172 |
<td>
|
173 |
-
|
174 |
-
|
175 |
</td>
|
176 |
</tr>
|
177 |
|
178 |
-
<?php
|
179 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
180 |
<tr>
|
181 |
-
<th scope="row"
|
182 |
-
<td width="20"> </td>
|
183 |
<td>
|
184 |
-
<textarea name="nfw_options[blocked_msg]" class="small-text code" cols="
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
} else {
|
189 |
-
echo NFW_DEFAULT_MSG;
|
190 |
-
}
|
191 |
-
?></textarea>
|
192 |
-
<p><input class="button-secondary" type="button" id="btn_msg" value="<?php _e('Preview message', 'ninjafirewall') ?>" onclick="javascript:preview_msg();" /> <input class="button-secondary" type="button" id="btn_msg" value="<?php _e('Default message', 'ninjafirewall') ?>" onclick="javascript:default_msg();" /></p>
|
193 |
</td>
|
194 |
</tr>
|
195 |
</table>
|
196 |
|
197 |
-
<
|
198 |
-
|
199 |
-
<tr><td id="out_msg" style="border:1px solid #DFDFDF;background-color:#ffffff;" width="100%"></td></tr>
|
200 |
-
</table>
|
201 |
-
</div>
|
202 |
|
203 |
<h3><?php _e('Firewall configuration', 'ninjafirewall') ?></h3>
|
204 |
|
205 |
-
<table class="form-table">
|
206 |
<tr>
|
207 |
-
<th scope="row"><?php _e('Export configuration', 'ninjafirewall') ?></th>
|
208 |
-
<td
|
209 |
-
|
|
|
|
|
210 |
</tr>
|
211 |
<tr>
|
212 |
-
<th scope="row"><?php _e('Import configuration', 'ninjafirewall') ?></th>
|
213 |
-
<td
|
214 |
-
|
|
|
215 |
list ( $major_current ) = explode( '.', NFW_ENGINE_VERSION );
|
216 |
printf( __( 'Imported configuration must match plugin version %s.', 'ninjafirewall'), (int) $major_current .'.x' );
|
217 |
echo '<br />'. __('It will override all your current firewall options and rules.', 'ninjafirewall')
|
218 |
-
|
|
|
219 |
</tr>
|
220 |
<tr>
|
221 |
-
<th scope="row"><?php _e('Configuration backup', 'ninjafirewall') ?></th>
|
222 |
-
<td width="20"> </td>
|
223 |
<td><?php echo nf_sub_options_confbackup(); ?></td>
|
224 |
</tr>
|
225 |
</table>
|
@@ -230,9 +171,10 @@ if (! empty( $nfw_options['blocked_msg']) ) {
|
|
230 |
</div>
|
231 |
|
232 |
<?php
|
|
|
233 |
return;
|
234 |
|
235 |
-
|
236 |
|
237 |
function nf_sub_options_confbackup() {
|
238 |
|
@@ -243,7 +185,7 @@ function nf_sub_options_confbackup() {
|
|
243 |
|
244 |
if ( is_array( $glob ) && ! empty( $glob[0] ) ) {
|
245 |
sort( $glob );
|
246 |
-
$res .= '<select name="backup_file" onchange="
|
247 |
__('Available backup files', 'ninjafirewall') .'</option>';
|
248 |
foreach( $glob as $file ) {
|
249 |
if ( preg_match( '`/(backup_(\d{10})_.+\.php)$`', $file, $match ) ) {
|
@@ -253,7 +195,7 @@ function nf_sub_options_confbackup() {
|
|
253 |
}
|
254 |
}
|
255 |
$res .= '</select>';
|
256 |
-
$res .= '<
|
257 |
|
258 |
} else {
|
259 |
// No backup files yet:
|
@@ -263,7 +205,7 @@ function nf_sub_options_confbackup() {
|
|
263 |
|
264 |
}
|
265 |
|
266 |
-
|
267 |
|
268 |
function nf_sub_options_save() {
|
269 |
|
@@ -388,7 +330,7 @@ function nf_sub_options_save() {
|
|
388 |
nfw_update_option( 'nfw_options', $nfw_options);
|
389 |
|
390 |
}
|
391 |
-
|
392 |
|
393 |
function nf_sub_options_import( $file ) {
|
394 |
|
@@ -399,18 +341,18 @@ function nf_sub_options_import( $file ) {
|
|
399 |
if (! $data) {
|
400 |
return sprintf($err_msg, 1);
|
401 |
}
|
402 |
-
@list ($
|
403 |
|
404 |
// Detect and remove potential Unicode BOM:
|
405 |
-
if ( preg_match( '/^\xef\xbb\xbf/', $
|
406 |
-
$
|
407 |
}
|
408 |
|
409 |
-
if (! $
|
410 |
return sprintf($err_msg, 2);
|
411 |
}
|
412 |
|
413 |
-
$nfw_options = @json_decode( $
|
414 |
$nfw_rules = @json_decode( $rules, true );
|
415 |
if (! empty( $bf ) ) {
|
416 |
$bf_conf = json_decode( $bf, true );
|
@@ -420,11 +362,21 @@ function nf_sub_options_import( $file ) {
|
|
420 |
return sprintf($err_msg, 3);
|
421 |
}
|
422 |
|
|
|
423 |
// Make sure the major version numbers match (3.x, 4.x etc):
|
424 |
-
|
|
|
425 |
list ( $major_import ) = explode( '.', $nfw_options['engine_version'] );
|
426 |
-
if ( $major_current != $major_import ) {
|
427 |
-
return __('The imported file is not compatible with that version of NinjaFirewall', 'ninjafirewall');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
428 |
}
|
429 |
|
430 |
// We cannot import WP+ config :
|
@@ -526,7 +478,7 @@ function nf_sub_options_import( $file ) {
|
|
526 |
return;
|
527 |
}
|
528 |
|
529 |
-
|
530 |
|
531 |
function nf_sub_options_alert( $what ) {
|
532 |
|
@@ -579,5 +531,5 @@ function nf_sub_options_alert( $what ) {
|
|
579 |
wp_mail( $recipient, $subject, $message );
|
580 |
}
|
581 |
|
582 |
-
|
583 |
// EOF
|
14 |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
| GNU General Public License for more details. |
|
17 |
+
+---------------------------------------------------------------------+ i18n+ / sa / 2
|
18 |
*/
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
24 |
|
25 |
$nfw_options = nfw_get_option( 'nfw_options' );
|
26 |
|
27 |
+
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
<div class="wrap">
|
29 |
+
<h1><img style="vertical-align:top;width:33px;height:33px;" src="<?php echo plugins_url( '/ninjafirewall/images/ninjafirewall_32.png' ) ?>"> <?php _e('Firewall Options', 'ninjafirewall') ?></h1>
|
30 |
+
<?php
|
31 |
|
32 |
// Saved options ?
|
33 |
+
if ( isset( $_POST['nfw_options'] ) ) {
|
34 |
+
if ( empty( $_POST['nfwnonce'] ) || ! wp_verify_nonce( $_POST['nfwnonce'], 'options_save' ) ) {
|
35 |
wp_nonce_ays('options_save');
|
36 |
}
|
37 |
$res = nf_sub_options_save();
|
43 |
}
|
44 |
}
|
45 |
|
46 |
+
?>
|
47 |
+
<br />
|
48 |
+
<form method="post" name="option_form" enctype="multipart/form-data" onsubmit="return nfwjs_save_options();">
|
49 |
+
|
50 |
<?php wp_nonce_field('options_save', 'nfwnonce', 0); ?>
|
51 |
+
|
52 |
+
<table class="form-table nfw-table">
|
53 |
+
|
54 |
+
<?php
|
55 |
+
if ( empty( $nfw_options['enabled'] ) ) {
|
56 |
+
$nfw_options['enabled'] = 0;
|
57 |
+
} else {
|
58 |
+
$nfw_options['enabled'] = 1;
|
59 |
+
}
|
60 |
+
?>
|
61 |
<tr>
|
62 |
+
<th scope="row" class="row-med"><?php _e('Firewall protection', 'ninjafirewall') ?></th>
|
|
|
|
|
|
|
|
|
|
|
63 |
<td>
|
64 |
+
<?php nfw_toggle_switch( 'danger', 'nfw_options[enabled]', __('Enabled', 'ninjafirewall'), __('Disabled', 'ninjafirewall'), 'large', $nfw_options['enabled'] ) ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
</td>
|
66 |
</tr>
|
|
|
|
|
67 |
|
68 |
+
<?php
|
69 |
+
if ( empty( $nfw_options['debug'] ) ) {
|
70 |
+
$nfw_options['debug'] = 0;
|
71 |
+
} else {
|
72 |
+
$nfw_options['debug'] = 1;
|
73 |
+
}
|
74 |
+
?>
|
75 |
+
<tr>
|
76 |
+
<th scope="row" class="row-med"><?php _e('Debugging mode', 'ninjafirewall') ?></th>
|
|
|
|
|
|
|
|
|
77 |
<td>
|
78 |
+
<?php nfw_toggle_switch( 'warning', 'nfw_options[debug]', __('Yes', 'ninjafirewall'), __('No', 'ninjafirewall'), 'small', $nfw_options['debug'] ) ?>
|
79 |
+
</td>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
80 |
</tr>
|
81 |
+
|
82 |
+
<?php
|
83 |
+
// Get the HTTP error code to return
|
84 |
+
if ( empty( $nfw_options['ret_code'] ) || ! preg_match( '/^(?:4(?:0[0346]|18)|50[03])$/', $nfw_options['ret_code'] ) ) {
|
85 |
+
$nfw_options['ret_code'] = '403';
|
86 |
+
}
|
87 |
+
?>
|
88 |
<tr>
|
89 |
+
<th scope="row" class="row-med"><?php _e('HTTP error code to return', 'ninjafirewall') ?></th>
|
|
|
90 |
<td>
|
91 |
+
<select name="nfw_options[ret_code]">
|
92 |
+
<option value="400"<?php selected( $nfw_options['ret_code'], 400 ) ?>><?php _e('400 Bad Request', 'ninjafirewall') ?></option>
|
93 |
+
<option value="403"<?php selected( $nfw_options['ret_code'], 403 ) ?>><?php _e('403 Forbidden (default)', 'ninjafirewall') ?></option>
|
94 |
+
<option value="404"<?php selected( $nfw_options['ret_code'], 404 ) ?>><?php _e('404 Not Found', 'ninjafirewall') ?></option>
|
95 |
+
<option value="406"<?php selected( $nfw_options['ret_code'], 406 ) ?>><?php _e('406 Not Acceptable', 'ninjafirewall') ?></option>
|
96 |
+
<option value="418"<?php selected( $nfw_options['ret_code'], 418 ) ?>><?php _e("418 I'm a teapot", 'ninjafirewall') ?></option>
|
97 |
+
<option value="500"<?php selected( $nfw_options['ret_code'], 500 ) ?>><?php _e('500 Internal Server Error', 'ninjafirewall') ?></option>
|
98 |
+
<option value="503"<?php selected( $nfw_options['ret_code'], 503 ) ?>><?php _e('503 Service Unavailable', 'ninjafirewall') ?></option>
|
99 |
+
</select>
|
100 |
</td>
|
101 |
</tr>
|
102 |
|
103 |
+
<?php
|
104 |
+
if ( empty( $nfw_options['anon_ip'] ) ) {
|
105 |
+
$nfw_options['anon_ip'] = 0;
|
106 |
+
} else {
|
107 |
+
$nfw_options['anon_ip'] = 1;
|
108 |
+
}
|
109 |
+
?>
|
110 |
<tr>
|
111 |
+
<th scope="row" class="row-med"><?php _e('IP anonymization', 'ninjafirewall') ?></th>
|
|
|
112 |
<td>
|
113 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[anon_ip]', __('Yes', 'ninjafirewall'), __('No', 'ninjafirewall'), 'small', $nfw_options['anon_ip'] ) ?>
|
114 |
+
<p class="description"><?php printf( __('Does not apply to private IP addresses and the <a href="%s">Login Protection</a>.', 'ninjafirewall'), '?page=nfsubloginprot' ) ?></p>
|
115 |
</td>
|
116 |
</tr>
|
117 |
|
118 |
+
<?php
|
119 |
+
if (! empty( $nfw_options['blocked_msg'] ) ) {
|
120 |
+
$msg = base64_decode( $nfw_options['blocked_msg'] );
|
121 |
+
} else {
|
122 |
+
$msg = NFW_DEFAULT_MSG;
|
123 |
+
}
|
124 |
+
|
125 |
+
$logo_uri = rawurlencode( '<img src="' . plugins_url() . '/ninjafirewall/images/ninjafirewall_75.png" width="75" height="75" />' );
|
126 |
+
?>
|
127 |
<tr>
|
128 |
+
<th scope="row" class="row-med"><?php _e('Blocked user message', 'ninjafirewall') ?></th>
|
|
|
129 |
<td>
|
130 |
+
<textarea id="blocked-msg" name="nfw_options[blocked_msg]" class="small-text code" cols="70" rows="14" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"><?php echo htmlspecialchars( $msg ) ?></textarea>
|
131 |
+
<p class="description"><?php _e('HTML code, including CSS and JS, is allowed.', 'ninjafirewall') ?></p>
|
132 |
+
<input type="hidden" id="default-msg" value="<?php echo htmlspecialchars( NFW_DEFAULT_MSG ) ?>" />
|
133 |
+
<p><input class="button-secondary" type="button" value="<?php _e('Default message', 'ninjafirewall') ?>" onclick="nfwjs_default_msg();" /></p>
|
|
|
|
|
|
|
|
|
|
|
134 |
</td>
|
135 |
</tr>
|
136 |
</table>
|
137 |
|
138 |
+
<br />
|
139 |
+
<br />
|
|
|
|
|
|
|
140 |
|
141 |
<h3><?php _e('Firewall configuration', 'ninjafirewall') ?></h3>
|
142 |
|
143 |
+
<table class="form-table nfw-table">
|
144 |
<tr>
|
145 |
+
<th scope="row" class="row-med"><?php _e('Export configuration', 'ninjafirewall') ?></th>
|
146 |
+
<td>
|
147 |
+
<input class="button-secondary" type="submit" name="nf_export" value="<?php _e('Download', 'ninjafirewall') ?>" />
|
148 |
+
<p class="description"><?php _e( 'File Check configuration will not be exported/imported.', 'ninjafirewall') ?></p>
|
149 |
+
</td>
|
150 |
</tr>
|
151 |
<tr>
|
152 |
+
<th scope="row" class="row-med"><?php _e('Import configuration', 'ninjafirewall') ?></th>
|
153 |
+
<td>
|
154 |
+
<input type="file" name="nf_imp" />
|
155 |
+
<p class="description"><?php
|
156 |
list ( $major_current ) = explode( '.', NFW_ENGINE_VERSION );
|
157 |
printf( __( 'Imported configuration must match plugin version %s.', 'ninjafirewall'), (int) $major_current .'.x' );
|
158 |
echo '<br />'. __('It will override all your current firewall options and rules.', 'ninjafirewall')
|
159 |
+
?></p>
|
160 |
+
</td>
|
161 |
</tr>
|
162 |
<tr>
|
163 |
+
<th scope="row" class="row-med"><?php _e('Configuration backup', 'ninjafirewall') ?></th>
|
|
|
164 |
<td><?php echo nf_sub_options_confbackup(); ?></td>
|
165 |
</tr>
|
166 |
</table>
|
171 |
</div>
|
172 |
|
173 |
<?php
|
174 |
+
|
175 |
return;
|
176 |
|
177 |
+
// ---------------------------------------------------------------------
|
178 |
|
179 |
function nf_sub_options_confbackup() {
|
180 |
|
185 |
|
186 |
if ( is_array( $glob ) && ! empty( $glob[0] ) ) {
|
187 |
sort( $glob );
|
188 |
+
$res .= '<select name="backup_file" onchange="nfwjs_select_backup(this.value)"><option selected value="">'.
|
189 |
__('Available backup files', 'ninjafirewall') .'</option>';
|
190 |
foreach( $glob as $file ) {
|
191 |
if ( preg_match( '`/(backup_(\d{10})_.+\.php)$`', $file, $match ) ) {
|
195 |
}
|
196 |
}
|
197 |
$res .= '</select>';
|
198 |
+
$res .= '<p class="description">'. sprintf( __( "To restore NinjaFirewall's configuration to an earlier date, select it in the list and click '%s'.", 'ninjafirewall'), __('Save Firewall Options', 'ninjafirewall') ) . '</p>';
|
199 |
|
200 |
} else {
|
201 |
// No backup files yet:
|
205 |
|
206 |
}
|
207 |
|
208 |
+
// ---------------------------------------------------------------------
|
209 |
|
210 |
function nf_sub_options_save() {
|
211 |
|
330 |
nfw_update_option( 'nfw_options', $nfw_options);
|
331 |
|
332 |
}
|
333 |
+
// ---------------------------------------------------------------------
|
334 |
|
335 |
function nf_sub_options_import( $file ) {
|
336 |
|
341 |
if (! $data) {
|
342 |
return sprintf($err_msg, 1);
|
343 |
}
|
344 |
+
@list ($nfw_options, $rules, $bf) = @explode("\n:-:\n", $data . "\n:-:\n");
|
345 |
|
346 |
// Detect and remove potential Unicode BOM:
|
347 |
+
if ( preg_match( '/^\xef\xbb\xbf/', $nfw_options ) ) {
|
348 |
+
$nfw_options = preg_replace( '/^\xef\xbb\xbf/', '', $nfw_options );
|
349 |
}
|
350 |
|
351 |
+
if (! $nfw_options || ! $rules) {
|
352 |
return sprintf($err_msg, 2);
|
353 |
}
|
354 |
|
355 |
+
$nfw_options = @json_decode( $nfw_options, true );
|
356 |
$nfw_rules = @json_decode( $rules, true );
|
357 |
if (! empty( $bf ) ) {
|
358 |
$bf_conf = json_decode( $bf, true );
|
362 |
return sprintf($err_msg, 3);
|
363 |
}
|
364 |
|
365 |
+
|
366 |
// Make sure the major version numbers match (3.x, 4.x etc):
|
367 |
+
//~ 2019-06-26: **temporary**: disabled while updating from version 3.x to 4.x
|
368 |
+
//~ list ( $major_current ) = explode( '.', NFW_ENGINE_VERSION );
|
369 |
list ( $major_import ) = explode( '.', $nfw_options['engine_version'] );
|
370 |
+
//~ if ( $major_current != $major_import ) {
|
371 |
+
//~ return __('The imported file is not compatible with that version of NinjaFirewall', 'ninjafirewall');
|
372 |
+
//~ }
|
373 |
+
//~ 2019-06-26: **temporary**: version 3.x to 4.x update
|
374 |
+
if ( $major_import < '4' ) {
|
375 |
+
if ( empty( $nfw_options['allow_local_ip'] ) ) {
|
376 |
+
$nfw_options['allow_local_ip'] = 1;
|
377 |
+
} else {
|
378 |
+
$nfw_options['allow_local_ip'] = 0;
|
379 |
+
}
|
380 |
}
|
381 |
|
382 |
// We cannot import WP+ config :
|
478 |
return;
|
479 |
}
|
480 |
|
481 |
+
// ---------------------------------------------------------------------
|
482 |
|
483 |
function nf_sub_options_alert( $what ) {
|
484 |
|
531 |
wp_mail( $recipient, $subject, $message );
|
532 |
}
|
533 |
|
534 |
+
// ---------------------------------------------------------------------
|
535 |
// EOF
|
lib/firewall_policies.php
CHANGED
@@ -14,19 +14,20 @@
|
|
14 |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
| GNU General Public License for more details. |
|
17 |
-
+---------------------------------------------------------------------+ i18n+ / sa
|
18 |
*/
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
21 |
|
22 |
-
// Block immediately if user is not allowed
|
23 |
nf_not_allowed( 'block', __LINE__ );
|
24 |
|
25 |
-
|
26 |
$yes = __('Yes', 'ninjafirewall');
|
27 |
$no = __('No', 'ninjafirewall');
|
28 |
-
|
29 |
-
$full_waf_msg = '<
|
|
|
|
|
30 |
if ( defined('NFW_WPWAF') ) {
|
31 |
$option_disabled = 1;
|
32 |
} else {
|
@@ -36,76 +37,30 @@ if ( defined('NFW_WPWAF') ) {
|
|
36 |
$nfw_options = nfw_get_option( 'nfw_options' );
|
37 |
$nfw_rules = nfw_get_option( 'nfw_rules' );
|
38 |
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
}
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
document.getElementById("sanitize-fn").style.color = "#444";
|
53 |
-
} else {
|
54 |
-
document.fwrules.san.disabled = true;
|
55 |
-
document.fwrules.subs.disabled = true;
|
56 |
-
document.getElementById("sanitize-fn").style.color = "#bbbbbb";
|
57 |
-
}
|
58 |
-
}
|
59 |
-
function csp_onoff(what, csp) {
|
60 |
-
if (what == 0) {
|
61 |
-
document.getElementById(csp).readOnly = true;
|
62 |
-
} else {
|
63 |
-
document.getElementById(csp).readOnly = false;
|
64 |
-
document.getElementById(csp).focus();
|
65 |
-
}
|
66 |
-
}
|
67 |
-
function ssl_warn() {';
|
68 |
-
if ( NFW_IS_HTTPS == true ) {
|
69 |
-
echo 'return true;';
|
70 |
} else {
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
return false;';
|
76 |
-
}
|
77 |
-
echo '
|
78 |
}
|
79 |
-
function sanitise_fn(cbox) {
|
80 |
-
if(cbox.checked) {
|
81 |
-
if (confirm("' . esc_js( __('Any character that is not a letter [a-zA-Z], a digit [0-9], a dot [.], a hyphen [-] or an underscore [_] will be removed from the filename and replaced with the substitution character. Continue?', 'ninjafirewall') ) . '")){
|
82 |
-
return true;
|
83 |
-
}
|
84 |
-
return false;
|
85 |
-
}
|
86 |
-
}
|
87 |
-
function nfw_switch_tabs(tab) {
|
88 |
-
if ( tab == 1 ) {
|
89 |
-
jQuery("#basic-options").show(); jQuery("#tab-1").addClass("nav-tab-active");
|
90 |
-
jQuery("#intermediate-options").hide(); jQuery("#tab-2").removeClass("nav-tab-active");
|
91 |
-
jQuery("#advanced-options").hide(); jQuery("#tab-3").removeClass("nav-tab-active");
|
92 |
-
|
93 |
-
} else if ( tab == 2 ) {
|
94 |
-
jQuery("#basic-options").hide(); jQuery("#tab-1").removeClass("nav-tab-active");
|
95 |
-
jQuery("#intermediate-options").show(); jQuery("#tab-2").addClass("nav-tab-active");
|
96 |
-
jQuery("#advanced-options").hide(); jQuery("#tab-3").removeClass("nav-tab-active");
|
97 |
-
|
98 |
-
} else if ( tab ==3 ) {
|
99 |
-
jQuery("#basic-options").hide(); jQuery("#tab-1").removeClass("nav-tab-active");
|
100 |
-
jQuery("#intermediate-options").hide(); jQuery("#tab-2").removeClass("nav-tab-active");
|
101 |
-
jQuery("#advanced-options").show(); jQuery("#tab-3").addClass("nav-tab-active");
|
102 |
-
}
|
103 |
-
}
|
104 |
-
</script>
|
105 |
|
|
|
106 |
<div class="wrap">
|
107 |
-
<h1><img style="vertical-align:top;width:33px;height:33px;" src="
|
108 |
-
|
109 |
|
110 |
if ( isset( $_POST['nfw_options']) ) {
|
111 |
if ( empty($_POST['nfwnonce']) || ! wp_verify_nonce($_POST['nfwnonce'], 'policies_save') ) {
|
@@ -127,9 +82,9 @@ if ( isset( $_POST['nfw_options']) ) {
|
|
127 |
?>
|
128 |
<br />
|
129 |
<h2 class="nav-tab-wrapper wp-clearfix" style="cursor:pointer">
|
130 |
-
<a id="tab-
|
131 |
-
<a id="tab-
|
132 |
-
<a id="tab-
|
133 |
</h2>
|
134 |
<br />
|
135 |
<?php
|
@@ -137,10 +92,10 @@ if ( isset( $_POST['nfw_options']) ) {
|
|
137 |
echo '<form method="post" name="fwrules">';
|
138 |
wp_nonce_field('policies_save', 'nfwnonce', 0);
|
139 |
|
140 |
-
//
|
141 |
// Basic options:
|
142 |
?>
|
143 |
-
<div id="basic-options"
|
144 |
<?php
|
145 |
if ( ( isset( $nfw_options['scan_protocol']) ) &&
|
146 |
( preg_match( '/^[123]$/', $nfw_options['scan_protocol']) ) ) {
|
@@ -151,18 +106,20 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
151 |
|
152 |
?>
|
153 |
<h3>HTTP / HTTPS</h3>
|
154 |
-
<table class="form-table">
|
155 |
<tr>
|
156 |
-
<th scope="row"><?php _e('Enable NinjaFirewall for', 'ninjafirewall') ?></th>
|
157 |
-
<td width="20"> </td>
|
158 |
<td>
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
</td>
|
163 |
</tr>
|
164 |
</table>
|
165 |
|
|
|
|
|
|
|
166 |
<?php
|
167 |
if ( empty( $nfw_options['sanitise_fn']) ) {
|
168 |
$sanitise_fn = 0;
|
@@ -181,43 +138,45 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
181 |
$substitute = htmlspecialchars( $nfw_options['substitute'] );
|
182 |
}
|
183 |
?>
|
184 |
-
<br />
|
185 |
<h3><?php _e('Uploads', 'ninjafirewall') ?></h3>
|
186 |
-
<table class="form-table">
|
187 |
<tr>
|
188 |
-
<th scope="row"><?php _e('File Uploads', 'ninjafirewall') ?></th>
|
189 |
-
<td width="20"> </td>
|
190 |
<td>
|
191 |
-
<select name="nfw_options[uploads]" onchange="
|
192 |
<option value="1"<?php selected( $uploads, 1 ) ?>><?php echo __('Allow uploads', 'ninjafirewall') .' '. __('(default)', 'ninjafirewall') ?></option>
|
193 |
<option value="0"<?php selected( $uploads, 0 ) ?>><?php _e('Disallow uploads', 'ninjafirewall') ?></option>
|
194 |
</select>
|
195 |
-
<
|
196 |
-
|
197 |
-
|
198 |
</td>
|
199 |
</tr>
|
200 |
</table>
|
201 |
|
|
|
202 |
<br />
|
203 |
|
204 |
<?php
|
205 |
-
if (
|
|
|
|
|
|
|
206 |
$wp_admin = 1;
|
207 |
} else {
|
208 |
$wp_admin = 0;
|
209 |
}
|
210 |
-
if (
|
211 |
$wp_inc = 1;
|
212 |
} else {
|
213 |
$wp_inc = 0;
|
214 |
}
|
215 |
-
if (
|
216 |
$wp_upl = 1;
|
217 |
} else {
|
218 |
$wp_upl = 0;
|
219 |
}
|
220 |
-
if (
|
221 |
$wp_cache = 1;
|
222 |
} else {
|
223 |
$wp_cache = 0;
|
@@ -312,16 +271,15 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
312 |
}
|
313 |
?>
|
314 |
<h3>WordPress</h3>
|
315 |
-
<table class="form-table">
|
316 |
<tr>
|
317 |
-
<th scope="row"><?php
|
318 |
-
|
|
|
319 |
if ( defined('NFW_WPWAF') ) {
|
320 |
-
echo
|
321 |
}
|
322 |
-
|
323 |
-
<td width="20"> </td>
|
324 |
-
<td>
|
325 |
<table class="form-table">
|
326 |
<tr style="border: solid 1px #DFDFDF;">
|
327 |
<td align="center" width="10"><input type="checkbox" name="nfw_options[wp_admin]" id="wp_01"<?php checked( $wp_admin, 1 ); disabled( $option_disabled, 1) ?>></td>
|
@@ -345,7 +303,7 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
345 |
<p><code>/wp-includes/theme-compat/*</code></p>
|
346 |
</label>
|
347 |
<br />
|
348 |
-
<
|
349 |
</td>
|
350 |
</tr>
|
351 |
<tr style="border: solid 1px #DFDFDF;">
|
@@ -360,36 +318,20 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
360 |
<td style="vertical-align:top"><label for="wp_04"><code>*/cache/*</code></label>
|
361 |
<br />
|
362 |
<br />
|
363 |
-
<
|
364 |
</td>
|
365 |
</tr>
|
366 |
</table>
|
367 |
<br />
|
368 |
</td>
|
369 |
</tr>
|
370 |
-
</table>
|
371 |
|
372 |
-
<?php
|
373 |
-
if ( is_dir( WP_PLUGIN_DIR . '/jetpack' ) ) {
|
374 |
-
$is_JetPack = '<p><img src="' . plugins_url() . '/ninjafirewall/images/glyphicons-warning.png"> <span class="description">' . sprintf( __('If you are using the %s plugin, blocking <code>system.multicall</code> may prevent it from working correctly.', 'ninjafirewall'), 'Jetpack') . '</span></p>';
|
375 |
-
} else {
|
376 |
-
$is_JetPack = '';
|
377 |
-
}
|
378 |
-
if ( is_dir( WP_PLUGIN_DIR . '/contact-form-7' ) ) {
|
379 |
-
$is_CF7 = '<p><img src="' . plugins_url() . '/ninjafirewall/images/glyphicons-warning.png"> <span class="description">' . sprintf( __('If you are using the %s plugin, blocking <code>system.multicall</code> may prevent it from working correctly.', 'ninjafirewall'), 'Contact Form 7') . '</span></p>';
|
380 |
-
} else {
|
381 |
-
$is_CF7 = '';
|
382 |
-
}
|
383 |
-
?>
|
384 |
-
|
385 |
-
<table class="form-table">
|
386 |
<tr>
|
387 |
-
<th scope="row"><?php _e('General', 'ninjafirewall') ?></th>
|
388 |
-
<td width="20"> </td>
|
389 |
<td>
|
390 |
-
<p><label><input type="checkbox" name="nfw_options[disallow_settings]" value="1"<?php checked( $disallow_settings, 1 ) ?>> <?php echo
|
391 |
<p><label><input type="checkbox" name="nfw_options[disallow_creation]" value="1"<?php checked( $disallow_creation, 1 ) ?>> <?php _e('Block user accounts creation', 'ninjafirewall') ?></label></p>
|
392 |
-
<
|
393 |
</td>
|
394 |
</tr>
|
395 |
|
@@ -401,16 +343,15 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
401 |
}
|
402 |
?>
|
403 |
<tr>
|
404 |
-
<th scope="row"><?php _e('WordPress AJAX', 'ninjafirewall') ?></th>
|
405 |
-
<td width="20"> </td>
|
406 |
<td>
|
407 |
<p><label><input type="checkbox" name="nfw_options[admin_ajax]" value="1"<?php checked( $admin_ajax, 1 ) ?>> <?php _e('Protect <code>admin-ajax.php</code> against suspicious bots', 'ninjafirewall') ?></label></p>
|
|
|
408 |
</td>
|
409 |
</tr>
|
410 |
|
411 |
<tr>
|
412 |
-
<th scope="row"><?php _e('Protect against username enumeration', 'ninjafirewall') ?></th>
|
413 |
-
<td width="20"> </td>
|
414 |
<td>
|
415 |
<p><label><input type="checkbox" name="nfw_options[enum_archives]" value="1"<?php checked( $enum_archives, 1 ) ?>> <?php _e('Through the author archives', 'ninjafirewall') ?></label></p>
|
416 |
<p><label><input type="checkbox" name="nfw_options[enum_login]" value="1"<?php checked( $enum_login, 1 ) ?>> <?php _e('Through the login page', 'ninjafirewall') ?></label></p>
|
@@ -418,95 +359,55 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
418 |
</td>
|
419 |
</tr>
|
420 |
|
421 |
-
<?php
|
422 |
-
global $wp_version;
|
423 |
-
if ( version_compare( $wp_version, '4.7', '<' ) ) {
|
424 |
-
$restapi_error = '1';
|
425 |
-
$restapi_msg = '<p><img src="' . plugins_url() . '/ninjafirewall/images/glyphicons-warning.png"> <span class="description">' . __('This feature is only available when running WordPress 4.7 or above.', 'ninjafirewall') . '</span></p>';
|
426 |
-
} else {
|
427 |
-
$restapi_msg = '';
|
428 |
-
$restapi_error = 0;
|
429 |
-
}
|
430 |
-
?>
|
431 |
<tr>
|
432 |
-
<th scope="row"><?php _e('WordPress REST API', 'ninjafirewall') ?></th>
|
433 |
-
<td width="20"> </td>
|
434 |
<td>
|
435 |
-
<p><label><input type="checkbox" name="nfw_options[no_restapi]" value="1"<?php checked( $no_restapi, 1 )
|
436 |
-
<?php echo $restapi_msg; ?>
|
437 |
</td>
|
438 |
</tr>
|
439 |
-
|
440 |
-
<th scope="row"><?php _e('WordPress XML-RPC API', 'ninjafirewall') ?></th>
|
441 |
-
<td width="20"> </td>
|
442 |
<td>
|
443 |
<p><label><input type="checkbox" name="nfw_options[no_xmlrpc]" value="1"<?php checked( $no_xmlrpc, 1 ) ?>> <?php _e('Block any access to the API', 'ninjafirewall') ?></label> *</p>
|
444 |
-
|
445 |
<p><label><input type="checkbox" name="nfw_options[no_xmlrpc_multi]" value="1"<?php checked( $no_xmlrpc_multi, 1 ) ?>> <?php _e('Block <code>system.multicall</code> method', 'ninjafirewall') ?></label> *</p>
|
446 |
-
|
447 |
-
<
|
448 |
-
|
449 |
-
<?php echo $is_JetPack; echo $is_CF7; ?>
|
450 |
</td>
|
451 |
</tr>
|
452 |
-
</table>
|
453 |
-
|
454 |
-
<span class="description">* <?php _e('Disabling access to the REST or XML-RPC API may break some functionality on your blog, its themes or plugins.', 'ninjafirewall') ?></span>
|
455 |
|
456 |
-
<table class="form-table">
|
457 |
<tr valign="top">
|
458 |
-
<th scope="row" style="vertical-align:top"><?php _e('Block <code>POST</code> requests in the themes folder', 'ninjafirewall') ?> <code>/<?php echo basename(WP_CONTENT_DIR); ?>/themes</code></th>
|
459 |
-
<td
|
460 |
-
|
461 |
-
<label><input type="radio" name="nfw_options[no_post_themes]" value="1"<?php checked( $no_post_themes, 1 ); disabled( $option_disabled, 1) ?>> <?php _e('Yes', 'ninjafirewall') ?></label>
|
462 |
-
</td>
|
463 |
-
<td style="vertical-align:top">
|
464 |
-
<label><input type="radio" name="nfw_options[no_post_themes]" value="0"<?php checked( $no_post_themes, 0 ); disabled( $option_disabled, 1) ?>> <?php _e('No (default)', 'ninjafirewall') ?></label>
|
465 |
-
<?php
|
466 |
if ( defined('NFW_WPWAF') ) {
|
467 |
-
echo
|
468 |
}
|
469 |
-
|
470 |
</td>
|
471 |
</tr>
|
472 |
<tr valign="top">
|
473 |
-
<th scope="row"><a name="builtinconstants"></a><?php _e('Force SSL for admin and logins', 'ninjafirewall') ?> <code><a href="http://codex.wordpress.org/Editing_wp-config.php#Require_SSL_for_Admin_and_Logins" target="_blank">FORCE_SSL_ADMIN</a></code></th>
|
474 |
-
<td width="20"> </td>
|
475 |
-
<td width="120">
|
476 |
-
<label><input type="radio" name="nfw_options[force_ssl]" value="1"<?php checked( $force_ssl, 1 ) ?> onclick="return ssl_warn();" <?php disabled( $force_ssl_already_enabled, 1 ) ?>> <?php _e('Yes', 'ninjafirewall') ?></label>
|
477 |
-
</td>
|
478 |
<td>
|
479 |
-
|
480 |
</td>
|
481 |
</tr>
|
482 |
<tr valign="top">
|
483 |
-
<th scope="row"><?php _e('Disable the plugin and theme editor', 'ninjafirewall') ?> <code><a href="http://codex.wordpress.org/Editing_wp-config.php#Disable_the_Plugin_and_Theme_Editor" target="_blank">DISALLOW_FILE_EDIT</a></code></th>
|
484 |
-
<td width="20"> </td>
|
485 |
-
<td width="120">
|
486 |
-
<label><input type="radio" name="nfw_options[disallow_edit]" value="1"<?php checked( $disallow_edit, 1 ) ?> <?php disabled( $disallow_edit_already_enabled, 1 ) ?>> <?php _e('Yes', 'ninjafirewall') ?></label>
|
487 |
-
</td>
|
488 |
<td>
|
489 |
-
|
490 |
</td>
|
491 |
</tr>
|
492 |
<tr valign="top">
|
493 |
-
<th scope="row"><?php _e('Disable plugin and theme update/installation', 'ninjafirewall') ?> <code><a href="http://codex.wordpress.org/Editing_wp-config.php#Disable_Plugin_and_Theme_Update_and_Installation" target="_blank">DISALLOW_FILE_MODS</a></code></th>
|
494 |
-
<td width="20"> </td>
|
495 |
-
<td width="120">
|
496 |
-
<label><input type="radio" name="nfw_options[disallow_mods]" value="1"<?php checked( $disallow_mods, 1 ) ?> <?php disabled( $disallow_mods_already_enabled, 1 ) ?>> <?php _e('Yes', 'ninjafirewall') ?></label>
|
497 |
-
</td>
|
498 |
<td>
|
499 |
-
|
500 |
</td>
|
501 |
</tr>
|
502 |
<tr valign="top">
|
503 |
-
<th scope="row"><?php _e('Disable the fatal error handler', 'ninjafirewall') ?> <code><a href="https://make.wordpress.org/core/2019/01/14/php-site-health-mechanisms-in-5-1/" target="_blank">
|
504 |
-
<td width="20"> </td>
|
505 |
-
<td width="120">
|
506 |
-
<label><input type="radio" name="nfw_options[disable_error_handler]" value="1"<?php checked( $disable_error_handler, 1 ) ?> <?php disabled( $disable_error_handler_already_enabled, 1 ) ?>> <?php _e('Yes', 'ninjafirewall') ?></label>
|
507 |
-
</td>
|
508 |
<td>
|
509 |
-
|
510 |
</td>
|
511 |
</tr>
|
512 |
|
@@ -524,15 +425,14 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
524 |
$wl_admin = 1;
|
525 |
}
|
526 |
?>
|
527 |
-
<table class="form-table">
|
528 |
<tr style="background-color:#F9F9F9;border: solid 1px #DFDFDF;">
|
529 |
-
<th scope="row"><?php _e('Users Whitelist', 'ninjafirewall') ?></th>
|
530 |
-
<td width="20"> </td>
|
531 |
<td>
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
</td>
|
537 |
</tr>
|
538 |
</table>
|
@@ -541,10 +441,10 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
541 |
|
542 |
|
543 |
<?php
|
544 |
-
//
|
545 |
// Intermediate options:
|
546 |
?>
|
547 |
-
<div id="intermediate-options"
|
548 |
<?php
|
549 |
if ( empty( $nfw_options['get_scan']) ) {
|
550 |
$get_scan = 0;
|
@@ -558,25 +458,17 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
558 |
}
|
559 |
?>
|
560 |
<h3><?php _e('HTTP GET variable', 'ninjafirewall') ?></h3>
|
561 |
-
<table class="form-table">
|
562 |
<tr>
|
563 |
-
<th scope="row"><?php _e('Scan <code>GET</code> variable', 'ninjafirewall') ?></th>
|
564 |
-
<td width="20"> </td>
|
565 |
-
<td width="120">
|
566 |
-
<label><input type="radio" name="nfw_options[get_scan]" value="1"<?php checked( $get_scan, 1 ) ?>> <?php _e('Yes (default)', 'ninjafirewall') ?></label>
|
567 |
-
</td>
|
568 |
<td>
|
569 |
-
|
570 |
</td>
|
571 |
</tr>
|
572 |
<tr>
|
573 |
-
<th scope="row"><?php _e('Sanitise <code>GET</code> variable', 'ninjafirewall') ?></th>
|
574 |
-
<td width="20"> </td>
|
575 |
-
<td width="120">
|
576 |
-
<label><input type="radio" name="nfw_options[get_sanitise]" value="1"<?php checked( $get_sanitise, 1 ) ?>> <?php _e('Yes', 'ninjafirewall') ?></label>
|
577 |
-
</td>
|
578 |
<td>
|
579 |
-
|
580 |
</td>
|
581 |
</tr>
|
582 |
</table>
|
@@ -601,35 +493,24 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
601 |
}
|
602 |
?>
|
603 |
<h3><?php _e('HTTP POST variable', 'ninjafirewall') ?></h3>
|
604 |
-
<table class="form-table">
|
605 |
<tr valign="top">
|
606 |
-
<th scope="row"><?php _e('Scan <code>POST</code> variable', 'ninjafirewall') ?></th>
|
607 |
-
<td width="20"> </td>
|
608 |
-
<td width="120">
|
609 |
-
<label><input type="radio" name="nfw_options[post_scan]" value="1"<?php checked( $post_scan, 1 ) ?>> <?php _e('Yes (default)', 'ninjafirewall') ?></label>
|
610 |
-
</td>
|
611 |
<td>
|
612 |
-
|
613 |
</td>
|
614 |
</tr>
|
615 |
<tr valign="top">
|
616 |
-
<th scope="row"><?php _e('Sanitise <code>POST</code> variable', 'ninjafirewall') ?></th>
|
617 |
-
<td width="20"> </td>
|
618 |
-
<td width="120" style="vertical-align:top;">
|
619 |
-
<label><input type="radio" name="nfw_options[post_sanitise]" value="1"<?php checked( $post_sanitise, 1 ) ?>> <?php _e('Yes', 'ninjafirewall') ?></label>
|
620 |
-
</td>
|
621 |
<td>
|
622 |
-
|
|
|
623 |
</td>
|
624 |
</tr>
|
625 |
<tr valign="top">
|
626 |
-
<th scope="row"><?php _e('Decode Base64-encoded <code>POST</code> variable', 'ninjafirewall') ?></th>
|
627 |
-
<td width="20"> </td>
|
628 |
-
<td width="120">
|
629 |
-
<label><input type="radio" name="nfw_options[post_b64]" value="1"<?php checked( $post_b64, 1 ) ?>> <?php _e('Yes (default)', 'ninjafirewall') ?></label>
|
630 |
-
</td>
|
631 |
<td>
|
632 |
-
|
633 |
</td>
|
634 |
</tr>
|
635 |
</table>
|
@@ -643,15 +524,12 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
643 |
}
|
644 |
?>
|
645 |
<h3><?php _e('HTTP REQUEST variable', 'ninjafirewall') ?></h3>
|
646 |
-
<table class="form-table">
|
647 |
<tr>
|
648 |
-
<th scope="row"><?php _e('Sanitise <code>REQUEST</code> variable', 'ninjafirewall') ?></th>
|
649 |
-
<td width="20"> </td>
|
650 |
-
<td width="120" style="vertical-align:top;">
|
651 |
-
<label><input type="radio" name="nfw_options[request_sanitise]" value="1"<?php checked( $request_sanitise, 1 ) ?>> <?php _e('Yes', 'ninjafirewall') ?></label>
|
652 |
-
</td>
|
653 |
<td>
|
654 |
-
|
|
|
655 |
</td>
|
656 |
</tr>
|
657 |
</table>
|
@@ -671,25 +549,17 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
671 |
}
|
672 |
?>
|
673 |
<h3><?php _e('Cookies', 'ninjafirewall') ?></h3>
|
674 |
-
<table class="form-table">
|
675 |
<tr>
|
676 |
-
<th scope="row"><?php _e('Scan cookies', 'ninjafirewall') ?></th>
|
677 |
-
<td width="20"> </td>
|
678 |
-
<td width="120">
|
679 |
-
<label><input type="radio" name="nfw_options[cookies_scan]" value="1"<?php checked( $cookies_scan, 1 ) ?>> <?php _e('Yes (default)', 'ninjafirewall') ?></label>
|
680 |
-
</td>
|
681 |
<td>
|
682 |
-
|
683 |
</td>
|
684 |
</tr>
|
685 |
<tr>
|
686 |
-
<th scope="row"><?php _e('Sanitise cookies', 'ninjafirewall') ?></th>
|
687 |
-
<td width="20"> </td>
|
688 |
-
<td width="120">
|
689 |
-
<label><input type="radio" name="nfw_options[cookies_sanitise]" value="1"<?php checked( $cookies_sanitise, 1 ) ?>> <?php _e('Yes', 'ninjafirewall') ?></label>
|
690 |
-
</td>
|
691 |
<td>
|
692 |
-
|
693 |
</td>
|
694 |
</tr>
|
695 |
</table>
|
@@ -707,8 +577,6 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
707 |
} else {
|
708 |
$ua_sanitise = 1;
|
709 |
}
|
710 |
-
|
711 |
-
|
712 |
if ( empty( $nfw_rules[NFW_SCAN_BOTS]['ena']) ) {
|
713 |
$block_bots = 0;
|
714 |
} else {
|
@@ -716,35 +584,23 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
716 |
}
|
717 |
?>
|
718 |
<h3><?php _e('HTTP_USER_AGENT server variable', 'ninjafirewall') ?></h3>
|
719 |
-
<table class="form-table">
|
720 |
<tr>
|
721 |
-
<th scope="row"><?php _e('Scan <code>HTTP_USER_AGENT</code>', 'ninjafirewall') ?></th>
|
722 |
-
<td width="20"> </td>
|
723 |
-
<td width="120">
|
724 |
-
<label><input type="radio" name="nfw_options[ua_scan]" value="1"<?php checked( $ua_scan, 1 ) ?>> <?php _e('Yes (default)', 'ninjafirewall') ?></label>
|
725 |
-
</td>
|
726 |
<td>
|
727 |
-
|
728 |
</td>
|
729 |
</tr>
|
730 |
<tr>
|
731 |
-
<th scope="row"><?php _e('Sanitise <code>HTTP_USER_AGENT</code>', 'ninjafirewall') ?></th>
|
732 |
-
<td width="20"> </td>
|
733 |
-
<td width="120">
|
734 |
-
<label><input type="radio" name="nfw_options[ua_sanitise]" value="1"<?php checked( $ua_sanitise, 1 ) ?>> <?php _e('Yes (default)', 'ninjafirewall') ?></label>
|
735 |
-
</td>
|
736 |
<td>
|
737 |
-
|
738 |
</td>
|
739 |
</tr>
|
740 |
<tr>
|
741 |
-
<th scope="row"><?php _e('Block suspicious bots/scanners', 'ninjafirewall') ?></th>
|
742 |
-
<td width="20"> </td>
|
743 |
-
<td width="120">
|
744 |
-
<label><input type="radio" name="nfw_rules[block_bots]" value="1"<?php checked( $block_bots, 1 ) ?>> <?php _e('Yes (default)', 'ninjafirewall') ?></label>
|
745 |
-
</td>
|
746 |
<td>
|
747 |
-
|
748 |
</td>
|
749 |
</tr>
|
750 |
</table>
|
@@ -769,35 +625,24 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
769 |
}
|
770 |
?>
|
771 |
<h3><?php _e('HTTP_REFERER server variable', 'ninjafirewall') ?></h3>
|
772 |
-
<table class="form-table">
|
773 |
<tr>
|
774 |
-
<th scope="row"><?php _e('Scan <code>HTTP_REFERER</code>', 'ninjafirewall') ?></th>
|
775 |
-
<td width="20"> </td>
|
776 |
-
<td width="120">
|
777 |
-
<label><input type="radio" name="nfw_options[referer_scan]" value="1"<?php checked( $referer_scan, 1 ) ?>> <?php _e('Yes', 'ninjafirewall') ?></label>
|
778 |
-
</td>
|
779 |
<td>
|
780 |
-
|
781 |
</td>
|
782 |
</tr>
|
783 |
<tr>
|
784 |
-
<th scope="row"><?php _e('Sanitise <code>HTTP_REFERER</code>', 'ninjafirewall') ?></th>
|
785 |
-
<td width="20"> </td>
|
786 |
-
<td width="120">
|
787 |
-
<label><input type="radio" name="nfw_options[referer_sanitise]" value="1"<?php checked( $referer_sanitise, 1 ) ?>> <?php _e('Yes (default)', 'ninjafirewall') ?></label>
|
788 |
-
</td>
|
789 |
<td>
|
790 |
-
|
791 |
</td>
|
792 |
</tr>
|
793 |
<tr valign="top">
|
794 |
-
<th scope="row"><?php _e('Block <code>POST</code> requests that do not have an <code>HTTP_REFERER</code> header', 'ninjafirewall') ?></th>
|
795 |
-
<td
|
796 |
-
|
797 |
-
<
|
798 |
-
</td>
|
799 |
-
<td style="vertical-align:top;">
|
800 |
-
<label><input type="radio" name="nfw_options[referer_post]" value="0"<?php checked( $referer_post, 0 ) ?>> <?php _e('No (default)', 'ninjafirewall') ?></label><br /><span class="description"> <?php _e('Keep this option disabled if you are using scripts like Paypal IPN, WordPress WP-Cron etc', 'ninjafirewall') ?>.</span>
|
801 |
</td>
|
802 |
</tr>
|
803 |
</table>
|
@@ -822,35 +667,23 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
822 |
}
|
823 |
?>
|
824 |
<h3>IP</h3>
|
825 |
-
<table class="form-table" border=0>
|
826 |
<tr>
|
827 |
-
<th scope="row"><?php _e('Block localhost IP in <code>GET/POST</code> request', 'ninjafirewall') ?></th>
|
828 |
-
<td
|
829 |
-
|
830 |
-
<label><input type="radio" name="nfw_rules[no_localhost_ip]" value="1"<?php checked( $no_localhost_ip, 1 ) ?>> <?php _e('Yes (default)', 'ninjafirewall') ?></label>
|
831 |
-
</td>
|
832 |
-
<td style="vertical-align:top">
|
833 |
-
<label><input type="radio" name="nfw_rules[no_localhost_ip]" value="0"<?php checked( $no_localhost_ip, 0 ) ?>> <?php _e('No', 'ninjafirewall') ?></label>
|
834 |
</td>
|
835 |
</tr>
|
836 |
<tr>
|
837 |
-
<th scope="row"><?php _e('Block HTTP requests with an IP in the <code>HTTP_HOST</code> header', 'ninjafirewall') ?></th>
|
838 |
-
<td
|
839 |
-
|
840 |
-
<label><input type="radio" name="nfw_options[no_host_ip]" value="1"<?php checked( $no_host_ip, 1 ) ?>> <?php _e('Yes', 'ninjafirewall') ?></label>
|
841 |
-
</td>
|
842 |
-
<td style="vertical-align:top">
|
843 |
-
<label><input type="radio" name="nfw_options[no_host_ip]" value="0"<?php checked( $no_host_ip, 0 ) ?>> <?php _e('No (default)', 'ninjafirewall') ?></label>
|
844 |
</td>
|
845 |
</tr>
|
846 |
<tr>
|
847 |
-
<th scope="row"><?php _e('Scan traffic coming from localhost and private IP address spaces', 'ninjafirewall') ?></th>
|
848 |
-
<td
|
849 |
-
|
850 |
-
<label><input type="radio" name="nfw_options[allow_local_ip]" value="0"<?php checked( $allow_local_ip, 0 ) ?>> <?php _e('Yes (default)', 'ninjafirewall') ?></label>
|
851 |
-
</td>
|
852 |
-
<td style="vertical-align:top">
|
853 |
-
<label><input type="radio" name="nfw_options[allow_local_ip]" value="1"<?php checked( $allow_local_ip, 1 ) ?>> <?php _e('No', 'ninjafirewall') ?></label>
|
854 |
</td>
|
855 |
</tr>
|
856 |
</table>
|
@@ -858,96 +691,107 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
858 |
</div>
|
859 |
|
860 |
<?php
|
861 |
-
//
|
862 |
// Advanced options:
|
863 |
?>
|
864 |
-
<div id="advanced-options"
|
865 |
-
|
866 |
<?php
|
867 |
-
$err_msg = $err =
|
868 |
-
|
869 |
-
|
870 |
-
|
871 |
-
|
|
|
|
|
872 |
$err = 1;
|
873 |
-
|
874 |
-
|
|
|
875 |
$err = 1;
|
876 |
-
|
877 |
-
|
|
|
878 |
$err = 1;
|
879 |
}
|
880 |
-
if ( empty($nfw_options['response_headers']) || !
|
|
|
|
|
881 |
$nfw_options['response_headers'] = '000000000';
|
882 |
}
|
883 |
?>
|
|
|
884 |
<h3><?php _e('HTTP response headers', 'ninjafirewall') ?></h3>
|
885 |
-
|
|
|
|
|
|
|
|
|
|
|
886 |
<tr>
|
887 |
-
<th scope="row"><?php printf( __('Set %s to protect against MIME type confusion attacks', 'ninjafirewall'), '<a href="https://nintechnet.com/ninjafirewall
|
888 |
-
<td width="20"> </td>
|
889 |
-
<td width="120">
|
890 |
-
<label><input type="radio" name="nfw_options[x_content_type_options]" value="1"<?php checked( $nfw_options['response_headers'][1], 1 ); disabled($err, 1); ?>><?php echo $yes; ?></label>
|
891 |
-
</td>
|
892 |
<td>
|
893 |
-
|
894 |
</td>
|
895 |
</tr>
|
896 |
<tr>
|
897 |
-
<th scope="row"><?php printf( __('Set %s to protect against clickjacking attempts', 'ninjafirewall'), '<a href="https://nintechnet.com/ninjafirewall
|
898 |
-
<td
|
899 |
-
|
900 |
-
|
901 |
-
|
|
|
|
|
|
|
902 |
</td>
|
903 |
-
<td style="vertical-align:top;"><p><label><input type="radio" name="nfw_options[x_frame_options]" value="0"<?php checked( $nfw_options['response_headers'][2], 0 ); disabled($err, 1); ?>><?php echo $no . $default; ?></label><?php echo $err_msg ?></p></td>
|
904 |
</tr>
|
905 |
-
<tr>
|
906 |
-
<th scope="row"><?php printf( __("Set %s (IE/Edge, Chrome, Opera and Safari browsers)", 'ninjafirewall'), '<a href="https://nintechnet.com/ninjafirewall/wp-edition/doc/#responseheaders" target="_blank">X-XSS-Protection</a>') ?></th>
|
907 |
-
<td width="20"></td>
|
908 |
|
909 |
-
|
910 |
-
|
911 |
-
<p><label><input type="radio" name="nfw_options[x_xss_protection]" value="2"<?php checked( $nfw_options['response_headers'][3], 2 ); disabled($err, 1); ?> /><?php printf( __("Set to %s", "ninjafirewall"), '<code>1</code>' ) ?></label></p>
|
912 |
-
</td>
|
913 |
<td>
|
914 |
-
<
|
915 |
-
|
|
|
|
|
|
|
|
|
916 |
</td>
|
917 |
</tr>
|
918 |
<tr>
|
919 |
-
<th scope="row"><?php printf( __('Force %s flag on all cookies to mitigate XSS attacks', 'ninjafirewall'), '<a href="https://nintechnet.com/ninjafirewall
|
920 |
-
<td
|
921 |
-
|
922 |
-
<
|
923 |
-
</td>
|
924 |
-
<td style="vertical-align:top;">
|
925 |
-
<label><input type="radio" name="nfw_options[cookies_httponly]" value="0"<?php checked( $nfw_options['response_headers'][0], 0 ); disabled($err, 1); ?>> <?php echo $no . $default; ?></label><br /><span class="description"><?php _e('If your PHP scripts use cookies that need to be accessed from JavaScript, you should disable this option.', 'ninjafirewall') ?></span><?php echo $err_msg ?>
|
926 |
</td>
|
927 |
</tr>
|
928 |
<?php
|
|
|
|
|
|
|
929 |
if ( NFW_IS_HTTPS == false && ! $err ) {
|
930 |
$hsts_err = 1;
|
931 |
-
$hsts_msg =
|
932 |
} else {
|
933 |
$hsts_msg = '';
|
934 |
$hsts_err = 0;
|
935 |
}
|
|
|
936 |
?>
|
937 |
<tr>
|
938 |
-
<th scope="row"><?php printf( __('Set %s (HSTS) to enforce secure connections to the server', 'ninjafirewall'), '<a href="https://nintechnet.com/ninjafirewall
|
939 |
-
<td
|
940 |
-
|
941 |
-
|
942 |
-
|
943 |
-
|
944 |
-
|
945 |
-
|
946 |
-
|
947 |
-
|
948 |
-
|
949 |
-
|
950 |
-
|
|
|
|
|
951 |
</td>
|
952 |
</tr>
|
953 |
|
@@ -956,7 +800,7 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
956 |
$nfw_options['csp_frontend_data'] = '';
|
957 |
}
|
958 |
if (! isset( $nfw_options['csp_backend_data'] ) ) {
|
959 |
-
$nfw_options['csp_backend_data'] =
|
960 |
}
|
961 |
if (! isset( $nfw_options['response_headers'][6] ) ) {
|
962 |
$nfw_options['response_headers'][6] = 0;
|
@@ -966,29 +810,21 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
966 |
}
|
967 |
?>
|
968 |
<tr>
|
969 |
-
<th scope="row"><?php printf( __('Set %s for the website frontend', 'ninjafirewall'), '<a href="https://nintechnet.com/ninjafirewall
|
970 |
-
<td
|
971 |
-
|
972 |
-
<
|
973 |
-
<
|
974 |
-
|
975 |
-
<td style="vertical-align:top;">
|
976 |
-
<textarea autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" name="nfw_options[csp_frontend_data]" id="csp_frontend" class="large-text code" rows="4"<?php __checked_selected_helper($err, 1, true, 'readonly'); __checked_selected_helper($nfw_options['response_headers'][6], 0, true, 'readonly') ?>><?php echo htmlspecialchars( $nfw_options['csp_frontend_data'] ) ?></textarea>
|
977 |
-
<span class="description"><?php _e('This CSP header will apply to the website frontend only.', 'ninjafirewall') ?></span>
|
978 |
-
<?php echo $err_msg ?>
|
979 |
</td>
|
980 |
</tr>
|
981 |
-
|
982 |
<tr>
|
983 |
-
<th scope="row"><?php printf( __('Set %s for the WordPress admin dashboard', 'ninjafirewall'), '<a href="https://nintechnet.com/ninjafirewall
|
984 |
-
<td
|
985 |
-
|
986 |
-
<
|
987 |
-
<
|
988 |
-
|
989 |
-
<td style="vertical-align:top;">
|
990 |
-
<textarea autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" name="nfw_options[csp_backend_data]" id="csp_backend" class="large-text code" rows="4"<?php __checked_selected_helper($err, 1, true, 'readonly'); __checked_selected_helper($nfw_options['response_headers'][7], 0, true, 'readonly') ?>><?php echo htmlspecialchars( $nfw_options['csp_backend_data'] ) ?></textarea>
|
991 |
-
<span class="description"><?php _e('This CSP header will apply to the WordPress admin dashboard only.', 'ninjafirewall') ?></span>
|
992 |
<?php echo $err_msg ?>
|
993 |
</td>
|
994 |
</tr>
|
@@ -1004,14 +840,10 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
1004 |
}
|
1005 |
?>
|
1006 |
<tr>
|
1007 |
-
<th scope="row"><?php printf( __("Set %s (Chrome, Opera and Firefox browsers)", 'ninjafirewall'), '<a href="https://nintechnet.com/ninjafirewall
|
1008 |
-
<td
|
1009 |
-
|
1010 |
-
|
1011 |
-
<p><label><input onclick="document.getElementById('rp_select').disabled=false" type="radio" name="nfw_options[referrer_policy_enabled]" value="1"<?php checked($nfw_options['referrer_policy_enabled'], 1) ?> /><?php _e('Yes', 'ninjafirewall') ?></label></p>
|
1012 |
-
<p><label><input onclick="document.getElementById('rp_select').disabled=true" type="radio" name="nfw_options[referrer_policy_enabled]" value="0"<?php checked($nfw_options['referrer_policy_enabled'], 0) ?> /><?php _e('No (default)', 'ninjafirewall') ?></label></p>
|
1013 |
-
</td>
|
1014 |
-
<td style="vertical-align:top;">
|
1015 |
<select id="rp_select" name="nfw_options[referrer_policy]"<?php disabled($nfw_options['referrer_policy_enabled'], 0) ?>>
|
1016 |
<option value="1"<?php selected($nfw_options['response_headers'][8], 1) ?>>no-referrer</option>
|
1017 |
<option value="2"<?php selected($nfw_options['response_headers'][8], 2) ?>>no-referrer-when-downgrade</option>
|
@@ -1056,15 +888,11 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
1056 |
}
|
1057 |
?>
|
1058 |
<h3>PHP</h3>
|
1059 |
-
<table class="form-table">
|
1060 |
<tr>
|
1061 |
-
<th scope="row"><?php _e('Block PHP built-in wrappers in <code>GET</code>, <code>POST</code>, <code>HTTP_USER_AGENT</code>, <code>HTTP_REFERER</code> and cookies', 'ninjafirewall') ?></th>
|
1062 |
-
<td
|
1063 |
-
|
1064 |
-
<label><input type="radio" name="nfw_rules[php_wrappers]" value="1"<?php checked( $php_wrappers, 1 ) ?>> <?php _e('Yes (default)', 'ninjafirewall') ?></label>
|
1065 |
-
</td>
|
1066 |
-
<td style="vertical-align:top">
|
1067 |
-
<label><input type="radio" name="nfw_rules[php_wrappers]" value="0"<?php checked( $php_wrappers, 0 ) ?>> <?php _e('No', 'ninjafirewall') ?></label>
|
1068 |
</td>
|
1069 |
</tr>
|
1070 |
|
@@ -1101,56 +929,37 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
1101 |
}
|
1102 |
?>
|
1103 |
<tr>
|
1104 |
-
<th scope="row"><?php _e('Block serialized PHP objects in the following global variables', 'ninjafirewall') ?></th>
|
1105 |
-
<td
|
1106 |
-
|
1107 |
-
<p><label><input type="checkbox" name="nfw_rules[
|
1108 |
-
<p><label><input type="checkbox" name="nfw_rules[php_objects_post]" value="1"<?php echo $NFW_OBJECTS_POST ?>><code>POST</code><?php echo $default ?></label><p>
|
1109 |
<p><label><input type="checkbox" name="nfw_rules[php_objects_cookie]" value="1"<?php echo $NFW_OBJECTS_COOKIE ?>><code>COOKIE</code></label><p>
|
1110 |
-
|
1111 |
-
|
1112 |
-
<p><label><input type="checkbox" name="nfw_rules[php_objects_http_user_agent]" value="1"<?php echo $NFW_OBJECTS_HTTP_USER_AGENT ?>><code>HTTP_USER_AGENT</code><?php echo $default ?></label><p>
|
1113 |
-
<p><label><input type="checkbox" name="nfw_rules[php_objects_http_referer]" value="1"<?php echo $NFW_OBJECTS_HTTP_REFERER ?>><code>HTTP_REFERER</code><?php echo $default ?></label><p>
|
1114 |
</td>
|
1115 |
</tr>
|
1116 |
<tr>
|
1117 |
-
<th scope="row"><?php _e('Hide PHP notice and error messages', 'ninjafirewall') ?></th>
|
1118 |
-
<td width="20"> </td>
|
1119 |
-
<td width="120">
|
1120 |
-
<label><input type="radio" name="nfw_options[php_errors]" value="1"<?php checked( $php_errors, 1 ) ?>> <?php _e('Yes (default)', 'ninjafirewall') ?></label>
|
1121 |
-
</td>
|
1122 |
<td>
|
1123 |
-
|
1124 |
</td>
|
1125 |
</tr>
|
1126 |
<tr>
|
1127 |
-
<th scope="row"><?php _e('Sanitise <code>PHP_SELF</code>', 'ninjafirewall') ?></th>
|
1128 |
-
<td width="20"> </td>
|
1129 |
-
<td width="120">
|
1130 |
-
<label><input type="radio" name="nfw_options[php_self]" value="1"<?php checked( $php_self, 1 ) ?>> <?php _e('Yes (default)', 'ninjafirewall') ?></label>
|
1131 |
-
</td>
|
1132 |
<td>
|
1133 |
-
|
1134 |
</td>
|
1135 |
</tr>
|
1136 |
<tr>
|
1137 |
-
<th scope="row"><?php _e('Sanitise <code>PATH_TRANSLATED</code>', 'ninjafirewall') ?></th>
|
1138 |
-
<td width="20"> </td>
|
1139 |
-
<td width="120">
|
1140 |
-
<label><input type="radio" name="nfw_options[php_path_t]" value="1"<?php checked( $php_path_t, 1 ) ?>> <?php _e('Yes (default)', 'ninjafirewall') ?></label>
|
1141 |
-
</td>
|
1142 |
<td>
|
1143 |
-
|
1144 |
</td>
|
1145 |
</tr>
|
1146 |
<tr>
|
1147 |
-
<th scope="row"><?php _e('Sanitise <code>PATH_INFO</code>', 'ninjafirewall') ?></th>
|
1148 |
-
<td width="20"> </td>
|
1149 |
-
<td width="120">
|
1150 |
-
<label><input type="radio" name="nfw_options[php_path_i]" value="1"<?php checked( $php_path_i, 1 ) ?>> <?php _e('Yes (default)', 'ninjafirewall') ?></label>
|
1151 |
-
</td>
|
1152 |
<td>
|
1153 |
-
|
1154 |
</td>
|
1155 |
</tr>
|
1156 |
</table>
|
@@ -1158,17 +967,13 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
1158 |
<br /><br />
|
1159 |
|
1160 |
<?php
|
1161 |
-
|
1162 |
if ( strlen( $_SERVER['DOCUMENT_ROOT'] ) < 5 ) {
|
1163 |
$nfw_rules[NFW_DOC_ROOT]['ena'] = 0;
|
1164 |
-
$
|
1165 |
-
$disabled = 'disabled ';
|
1166 |
-
$disabled_msg = '<br /><span class="description"> ' .
|
1167 |
__('This option is not compatible with your actual configuration.', 'ninjafirewall') .
|
1168 |
-
'</
|
1169 |
} else {
|
1170 |
-
$greyed = '';
|
1171 |
-
$disabled = '';
|
1172 |
$disabled_msg = '';
|
1173 |
}
|
1174 |
|
@@ -1189,35 +994,24 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
1189 |
}
|
1190 |
?>
|
1191 |
<h3><?php _e('Various', 'ninjafirewall') ?></h3>
|
1192 |
-
<table class="form-table">
|
1193 |
-
<tr
|
1194 |
-
<th scope="row"><?php _e('Block the <code>DOCUMENT_ROOT</code> server variable in HTTP request', 'ninjafirewall') ?></th>
|
1195 |
-
<td width="20"> </td>
|
1196 |
-
<td width="120">
|
1197 |
-
<label <?php echo $greyed ?>><input type="radio" name="nfw_rules[block_doc_root]" value="1"<?php checked( $block_doc_root, 1 ) ?>> <?php _e('Yes (default)', 'ninjafirewall') ?></label>
|
1198 |
-
</td>
|
1199 |
<td>
|
1200 |
-
|
|
|
1201 |
</td>
|
1202 |
</tr>
|
1203 |
<tr>
|
1204 |
-
<th scope="row"><?php _e('Block ASCII character 0x00 (NULL byte)', 'ninjafirewall') ?></th>
|
1205 |
-
<td width="20"> </td>
|
1206 |
-
<td width="120">
|
1207 |
-
<label><input type="radio" name="nfw_rules[block_null_byte]" value="1"<?php checked( $block_null_byte, 1 ) ?>> <?php _e('Yes (default)', 'ninjafirewall') ?></label>
|
1208 |
-
</td>
|
1209 |
<td>
|
1210 |
-
|
1211 |
</td>
|
1212 |
</tr>
|
1213 |
<tr>
|
1214 |
-
<th scope="row"><?php _e('Block ASCII control characters 1 to 8 and 14 to 31', 'ninjafirewall') ?></th>
|
1215 |
-
<td width="20"> </td>
|
1216 |
<td>
|
1217 |
-
|
1218 |
-
</td>
|
1219 |
-
<td>
|
1220 |
-
<label><input type="radio" name="nfw_rules[block_ctrl_chars]" value="0"<?php checked( $block_ctrl_chars, 0 ) ?>> <?php _e('No (default)', 'ninjafirewall') ?></label>
|
1221 |
</td>
|
1222 |
</tr>
|
1223 |
</table>
|
@@ -1227,9 +1021,10 @@ wp_nonce_field('policies_save', 'nfwnonce', 0);
|
|
1227 |
<br />
|
1228 |
<br />
|
1229 |
|
|
|
1230 |
<input class="button-primary" type="submit" name="Save" value="<?php _e('Save Firewall Policies', 'ninjafirewall') ?>" />
|
1231 |
|
1232 |
-
<input class="button-secondary" type="submit" name="Default" value="<?php _e('Restore Default Values', 'ninjafirewall') ?>" onclick="return
|
1233 |
</form>
|
1234 |
</div>
|
1235 |
|
@@ -1660,12 +1455,6 @@ function nf_sub_policies_save() {
|
|
1660 |
|
1661 |
}
|
1662 |
|
1663 |
-
// ---------------------------------------------------------------------
|
1664 |
-
|
1665 |
-
function nf_sub_policies_csp() {
|
1666 |
-
return "script-src 'self' 'unsafe-inline' 'unsafe-eval' *.videopress.com *.google.com *.wp.com; style-src 'self' 'unsafe-inline' *.googleapis.com *.google.com *.jquery.com; connect-src 'self'; media-src 'self' *.youtube.com *.w.org; child-src 'self' *.videopress.com *.google.com; object-src 'self'; form-action 'self'; img-src 'self' *.gravatar.com *.wp.com *.w.org *.cldup.com woocommerce.com data:;";
|
1667 |
-
}
|
1668 |
-
|
1669 |
// ---------------------------------------------------------------------
|
1670 |
// Restore default firewall policies.
|
1671 |
|
@@ -1688,7 +1477,7 @@ function nf_sub_policies_default() {
|
|
1688 |
if ( function_exists('header_register_callback') && function_exists('headers_list') && function_exists('header_remove') ) {
|
1689 |
$nfw_options['response_headers'] = '000300000';
|
1690 |
$nfw_options['referrer_policy_enabled'] = 0;
|
1691 |
-
$nfw_options['csp_backend_data'] =
|
1692 |
$nfw_options['csp_frontend_data'] = '';
|
1693 |
}
|
1694 |
$nfw_options['cookies_scan'] = 1;
|
@@ -1699,7 +1488,7 @@ function nf_sub_policies_default() {
|
|
1699 |
$nfw_options['referer_sanitise'] = 1;
|
1700 |
$nfw_options['referer_post'] = 0;
|
1701 |
$nfw_options['no_host_ip'] = 0;
|
1702 |
-
$nfw_options['allow_local_ip'] =
|
1703 |
$nfw_options['php_errors'] = 1;
|
1704 |
$nfw_options['php_self'] = 1;
|
1705 |
$nfw_options['php_path_t'] = 1;
|
@@ -1733,15 +1522,16 @@ function nf_sub_policies_default() {
|
|
1733 |
$nfw_rules[NFW_OBJECTS]['ena'] = 1;
|
1734 |
$nfw_rules[NFW_OBJECTS]['cha'][1]['whe'] = 'GET|POST|SERVER:HTTP_USER_AGENT|SERVER:HTTP_REFERER';
|
1735 |
|
|
|
1736 |
if ( strlen( $_SERVER['DOCUMENT_ROOT'] ) > 5 ) {
|
1737 |
$nfw_rules[NFW_DOC_ROOT]['cha'][1]['wha'] = str_replace( '/', '/[./]*', $_SERVER['DOCUMENT_ROOT'] );
|
1738 |
$nfw_rules[NFW_DOC_ROOT]['ena'] = 1;
|
1739 |
} elseif ( strlen( getenv( 'DOCUMENT_ROOT' ) ) > 5 ) {
|
1740 |
$nfw_rules[NFW_DOC_ROOT]['cha'][1]['wha'] = str_replace( '/', '/[./]*', getenv( 'DOCUMENT_ROOT' ) );
|
1741 |
$nfw_rules[NFW_DOC_ROOT]['ena'] = 1;
|
1742 |
-
} else {
|
1743 |
-
$nfw_rules[NFW_DOC_ROOT]['ena'] = 0;
|
1744 |
}
|
|
|
|
|
1745 |
|
1746 |
$nfw_rules[NFW_NULL_BYTE]['ena'] = 1;
|
1747 |
$nfw_rules[NFW_ASCII_CTRL]['ena'] = 0;
|
14 |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
| GNU General Public License for more details. |
|
17 |
+
+---------------------------------------------------------------------+ i18n+ / sa / 2
|
18 |
*/
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
21 |
|
22 |
+
// Block immediately if user is not allowed
|
23 |
nf_not_allowed( 'block', __LINE__ );
|
24 |
|
|
|
25 |
$yes = __('Yes', 'ninjafirewall');
|
26 |
$no = __('No', 'ninjafirewall');
|
27 |
+
|
28 |
+
$full_waf_msg = '<p class="description" style="color:red">' .
|
29 |
+
sprintf( __('This feature is only available when NinjaFirewall is running in %s mode.', 'ninjafirewall'),
|
30 |
+
'<a href="https://blog.nintechnet.com/full_waf-vs-wordpress_waf/">Full WAF</a>') . '</p>';
|
31 |
if ( defined('NFW_WPWAF') ) {
|
32 |
$option_disabled = 1;
|
33 |
} else {
|
37 |
$nfw_options = nfw_get_option( 'nfw_options' );
|
38 |
$nfw_rules = nfw_get_option( 'nfw_rules' );
|
39 |
|
40 |
+
// Tab and div display
|
41 |
+
if ( empty( $_REQUEST['tab'] ) ) { $_REQUEST['tab'] = 'basic'; }
|
42 |
+
|
43 |
+
if ( $_REQUEST['tab'] == 'intermediate' ) {
|
44 |
+
$basic_tab = ''; $basic_div = ' style="display:none"';
|
45 |
+
$intermediate_tab = ' nav-tab-active'; $intermediate_div = '';
|
46 |
+
$advanced_tab = ''; $advanced_div = ' style="display:none"';
|
47 |
+
|
48 |
+
} elseif ( $_REQUEST['tab'] == 'advanced' ) {
|
49 |
+
$basic_tab = ''; $basic_div = ' style="display:none"';
|
50 |
+
$intermediate_tab = ''; $intermediate_div = ' style="display:none"';
|
51 |
+
$advanced_tab = ' nav-tab-active'; $advanced_div = '';
|
52 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
} else {
|
54 |
+
$_REQUEST['tab'] = 'basic';
|
55 |
+
$basic_tab = ' nav-tab-active'; $basic_div = '';
|
56 |
+
$intermediate_tab = ''; $intermediate_div = ' style="display:none"';
|
57 |
+
$advanced_tab = ''; $advanced_div = ' style="display:none"';
|
|
|
|
|
|
|
58 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
|
60 |
+
?>
|
61 |
<div class="wrap">
|
62 |
+
<h1><img style="vertical-align:top;width:33px;height:33px;" src="<?php echo plugins_url( '/ninjafirewall/images/ninjafirewall_32.png' ) ?>"> <?php _e('Firewall Policies', 'ninjafirewall') ?></h1>
|
63 |
+
<?php
|
64 |
|
65 |
if ( isset( $_POST['nfw_options']) ) {
|
66 |
if ( empty($_POST['nfwnonce']) || ! wp_verify_nonce($_POST['nfwnonce'], 'policies_save') ) {
|
82 |
?>
|
83 |
<br />
|
84 |
<h2 class="nav-tab-wrapper wp-clearfix" style="cursor:pointer">
|
85 |
+
<a id="tab-basic" class="nav-tab<?php echo $basic_tab ?>" onClick="nfwjs_switch_tabs('basic', 'basic:intermediate:advanced')"><?php _e( 'Basic Policies', 'ninjafirewall' ) ?></a>
|
86 |
+
<a id="tab-intermediate" class="nav-tab<?php echo $intermediate_tab ?>" onClick="nfwjs_switch_tabs('intermediate', 'basic:intermediate:advanced')"><?php _e( 'Intermediate Policies', 'ninjafirewall' ) ?></a>
|
87 |
+
<a id="tab-advanced" class="nav-tab<?php echo $advanced_tab ?>" onClick="nfwjs_switch_tabs('advanced', 'basic:intermediate:advanced')"><?php _e( 'Advanced Policies', 'ninjafirewall' ) ?></a>
|
88 |
</h2>
|
89 |
<br />
|
90 |
<?php
|
92 |
echo '<form method="post" name="fwrules">';
|
93 |
wp_nonce_field('policies_save', 'nfwnonce', 0);
|
94 |
|
95 |
+
// ---------------------------------------------------------------------
|
96 |
// Basic options:
|
97 |
?>
|
98 |
+
<div id="basic-options"<?php echo $basic_div ?>>
|
99 |
<?php
|
100 |
if ( ( isset( $nfw_options['scan_protocol']) ) &&
|
101 |
( preg_match( '/^[123]$/', $nfw_options['scan_protocol']) ) ) {
|
106 |
|
107 |
?>
|
108 |
<h3>HTTP / HTTPS</h3>
|
109 |
+
<table class="form-table nfw-table">
|
110 |
<tr>
|
111 |
+
<th scope="row" class="row-med"><?php _e('Enable NinjaFirewall for', 'ninjafirewall') ?></th>
|
|
|
112 |
<td>
|
113 |
+
<p><label><input type="radio" name="nfw_options[scan_protocol]" value="3"<?php checked($scan_protocol, 3 ) ?>> <?php _e('HTTP and HTTPS traffic (default)', 'ninjafirewall') ?></label></p>
|
114 |
+
<p><label><input type="radio" name="nfw_options[scan_protocol]" value="1"<?php checked($scan_protocol, 1 ) ?>> <?php _e('HTTP traffic only', 'ninjafirewall') ?></label></p>
|
115 |
+
<p><label><input type="radio" name="nfw_options[scan_protocol]" value="2"<?php checked($scan_protocol, 2 ) ?>> <?php _e('HTTPS traffic only', 'ninjafirewall') ?></label></p>
|
116 |
</td>
|
117 |
</tr>
|
118 |
</table>
|
119 |
|
120 |
+
<br />
|
121 |
+
<br />
|
122 |
+
|
123 |
<?php
|
124 |
if ( empty( $nfw_options['sanitise_fn']) ) {
|
125 |
$sanitise_fn = 0;
|
138 |
$substitute = htmlspecialchars( $nfw_options['substitute'] );
|
139 |
}
|
140 |
?>
|
|
|
141 |
<h3><?php _e('Uploads', 'ninjafirewall') ?></h3>
|
142 |
+
<table class="form-table nfw-table">
|
143 |
<tr>
|
144 |
+
<th scope="row" class="row-med"><?php _e('File Uploads', 'ninjafirewall') ?></th>
|
|
|
145 |
<td>
|
146 |
+
<select name="nfw_options[uploads]" onchange="nfwjs_upload_onoff(this);">
|
147 |
<option value="1"<?php selected( $uploads, 1 ) ?>><?php echo __('Allow uploads', 'ninjafirewall') .' '. __('(default)', 'ninjafirewall') ?></option>
|
148 |
<option value="0"<?php selected( $uploads, 0 ) ?>><?php _e('Disallow uploads', 'ninjafirewall') ?></option>
|
149 |
</select>
|
150 |
+
<br />
|
151 |
+
<label><input type="checkbox" onclick='return nfwjs_sanitise(this);' name="nfw_options[sanitise_fn]"<?php checked( $sanitise_fn, 1 ); disabled( $uploads, 0 ) ?> id="san">
|
152 |
+
<?php _e('Sanitise filenames', 'ninjafirewall') ?> (<?php _e('substitution character:', 'ninjafirewall') ?></label> <input id="subs" maxlength="1" size="1" value="<?php echo $substitute ?>" name="nfw_options[substitute]" type="text" <?php disabled( $uploads, 0 ) ?>/> )
|
153 |
</td>
|
154 |
</tr>
|
155 |
</table>
|
156 |
|
157 |
+
<br />
|
158 |
<br />
|
159 |
|
160 |
<?php
|
161 |
+
if (! isset( $nfw_options['wp_dir'] ) ) {
|
162 |
+
$nfw_options['wp_dir'] = '';
|
163 |
+
}
|
164 |
+
if ( strpos( $nfw_options['wp_dir'], 'wp-admin' ) !== FALSE ) {
|
165 |
$wp_admin = 1;
|
166 |
} else {
|
167 |
$wp_admin = 0;
|
168 |
}
|
169 |
+
if ( strpos( $nfw_options['wp_dir'], 'wp-includes' ) !== FALSE ) {
|
170 |
$wp_inc = 1;
|
171 |
} else {
|
172 |
$wp_inc = 0;
|
173 |
}
|
174 |
+
if ( strpos( $nfw_options['wp_dir'], 'uploads' ) !== FALSE ) {
|
175 |
$wp_upl = 1;
|
176 |
} else {
|
177 |
$wp_upl = 0;
|
178 |
}
|
179 |
+
if ( strpos( $nfw_options['wp_dir'], 'cache' ) !== FALSE ) {
|
180 |
$wp_cache = 1;
|
181 |
} else {
|
182 |
$wp_cache = 0;
|
271 |
}
|
272 |
?>
|
273 |
<h3>WordPress</h3>
|
274 |
+
<table class="form-table nfw-table">
|
275 |
<tr>
|
276 |
+
<th scope="row" class="row-med"><?php _e('Block direct access to any PHP file located in one of these directories', 'ninjafirewall') ?></th>
|
277 |
+
<td>
|
278 |
+
<?php
|
279 |
if ( defined('NFW_WPWAF') ) {
|
280 |
+
echo $full_waf_msg;
|
281 |
}
|
282 |
+
?>
|
|
|
|
|
283 |
<table class="form-table">
|
284 |
<tr style="border: solid 1px #DFDFDF;">
|
285 |
<td align="center" width="10"><input type="checkbox" name="nfw_options[wp_admin]" id="wp_01"<?php checked( $wp_admin, 1 ); disabled( $option_disabled, 1) ?>></td>
|
303 |
<p><code>/wp-includes/theme-compat/*</code></p>
|
304 |
</label>
|
305 |
<br />
|
306 |
+
<p class="description"><?php _e('NinjaFirewall will not block access to the TinyMCE WYSIWYG editor even if this option is enabled.', 'ninjafirewall') ?></p>
|
307 |
</td>
|
308 |
</tr>
|
309 |
<tr style="border: solid 1px #DFDFDF;">
|
318 |
<td style="vertical-align:top"><label for="wp_04"><code>*/cache/*</code></label>
|
319 |
<br />
|
320 |
<br />
|
321 |
+
<p class="description"><?php _e('Unless you have PHP scripts in a "/cache/" folder that need to be accessed by your visitors, we recommend to enable this option.', 'ninjafirewall') ?></p>
|
322 |
</td>
|
323 |
</tr>
|
324 |
</table>
|
325 |
<br />
|
326 |
</td>
|
327 |
</tr>
|
|
|
328 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
329 |
<tr>
|
330 |
+
<th scope="row" class="row-med"><?php _e('General', 'ninjafirewall') ?></th>
|
|
|
331 |
<td>
|
332 |
+
<p><label><input type="checkbox" name="nfw_options[disallow_settings]" value="1"<?php checked( $disallow_settings, 1 ) ?>> <?php echo _e('Block attempts to modify important WordPress settings', 'ninjafirewall') ?></label></p>
|
333 |
<p><label><input type="checkbox" name="nfw_options[disallow_creation]" value="1"<?php checked( $disallow_creation, 1 ) ?>> <?php _e('Block user accounts creation', 'ninjafirewall') ?></label></p>
|
334 |
+
<p class="description"><?php _e('Do not enable this policy if you allow user registration.', 'ninjafirewall') ?></p>
|
335 |
</td>
|
336 |
</tr>
|
337 |
|
343 |
}
|
344 |
?>
|
345 |
<tr>
|
346 |
+
<th scope="row" class="row-med"><?php _e('WordPress AJAX', 'ninjafirewall') ?></th>
|
|
|
347 |
<td>
|
348 |
<p><label><input type="checkbox" name="nfw_options[admin_ajax]" value="1"<?php checked( $admin_ajax, 1 ) ?>> <?php _e('Protect <code>admin-ajax.php</code> against suspicious bots', 'ninjafirewall') ?></label></p>
|
349 |
+
<p class="description"><?php printf( __('Your server IP (%s), localhost and private IP addresses will not be affected by this policy.', 'ninjafirewall'), htmlspecialchars( NFW_REMOTE_ADDR ) ) ?></p>
|
350 |
</td>
|
351 |
</tr>
|
352 |
|
353 |
<tr>
|
354 |
+
<th scope="row" class="row-med"><?php _e('Protect against username enumeration', 'ninjafirewall') ?></th>
|
|
|
355 |
<td>
|
356 |
<p><label><input type="checkbox" name="nfw_options[enum_archives]" value="1"<?php checked( $enum_archives, 1 ) ?>> <?php _e('Through the author archives', 'ninjafirewall') ?></label></p>
|
357 |
<p><label><input type="checkbox" name="nfw_options[enum_login]" value="1"<?php checked( $enum_login, 1 ) ?>> <?php _e('Through the login page', 'ninjafirewall') ?></label></p>
|
359 |
</td>
|
360 |
</tr>
|
361 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
362 |
<tr>
|
363 |
+
<th scope="row" class="row-med"><?php _e('WordPress REST API', 'ninjafirewall') ?></th>
|
|
|
364 |
<td>
|
365 |
+
<p><label><input type="checkbox" name="nfw_options[no_restapi]" value="1"<?php checked( $no_restapi, 1 ) ?>> <?php _e('Block any access to the API', 'ninjafirewall') ?></label> *</p>
|
|
|
366 |
</td>
|
367 |
</tr>
|
368 |
+
<tr>
|
369 |
+
<th scope="row" class="row-med"><?php _e('WordPress XML-RPC API', 'ninjafirewall') ?></th>
|
|
|
370 |
<td>
|
371 |
<p><label><input type="checkbox" name="nfw_options[no_xmlrpc]" value="1"<?php checked( $no_xmlrpc, 1 ) ?>> <?php _e('Block any access to the API', 'ninjafirewall') ?></label> *</p>
|
|
|
372 |
<p><label><input type="checkbox" name="nfw_options[no_xmlrpc_multi]" value="1"<?php checked( $no_xmlrpc_multi, 1 ) ?>> <?php _e('Block <code>system.multicall</code> method', 'ninjafirewall') ?></label> *</p>
|
373 |
+
<p><label><input type="checkbox" name="nfw_options[no_xmlrpc_pingback]" value="1"<?php checked( $no_xmlrpc_pingback, 1 ) ?>> <?php _e('Block Pingbacks', 'ninjafirewall') ?></label></p>
|
374 |
+
<br />
|
375 |
+
<p class="description" style="font-size:14px">* <?php _e('Disabling access to the REST or XML-RPC API may break some functionality on your blog, its themes or plugins (e.g., Gutenberg editor, Jetpack, Contact Form 7 etc).', 'ninjafirewall') ?></p>
|
|
|
376 |
</td>
|
377 |
</tr>
|
|
|
|
|
|
|
378 |
|
|
|
379 |
<tr valign="top">
|
380 |
+
<th scope="row" class="row-med" style="vertical-align:top"><?php _e('Block <code>POST</code> requests in the themes folder', 'ninjafirewall') ?> <code>/<?php echo basename(WP_CONTENT_DIR); ?>/themes</code></th>
|
381 |
+
<td>
|
382 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[no_post_themes]', $yes, $no, 'small', $no_post_themes, $option_disabled );
|
|
|
|
|
|
|
|
|
|
|
383 |
if ( defined('NFW_WPWAF') ) {
|
384 |
+
echo $full_waf_msg;
|
385 |
}
|
386 |
+
?>
|
387 |
</td>
|
388 |
</tr>
|
389 |
<tr valign="top">
|
390 |
+
<th scope="row" class="row-med"><a name="builtinconstants"></a><?php _e('Force SSL for admin and logins', 'ninjafirewall') ?> <code><a href="http://codex.wordpress.org/Editing_wp-config.php#Require_SSL_for_Admin_and_Logins" target="_blank">FORCE_SSL_ADMIN</a></code></th>
|
|
|
|
|
|
|
|
|
391 |
<td>
|
392 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[force_ssl]', $yes, $no, 'small', $force_ssl, $force_ssl_already_enabled, 'onclick="return nfwjs_ssl_warn(this,'. NFW_IS_HTTPS .');"' ) ?>
|
393 |
</td>
|
394 |
</tr>
|
395 |
<tr valign="top">
|
396 |
+
<th scope="row" class="row-med"><?php _e('Disable the plugin and theme editor', 'ninjafirewall') ?> <code><a href="http://codex.wordpress.org/Editing_wp-config.php#Disable_the_Plugin_and_Theme_Editor" target="_blank">DISALLOW_FILE_EDIT</a></code></th>
|
|
|
|
|
|
|
|
|
397 |
<td>
|
398 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[disallow_edit]', $yes, $no, 'small', $disallow_edit, $disallow_edit_already_enabled ) ?>
|
399 |
</td>
|
400 |
</tr>
|
401 |
<tr valign="top">
|
402 |
+
<th scope="row" class="row-med"><?php _e('Disable plugin and theme update/installation', 'ninjafirewall') ?> <code><a href="http://codex.wordpress.org/Editing_wp-config.php#Disable_Plugin_and_Theme_Update_and_Installation" target="_blank">DISALLOW_FILE_MODS</a></code></th>
|
|
|
|
|
|
|
|
|
403 |
<td>
|
404 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[disallow_mods]', $yes, $no, 'small', $disallow_mods, $disallow_mods_already_enabled ) ?>
|
405 |
</td>
|
406 |
</tr>
|
407 |
<tr valign="top">
|
408 |
+
<th scope="row" class="row-med"><?php _e('Disable the fatal error handler', 'ninjafirewall') ?> <code><a href="https://make.wordpress.org/core/2019/01/14/php-site-health-mechanisms-in-5-1/" target="_blank">WP_DISABLE_FATAL_ERROR_HANDLER</a></code></th>
|
|
|
|
|
|
|
|
|
409 |
<td>
|
410 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[disable_error_handler]', $yes, $no, 'small', $disable_error_handler, $disable_error_handler_already_enabled ) ?>
|
411 |
</td>
|
412 |
</tr>
|
413 |
|
425 |
$wl_admin = 1;
|
426 |
}
|
427 |
?>
|
428 |
+
<table class="form-table nfw-table">
|
429 |
<tr style="background-color:#F9F9F9;border: solid 1px #DFDFDF;">
|
430 |
+
<th scope="row" class="row-med"><?php _e('Users Whitelist', 'ninjafirewall') ?></th>
|
|
|
431 |
<td>
|
432 |
+
<p><label><input type="radio" name="nfw_options[wl_admin]" value="1"<?php checked( $wl_admin, 1 ) ?>> <?php _e('Add the Administrator to the whitelist (default).', 'ninjafirewall') ?></label></p>
|
433 |
+
<p><label><input type="radio" name="nfw_options[wl_admin]" value="2"<?php checked( $wl_admin, 2 ) ?>> <?php _e('Add all logged in users to the whitelist.', 'ninjafirewall') ?></label></p>
|
434 |
+
<p><label><input type="radio" name="nfw_options[wl_admin]" value="0"<?php checked( $wl_admin, 0 ) ?>> <?php _e('Disable users whitelist.', 'ninjafirewall') ?></label></p>
|
435 |
+
<p class="description"><?php _e('Note: This feature does not apply to <code>FORCE_SSL_ADMIN</code>, <code>DISALLOW_FILE_EDIT</code>, <code>DISALLOW_FILE_MODS</code> and <code>WP_DISABLE_FATAL_ERROR_HANDLER</code> options which, if enabled, are always enforced.', 'ninjafirewall') ?></p>
|
436 |
</td>
|
437 |
</tr>
|
438 |
</table>
|
441 |
|
442 |
|
443 |
<?php
|
444 |
+
// ---------------------------------------------------------------------
|
445 |
// Intermediate options:
|
446 |
?>
|
447 |
+
<div id="intermediate-options"<?php echo $intermediate_div ?>>
|
448 |
<?php
|
449 |
if ( empty( $nfw_options['get_scan']) ) {
|
450 |
$get_scan = 0;
|
458 |
}
|
459 |
?>
|
460 |
<h3><?php _e('HTTP GET variable', 'ninjafirewall') ?></h3>
|
461 |
+
<table class="form-table nfw-table">
|
462 |
<tr>
|
463 |
+
<th scope="row" class="row-med"><?php _e('Scan <code>GET</code> variable', 'ninjafirewall') ?></th>
|
|
|
|
|
|
|
|
|
464 |
<td>
|
465 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[get_scan]', $yes, $no, 'small', $get_scan ) ?>
|
466 |
</td>
|
467 |
</tr>
|
468 |
<tr>
|
469 |
+
<th scope="row" class="row-med"><?php _e('Sanitise <code>GET</code> variable', 'ninjafirewall') ?></th>
|
|
|
|
|
|
|
|
|
470 |
<td>
|
471 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[get_sanitise]', $yes, $no, 'small', $get_sanitise ) ?>
|
472 |
</td>
|
473 |
</tr>
|
474 |
</table>
|
493 |
}
|
494 |
?>
|
495 |
<h3><?php _e('HTTP POST variable', 'ninjafirewall') ?></h3>
|
496 |
+
<table class="form-table nfw-table">
|
497 |
<tr valign="top">
|
498 |
+
<th scope="row" class="row-med"><?php _e('Scan <code>POST</code> variable', 'ninjafirewall') ?></th>
|
|
|
|
|
|
|
|
|
499 |
<td>
|
500 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[post_scan]', $yes, $no, 'small', $post_scan ) ?>
|
501 |
</td>
|
502 |
</tr>
|
503 |
<tr valign="top">
|
504 |
+
<th scope="row" class="row-med"><?php _e('Sanitise <code>POST</code> variable', 'ninjafirewall') ?></th>
|
|
|
|
|
|
|
|
|
505 |
<td>
|
506 |
+
<?php nfw_toggle_switch( 'warning', 'nfw_options[post_sanitise]', $yes, $no, 'small', $post_sanitise ) ?>
|
507 |
+
<p class="description"> <?php _e('Do not enable this option unless you know what you are doing!', 'ninjafirewall') ?></p>
|
508 |
</td>
|
509 |
</tr>
|
510 |
<tr valign="top">
|
511 |
+
<th scope="row" class="row-med"><?php _e('Decode Base64-encoded <code>POST</code> variable', 'ninjafirewall') ?></th>
|
|
|
|
|
|
|
|
|
512 |
<td>
|
513 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[post_b64]', $yes, $no, 'small', $post_b64 ) ?>
|
514 |
</td>
|
515 |
</tr>
|
516 |
</table>
|
524 |
}
|
525 |
?>
|
526 |
<h3><?php _e('HTTP REQUEST variable', 'ninjafirewall') ?></h3>
|
527 |
+
<table class="form-table nfw-table">
|
528 |
<tr>
|
529 |
+
<th scope="row" class="row-med"><?php _e('Sanitise <code>REQUEST</code> variable', 'ninjafirewall') ?></th>
|
|
|
|
|
|
|
|
|
530 |
<td>
|
531 |
+
<?php nfw_toggle_switch( 'warning', 'nfw_options[request_sanitise]', $yes, $no, 'small', $request_sanitise ) ?>
|
532 |
+
<p class="description"> <?php _e('Do not enable this option unless you know what you are doing!', 'ninjafirewall') ?></p>
|
533 |
</td>
|
534 |
</tr>
|
535 |
</table>
|
549 |
}
|
550 |
?>
|
551 |
<h3><?php _e('Cookies', 'ninjafirewall') ?></h3>
|
552 |
+
<table class="form-table nfw-table">
|
553 |
<tr>
|
554 |
+
<th scope="row" class="row-med"><?php _e('Scan cookies', 'ninjafirewall') ?></th>
|
|
|
|
|
|
|
|
|
555 |
<td>
|
556 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[cookies_scan]', $yes, $no, 'small', $cookies_scan ) ?>
|
557 |
</td>
|
558 |
</tr>
|
559 |
<tr>
|
560 |
+
<th scope="row" class="row-med"><?php _e('Sanitise cookies', 'ninjafirewall') ?></th>
|
|
|
|
|
|
|
|
|
561 |
<td>
|
562 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[cookies_sanitise]', $yes, $no, 'small', $cookies_sanitise ) ?>
|
563 |
</td>
|
564 |
</tr>
|
565 |
</table>
|
577 |
} else {
|
578 |
$ua_sanitise = 1;
|
579 |
}
|
|
|
|
|
580 |
if ( empty( $nfw_rules[NFW_SCAN_BOTS]['ena']) ) {
|
581 |
$block_bots = 0;
|
582 |
} else {
|
584 |
}
|
585 |
?>
|
586 |
<h3><?php _e('HTTP_USER_AGENT server variable', 'ninjafirewall') ?></h3>
|
587 |
+
<table class="form-table nfw-table">
|
588 |
<tr>
|
589 |
+
<th scope="row" class="row-med"><?php _e('Scan <code>HTTP_USER_AGENT</code>', 'ninjafirewall') ?></th>
|
|
|
|
|
|
|
|
|
590 |
<td>
|
591 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[ua_scan]', $yes, $no, 'small', $ua_scan ) ?>
|
592 |
</td>
|
593 |
</tr>
|
594 |
<tr>
|
595 |
+
<th scope="row" class="row-med"><?php _e('Sanitise <code>HTTP_USER_AGENT</code>', 'ninjafirewall') ?></th>
|
|
|
|
|
|
|
|
|
596 |
<td>
|
597 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[ua_sanitise]', $yes, $no, 'small', $ua_sanitise ) ?>
|
598 |
</td>
|
599 |
</tr>
|
600 |
<tr>
|
601 |
+
<th scope="row" class="row-med"><?php _e('Block suspicious bots/scanners', 'ninjafirewall') ?></th>
|
|
|
|
|
|
|
|
|
602 |
<td>
|
603 |
+
<?php nfw_toggle_switch( 'info', 'nfw_rules[block_bots]', $yes, $no, 'small', $block_bots ) ?>
|
604 |
</td>
|
605 |
</tr>
|
606 |
</table>
|
625 |
}
|
626 |
?>
|
627 |
<h3><?php _e('HTTP_REFERER server variable', 'ninjafirewall') ?></h3>
|
628 |
+
<table class="form-table nfw-table">
|
629 |
<tr>
|
630 |
+
<th scope="row" class="row-med"><?php _e('Scan <code>HTTP_REFERER</code>', 'ninjafirewall') ?></th>
|
|
|
|
|
|
|
|
|
631 |
<td>
|
632 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[referer_scan]', $yes, $no, 'small', $referer_scan ) ?>
|
633 |
</td>
|
634 |
</tr>
|
635 |
<tr>
|
636 |
+
<th scope="row" class="row-med"><?php _e('Sanitise <code>HTTP_REFERER</code>', 'ninjafirewall') ?></th>
|
|
|
|
|
|
|
|
|
637 |
<td>
|
638 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[referer_sanitise]', $yes, $no, 'small', $referer_sanitise ) ?>
|
639 |
</td>
|
640 |
</tr>
|
641 |
<tr valign="top">
|
642 |
+
<th scope="row" class="row-med"><?php _e('Block <code>POST</code> requests that do not have an <code>HTTP_REFERER</code> header', 'ninjafirewall') ?></th>
|
643 |
+
<td>
|
644 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[referer_post]', $yes, $no, 'small', $referer_post ) ?>
|
645 |
+
<p class="description"> <?php _e('Keep this option disabled if you are using scripts like Paypal IPN, WordPress WP-Cron etc', 'ninjafirewall') ?>.</p>
|
|
|
|
|
|
|
646 |
</td>
|
647 |
</tr>
|
648 |
</table>
|
667 |
}
|
668 |
?>
|
669 |
<h3>IP</h3>
|
670 |
+
<table class="form-table nfw-table" border=0>
|
671 |
<tr>
|
672 |
+
<th scope="row" class="row-med"><?php _e('Block localhost IP in <code>GET/POST</code> request', 'ninjafirewall') ?></th>
|
673 |
+
<td>
|
674 |
+
<?php nfw_toggle_switch( 'info', 'nfw_rules[no_localhost_ip]', $yes, $no, 'small', $no_localhost_ip ) ?>
|
|
|
|
|
|
|
|
|
675 |
</td>
|
676 |
</tr>
|
677 |
<tr>
|
678 |
+
<th scope="row" class="row-med"><?php _e('Block HTTP requests with an IP in the <code>HTTP_HOST</code> header', 'ninjafirewall') ?></th>
|
679 |
+
<td>
|
680 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[no_host_ip]', $yes, $no, 'small', $no_host_ip ) ?>
|
|
|
|
|
|
|
|
|
681 |
</td>
|
682 |
</tr>
|
683 |
<tr>
|
684 |
+
<th scope="row" class="row-med"><?php _e('Scan traffic coming from localhost and private IP address spaces', 'ninjafirewall') ?></th>
|
685 |
+
<td>
|
686 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[allow_local_ip]', $yes, $no, 'small', $allow_local_ip ) ?>
|
|
|
|
|
|
|
|
|
687 |
</td>
|
688 |
</tr>
|
689 |
</table>
|
691 |
</div>
|
692 |
|
693 |
<?php
|
694 |
+
// ---------------------------------------------------------------------
|
695 |
// Advanced options:
|
696 |
?>
|
697 |
+
<div id="advanced-options"<?php echo $advanced_div ?>>
|
|
|
698 |
<?php
|
699 |
+
$err_msg = ''; $err = 0;
|
700 |
+
// Some compatibility checks:
|
701 |
+
// 1. header_register_callback(): requires PHP >=5.4
|
702 |
+
// 2. headers_list() and header_remove(): some hosts may disable them.
|
703 |
+
$tpl = __('The "HTTP response headers" options below are disabled because the %s PHP function is not available on your server.', 'ninjafirewall');
|
704 |
+
if (! function_exists( 'header_register_callback' ) ) {
|
705 |
+
$err_msg = sprintf( $tpl, 'header_register_callback()' );
|
706 |
$err = 1;
|
707 |
+
|
708 |
+
} elseif (! function_exists( 'headers_list' ) ) {
|
709 |
+
$err_msg = sprintf( $tpl, 'headers_list()' );
|
710 |
$err = 1;
|
711 |
+
|
712 |
+
} elseif (! function_exists( 'header_remove' ) ) {
|
713 |
+
$err_msg = sprintf( $tpl, 'header_remove()' );
|
714 |
$err = 1;
|
715 |
}
|
716 |
+
if ( empty( $nfw_options['response_headers'] ) || ! empty( $err_msg ) ||
|
717 |
+
! preg_match( '/^\d+$/', $nfw_options['response_headers'] ) ) {
|
718 |
+
|
719 |
$nfw_options['response_headers'] = '000000000';
|
720 |
}
|
721 |
?>
|
722 |
+
|
723 |
<h3><?php _e('HTTP response headers', 'ninjafirewall') ?></h3>
|
724 |
+
<?php
|
725 |
+
if (! empty( $err_msg ) ) {
|
726 |
+
echo '<p class="description" style="color:red;font-size:14px">'. $err_msg .'</p>';
|
727 |
+
}
|
728 |
+
?>
|
729 |
+
<table class="form-table nfw-table">
|
730 |
<tr>
|
731 |
+
<th scope="row" class="row-med"><?php printf( __('Set %s to protect against MIME type confusion attacks', 'ninjafirewall'), '<a href="https://blog.nintechnet.com/securing-wordpress-with-a-web-application-firewall-ninjafirewall/#advanced-policies" target="_blank">X-Content-Type-Options</a>') ?></th>
|
|
|
|
|
|
|
|
|
732 |
<td>
|
733 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[x_content_type_options]', $yes, $no, 'small', $nfw_options['response_headers'][1], $err ) ?>
|
734 |
</td>
|
735 |
</tr>
|
736 |
<tr>
|
737 |
+
<th scope="row" class="row-med"><?php printf( __('Set %s to protect against clickjacking attempts', 'ninjafirewall'), '<a href="https://blog.nintechnet.com/securing-wordpress-with-a-web-application-firewall-ninjafirewall/#advanced-policies" target="_blank">X-Frame-Options</a>') ?></th>
|
738 |
+
<td>
|
739 |
+
<select name="nfw_options[x_frame_options]" <?php disabled( $err, 1 ) ?>>
|
740 |
+
<option value="0"<?php selected( $nfw_options['response_headers'][2], 0 ) ?>><?php echo $no; ?></option>
|
741 |
+
<option value="1"<?php selected( $nfw_options['response_headers'][2], 1 ) ?>>SAMEORIGIN</option>
|
742 |
+
<option value="2"<?php selected( $nfw_options['response_headers'][2], 2 ) ?>>DENY</option>
|
743 |
+
</select>
|
744 |
+
<p class="description"><?php _e('Setting this option to <code>DENY</code> may break some functionality on your blog, its themes or plugins.', 'ninjafirewall') ?></p>
|
745 |
</td>
|
|
|
746 |
</tr>
|
|
|
|
|
|
|
747 |
|
748 |
+
<tr>
|
749 |
+
<th scope="row" class="row-med"><?php printf( __("Set %s (IE/Edge, Chrome, Opera and Safari browsers)", 'ninjafirewall'), '<a href="https://blog.nintechnet.com/securing-wordpress-with-a-web-application-firewall-ninjafirewall/#advanced-policies" target="_blank">X-XSS-Protection</a>') ?></th>
|
|
|
|
|
750 |
<td>
|
751 |
+
<select name="nfw_options[x_xss_protection]" <?php disabled( $err, 1 ) ?>>
|
752 |
+
<option value="3"<?php selected( $nfw_options['response_headers'][3], 3 ) ?>><?php echo $no; ?></option>
|
753 |
+
<option value="0"<?php selected( $nfw_options['response_headers'][3], 0 ) ?>><?php printf( __('Set to %s', 'ninjafirewall'), '"0"'); ?></option>
|
754 |
+
<option value="2"<?php selected( $nfw_options['response_headers'][3], 2 ) ?>><?php printf( __('Set to %s', 'ninjafirewall'), '"1"'); ?></option>
|
755 |
+
<option value="1"<?php selected( $nfw_options['response_headers'][3], 1 ) ?>><?php printf( __('Set to %s', 'ninjafirewall'), '"1; mode=block"') ?></option>
|
756 |
+
</select>
|
757 |
</td>
|
758 |
</tr>
|
759 |
<tr>
|
760 |
+
<th scope="row" class="row-med"><?php printf( __('Force %s flag on all cookies to mitigate XSS attacks', 'ninjafirewall'), '<a href="https://blog.nintechnet.com/securing-wordpress-with-a-web-application-firewall-ninjafirewall/#advanced-policies" target="_blank">HttpOnly</a>') ?></th>
|
761 |
+
<td>
|
762 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[cookies_httponly]', $yes, $no, 'small', $nfw_options['response_headers'][0], $err ) ?>
|
763 |
+
<p class="description"><?php _e('If your PHP scripts use cookies that need to be accessed from JavaScript, you should not enable this option.', 'ninjafirewall') ?></p>
|
|
|
|
|
|
|
764 |
</td>
|
765 |
</tr>
|
766 |
<?php
|
767 |
+
// We don't send HSTS headers over HTTP (only display this message if there
|
768 |
+
// is no other warning to display, $err==0 ):
|
769 |
+
$hsts_err = 0;
|
770 |
if ( NFW_IS_HTTPS == false && ! $err ) {
|
771 |
$hsts_err = 1;
|
772 |
+
$hsts_msg = __('HSTS headers can only be set when you are accessing your site over HTTPS.', 'ninjafirewall');
|
773 |
} else {
|
774 |
$hsts_msg = '';
|
775 |
$hsts_err = 0;
|
776 |
}
|
777 |
+
if ( $err == 1 ) { $hsts_err = 1; }//$hsts_msg = '';
|
778 |
?>
|
779 |
<tr>
|
780 |
+
<th scope="row" class="row-med"><?php printf( __('Set %s (HSTS) to enforce secure connections to the server', 'ninjafirewall'), '<a href="https://blog.nintechnet.com/securing-wordpress-with-a-web-application-firewall-ninjafirewall/#advanced-policies" target="_blank">Strict-Transport-Security</a>') ?></th>
|
781 |
+
<td>
|
782 |
+
<select name="nfw_options[strict_transport]" <?php disabled( $hsts_err, 1 ) ?>>
|
783 |
+
<option value="0"<?php selected( $nfw_options['response_headers'][4], 0 ) ?>><?php echo $no; ?></option>
|
784 |
+
<option value="4"<?php selected( $nfw_options['response_headers'][4], 4 ) ?>><?php _e('Set "max-age" to 0', 'ninjafirewall') ?></option>
|
785 |
+
<option value="1"<?php selected( $nfw_options['response_headers'][4], 1 ) ?>><?php _e('1 month', 'ninjafirewall') ?></option>
|
786 |
+
<option value="2"<?php selected( $nfw_options['response_headers'][4], 2 ) ?>><?php _e('6 months', 'ninjafirewall') ?></option>
|
787 |
+
<option value="3"<?php selected( $nfw_options['response_headers'][4], 3 ) ?>><?php _e('1 year', 'ninjafirewall') ?></option>
|
788 |
+
</select>
|
789 |
+
<p><label><input type="checkbox" name="nfw_options[strict_transport_sub]" value="1"<?php checked( $nfw_options['response_headers'][5], 1 );disabled($hsts_err, 1) ?>> <?php _e('Apply to subdomains', 'ninjafirewall') ?></label></p>
|
790 |
+
<?php
|
791 |
+
if (! empty( $hsts_msg ) ) {
|
792 |
+
echo '<i class="description" style="color:red">'. $hsts_msg .'</i>';
|
793 |
+
}
|
794 |
+
?>
|
795 |
</td>
|
796 |
</tr>
|
797 |
|
800 |
$nfw_options['csp_frontend_data'] = '';
|
801 |
}
|
802 |
if (! isset( $nfw_options['csp_backend_data'] ) ) {
|
803 |
+
$nfw_options['csp_backend_data'] = '';
|
804 |
}
|
805 |
if (! isset( $nfw_options['response_headers'][6] ) ) {
|
806 |
$nfw_options['response_headers'][6] = 0;
|
810 |
}
|
811 |
?>
|
812 |
<tr>
|
813 |
+
<th scope="row" class="row-med"><?php printf( __('Set %s for the website frontend', 'ninjafirewall'), '<a href="https://blog.nintechnet.com/securing-wordpress-with-a-web-application-firewall-ninjafirewall/#advanced-policies" target="_blank">Content-Security-Policy</a>') ?></th>
|
814 |
+
<td>
|
815 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[csp_frontend]', $yes, $no, 'small', $nfw_options['response_headers'][6], $err, 'onclick="nfwjs_csp_onoff(\'csp1_switch\',\'csp1\');"', 'csp1_switch' ) ?>
|
816 |
+
<br />
|
817 |
+
<textarea autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" name="nfw_options[csp_frontend_data]" id="csp1" class="large-text code" rows="8"<?php readonly( $err, 1 ); readonly( $nfw_options['response_headers'][6], 0 ) ?> style="resize: vertical;"><?php echo htmlspecialchars( $nfw_options['csp_frontend_data'] ) ?></textarea>
|
818 |
+
<p class="description"><?php _e('This CSP header will apply to the website frontend only.', 'ninjafirewall') ?></p>
|
|
|
|
|
|
|
|
|
819 |
</td>
|
820 |
</tr>
|
|
|
821 |
<tr>
|
822 |
+
<th scope="row" class="row-med"><?php printf( __('Set %s for the WordPress admin dashboard', 'ninjafirewall'), '<a href="https://blog.nintechnet.com/securing-wordpress-with-a-web-application-firewall-ninjafirewall/#advanced-policies" target="_blank">Content-Security-Policy</a>') ?></th>
|
823 |
+
<td>
|
824 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[csp_backend]', $yes, $no, 'small', $nfw_options['response_headers'][7], $err, 'onclick="nfwjs_csp_onoff(\'csp2_switch\',\'csp2\');"', 'csp2_switch' ) ?>
|
825 |
+
<br />
|
826 |
+
<textarea autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" name="nfw_options[csp_backend_data]" id="csp2" class="large-text code" rows="8"<?php readonly( $err, 1 ); readonly( $nfw_options['response_headers'][7], 0 ) ?> style="resize: vertical;"><?php echo htmlspecialchars( $nfw_options['csp_backend_data'] ) ?></textarea>
|
827 |
+
<p class="description"><?php _e('This CSP header will apply to the WordPress admin dashboard only.', 'ninjafirewall') ?></p>
|
|
|
|
|
|
|
828 |
<?php echo $err_msg ?>
|
829 |
</td>
|
830 |
</tr>
|
840 |
}
|
841 |
?>
|
842 |
<tr>
|
843 |
+
<th scope="row"><?php printf( __("Set %s (Chrome, Opera and Firefox browsers)", 'ninjafirewall'), '<a href="https://blog.nintechnet.com/securing-wordpress-with-a-web-application-firewall-ninjafirewall/#advanced-policies" target="_blank">Referrer-Policy</a>') ?></th>
|
844 |
+
<td>
|
845 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[referrer_policy_enabled]', $yes, $no, 'small', $nfw_options['referrer_policy_enabled'], $err, 'onclick="nfwjs_referrer_onoff();"', 'referrer_switch' ) ?>
|
846 |
+
<br />
|
|
|
|
|
|
|
|
|
847 |
<select id="rp_select" name="nfw_options[referrer_policy]"<?php disabled($nfw_options['referrer_policy_enabled'], 0) ?>>
|
848 |
<option value="1"<?php selected($nfw_options['response_headers'][8], 1) ?>>no-referrer</option>
|
849 |
<option value="2"<?php selected($nfw_options['response_headers'][8], 2) ?>>no-referrer-when-downgrade</option>
|
888 |
}
|
889 |
?>
|
890 |
<h3>PHP</h3>
|
891 |
+
<table class="form-table nfw-table">
|
892 |
<tr>
|
893 |
+
<th scope="row" class="row-med"><?php _e('Block PHP built-in wrappers in <code>GET</code>, <code>POST</code>, <code>HTTP_USER_AGENT</code>, <code>HTTP_REFERER</code> and cookies', 'ninjafirewall') ?></th>
|
894 |
+
<td>
|
895 |
+
<?php nfw_toggle_switch( 'info', 'nfw_rules[php_wrappers]', $yes, $no, 'small', $php_wrappers ) ?>
|
|
|
|
|
|
|
|
|
896 |
</td>
|
897 |
</tr>
|
898 |
|
929 |
}
|
930 |
?>
|
931 |
<tr>
|
932 |
+
<th scope="row" class="row-mid"><?php _e('Block serialized PHP objects in the following global variables', 'ninjafirewall') ?></th>
|
933 |
+
<td>
|
934 |
+
<p><label><input type="checkbox" name="nfw_rules[php_objects_get]" value="1"<?php echo $NFW_OBJECTS_GET ?>><code>GET</code></label><p>
|
935 |
+
<p><label><input type="checkbox" name="nfw_rules[php_objects_post]" value="1"<?php echo $NFW_OBJECTS_POST ?>><code>POST</code></label><p>
|
|
|
936 |
<p><label><input type="checkbox" name="nfw_rules[php_objects_cookie]" value="1"<?php echo $NFW_OBJECTS_COOKIE ?>><code>COOKIE</code></label><p>
|
937 |
+
<p><label><input type="checkbox" name="nfw_rules[php_objects_http_user_agent]" value="1"<?php echo $NFW_OBJECTS_HTTP_USER_AGENT ?>><code>HTTP_USER_AGENT</code></label><p>
|
938 |
+
<p><label><input type="checkbox" name="nfw_rules[php_objects_http_referer]" value="1"<?php echo $NFW_OBJECTS_HTTP_REFERER ?>><code>HTTP_REFERER</code></label><p>
|
|
|
|
|
939 |
</td>
|
940 |
</tr>
|
941 |
<tr>
|
942 |
+
<th scope="row" class="row-mid"><?php _e('Hide PHP notice and error messages', 'ninjafirewall') ?></th>
|
|
|
|
|
|
|
|
|
943 |
<td>
|
944 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[php_errors]', $yes, $no, 'small', $php_errors ) ?>
|
945 |
</td>
|
946 |
</tr>
|
947 |
<tr>
|
948 |
+
<th scope="row" class="row-mid"><?php _e('Sanitise <code>PHP_SELF</code>', 'ninjafirewall') ?></th>
|
|
|
|
|
|
|
|
|
949 |
<td>
|
950 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[php_self]', $yes, $no, 'small', $php_self ) ?>
|
951 |
</td>
|
952 |
</tr>
|
953 |
<tr>
|
954 |
+
<th scope="row" class="row-mid"><?php _e('Sanitise <code>PATH_TRANSLATED</code>', 'ninjafirewall') ?></th>
|
|
|
|
|
|
|
|
|
955 |
<td>
|
956 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[php_path_t]', $yes, $no, 'small', $php_path_t ) ?>
|
957 |
</td>
|
958 |
</tr>
|
959 |
<tr>
|
960 |
+
<th scope="row" class="row-mid"><?php _e('Sanitise <code>PATH_INFO</code>', 'ninjafirewall') ?></th>
|
|
|
|
|
|
|
|
|
961 |
<td>
|
962 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[php_path_i]', $yes, $no, 'small', $php_path_i ) ?>
|
963 |
</td>
|
964 |
</tr>
|
965 |
</table>
|
967 |
<br /><br />
|
968 |
|
969 |
<?php
|
970 |
+
// If the document root is < 5 characters, disable the option
|
971 |
if ( strlen( $_SERVER['DOCUMENT_ROOT'] ) < 5 ) {
|
972 |
$nfw_rules[NFW_DOC_ROOT]['ena'] = 0;
|
973 |
+
$disabled_msg = '<p class="description">' .
|
|
|
|
|
974 |
__('This option is not compatible with your actual configuration.', 'ninjafirewall') .
|
975 |
+
'</p>';
|
976 |
} else {
|
|
|
|
|
977 |
$disabled_msg = '';
|
978 |
}
|
979 |
|
994 |
}
|
995 |
?>
|
996 |
<h3><?php _e('Various', 'ninjafirewall') ?></h3>
|
997 |
+
<table class="form-table nfw-table">
|
998 |
+
<tr>
|
999 |
+
<th scope="row" class="row-med"><?php _e('Block the <code>DOCUMENT_ROOT</code> server variable in HTTP request', 'ninjafirewall') ?></th>
|
|
|
|
|
|
|
|
|
1000 |
<td>
|
1001 |
+
<?php nfw_toggle_switch( 'info', 'nfw_rules[block_doc_root]', $yes, $no, 'small', $block_doc_root ) ?>
|
1002 |
+
<?php echo $disabled_msg ?>
|
1003 |
</td>
|
1004 |
</tr>
|
1005 |
<tr>
|
1006 |
+
<th scope="row" class="row-med"><?php _e('Block ASCII character 0x00 (NULL byte)', 'ninjafirewall') ?></th>
|
|
|
|
|
|
|
|
|
1007 |
<td>
|
1008 |
+
<?php nfw_toggle_switch( 'info', 'nfw_rules[block_null_byte]', $yes, $no, 'small', $block_null_byte ) ?>
|
1009 |
</td>
|
1010 |
</tr>
|
1011 |
<tr>
|
1012 |
+
<th scope="row" class="row-med"><?php _e('Block ASCII control characters 1 to 8 and 14 to 31', 'ninjafirewall') ?></th>
|
|
|
1013 |
<td>
|
1014 |
+
<?php nfw_toggle_switch( 'info', 'nfw_rules[block_ctrl_chars]', $yes, $no, 'small', $block_ctrl_chars ) ?>
|
|
|
|
|
|
|
1015 |
</td>
|
1016 |
</tr>
|
1017 |
</table>
|
1021 |
<br />
|
1022 |
<br />
|
1023 |
|
1024 |
+
<input type="hidden" name="tab" id="tab-selected" value="<?php echo htmlspecialchars( $_REQUEST['tab'] ) ?>" />
|
1025 |
<input class="button-primary" type="submit" name="Save" value="<?php _e('Save Firewall Policies', 'ninjafirewall') ?>" />
|
1026 |
|
1027 |
+
<input class="button-secondary" type="submit" name="Default" value="<?php _e('Restore Default Values', 'ninjafirewall') ?>" onclick="return nfwjs_restore_default();" />
|
1028 |
</form>
|
1029 |
</div>
|
1030 |
|
1455 |
|
1456 |
}
|
1457 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1458 |
// ---------------------------------------------------------------------
|
1459 |
// Restore default firewall policies.
|
1460 |
|
1477 |
if ( function_exists('header_register_callback') && function_exists('headers_list') && function_exists('header_remove') ) {
|
1478 |
$nfw_options['response_headers'] = '000300000';
|
1479 |
$nfw_options['referrer_policy_enabled'] = 0;
|
1480 |
+
$nfw_options['csp_backend_data'] = '';
|
1481 |
$nfw_options['csp_frontend_data'] = '';
|
1482 |
}
|
1483 |
$nfw_options['cookies_scan'] = 1;
|
1488 |
$nfw_options['referer_sanitise'] = 1;
|
1489 |
$nfw_options['referer_post'] = 0;
|
1490 |
$nfw_options['no_host_ip'] = 0;
|
1491 |
+
$nfw_options['allow_local_ip'] = 1; // 1 == no !
|
1492 |
$nfw_options['php_errors'] = 1;
|
1493 |
$nfw_options['php_self'] = 1;
|
1494 |
$nfw_options['php_path_t'] = 1;
|
1522 |
$nfw_rules[NFW_OBJECTS]['ena'] = 1;
|
1523 |
$nfw_rules[NFW_OBJECTS]['cha'][1]['whe'] = 'GET|POST|SERVER:HTTP_USER_AGENT|SERVER:HTTP_REFERER';
|
1524 |
|
1525 |
+
// Create but disable the rule by default
|
1526 |
if ( strlen( $_SERVER['DOCUMENT_ROOT'] ) > 5 ) {
|
1527 |
$nfw_rules[NFW_DOC_ROOT]['cha'][1]['wha'] = str_replace( '/', '/[./]*', $_SERVER['DOCUMENT_ROOT'] );
|
1528 |
$nfw_rules[NFW_DOC_ROOT]['ena'] = 1;
|
1529 |
} elseif ( strlen( getenv( 'DOCUMENT_ROOT' ) ) > 5 ) {
|
1530 |
$nfw_rules[NFW_DOC_ROOT]['cha'][1]['wha'] = str_replace( '/', '/[./]*', getenv( 'DOCUMENT_ROOT' ) );
|
1531 |
$nfw_rules[NFW_DOC_ROOT]['ena'] = 1;
|
|
|
|
|
1532 |
}
|
1533 |
+
$nfw_rules[NFW_DOC_ROOT]['ena'] = 0;
|
1534 |
+
|
1535 |
|
1536 |
$nfw_rules[NFW_NULL_BYTE]['ena'] = 1;
|
1537 |
$nfw_rules[NFW_ASCII_CTRL]['ena'] = 0;
|
lib/fw_livelog.php
CHANGED
@@ -62,7 +62,6 @@ function fw_livelog_show() {
|
|
62 |
// Something went wrong :
|
63 |
header('HTTP/1.0 503 Service Unavailable');
|
64 |
}
|
65 |
-
$nfw_['mysqli']->close();
|
66 |
exit;
|
67 |
}
|
68 |
|
62 |
// Something went wrong :
|
63 |
header('HTTP/1.0 503 Service Unavailable');
|
64 |
}
|
|
|
65 |
exit;
|
66 |
}
|
67 |
|
lib/help.php
CHANGED
@@ -35,17 +35,80 @@ function help_nfsubmain() {
|
|
35 |
get_current_screen()->add_help_tab( array(
|
36 |
'id' => 'main01',
|
37 |
'title' => __('Overview', 'ninjafirewall'),
|
38 |
-
'content' =>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
) );
|
40 |
get_current_screen()->set_help_sidebar(
|
41 |
'<p><strong>' . __( 'For more information:', 'ninjafirewall') . '</strong></p>' .
|
42 |
-
|
43 |
-
'<p><a href="https://blog.nintechnet.com/securing-wordpress-with-a-web-application-firewall-ninjafirewall/">'. __('Securing WordPress with NinjaFirewall.', 'ninjafirewall') . '</a></p>' .
|
44 |
-
|
45 |
-
'<p><a href="https://nintechnet.com/ninjafirewall/wp-edition/help/">'. __('Installation, help and troubleshooting', 'ninjafirewall') . '</a></p>' .
|
46 |
-
|
47 |
-
'<p><a href="http://wordpress.org/support/plugin/ninjafirewall/">' . __( 'Support Forum', 'ninjafirewall') . '</a></p>' .
|
48 |
-
'<p>'. __('Updates via Twitter', 'ninjafirewall') . '<br /><a href="https://twitter.com/nintechnet"><img border="0" src="' . plugins_url( '/images/twitter_ntn.png', __DIR__ ) . '" width="116" height="28"></a></p>'
|
49 |
);
|
50 |
|
51 |
}
|
@@ -114,7 +177,7 @@ get_current_screen()->add_help_tab( array(
|
|
114 |
'title' => __('Export/import configuration', 'ninjafirewall'),
|
115 |
'content' => '<br />' .
|
116 |
sprintf( __('This options lets you export you current configuration or import it from another NinjaFirewall (WP Edition) installation. The imported file must match the major version of your current version (%s) otherwise it will be rejected. Note that importing will override all firewall rules and options.', 'ninjafirewall'), (int) $major_current .'.x' ) .
|
117 |
-
'<p><
|
118 |
__('"File Check" configuration will not be exported/imported.', 'ninjafirewall') . '</span></p>'
|
119 |
) );
|
120 |
|
@@ -161,7 +224,7 @@ function help_nfsubpolicies() {
|
|
161 |
__('This action will be performed when the filtering process is over, right before NinjaFirewall forwards the request to your PHP script.', 'ninjafirewall') . '
|
162 |
<br />
|
163 |
<br />
|
164 |
-
<
|
165 |
) );
|
166 |
get_current_screen()->add_help_tab( array(
|
167 |
'id' => 'policies04',
|
@@ -191,7 +254,7 @@ function help_nfsubpolicies() {
|
|
191 |
<li>' . __('Force SSL for admin and logins <code>FORCE_SSL_ADMIN</code>:', 'ninjafirewall'). '<span class="description"> ' . __('enable this option when you want to secure logins and the admin area so that both passwords and cookies are never sent in the clear. Ensure that you can access your admin console from HTTPS before enabling this option, otherwise you will lock yourself out of your site!', 'ninjafirewall'). '</span></li>
|
192 |
<li>' . __('Disable the plugin and theme editor <code>DISALLOW_FILE_EDIT</code>:', 'ninjafirewall'). '<span class="description"> ' . __('disabling the plugin and theme editor provides an additional layer of security if a hacker gains access to a well-privileged user account.', 'ninjafirewall'). '</span></li>
|
193 |
<li>' . __('Disable plugin and theme update/installation <code>DISALLOW_FILE_MODS</code>:', 'ninjafirewall'). '<span class="description"> ' . __('this option will block users being able to use the plugin and theme installation/update functionality from the WordPress admin area. Setting this constant also disables the Plugin and Theme editor.', 'ninjafirewall'). '</span></li>
|
194 |
-
<li>' . __('Disable the fatal error handler <code>
|
195 |
|
196 |
<br />
|
197 |
|
@@ -244,10 +307,10 @@ function help_nfsubpolicies() {
|
|
244 |
<br />' .
|
245 |
__('Since v3.1.3, WordPress sets this value to <code>SAMEORIGIN</code> for the administrator and the login page only.', 'ninjafirewall'). '</li>
|
246 |
<li>' . __('Set <code>X-XSS-Protection</code> (IE/Edge, Chrome, Opera and Safari browsers):', 'ninjafirewall'). '<span class="description"> ' . __('this header allows browsers to identify and block XSS attacks by preventing malicious scripts from executing. It is enabled by default on all compatible browsers.', 'ninjafirewall'). '</span></li>'.
|
247 |
-
'<p><
|
248 |
|
249 |
'<li>' . __('Force <code>HttpOnly</code> flag on all cookies to mitigate XSS attacks:', 'ninjafirewall'). '<span class="description"> ' . __('adding this flag to cookies helps to mitigate the risk of cross-site scripting by preventing them from being accessed through client-side scripts. NinjaFirewall can hook all cookies sent by your blog, its plugins or any other PHP script, add the <code>HttpOnly</code> flag if it is missing, and re-inject those cookies back into your server HTTP response headers right before they are sent to your visitors. Note that WordPress sets that flag on the logged in user cookies only.', 'ninjafirewall'). '</span></li>
|
250 |
-
<p><
|
251 |
<li>' . __('Set <code>Strict-Transport-Security</code> (HSTS) to enforce secure connections to the server:', 'ninjafirewall'). '<span class="description"> ' . __('this policy enforces secure HTTPS connections to the server. Web browsers will not allow the user to access the web application over insecure HTTP protocol. It helps to defend against cookie hijacking and Man-in-the-middle attacks. Most recent browsers support HSTS headers.', 'ninjafirewall'). '</span></li>
|
252 |
<li>' . __('Set <code>Content-Security-Policy</code>:', 'ninjafirewall'). '<span class="description"> ' . __('this policy helps to mitigate threats such as XSS, phishing and clickjacking attacks. It covers JavaScript, CSS, HTML frames, web workers, fonts, images, objects (Java, ActiveX, audio and video files), and other HTML5 features.', 'ninjafirewall'). ' ' . __('NinjaFirewall lets you configure the CSP policy separately for the frontend (blog, website) and the backend (WordPress admin dashboard).', 'ninjafirewall') . '</span></li>
|
253 |
<li>' . __('Set <code>Referrer-Policy</code>:', 'ninjafirewall'). '<span class="description"> ' . __('this HTTP header governs which referrer information, sent in the Referer header, should be included with requests made.', 'ninjafirewall') . '</span></li>
|
@@ -289,7 +352,7 @@ function help_nfsubfileguard() {
|
|
289 |
__('If a hacker uploaded a shell script to your site (or injected a backdoor into an already existing file) and tried to directly access that file using his browser or a script, NinjaFirewall would hook the HTTP request and immediately detect that the file was recently modified/created. It would send you a detailed alert (script name, IP, request, date and time). Alerts will be sent to the contact email address defined in the "Event Notifications" menu.', 'ninjafirewall') .
|
290 |
'<p>' . __('If you do not want to monitor a folder, you can exclude its full path or a part of it (e.g., <code>/var/www/public_html/cache/</code> or <code>/cache/</code> etc). NinjaFirewall will compare this value to the <code>$_SERVER["SCRIPT_FILENAME"]</code> server variable and, if it matches, will ignore it.', 'ninjafirewall') . '</p>' .
|
291 |
__('Multiple values must be comma-separated (e.g., <code>/foo/bar/,/cache/</code>).', 'ninjafirewall') .'</li>' .
|
292 |
-
'<p><
|
293 |
) );
|
294 |
}
|
295 |
/* ------------------------------------------------------------------ */ // i18n+
|
@@ -334,7 +397,7 @@ function help_nfsubfilecheck() {
|
|
334 |
'<br />'.
|
335 |
__('Reports will be sent to the contact email address defined in the "Event Notifications" menu.', 'ninjafirewall'). '</p>'.
|
336 |
|
337 |
-
'<p><
|
338 |
) );
|
339 |
|
340 |
}
|
@@ -407,7 +470,7 @@ function help_nfsublogin() {
|
|
407 |
__('Sample loglines:', 'ninjafirewall') .
|
408 |
'<br />
|
409 |
<textarea class="small-text code" style="width:100%;height:80px;" wrap="off">Aug 31 01:40:35 www ninjafirewall[6191]: Possible brute-force attack from 172.16.0.1 on mysite.com (wp-login.php). Blocking access for 5mn.'. "\n" . 'Aug 31 01:45:28 www ninjafirewall[6192]: Possible brute-force attack from fe80::6e88:14ff:fe3e:86f0 on blog.domain.com (XML-RPC API). Blocking access for 25mn.</textarea>
|
410 |
-
<p><
|
411 |
</div>'
|
412 |
) );
|
413 |
|
@@ -447,7 +510,7 @@ function help_nfsublog() {
|
|
447 |
'<p>'. __('Centralized Logging lets you remotely access the firewall log of all your NinjaFirewall protected websites from one single installation. You do not need any longer to log in to individual servers to analyse your log data.', 'ninjafirewall') . ' ' . sprintf( __('<a href="%s">Consult our blog</a> for more info about it.', 'ninjafirewall'), 'https://blog.nintechnet.com/centralized-logging-with-ninjafirewall/' ) . '</p>' .
|
448 |
'<li>' . __('Enter your public key (optional): This is the public key that was created from your main server.', 'ninjafirewall') . '</li>' .
|
449 |
|
450 |
-
'<p><
|
451 |
__('Centralized Logging will keep working even if NinjaFirewall is disabled. Delete your public key below if you want to disable it.', 'ninjafirewall') .
|
452 |
'</span></p>'
|
453 |
) );
|
@@ -479,7 +542,7 @@ function help_nfsublivelog() {
|
|
479 |
|
480 |
<p>' . __('Live Log does not make use of any WordPress core file (e.g., <code>admin-ajax.php</code>). It communicates directly with the firewall without loading WordPress bootstrap. Consequently, it is fast, lightweight and it should not affect your server load, even if you set its refresh rate to the lowest value.', 'ninjafirewall') . '</p>
|
481 |
|
482 |
-
<p><
|
483 |
</span></p>'
|
484 |
) );
|
485 |
get_current_screen()->add_help_tab( array(
|
@@ -521,7 +584,7 @@ function help_nfsubedit() {
|
|
521 |
'id' => 'editor02',
|
522 |
'title' => __('Credits', 'ninjafirewall'),
|
523 |
'content' =>
|
524 |
-
'<p>' . __('NinjaFirewall security rules protect against many vulnerabilities. Some of them were reported by the following companies, individuals or mailing lists:', 'ninjafirewall') . '
|
525 |
<table cellpadding="2" cellspacing="3">
|
526 |
<tr>
|
527 |
<th scope="row" style="text-align:left">g0blin Research</th><td>https://g0blin.co.uk/</td>
|
@@ -559,8 +622,7 @@ function help_nfsubedit() {
|
|
559 |
<tr>
|
560 |
<th scope="row" style="text-align:left">WordPress Hütte</th><td>http://wphutte.com/</td>
|
561 |
</tr>
|
562 |
-
</table>
|
563 |
-
</span>'
|
564 |
) );
|
565 |
|
566 |
}
|
35 |
get_current_screen()->add_help_tab( array(
|
36 |
'id' => 'main01',
|
37 |
'title' => __('Overview', 'ninjafirewall'),
|
38 |
+
'content' =>
|
39 |
+
'<div style="height:400px;">' .
|
40 |
+
'<br />' .
|
41 |
+
'<strong>'. __('Quick Start, FAQ, Support and Troubleshooting Guide.', 'ninjafirewall') .'</strong>'.
|
42 |
+
'<p>'. __('Below are some helpful info and links you may consider reading before using NinjaFirewall:', 'ninjafirewall') .'</p>'.
|
43 |
+
|
44 |
+
'1. '. __('Must Read', 'ninjafirewall') .
|
45 |
+
'<ul>'.
|
46 |
+
'<li><a href="https://blog.nintechnet.com/securing-wordpress-with-a-web-application-firewall-ninjafirewall/" target="_blank">'. __('Securing WordPress with NinjaFirewall: A step by step tutorial.', 'ninjafirewall') .'</a></li>'.
|
47 |
+
'<li><a href="https://blog.nintechnet.com/introduction-to-ninjafirewall-filtering-engine/" target="_blank">'. __('An introduction to NinjaFirewall filtering engine.', 'ninjafirewall') .'</a></li>'.
|
48 |
+
'<li><a href="https://blog.nintechnet.com/full_waf-vs-wordpress_waf/" target="_blank">'. __('NinjaFirewall Full WAF vs WordPress WAF mode.', 'ninjafirewall') .'</a></li>'.
|
49 |
+
'<li><a href="https://blog.nintechnet.com/testing-ninjafirewall-without-blocking-your-visitors/" target="_blank">'. __('Testing NinjaFirewall without blocking your visitors.', 'ninjafirewall') .'</a></li>'.
|
50 |
+
'<li><a href="https://nintechnet.com/ninjafirewall/wp-edition/help/?htninja" target="_blank">'. __('Add your own code to the firewall: the ".htninja" file.', 'ninjafirewall') .'</a></li>'.
|
51 |
+
'<li><a href="https://blog.nintechnet.com/restricting-access-to-ninjafirewall-wp-edition-settings/" target="_blank">'. __('Restricting access to NinjaFirewall settings.', 'ninjafirewall') .'</a></li>'.
|
52 |
+
'<li><a href="https://blog.nintechnet.com/upgrading-to-php-7-with-ninjafirewall-installed/" target="_blank">'. __('Upgrading to PHP 7 with NinjaFirewall installed.', 'ninjafirewall') .'</a></li>'.
|
53 |
+
'<li><a href="https://blog.nintechnet.com/ninjafirewall-wpwp-introduces-automatic-updates-for-security-rules" target="_blank">'. __('Keep your blog protected against the latest vulnerabilities.', 'ninjafirewall') .'</a></li>'.
|
54 |
+
'<li><a href="https://webscanner.nintechnet.com/" target="_blank">'. __('Test your website security with our online scanner.', 'ninjafirewall') .'</a></li>'.
|
55 |
+
'<li><a href="https://nintechnet.com/referral/" target="_blank">'. __('NinjaFirewall Referral Program.', 'ninjafirewall') .'</a></li>'.
|
56 |
+
'<li><a href="https://twitter.com/nintechnet" target="_blank">'. __('Stay informed about the latest vulnerabilities in WordPress plugins and themes.', 'ninjafirewall') .'</a></li>'.
|
57 |
+
'<li><a href="https://blog.nintechnet.com/" target="_blank">'. __('Our blog.', 'ninjafirewall') .'</a></li>'.
|
58 |
+
'</ul>'.
|
59 |
+
|
60 |
+
'2. '. __('Troubleshooting', 'ninjafirewall') .
|
61 |
+
'<ul>'.
|
62 |
+
'<li>'. __('Locked out of your site / Fatal error / WordPress crash?', 'ninjafirewall') .'</li>'.
|
63 |
+
'<li>'. __('Failed installation ("Error: The firewall is not loaded")?', 'ninjafirewall') .'</li>'.
|
64 |
+
'<li>'. __('Blank page after INSTALLING NinjaFirewall?', 'ninjafirewall') .'</li>'.
|
65 |
+
'<li>'. __('Blank page after UNINSTALLING NinjaFirewall?', 'ninjafirewall') .'</li>'.
|
66 |
+
'<li>'. __('500 Internal Server Error?', 'ninjafirewall') .'</li>'.
|
67 |
+
'<li>'. __('"Cannot connect to WordPress database" error message?', 'ninjafirewall') .'</li>'.
|
68 |
+
'<li>'. __('How to disable NinjaFirewall?', 'ninjafirewall') .'</li>'.
|
69 |
+
'<li>'. __('Lost password (brute-force protection)?', 'ninjafirewall') .'</li>'.
|
70 |
+
'<li>'. __('Blocked visitors?', 'ninjafirewall') .'</li>'.
|
71 |
+
'<li>'. __('Exporting NinjaFirewall\'s configuration', 'ninjafirewall') .'</li>'.
|
72 |
+
'<li><a href="https://nintechnet.com/ninjafirewall/wp-edition/help/?troubleshooting">'. __('Click here.', 'ninjafirewall' ) .'</a></li>'.
|
73 |
+
'</ul>'.
|
74 |
+
|
75 |
+
'3. '. __('NinjaFirewall troubleshooter script', 'ninjafirewall') .
|
76 |
+
'<ul>'.
|
77 |
+
'<li><a href="https://nintechnet.com/share/wp-check.txt" target="_blank">'. __('Click to download.', 'ninjafirewall') .'</a></li>'.
|
78 |
+
'<li>'. __('Rename this file to "wp-check.php".', 'ninjafirewall') .'</li>'.
|
79 |
+
'<li>'. __('Upload it into your WordPress root folder.', 'ninjafirewall') .'</li>'.
|
80 |
+
'<li>'. __('Goto http://YOUR WEBSITE/wp-check.php.', 'ninjafirewall') .'</li>'.
|
81 |
+
'<li>'. __('Delete it afterwards.', 'ninjafirewall') .'</li>'.
|
82 |
+
'</ul>'.
|
83 |
+
|
84 |
+
'4. '. __('FAQ', 'ninjafirewall') .
|
85 |
+
'<ul>'.
|
86 |
+
'<li>'. __('Why is NinjaFirewall different from other security plugins for WordPress?', 'ninjafirewall') .'</li>'.
|
87 |
+
'<li>'. __('Do I need root privileges to install NinjaFirewall?', 'ninjafirewall') .'</li>'.
|
88 |
+
'<li>'. __('Does it work with Nginx?', 'ninjafirewall') .'</li>'.
|
89 |
+
'<li>'. __('Do I need to alter my PHP scripts?', 'ninjafirewall') .'</li>'.
|
90 |
+
'<li>'. __('Will NinjaFirewall detect the correct IP of my visitors if I am behind a CDN service like Cloudflare or Incapsula?', 'ninjafirewall') .'</li>'.
|
91 |
+
'<li>'. __('I moved my wp-config.php file to another directory. Will it work with NinjaFirewall?', 'ninjafirewall') .'</li>'.
|
92 |
+
'<li>'. __('Will it slow down my site?', 'ninjafirewall') .'</li>'.
|
93 |
+
'<li>'. __('Is there a Microsoft Windows version?', 'ninjafirewall') .'</li>'.
|
94 |
+
'<li>'. __('Can I add/write my own security rules?', 'ninjafirewall') .'</li>'.
|
95 |
+
'<li>'. __('Can I migrate my site(s) with NinjaFirewall installed?', 'ninjafirewall') .'</li>'.
|
96 |
+
'<li><a href="https://nintechnet.com/ninjafirewall/wp-edition/help/?faq">'. __('Click here.', 'ninjafirewall' ) .'</a></li>'.
|
97 |
+
'</ul>'.
|
98 |
+
|
99 |
+
'5. '. __('Help and Support', 'ninjafirewall') .
|
100 |
+
'<ul>'.
|
101 |
+
'<li>'. __('WordPress forum: ', 'ninjafirewall') .'<a href="https://wordpress.org/support/plugin/ninjafirewall/">https://wordpress.org/support/plugin/ninjafirewall/</a></li>'.
|
102 |
+
'<li>'. __('Online support (Premium customers only): ', 'ninjafirewall') .'<a href="https://nintechnet.com/helpdesk/">https://nintechnet.com/helpdesk/</a></li>'.
|
103 |
+
'</ul>'.
|
104 |
+
|
105 |
+
'<br /> '.
|
106 |
+
|
107 |
+
'</div>'
|
108 |
) );
|
109 |
get_current_screen()->set_help_sidebar(
|
110 |
'<p><strong>' . __( 'For more information:', 'ninjafirewall') . '</strong></p>' .
|
111 |
+
'<p>'. __('NinTechNet\'s updates and security announcements:', 'ninjafirewall') . '<br /><a href="https://twitter.com/nintechnet"><img border="0" src="' . plugins_url( '/images/twitter_ntn.png', __DIR__ ) . '" width="116" height="28"></a></p>'
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
);
|
113 |
|
114 |
}
|
177 |
'title' => __('Export/import configuration', 'ninjafirewall'),
|
178 |
'content' => '<br />' .
|
179 |
sprintf( __('This options lets you export you current configuration or import it from another NinjaFirewall (WP Edition) installation. The imported file must match the major version of your current version (%s) otherwise it will be rejected. Note that importing will override all firewall rules and options.', 'ninjafirewall'), (int) $major_current .'.x' ) .
|
180 |
+
'<p><span class="dashicons dashicons-warning nfw-warning"></span> <span class="description">' .
|
181 |
__('"File Check" configuration will not be exported/imported.', 'ninjafirewall') . '</span></p>'
|
182 |
) );
|
183 |
|
224 |
__('This action will be performed when the filtering process is over, right before NinjaFirewall forwards the request to your PHP script.', 'ninjafirewall') . '
|
225 |
<br />
|
226 |
<br />
|
227 |
+
<span class="dashicons dashicons-warning nfw-warning"></span> <span class="description">'. __('If you enabled <code>POST</code> requests sanitising, articles and messages posted by your visitors could be corrupted with excessive backslashes or substitution characters.', 'ninjafirewall'). '</span></li>'
|
228 |
) );
|
229 |
get_current_screen()->add_help_tab( array(
|
230 |
'id' => 'policies04',
|
254 |
<li>' . __('Force SSL for admin and logins <code>FORCE_SSL_ADMIN</code>:', 'ninjafirewall'). '<span class="description"> ' . __('enable this option when you want to secure logins and the admin area so that both passwords and cookies are never sent in the clear. Ensure that you can access your admin console from HTTPS before enabling this option, otherwise you will lock yourself out of your site!', 'ninjafirewall'). '</span></li>
|
255 |
<li>' . __('Disable the plugin and theme editor <code>DISALLOW_FILE_EDIT</code>:', 'ninjafirewall'). '<span class="description"> ' . __('disabling the plugin and theme editor provides an additional layer of security if a hacker gains access to a well-privileged user account.', 'ninjafirewall'). '</span></li>
|
256 |
<li>' . __('Disable plugin and theme update/installation <code>DISALLOW_FILE_MODS</code>:', 'ninjafirewall'). '<span class="description"> ' . __('this option will block users being able to use the plugin and theme installation/update functionality from the WordPress admin area. Setting this constant also disables the Plugin and Theme editor.', 'ninjafirewall'). '</span></li>
|
257 |
+
<li>' . __('Disable the fatal error handler <code>WP_DISABLE_FATAL_ERROR_HANDLER</code>:', 'ninjafirewall'). '<span class="description"> ' . __('this option will disable the WSOD protection introduced in WordPress 5.1.', 'ninjafirewall'). '</span></li>
|
258 |
|
259 |
<br />
|
260 |
|
307 |
<br />' .
|
308 |
__('Since v3.1.3, WordPress sets this value to <code>SAMEORIGIN</code> for the administrator and the login page only.', 'ninjafirewall'). '</li>
|
309 |
<li>' . __('Set <code>X-XSS-Protection</code> (IE/Edge, Chrome, Opera and Safari browsers):', 'ninjafirewall'). '<span class="description"> ' . __('this header allows browsers to identify and block XSS attacks by preventing malicious scripts from executing. It is enabled by default on all compatible browsers.', 'ninjafirewall'). '</span></li>'.
|
310 |
+
'<p><span class="dashicons dashicons-warning nfw-warning"></span> <span class="description">' . __("If a visitor disabled their browser's XSS filter, you cannot re-enable it with that option.", 'ninjafirewall'). '</span></p>'.
|
311 |
|
312 |
'<li>' . __('Force <code>HttpOnly</code> flag on all cookies to mitigate XSS attacks:', 'ninjafirewall'). '<span class="description"> ' . __('adding this flag to cookies helps to mitigate the risk of cross-site scripting by preventing them from being accessed through client-side scripts. NinjaFirewall can hook all cookies sent by your blog, its plugins or any other PHP script, add the <code>HttpOnly</code> flag if it is missing, and re-inject those cookies back into your server HTTP response headers right before they are sent to your visitors. Note that WordPress sets that flag on the logged in user cookies only.', 'ninjafirewall'). '</span></li>
|
313 |
+
<p><span class="dashicons dashicons-warning nfw-warning"></span> <span class="description">' . __('If your PHP scripts send cookies that need to be accessed from JavaScript, you should keep that option disabled.', 'ninjafirewall'). '</span></p>
|
314 |
<li>' . __('Set <code>Strict-Transport-Security</code> (HSTS) to enforce secure connections to the server:', 'ninjafirewall'). '<span class="description"> ' . __('this policy enforces secure HTTPS connections to the server. Web browsers will not allow the user to access the web application over insecure HTTP protocol. It helps to defend against cookie hijacking and Man-in-the-middle attacks. Most recent browsers support HSTS headers.', 'ninjafirewall'). '</span></li>
|
315 |
<li>' . __('Set <code>Content-Security-Policy</code>:', 'ninjafirewall'). '<span class="description"> ' . __('this policy helps to mitigate threats such as XSS, phishing and clickjacking attacks. It covers JavaScript, CSS, HTML frames, web workers, fonts, images, objects (Java, ActiveX, audio and video files), and other HTML5 features.', 'ninjafirewall'). ' ' . __('NinjaFirewall lets you configure the CSP policy separately for the frontend (blog, website) and the backend (WordPress admin dashboard).', 'ninjafirewall') . '</span></li>
|
316 |
<li>' . __('Set <code>Referrer-Policy</code>:', 'ninjafirewall'). '<span class="description"> ' . __('this HTTP header governs which referrer information, sent in the Referer header, should be included with requests made.', 'ninjafirewall') . '</span></li>
|
352 |
__('If a hacker uploaded a shell script to your site (or injected a backdoor into an already existing file) and tried to directly access that file using his browser or a script, NinjaFirewall would hook the HTTP request and immediately detect that the file was recently modified/created. It would send you a detailed alert (script name, IP, request, date and time). Alerts will be sent to the contact email address defined in the "Event Notifications" menu.', 'ninjafirewall') .
|
353 |
'<p>' . __('If you do not want to monitor a folder, you can exclude its full path or a part of it (e.g., <code>/var/www/public_html/cache/</code> or <code>/cache/</code> etc). NinjaFirewall will compare this value to the <code>$_SERVER["SCRIPT_FILENAME"]</code> server variable and, if it matches, will ignore it.', 'ninjafirewall') . '</p>' .
|
354 |
__('Multiple values must be comma-separated (e.g., <code>/foo/bar/,/cache/</code>).', 'ninjafirewall') .'</li>' .
|
355 |
+
'<p><span class="dashicons dashicons-warning nfw-warning"></span> <span class="description">' . __('File Guard real-time detection is a totally unique feature, because NinjaFirewall is the only plugin for WordPress that can hook HTTP requests sent to any PHP script, even if that script is not part of the WordPress package (third-party software, shell script, backdoor etc).', 'ninjafirewall') . '</span></p>'
|
356 |
) );
|
357 |
}
|
358 |
/* ------------------------------------------------------------------ */ // i18n+
|
397 |
'<br />'.
|
398 |
__('Reports will be sent to the contact email address defined in the "Event Notifications" menu.', 'ninjafirewall'). '</p>'.
|
399 |
|
400 |
+
'<p><span class="dashicons dashicons-warning nfw-warning"></span> <span class="description">'. sprintf( __('Scheduled scans rely on <a href="%s">WordPress pseudo cron</a> which works only if your site gets sufficient traffic.', 'ninjafirewall'), 'http://codex.wordpress.org/Category:WP-Cron_Functions') . '</span></p>'
|
401 |
) );
|
402 |
|
403 |
}
|
470 |
__('Sample loglines:', 'ninjafirewall') .
|
471 |
'<br />
|
472 |
<textarea class="small-text code" style="width:100%;height:80px;" wrap="off">Aug 31 01:40:35 www ninjafirewall[6191]: Possible brute-force attack from 172.16.0.1 on mysite.com (wp-login.php). Blocking access for 5mn.'. "\n" . 'Aug 31 01:45:28 www ninjafirewall[6192]: Possible brute-force attack from fe80::6e88:14ff:fe3e:86f0 on blog.domain.com (XML-RPC API). Blocking access for 25mn.</textarea>
|
473 |
+
<p><span class="dashicons dashicons-warning nfw-warning"></span> <span class="description">' . sprintf( __('Be careful if you are behind a load balancer, reverse-proxy or CDN because the Login Protection feature will always record the <code>REMOTE_ADDR</code> IP. If you have an application parsing the AUTH log in order to ban IPs (e.g. Fail2ban), you <strong>must</strong> setup your HTTP server to forward the correct IP (or use the <code><a href="%s">.htninja</a></code> file), otherwise you will likely block legitimate users.', 'ninjafirewall'), 'https://nintechnet.com/ninjafirewall/wp-edition/help/?htninja') . '</span></p>
|
474 |
</div>'
|
475 |
) );
|
476 |
|
510 |
'<p>'. __('Centralized Logging lets you remotely access the firewall log of all your NinjaFirewall protected websites from one single installation. You do not need any longer to log in to individual servers to analyse your log data.', 'ninjafirewall') . ' ' . sprintf( __('<a href="%s">Consult our blog</a> for more info about it.', 'ninjafirewall'), 'https://blog.nintechnet.com/centralized-logging-with-ninjafirewall/' ) . '</p>' .
|
511 |
'<li>' . __('Enter your public key (optional): This is the public key that was created from your main server.', 'ninjafirewall') . '</li>' .
|
512 |
|
513 |
+
'<p><span class="dashicons dashicons-warning nfw-warning"></span> <span class="description">'.
|
514 |
__('Centralized Logging will keep working even if NinjaFirewall is disabled. Delete your public key below if you want to disable it.', 'ninjafirewall') .
|
515 |
'</span></p>'
|
516 |
) );
|
542 |
|
543 |
<p>' . __('Live Log does not make use of any WordPress core file (e.g., <code>admin-ajax.php</code>). It communicates directly with the firewall without loading WordPress bootstrap. Consequently, it is fast, lightweight and it should not affect your server load, even if you set its refresh rate to the lowest value.', 'ninjafirewall') . '</p>
|
544 |
|
545 |
+
<p><span class="dashicons dashicons-warning nfw-warning"></span> <span class="description">' . __('If you are using the optional <code>.htninja</code> configuration file to whitelist your IP, the Live Log feature will not work.', 'ninjafirewall') . '
|
546 |
</span></p>'
|
547 |
) );
|
548 |
get_current_screen()->add_help_tab( array(
|
584 |
'id' => 'editor02',
|
585 |
'title' => __('Credits', 'ninjafirewall'),
|
586 |
'content' =>
|
587 |
+
'<p>' . __('NinjaFirewall security rules protect against many vulnerabilities. Some of them were reported by the following companies, individuals or mailing lists:', 'ninjafirewall') . '</p>
|
588 |
<table cellpadding="2" cellspacing="3">
|
589 |
<tr>
|
590 |
<th scope="row" style="text-align:left">g0blin Research</th><td>https://g0blin.co.uk/</td>
|
622 |
<tr>
|
623 |
<th scope="row" style="text-align:left">WordPress Hütte</th><td>http://wphutte.com/</td>
|
624 |
</tr>
|
625 |
+
</table>'
|
|
|
626 |
) );
|
627 |
|
628 |
}
|
lib/init_update.php
CHANGED
@@ -123,6 +123,14 @@ if (! empty($nfw_options['engine_version']) && version_compare($nfw_options['eng
|
|
123 |
}
|
124 |
@rmdir( $update_dir );
|
125 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
126 |
// -------------------------------------------------------------
|
127 |
// All versions:
|
128 |
// Old upgrades from 1.3.x to 1.4 didn't initialize the security
|
@@ -146,6 +154,8 @@ if (! empty($nfw_options['engine_version']) && version_compare($nfw_options['eng
|
|
146 |
// Update options:
|
147 |
nfw_update_option( 'nfw_options', $nfw_options);
|
148 |
}
|
|
|
|
|
149 |
}
|
150 |
|
151 |
// ---------------------------------------------------------------------
|
123 |
}
|
124 |
@rmdir( $update_dir );
|
125 |
}
|
126 |
+
// v4.0 update ---------------------------------------------------
|
127 |
+
if ( version_compare( $nfw_options['engine_version'], '3.9.2', '<' ) ) {
|
128 |
+
if ( empty( $nfw_options['allow_local_ip'] ) ) {
|
129 |
+
$nfw_options['allow_local_ip'] = 1;
|
130 |
+
} else {
|
131 |
+
$nfw_options['allow_local_ip'] = 0;
|
132 |
+
}
|
133 |
+
}
|
134 |
// -------------------------------------------------------------
|
135 |
// All versions:
|
136 |
// Old upgrades from 1.3.x to 1.4 didn't initialize the security
|
154 |
// Update options:
|
155 |
nfw_update_option( 'nfw_options', $nfw_options);
|
156 |
}
|
157 |
+
|
158 |
+
// ------------------------------------------------------------------
|
159 |
}
|
160 |
|
161 |
// ---------------------------------------------------------------------
|
lib/install.php
ADDED
@@ -0,0 +1,296 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
+---------------------------------------------------------------------+
|
4 |
+
| NinjaFirewall (WP Edition) |
|
5 |
+
| |
|
6 |
+
| (c) NinTechNet - https://nintechnet.com/ |
|
7 |
+
+---------------------------------------------------------------------+
|
8 |
+
| This program is free software: you can redistribute it and/or |
|
9 |
+
| modify it under the terms of the GNU General Public License as |
|
10 |
+
| published by the Free Software Foundation, either version 3 of |
|
11 |
+
| the License, or (at your option) any later version. |
|
12 |
+
| |
|
13 |
+
| This program is distributed in the hope that it will be useful, |
|
14 |
+
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
+
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
+
| GNU General Public License for more details. |
|
17 |
+
+---------------------------------------------------------------------+ i18n+ / sa
|
18 |
+
*/
|
19 |
+
|
20 |
+
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
21 |
+
|
22 |
+
// ---------------------------------------------------------------------
|
23 |
+
// Installation constants.
|
24 |
+
|
25 |
+
function nfw_get_constants() {
|
26 |
+
|
27 |
+
if ( defined('NFW_HTACCESS_BEGIN') ) { return; }
|
28 |
+
|
29 |
+
define( 'NFW_HTACCESS_BEGIN', '# BEGIN NinjaFirewall' );
|
30 |
+
define( 'NFW_HTACCESS_DATA', '<IfModule mod_php'. PHP_MAJOR_VERSION .'.c>' ."\n" .
|
31 |
+
' php_value auto_prepend_file '. NFW_LOG_DIR .'/nfwlog/ninjafirewall.php' ."\n" .
|
32 |
+
'</IfModule>');
|
33 |
+
define( 'NFW_LITESPEED_DATA', 'php_value auto_prepend_file '. NFW_LOG_DIR .'/nfwlog/ninjafirewall.php');
|
34 |
+
define( 'NFW_SUPHP_DATA', '<IfModule mod_suphp.c>' ."\n" .
|
35 |
+
' suPHP_ConfigPath '. rtrim( ABSPATH, '/') ."\n" .
|
36 |
+
'</IfModule>');
|
37 |
+
define( 'NFW_HTACCESS_END', '# END NinjaFirewall' );
|
38 |
+
define( 'NFW_PHPINI_BEGIN', '; BEGIN NinjaFirewall' );
|
39 |
+
define( 'NFW_PHPINI_DATA', 'auto_prepend_file = '. NFW_LOG_DIR .'/nfwlog/ninjafirewall.php' );
|
40 |
+
define( 'NFW_PHPINI_END', '; END NinjaFirewall' );
|
41 |
+
|
42 |
+
// WordPress WAF in NinjaFirewall < 4.0
|
43 |
+
define( 'NFW_WP_CONFIG_BEGIN', '// BEGIN NinjaFirewall' );
|
44 |
+
define( 'NFW_WP_CONFIG_END', '// END NinjaFirewall' );
|
45 |
+
}
|
46 |
+
|
47 |
+
// ---------------------------------------------------------------------
|
48 |
+
// Add firewall's directive to the .htaccess.
|
49 |
+
|
50 |
+
function nfw_fullwaf_htaccess( $httpserver ) {
|
51 |
+
|
52 |
+
nfw_get_constants();
|
53 |
+
|
54 |
+
$htaccess_content = '';
|
55 |
+
|
56 |
+
// Back-up existing .htaccess
|
57 |
+
if ( file_exists( ABSPATH .'.htaccess' ) ) {
|
58 |
+
if (! is_writable( ABSPATH .'.htaccess' ) ) {
|
59 |
+
return sprintf(
|
60 |
+
__('Error: Your .htaccess file is not writable, please change its permissions: %s', 'ninjafirewall' ),
|
61 |
+
htmlspecialchars( ABSPATH .'.htaccess' )
|
62 |
+
);
|
63 |
+
}
|
64 |
+
$backup_file = time();
|
65 |
+
@copy( ABSPATH .'.htaccess', ABSPATH .".htaccess.ninja{$backup_file}" );
|
66 |
+
|
67 |
+
// Remove potential NF directives
|
68 |
+
nfw_remove_directives();
|
69 |
+
|
70 |
+
$htaccess_content = file_get_contents( ABSPATH .'.htaccess' );
|
71 |
+
}
|
72 |
+
|
73 |
+
// Write new content depending on HTTP server type
|
74 |
+
|
75 |
+
if ( $httpserver == 1 ) { // Apache mod_php
|
76 |
+
$data = NFW_HTACCESS_BEGIN ."\n". NFW_HTACCESS_DATA ."\n". NFW_HTACCESS_END ."\n\n". $htaccess_content;
|
77 |
+
|
78 |
+
} elseif ( $httpserver == 5 ) { // LiteSpeed
|
79 |
+
$data = NFW_HTACCESS_BEGIN ."\n". NFW_LITESPEED_DATA ."\n". NFW_HTACCESS_END ."\n\n". $htaccess_content;
|
80 |
+
|
81 |
+
} elseif ( $httpserver == 3 ) { // Apache + suPHP
|
82 |
+
$data = NFW_HTACCESS_BEGIN ."\n". NFW_SUPHP_DATA ."\n". NFW_HTACCESS_END ."\n\n". $htaccess_content;
|
83 |
+
|
84 |
+
} else {
|
85 |
+
return sprintf( __('Error: wrong parameter value (%s).', 'ninjafirewall'), 'HTTP server' );
|
86 |
+
}
|
87 |
+
|
88 |
+
// Write content
|
89 |
+
$res = @file_put_contents( ABSPATH .'.htaccess', $data, LOCK_EX );
|
90 |
+
if ( $res === false ) {
|
91 |
+
return sprintf(
|
92 |
+
__('Error: The following file is not writable, please change its permissions: %s', 'ninjafirewall' ),
|
93 |
+
htmlspecialchars( ABSPATH .'.htaccess' )
|
94 |
+
);
|
95 |
+
}
|
96 |
+
|
97 |
+
// Sandbox
|
98 |
+
$res = nfw_waf_sandbox();
|
99 |
+
if ( $res !== true ) {
|
100 |
+
// Undo
|
101 |
+
@file_put_contents( ABSPATH .'.htaccess', $htaccess_content, LOCK_EX );
|
102 |
+
return $res;
|
103 |
+
}
|
104 |
+
|
105 |
+
return true;
|
106 |
+
}
|
107 |
+
|
108 |
+
// ---------------------------------------------------------------------
|
109 |
+
// Sandbox.
|
110 |
+
|
111 |
+
function nfw_waf_sandbox() {
|
112 |
+
|
113 |
+
@session_write_close();
|
114 |
+
|
115 |
+
$sandbox_error = __('NinjaFirewall detected that the requested changes seemed to crash your blog. %s', 'ninjafirewall') ."\n".
|
116 |
+
__('Changes have been undone. You may need to modify your selection and try again.', 'ninjafirewall' );
|
117 |
+
$headers['Cache-Control'] = 'no-cache';
|
118 |
+
$url = home_url( '/' ) .'?'. time();
|
119 |
+
$res = wp_remote_get( $url );
|
120 |
+
if (! is_wp_error( $res ) ) {
|
121 |
+
// Look for HTTP error
|
122 |
+
if ( $res['response']['code'] >= 400 ) {
|
123 |
+
$error_msg = sprintf(
|
124 |
+
$sandbox_error,
|
125 |
+
sprintf(
|
126 |
+
__('The website front-end returned: HTTP %s %s.', 'ninjafirewall'),
|
127 |
+
(int) $res['response']['code'],
|
128 |
+
esc_js( $res['response']['message'] )
|
129 |
+
)
|
130 |
+
);
|
131 |
+
return $error_msg;
|
132 |
+
}
|
133 |
+
|
134 |
+
} else {
|
135 |
+
$error_msg = sprintf(
|
136 |
+
$sandbox_error,
|
137 |
+
sprintf(
|
138 |
+
__('The website front-end returned a fatal error: %s.', 'ninjafirewall'),
|
139 |
+
esc_js( $res->get_error_message() )
|
140 |
+
)
|
141 |
+
);
|
142 |
+
return $error_msg;
|
143 |
+
}
|
144 |
+
|
145 |
+
return true;
|
146 |
+
}
|
147 |
+
|
148 |
+
// ---------------------------------------------------------------------
|
149 |
+
|
150 |
+
function nfw_fullwaf_ini( $httpserver, $initype ) {
|
151 |
+
|
152 |
+
nfw_get_constants();
|
153 |
+
|
154 |
+
$ini_content = '';
|
155 |
+
|
156 |
+
// [1] .user.ini
|
157 |
+
// [2] php.ini
|
158 |
+
if ( $initype == 2 ) {
|
159 |
+
$initype = 'php.ini';
|
160 |
+
} else {
|
161 |
+
$initype = '.user.ini';
|
162 |
+
}
|
163 |
+
|
164 |
+
// Back-up existing INI file
|
165 |
+
if ( file_exists( ABSPATH . $initype ) ) {
|
166 |
+
if (! is_writable( ABSPATH . $initype ) ) {
|
167 |
+
return sprintf(
|
168 |
+
__('Error: The following file is not writable, please change its permissions: %s', 'ninjafirewall' ),
|
169 |
+
htmlspecialchars( ABSPATH . $initype )
|
170 |
+
);
|
171 |
+
}
|
172 |
+
$backup_file = time();
|
173 |
+
@copy( ABSPATH .$initype, ABSPATH ."{$initype}.ninja{$backup_file}" );
|
174 |
+
|
175 |
+
// Remove potential NF directives
|
176 |
+
nfw_remove_directives();
|
177 |
+
|
178 |
+
$ini_content = file_get_contents( ABSPATH . $initype );
|
179 |
+
}
|
180 |
+
|
181 |
+
// Write new content
|
182 |
+
$res = @file_put_contents(
|
183 |
+
ABSPATH . $initype,
|
184 |
+
NFW_PHPINI_BEGIN . "\n" . NFW_PHPINI_DATA . "\n" . NFW_PHPINI_END . "\n\n" . $ini_content,
|
185 |
+
LOCK_EX
|
186 |
+
);
|
187 |
+
if ( $res === false ) {
|
188 |
+
return sprintf(
|
189 |
+
__('Error: The following file is not writable, please change its permissions: %s', 'ninjafirewall' ),
|
190 |
+
htmlspecialchars( ABSPATH . $initype )
|
191 |
+
);
|
192 |
+
}
|
193 |
+
return true;
|
194 |
+
}
|
195 |
+
|
196 |
+
// ---------------------------------------------------------------------
|
197 |
+
// Remove all directives from .htaccess, INI files and wp-config.php.
|
198 |
+
|
199 |
+
function nfw_remove_directives( $ini = true, $htaccess = true, $wp_config = true ) {
|
200 |
+
|
201 |
+
if ( defined('NFW_REMOVED_DIRECTIVES') ) { return; }
|
202 |
+
|
203 |
+
define('NFW_REMOVED_DIRECTIVES', true);
|
204 |
+
|
205 |
+
$res = array( 'ini' => true, 'htaccess' => true, 'wp-config' => true );
|
206 |
+
|
207 |
+
// wp-config.php
|
208 |
+
if ( $wp_config == true ) {
|
209 |
+
$wp_config = ABSPATH .'wp-config.php';
|
210 |
+
if ( file_exists( $wp_config ) ) {
|
211 |
+
if ( is_writable( $wp_config ) ) {
|
212 |
+
$wp_config_content = file_get_contents( $wp_config );
|
213 |
+
if ( preg_match( '`'. NFW_WP_CONFIG_BEGIN .'.+?'. NFW_WP_CONFIG_END .'`s', $wp_config_content ) ) {
|
214 |
+
$wp_config_content = preg_replace( '`\s?'. NFW_WP_CONFIG_BEGIN .'.+?'. NFW_WP_CONFIG_END .'[^\r\n]*\s?`s' , "\n", $wp_config_content);
|
215 |
+
file_put_contents( $wp_config, $wp_config_content, LOCK_EX );
|
216 |
+
}
|
217 |
+
} else {
|
218 |
+
$res['wp-config'] = __('File is not writable', 'ninjafirewall');
|
219 |
+
}
|
220 |
+
}
|
221 |
+
}
|
222 |
+
|
223 |
+
// .htaccess
|
224 |
+
if ( $htaccess == true ) {
|
225 |
+
$htaccess = ABSPATH .'.htaccess';
|
226 |
+
$mods = 0;
|
227 |
+
if ( file_exists( $htaccess ) ) {
|
228 |
+
if ( is_writable( $htaccess ) ) {
|
229 |
+
$htaccess_content = file_get_contents( $htaccess );
|
230 |
+
if ( preg_match( '`'. NFW_HTACCESS_BEGIN .'.+?'. NFW_HTACCESS_END .'`s', $htaccess_content ) ) {
|
231 |
+
$htaccess_content = preg_replace( '`\s?'. NFW_HTACCESS_BEGIN .'.+?'. NFW_HTACCESS_END .'[^\r\n]*\s?`s' , "\n", $htaccess_content);
|
232 |
+
$mods = 1;
|
233 |
+
}
|
234 |
+
// Comment out existing directive(s) left:
|
235 |
+
if ( preg_match( '`[^#]php_value\s*auto_prepend_file`', $htaccess_content ) ) {
|
236 |
+
$htaccess_content = preg_replace( '`php_value\s*auto_prepend_file`' , '#php_value auto_prepend_file', $htaccess_content);
|
237 |
+
$mods = 1;
|
238 |
+
}
|
239 |
+
if ( $mods == 1 ) {
|
240 |
+
@file_put_contents( $htaccess, $htaccess_content, LOCK_EX );
|
241 |
+
}
|
242 |
+
} else {
|
243 |
+
$res['htaccess'] = __('File is not writable', 'ninjafirewall');
|
244 |
+
}
|
245 |
+
}
|
246 |
+
}
|
247 |
+
|
248 |
+
// .ini
|
249 |
+
if ( $ini == true ) {
|
250 |
+
$ini = ABSPATH .'php.ini';
|
251 |
+
$mods = 0;
|
252 |
+
if ( file_exists( $ini ) ) {
|
253 |
+
if ( is_writable( $ini ) ) {
|
254 |
+
$ini_content = file_get_contents( $ini );
|
255 |
+
if ( preg_match( '`'. NFW_PHPINI_BEGIN .'.+?'. NFW_PHPINI_END .'`s', $ini_content ) ) {
|
256 |
+
$ini_content = preg_replace( '`\s?'. NFW_PHPINI_BEGIN .'.+?'. NFW_PHPINI_END .'[^\r\n]*\s?`s' , "\n", $ini_content);
|
257 |
+
$mods = 1;
|
258 |
+
}
|
259 |
+
// Comment out existing directive(s) left:
|
260 |
+
if ( preg_match( '`[^;]auto_prepend_file`', $ini_content ) ) {
|
261 |
+
$ini_content = preg_replace( '`auto_prepend_file`' , ';auto_prepend_file', $ini_content);
|
262 |
+
$mods = 1;
|
263 |
+
}
|
264 |
+
if ( $mods == 1 ) {
|
265 |
+
@file_put_contents( $ini, $ini_content, LOCK_EX );
|
266 |
+
}
|
267 |
+
} else {
|
268 |
+
$res['ini'] = __('File is not writable', 'ninjafirewall');
|
269 |
+
}
|
270 |
+
}
|
271 |
+
$ini = ABSPATH .'.user.ini';
|
272 |
+
$mods = 0;
|
273 |
+
if ( file_exists( $ini ) ) {
|
274 |
+
if ( is_writable( $ini ) ) {
|
275 |
+
$ini_content = file_get_contents( $ini );
|
276 |
+
if ( preg_match( '`'. NFW_PHPINI_BEGIN .'.+?'. NFW_PHPINI_END .'`s', $ini_content ) ) {
|
277 |
+
$ini_content = preg_replace( '`\s?'. NFW_PHPINI_BEGIN .'.+?'. NFW_PHPINI_END .'[^\r\n]*\s?`s' , "\n", $ini_content);
|
278 |
+
$mods = 1;
|
279 |
+
}
|
280 |
+
// Comment out existing directive(s) left:
|
281 |
+
if ( preg_match( '`[^;]auto_prepend_file`', $ini_content ) ) {
|
282 |
+
$ini_content = preg_replace( '`auto_prepend_file`' , ';auto_prepend_file', $ini_content);
|
283 |
+
$mods = 1;
|
284 |
+
}
|
285 |
+
if ( $mods == 1 ) {
|
286 |
+
@file_put_contents( $ini, $ini_content, LOCK_EX );
|
287 |
+
}
|
288 |
+
} else {
|
289 |
+
$res['ini'] = __('File is not writable', 'ninjafirewall');
|
290 |
+
}
|
291 |
+
}
|
292 |
+
}
|
293 |
+
}
|
294 |
+
|
295 |
+
// ---------------------------------------------------------------------
|
296 |
+
// EOF //
|
lib/install_default.php
CHANGED
@@ -19,7 +19,7 @@
|
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
21 |
|
22 |
-
|
23 |
// Load and save default config
|
24 |
|
25 |
function nfw_load_default_conf() {
|
@@ -40,12 +40,6 @@ function nfw_load_default_conf() {
|
|
40 |
wp_clear_scheduled_hook('nfdailyreport');
|
41 |
}
|
42 |
|
43 |
-
if (! empty( $_SESSION['temp_admin_email'] ) ) {
|
44 |
-
$alert_email = $_SESSION['temp_admin_email'];
|
45 |
-
} else {
|
46 |
-
$alert_email = get_option('admin_email');
|
47 |
-
}
|
48 |
-
|
49 |
$nfw_options = array(
|
50 |
// ---------------------------------------------------------------
|
51 |
// The next 6 keys must always be present because they are used
|
@@ -73,7 +67,7 @@ function nfw_load_default_conf() {
|
|
73 |
'referer_sanitise'=> 1,
|
74 |
'referer_post' => 0,
|
75 |
'no_host_ip' => 0,
|
76 |
-
'allow_local_ip' =>
|
77 |
'php_errors' => 1,
|
78 |
'php_self' => 1,
|
79 |
'php_path_t' => 1,
|
@@ -115,7 +109,7 @@ function nfw_load_default_conf() {
|
|
115 |
// v3.8.3 :
|
116 |
'a_61' => 1,
|
117 |
|
118 |
-
'alert_email' =>
|
119 |
// v1.1.0 :
|
120 |
'alert_sa_only' => 1,
|
121 |
'nt_show_status' => 1,
|
@@ -167,22 +161,22 @@ function nfw_load_default_conf() {
|
|
167 |
@nf_sub_updates();
|
168 |
|
169 |
if (! $nfw_rules = @unserialize(NFW_RULES) ) {
|
170 |
-
$err_msg =
|
171 |
$err_msg.= '<ol><li>'. __('The server may be temporarily down or you may have network connectivity problems? Please try again in a few minutes.', 'ninjafirewall') . '</li>';
|
172 |
$err_msg.= '<li>'. __('NinjaFirewall downloads its rules over an HTTPS secure connection. Maybe your server does not support SSL? You can force NinjaFirewall to use a non-secure HTTP connection by adding the following directive to your <strong>wp-config.php</strong> file:', 'ninjafirewall') . '<p><code>define("NFW_DONT_USE_SSL", 1);</code></p></li></ol>';
|
173 |
-
exit(
|
174 |
}
|
175 |
|
176 |
$nfw_options['engine_version'] = NFW_ENGINE_VERSION;
|
177 |
$nfw_options['rules_version'] = NFW_NEWRULES_VERSION; // downloaded rules
|
178 |
|
|
|
179 |
if ( strlen( $_SERVER['DOCUMENT_ROOT'] ) > 5 ) {
|
180 |
$nfw_rules[NFW_DOC_ROOT]['cha'][1]['wha'] = str_replace( '/', '/[./]*', $_SERVER['DOCUMENT_ROOT'] );
|
181 |
} elseif ( strlen( getenv( 'DOCUMENT_ROOT' ) ) > 5 ) {
|
182 |
$nfw_rules[NFW_DOC_ROOT]['cha'][1]['wha'] = str_replace( '/', '/[./]*', getenv( 'DOCUMENT_ROOT' ) );
|
183 |
-
} else {
|
184 |
-
$nfw_rules[NFW_DOC_ROOT]['ena'] = 0;
|
185 |
}
|
|
|
186 |
|
187 |
// Enable PHP object injection rules (since v3.5.3):
|
188 |
$nfw_rules[NFW_OBJECTS]['ena'] = 1;
|
@@ -198,8 +192,73 @@ function nfw_load_default_conf() {
|
|
198 |
wp_schedule_event( time() + 3600, 'hourly', 'nfsecupdates');
|
199 |
wp_schedule_event( time() + 1800, 'hourly', 'nfwgccron' );
|
200 |
|
201 |
-
|
202 |
|
203 |
}
|
204 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
205 |
// EOF //
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
21 |
|
22 |
+
// ---------------------------------------------------------------------
|
23 |
// Load and save default config
|
24 |
|
25 |
function nfw_load_default_conf() {
|
40 |
wp_clear_scheduled_hook('nfdailyreport');
|
41 |
}
|
42 |
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
$nfw_options = array(
|
44 |
// ---------------------------------------------------------------
|
45 |
// The next 6 keys must always be present because they are used
|
67 |
'referer_sanitise'=> 1,
|
68 |
'referer_post' => 0,
|
69 |
'no_host_ip' => 0,
|
70 |
+
'allow_local_ip' => 1, // 1 == no !
|
71 |
'php_errors' => 1,
|
72 |
'php_self' => 1,
|
73 |
'php_path_t' => 1,
|
109 |
// v3.8.3 :
|
110 |
'a_61' => 1,
|
111 |
|
112 |
+
'alert_email' => get_option('admin_email'),
|
113 |
// v1.1.0 :
|
114 |
'alert_sa_only' => 1,
|
115 |
'nt_show_status' => 1,
|
161 |
@nf_sub_updates();
|
162 |
|
163 |
if (! $nfw_rules = @unserialize(NFW_RULES) ) {
|
164 |
+
$err_msg = __('Error: The installer cannot download the security rules from wordpress.org website.', 'ninjafirewall');
|
165 |
$err_msg.= '<ol><li>'. __('The server may be temporarily down or you may have network connectivity problems? Please try again in a few minutes.', 'ninjafirewall') . '</li>';
|
166 |
$err_msg.= '<li>'. __('NinjaFirewall downloads its rules over an HTTPS secure connection. Maybe your server does not support SSL? You can force NinjaFirewall to use a non-secure HTTP connection by adding the following directive to your <strong>wp-config.php</strong> file:', 'ninjafirewall') . '<p><code>define("NFW_DONT_USE_SSL", 1);</code></p></li></ol>';
|
167 |
+
exit( '<font style="font-size:14px;">'. $err_msg .'</font>' );
|
168 |
}
|
169 |
|
170 |
$nfw_options['engine_version'] = NFW_ENGINE_VERSION;
|
171 |
$nfw_options['rules_version'] = NFW_NEWRULES_VERSION; // downloaded rules
|
172 |
|
173 |
+
// Create but disable by default "Block the DOCUMENT_ROOT server variable in HTTP request" rule
|
174 |
if ( strlen( $_SERVER['DOCUMENT_ROOT'] ) > 5 ) {
|
175 |
$nfw_rules[NFW_DOC_ROOT]['cha'][1]['wha'] = str_replace( '/', '/[./]*', $_SERVER['DOCUMENT_ROOT'] );
|
176 |
} elseif ( strlen( getenv( 'DOCUMENT_ROOT' ) ) > 5 ) {
|
177 |
$nfw_rules[NFW_DOC_ROOT]['cha'][1]['wha'] = str_replace( '/', '/[./]*', getenv( 'DOCUMENT_ROOT' ) );
|
|
|
|
|
178 |
}
|
179 |
+
$nfw_rules[NFW_DOC_ROOT]['ena'] = 0;
|
180 |
|
181 |
// Enable PHP object injection rules (since v3.5.3):
|
182 |
$nfw_rules[NFW_OBJECTS]['ena'] = 1;
|
192 |
wp_schedule_event( time() + 3600, 'hourly', 'nfsecupdates');
|
193 |
wp_schedule_event( time() + 1800, 'hourly', 'nfwgccron' );
|
194 |
|
195 |
+
nfw_create_log_dir();
|
196 |
|
197 |
}
|
198 |
+
// ---------------------------------------------------------------------
|
199 |
+
// Create NinjaFirewall's log & cache folders.
|
200 |
+
|
201 |
+
function nfw_create_log_dir() {
|
202 |
+
|
203 |
+
$deny_rules = "<Files \"*\">
|
204 |
+
<IfModule mod_version.c>
|
205 |
+
<IfVersion < 2.4>
|
206 |
+
Order Deny,Allow
|
207 |
+
Deny from All
|
208 |
+
</IfVersion>
|
209 |
+
<IfVersion >= 2.4>
|
210 |
+
Require all denied
|
211 |
+
</IfVersion>
|
212 |
+
</IfModule>
|
213 |
+
<IfModule !mod_version.c>
|
214 |
+
<IfModule !mod_authz_core.c>
|
215 |
+
Order Deny,Allow
|
216 |
+
Deny from All
|
217 |
+
</IfModule>
|
218 |
+
<IfModule mod_authz_core.c>
|
219 |
+
Require all denied
|
220 |
+
</IfModule>
|
221 |
+
</IfModule>
|
222 |
+
</Files>";
|
223 |
+
|
224 |
+
if (! is_writable(NFW_LOG_DIR) ) {
|
225 |
+
$err_msg = sprintf( __('NinjaFirewall cannot create its <code>nfwlog/</code>log and cache folder; please make sure that the <code>%s</code> directory is writable', 'ninjafirewall'), htmlspecialchars( NFW_LOG_DIR ) );
|
226 |
+
exit( '<font style="font-size:14px;">'. $err_msg .'</font>' );
|
227 |
+
}
|
228 |
+
|
229 |
+
if (! file_exists( NFW_LOG_DIR . '/nfwlog' ) ) {
|
230 |
+
mkdir( NFW_LOG_DIR . '/nfwlog', 0755 );
|
231 |
+
}
|
232 |
+
if (! file_exists( NFW_LOG_DIR . '/nfwlog/cache' ) ) {
|
233 |
+
mkdir( NFW_LOG_DIR . '/nfwlog/cache', 0755 );
|
234 |
+
}
|
235 |
+
|
236 |
+
touch( NFW_LOG_DIR . '/nfwlog/index.html' );
|
237 |
+
touch( NFW_LOG_DIR . '/nfwlog/cache/index.html' );
|
238 |
+
@file_put_contents(NFW_LOG_DIR . '/nfwlog/.htaccess', $deny_rules, LOCK_EX);
|
239 |
+
@file_put_contents(NFW_LOG_DIR . '/nfwlog/cache/.htaccess', $deny_rules, LOCK_EX);
|
240 |
+
@file_put_contents(
|
241 |
+
NFW_LOG_DIR . '/nfwlog/readme.txt',
|
242 |
+
"This is NinjaFirewall's logs, loader and cache directory. DO NOT alter or remove it as long as NinjaFirewall is running!\n\nIf you just uninstalled NinjaFirewall, WAIT 5 MINUTES before deleting this folder, otherwise your site will likely crash.",
|
243 |
+
LOCK_EX
|
244 |
+
);
|
245 |
+
|
246 |
+
// Firewall loader:
|
247 |
+
$loader = "<?php
|
248 |
+
// ===============================================================//
|
249 |
+
// NinjaFirewall's loader. //
|
250 |
+
// DO NOT alter or remove it as long as NinjaFirewall is running! //
|
251 |
+
// ===============================================================//
|
252 |
+
if ( file_exists('". __DIR__ .'/firewall.php' . "') ) {
|
253 |
+
@include_once '". __DIR__ .'/firewall.php' . "';
|
254 |
+
}
|
255 |
+
// EOF
|
256 |
+
";
|
257 |
+
file_put_contents( NFW_LOG_DIR .'/nfwlog/ninjafirewall.php', $loader, LOCK_EX );
|
258 |
+
|
259 |
+
return;
|
260 |
+
|
261 |
+
}
|
262 |
+
|
263 |
+
// ---------------------------------------------------------------------
|
264 |
// EOF //
|
lib/install_fullwaf.php
DELETED
@@ -1,648 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
+---------------------------------------------------------------------+
|
4 |
-
| NinjaFirewall (WP Edition) |
|
5 |
-
| |
|
6 |
-
| (c) NinTechNet - https://nintechnet.com/ |
|
7 |
-
+---------------------------------------------------------------------+
|
8 |
-
| This program is free software: you can redistribute it and/or |
|
9 |
-
| modify it under the terms of the GNU General Public License as |
|
10 |
-
| published by the Free Software Foundation, either version 3 of |
|
11 |
-
| the License, or (at your option) any later version. |
|
12 |
-
| |
|
13 |
-
| This program is distributed in the hope that it will be useful, |
|
14 |
-
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
-
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
-
| GNU General Public License for more details. |
|
17 |
-
+---------------------------------------------------------------------+ i18n+ / sa
|
18 |
-
*/
|
19 |
-
|
20 |
-
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
21 |
-
|
22 |
-
/* ------------------------------------------------------------------ */
|
23 |
-
|
24 |
-
function nfw_get_abspath( $err = 0 ) {
|
25 |
-
|
26 |
-
if ( $_SERVER['DOCUMENT_ROOT'] . '/' == ABSPATH ) {
|
27 |
-
$_POST['abspath'] = htmlspecialchars(ABSPATH);
|
28 |
-
nfw_presave();
|
29 |
-
return;
|
30 |
-
}
|
31 |
-
echo '
|
32 |
-
<div class="wrap">
|
33 |
-
<h1><img style="vertical-align:top;width:33px;height:33px;" src="'. plugins_url( '/ninjafirewall/images/ninjafirewall_32.png' ) .'"> ' . __('Firewall Policies', 'ninjafirewall') . '</h1>';
|
34 |
-
if ( $err ) {
|
35 |
-
echo '<div class="error settings-error"><p>' . __('Error:', 'ninjafirewall') .' '. $err . '</p></div>';
|
36 |
-
}
|
37 |
-
echo '
|
38 |
-
<form method="post">
|
39 |
-
<p>' . sprintf(__('Your WordPress directory (%s) is different from your website document root (%s). Because it is possible to install WordPress into a subdirectory, but have the blog exist in the site root, NinjaFirewall needs to know the exact location of the site root.', 'ninjafirewall'), '<code>' . htmlspecialchars(ABSPATH) . '</code>', '<code>' . htmlspecialchars( $_SERVER['DOCUMENT_ROOT'] ) . '/</code>') . '</p>
|
40 |
-
<p>' . sprintf( __('Please edit the path below only if you have manually modified your WordPress root directory as described in the <a href="%s">Giving WordPress Its Own Directory</a> article.', 'ninjafirewall'), 'http://codex.wordpress.org/Giving_WordPress_Its_Own_Directory') .'</p>
|
41 |
-
<p><strong style="color:red">'. __('Most users should not change this value.', 'ninjafirewall') .'</strong></p>
|
42 |
-
<p>'. __('Path to WordPress site root directory:', 'ninjafirewall') .' <input class="regular-text code" type="text" name="abspath" value="' . htmlspecialchars(ABSPATH) . '"></p>
|
43 |
-
<br />
|
44 |
-
<br />
|
45 |
-
<input class="button-primary" type="submit" name="Save" value="'. __('Next Step', 'ninjafirewall') .' »" />
|
46 |
-
<input type="hidden" name="nfw_act" value="presave" />' . wp_nonce_field('presave', 'nfwnonce', 0) . '
|
47 |
-
</form>
|
48 |
-
</div>';
|
49 |
-
|
50 |
-
}
|
51 |
-
|
52 |
-
/* ------------------------------------------------------------------ */
|
53 |
-
|
54 |
-
function nfw_presave( $err = '' ) {
|
55 |
-
|
56 |
-
if (empty ($_POST['abspath']) ) {
|
57 |
-
nfw_get_abspath( __('please enter the full path to WordPress folder.', 'ninjafirewall') );
|
58 |
-
return;
|
59 |
-
}
|
60 |
-
$abspath = htmlspecialchars( rtrim( $_POST['abspath'], '/' ) );
|
61 |
-
if (! file_exists( $abspath . '/index.php' ) ) {
|
62 |
-
nfw_get_abspath( sprintf( __('cannot find the %s directory! Please correct the full path to WordPress site root directory.', 'ninjafirewall'), '<code>' . $abspath . '/index.php</code>') );
|
63 |
-
return;
|
64 |
-
}
|
65 |
-
|
66 |
-
$_SESSION['abspath'] = $abspath . '/';
|
67 |
-
|
68 |
-
if ( empty($_SESSION['default_conf']) ) {
|
69 |
-
nfw_default_conf();
|
70 |
-
|
71 |
-
welcome_email();
|
72 |
-
}
|
73 |
-
|
74 |
-
$s1 = ''; $s2 = ''; $s3 = ''; $s4 = ''; $s5 = ''; $s7 = '';
|
75 |
-
$recommended = ' ' . __('(recommended)', 'ninjafirewall');
|
76 |
-
if ( defined('HHVM_VERSION') ) {
|
77 |
-
$http_server = 7;
|
78 |
-
$s7 = $recommended;
|
79 |
-
$htaccess = 0;
|
80 |
-
$php_ini = 0;
|
81 |
-
} elseif ( preg_match('/apache/i', PHP_SAPI) ) {
|
82 |
-
$http_server = 1;
|
83 |
-
$s1 = $recommended;
|
84 |
-
$htaccess = 1;
|
85 |
-
$php_ini = 0;
|
86 |
-
} elseif ( preg_match( '/litespeed/i', PHP_SAPI ) ) {
|
87 |
-
$http_server = 4;
|
88 |
-
$php_ini = 1;
|
89 |
-
$htaccess = 1;
|
90 |
-
$s4 = $recommended;
|
91 |
-
} else {
|
92 |
-
$php_ini = 1;
|
93 |
-
$htaccess = 0;
|
94 |
-
if ( preg_match('/apache/i', $_SERVER['SERVER_SOFTWARE']) ) {
|
95 |
-
$http_server = 2;
|
96 |
-
$s2 = $recommended;
|
97 |
-
} elseif ( preg_match('/nginx/i', $_SERVER['SERVER_SOFTWARE']) ) {
|
98 |
-
$http_server = 3;
|
99 |
-
$s3 = $recommended;
|
100 |
-
} else {
|
101 |
-
$http_server = 5;
|
102 |
-
$s5 = $recommended;
|
103 |
-
}
|
104 |
-
}
|
105 |
-
|
106 |
-
?>
|
107 |
-
<script>
|
108 |
-
function popup(url,width,height,scroll_bar) {height=height+20;width=width+20;var str = "height=" + height + ",innerHeight=" + height;str += ",width=" + width + ",innerWidth=" + width;if (window.screen){var ah = screen.availHeight - 30;var aw = screen.availWidth -10;var xc = (aw - width) / 2;var yc = (ah - height) / 2;str += ",left=" + xc + ",screenX=" + xc;str += ",top=" + yc + ",screenY=" + yc;if (scroll_bar) {str += ",scrollbars=no";}else {str += ",scrollbars=yes";}str += ",status=no,location=no,resizable=yes";}win = open(url, "nfpop", str);setTimeout("win.window.focus()",1300);}
|
109 |
-
function check_fields() {
|
110 |
-
var ischecked = 0;
|
111 |
-
for (var i = 0; i < document.presave_form.php_ini_type.length; ++i) {
|
112 |
-
if(document.presave_form.php_ini_type[i].checked) {
|
113 |
-
ischecked = 1;
|
114 |
-
break;
|
115 |
-
}
|
116 |
-
}
|
117 |
-
if (! ischecked && document.presave_form.http_server.value != 1 && document.presave_form.http_server.value != 7) {
|
118 |
-
alert('<?php echo esc_js( __('Please select the PHP initialization file supported by your server.', 'ninjafirewall') ) ?>');
|
119 |
-
return false;
|
120 |
-
}
|
121 |
-
return true;
|
122 |
-
}
|
123 |
-
function ini_toogle(what) {
|
124 |
-
if (what == 1) {
|
125 |
-
document.getElementById('trini').style.display = 'none';
|
126 |
-
document.getElementById('hhvm').style.display = 'none';
|
127 |
-
} else if(what == 7) {
|
128 |
-
document.getElementById('trini').style.display = 'none';
|
129 |
-
document.getElementById('hhvm').style.display = '';
|
130 |
-
} else {
|
131 |
-
document.getElementById('trini').style.display = '';
|
132 |
-
document.getElementById('hhvm').style.display = 'none';
|
133 |
-
}
|
134 |
-
}
|
135 |
-
</script>
|
136 |
-
|
137 |
-
<?php
|
138 |
-
|
139 |
-
echo '
|
140 |
-
<div class="wrap">
|
141 |
-
<h1><img style="vertical-align:top;width:33px;height:33px;" src="'. plugins_url( '/ninjafirewall/images/ninjafirewall_32.png' ) .'"> ' . __('Firewall Policies', 'ninjafirewall') . '</h1>';
|
142 |
-
|
143 |
-
if (! is_writable( NFW_LOG_DIR . '/nfwlog' ) ) {
|
144 |
-
echo '<div class="error settings-error"><p>'. sprintf( __('Error: NinjaFirewall log directory is not writable (%s). Please chmod it to 0777 and reload this page.', 'ninjafirewall'), '<code>' . htmlspecialchars(NFW_LOG_DIR) . '/nfwlog/</code>') .'</p></div></div>';
|
145 |
-
return;
|
146 |
-
}
|
147 |
-
|
148 |
-
if ( $err ) {
|
149 |
-
echo '<div class="error settings-error"><p>'. __('Error:', 'ninjafirewall') . ' ' . $err . '</p></div>';
|
150 |
-
}
|
151 |
-
|
152 |
-
?>
|
153 |
-
<h3><?php _e('System configuration', 'ninjafirewall') ?></h3>
|
154 |
-
<?php
|
155 |
-
// auto_prepend_file already being used?
|
156 |
-
if ( $apf = ini_get('auto_prepend_file') ) {
|
157 |
-
?>
|
158 |
-
<div style="background:#fff;border-left:4px solid #fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 0 15px;padding:1px 12px;border-left-color:orange;">
|
159 |
-
<p><?php printf( __('NinjaFirewall detected that the PHP <code>auto_prepend_file</code> directive seems to be used by another application: %s.', 'ninjafirewall'), '<code>'. htmlspecialchars($apf) .'</code>' ); echo ' '; _e('Because NinjaFirewall needs to use that directive, it will override it.', 'ninjafirewall') ?></p>
|
160 |
-
</div>
|
161 |
-
<?php
|
162 |
-
}
|
163 |
-
if ( is_multisite() ) {
|
164 |
-
?>
|
165 |
-
<div style="background:#fff;border-left:4px solid #fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 0 15px;padding:1px 12px;border-left-color:green;">
|
166 |
-
<p><?php _e('Multisite network detected:', 'ninjafirewall'); echo ' '; _e('NinjaFirewall will protect all sites from your network and its configuration interface will be accessible only to the Super Admin from the network main site.', 'ninjafirewall') ?></p>
|
167 |
-
</div>
|
168 |
-
<?php
|
169 |
-
}
|
170 |
-
?>
|
171 |
-
<form method="post" name="presave_form" onSubmit="return check_fields();">
|
172 |
-
<table class="form-table">
|
173 |
-
|
174 |
-
<tr>
|
175 |
-
<th scope="row"><?php _e('Select your HTTP server and your PHP server API', 'ninjafirewall') ?> (<code>SAPI</code>)</th>
|
176 |
-
<td width="20"> </td>
|
177 |
-
<td>
|
178 |
-
<select class="input" name="http_server" onchange="ini_toogle(this.value);">
|
179 |
-
<option value="1"<?php selected($http_server, 1) ?>>Apache + PHP<?php echo PHP_MAJOR_VERSION ?> module<?php echo $s1 ?></option>
|
180 |
-
<option value="2"<?php selected($http_server, 2) ?>>Apache + CGI/FastCGI<?php echo $s2 ?></option>
|
181 |
-
<option value="6"<?php selected($http_server, 6) ?>>Apache + suPHP</option>
|
182 |
-
<option value="3"<?php selected($http_server, 3) ?>>Nginx + <?php _e('CGI or PHP-FPM', 'ninjafirewall') ?><?php echo $s3 ?></option>
|
183 |
-
<option value="4"<?php selected($http_server, 4) ?>>Litespeed<?php echo $s4 ?></option>
|
184 |
-
<option value="5"<?php selected($http_server, 5) ?>><?php _e('Other webserver + CGI/FastCGI', 'ninjafirewall') ?><?php echo $s5 ?></option>
|
185 |
-
<option value="7"<?php selected($http_server, 7) ?>><?php _e('Other webserver + HHVM', 'ninjafirewall') ?><?php echo $s7 ?></option>
|
186 |
-
</select> <span class="description"><a class="links" href="javascript:popup('<?php echo wp_nonce_url( '?page=NinjaFirewall&nfw_act=99', 'show_phpinfo', 'nfwnonce' ); ?>',700,500,0);"><?php _e('view PHPINFO', 'ninjafirewall') ?></a></span>
|
187 |
-
<?php
|
188 |
-
if ($http_server == 7) {
|
189 |
-
echo '<p id="hhvm">';
|
190 |
-
} else {
|
191 |
-
echo '<p id="hhvm" style="display:none;">';
|
192 |
-
}
|
193 |
-
?>
|
194 |
-
<?php sprintf( __('Please <a href="%s">check our blog</a> if you want to install NinjaFirewall on HHVM.', 'ninjafirewall'), '<a href="https://blog.nintechnet.com/installing-ninjafirewall-with-hhvm-hiphop-virtual-machine/">') ?></p>
|
195 |
-
</td>
|
196 |
-
</tr>
|
197 |
-
|
198 |
-
<?php
|
199 |
-
$f1 = ''; $f2 = ''; $f3 = ''; $php_ini_type = '';
|
200 |
-
if ( file_exists( $_SESSION['abspath'] . 'php.ini') ) {
|
201 |
-
if (empty($_SESSION['php_ini_type']) ) {
|
202 |
-
$f1 = $recommended;
|
203 |
-
}
|
204 |
-
$php_ini_type = 1;
|
205 |
-
} elseif ( file_exists( $_SESSION['abspath'] . '.user.ini') ) {
|
206 |
-
if (empty($_SESSION['php_ini_type']) ) {
|
207 |
-
$f2 = $recommended;
|
208 |
-
}
|
209 |
-
$php_ini_type = 2;
|
210 |
-
} elseif ( file_exists( $_SESSION['abspath'] . 'php5.ini') ) {
|
211 |
-
if (empty($_SESSION['php_ini_type']) ) {
|
212 |
-
$f3 = $recommended;
|
213 |
-
}
|
214 |
-
$php_ini_type = 3;
|
215 |
-
}
|
216 |
-
|
217 |
-
if ($http_server == 1 || $http_server == 7) {
|
218 |
-
echo '<tr id="trini" style="display:none;">';
|
219 |
-
} else {
|
220 |
-
echo '<tr id="trini">';
|
221 |
-
}
|
222 |
-
?>
|
223 |
-
<th scope="row"><?php _e('Select the PHP initialization file supported by your server', 'ninjafirewall') ?></th>
|
224 |
-
<td width="20"> </td>
|
225 |
-
<td>
|
226 |
-
<p><label><input type="radio" name="php_ini_type" value="1"<?php checked($php_ini_type, 1) ?>><code>php.ini</code></label><?php echo $f1 ?><br /><span class="description"><?php _e('Used by most shared hosting accounts.', 'ninjafirewall') ?></span></p>
|
227 |
-
|
228 |
-
<p><label><input type="radio" name="php_ini_type" value="2"<?php checked($php_ini_type, 2) ?>><code>.user.ini</code></label><?php echo $f2 ?><br /><span class="description"><?php _e('The default PHP INI file since PHP 5.3.0', 'ninjafirewall') ?> (<a href="http://php.net/manual/en/configuration.file.per-user.php"><?php _e('more info', 'ninjafirewall') ?></a>).</span></p>
|
229 |
-
|
230 |
-
<p><label><input type="radio" name="php_ini_type" value="3"<?php checked($php_ini_type, 3) ?>><code>php5.ini</code></label><?php echo $f3 ?><br /><span class="description"><?php _e('A few shared hosting accounts. Seldom used.', 'ninjafirewall') ?></span></p>
|
231 |
-
</td>
|
232 |
-
</tr>
|
233 |
-
|
234 |
-
</table>
|
235 |
-
<input type="submit" class="button-primary" name="next" value="<?php _e('Next Step', 'ninjafirewall') ?> »">
|
236 |
-
<input type="hidden" name="nfw_act" value="integration">
|
237 |
-
<input type="hidden" name="abspath" value="<?php echo $_SESSION['abspath'] ?>">
|
238 |
-
<?php wp_nonce_field('integration', 'nfwnonce', 0); ?>
|
239 |
-
</form>
|
240 |
-
</div>
|
241 |
-
<?php
|
242 |
-
}
|
243 |
-
|
244 |
-
/* ------------------------------------------------------------------ */
|
245 |
-
|
246 |
-
function nfw_integration( $err = '' ) {
|
247 |
-
|
248 |
-
if ( empty($_SESSION['abspath']) ) {
|
249 |
-
nfw_get_abspath( __('please enter the full path to WordPress folder.', 'ninjafirewall') );
|
250 |
-
return;
|
251 |
-
}
|
252 |
-
|
253 |
-
if ( empty($_POST['http_server']) || ! preg_match('/^[1-7]$/', $_POST['http_server']) ) {
|
254 |
-
nfw_presave( __('select your HTTP server and PHP SAPI.', 'ninjafirewall') );
|
255 |
-
return;
|
256 |
-
}
|
257 |
-
|
258 |
-
if ( preg_match('/^[2-6]$/', $_POST['http_server']) ) {
|
259 |
-
if ( empty($_POST['php_ini_type']) || ! preg_match('/^[1-3]$/', $_POST['php_ini_type']) ) {
|
260 |
-
nfw_presave( __('select the PHP initialization file supported by your server.', 'ninjafirewall') );
|
261 |
-
return;
|
262 |
-
}
|
263 |
-
} else {
|
264 |
-
$_POST['php_ini_type'] = 0;
|
265 |
-
}
|
266 |
-
|
267 |
-
nfw_ini_data();
|
268 |
-
|
269 |
-
$_SESSION['http_server'] = $_POST['http_server'];
|
270 |
-
$_SESSION['php_ini_type'] = @$_POST['php_ini_type'];
|
271 |
-
|
272 |
-
$_SESSION['ini_write'] = $_SESSION['htaccess_write'] = 1;
|
273 |
-
|
274 |
-
if ($_SESSION['php_ini_type'] == 1) {
|
275 |
-
$php_file = 'php.ini';
|
276 |
-
} elseif ($_SESSION['php_ini_type'] == 2) {
|
277 |
-
$php_file = '.user.ini';
|
278 |
-
} elseif ($_SESSION['php_ini_type'] == 3) {
|
279 |
-
$php_file = 'php5.ini';
|
280 |
-
} else {
|
281 |
-
$php_file = 0;
|
282 |
-
}
|
283 |
-
if ( is_writable($_SESSION['abspath']) ) {
|
284 |
-
$_SESSION['abspath_writable'] = 1;
|
285 |
-
} else {
|
286 |
-
$_SESSION['abspath_writable'] = 0;
|
287 |
-
}
|
288 |
-
?>
|
289 |
-
<script>
|
290 |
-
function diy_chg(what) {
|
291 |
-
if (what == 'nfw') {
|
292 |
-
jQuery('#lmd').slideDown();
|
293 |
-
jQuery('#diy').slideUp();
|
294 |
-
} else {
|
295 |
-
jQuery('#lmd').slideUp();
|
296 |
-
jQuery('#diy').slideDown();
|
297 |
-
}
|
298 |
-
}
|
299 |
-
</script>
|
300 |
-
<div class="wrap">
|
301 |
-
<h1><img style="vertical-align:top;width:33px;height:33px;" src="<?php echo plugins_url( '/ninjafirewall/images/ninjafirewall_32.png' ) ?>"> <?php _e('NinjaFirewall (WP Edition)', 'ninjafirewall') ?></h1>
|
302 |
-
<?php
|
303 |
-
if ( $err ) {
|
304 |
-
echo '<div class="error settings-error"><p>' . __('Error:', 'ninjafirewall') .' '. $err . '</p></div>';
|
305 |
-
}
|
306 |
-
?>
|
307 |
-
<h3><?php _e('Firewall Integration', 'ninjafirewall') ?> (Full WAF)</h3>
|
308 |
-
<?php
|
309 |
-
|
310 |
-
$fdata = $height = '';
|
311 |
-
|
312 |
-
$createfile = '<p>'. __('The <code>%s</code> file must be created, and the following lines of code added to it:', 'ninjafirewall') . '</p>';
|
313 |
-
$add2file = '<p>'. __('The following <font color="green">green lines</font> of code must be added to your <code>%s</code> file.', 'ninjafirewall') .' '. __('All other lines, if any, are the actual content of the file:', 'ninjafirewall') .'</p>';
|
314 |
-
$not_writable = '<div style="background:#fff;border-left:4px solid #fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 0 15px;padding:1px 12px;border-left-color:orange;">
|
315 |
-
<p>' . __('The file is not writable, I cannot edit it for you.', 'ninjafirewall') . '</p>
|
316 |
-
</div>';
|
317 |
-
|
318 |
-
|
319 |
-
if ($_SESSION['http_server'] == 1) {
|
320 |
-
if ( file_exists($_SESSION['abspath'] . '.htaccess') ) {
|
321 |
-
if (! is_writable($_SESSION['abspath'] . '.htaccess') ) {
|
322 |
-
$_SESSION['htaccess_write'] = $_SESSION['abspath_writable'] = 0;
|
323 |
-
}
|
324 |
-
|
325 |
-
printf( $add2file, $_SESSION['abspath'] . '.htaccess');
|
326 |
-
$fdata = file_get_contents($_SESSION['abspath'] . '.htaccess');
|
327 |
-
$fdata = preg_replace( '`\s?'. HTACCESS_BEGIN .'.+?'. HTACCESS_END .'[^\r\n]*\s?`s' , "\n", $fdata);
|
328 |
-
$fdata = "\n<font color='#444'>" . htmlentities($fdata) . '</font>';
|
329 |
-
$height = 'height:150px;';
|
330 |
-
} else {
|
331 |
-
|
332 |
-
printf( $createfile, $_SESSION['abspath'] . '.htaccess');
|
333 |
-
}
|
334 |
-
echo '<pre style="cursor:text;background-color:#FFF;border:1px solid #ccc;margin:0px;padding:6px;overflow:auto;' .
|
335 |
-
$height . '">' . "\n" .
|
336 |
-
'<font color="green">' . HTACCESS_BEGIN . "\n" . htmlentities(HTACCESS_DATA) . "\n" . HTACCESS_END . "\n" .
|
337 |
-
'</font>' . $fdata . "\n" .
|
338 |
-
'</pre><br />';
|
339 |
-
if (empty($_SESSION['htaccess_write']) ) {
|
340 |
-
echo $not_writable;
|
341 |
-
}
|
342 |
-
|
343 |
-
|
344 |
-
} elseif ($_SESSION['http_server'] == 4) {
|
345 |
-
if ( file_exists($_SESSION['abspath'] . '.htaccess') ) {
|
346 |
-
|
347 |
-
if (! is_writable($_SESSION['abspath'] . '.htaccess') ) {
|
348 |
-
$_SESSION['htaccess_write'] = $_SESSION['abspath_writable'] = 0;
|
349 |
-
}
|
350 |
-
printf( $add2file, $_SESSION['abspath'] . '.htaccess');
|
351 |
-
$fdata = file_get_contents($_SESSION['abspath'] . '.htaccess');
|
352 |
-
$fdata = preg_replace( '`\s?'. HTACCESS_BEGIN .'.+?'. HTACCESS_END .'[^\r\n]*\s?`s' , "\n", $fdata);
|
353 |
-
$fdata = "\n<font color='#444'>" . htmlentities($fdata) . '</font>';
|
354 |
-
$height = 'height:150px;';
|
355 |
-
} else {
|
356 |
-
|
357 |
-
printf( $createfile, $_SESSION['abspath'] . '.htaccess');
|
358 |
-
}
|
359 |
-
echo '<pre style="cursor:text;background-color:#FFF;border:1px solid #ccc;margin:0px;padding:6px;overflow:auto;' .
|
360 |
-
$height . '">' . "\n" .
|
361 |
-
'<font color="green">' . HTACCESS_BEGIN . "\n" . LITESPEED_DATA . "\n" . HTACCESS_END . "\n" .
|
362 |
-
'</font>' . $fdata . "\n" .
|
363 |
-
'</pre><br />';
|
364 |
-
if (empty($_SESSION['htaccess_write']) ) {
|
365 |
-
echo $not_writable;
|
366 |
-
}
|
367 |
-
echo '<br /><br />';
|
368 |
-
|
369 |
-
$fdata = $height = '';
|
370 |
-
if ( file_exists($_SESSION['abspath'] . $php_file) ) {
|
371 |
-
if (! is_writable($_SESSION['abspath'] . $php_file) ) {
|
372 |
-
$_SESSION['ini_write'] = $_SESSION['abspath_writable'] = 0;
|
373 |
-
}
|
374 |
-
|
375 |
-
printf( $add2file, $_SESSION['abspath'] . $php_file);
|
376 |
-
$fdata = file_get_contents($_SESSION['abspath'] . $php_file);
|
377 |
-
$fdata = preg_replace( '`\s?'. PHPINI_BEGIN .'.+?'. PHPINI_END .'[^\r\n]*\s?`s' , "\n", $fdata);
|
378 |
-
$fdata = "\n<font color='#444'>" . htmlentities($fdata) . '</font>';
|
379 |
-
$height = 'height:150px;';
|
380 |
-
} else {
|
381 |
-
|
382 |
-
printf( $createfile, $_SESSION['abspath'] . $php_file);
|
383 |
-
}
|
384 |
-
|
385 |
-
echo '<pre style="cursor:text;background-color:#FFF;border:1px solid #ccc;margin:0px;padding:6px;overflow:auto;' .
|
386 |
-
$height . '">' . "\n" .
|
387 |
-
'<font color="green">' . PHPINI_BEGIN . "\n" . PHPINI_DATA . "\n" . PHPINI_END . "\n" .
|
388 |
-
'</font>' . $fdata . "\n" .
|
389 |
-
'</pre><br />';
|
390 |
-
if (empty($_SESSION['ini_write']) ) {
|
391 |
-
echo $not_writable;
|
392 |
-
}
|
393 |
-
|
394 |
-
|
395 |
-
} elseif ($_SESSION['http_server'] == 7) {
|
396 |
-
?>
|
397 |
-
<li><?php _e('Add the following code to your <code>/etc/hhvm/php.ini</code> file, and restart HHVM afterwards:', 'ninjafirewall') ?></li>
|
398 |
-
<pre style="background-color:#FFF;border:1px solid #ccc;margin:0px;padding:6px;overflow:auto;height:70px;"><font color="green"><?php echo PHPINI_DATA ?></font></pre>
|
399 |
-
<br />
|
400 |
-
<?php
|
401 |
-
|
402 |
-
|
403 |
-
} else {
|
404 |
-
|
405 |
-
if ($_SESSION['http_server'] == 6) {
|
406 |
-
if ( file_exists($_SESSION['abspath'] . '.htaccess') ) {
|
407 |
-
|
408 |
-
if (! is_writable($_SESSION['abspath'] . '.htaccess') ) {
|
409 |
-
$_SESSION['htaccess_write'] = $_SESSION['abspath_writable'] = 0;
|
410 |
-
}
|
411 |
-
printf( $add2file, $_SESSION['abspath'] . '.htaccess');
|
412 |
-
$fdata = file_get_contents($_SESSION['abspath'] . '.htaccess');
|
413 |
-
$fdata = preg_replace( '`\s?'. HTACCESS_BEGIN .'.+?'. HTACCESS_END .'[^\r\n]*\s?`s' , "\n", $fdata);
|
414 |
-
$fdata = "\n<font color='#444'>" . htmlentities($fdata) . '</font>';
|
415 |
-
$height = 'height:150px;';
|
416 |
-
} else {
|
417 |
-
|
418 |
-
printf( $createfile, $_SESSION['abspath'] . '.htaccess');
|
419 |
-
}
|
420 |
-
echo '<pre style="cursor:text;background-color:#FFF;border:1px solid #ccc;margin:0px;padding:6px;overflow:auto;' .
|
421 |
-
$height . '">' . "\n" .
|
422 |
-
'<font color="green">' . HTACCESS_BEGIN . "\n" . htmlentities(SUPHP_DATA) . "\n" . HTACCESS_END . "\n" .
|
423 |
-
'</font>' . $fdata . "\n" .
|
424 |
-
'</pre><br />';
|
425 |
-
if (empty($_SESSION['htaccess_write']) ) {
|
426 |
-
echo $not_writable;
|
427 |
-
}
|
428 |
-
echo '<br /><br />';
|
429 |
-
$fdata = $height = '';
|
430 |
-
}
|
431 |
-
|
432 |
-
|
433 |
-
if ( file_exists($_SESSION['abspath'] . $php_file) ) {
|
434 |
-
if (! is_writable($_SESSION['abspath'] . $php_file) ) {
|
435 |
-
$_SESSION['ini_write'] = $_SESSION['abspath_writable'] = 0;
|
436 |
-
}
|
437 |
-
|
438 |
-
printf( $add2file, $_SESSION['abspath'] . $php_file);
|
439 |
-
$fdata = file_get_contents($_SESSION['abspath'] . $php_file);
|
440 |
-
$fdata = preg_replace( '`\s?'. PHPINI_BEGIN .'.+?'. PHPINI_END .'[^\r\n]*\s?`s' , "\n", $fdata);
|
441 |
-
$fdata = "\n<font color='#444'>" . htmlentities($fdata) . '</font>';
|
442 |
-
$height = 'height:150px;';
|
443 |
-
} else {
|
444 |
-
|
445 |
-
printf( $createfile, $_SESSION['abspath'] . $php_file);
|
446 |
-
}
|
447 |
-
|
448 |
-
echo '<pre style="cursor:text;background-color:#FFF;border:1px solid #ccc;margin:0px;padding:6px;overflow:auto;' .
|
449 |
-
$height . '">' . "\n" .
|
450 |
-
'<font color="green">' . PHPINI_BEGIN . "\n" . PHPINI_DATA . "\n" . PHPINI_END . "\n" .
|
451 |
-
'</font>' . $fdata . "\n" .
|
452 |
-
'</pre><br />';
|
453 |
-
if (empty($_SESSION['ini_write']) ) {
|
454 |
-
echo $not_writable;
|
455 |
-
}
|
456 |
-
}
|
457 |
-
|
458 |
-
echo '<form method="post" name="integration_form">';
|
459 |
-
|
460 |
-
|
461 |
-
if ($_SESSION['http_server'] != 7) {
|
462 |
-
$chg_str = __('Please make those changes, then click on button below.', 'ninjafirewall');
|
463 |
-
if (! empty($_SESSION['abspath_writable']) ) {
|
464 |
-
|
465 |
-
|
466 |
-
echo '<p><label><input type="radio" name="makechange" onClick="diy_chg(this.value)" value="nfw" checked="checked">'.
|
467 |
-
__('Let NinjaFirewall make the above changes (recommended).', 'ninjafirewall') .'</label></p>
|
468 |
-
<div id="lmd">
|
469 |
-
<div style="background:#fff;border-left:4px solid #fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 0 15px;padding:1px 12px;border-left-color:orange;">
|
470 |
-
<p>' . __('Ensure that you have FTP access to your website so that, if there were a problem during the installation of the firewall, you could easily undo the changes.', 'ninjafirewall') .'</p>
|
471 |
-
</div>
|
472 |
-
</div>
|
473 |
-
|
474 |
-
<p><label><input type="radio" name="makechange" onClick="diy_chg(this.value)" value="usr">'.
|
475 |
-
__('I want to make the changes myself.', 'ninjafirewall') .'</label></p>
|
476 |
-
<p id="diy" style="display:none;">' . $chg_str . '</p>';
|
477 |
-
} else {
|
478 |
-
echo '<p>'. $chg_str .'</p>';
|
479 |
-
}
|
480 |
-
} else {
|
481 |
-
|
482 |
-
$_SESSION['php_ini_type'] = 1;
|
483 |
-
echo '<input type="hidden" name="makechange" value="usr">
|
484 |
-
<a href="https://blog.nintechnet.com/installing-ninjafirewall-with-hhvm-hiphop-virtual-machine/">' . __('Please check our blog if you want to install NinjaFirewall on HHVM.', 'ninjafirewall') . '</a>
|
485 |
-
<br />';
|
486 |
-
}
|
487 |
-
?>
|
488 |
-
<br />
|
489 |
-
<input type="submit" class="button-primary" name="next" value="<?php _e('Next Step', 'ninjafirewall') ?> »">
|
490 |
-
<input type="hidden" name="nfw_act" value="postsave">
|
491 |
-
<input type="hidden" name="nfw_firstrun" value="1" />
|
492 |
-
<?php wp_nonce_field('postsave', 'nfwnonce', 0); ?>
|
493 |
-
</form>
|
494 |
-
</div>
|
495 |
-
|
496 |
-
<?php
|
497 |
-
}
|
498 |
-
|
499 |
-
/* ------------------------------------------------------------------ */
|
500 |
-
|
501 |
-
function nfw_postsave() {
|
502 |
-
|
503 |
-
if ( @$_POST['makechange'] != 'usr' && @$_POST['makechange'] != 'nfw' ) {
|
504 |
-
$err = __('you must select how to make changes to your files.', 'ninjafirewall');
|
505 |
-
NFW_INTEGRATION:
|
506 |
-
$_POST['abspath'] = $_SESSION['abspath'];
|
507 |
-
$_POST['http_server'] = $_SESSION['http_server'];
|
508 |
-
$_POST['php_ini_type'] = $_SESSION['php_ini_type'];
|
509 |
-
nfw_integration($err);
|
510 |
-
return;
|
511 |
-
}
|
512 |
-
if ( empty($_SESSION['http_server']) || ! preg_match('/^[1-7]$/', $_SESSION['http_server']) ) {
|
513 |
-
$_POST['abspath'] = $_SESSION['abspath'];
|
514 |
-
nfw_presave( __('select your HTTP server and PHP SAPI.', 'ninjafirewall') );
|
515 |
-
return;
|
516 |
-
}
|
517 |
-
if ($_SESSION['http_server'] != 1) {
|
518 |
-
if ( empty($_SESSION['php_ini_type']) || ! preg_match('/^[1-3]$/', $_SESSION['php_ini_type']) ) {
|
519 |
-
$_POST['abspath'] = $_SESSION['abspath'];
|
520 |
-
nfw_presave( __('select the PHP initialization file supported by your server.', 'ninjafirewall') );
|
521 |
-
return;
|
522 |
-
}
|
523 |
-
}
|
524 |
-
|
525 |
-
if ( $_POST['makechange'] == 'usr' ) {
|
526 |
-
goto DOITYOURSELF;
|
527 |
-
}
|
528 |
-
|
529 |
-
if ( empty($_SESSION['abspath_writable']) ) {
|
530 |
-
$err = __('your WordPress root directory is not writable, I cannot make those changes for you.', 'ninjafirewall');
|
531 |
-
goto NFW_INTEGRATION;
|
532 |
-
exit;
|
533 |
-
}
|
534 |
-
|
535 |
-
nfw_ini_data();
|
536 |
-
|
537 |
-
$bakup_file = time();
|
538 |
-
|
539 |
-
$nfw_install['htaccess'] = $nfw_install['phpini'] = 0;
|
540 |
-
|
541 |
-
if ($_SESSION['http_server'] == 1 || $_SESSION['http_server'] == 4 || $_SESSION['http_server'] == 6 ) {
|
542 |
-
$fdata = '';
|
543 |
-
if ( file_exists($_SESSION['abspath'] . '.htaccess') ) {
|
544 |
-
if (! is_writable($_SESSION['abspath'] . '.htaccess') ) {
|
545 |
-
$err = sprintf(__('cannot write to <code>%s</code>, it is read-only.', 'ninjafirewall'), $_SESSION['abspath'] . '.htaccess');
|
546 |
-
goto NFW_INTEGRATION;
|
547 |
-
exit;
|
548 |
-
}
|
549 |
-
$fdata = file_get_contents($_SESSION['abspath'] . '.htaccess');
|
550 |
-
|
551 |
-
// Comment out any existing 'auto_prepend_file' directive:
|
552 |
-
$fdata = preg_replace( '`^(\s*php_value\s*auto_prepend_file.+?)$`m' , '#\1', $fdata);
|
553 |
-
|
554 |
-
$fdata = preg_replace( '`\s?'. HTACCESS_BEGIN .'.+?'. HTACCESS_END .'[^\r\n]*\s?`s' , "\n", $fdata);
|
555 |
-
copy( $_SESSION['abspath'] . '.htaccess', $_SESSION['abspath'] . '.htaccess.ninja' . $bakup_file );
|
556 |
-
}
|
557 |
-
if ($_SESSION['http_server'] == 6) {
|
558 |
-
@file_put_contents($_SESSION['abspath'] . '.htaccess',
|
559 |
-
HTACCESS_BEGIN . "\n" . SUPHP_DATA . "\n" . HTACCESS_END . "\n\n" . $fdata, LOCK_EX );
|
560 |
-
} else {
|
561 |
-
if ($_SESSION['http_server'] == 4) {
|
562 |
-
@file_put_contents($_SESSION['abspath'] . '.htaccess',
|
563 |
-
HTACCESS_BEGIN . "\n" . LITESPEED_DATA . "\n" . HTACCESS_END . "\n\n" . $fdata, LOCK_EX );
|
564 |
-
|
565 |
-
} else {
|
566 |
-
@file_put_contents($_SESSION['abspath'] . '.htaccess',
|
567 |
-
HTACCESS_BEGIN . "\n" . HTACCESS_DATA . "\n" . HTACCESS_END . "\n\n" . $fdata, LOCK_EX );
|
568 |
-
}
|
569 |
-
}
|
570 |
-
@chmod( $_SESSION['abspath'] . '.htaccess', 0644 );
|
571 |
-
$nfw_install['htaccess'] = $_SESSION['abspath'] . '.htaccess';
|
572 |
-
}
|
573 |
-
|
574 |
-
if ($_SESSION['http_server'] != 1) {
|
575 |
-
$fdata = '';
|
576 |
-
$ini_array = array('php.ini', '.user.ini','php5.ini');
|
577 |
-
|
578 |
-
if ($_SESSION['php_ini_type'] == 1) {
|
579 |
-
$php_file = 'php.ini';
|
580 |
-
} elseif ($_SESSION['php_ini_type'] == 2) {
|
581 |
-
$php_file = '.user.ini';
|
582 |
-
} else {
|
583 |
-
$php_file = 'php5.ini';
|
584 |
-
}
|
585 |
-
|
586 |
-
if ( file_exists($_SESSION['abspath'] . $php_file) ) {
|
587 |
-
if (! is_writable($_SESSION['abspath'] . $php_file) ) {
|
588 |
-
$err = sprintf(__('cannot write to <code>%s</code>, it is read-only.', 'ninjafirewall'), $_SESSION['abspath'] . $php_file);
|
589 |
-
goto NFW_INTEGRATION;
|
590 |
-
exit;
|
591 |
-
}
|
592 |
-
$fdata = file_get_contents($_SESSION['abspath'] . $php_file);
|
593 |
-
$fdata = preg_replace( '`auto_prepend_file`' , ";auto_prepend_file", $fdata);
|
594 |
-
$fdata = preg_replace( '`\s?'. PHPINI_BEGIN .'.+?'. PHPINI_END .'[^\r\n]*\s?`s' , "\n", $fdata);
|
595 |
-
copy( $_SESSION['abspath'] . $php_file, $_SESSION['abspath'] . $php_file . '.ninja' . $bakup_file );
|
596 |
-
}
|
597 |
-
@file_put_contents($_SESSION['abspath'] . $php_file,
|
598 |
-
PHPINI_BEGIN . "\n" . PHPINI_DATA . "\n" . PHPINI_END . "\n\n" . $fdata, LOCK_EX );
|
599 |
-
@chmod( $_SESSION['abspath'] . $php_file, 0644 );
|
600 |
-
$nfw_install['phpini'] = $_SESSION['abspath'] . $php_file;
|
601 |
-
|
602 |
-
foreach ( $ini_array as $ini_file ) {
|
603 |
-
if ($ini_file == $php_file) { continue; }
|
604 |
-
if ( file_exists($_SESSION['abspath'] . $ini_file) ) {
|
605 |
-
if ( is_writable($_SESSION['abspath'] . $ini_file) ) {
|
606 |
-
$ini_data = file_get_contents($_SESSION['abspath'] . $ini_file);
|
607 |
-
$ini_data = preg_replace( '`auto_prepend_file`' , ";auto_prepend_file", $ini_data);
|
608 |
-
$ini_data = preg_replace( '`\s?'. PHPINI_BEGIN .'.+?'. PHPINI_END .'[^\r\n]*\s?`s' , "\n", $ini_data);
|
609 |
-
@file_put_contents($_SESSION['abspath'] . $ini_file, $ini_data, LOCK_EX );
|
610 |
-
}
|
611 |
-
}
|
612 |
-
}
|
613 |
-
}
|
614 |
-
nfw_update_option( 'nfw_install', $nfw_install);
|
615 |
-
|
616 |
-
?>
|
617 |
-
<div class="wrap">
|
618 |
-
<h1><img style="vertical-align:top;width:33px;height:33px;" src="<?php echo plugins_url( '/ninjafirewall/images/ninjafirewall_32.png' ) ?>"> <?php _e('NinjaFirewall (WP Edition)', 'ninjafirewall') ?></h1>
|
619 |
-
<br />
|
620 |
-
<div class="updated settings-error"><p><?php _e('Your configuration was saved.', 'ninjafirewall') ?>
|
621 |
-
<?php
|
622 |
-
if (! empty($_SESSION['email_install']) ) {
|
623 |
-
|
624 |
-
echo '<br />';
|
625 |
-
printf( __('A "Quick Start, FAQ & Troubleshooting Guide" email was sent to %s.', 'ninjafirewall'), '<code>' . htmlspecialchars( $_SESSION['email_install'] ) . '</code>' );
|
626 |
-
unset($_SESSION['email_install']);
|
627 |
-
}
|
628 |
-
?>
|
629 |
-
</p></div>
|
630 |
-
<?php _e('Please click the button below to test if the firewall integration was successful.', 'ninjafirewall') ?>
|
631 |
-
<form method="POST" action="?page=NinjaFirewall&nfw_firstrun=1&rnd=<?php echo time() ?>">
|
632 |
-
<p><input type="submit" class="button-primary" value="<?php _e('Test Firewall', 'ninjafirewall') ?> »" /></p>
|
633 |
-
<input type="hidden" name="nfw_act" value="postsave" />
|
634 |
-
<input type="hidden" name="makechange" value="usr" />
|
635 |
-
<?php wp_nonce_field('postsave', 'nfwnonce', 0); ?>
|
636 |
-
</form>
|
637 |
-
|
638 |
-
</div>
|
639 |
-
<?php
|
640 |
-
return;
|
641 |
-
|
642 |
-
DOITYOURSELF:
|
643 |
-
nfw_firewalltest();
|
644 |
-
return;
|
645 |
-
}
|
646 |
-
|
647 |
-
/* ------------------------------------------------------------------ */
|
648 |
-
// EOF //
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lib/install_wpwaf.php
DELETED
@@ -1,243 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/*
|
3 |
-
+---------------------------------------------------------------------+
|
4 |
-
| NinjaFirewall (WP Edition) |
|
5 |
-
| |
|
6 |
-
| (c) NinTechNet - https://nintechnet.com/ |
|
7 |
-
+---------------------------------------------------------------------+
|
8 |
-
| This program is free software: you can redistribute it and/or |
|
9 |
-
| modify it under the terms of the GNU General Public License as |
|
10 |
-
| published by the Free Software Foundation, either version 3 of |
|
11 |
-
| the License, or (at your option) any later version. |
|
12 |
-
| |
|
13 |
-
| This program is distributed in the hope that it will be useful, |
|
14 |
-
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
-
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
-
| GNU General Public License for more details. |
|
17 |
-
+---------------------------------------------------------------------+ i18n+ / sa
|
18 |
-
*/
|
19 |
-
|
20 |
-
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
21 |
-
|
22 |
-
/* ------------------------------------------------------------------ */
|
23 |
-
|
24 |
-
function nfw_integration_wpwaf( $err_msg = null ) {
|
25 |
-
|
26 |
-
// Look for the wp-config.php file:
|
27 |
-
$wp_config = '';
|
28 |
-
if ( file_exists( ABSPATH . 'wp-config.php') ) {
|
29 |
-
$wp_config = ABSPATH . 'wp-config.php';
|
30 |
-
|
31 |
-
} elseif ( @file_exists( dirname( ABSPATH ) . '/wp-config.php' ) ) {
|
32 |
-
$wp_config = dirname( ABSPATH ) . '/wp-config.php';
|
33 |
-
}
|
34 |
-
|
35 |
-
?>
|
36 |
-
<script>
|
37 |
-
function diy_chg(what) {
|
38 |
-
if (what == 'nfw') {
|
39 |
-
jQuery('#lmd').slideDown();
|
40 |
-
jQuery('#diy').slideUp();
|
41 |
-
} else {
|
42 |
-
jQuery('#lmd').slideUp();
|
43 |
-
jQuery('#diy').slideDown();
|
44 |
-
}
|
45 |
-
}
|
46 |
-
</script>
|
47 |
-
<div class="wrap">
|
48 |
-
<h1><img style="vertical-align:top;width:33px;height:33px;" src="<?php echo plugins_url( '/ninjafirewall/images/ninjafirewall_32.png' ) ?>"> <?php _e('NinjaFirewall (WP Edition)', 'ninjafirewall') ?></h1>
|
49 |
-
<?php
|
50 |
-
|
51 |
-
$wp_config_content = @file_get_contents( $wp_config );
|
52 |
-
if ( empty( $wp_config_content ) ) {
|
53 |
-
$err = __('Error:', 'ninjafirewall') . ' ' .
|
54 |
-
sprintf( __('Unable to read the wp-config.php file (%s). Make sure it is readable and try again.', 'ninjafirewall' ),
|
55 |
-
'<code>'. htmlspecialchars( $wp_config ) .'</code>' );
|
56 |
-
?>
|
57 |
-
<div class="error settings-error"><p> <?php echo $err ?></p></div>
|
58 |
-
<?php
|
59 |
-
return;
|
60 |
-
}
|
61 |
-
|
62 |
-
if (! empty( $err_msg) ) {
|
63 |
-
$err = __('Error:', 'ninjafirewall') . ' ' . $err_msg;
|
64 |
-
?>
|
65 |
-
<div class="error settings-error"><p> <?php echo $err; ?></p></div>
|
66 |
-
<?php
|
67 |
-
}
|
68 |
-
|
69 |
-
if (! $wp_config ) {
|
70 |
-
$err = __('Error:', 'ninjafirewall') . ' ' . sprintf(
|
71 |
-
__('Unable to find the wp-config.php file in the %s or %s directories.', 'ninjafirewall' ),
|
72 |
-
'<code>'. htmlspecialchars( ABSPATH ) .'</code>',
|
73 |
-
'<code>'. htmlspecialchars( dirname( ABSPATH ) ) .'</code>' );
|
74 |
-
?>
|
75 |
-
<div class="error settings-error"><p> <?php echo $err ?></p></div>
|
76 |
-
</div>
|
77 |
-
<?php
|
78 |
-
return;
|
79 |
-
}
|
80 |
-
|
81 |
-
// Fetch rules, options and send welcome email:
|
82 |
-
if ( empty($_SESSION['default_conf']) ) {
|
83 |
-
nfw_default_conf();
|
84 |
-
welcome_email();
|
85 |
-
}
|
86 |
-
$nfw_install['wp_config'] = $wp_config;
|
87 |
-
nfw_update_option( 'nfw_install', $nfw_install);
|
88 |
-
|
89 |
-
?><h3><?php _e('Firewall Integration', 'ninjafirewall') ?> (WordPress WAF)</h3>
|
90 |
-
|
91 |
-
<?php
|
92 |
-
if ( is_multisite() ) {
|
93 |
-
?>
|
94 |
-
<div style="background:#fff;border-left:4px solid #fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 0 15px;padding:1px 12px;border-left-color:green;">
|
95 |
-
<p><?php _e('Multisite network detected:', 'ninjafirewall'); echo ' '; _e('NinjaFirewall will protect all sites from your network and its configuration interface will be accessible only to the Super Admin from the network main site.', 'ninjafirewall') ?></p>
|
96 |
-
</div>
|
97 |
-
<?php
|
98 |
-
}
|
99 |
-
?>
|
100 |
-
|
101 |
-
<p><?php printf( __('The following <font color="green">green lines</font> of code must be added to your %s file.', 'ninjafirewall'), '<code>'. htmlentities( $wp_config ) . '</code>' ) ?> <?php _e('All other lines, if any, are the actual content of the file:', 'ninjafirewall') ?>
|
102 |
-
</p>
|
103 |
-
|
104 |
-
<?php
|
105 |
-
nfw_wpconfig_data();
|
106 |
-
$wp_config_content = preg_replace( '`<\?php(.+)`s', '$1', $wp_config_content );
|
107 |
-
$wp_config_content = preg_replace( '`\s?'. WP_CONFIG_BEGIN .'.+?'. WP_CONFIG_END .'[^\r\n]*\s?`s' , "\n", $wp_config_content);
|
108 |
-
|
109 |
-
echo '<pre style="cursor:text;background-color:#FFF;border:1px solid #ccc;margin:0px;padding:6px;overflow:auto;height:180px;">' . "\n" .
|
110 |
-
"<font color='#777'><?php\n" .
|
111 |
-
'<font color="green">' . WP_CONFIG_BEGIN . "\n" . htmlentities(WP_CONFIG_DATA) . "\n" . WP_CONFIG_END . "\n" .
|
112 |
-
'</font>' . htmlspecialchars( $wp_config_content ) . "\n" .
|
113 |
-
'</font></pre><br />';
|
114 |
-
|
115 |
-
echo '<form method="post" name="integration_form">';
|
116 |
-
|
117 |
-
if (! is_writable( $wp_config ) ) {
|
118 |
-
?>
|
119 |
-
<div style="background:#fff;border-left:4px solid #fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 0 15px;padding:1px 12px;border-left-color:orange;">
|
120 |
-
<p><?php _e('The file is not writable, I cannot edit it for you. Please make those changes, then click on button below.', 'ninjafirewall'); ?></p>
|
121 |
-
</div>
|
122 |
-
<?php
|
123 |
-
|
124 |
-
} else {
|
125 |
-
|
126 |
-
?>
|
127 |
-
<p><label><input type="radio" name="makechange" onClick="diy_chg(this.value)" value="nfw" checked="checked"><strong><?php _e('Let NinjaFirewall make the above changes (recommended).', 'ninjafirewall'); ?></strong></label></p>
|
128 |
-
<div id="lmd">
|
129 |
-
<label><input type="checkbox" name="conf_backup" checked="checked" /><?php _e('Back up the file (wp-config.bak.php) before editing it.', 'ninjafirewall') ?></label>
|
130 |
-
<div style="background:#fff;border-left:4px solid #fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 0 15px;padding:1px 12px;border-left-color:orange;">
|
131 |
-
<p><?php _e('Ensure that you have FTP access to your website so that, if there were a problem during the installation of the firewall, you could easily undo the changes.', 'ninjafirewall') ?></p>
|
132 |
-
</div>
|
133 |
-
</div>
|
134 |
-
<p><label><input type="radio" name="makechange" onClick="diy_chg(this.value)" value="usr"><strong><?php _e('I want to make the changes myself.', 'ninjafirewall'); ?></strong></label></p>
|
135 |
-
<p id="diy" style="display:none;"><?php _e('Please make those changes, then click on button below.', 'ninjafirewall') ?></p>
|
136 |
-
<?php
|
137 |
-
}
|
138 |
-
?>
|
139 |
-
<br />
|
140 |
-
<input type="submit" class="button-primary" name="next" value="<?php _e('Next Step', 'nfwplus') ?> »">
|
141 |
-
<input type="hidden" name="nfw_act" value="save_changes_wpwaf">
|
142 |
-
<?php wp_nonce_field('save_changes_wpwaf', 'nfwnonce', 0); ?>
|
143 |
-
</form>
|
144 |
-
</div>
|
145 |
-
|
146 |
-
<?php
|
147 |
-
$_SESSION['wp_config'] = $wp_config;
|
148 |
-
}
|
149 |
-
|
150 |
-
/* ------------------------------------------------------------------ */
|
151 |
-
|
152 |
-
function nfw_save_changes_wpwaf() {
|
153 |
-
|
154 |
-
if ( empty( $_SESSION['wp_config'] ) || ! file_exists( $_SESSION['wp_config'] ) ) {
|
155 |
-
$err = sprintf( __('Unable to find the wp-config.php file (#%s).', 'ninjafirewall' ), __LINE__ );
|
156 |
-
nfw_integration_wpwaf( $err );
|
157 |
-
return;
|
158 |
-
}
|
159 |
-
|
160 |
-
$wp_config = $_SESSION['wp_config'];
|
161 |
-
|
162 |
-
// Let NinjaFirewall do the changes:
|
163 |
-
if ( isset( $_POST['makechange'] ) && $_POST['makechange'] == 'nfw' ) {
|
164 |
-
|
165 |
-
// Back up the wp-config.php?
|
166 |
-
if ( isset( $_POST['conf_backup'] ) ) {
|
167 |
-
$dirname = dirname( $_SESSION['wp_config'] );
|
168 |
-
if (! file_exists( $dirname . '/wp-config.bak.php' ) ) {
|
169 |
-
@copy( $_SESSION['wp_config'], $dirname . '/wp-config.bak.php' );
|
170 |
-
}
|
171 |
-
}
|
172 |
-
|
173 |
-
// Clean-up any PHP INI:
|
174 |
-
$_SESSION['abspath'] = ABSPATH;
|
175 |
-
nfw_ini_data();
|
176 |
-
$php_ini = array( ABSPATH . 'php.ini', ABSPATH . 'php5.ini', ABSPATH . '.user.ini' );
|
177 |
-
foreach ( $php_ini as $file ) {
|
178 |
-
if ( file_exists( $file ) ) {
|
179 |
-
$data = file_get_contents( $file );
|
180 |
-
$data = preg_replace( '`\s?'. PHPINI_BEGIN .'.+?'. PHPINI_END .'[^\r\n]*\s?`s' , "\n", $data);
|
181 |
-
@file_put_contents( $file, $data, LOCK_EX );
|
182 |
-
}
|
183 |
-
}
|
184 |
-
// Clean-up .htaccess:
|
185 |
-
$htaccess_file = ABSPATH . '.htaccess';
|
186 |
-
if ( file_exists( $htaccess_file ) ) {
|
187 |
-
$data = file_get_contents( $htaccess_file );
|
188 |
-
$data = preg_replace( '`\s?'. HTACCESS_BEGIN .'.+?'. HTACCESS_END .'[^\r\n]*\s?`s' , "\n", $data);
|
189 |
-
@file_put_contents( $htaccess_file, $data, LOCK_EX );
|
190 |
-
}
|
191 |
-
|
192 |
-
$wp_config_content = @file_get_contents( $wp_config );
|
193 |
-
|
194 |
-
nfw_wpconfig_data();
|
195 |
-
$wp_config_content = preg_replace( '`<\?php(.+)`s', '$1', $wp_config_content );
|
196 |
-
$wp_config_content = preg_replace( '`\s?'. WP_CONFIG_BEGIN .'.+?'. WP_CONFIG_END .'[^\r\n]*\s?`s' , "\n", $wp_config_content);
|
197 |
-
@file_put_contents( $wp_config, "<?php\n". WP_CONFIG_BEGIN ."\n". WP_CONFIG_DATA ."\n". WP_CONFIG_END ."\n$wp_config_content", LOCK_EX );
|
198 |
-
|
199 |
-
?>
|
200 |
-
<div class="wrap">
|
201 |
-
<h1><img style="vertical-align:top;width:33px;height:33px;" src="<?php echo plugins_url( '/ninjafirewall/images/ninjafirewall_32.png' ) ?>"> <?php _e('NinjaFirewall (WP Edition)', 'ninjafirewall') ?></h1>
|
202 |
-
<br />
|
203 |
-
<div class="updated settings-error"><p><?php _e('Your configuration was saved.', 'ninjafirewall') ?>
|
204 |
-
<?php
|
205 |
-
if (! empty($_SESSION['email_install']) ) {
|
206 |
-
|
207 |
-
echo '<br />';
|
208 |
-
printf( __('A "Quick Start, FAQ & Troubleshooting Guide" email was sent to %s.', 'ninjafirewall'), '<code>' . htmlspecialchars( $_SESSION['email_install'] ) . '</code>' );
|
209 |
-
unset($_SESSION['email_install']);
|
210 |
-
}
|
211 |
-
?>
|
212 |
-
</p></div>
|
213 |
-
<?php _e('Please click the button below to test if the firewall integration was successful.', 'ninjafirewall') ?>
|
214 |
-
<form method="POST" action="?page=NinjaFirewall&nfw_firstrun=1&rnd=<?php echo time() ?>">
|
215 |
-
<p><input type="submit" class="button-primary" value="<?php _e('Test Firewall', 'ninjafirewall') ?> »" /></p>
|
216 |
-
|
217 |
-
<input type="hidden" name="nfw_act" value="save_changes_wpwaf" />
|
218 |
-
<input type="hidden" name="makechange" value="usr" />
|
219 |
-
<?php wp_nonce_field('save_changes_wpwaf', 'nfwnonce', 0); ?>
|
220 |
-
|
221 |
-
</form>
|
222 |
-
</div>
|
223 |
-
<?php
|
224 |
-
return;
|
225 |
-
}
|
226 |
-
|
227 |
-
nfw_test_wpwaf();
|
228 |
-
return;
|
229 |
-
}
|
230 |
-
|
231 |
-
/* ------------------------------------------------------------------ */
|
232 |
-
|
233 |
-
function nfw_test_wpwaf() {
|
234 |
-
|
235 |
-
if (! defined('NFW_STATUS') || NFW_STATUS != 20 ) {
|
236 |
-
$err = __('The firewall is not loaded. Make sure that the required lines of code were added to your wp-config.php file.', 'ninjafirewall' );
|
237 |
-
nfw_integration_wpwaf( $err );
|
238 |
-
}
|
239 |
-
return;
|
240 |
-
}
|
241 |
-
|
242 |
-
/* ------------------------------------------------------------------ */
|
243 |
-
// EOF //
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lib/live_log.php
CHANGED
@@ -22,16 +22,16 @@ if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
|
22 |
// Block immediately if user is not allowed :
|
23 |
nf_not_allowed( 'block', __LINE__ );
|
24 |
|
25 |
-
if (! defined('NF_DISABLED') ) {
|
26 |
is_nfw_enabled();
|
27 |
}
|
28 |
-
if (NF_DISABLED) {
|
29 |
$err_msg = __('Error: NinjaFirewall must be enabled and working in order to use this feature.', 'ninjafirewall');
|
30 |
}
|
31 |
-
if ( empty($_SESSION['nfw_goodguy']) ) {
|
32 |
$err_msg = sprintf( __('Error: You must be whitelisted in order to use that feature: click on the <a href="%s">Firewall Policies</a> menu and ensure that the "Add the Administrator to the whitelist" option is enabled.', 'ninjafirewall'), '?page=nfsubpolicies' );
|
33 |
}
|
34 |
-
if (! empty($err_msg) ) {
|
35 |
?>
|
36 |
<div class="wrap">
|
37 |
<h1><img style="vertical-align:top;" src="<?php echo plugins_url( '/ninjafirewall/images/ninjafirewall_32.png' ) ?>"> <?php _e('Live Log', 'ninjafirewall') ?></h1>
|
@@ -43,182 +43,41 @@ if (! empty($err_msg) ) {
|
|
43 |
return;
|
44 |
}
|
45 |
|
46 |
-
// Create an empty log
|
47 |
-
$fh = fopen( NFW_LOG_DIR .
|
48 |
-
fclose($fh);
|
49 |
$_SESSION['nfw_livelog'] = 1;
|
50 |
|
51 |
-
|
52 |
-
<script>
|
53 |
-
var count = 0;
|
54 |
-
var lines = 0;
|
55 |
-
var liveon = 1;
|
56 |
-
<?php
|
57 |
if (! isset($_COOKIE['nfwscroll']) || ! empty($_COOKIE['nfwscroll']) ) {
|
58 |
-
// Default
|
59 |
-
echo 'var scroll = 1;';
|
60 |
$nfwscroll = 1;
|
61 |
} else {
|
62 |
-
echo 'var scroll = 0;';
|
63 |
$nfwscroll = 0;
|
64 |
}
|
65 |
-
if ( isset($_COOKIE['nfwintval']) && preg_match('/^(5|10|20|45)000$/', $_COOKIE['nfwintval']) ) {
|
66 |
-
|
67 |
-
$nfwintval = $_COOKIE['nfwintval'];
|
68 |
} else {
|
69 |
-
echo 'var liveint = 10000;';
|
70 |
$nfwintval = 10000;
|
71 |
}
|
72 |
-
?>
|
73 |
-
var livecls = 0;
|
74 |
-
var myinterval;
|
75 |
-
var ajaxURL = '<?php
|
76 |
if ( NFW_IS_HTTPS == true ) {
|
77 |
-
|
78 |
} else {
|
79 |
-
|
80 |
-
}
|
81 |
-
?>/index.php';
|
82 |
-
function getHTTPObject(){
|
83 |
-
var http;
|
84 |
-
if(window.XMLHttpRequest){
|
85 |
-
http = new XMLHttpRequest();
|
86 |
-
} else if(window.ActiveXObject){
|
87 |
-
http = new ActiveXObject("Microsoft.XMLHTTP");
|
88 |
-
}
|
89 |
-
return http;
|
90 |
-
}
|
91 |
-
var http = getHTTPObject();
|
92 |
-
function live_fetch() {
|
93 |
-
if (count) {
|
94 |
-
document.getElementById("loading").innerHTML = "<?php echo esc_js( __('Loading...', 'ninjafirewall') ) ?>";
|
95 |
-
document.getElementById('radioon').style.background = 'orange';
|
96 |
-
document.getElementById('radiooff').disabled = true;
|
97 |
-
}
|
98 |
-
http.open("POST", ajaxURL, true);
|
99 |
-
http.onreadystatechange = live_fetchRes;
|
100 |
-
http.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
|
101 |
-
http.send('livecls=' + livecls + '&lines=' + lines);
|
102 |
-
count = 1;
|
103 |
-
livecls = 0;
|
104 |
-
}
|
105 |
-
live_fetch();
|
106 |
-
myinterval = setInterval(live_fetch, liveint);
|
107 |
-
|
108 |
-
function live_fetchRes() {
|
109 |
-
if (http.readyState == 4) {
|
110 |
-
if (http.status == 200) {
|
111 |
-
if (http.responseText == '') {
|
112 |
-
document.liveform.txtlog.value = '<?php echo esc_js( __('No traffic yet, please wait...', 'ninjafirewall') ) ?>' + "\n";
|
113 |
-
} else if (http.responseText != '*') {
|
114 |
-
if ( http.responseText.charAt(0) != '^' ) {
|
115 |
-
document.liveform.txtlog.value = '<?php echo esc_js( __('Error: Live Log did not receive the expected response from your server:', 'ninjafirewall') ) ?>' + "\n\n" + http.responseText;
|
116 |
-
} else {
|
117 |
-
var line = http.responseText.substr(1);
|
118 |
-
// Get number of lines :
|
119 |
-
var res = line.split(/\n/).length - 1;
|
120 |
-
// Work around for old IE bug :
|
121 |
-
if (! res) { res = 1; }
|
122 |
-
if (lines == 0) {
|
123 |
-
document.liveform.txtlog.value = line;
|
124 |
-
} else {
|
125 |
-
document.liveform.txtlog.value += line;
|
126 |
-
}
|
127 |
-
lines += res;
|
128 |
-
if (scroll) {
|
129 |
-
document.getElementById("idtxtlog").scrollTop = document.getElementById("idtxtlog").scrollHeight;
|
130 |
-
}
|
131 |
-
}
|
132 |
-
}
|
133 |
-
} else if (http.status == 404) {
|
134 |
-
document.liveform.txtlog.value += '<?php echo esc_js( __('Error: URL does not seem to exist:', 'ninjafirewall') ) ?> ' + ajaxURL + "\n";
|
135 |
-
} else if (http.status == 503) {
|
136 |
-
document.liveform.txtlog.value += '<?php echo esc_js( __('Error: cannot find your log file. Try to reload this page.', 'ninjafirewall') ) ?>' + "\n";
|
137 |
-
} else {
|
138 |
-
document.liveform.txtlog.value += '<?php echo esc_js( __('Error: the HTTP server returned the following error code:', 'ninjafirewall') ) ?> ' + http.status + "\n";
|
139 |
-
}
|
140 |
-
if (document.liveform.txtlog.value == '') {
|
141 |
-
document.liveform.txtlog.value = '<?php echo esc_js( __('No traffic yet, please wait...', 'ninjafirewall') ) ?>' + "\n";
|
142 |
-
}
|
143 |
-
document.getElementById('loading').innerHTML = "<?php echo esc_js( __('Sleeping', 'ninjafirewall') ) ?> " + liveint/1000 + " <?php echo esc_js( __('seconds', 'ninjafirewall') ) ?>...";
|
144 |
-
document.getElementById('radioon').style.background = 'green';
|
145 |
-
document.getElementById('radiooff').disabled = false;
|
146 |
-
return false;
|
147 |
-
}
|
148 |
-
}
|
149 |
-
function on_off(onoff) {
|
150 |
-
if (onoff == 1 && liveon != 1) {
|
151 |
-
liveon = 1;
|
152 |
-
live_fetch();
|
153 |
-
if (scroll == 1) {
|
154 |
-
document.getElementById("idtxtlog").scrollTop = document.getElementById("idtxtlog").scrollHeight;
|
155 |
-
}
|
156 |
-
document.getElementById("loading").innerHTML = "<?php echo esc_js( __('Sleeping', 'ninjafirewall') ) ?> " + liveint/1000 + " <?php echo esc_js( __('seconds', 'ninjafirewall') ) ?>...";
|
157 |
-
document.getElementById("liveint").disabled = false;
|
158 |
-
document.getElementById("livescroll").disabled = false;
|
159 |
-
document.getElementById('radioon').style.background = 'green';
|
160 |
-
document.getElementById('radioon').style.color = 'white';
|
161 |
-
myinterval = setInterval(live_fetch, liveint);
|
162 |
-
} else if (onoff != 1 && liveon == 1) {
|
163 |
-
liveon = 0;
|
164 |
-
lines = 0;
|
165 |
-
document.getElementById("loading").innerHTML = " ";
|
166 |
-
document.getElementById("liveint").disabled = true;
|
167 |
-
document.getElementById("livescroll").disabled = true;
|
168 |
-
clearInterval(myinterval);
|
169 |
-
document.getElementById('radioon').style.background = '';
|
170 |
-
document.getElementById('radioon').style.color = '';
|
171 |
-
}
|
172 |
-
}
|
173 |
-
function change_int(intv) {
|
174 |
-
clearInterval(myinterval);
|
175 |
-
liveint = intv;
|
176 |
-
document.getElementById("loading").innerHTML = "<?php echo esc_js( __('Sleeping', 'ninjafirewall') ) ?> " + liveint/1000 + " <?php echo esc_js( __('seconds', 'ninjafirewall') ) ?>...";
|
177 |
-
myinterval = setInterval(live_fetch, liveint);
|
178 |
-
// Add cookie so that we remember the user choice for 365 days:
|
179 |
-
create_cookie('nfwintval', intv);
|
180 |
-
}
|
181 |
-
function cls() {
|
182 |
-
document.liveform.txtlog.value = '';
|
183 |
-
livecls = 1;
|
184 |
-
lines = 0;
|
185 |
-
}
|
186 |
-
function is_scroll() {
|
187 |
-
if (document.liveform.livescroll.checked == true) {
|
188 |
-
scroll = 1;
|
189 |
-
if (liveon == 1) {
|
190 |
-
document.getElementById("idtxtlog").scrollTop = document.getElementById("idtxtlog").scrollHeight;
|
191 |
-
}
|
192 |
-
} else {
|
193 |
-
scroll = 0;
|
194 |
-
}
|
195 |
-
// Add cookie so that we remember the user choice for 365 days:
|
196 |
-
create_cookie('nfwscroll', scroll);
|
197 |
-
}
|
198 |
-
function create_cookie(name, value) {
|
199 |
-
// Add cookie so that we remember the user choice for 365 days:
|
200 |
-
var d = new Date();
|
201 |
-
d.setTime(d.getTime() + ( 365 * 24 * 60 * 60 * 1000) );
|
202 |
-
var expires = "expires=" + d.toUTCString();
|
203 |
-
document.cookie = name +'=' + value + "; " + expires;
|
204 |
-
}
|
205 |
-
function lv_select( value ) {
|
206 |
-
if ( value > 0 ) {
|
207 |
-
document.getElementById('lr-disabled').disabled = false;
|
208 |
-
document.getElementById('lr-disabled').focus();
|
209 |
-
} else {
|
210 |
-
document.getElementById('lr-disabled').disabled = true;
|
211 |
-
}
|
212 |
}
|
|
|
|
|
|
|
|
|
|
|
213 |
</script>
|
214 |
-
|
215 |
<div class="wrap">
|
216 |
-
<h1><img style="vertical-align:top;
|
217 |
<?php
|
218 |
-
if ( isset($_POST['lf']) ) {
|
219 |
$res = nf_sub_liveloge_save();
|
220 |
-
if ($res) {
|
221 |
-
echo '<div class="error notice is-dismissible"><p>'
|
222 |
} else {
|
223 |
echo '<div class="updated notice is-dismissible"><p>'. __('Your changes have been saved.', 'ninjafirewall') .'</p></div>';
|
224 |
}
|
@@ -235,45 +94,50 @@ if ( defined('NFW_TEXTAREA_HEIGHT') ) {
|
|
235 |
<table class="form-table">
|
236 |
<tr>
|
237 |
<td style="width:100%;text-align:center;">
|
238 |
-
<
|
239 |
-
<
|
|
|
240 |
<br />
|
241 |
-
<
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
<option value="
|
248 |
-
<option value="
|
249 |
-
|
250 |
-
|
251 |
-
|
|
|
|
|
|
|
252 |
</td>
|
253 |
</tr>
|
254 |
</table>
|
255 |
-
<
|
256 |
</form>
|
257 |
<?php
|
258 |
-
|
|
|
259 |
$lf = 0;
|
260 |
$liveformat = '';
|
261 |
} else {
|
262 |
$lf = 1;
|
263 |
-
$liveformat = htmlspecialchars($nfw_options['liveformat']);
|
264 |
}
|
265 |
|
266 |
-
if ( empty($nfw_options['liveport']) || ! preg_match('/^[1-2]$/', $nfw_options['liveport']) ) {
|
267 |
$liveport = 0;
|
268 |
} else {
|
269 |
$liveport = $nfw_options['liveport'];
|
270 |
}
|
271 |
-
if ( empty($nfw_options['livetz']) || preg_match('/[^\w\/]/', $nfw_options['livetz']) ) {
|
272 |
$livetz = 'UTC';
|
273 |
} else {
|
274 |
$livetz = $nfw_options['livetz'];
|
275 |
}
|
276 |
-
if ( empty( $nfw_options['liverules'] ) || ! preg_match('/^[0-2]$/', $nfw_options['liverules']) ) {
|
277 |
$liverules = 0;
|
278 |
$lr_disabled = 'disabled="disabled" ';
|
279 |
} else {
|
@@ -286,41 +150,43 @@ if ( empty( $nfw_options['liverulespath'] ) ) {
|
|
286 |
$liverulespath = $nfw_options['liverulespath'];
|
287 |
}
|
288 |
?>
|
|
|
289 |
<form method="post">
|
290 |
-
<h3><?php _e('Live Log
|
291 |
-
<table class="form-table">
|
292 |
<tr>
|
293 |
-
<th scope="row"><?php _e('Inclusion and exclusion filters (REQUEST_URI)', 'ninjafirewall') ?></th>
|
294 |
<td>
|
295 |
-
<select name="liverules" onchange="
|
296 |
<option value="0"<?php selected($liverules, 0) ?>><?php _e('None', 'ninjafirewall') ?></option>
|
297 |
<option value="1"<?php selected($liverules, 1) ?>><?php _e('Must include', 'ninjafirewall') ?></option>
|
298 |
<option value="2"<?php selected($liverules, 2) ?>><?php _e('Must not include', 'ninjafirewall') ?></option>
|
299 |
-
</select> 
|
|
|
300 |
<br />
|
301 |
-
<
|
302 |
</td>
|
303 |
</tr>
|
304 |
<tr>
|
305 |
-
<th scope="row"><?php _e('Format', 'ninjafirewall') ?></th>
|
306 |
<td>
|
307 |
<p><label><input type="radio" name="lf" value="0"<?php checked($lf, 0) ?> onclick="document.getElementById('liveformat').disabled=true"><code>[%time] %name %client "%method %uri" "%referrer" "%ua" "%forward" "%host"</code></label></p>
|
308 |
<p><label><input type="radio" name="lf" value="1"<?php checked($lf, 1) ?> onclick="document.getElementById('liveformat').disabled=false;document.getElementById('liveformat').focus()"><?php _e('Custom', 'ninjafirewall') ?> </label><input id="liveformat" type="text" class="regular-text" name="liveformat" value="<?php echo $liveformat ?>"<?php disabled($lf, 0) ?> autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" /></p>
|
309 |
-
<
|
310 |
</td>
|
311 |
</tr>
|
312 |
<tr>
|
313 |
-
<th scope="row"><?php _e('Display', 'ninjafirewall') ?></th>
|
314 |
<td>
|
315 |
<select name="liveport">
|
316 |
-
<option value="0"<?php selected($liveport, 0) ?>><?php _e('HTTP and HTTPS traffic (default)', 'ninjafirewall') ?></option>
|
317 |
-
<option value="1"<?php selected($liveport, 1) ?>><?php _e('HTTP traffic only', 'ninjafirewall') ?></option>
|
318 |
-
<option value="2"<?php selected($liveport, 2) ?>><?php _e('HTTPS traffic only', 'ninjafirewall') ?></option>
|
319 |
</select>
|
320 |
</td>
|
321 |
</tr>
|
322 |
<tr>
|
323 |
-
<th scope="row"><?php _e('Timezone', 'ninjafirewall') ?></th>
|
324 |
<td>
|
325 |
<select name="livetz">
|
326 |
<?php
|
@@ -341,7 +207,7 @@ if ( empty( $nfw_options['liverulespath'] ) ) {
|
|
341 |
</div>
|
342 |
<?php
|
343 |
|
344 |
-
|
345 |
function nf_sub_liveloge_save() {
|
346 |
|
347 |
if ( empty($_POST['nfwnonce']) || ! wp_verify_nonce($_POST['nfwnonce'], 'livelog_save') ) {
|
@@ -370,7 +236,7 @@ function nf_sub_liveloge_save() {
|
|
370 |
} else {
|
371 |
if (! empty($_POST['liveformat']) ) {
|
372 |
$tmp = stripslashes($_POST['liveformat']);
|
373 |
-
//
|
374 |
$nfw_options['liveformat'] = preg_replace('`[^a-z%[\]"\x20]`', '', $tmp);
|
375 |
}
|
376 |
if (empty($_POST['liveformat']) ) {
|
@@ -393,11 +259,11 @@ function nf_sub_liveloge_save() {
|
|
393 |
$nfw_options = nfw_update_option('nfw_options', $nfw_options);
|
394 |
}
|
395 |
|
396 |
-
|
397 |
|
398 |
function nfw_timezone_choice() {
|
399 |
return array('UTC', 'Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Chatham', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap');
|
400 |
}
|
401 |
|
402 |
-
|
403 |
// EOF
|
22 |
// Block immediately if user is not allowed :
|
23 |
nf_not_allowed( 'block', __LINE__ );
|
24 |
|
25 |
+
if (! defined( 'NF_DISABLED' ) ) {
|
26 |
is_nfw_enabled();
|
27 |
}
|
28 |
+
if ( NF_DISABLED ) {
|
29 |
$err_msg = __('Error: NinjaFirewall must be enabled and working in order to use this feature.', 'ninjafirewall');
|
30 |
}
|
31 |
+
if ( empty( $_SESSION['nfw_goodguy'] ) ) {
|
32 |
$err_msg = sprintf( __('Error: You must be whitelisted in order to use that feature: click on the <a href="%s">Firewall Policies</a> menu and ensure that the "Add the Administrator to the whitelist" option is enabled.', 'ninjafirewall'), '?page=nfsubpolicies' );
|
33 |
}
|
34 |
+
if (! empty( $err_msg ) ) {
|
35 |
?>
|
36 |
<div class="wrap">
|
37 |
<h1><img style="vertical-align:top;" src="<?php echo plugins_url( '/ninjafirewall/images/ninjafirewall_32.png' ) ?>"> <?php _e('Live Log', 'ninjafirewall') ?></h1>
|
43 |
return;
|
44 |
}
|
45 |
|
46 |
+
// Create an empty log et set the required session
|
47 |
+
$fh = fopen( NFW_LOG_DIR .'/nfwlog/cache/livelog.php', 'w' );
|
48 |
+
fclose( $fh );
|
49 |
$_SESSION['nfw_livelog'] = 1;
|
50 |
|
51 |
+
|
|
|
|
|
|
|
|
|
|
|
52 |
if (! isset($_COOKIE['nfwscroll']) || ! empty($_COOKIE['nfwscroll']) ) {
|
53 |
+
// Default, if not set
|
|
|
54 |
$nfwscroll = 1;
|
55 |
} else {
|
|
|
56 |
$nfwscroll = 0;
|
57 |
}
|
58 |
+
if ( isset( $_COOKIE['nfwintval']) && preg_match('/^(5|10|20|45)000$/', $_COOKIE['nfwintval'] ) ) {
|
59 |
+
$nfwintval = (int) $_COOKIE['nfwintval'];
|
|
|
60 |
} else {
|
|
|
61 |
$nfwintval = 10000;
|
62 |
}
|
|
|
|
|
|
|
|
|
63 |
if ( NFW_IS_HTTPS == true ) {
|
64 |
+
$nfwsite = site_url( '/index.php', 'https' );
|
65 |
} else {
|
66 |
+
$nfwsite = site_url( '/index.php' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
}
|
68 |
+
?>
|
69 |
+
<script>
|
70 |
+
var liveinterval = <?php echo $nfwintval ?>;
|
71 |
+
var scroll = <?php echo $nfwscroll ?>;
|
72 |
+
var site_url = '<?php echo esc_js( $nfwsite ) ?>';
|
73 |
</script>
|
|
|
74 |
<div class="wrap">
|
75 |
+
<h1><img style="vertical-align:top;" src="<?php echo plugins_url( '/ninjafirewall/images/ninjafirewall_32.png' ) ?>"> <?php _e('Live Log', 'ninjafirewall') ?></h1>
|
76 |
<?php
|
77 |
+
if ( isset( $_POST['lf'] ) ) {
|
78 |
$res = nf_sub_liveloge_save();
|
79 |
+
if ( $res ) {
|
80 |
+
echo '<div class="error notice is-dismissible"><p>'. $res .'</p></div>';
|
81 |
} else {
|
82 |
echo '<div class="updated notice is-dismissible"><p>'. __('Your changes have been saved.', 'ninjafirewall') .'</p></div>';
|
83 |
}
|
94 |
<table class="form-table">
|
95 |
<tr>
|
96 |
<td style="width:100%;text-align:center;">
|
97 |
+
<progress id="nfw-progress" value="1" max="<?php echo ($nfwintval/1000) ?>" class="nfw-progress" style="display:none"></progress>
|
98 |
+
<br />
|
99 |
+
<textarea disabled name="txtlog" id="idtxtlog" class="small-text code" style="width:100%;height:<?php echo $th; ?>px;" wrap="off" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"></textarea>
|
100 |
<br />
|
101 |
+
<div style="float:left;width:40%;padding-top:10px;" class="nfw-right">
|
102 |
+
<?php nfw_toggle_switch( 'danger', 'nfw_options[wf_case]', __('Enabled', 'ninjafirewall'), __('Disabled', 'ninjafirewall'), 'large', 0, false, 'onclick="nfwjs_livelog()"', 'livelog-switch', 'right' ) ?>
|
103 |
+
</div>
|
104 |
+
<div style="float:right;width:60%;text-align:left;padding-top:10px;" class="nfw-left">
|
105 |
+
<?php _e('Refresh rate:', 'ninjafirewall') ?>
|
106 |
+
<select name="liveint" id="liveint" onchange="nfwjs_change_int(this.value);">
|
107 |
+
<option value="5000"<?php selected( $nfwintval, 5000 ) ?>><?php _e('5 seconds', 'ninjafirewall') ?></option>
|
108 |
+
<option value="10000"<?php selected( $nfwintval, 10000 ) ?>><?php _e('10 seconds', 'ninjafirewall') ?></option>
|
109 |
+
<option value="20000"<?php selected( $nfwintval, 20000 ) ?>><?php _e('20 seconds', 'ninjafirewall') ?></option>
|
110 |
+
<option value="45000"<?php selected( $nfwintval, 45000 ) ?>><?php _e('45 seconds', 'ninjafirewall') ?></option>
|
111 |
+
</select>
|
112 |
+
<input type="button" class="button-secondary" name="livecls" value="<?php _e('Clear screen', 'ninjafirewall') ?>" onClick="nfwjs_cls()" />
|
113 |
+
<label><input type="checkbox" name="livescroll" id="livescroll" value="1" onchange="nfwjs_is_scroll()" <?php checked($nfwscroll, 1)?> /><?php _e('Autoscrolling', 'ninjafirewall') ?></label>
|
114 |
+
</div>
|
115 |
</td>
|
116 |
</tr>
|
117 |
</table>
|
118 |
+
<p class="description alignright"><?php _e('Live Log will not display whitelisted users and brute-force attacks.', 'ninjafirewall') ?></p>
|
119 |
</form>
|
120 |
<?php
|
121 |
+
|
122 |
+
if ( empty( $nfw_options['liveformat'] ) ) {
|
123 |
$lf = 0;
|
124 |
$liveformat = '';
|
125 |
} else {
|
126 |
$lf = 1;
|
127 |
+
$liveformat = htmlspecialchars( $nfw_options['liveformat'] );
|
128 |
}
|
129 |
|
130 |
+
if ( empty( $nfw_options['liveport'] ) || ! preg_match('/^[1-2]$/', $nfw_options['liveport'] ) ) {
|
131 |
$liveport = 0;
|
132 |
} else {
|
133 |
$liveport = $nfw_options['liveport'];
|
134 |
}
|
135 |
+
if ( empty( $nfw_options['livetz'] ) || preg_match('/[^\w\/]/', $nfw_options['livetz'] ) ) {
|
136 |
$livetz = 'UTC';
|
137 |
} else {
|
138 |
$livetz = $nfw_options['livetz'];
|
139 |
}
|
140 |
+
if ( empty( $nfw_options['liverules'] ) || ! preg_match('/^[0-2]$/', $nfw_options['liverules'] ) ) {
|
141 |
$liverules = 0;
|
142 |
$lr_disabled = 'disabled="disabled" ';
|
143 |
} else {
|
150 |
$liverulespath = $nfw_options['liverulespath'];
|
151 |
}
|
152 |
?>
|
153 |
+
<br />
|
154 |
<form method="post">
|
155 |
+
<h3><?php _e('Live Log Options', 'ninjafirewall') ?></h3>
|
156 |
+
<table class="form-table nfw-table">
|
157 |
<tr>
|
158 |
+
<th scope="row" class="row-med"><?php _e('Inclusion and exclusion filters (REQUEST_URI)', 'ninjafirewall') ?></th>
|
159 |
<td>
|
160 |
+
<select name="liverules" onchange="nfwjs_lv_select(this.value);">
|
161 |
<option value="0"<?php selected($liverules, 0) ?>><?php _e('None', 'ninjafirewall') ?></option>
|
162 |
<option value="1"<?php selected($liverules, 1) ?>><?php _e('Must include', 'ninjafirewall') ?></option>
|
163 |
<option value="2"<?php selected($liverules, 2) ?>><?php _e('Must not include', 'ninjafirewall') ?></option>
|
164 |
+
</select>
|
165 |
+
<input <?php echo $lr_disabled; ?>type="text" id="lr-disabled" class="regular-text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" name="liverulespath" value="<?php echo htmlentities( $liverulespath ) ?>" placeholder="<?php _e('e.g.,', 'ninjafirewall') ?> /blog <?php _e('or', 'ninjafirewall') ?> admin.php <?php _e('or', 'ninjafirewall') ?> index.php,/blog" />
|
166 |
<br />
|
167 |
+
<p class="description"><?php _e('Full or partial case-sensitive REQUEST_URI string. Multiple values must be comma-separated.', 'ninjafirewall') ?></p>
|
168 |
</td>
|
169 |
</tr>
|
170 |
<tr>
|
171 |
+
<th scope="row" class="row-med"><?php _e('Format', 'ninjafirewall') ?></th>
|
172 |
<td>
|
173 |
<p><label><input type="radio" name="lf" value="0"<?php checked($lf, 0) ?> onclick="document.getElementById('liveformat').disabled=true"><code>[%time] %name %client "%method %uri" "%referrer" "%ua" "%forward" "%host"</code></label></p>
|
174 |
<p><label><input type="radio" name="lf" value="1"<?php checked($lf, 1) ?> onclick="document.getElementById('liveformat').disabled=false;document.getElementById('liveformat').focus()"><?php _e('Custom', 'ninjafirewall') ?> </label><input id="liveformat" type="text" class="regular-text" name="liveformat" value="<?php echo $liveformat ?>"<?php disabled($lf, 0) ?> autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" /></p>
|
175 |
+
<p class="description"><?php _e('See contextual help for available log format.', 'ninjafirewall') ?></p>
|
176 |
</td>
|
177 |
</tr>
|
178 |
<tr>
|
179 |
+
<th scope="row" class="row-med"><?php _e('Display', 'ninjafirewall') ?></th>
|
180 |
<td>
|
181 |
<select name="liveport">
|
182 |
+
<option value="0"<?php selected( $liveport, 0 ) ?>><?php _e('HTTP and HTTPS traffic (default)', 'ninjafirewall') ?></option>
|
183 |
+
<option value="1"<?php selected( $liveport, 1 ) ?>><?php _e('HTTP traffic only', 'ninjafirewall') ?></option>
|
184 |
+
<option value="2"<?php selected( $liveport, 2 ) ?>><?php _e('HTTPS traffic only', 'ninjafirewall') ?></option>
|
185 |
</select>
|
186 |
</td>
|
187 |
</tr>
|
188 |
<tr>
|
189 |
+
<th scope="row" class="row-med"><?php _e('Timezone', 'ninjafirewall') ?></th>
|
190 |
<td>
|
191 |
<select name="livetz">
|
192 |
<?php
|
207 |
</div>
|
208 |
<?php
|
209 |
|
210 |
+
// ---------------------------------------------------------------------
|
211 |
function nf_sub_liveloge_save() {
|
212 |
|
213 |
if ( empty($_POST['nfwnonce']) || ! wp_verify_nonce($_POST['nfwnonce'], 'livelog_save') ) {
|
236 |
} else {
|
237 |
if (! empty($_POST['liveformat']) ) {
|
238 |
$tmp = stripslashes($_POST['liveformat']);
|
239 |
+
// Remove unwanted characters :
|
240 |
$nfw_options['liveformat'] = preg_replace('`[^a-z%[\]"\x20]`', '', $tmp);
|
241 |
}
|
242 |
if (empty($_POST['liveformat']) ) {
|
259 |
$nfw_options = nfw_update_option('nfw_options', $nfw_options);
|
260 |
}
|
261 |
|
262 |
+
// ---------------------------------------------------------------------
|
263 |
|
264 |
function nfw_timezone_choice() {
|
265 |
return array('UTC', 'Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Chatham', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap');
|
266 |
}
|
267 |
|
268 |
+
// ---------------------------------------------------------------------
|
269 |
// EOF
|
lib/login_protection.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
| NinjaFirewall (WP+ Edition) |
|
5 |
| |
|
6 |
| (c) NinTechNet - https://nintechnet.com/ |
|
7 |
-
+=====================================================================+ sa
|
8 |
*/
|
9 |
|
10 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) {
|
@@ -18,11 +18,11 @@ nf_not_allowed( 'block', __LINE__ );
|
|
18 |
|
19 |
echo '
|
20 |
<div class="wrap">
|
21 |
-
<h1><img style="vertical-align:top
|
22 |
|
23 |
// Saved ?
|
24 |
-
if ( isset( $_POST['nfw_options']) ) {
|
25 |
-
if ( empty($_POST['nfwnonce']) || ! wp_verify_nonce($_POST['nfwnonce'], 'bfd_save') ) {
|
26 |
wp_nonce_ays('bfd_save');
|
27 |
}
|
28 |
$res = nf_sub_loginprot_save();
|
@@ -38,10 +38,10 @@ if ( file_exists( NFW_LOG_DIR . '/nfwlog/cache/bf_conf.php' ) ) {
|
|
38 |
|
39 |
$bfconfig = nfw_read_bf_config( NFW_LOG_DIR . '/nfwlog/cache/bf_conf.php' );
|
40 |
|
41 |
-
if (!
|
42 |
$bfconfig['bf_enable'] = 0;
|
43 |
}
|
44 |
-
if (
|
45 |
$bfconfig['bf_request'] = 'POST';
|
46 |
}
|
47 |
if ( $bfconfig['bf_request'] == 'GETPOST' ) {
|
@@ -49,16 +49,19 @@ if ( file_exists( NFW_LOG_DIR . '/nfwlog/cache/bf_conf.php' ) ) {
|
|
49 |
} else {
|
50 |
$get_post = $bfconfig['bf_request'];
|
51 |
}
|
52 |
-
if (!
|
53 |
$bfconfig['bf_bantime'] = 5;
|
54 |
}
|
55 |
-
if (!
|
56 |
$bfconfig['bf_attempt'] = 8;
|
57 |
}
|
58 |
-
if (!
|
59 |
$bfconfig['bf_maxtime'] = 15;
|
60 |
}
|
61 |
-
if ( empty(
|
|
|
|
|
|
|
62 |
$bfconfig['auth_name']= '';
|
63 |
}
|
64 |
if ( empty( $bfconfig['auth_msgtxt'] ) ) {
|
@@ -74,7 +77,6 @@ if ( file_exists( NFW_LOG_DIR . '/nfwlog/cache/bf_conf.php' ) ) {
|
|
74 |
if ( strlen( $bfconfig['auth_msgtxt'] ) > 1024 ) {
|
75 |
$bfconfig['auth_msgtxt'] = mb_substr( $bfconfig['auth_msgtxt'], 0, 1024, 'utf-8' );
|
76 |
}
|
77 |
-
|
78 |
if ( empty( $bfconfig['captcha_text'] ) ) {
|
79 |
$bfconfig['captcha_text'] = __( 'Type the characters you see in the picture below:', 'ninjafirewall' );
|
80 |
} else {
|
@@ -84,12 +86,12 @@ if ( file_exists( NFW_LOG_DIR . '/nfwlog/cache/bf_conf.php' ) ) {
|
|
84 |
}
|
85 |
}
|
86 |
|
87 |
-
if (empty($bfconfig['bf_xmlrpc']) ) {
|
88 |
$bfconfig['bf_xmlrpc'] = 0;
|
89 |
} else {
|
90 |
$bfconfig['bf_xmlrpc'] = 1;
|
91 |
}
|
92 |
-
if (empty($bfconfig['bf_authlog']) ) {
|
93 |
$bfconfig['bf_authlog'] = 0;
|
94 |
} else {
|
95 |
$bfconfig['bf_authlog'] = 1;
|
@@ -114,7 +116,7 @@ if ( file_exists( NFW_LOG_DIR . '/nfwlog/cache/bf_conf.php' ) ) {
|
|
114 |
|
115 |
} else {
|
116 |
// Default values :
|
117 |
-
$bfconfig['bf_type'] =
|
118 |
$bfconfig['bf_enable'] = 0;
|
119 |
$bfconfig['bf_request'] = 'POST';
|
120 |
$bfconfig['bf_bantime'] = 5;
|
@@ -130,315 +132,242 @@ if ( file_exists( NFW_LOG_DIR . '/nfwlog/cache/bf_conf.php' ) ) {
|
|
130 |
$get_post = 'POST';
|
131 |
}
|
132 |
?>
|
133 |
-
|
134 |
-
function is_number(id) {
|
135 |
-
var e = document.getElementById(id);
|
136 |
-
if (! e.value ) { return }
|
137 |
-
if (! /^[1-9][0-9]?$/.test(e.value) ) {
|
138 |
-
alert("<?php echo esc_js( __('Please enter a number from 1 to 99 in \'Password-protect\' field.', 'ninjafirewall') ) ?>");
|
139 |
-
e.value = e.value.substring(0, e.value.length-1);
|
140 |
-
}
|
141 |
-
}
|
142 |
-
function auth_user_valid() {
|
143 |
-
var e = document.bp_form.elements['nfw_options[auth_name]'];
|
144 |
-
if ( e.value.match(/[^-\/\\_.a-zA-Z0-9]/) ) {
|
145 |
-
alert('<?php echo esc_js( __('Invalid character.', 'ninjafirewall') ) ?>');
|
146 |
-
e.value = e.value.replace(/[^-\/\\_.a-zA-Z0-9]/g,'');
|
147 |
-
return false;
|
148 |
-
}
|
149 |
-
if (e.value == 'admin') {
|
150 |
-
alert('<?php echo esc_js( __('"admin" is not acceptable, please choose another user name.', 'ninjafirewall') ) ?>');
|
151 |
-
e.value = '';
|
152 |
-
return false;
|
153 |
-
}
|
154 |
-
}
|
155 |
-
function realm_valid() {
|
156 |
-
var e = document.getElementById("realm").value;
|
157 |
-
if ( e.length >= 1024 ) {
|
158 |
-
alert('<?php echo esc_js( __('Please enter max 1024 character only.', 'ninjafirewall') ) ?>');
|
159 |
-
return false;
|
160 |
-
}
|
161 |
-
}
|
162 |
-
|
163 |
var bf_type = <?php echo $bfconfig['bf_type'] ?>;
|
164 |
var bf_enable = <?php echo $bfconfig['bf_enable'] ?>;
|
165 |
-
|
166 |
-
if ( enable == 0 ) {
|
167 |
-
// Disable protection
|
168 |
-
bf_enable = 0;
|
169 |
-
jQuery("#submenu_table").slideUp();
|
170 |
-
jQuery("#bf_table").slideUp();
|
171 |
-
jQuery("#bf_table_extra").slideUp();
|
172 |
-
jQuery("#bf_table_password").slideUp();
|
173 |
-
jQuery("#bf_table_captcha").slideUp();
|
174 |
-
} else {
|
175 |
-
bf_enable = enable;
|
176 |
-
jQuery("#submenu_table").slideDown();
|
177 |
-
// Display the right table (captcha or password protection)
|
178 |
-
toggle_table( enable, bf_type );
|
179 |
-
jQuery("#bf_table_extra").slideDown();
|
180 |
-
}
|
181 |
-
}
|
182 |
-
function toggle_table( enable, type ) {
|
183 |
-
if ( type == 1 ) {
|
184 |
-
// Captcha
|
185 |
-
bf_type = 1;
|
186 |
-
if ( enable == 1 ) {
|
187 |
-
// Yes, if under attack
|
188 |
-
jQuery("#bf_table").slideDown();
|
189 |
-
} else {
|
190 |
-
// Always ON
|
191 |
-
jQuery("#bf_table").slideUp();
|
192 |
-
}
|
193 |
-
jQuery("#bf_table_password").slideUp();
|
194 |
-
jQuery("#bf_table_captcha").slideDown();
|
195 |
-
} else { // type == 2
|
196 |
-
// Password
|
197 |
-
bf_type = 0;
|
198 |
-
if ( enable == 1 ) {
|
199 |
-
// Yes, if under attack
|
200 |
-
jQuery("#bf_table").slideDown();
|
201 |
-
} else {
|
202 |
-
// Always ON
|
203 |
-
jQuery("#bf_table").slideUp();
|
204 |
-
}
|
205 |
-
jQuery("#bf_table_password").slideDown();
|
206 |
-
jQuery("#bf_table_captcha").slideUp();
|
207 |
-
}
|
208 |
-
}
|
209 |
-
function xmlrpc_warn( what ) {
|
210 |
-
if ( bf_enable == 2 && what.checked == true ) {
|
211 |
-
alert("<?php echo esc_js( __("Note: Access to the XML-RPC API will be completely disabled when the brute-force attack protection is set to 'Always ON'.", 'ninjafirewall') ) ?>");
|
212 |
-
}
|
213 |
-
}
|
214 |
-
|
215 |
-
function getpost(request){
|
216 |
-
if ( request == 'GETPOST' ) {
|
217 |
-
request = 'GET/POST';
|
218 |
-
}
|
219 |
-
document.getElementById('get_post').innerHTML = request;
|
220 |
-
}
|
221 |
-
</script>
|
222 |
<br />
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
231 |
$show_bf_table_captcha = 0;
|
232 |
-
|
233 |
-
// Protection set to "Yes, if under attack":
|
234 |
-
} elseif ( $bfconfig['bf_enable'] == 1 ) {
|
235 |
-
$show_submenu_table = 1;
|
236 |
-
$show_bf_table = 1;
|
237 |
-
$show_bf_table_extra = 1;
|
238 |
-
// Password?
|
239 |
-
if ( empty( $bfconfig['bf_type'] ) ) {
|
240 |
-
$show_bf_table_password = 1;
|
241 |
-
$show_bf_table_captcha = 0;
|
242 |
-
// Captcha?
|
243 |
-
} else {
|
244 |
-
$show_bf_table_password = 0;
|
245 |
-
$show_bf_table_captcha = 1;
|
246 |
-
}
|
247 |
-
|
248 |
-
// Protection set to "Always ON" (2):
|
249 |
} else {
|
250 |
-
$
|
251 |
-
$
|
252 |
-
$show_bf_table_extra = 1;
|
253 |
-
// Password?
|
254 |
-
if ( empty( $bfconfig['bf_type'] ) ) {
|
255 |
-
$show_bf_table_password = 1;
|
256 |
-
$show_bf_table_captcha = 0;
|
257 |
-
// Captcha?
|
258 |
-
} else {
|
259 |
-
$show_bf_table_password = 0;
|
260 |
-
$show_bf_table_captcha = 1;
|
261 |
-
|
262 |
-
}
|
263 |
}
|
264 |
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
269 |
} else {
|
270 |
-
$
|
271 |
-
|
272 |
-
$gd_disabled = ' disabled="disabled"';
|
273 |
}
|
|
|
274 |
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
279 |
|
280 |
-
|
|
|
281 |
|
282 |
-
<form method="post" name="bp_form">
|
283 |
<?php wp_nonce_field('bfd_save', 'nfwnonce', 0); ?>
|
284 |
-
|
|
|
285 |
<tr style="background-color:#F9F9F9;border: solid 1px #DFDFDF;">
|
286 |
-
<th scope="row"><?php _e('Enable brute force attack protection', 'ninjafirewall') ?></th>
|
287 |
-
<td> </td>
|
288 |
-
<td>
|
289 |
-
<label><input type="radio" name="nfw_options[bf_enable]" value="1"<?php checked($bfconfig['bf_enable'], 1) ?> onclick="toggle_submenu(1);"> <?php _e('Yes, if under attack', 'ninjafirewall') ?></label>
|
290 |
-
</td>
|
291 |
<td>
|
292 |
-
|
293 |
-
</td>
|
294 |
-
<td>
|
295 |
-
<label><input type="radio" name="nfw_options[bf_enable]" value="0"<?php checked($bfconfig['bf_enable'], 0) ?> onclick="toggle_submenu(0);"> <?php _e('No (default)', 'ninjafirewall') ?></label>
|
296 |
</td>
|
297 |
</tr>
|
298 |
</table>
|
299 |
-
<br />
|
300 |
|
301 |
-
<
|
302 |
-
<table class="form-table">
|
303 |
|
304 |
-
|
305 |
-
<th scope="row"><?php _e('Type of protection', 'ninjafirewall') ?></th>
|
306 |
-
<td> </td>
|
307 |
-
<td style="vertical-align:top">
|
308 |
-
<label><input type="radio" name="nfw_options[bf_type]" value="0"<?php checked($bfconfig['bf_type'], 0) ?> onclick="toggle_table(bf_enable, 0);"> <?php _e('Password', 'ninjafirewall') ?></label>
|
309 |
-
</td>
|
310 |
-
<td style="vertical-align:top">
|
311 |
-
<label><input type="radio" name="nfw_options[bf_type]" value="1"<?php checked($bfconfig['bf_type'], 1) ?> onclick="toggle_table(bf_enable, 1);"<?php echo $gd_disabled ?> /> <?php _e('Captcha', 'ninjafirewall') ?></label><?php echo $missing_gd ?>
|
312 |
-
</td>
|
313 |
-
</tr>
|
314 |
-
</table>
|
315 |
-
</div>
|
316 |
|
317 |
-
<div id="bf_table"<?php echo $show_bf_table == 1 ? '' : ' style="display:none"' ?>>
|
318 |
<table class="form-table">
|
319 |
<tr>
|
320 |
-
<th scope="row"><?php _e('
|
321 |
<td>
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
</td>
|
326 |
</tr>
|
327 |
-
<tr
|
328 |
-
<th scope="row"><?php _e('
|
329 |
<td>
|
330 |
-
|
331 |
-
|
332 |
-
'<input maxlength="2" size="2" value="'. $bfconfig['bf_bantime'] .'" name="nfw_options[bf_bantime]" id="ban1" onkeyup="is_number(\'ban1\')" class="small-text" type="number" />',
|
333 |
-
'<input maxlength="2" size="2" value="'. $bfconfig['bf_attempt'] .'" name="nfw_options[bf_attempt]" id="ban2" onkeyup="is_number(\'ban2\')" class="small-text" type="number" />', '<code id="get_post">'. $get_post .'</code>',
|
334 |
-
'<input maxlength="2" size="2" value="'. $bfconfig['bf_maxtime'] .'" name="nfw_options[bf_maxtime]" id="ban3" onkeyup="is_number(\'ban3\')" class="small-text" type="number" />'
|
335 |
-
);
|
336 |
-
?>
|
337 |
</td>
|
338 |
-
</tr>
|
339 |
-
</table>
|
340 |
-
</div>
|
341 |
-
|
342 |
-
<?php
|
343 |
-
if ( empty($bfconfig['auth_pass']) ) {
|
344 |
-
$placeholder = '';
|
345 |
-
} else {
|
346 |
-
$placeholder = '••••••••';
|
347 |
-
}
|
348 |
-
?>
|
349 |
-
<div id="bf_table_password"<?php echo $show_bf_table_password ? '' : ' style="display:none"' ?>>
|
350 |
-
<table class="form-table">
|
351 |
-
<tr valign="top">
|
352 |
-
<th scope="row"><?php _e('HTTP authentication', 'ninjafirewall') ?></th>
|
353 |
<td>
|
354 |
-
<?php _e('User:', 'ninjafirewall') ?> <input maxlength="32" type="text" autocomplete="off" value="<?php echo htmlspecialchars( $bfconfig['auth_name'] ) ?>" size="12" name="nfw_options[auth_name]" onkeyup="auth_user_valid();" /> <?php _e('Password:', 'ninjafirewall') ?> <input maxlength="32" placeholder="<?php echo $placeholder ?>" type="password" autocomplete="off" value="" size="12" name="nfw_options[auth_pass]" />
|
355 |
-
<br /><span class="description"> <?php _e('User and Password must be from 6 to 32 characters.', 'ninjafirewall') ?></span>
|
356 |
-
<br /><br /><?php _e('Message (max. 1024 characters, HTML tags allowed)', 'ninjafirewall') ?>:<br />
|
357 |
-
<textarea id="realm" name="nfw_options[auth_msgtxt]" class="small-text code" cols="60" rows="5" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" oninput="realm_valid();"><?php echo htmlspecialchars( $bfconfig['auth_msgtxt'] ) ?></textarea>
|
358 |
-
</td>
|
359 |
</tr>
|
|
|
360 |
</table>
|
361 |
-
</div>
|
362 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
363 |
|
364 |
-
<div id="bf_table_captcha"<?php echo $show_bf_table_captcha ? '' : ' style="display:none"' ?>>
|
365 |
-
<table class="form-table">
|
366 |
-
<tr valign="top">
|
367 |
-
<th scope="row"><?php _e('Message', 'ninjafirewall') ?></th>
|
368 |
-
<td>
|
369 |
-
<input maxlength="255" class="large-text" type="text" autocomplete="off" value="<?php echo htmlspecialchars( $bfconfig['captcha_text'] ) ?>" name="nfw_options[captcha_text]" />
|
370 |
-
<p><span class="description"><?php _e('This message will be displayed above the captcha. Max. 255 characters.', 'ninjafirewall') ?></span></p>
|
371 |
-
</td>
|
372 |
-
</tr>
|
373 |
-
</table>
|
374 |
</div>
|
375 |
|
|
|
376 |
|
377 |
-
<div id="bf_table_extra"<?php echo $show_bf_table_extra ? '' : ' style="display:none"' ?>>
|
378 |
-
<
|
379 |
-
<h3><?php _e('Various options', 'ninjafirewall') ?></h3>
|
380 |
<table class="form-table">
|
381 |
<?php
|
382 |
-
// Warn the user if Jetpack is installed
|
383 |
if ( is_dir( WP_PLUGIN_DIR . '/jetpack' ) ) {
|
384 |
-
$is_JetPack = '<p
|
385 |
} else {
|
386 |
$is_JetPack = '';
|
387 |
}
|
388 |
?>
|
389 |
<tr>
|
390 |
-
<th scope="row"><?php _e('
|
391 |
<td>
|
392 |
-
|
|
|
393 |
</td>
|
394 |
</tr>
|
395 |
|
396 |
<tr>
|
397 |
-
<th scope="row"><?php _e('
|
398 |
<td>
|
399 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
400 |
</td>
|
401 |
</tr>
|
402 |
|
403 |
-
<tr
|
404 |
-
<th scope="row"><?php _e('Authentication log', 'ninjafirewall') ?></th>
|
405 |
<td>
|
406 |
<?php
|
407 |
// Ensure that openlog() and syslog() are not disabled:
|
408 |
if (! function_exists('syslog') || ! function_exists('openlog') ) {
|
409 |
$bfconfig['bf_authlog'] = 0;
|
410 |
$bf_msg = __('Your server configuration is not compatible with that option.', 'ninjafirewall');
|
411 |
-
$
|
412 |
} else {
|
413 |
-
$bf_msg = __('The login protection must be set to "
|
414 |
-
$
|
|
|
|
|
|
|
|
|
415 |
}
|
416 |
-
?>
|
417 |
-
<
|
418 |
-
<br />
|
419 |
-
<span class="description"><?php echo $bf_msg ?></span>
|
420 |
</td>
|
421 |
</tr>
|
422 |
<tr>
|
423 |
-
<th scope="row"><?php _e('
|
424 |
<td>
|
425 |
-
|
426 |
-
// translators: "Brute-force protection by NinjaFirewall" should not be translated.
|
427 |
-
_e('Disable the <i>Brute-force protection by NinjaFirewall</i> signature on the protection page.', 'ninjafirewall') ?></label>
|
428 |
</td>
|
429 |
</tr>
|
430 |
-
|
431 |
</table>
|
|
|
432 |
</div>
|
433 |
|
434 |
<br />
|
435 |
-
|
436 |
-
<
|
437 |
-
|
438 |
-
|
439 |
-
<
|
|
|
|
|
|
|
440 |
</div>
|
441 |
-
|
|
|
442 |
</div>
|
443 |
|
444 |
<?php
|
@@ -447,10 +376,10 @@ if ( file_exists( NFW_LOG_DIR . '/nfwlog/cache/bf_conf.php' ) ) {
|
|
447 |
|
448 |
function nf_sub_loginprot_save() {
|
449 |
|
450 |
-
// Block immediately if user is not allowed
|
451 |
nf_not_allowed( 'block', __LINE__ );
|
452 |
|
453 |
-
// The directory must be writable
|
454 |
if (! is_writable( NFW_LOG_DIR . '/nfwlog/cache' ) ) {
|
455 |
return( sprintf( __('Error: %s directory is not writable. Please chmod it to 0777.', 'ninjafirewall'), '<code>'. htmlspecialchars(NFW_LOG_DIR) .'/nfwlog/cache</code>') );
|
456 |
}
|
@@ -462,42 +391,42 @@ function nf_sub_loginprot_save() {
|
|
462 |
require( NFW_LOG_DIR . '/nfwlog/cache/bf_conf.php' );
|
463 |
}
|
464 |
|
465 |
-
if (
|
466 |
-
$
|
|
|
|
|
|
|
|
|
467 |
} else {
|
468 |
-
$bf_enable =
|
469 |
}
|
470 |
|
471 |
-
if ( preg_match( '/^[01]$/', $_POST['nfw_options']['bf_type'] ) ) {
|
472 |
-
$bf_type = $_POST['nfw_options']['bf_type'];
|
473 |
} else {
|
474 |
$bf_type = 0;
|
475 |
}
|
476 |
|
477 |
-
// Ensure we have all values, otherwise set the default ones
|
478 |
-
if (
|
479 |
$bf_request = $_POST['nfw_options']['bf_request'];
|
480 |
} else {
|
481 |
-
// Default value :
|
482 |
$bf_request = 'POST';
|
483 |
}
|
484 |
|
485 |
-
if (
|
486 |
-
$bf_bantime = $_POST['nfw_options']['bf_bantime'];
|
487 |
} else {
|
488 |
-
// Default value :
|
489 |
$bf_bantime = 5;
|
490 |
}
|
491 |
-
if (
|
492 |
-
$bf_attempt = $_POST['nfw_options']['bf_attempt'];
|
493 |
} else {
|
494 |
-
// Default value :
|
495 |
$bf_attempt = 8;
|
496 |
}
|
497 |
-
if (
|
498 |
-
$bf_maxtime = $_POST['nfw_options']['bf_maxtime'];
|
499 |
} else {
|
500 |
-
// Default value :
|
501 |
$bf_maxtime = 15;
|
502 |
}
|
503 |
|
4 |
| NinjaFirewall (WP+ Edition) |
|
5 |
| |
|
6 |
| (c) NinTechNet - https://nintechnet.com/ |
|
7 |
+
+=====================================================================+ sa / 2
|
8 |
*/
|
9 |
|
10 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) {
|
18 |
|
19 |
echo '
|
20 |
<div class="wrap">
|
21 |
+
<h1><img style="vertical-align:top" src="'. plugins_url( '/ninjafirewall/images/ninjafirewall_32.png' ) .'"> ' . __('Login Protection', 'ninjafirewall') . '</h1>';
|
22 |
|
23 |
// Saved ?
|
24 |
+
if ( isset( $_POST['nfw_options'] ) ) {
|
25 |
+
if ( empty($_POST['nfwnonce'] ) || ! wp_verify_nonce( $_POST['nfwnonce'], 'bfd_save' ) ) {
|
26 |
wp_nonce_ays('bfd_save');
|
27 |
}
|
28 |
$res = nf_sub_loginprot_save();
|
38 |
|
39 |
$bfconfig = nfw_read_bf_config( NFW_LOG_DIR . '/nfwlog/cache/bf_conf.php' );
|
40 |
|
41 |
+
if ( empty( $bfconfig['bf_enable'] ) || ! preg_match('/^[12]$/', $bfconfig['bf_enable'] ) ) {
|
42 |
$bfconfig['bf_enable'] = 0;
|
43 |
}
|
44 |
+
if ( empty( $bfconfig['bf_request'] ) || preg_match('/^(GET|POST|GETPOST)$/', $bfconfig['bf_request'] ) ) {
|
45 |
$bfconfig['bf_request'] = 'POST';
|
46 |
}
|
47 |
if ( $bfconfig['bf_request'] == 'GETPOST' ) {
|
49 |
} else {
|
50 |
$get_post = $bfconfig['bf_request'];
|
51 |
}
|
52 |
+
if ( empty( $bfconfig['bf_bantime'] ) || ! preg_match('/^[1-9][0-9]?$/', $bfconfig['bf_bantime'] ) ) {
|
53 |
$bfconfig['bf_bantime'] = 5;
|
54 |
}
|
55 |
+
if ( empty( $bfconfig['bf_attempt'] ) || ! preg_match('/^[1-9][0-9]?$/', $bfconfig['bf_attempt'] ) ) {
|
56 |
$bfconfig['bf_attempt'] = 8;
|
57 |
}
|
58 |
+
if ( empty( $bfconfig['bf_maxtime'] ) || ! preg_match('/^[1-9][0-9]?$/', $bfconfig['bf_maxtime'] ) ) {
|
59 |
$bfconfig['bf_maxtime'] = 15;
|
60 |
}
|
61 |
+
if ( empty( $bfconfig['auth_pass'] ) ) {
|
62 |
+
$bfconfig['auth_pass'] = '';
|
63 |
+
}
|
64 |
+
if ( empty( $bfconfig['auth_name'] ) || strlen( $bfconfig['auth_pass'] ) != 40 ) {
|
65 |
$bfconfig['auth_name']= '';
|
66 |
}
|
67 |
if ( empty( $bfconfig['auth_msgtxt'] ) ) {
|
77 |
if ( strlen( $bfconfig['auth_msgtxt'] ) > 1024 ) {
|
78 |
$bfconfig['auth_msgtxt'] = mb_substr( $bfconfig['auth_msgtxt'], 0, 1024, 'utf-8' );
|
79 |
}
|
|
|
80 |
if ( empty( $bfconfig['captcha_text'] ) ) {
|
81 |
$bfconfig['captcha_text'] = __( 'Type the characters you see in the picture below:', 'ninjafirewall' );
|
82 |
} else {
|
86 |
}
|
87 |
}
|
88 |
|
89 |
+
if ( empty( $bfconfig['bf_xmlrpc'] ) ) {
|
90 |
$bfconfig['bf_xmlrpc'] = 0;
|
91 |
} else {
|
92 |
$bfconfig['bf_xmlrpc'] = 1;
|
93 |
}
|
94 |
+
if ( empty( $bfconfig['bf_authlog'] ) ) {
|
95 |
$bfconfig['bf_authlog'] = 0;
|
96 |
} else {
|
97 |
$bfconfig['bf_authlog'] = 1;
|
116 |
|
117 |
} else {
|
118 |
// Default values :
|
119 |
+
$bfconfig['bf_type'] = 1;
|
120 |
$bfconfig['bf_enable'] = 0;
|
121 |
$bfconfig['bf_request'] = 'POST';
|
122 |
$bfconfig['bf_bantime'] = 5;
|
132 |
$get_post = 'POST';
|
133 |
}
|
134 |
?>
|
135 |
+
<script type="text/javascript">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
136 |
var bf_type = <?php echo $bfconfig['bf_type'] ?>;
|
137 |
var bf_enable = <?php echo $bfconfig['bf_enable'] ?>;
|
138 |
+
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
139 |
<br />
|
140 |
+
<?php
|
141 |
+
// Protection is disabled:
|
142 |
+
if ( empty( $bfconfig['bf_enable'] ) ) {
|
143 |
+
$ui_enabled = 0;
|
144 |
+
$show_bf_table = 0;
|
145 |
+
$show_bf_table_password = 0;
|
146 |
+
$show_bf_table_extra = 0;
|
147 |
+
$show_bf_table_captcha = 0;
|
148 |
+
|
149 |
+
// Protection set to "When under attack":
|
150 |
+
} elseif ( $bfconfig['bf_enable'] == 1 ) {
|
151 |
+
$ui_enabled = 1;
|
152 |
+
$show_bf_table = 1;
|
153 |
+
$show_bf_table_extra = 1;
|
154 |
+
// Password?
|
155 |
+
if ( empty( $bfconfig['bf_type'] ) ) {
|
156 |
+
$show_bf_table_password = 1;
|
157 |
$show_bf_table_captcha = 0;
|
158 |
+
// Captcha?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
159 |
} else {
|
160 |
+
$show_bf_table_password = 0;
|
161 |
+
$show_bf_table_captcha = 1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
162 |
}
|
163 |
|
164 |
+
// Protection set to "Always ON" (2):
|
165 |
+
} else {
|
166 |
+
$ui_enabled = 1;
|
167 |
+
$show_bf_table = 0;
|
168 |
+
$show_bf_table_extra = 1;
|
169 |
+
// Password?
|
170 |
+
if ( empty( $bfconfig['bf_type'] ) ) {
|
171 |
+
$show_bf_table_password = 1;
|
172 |
+
$show_bf_table_captcha = 0;
|
173 |
+
// Captcha?
|
174 |
} else {
|
175 |
+
$show_bf_table_password = 0;
|
176 |
+
$show_bf_table_captcha = 1;
|
|
|
177 |
}
|
178 |
+
}
|
179 |
|
180 |
+
// Make sure we can display the captcha with the GD extension:
|
181 |
+
if ( function_exists( 'gd_info' ) ) {
|
182 |
+
$missing_gd = '';
|
183 |
+
$gd_disabled = '';
|
184 |
+
} else {
|
185 |
+
$missing_gd = '<p class="description">' .
|
186 |
+
__( 'GD Support is not available on your server, the CAPTCHA option is disabled.', 'ninjafirewall' ) . '</p>';
|
187 |
+
$gd_disabled = ' disabled="disabled"';
|
188 |
+
}
|
189 |
+
if ( $gd_disabled && $bfconfig['bf_type'] == 1 ) {
|
190 |
+
echo '<div class="error notice is-dismissible"><p>' .
|
191 |
+
__('Error: GD Support is not available on your server, the captcha protection will not work!', 'ninjafirewall') .'</p></div>';
|
192 |
+
}
|
193 |
|
194 |
+
?>
|
195 |
+
<form method="post" name="bp_form" onSubmit="return check_login_fields();">
|
196 |
|
|
|
197 |
<?php wp_nonce_field('bfd_save', 'nfwnonce', 0); ?>
|
198 |
+
|
199 |
+
<table class="form-table nfw-table">
|
200 |
<tr style="background-color:#F9F9F9;border: solid 1px #DFDFDF;">
|
201 |
+
<th scope="row" class="row-med"><?php _e('Enable brute force attack protection', 'ninjafirewall') ?></th>
|
|
|
|
|
|
|
|
|
202 |
<td>
|
203 |
+
<?php nfw_toggle_switch( 'green', 'ui_enabled', __('Enabled', 'ninjafirewall'), __('Disabled', 'ninjafirewall'), 'large', $ui_enabled, false, 'onclick="nfwjs_up_down(\'submenu_table\');nfwjs_up_down(\'bf_table_extra\');"', 'ui-enabled' ) ?>
|
|
|
|
|
|
|
204 |
</td>
|
205 |
</tr>
|
206 |
</table>
|
|
|
207 |
|
208 |
+
<br />
|
|
|
209 |
|
210 |
+
<div class="nfw-table" id="submenu_table"<?php echo $ui_enabled == 1 ? '' : ' style="display:none"' ?>>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
211 |
|
|
|
212 |
<table class="form-table">
|
213 |
<tr>
|
214 |
+
<th scope="row" class="row-med"><?php _e('Type of protection', 'ninjafirewall') ?></th>
|
215 |
<td>
|
216 |
+
<p><label><input type="radio" name="nfw_options[bf_type]" value="0"<?php checked($bfconfig['bf_type'], 0) ?> onclick="nfwjs_toggle_table(bf_enable, 0);"> <?php _e('Username + Password', 'ninjafirewall') ?></label></p>
|
217 |
+
<p><label><input type="radio" name="nfw_options[bf_type]" value="1"<?php checked($bfconfig['bf_type'], 1) ?> onclick="nfwjs_toggle_table(bf_enable, 1);"<?php echo $gd_disabled ?> /> <?php _e('Captcha image', 'ninjafirewall') ?></label></p>
|
218 |
+
<?php echo $missing_gd ?>
|
219 |
</td>
|
220 |
</tr>
|
221 |
+
<tr>
|
222 |
+
<th scope="row" class="row-med"><?php _e('When to enable the protection', 'ninjafirewall') ?></th>
|
223 |
<td>
|
224 |
+
<p><label><input type="radio" name="nfw_options[bf_enable]" value="2"<?php checked($bfconfig['bf_enable'], 2) ?> onclick="nfwjs_toggle_submenu(2);"> <?php _e('Always enabled', 'ninjafirewall') ?></label></p>
|
225 |
+
<p><label><input type="radio" name="nfw_options[bf_enable]" value="1"<?php checked($bfconfig['bf_enable'], 1) ?> onclick="nfwjs_toggle_submenu(1);"> <?php _e('When under attack', 'ninjafirewall') ?></label></p>
|
|
|
|
|
|
|
|
|
|
|
226 |
</td>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
227 |
<td>
|
|
|
|
|
|
|
|
|
|
|
228 |
</tr>
|
229 |
+
|
230 |
</table>
|
|
|
231 |
|
232 |
+
<div id="bf_table"<?php echo $show_bf_table == 1 ? '' : ' style="display:none"' ?>>
|
233 |
+
<table class="form-table">
|
234 |
+
<tr>
|
235 |
+
<th scope="row" class="row-med"><?php _e('Protect the login page against', 'ninjafirewall') ?></th>
|
236 |
+
<td>
|
237 |
+
<p><label><input onclick="nfwjs_getpost(this.value);" type="radio" name="nfw_options[bf_request]" value="GET"<?php checked($bfconfig['bf_request'], 'GET') ?>> <?php _e('<code>GET</code> request attacks', 'ninjafirewall') ?></label></p>
|
238 |
+
<p><label><input onclick="nfwjs_getpost(this.value);" type="radio" name="nfw_options[bf_request]" value="POST"<?php checked($bfconfig['bf_request'], 'POST') ?>> <?php _e('<code>POST</code> request attacks (default)', 'ninjafirewall') ?></label></p>
|
239 |
+
<p><label><input onclick="nfwjs_getpost(this.value);" type="radio" name="nfw_options[bf_request]" value="GETPOST"<?php checked($bfconfig['bf_request'], 'GETPOST') ?>> <?php _e('<code>GET</code> and <code>POST</code> requests attacks', 'ninjafirewall') ?></label></p>
|
240 |
+
</td>
|
241 |
+
</tr>
|
242 |
+
<tr>
|
243 |
+
<th scope="row" class="row-med"><?php _e('Enable protection', 'ninjafirewall') ?></th>
|
244 |
+
<td>
|
245 |
+
<?php
|
246 |
+
printf( __('For %1$s minutes, if more than %2$s %3$s requests within %4$s seconds.', 'ninjafirewall'),
|
247 |
+
'<input maxlength="2" size="2" min="1" value="'. $bfconfig['bf_bantime'] .'" name="nfw_options[bf_bantime]" id="ban1" class="small-text" type="number" />',
|
248 |
+
'<input maxlength="2" size="2" min="1" value="'. $bfconfig['bf_attempt'] .'" name="nfw_options[bf_attempt]" id="ban2" class="small-text" type="number" />', '<code id="get_post">'. $get_post .'</code>',
|
249 |
+
'<input maxlength="2" size="2" min="1" value="'. $bfconfig['bf_maxtime'] .'" name="nfw_options[bf_maxtime]" id="ban3" class="small-text" type="number" />'
|
250 |
+
);
|
251 |
+
?>
|
252 |
+
</td>
|
253 |
+
</tr>
|
254 |
+
</table>
|
255 |
+
</div>
|
256 |
+
|
257 |
+
<?php
|
258 |
+
if ( empty( $bfconfig['auth_pass'] ) ) {
|
259 |
+
$placeholder = '';
|
260 |
+
} else {
|
261 |
+
$placeholder = '••••••••';
|
262 |
+
}
|
263 |
+
?>
|
264 |
+
<div id="bf_table_password"<?php echo $show_bf_table_password ? '' : ' style="display:none"' ?>>
|
265 |
+
<table class="form-table">
|
266 |
+
<tr>
|
267 |
+
<th scope="row" class="row-med"><?php _e('HTTP authentication', 'ninjafirewall') ?></th>
|
268 |
+
<td>
|
269 |
+
<?php _e('User:', 'ninjafirewall') ?> <input maxlength="32" type="text" autocomplete="off" value="<?php echo htmlspecialchars( $bfconfig['auth_name'] ) ?>" size="12" name="nfw_options[auth_name]" onkeyup="nfwjs_auth_user_valid();" /> <?php _e('Password:', 'ninjafirewall') ?> <input maxlength="32" placeholder="<?php echo $placeholder ?>" type="password" autocomplete="off" value="" size="12" name="nfw_options[auth_pass]" />
|
270 |
+
<br /><p class="description"> <?php _e('User and Password must be from 6 to 32 characters.', 'ninjafirewall') ?></p>
|
271 |
+
<br /><br /><?php _e('Message (max. 1024 characters, HTML tags allowed)', 'ninjafirewall') ?>:<br />
|
272 |
+
<textarea id="realm" name="nfw_options[auth_msgtxt]" class="small-text code" cols="60" rows="5" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" oninput="nfwjs_realm_valid();"><?php echo htmlspecialchars( $bfconfig['auth_msgtxt'] ) ?></textarea>
|
273 |
+
</td>
|
274 |
+
</tr>
|
275 |
+
</table>
|
276 |
+
</div>
|
277 |
+
|
278 |
+
|
279 |
+
<div id="bf_table_captcha"<?php echo $show_bf_table_captcha ? '' : ' style="display:none"' ?>>
|
280 |
+
<table class="form-table">
|
281 |
+
<tr>
|
282 |
+
<th scope="row" class="row-med"><?php _e('Message', 'ninjafirewall') ?></th>
|
283 |
+
<td>
|
284 |
+
<input maxlength="255" class="large-text" type="text" autocomplete="off" value="<?php echo htmlspecialchars( $bfconfig['captcha_text'] ) ?>" name="nfw_options[captcha_text]" />
|
285 |
+
<p class="description"><?php _e('This message will be displayed above the captcha. Max. 255 characters.', 'ninjafirewall') ?></p>
|
286 |
+
</td>
|
287 |
+
</tr>
|
288 |
+
</table>
|
289 |
+
</div>
|
290 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
291 |
</div>
|
292 |
|
293 |
+
<br />
|
294 |
|
295 |
+
<div class="nfw-table" id="bf_table_extra"<?php echo $show_bf_table_extra ? '' : ' style="display:none"' ?>>
|
296 |
+
<h3> <?php _e('Various options', 'ninjafirewall') ?></h3>
|
|
|
297 |
<table class="form-table">
|
298 |
<?php
|
299 |
+
// Warn the user if Jetpack is installed
|
300 |
if ( is_dir( WP_PLUGIN_DIR . '/jetpack' ) ) {
|
301 |
+
$is_JetPack = '<p class="description">'. __('If you are using the Jetpack plugin, blocking access to the XML-RPC API may prevent it from working correctly.', 'ninjafirewall') .'</p>';
|
302 |
} else {
|
303 |
$is_JetPack = '';
|
304 |
}
|
305 |
?>
|
306 |
<tr>
|
307 |
+
<th scope="row" class="row-med"><?php _e('Apply the protection to the <code>xmlrpc.php</code> script as well', 'ninjafirewall') ?></th>
|
308 |
<td>
|
309 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[bf_xmlrpc]', __('Yes', 'ninjafirewall'), __('No', 'ninjafirewall'), 'small', $bfconfig['bf_xmlrpc'] ) ?>
|
310 |
+
<?php echo $is_JetPack; ?>
|
311 |
</td>
|
312 |
</tr>
|
313 |
|
314 |
<tr>
|
315 |
+
<th scope="row" class="row-med"><?php _e('Enable bot protection', 'ninjafirewall') ?></th>
|
316 |
<td>
|
317 |
+
<?php
|
318 |
+
if ( $bfconfig['bf_allow_bot'] ) {
|
319 |
+
$bot = 0;
|
320 |
+
} else {
|
321 |
+
$bot = 1;
|
322 |
+
}
|
323 |
+
|
324 |
+
nfw_toggle_switch( 'info', 'nfw_options[bf_allow_bot]', __('Yes', 'ninjafirewall'), __('No', 'ninjafirewall'), 'small', $bot ) ?>
|
325 |
</td>
|
326 |
</tr>
|
327 |
|
328 |
+
<tr>
|
329 |
+
<th scope="row" class="row-med"><?php _e('Write the incident to the server Authentication log', 'ninjafirewall') ?></th>
|
330 |
<td>
|
331 |
<?php
|
332 |
// Ensure that openlog() and syslog() are not disabled:
|
333 |
if (! function_exists('syslog') || ! function_exists('openlog') ) {
|
334 |
$bfconfig['bf_authlog'] = 0;
|
335 |
$bf_msg = __('Your server configuration is not compatible with that option.', 'ninjafirewall');
|
336 |
+
$disabled = 1;
|
337 |
} else {
|
338 |
+
$bf_msg = __('The login protection must be set to "When under attack" in order to use this option.', 'ninjafirewall');
|
339 |
+
if ( $bfconfig['bf_enable'] != 1 ) {
|
340 |
+
$disabled = 1;
|
341 |
+
} else {
|
342 |
+
$disabled = 0;
|
343 |
+
}
|
344 |
}
|
345 |
+
nfw_toggle_switch( 'info', 'nfw_options[bf_authlog]', __('Yes', 'ninjafirewall'), __('No', 'ninjafirewall'), 'small', $bfconfig['bf_authlog'], $disabled, false, 'nfw-authlog' ) ?>
|
346 |
+
<p class="description"><?php echo $bf_msg ?></p>
|
|
|
|
|
347 |
</td>
|
348 |
</tr>
|
349 |
<tr>
|
350 |
+
<th scope="row" class="row-med"><?php _e('Disable NinjaFirewall\'s signature on the login protection page', 'ninjafirewall') ?></th>
|
351 |
<td>
|
352 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[bf_nosig]', __('Yes', 'ninjafirewall'), __('No', 'ninjafirewall'), 'small', $bfconfig['bf_nosig'] ) ?>
|
|
|
|
|
353 |
</td>
|
354 |
</tr>
|
|
|
355 |
</table>
|
356 |
+
<br />
|
357 |
</div>
|
358 |
|
359 |
<br />
|
360 |
+
|
361 |
+
<div style="float:left;width:50%">
|
362 |
+
<input id="save_login" class="button-primary" type="submit" name="Save" value="<?php _e('Save Login Protection', 'ninjafirewall') ?>" />
|
363 |
+
</div>
|
364 |
+
<div style="float:right;width:50%;text-align:right">
|
365 |
+
<?php _e('See our benchmark and stress-test:', 'ninjafirewall') ?>
|
366 |
+
<br />
|
367 |
+
<a href="https://blog.nintechnet.com/wordpress-brute-force-attack-detection-plugins-comparison-2015/">Brute-force attack detection plugins comparison</a>
|
368 |
</div>
|
369 |
+
|
370 |
+
</form>
|
371 |
</div>
|
372 |
|
373 |
<?php
|
376 |
|
377 |
function nf_sub_loginprot_save() {
|
378 |
|
379 |
+
// Block immediately if user is not allowed
|
380 |
nf_not_allowed( 'block', __LINE__ );
|
381 |
|
382 |
+
// The directory must be writable
|
383 |
if (! is_writable( NFW_LOG_DIR . '/nfwlog/cache' ) ) {
|
384 |
return( sprintf( __('Error: %s directory is not writable. Please chmod it to 0777.', 'ninjafirewall'), '<code>'. htmlspecialchars(NFW_LOG_DIR) .'/nfwlog/cache</code>') );
|
385 |
}
|
391 |
require( NFW_LOG_DIR . '/nfwlog/cache/bf_conf.php' );
|
392 |
}
|
393 |
|
394 |
+
if ( empty( $_POST['ui_enabled'] ) ) {
|
395 |
+
$_POST['nfw_options']['bf_enable'] = 0;
|
396 |
+
}
|
397 |
+
|
398 |
+
if (! empty( $_POST['nfw_options']['bf_enable'] ) && preg_match( '/^[12]$/', $_POST['nfw_options']['bf_enable'] ) ) {
|
399 |
+
$bf_enable = (int) $_POST['nfw_options']['bf_enable'];
|
400 |
} else {
|
401 |
+
$bf_enable = 0;
|
402 |
}
|
403 |
|
404 |
+
if (! empty( $_POST['nfw_options']['bf_type'] ) && preg_match( '/^[01]$/', $_POST['nfw_options']['bf_type'] ) ) {
|
405 |
+
$bf_type = (int) $_POST['nfw_options']['bf_type'];
|
406 |
} else {
|
407 |
$bf_type = 0;
|
408 |
}
|
409 |
|
410 |
+
// Ensure we have all values, otherwise set the default ones
|
411 |
+
if (! empty( $_POST['nfw_options']['bf_request'] ) && preg_match('/^(GET|POST|GETPOST)$/', $_POST['nfw_options']['bf_request'] ) ) {
|
412 |
$bf_request = $_POST['nfw_options']['bf_request'];
|
413 |
} else {
|
|
|
414 |
$bf_request = 'POST';
|
415 |
}
|
416 |
|
417 |
+
if (! empty( $_POST['nfw_options']['bf_bantime'] ) && preg_match('/^[1-9][0-9]?$/', $_POST['nfw_options']['bf_bantime'] ) ) {
|
418 |
+
$bf_bantime = (int) $_POST['nfw_options']['bf_bantime'];
|
419 |
} else {
|
|
|
420 |
$bf_bantime = 5;
|
421 |
}
|
422 |
+
if (! empty( $_POST['nfw_options']['bf_attempt'] ) && preg_match('/^[1-9][0-9]?$/', $_POST['nfw_options']['bf_attempt'] ) ) {
|
423 |
+
$bf_attempt = (int) $_POST['nfw_options']['bf_attempt'];
|
424 |
} else {
|
|
|
425 |
$bf_attempt = 8;
|
426 |
}
|
427 |
+
if (! empty( $_POST['nfw_options']['bf_maxtime'] ) && preg_match('/^[1-9][0-9]?$/', $_POST['nfw_options']['bf_maxtime'] ) ) {
|
428 |
+
$bf_maxtime = (int) $_POST['nfw_options']['bf_maxtime'];
|
429 |
} else {
|
|
|
430 |
$bf_maxtime = 15;
|
431 |
}
|
432 |
|
lib/network.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
| GNU General Public License for more details. |
|
17 |
-
+---------------------------------------------------------------------+ i18n+ / sa
|
18 |
*/
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
@@ -36,39 +36,47 @@ if (! is_multisite() ) {
|
|
36 |
return;
|
37 |
}
|
38 |
|
39 |
-
|
|
|
|
|
40 |
if ( empty($_POST['nfwnonce']) || ! wp_verify_nonce($_POST['nfwnonce'], 'network_save') ) {
|
41 |
wp_nonce_ays('network_save');
|
42 |
}
|
43 |
-
if ( $_POST['nfw_options']['nt_show_status']
|
44 |
$nfw_options['nt_show_status'] = 2;
|
45 |
} else {
|
46 |
$nfw_options['nt_show_status'] = 1;
|
47 |
}
|
|
|
48 |
nfw_update_option( 'nfw_options', $nfw_options );
|
49 |
echo '<div class="updated notice is-dismissible"><p>' . __('Your changes have been saved.', 'ninjafirewall') . '</p></div>';
|
50 |
$nfw_options = nfw_get_option( 'nfw_options' );
|
51 |
}
|
52 |
|
53 |
-
if ( empty($nfw_options['nt_show_status']) ) {
|
54 |
-
$
|
|
|
|
|
55 |
}
|
56 |
?>
|
57 |
-
<form method="post" name="nfwnetwork">
|
58 |
-
<?php wp_nonce_field('network_save', 'nfwnonce', 0); ?>
|
59 |
-
<h3><?php _e('NinjaFirewall Status', 'ninjafirewall') ?></h3>
|
60 |
-
<table class="form-table">
|
61 |
-
<tr>
|
62 |
-
<th scope="row"><?php _e('Display NinjaFirewall status icon in the admin bar of all sites in the network', 'ninjafirewall') ?></th>
|
63 |
-
<td width="200"><label><input type="radio" name="nfw_options[nt_show_status]" value="1"<?php echo $nfw_options['nt_show_status'] != 2 ? ' checked' : '' ?>> <?php _e('Yes (default)', 'ninjafirewall') ?></label></td>
|
64 |
-
<td><label><input type="radio" name="nfw_options[nt_show_status]" value="2"<?php echo $nfw_options['nt_show_status'] == 2 ? ' checked' : '' ?>> <?php _e('No', 'ninjafirewall') ?></label></td>
|
65 |
-
</tr>
|
66 |
-
</table>
|
67 |
-
|
68 |
<br />
|
69 |
-
<
|
70 |
-
|
71 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
</div>
|
73 |
<?php
|
74 |
// ---------------------------------------------------------------------
|
14 |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
| GNU General Public License for more details. |
|
17 |
+
+---------------------------------------------------------------------+ i18n+ / sa / 2
|
18 |
*/
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
36 |
return;
|
37 |
}
|
38 |
|
39 |
+
// Saved?
|
40 |
+
if (! empty( $_POST['nf-network'] ) ) {
|
41 |
+
|
42 |
if ( empty($_POST['nfwnonce']) || ! wp_verify_nonce($_POST['nfwnonce'], 'network_save') ) {
|
43 |
wp_nonce_ays('network_save');
|
44 |
}
|
45 |
+
if ( empty( $_POST['nfw_options']['nt_show_status'] ) ) {
|
46 |
$nfw_options['nt_show_status'] = 2;
|
47 |
} else {
|
48 |
$nfw_options['nt_show_status'] = 1;
|
49 |
}
|
50 |
+
// Update options
|
51 |
nfw_update_option( 'nfw_options', $nfw_options );
|
52 |
echo '<div class="updated notice is-dismissible"><p>' . __('Your changes have been saved.', 'ninjafirewall') . '</p></div>';
|
53 |
$nfw_options = nfw_get_option( 'nfw_options' );
|
54 |
}
|
55 |
|
56 |
+
if ( empty( $nfw_options['nt_show_status'] ) || $nfw_options['nt_show_status'] == 2 ) {
|
57 |
+
$nt_show_status = 0;
|
58 |
+
} else {
|
59 |
+
$nt_show_status = 1;
|
60 |
}
|
61 |
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
<br />
|
63 |
+
<form method="post" name="nfwnetwork">
|
64 |
+
<?php wp_nonce_field('network_save', 'nfwnonce', 0); ?>
|
65 |
+
<h3><?php _e('NinjaFirewall Status', 'ninjafirewall') ?></h3>
|
66 |
+
<table class="form-table nfw-table">
|
67 |
+
<tr>
|
68 |
+
<th scope="row" class="row-med"><?php _e('Display NinjaFirewall status icon in the admin bar of all sites in the network', 'ninjafirewall') ?></th>
|
69 |
+
<td>
|
70 |
+
<?php nfw_toggle_switch( 'info', 'nfw_options[nt_show_status]', __('Yes', 'ninjafirewall'), __('No', 'ninjafirewall'), 'small', $nt_show_status ) ?>
|
71 |
+
</td>
|
72 |
+
</tr>
|
73 |
+
</table>
|
74 |
+
|
75 |
+
<br />
|
76 |
+
<br />
|
77 |
+
<input class="button-primary" type="submit" name="Save" value="<?php _e('Save Network options', 'ninjafirewall') ?>" />
|
78 |
+
<input type="hidden" name="nf-network" value="1" />
|
79 |
+
</form>
|
80 |
</div>
|
81 |
<?php
|
82 |
// ---------------------------------------------------------------------
|
lib/ninjafirewall.php
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Plugin Name: NinjaFirewall (WP Edition)
|
4 |
+
Plugin URI: https://nintechnet.com/
|
5 |
+
Description: NinjaFirewall's fallback loader. Do not remove. This fill will be deleted when uninstalling NinjaFirewall.
|
6 |
+
Version: 1.0
|
7 |
+
Author: The Ninja Technologies Network
|
8 |
+
Author URI: https://nintechnet.com/
|
9 |
+
License: GPLv3 or later
|
10 |
+
Network: true
|
11 |
+
*/
|
12 |
+
if (! defined('ABSPATH') || defined('NFW_STATUS') || defined('NFW_WPWAF') || ! file_exists( WP_PLUGIN_DIR .'/ninjafirewall/lib/firewall.php' ) ) {
|
13 |
+
return false;
|
14 |
+
}
|
15 |
+
define('NFW_WPWAF', 2);
|
16 |
+
@include_once WP_PLUGIN_DIR .'/ninjafirewall/lib/firewall.php';
|
lib/overview.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
| GNU General Public License for more details. |
|
17 |
-
+---------------------------------------------------------------------+ i18n+ / sa
|
18 |
*/
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
@@ -27,12 +27,56 @@ if (! defined('NF_DISABLED') ) {
|
|
27 |
is_nfw_enabled();
|
28 |
}
|
29 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
?>
|
31 |
<div class="wrap">
|
32 |
<h1><img style="vertical-align:top;width:33px;height:33px;" src="<?php echo plugins_url( '/ninjafirewall/images/ninjafirewall_32.png') ?>"> <?php _e('NinjaFirewall (WP Edition)', 'ninjafirewall') ?></h1>
|
33 |
|
34 |
<?php
|
35 |
-
|
36 |
echo '<br><div class="updated notice is-dismissible"><p>' .
|
37 |
__('Congratulations, NinjaFirewall is up and running!', 'ninjafirewall') . '<br />' .
|
38 |
__('If you need help, click on the contextual "Help" menu tab located in the upper right corner of each page.', 'ninjafirewall');
|
@@ -47,66 +91,79 @@ if (! defined('NF_DISABLED') ) {
|
|
47 |
unset( $_SESSION['waf_mode'] );
|
48 |
}
|
49 |
|
50 |
-
// Display a one-time notice after two weeks of use
|
51 |
nfw_rate_notice( $nfw_options );
|
52 |
|
53 |
?>
|
54 |
<br />
|
55 |
-
<table class="form-table">
|
56 |
|
57 |
<?php
|
58 |
-
if (NF_DISABLED) {
|
59 |
-
if (! empty($GLOBALS['err_fw'][NF_DISABLED]) ) {
|
60 |
$msg = $GLOBALS['err_fw'][NF_DISABLED];
|
61 |
} else {
|
62 |
-
$msg = __('
|
63 |
}
|
64 |
?>
|
65 |
<tr>
|
66 |
-
<th scope="row"><?php _e('Firewall', 'ninjafirewall') ?></th>
|
67 |
-
<td
|
68 |
-
<td><?php echo $msg ?></td>
|
69 |
</tr>
|
70 |
|
71 |
<?php
|
72 |
} else {
|
73 |
?>
|
74 |
-
|
75 |
<tr>
|
76 |
-
<th scope="row"><?php _e('Firewall', 'ninjafirewall') ?></th>
|
77 |
-
<td width="20" align="left"> </td>
|
78 |
<td><?php _e('Enabled', 'ninjafirewall') ?></td>
|
79 |
</tr>
|
80 |
-
|
81 |
<?php
|
82 |
}
|
83 |
|
84 |
-
if ( defined('NFW_WPWAF') ) {
|
85 |
-
$mode = __('WordPress WAF', 'ninjafirewall');
|
86 |
-
} else {
|
87 |
-
$mode = __('Full WAF', 'ninjafirewall');
|
88 |
-
}
|
89 |
?>
|
90 |
<tr>
|
91 |
-
<th scope="row"><?php _e('Mode', 'ninjafirewall') ?></th>
|
92 |
-
<td
|
93 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
</tr>
|
95 |
<?php
|
96 |
|
97 |
-
if (! empty( $nfw_options['debug']) ) {
|
98 |
?>
|
99 |
<tr>
|
100 |
-
<th scope="row"><?php _e('Debugging mode', 'ninjafirewall') ?></th>
|
101 |
-
<td
|
102 |
-
<td><?php _e('Enabled.', 'ninjafirewall') ?> <a href="?page=nfsubopt"><?php _e('Click here to turn Debugging Mode off', 'ninjafirewall') ?></a></td>
|
103 |
</tr>
|
104 |
<?php
|
105 |
}
|
106 |
?>
|
107 |
<tr>
|
108 |
-
<th scope="row"><?php _e('
|
109 |
-
<td
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
110 |
<td>
|
111 |
<?php
|
112 |
if ( defined('HHVM_VERSION') ) {
|
@@ -118,61 +175,51 @@ if (! defined('NF_DISABLED') ) {
|
|
118 |
?>
|
119 |
</td>
|
120 |
</tr>
|
121 |
-
<tr>
|
122 |
-
<th scope="row"><?php _e('Version', 'ninjafirewall') ?></th>
|
123 |
-
<td width="20" align="left"> </td>
|
124 |
-
<td><?php echo NFW_ENGINE_VERSION . ' ~ ' . __('Security rules:', 'ninjafirewall' ) . ' ' . preg_replace('/(\d{4})(\d\d)(\d\d)/', '$1-$2-$3', $nfw_options['rules_version']) ?></td>
|
125 |
-
</tr>
|
126 |
<?php
|
127 |
|
128 |
-
// If security rules updates are disabled, warn the user
|
129 |
if ( empty( $nfw_options['enable_updates'] ) ) {
|
130 |
?>
|
131 |
<tr>
|
132 |
-
<th scope="row"><?php _e('Updates', 'ninjafirewall') ?></th>
|
133 |
-
<td
|
134 |
-
<td><a href="?page=nfsubupdates"><?php _e( 'Security rules updates are disabled.', 'ninjafirewall' ) ?></a> <?php _e( 'If you want your blog to be protected against the latest threats, enable automatic security rules updates.', 'ninjafirewall' ) ?></td>
|
135 |
</tr>
|
136 |
<?php
|
137 |
}
|
138 |
|
139 |
-
if ( empty($_SESSION['nfw_goodguy']) ) {
|
140 |
?>
|
141 |
<tr>
|
142 |
-
<th scope="row"><?php _e('Admin user', 'ninjafirewall') ?></th>
|
143 |
-
<td
|
144 |
-
<td><?php printf( __('You are not whitelisted. Ensure that the "Do not block WordPress administrator" option is enabled in the <a href="%s">Firewall Policies</a> menu, otherwise you could get blocked by the firewall while working from your administration dashboard.', 'ninjafirewall'), '?page=nfsubpolicies') ?></td>
|
145 |
</tr>
|
146 |
<?php
|
147 |
} else {
|
148 |
$current_user = wp_get_current_user();
|
149 |
?>
|
150 |
<tr>
|
151 |
-
<th scope="row"><?php _e('Admin user', 'ninjafirewall') ?></th>
|
152 |
-
<td
|
153 |
-
<td><code><?php echo htmlspecialchars($current_user->user_login) ?></code>: <?php _e('You are whitelisted by the firewall.', 'ninjafirewall') ?></td>
|
154 |
</tr>
|
155 |
<?php
|
156 |
}
|
157 |
if ( defined('NFW_ALLOWED_ADMIN') && ! is_multisite() ) {
|
158 |
?>
|
159 |
<tr>
|
160 |
-
<th scope="row"><?php _e('Restrictions', 'ninjafirewall') ?></th>
|
161 |
-
<td
|
162 |
-
<td><?php _e('Access to NinjaFirewall is restricted to:', 'ninjafirewall') ?> <code><?php echo htmlspecialchars(NFW_ALLOWED_ADMIN) ?></code></td>
|
163 |
</tr>
|
164 |
<?php
|
165 |
}
|
166 |
|
167 |
// Try to find out if there is any "lost" session between the firewall
|
168 |
// and the plugin part of NinjaFirewall (could be a buggy plugin killing
|
169 |
-
// the session etc), unless we just installed it
|
170 |
if ( defined( 'NFW_SWL' ) && ! empty( $_SESSION['nfw_goodguy'] ) && empty( $_REQUEST['nfw_firstrun'] ) ) {
|
171 |
?>
|
172 |
<tr>
|
173 |
-
<th scope="row"><?php _e('User session', 'ninjafirewall') ?></th>
|
174 |
-
<td
|
175 |
-
<td><?php _e('It seems that the user session set by NinjaFirewall was not found by the firewall script.', 'ninjafirewall') ?></td>
|
176 |
</tr>
|
177 |
<?php
|
178 |
}
|
@@ -195,64 +242,56 @@ if (! defined('NF_DISABLED') ) {
|
|
195 |
}
|
196 |
?>
|
197 |
<tr>
|
198 |
-
<th scope="row"><?php _e('Centralized Logging', 'ninjafirewall') ?></th>
|
199 |
<?php
|
200 |
if ( $err_msg ) {
|
201 |
?>
|
202 |
-
<td
|
203 |
-
<td><?php printf( __('Error: %s', 'ninjafirewall'), $err_msg) ?></td>
|
204 |
</tr>
|
205 |
<?php
|
206 |
$err_msg = '';
|
207 |
} else {
|
208 |
?>
|
209 |
-
<td width="20" align="left"> </td>
|
210 |
<td><a href="?page=nfsublog#clogs"><?php _e('Enabled', 'ninjafirewall'); echo "</a>. $ok_msg"; ?></td>
|
211 |
</tr>
|
212 |
<?php
|
213 |
}
|
214 |
}
|
215 |
|
216 |
-
|
217 |
-
|
218 |
if (! filter_var(NFW_REMOTE_ADDR, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) ) {
|
219 |
?>
|
220 |
<tr>
|
221 |
-
<th scope="row"><?php _e('Source IP', 'ninjafirewall') ?></th>
|
222 |
-
<td
|
223 |
-
<td><?php printf( __('You have a private IP : %s', 'ninjafirewall') .'<br />'. __('If your site is behind a reverse proxy or a load balancer, ensure that you have setup your HTTP server or PHP to forward the correct visitor IP, otherwise use the NinjaFirewall %s configuration file.', 'ninjafirewall'), htmlentities(NFW_REMOTE_ADDR), '<code><a href="https://nintechnet.com/ninjafirewall/wp-edition/help/?htninja">.htninja</a></code>') ?></td>
|
224 |
</tr>
|
225 |
<?php
|
226 |
}
|
227 |
-
if (! empty($_SERVER["HTTP_CF_CONNECTING_IP"]) ) {
|
228 |
if ( NFW_REMOTE_ADDR != $_SERVER["HTTP_CF_CONNECTING_IP"] ) {
|
229 |
?>
|
230 |
<tr>
|
231 |
-
<th scope="row"><?php _e('CDN detection', 'ninjafirewall') ?></th>
|
232 |
-
<td
|
233 |
-
<td><?php printf( __('%s detected: you seem to be using Cloudflare CDN services. Ensure that you have setup your HTTP server or PHP to forward the correct visitor IP, otherwise use the NinjaFirewall %s configuration file.', 'ninjafirewall'), '<code>HTTP_CF_CONNECTING_IP</code>', '<code><a href="https://nintechnet.com/ninjafirewall/wp-edition/help/?htninja">.htninja</a></code>') ?></td>
|
234 |
</tr>
|
235 |
<?php
|
236 |
}
|
237 |
}
|
238 |
-
if (! empty($_SERVER["HTTP_INCAP_CLIENT_IP"]) ) {
|
239 |
if ( NFW_REMOTE_ADDR != $_SERVER["HTTP_INCAP_CLIENT_IP"] ) {
|
240 |
?>
|
241 |
<tr>
|
242 |
-
<th scope="row"><?php _e('CDN detection', 'ninjafirewall') ?></th>
|
243 |
-
<td
|
244 |
-
<td><?php printf( __('%s detected: you seem to be using Incapsula CDN services. Ensure that you have setup your HTTP server or PHP to forward the correct visitor IP, otherwise use the NinjaFirewall %s configuration file.', 'ninjafirewall'), '<code>HTTP_INCAP_CLIENT_IP</code>', '<code><a href="https://nintechnet.com/ninjafirewall/wp-edition/help/?htninja">.htninja</a></code>') ?></td>
|
245 |
</tr>
|
246 |
<?php
|
247 |
}
|
248 |
}
|
249 |
|
250 |
-
if (! is_writable( NFW_LOG_DIR . '/nfwlog') ) {
|
251 |
?>
|
252 |
<tr>
|
253 |
-
<th scope="row"><?php _e('Log dir', 'ninjafirewall') ?></th>
|
254 |
-
<td
|
255 |
-
<td><?php printf( __('%s directory is not writable! Please chmod it to 0777 or equivalent.', 'ninjafirewall'), '<code>'. htmlspecialchars(NFW_LOG_DIR) .'/nfwlog/</code>') ?></td>
|
256 |
</tr>
|
257 |
<?php
|
258 |
}
|
@@ -260,9 +299,8 @@ if (! defined('NF_DISABLED') ) {
|
|
260 |
if (! is_writable( NFW_LOG_DIR . '/nfwlog/cache') ) {
|
261 |
?>
|
262 |
<tr>
|
263 |
-
<th scope="row"><?php _e('Log dir', 'ninjafirewall') ?></th>
|
264 |
-
<td
|
265 |
-
<td><?php printf(__('%s directory is not writable! Please chmod it to 0777 or equivalent.', 'ninjafirewall'), '<code>'. htmlspecialchars(NFW_LOG_DIR) . '/nfwlog/cache/</code>') ?></td>
|
266 |
</tr>
|
267 |
<?php
|
268 |
}
|
@@ -270,26 +308,27 @@ if (! defined('NF_DISABLED') ) {
|
|
270 |
$doc_root = rtrim($_SERVER['DOCUMENT_ROOT'], '/');
|
271 |
if ( @file_exists( $file = dirname( $doc_root ) . '/.htninja') ||
|
272 |
@file_exists( $file = $doc_root . '/.htninja') ) {
|
273 |
-
echo '<tr><th scope="row">' . __('Optional configuration file', 'ninjafirewall') . '</th>
|
274 |
-
<td width="20"> </td>
|
275 |
<td><code>' . htmlentities($file) . '</code></td>
|
276 |
</tr>';
|
277 |
|
278 |
-
// Check if we have a MySQLi link identifier defined in the .htninja
|
279 |
if (! empty( $GLOBALS['nfw_mysqli'] ) && ! empty( $GLOBALS['nfw_table_prefix'] ) ) {
|
280 |
echo '<tr>
|
281 |
-
<th scope="row">' . __('MySQLi link identifier', 'ninjafirewall') . '</th>
|
282 |
-
<td width="20"> </td>
|
283 |
<td>' . __('A MySQLi link identifier was detected in your <code>.htninja</code>.', 'ninjafirewall') . '</td>
|
284 |
</tr>';
|
285 |
}
|
286 |
-
|
287 |
}
|
288 |
-
|
289 |
echo '</table>';
|
290 |
?>
|
291 |
</div>
|
292 |
-
|
293 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
294 |
// ---------------------------------------------------------------------
|
295 |
// EOF
|
14 |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
| GNU General Public License for more details. |
|
17 |
+
+---------------------------------------------------------------------+ i18n+ / sa / 2
|
18 |
*/
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
27 |
is_nfw_enabled();
|
28 |
}
|
29 |
|
30 |
+
// Search for Full WAF post-install
|
31 |
+
$res = get_transient( 'nfw_fullwaf' );
|
32 |
+
if ( $res !== false ) {
|
33 |
+
if ( defined( 'NFW_WPWAF' ) ) {
|
34 |
+
// 1: Apache mod_php
|
35 |
+
// 2: Apache + CGI/FastCGI or PHP-FPM
|
36 |
+
// 3: Apache + suPHP
|
37 |
+
// 4: Nginx + CGI/FastCGI or PHP-FPM
|
38 |
+
// 5: Litespeed
|
39 |
+
// 6: Openlitespeed
|
40 |
+
// 7: Other webserver + CGI/FastCGI or PHP-FPM
|
41 |
+
list( $httpserver, $time ) = explode( ':', $res );
|
42 |
+
$message = '';
|
43 |
+
|
44 |
+
if ( $httpserver == 6 ) {
|
45 |
+
$message = __('Make sure you followed the instructions and restarted Openlitespeed.', 'ninjafirewall' );
|
46 |
+
delete_transient( 'nfw_fullwaf' );
|
47 |
+
|
48 |
+
} elseif ( $httpserver == 1 || $httpserver == 5 ) {
|
49 |
+
$message = sprintf( __('Make sure your HTTP server support the %s directive in .htaccess files. Or maybe you need to restart your HTTP server to apply the changes?', 'ninjafirewall' ), '<code>php_value auto_prepend_file</code>' );
|
50 |
+
delete_transient( 'nfw_fullwaf' );
|
51 |
+
|
52 |
+
} else {
|
53 |
+
$now = time();
|
54 |
+
// <5 minutes
|
55 |
+
if ( $now < $time ) {
|
56 |
+
$time_left = $time - $now;
|
57 |
+
$message = sprintf( __('Because PHP caches INI files, you may need to wait up to five minutes before the changes are reloaded by the PHP interpreter. <strong>Please wait for <font id="nfw-waf-count">%d</font> seconds</strong> before trying again (you can navigate away from this page and come back in a few minutes).', 'ninjafirewall'), (int) $time_left );
|
58 |
+
$countdown = 1;
|
59 |
+
} else {
|
60 |
+
delete_transient( 'nfw_fullwaf' );
|
61 |
+
}
|
62 |
+
}
|
63 |
+
if (! empty( $message ) ) {
|
64 |
+
echo '<div class="notice-warning notice is-dismissible"><p>'.
|
65 |
+
__('Oops! Full WAF mode is not enabled yet.', 'ninjafirewall' ) .'<br />'.
|
66 |
+
$message .
|
67 |
+
'</p></div>';
|
68 |
+
if ( isset( $countdown ) ) {
|
69 |
+
echo '<script>fullwaf_count='. $time_left .';fullwaf=setInterval(nfwjs_fullwaf_countdown,1000);</script>';
|
70 |
+
}
|
71 |
+
}
|
72 |
+
}
|
73 |
+
}
|
74 |
?>
|
75 |
<div class="wrap">
|
76 |
<h1><img style="vertical-align:top;width:33px;height:33px;" src="<?php echo plugins_url( '/ninjafirewall/images/ninjafirewall_32.png') ?>"> <?php _e('NinjaFirewall (WP Edition)', 'ninjafirewall') ?></h1>
|
77 |
|
78 |
<?php
|
79 |
+
if ( ( defined('NFW_STATUS') && NFW_STATUS == 20 ) && ! empty( $_REQUEST['nfw_firstrun'] ) ) {
|
80 |
echo '<br><div class="updated notice is-dismissible"><p>' .
|
81 |
__('Congratulations, NinjaFirewall is up and running!', 'ninjafirewall') . '<br />' .
|
82 |
__('If you need help, click on the contextual "Help" menu tab located in the upper right corner of each page.', 'ninjafirewall');
|
91 |
unset( $_SESSION['waf_mode'] );
|
92 |
}
|
93 |
|
94 |
+
// Display a one-time notice after two weeks of use
|
95 |
nfw_rate_notice( $nfw_options );
|
96 |
|
97 |
?>
|
98 |
<br />
|
99 |
+
<table class="form-table nfw-table">
|
100 |
|
101 |
<?php
|
102 |
+
if ( NF_DISABLED ) {
|
103 |
+
if (! empty( $GLOBALS['err_fw'][NF_DISABLED] ) ) {
|
104 |
$msg = $GLOBALS['err_fw'][NF_DISABLED];
|
105 |
} else {
|
106 |
+
$msg = __('Unknown error', 'ninjafirewall') .' #'. NF_DISABLED;
|
107 |
}
|
108 |
?>
|
109 |
<tr>
|
110 |
+
<th scope="row" class="row-med"><?php _e('Firewall', 'ninjafirewall') ?></th>
|
111 |
+
<td><span class="dashicons dashicons-dismiss nfw-danger"></span> <?php echo $msg ?></td>
|
|
|
112 |
</tr>
|
113 |
|
114 |
<?php
|
115 |
} else {
|
116 |
?>
|
|
|
117 |
<tr>
|
118 |
+
<th scope="row" class="row-med"><?php _e('Firewall', 'ninjafirewall') ?></th>
|
|
|
119 |
<td><?php _e('Enabled', 'ninjafirewall') ?></td>
|
120 |
</tr>
|
|
|
121 |
<?php
|
122 |
}
|
123 |
|
|
|
|
|
|
|
|
|
|
|
124 |
?>
|
125 |
<tr>
|
126 |
+
<th scope="row" class="row-med"><?php _e('Mode', 'ninjafirewall') ?></th>
|
127 |
+
<td>
|
128 |
+
<?php
|
129 |
+
if ( defined( 'NFW_WPWAF' ) ) {
|
130 |
+
?>
|
131 |
+
<span class="dashicons dashicons-warning nfw-warning"></span> <?php printf( __('NinjaFirewall is running in %s mode.', 'ninjafirewall'), '<a href="https://blog.nintechnet.com/full_waf-vs-wordpress_waf/">'. __('WordPress WAF', 'ninjafirewall') .'</a>'); ?>
|
132 |
+
<br />
|
133 |
+
<?php printf( __('For better protection, <a %s>click here</a> to enable its Full WAF mode.', 'ninjafirewall'), 'id="nfw-thickbox" style="cursor:pointer;text-decoration:underline" title="'. __('Click to install NinjaFirewall in Full WAF mode.', 'ninjafirewall') .'"') ?></a>
|
134 |
+
<?php
|
135 |
+
} else {
|
136 |
+
if (! NF_DISABLED ) {
|
137 |
+
printf( __('NinjaFirewall is running in %s mode.', 'ninjafirewall'), __('Full WAF', 'ninjafirewall') );
|
138 |
+
} else {
|
139 |
+
echo '-';
|
140 |
+
}
|
141 |
+
}
|
142 |
+
?>
|
143 |
+
</td>
|
144 |
</tr>
|
145 |
<?php
|
146 |
|
147 |
+
if (! empty( $nfw_options['debug'] ) ) {
|
148 |
?>
|
149 |
<tr>
|
150 |
+
<th scope="row" class="row-med"><?php _e('Debugging mode', 'ninjafirewall') ?></th>
|
151 |
+
<td><span class="dashicons dashicons-dismiss nfw-danger"></span> <?php _e('Enabled.', 'ninjafirewall') ?> <a href="?page=nfsubopt"><?php _e('Click here to turn Debugging Mode off', 'ninjafirewall') ?></a></td>
|
|
|
152 |
</tr>
|
153 |
<?php
|
154 |
}
|
155 |
?>
|
156 |
<tr>
|
157 |
+
<th scope="row" class="row-med"><?php _e('Edition', 'ninjafirewall') ?></th>
|
158 |
+
<td>WP Edition ~ <a href="?page=nfsubwplus"><?php _e('Need more security? Get Premium!', 'ninjafirewall' ) ?><a/></td>
|
159 |
+
</tr>
|
160 |
+
<tr>
|
161 |
+
<th scope="row" class="row-med"><?php _e('Version', 'ninjafirewall') ?></th>
|
162 |
+
<td><?php echo NFW_ENGINE_VERSION . ' ~ ' . __('Security rules:', 'ninjafirewall' ) . ' ' . preg_replace('/(\d{4})(\d\d)(\d\d)/', '$1-$2-$3', $nfw_options['rules_version']) ?></td>
|
163 |
+
</tr>
|
164 |
+
|
165 |
+
<tr>
|
166 |
+
<th scope="row" class="row-med"><?php _e('PHP SAPI', 'ninjafirewall') ?></th>
|
167 |
<td>
|
168 |
<?php
|
169 |
if ( defined('HHVM_VERSION') ) {
|
175 |
?>
|
176 |
</td>
|
177 |
</tr>
|
|
|
|
|
|
|
|
|
|
|
178 |
<?php
|
179 |
|
180 |
+
// If security rules updates are disabled, warn the user
|
181 |
if ( empty( $nfw_options['enable_updates'] ) ) {
|
182 |
?>
|
183 |
<tr>
|
184 |
+
<th scope="row" class="row-med"><?php _e('Updates', 'ninjafirewall') ?></th>
|
185 |
+
<td><span class="dashicons dashicons-dismiss nfw-danger"></span> <a href="?page=nfsubupdates"><?php _e( 'Security rules updates are disabled.', 'ninjafirewall' ) ?></a> <?php _e( 'If you want your blog to be protected against the latest threats, enable automatic security rules updates.', 'ninjafirewall' ) ?></td>
|
|
|
186 |
</tr>
|
187 |
<?php
|
188 |
}
|
189 |
|
190 |
+
if ( empty( $_SESSION['nfw_goodguy'] ) ) {
|
191 |
?>
|
192 |
<tr>
|
193 |
+
<th scope="row" class="row-med"><?php _e('Admin user', 'ninjafirewall') ?></th>
|
194 |
+
<td><span class="dashicons dashicons-warning nfw-warning"></span> <?php printf( __('You are not whitelisted. Ensure that the "Do not block WordPress administrator" option is enabled in the <a href="%s">Firewall Policies</a> menu, otherwise you could get blocked by the firewall while working from your administration dashboard.', 'ninjafirewall'), '?page=nfsubpolicies') ?></td>
|
|
|
195 |
</tr>
|
196 |
<?php
|
197 |
} else {
|
198 |
$current_user = wp_get_current_user();
|
199 |
?>
|
200 |
<tr>
|
201 |
+
<th scope="row" class="row-med"><?php _e('Admin user', 'ninjafirewall') ?></th>
|
202 |
+
<td><code><?php echo htmlspecialchars( $current_user->user_login ) ?></code>: <?php _e('You are whitelisted by the firewall.', 'ninjafirewall') ?></td>
|
|
|
203 |
</tr>
|
204 |
<?php
|
205 |
}
|
206 |
if ( defined('NFW_ALLOWED_ADMIN') && ! is_multisite() ) {
|
207 |
?>
|
208 |
<tr>
|
209 |
+
<th scope="row" class="row-med"><?php _e('Restrictions', 'ninjafirewall') ?></th>
|
210 |
+
<td><?php _e('Access to NinjaFirewall is restricted to specific users.', 'ninjafirewall') ?></td>
|
|
|
211 |
</tr>
|
212 |
<?php
|
213 |
}
|
214 |
|
215 |
// Try to find out if there is any "lost" session between the firewall
|
216 |
// and the plugin part of NinjaFirewall (could be a buggy plugin killing
|
217 |
+
// the session etc), unless we just installed it
|
218 |
if ( defined( 'NFW_SWL' ) && ! empty( $_SESSION['nfw_goodguy'] ) && empty( $_REQUEST['nfw_firstrun'] ) ) {
|
219 |
?>
|
220 |
<tr>
|
221 |
+
<th scope="row" class="row-med"><?php _e('User session', 'ninjafirewall') ?></th>
|
222 |
+
<td><span class="dashicons dashicons-warning nfw-warning"></span> <?php _e('It seems that the user session set by NinjaFirewall was not found by the firewall script.', 'ninjafirewall') ?></td>
|
|
|
223 |
</tr>
|
224 |
<?php
|
225 |
}
|
242 |
}
|
243 |
?>
|
244 |
<tr>
|
245 |
+
<th scope="row" class="row-med"><?php _e('Centralized Logging', 'ninjafirewall') ?></th>
|
246 |
<?php
|
247 |
if ( $err_msg ) {
|
248 |
?>
|
249 |
+
<td><span class="dashicons dashicons-dismiss nfw-danger"></span> <?php printf( __('Error: %s', 'ninjafirewall'), $err_msg) ?></td>
|
|
|
250 |
</tr>
|
251 |
<?php
|
252 |
$err_msg = '';
|
253 |
} else {
|
254 |
?>
|
|
|
255 |
<td><a href="?page=nfsublog#clogs"><?php _e('Enabled', 'ninjafirewall'); echo "</a>. $ok_msg"; ?></td>
|
256 |
</tr>
|
257 |
<?php
|
258 |
}
|
259 |
}
|
260 |
|
|
|
|
|
261 |
if (! filter_var(NFW_REMOTE_ADDR, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) ) {
|
262 |
?>
|
263 |
<tr>
|
264 |
+
<th scope="row" class="row-med"><?php _e('Source IP', 'ninjafirewall') ?></th>
|
265 |
+
<td><span class="dashicons dashicons-warning nfw-warning"></span> <?php printf( __('You have a private IP : %s', 'ninjafirewall') .'<br />'. __('If your site is behind a reverse proxy or a load balancer, ensure that you have setup your HTTP server or PHP to forward the correct visitor IP, otherwise use the NinjaFirewall %s configuration file.', 'ninjafirewall'), htmlentities(NFW_REMOTE_ADDR), '<code><a href="https://nintechnet.com/ninjafirewall/wp-edition/help/?htninja">.htninja</a></code>') ?></td>
|
|
|
266 |
</tr>
|
267 |
<?php
|
268 |
}
|
269 |
+
if (! empty( $_SERVER["HTTP_CF_CONNECTING_IP"] ) ) {
|
270 |
if ( NFW_REMOTE_ADDR != $_SERVER["HTTP_CF_CONNECTING_IP"] ) {
|
271 |
?>
|
272 |
<tr>
|
273 |
+
<th scope="row" class="row-med"><?php _e('CDN detection', 'ninjafirewall') ?></th>
|
274 |
+
<td><span class="dashicons dashicons-warning nfw-warning"></span> <?php printf( __('%s detected: you seem to be using Cloudflare CDN services. Ensure that you have setup your HTTP server or PHP to forward the correct visitor IP, otherwise use the NinjaFirewall %s configuration file.', 'ninjafirewall'), '<code>HTTP_CF_CONNECTING_IP</code>', '<code><a href="https://nintechnet.com/ninjafirewall/wp-edition/help/?htninja">.htninja</a></code>') ?></td>
|
|
|
275 |
</tr>
|
276 |
<?php
|
277 |
}
|
278 |
}
|
279 |
+
if (! empty( $_SERVER["HTTP_INCAP_CLIENT_IP"] ) ) {
|
280 |
if ( NFW_REMOTE_ADDR != $_SERVER["HTTP_INCAP_CLIENT_IP"] ) {
|
281 |
?>
|
282 |
<tr>
|
283 |
+
<th scope="row" class="row-med"><?php _e('CDN detection', 'ninjafirewall') ?></th>
|
284 |
+
<td><span class="dashicons dashicons-warning nfw-warning"></span> <?php printf( __('%s detected: you seem to be using Incapsula CDN services. Ensure that you have setup your HTTP server or PHP to forward the correct visitor IP, otherwise use the NinjaFirewall %s configuration file.', 'ninjafirewall'), '<code>HTTP_INCAP_CLIENT_IP</code>', '<code><a href="https://nintechnet.com/ninjafirewall/wp-edition/help/?htninja">.htninja</a></code>') ?></td>
|
|
|
285 |
</tr>
|
286 |
<?php
|
287 |
}
|
288 |
}
|
289 |
|
290 |
+
if (! is_writable( NFW_LOG_DIR . '/nfwlog' ) ) {
|
291 |
?>
|
292 |
<tr>
|
293 |
+
<th scope="row" class="row-med"><?php _e('Log dir', 'ninjafirewall') ?></th>
|
294 |
+
<td><span class="dashicons dashicons-dismiss nfw-danger"></span> <?php printf( __('%s directory is not writable! Please chmod it to 0777 or equivalent.', 'ninjafirewall'), '<code>'. htmlspecialchars(NFW_LOG_DIR) .'/nfwlog/</code>') ?></td>
|
|
|
295 |
</tr>
|
296 |
<?php
|
297 |
}
|
299 |
if (! is_writable( NFW_LOG_DIR . '/nfwlog/cache') ) {
|
300 |
?>
|
301 |
<tr>
|
302 |
+
<th scope="row" class="row-med"><?php _e('Log dir', 'ninjafirewall') ?></th>
|
303 |
+
<td><span class="dashicons dashicons-dismiss nfw-danger"></span> <?php printf(__('%s directory is not writable! Please chmod it to 0777 or equivalent.', 'ninjafirewall'), '<code>'. htmlspecialchars(NFW_LOG_DIR) . '/nfwlog/cache/</code>') ?></td>
|
|
|
304 |
</tr>
|
305 |
<?php
|
306 |
}
|
308 |
$doc_root = rtrim($_SERVER['DOCUMENT_ROOT'], '/');
|
309 |
if ( @file_exists( $file = dirname( $doc_root ) . '/.htninja') ||
|
310 |
@file_exists( $file = $doc_root . '/.htninja') ) {
|
311 |
+
echo '<tr><th scope="row" class="row-med">' . __('Optional configuration file', 'ninjafirewall') . '</th>
|
|
|
312 |
<td><code>' . htmlentities($file) . '</code></td>
|
313 |
</tr>';
|
314 |
|
315 |
+
// Check if we have a MySQLi link identifier defined in the .htninja
|
316 |
if (! empty( $GLOBALS['nfw_mysqli'] ) && ! empty( $GLOBALS['nfw_table_prefix'] ) ) {
|
317 |
echo '<tr>
|
318 |
+
<th scope="row" class="row-med">' . __('MySQLi link identifier', 'ninjafirewall') . '</th>
|
|
|
319 |
<td>' . __('A MySQLi link identifier was detected in your <code>.htninja</code>.', 'ninjafirewall') . '</td>
|
320 |
</tr>';
|
321 |
}
|
|
|
322 |
}
|
|
|
323 |
echo '</table>';
|
324 |
?>
|
325 |
</div>
|
|
|
326 |
<?php
|
327 |
+
|
328 |
+
if ( defined( 'NFW_WPWAF' ) ) {
|
329 |
+
// Load the thickbox dialogbox if we're running in WordPress WAF mode
|
330 |
+
require __DIR__ .'/thickbox.php';
|
331 |
+
}
|
332 |
+
|
333 |
// ---------------------------------------------------------------------
|
334 |
// EOF
|
lib/rules_editor.php
CHANGED
@@ -1,15 +1,25 @@
|
|
1 |
<?php
|
2 |
/*
|
3 |
-
|
4 |
-
| NinjaFirewall (WP
|
5 |
| |
|
6 |
| (c) NinTechNet - https://nintechnet.com/ |
|
7 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
*/
|
9 |
|
10 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
11 |
|
12 |
-
// Block immediately if user is not allowed
|
13 |
nf_not_allowed( 'block', __LINE__ );
|
14 |
|
15 |
echo '
|
@@ -80,9 +90,9 @@ foreach ( $nfw_rules as $rule_key => $rule_value ) {
|
|
80 |
$nonce = wp_nonce_field('editor_save', 'nfwnonce', 0, 0);
|
81 |
|
82 |
echo '<br /><h3>' . __('NinjaFirewall built-in security rules', 'ninjafirewall') .'</h3>
|
83 |
-
<table class="form-table">
|
84 |
<tr>
|
85 |
-
<th scope="row">' . __('Select the rule you want to disable or enable', 'ninjafirewall') .'</th>
|
86 |
<td>
|
87 |
<form method="post">'. $nonce . '
|
88 |
<select name="sel_e_r" style="font-family:Consolas,Monaco,monospace;">
|
@@ -147,5 +157,5 @@ echo '</select> <input class="button-secondary" type="submit" name="d
|
|
147 |
</tr>
|
148 |
</table>
|
149 |
</div>';
|
150 |
-
|
151 |
// EOF
|
1 |
<?php
|
2 |
/*
|
3 |
+
+---------------------------------------------------------------------+
|
4 |
+
| NinjaFirewall (WP Edition) |
|
5 |
| |
|
6 |
| (c) NinTechNet - https://nintechnet.com/ |
|
7 |
+
+---------------------------------------------------------------------+
|
8 |
+
| This program is free software: you can redistribute it and/or |
|
9 |
+
| modify it under the terms of the GNU General Public License as |
|
10 |
+
| published by the Free Software Foundation, either version 3 of |
|
11 |
+
| the License, or (at your option) any later version. |
|
12 |
+
| |
|
13 |
+
| This program is distributed in the hope that it will be useful, |
|
14 |
+
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
+
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
+
| GNU General Public License for more details. |
|
17 |
+
+---------------------------------------------------------------------+ i18n+ / sa / 2
|
18 |
*/
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
21 |
|
22 |
+
// Block immediately if user is not allowed
|
23 |
nf_not_allowed( 'block', __LINE__ );
|
24 |
|
25 |
echo '
|
90 |
$nonce = wp_nonce_field('editor_save', 'nfwnonce', 0, 0);
|
91 |
|
92 |
echo '<br /><h3>' . __('NinjaFirewall built-in security rules', 'ninjafirewall') .'</h3>
|
93 |
+
<table class="form-table nfw-table">
|
94 |
<tr>
|
95 |
+
<th scope="row" class="row-med">' . __('Select the rule you want to disable or enable', 'ninjafirewall') .'</th>
|
96 |
<td>
|
97 |
<form method="post">'. $nonce . '
|
98 |
<select name="sel_e_r" style="font-family:Consolas,Monaco,monospace;">
|
157 |
</tr>
|
158 |
</table>
|
159 |
</div>';
|
160 |
+
// ---------------------------------------------------------------------
|
161 |
// EOF
|
lib/rules_update.php
CHANGED
@@ -14,13 +14,13 @@
|
|
14 |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
| GNU General Public License for more details. |
|
17 |
-
+---------------------------------------------------------------------+ i18n+ / sa
|
18 |
*/
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
21 |
|
22 |
// If your server can't remotely connect to a SSL port, add this
|
23 |
-
// to your wp-config.php script: define('NFW_DONT_USE_SSL', 1)
|
24 |
if ( defined( 'NFW_DONT_USE_SSL' ) ) {
|
25 |
$proto = "http";
|
26 |
} else {
|
@@ -28,7 +28,7 @@ if ( defined( 'NFW_DONT_USE_SSL' ) ) {
|
|
28 |
}
|
29 |
$update_log = NFW_LOG_DIR . '/nfwlog/updates.php';
|
30 |
|
31 |
-
// Check which rules should be returned
|
32 |
if ( defined('NFW_WPWAF') ) {
|
33 |
$rules_type = 0;
|
34 |
} else {
|
@@ -44,14 +44,14 @@ if ( empty( $nfw_options['sched_updates'] ) || empty( $nfw_options['enable_updat
|
|
44 |
}
|
45 |
|
46 |
if ( defined( 'NFUPDATESDO' ) && NFUPDATESDO == 2 ) {
|
47 |
-
// Installation
|
48 |
$update_url = array(
|
49 |
$proto . '://plugins.svn.wordpress.org/ninjafirewall/updates/',
|
50 |
'version3.txt',
|
51 |
'rules3s.txt'
|
52 |
);
|
53 |
} else {
|
54 |
-
// Scheduled updates or plugin update
|
55 |
$caching_id = sha1( home_url() );
|
56 |
$update_url = array(
|
57 |
$proto . '://updates.nintechnet.com/index.php',
|
@@ -60,19 +60,19 @@ if ( defined( 'NFUPDATESDO' ) && NFUPDATESDO == 2 ) {
|
|
60 |
);
|
61 |
}
|
62 |
|
63 |
-
// NFUPDATESDO: scheduled update (1), installation (2) or plugin update (3 - deprecated since v3.8)
|
64 |
if (defined('NFUPDATESDO') ) {
|
65 |
define('NFW_RULES', nf_sub_do_updates($update_url, $update_log, NFUPDATESDO));
|
66 |
return;
|
67 |
}
|
68 |
|
69 |
-
// Block immediately if user is not allowed
|
70 |
nf_not_allowed( 'block', __LINE__ );
|
71 |
|
72 |
echo '<div class="wrap">
|
73 |
<h1><img style="vertical-align:top;width:33px;height:33px;" src="'. plugins_url( '/ninjafirewall/images/ninjafirewall_32.png' ) .'"> ' . __('Rules Update', 'ninjafirewall') . '</h1>';
|
74 |
|
75 |
-
// We stop and warn the user if the firewall is disabled
|
76 |
if (! defined('NF_DISABLED') ) {
|
77 |
is_nfw_enabled();
|
78 |
}
|
@@ -81,24 +81,24 @@ if (NF_DISABLED) {
|
|
81 |
return;
|
82 |
}
|
83 |
|
84 |
-
//Saved options
|
85 |
-
if (! empty($_POST['nfw_act']) ) {
|
86 |
-
if ( empty($_POST['nfwnonce']) || ! wp_verify_nonce($_POST['nfwnonce'], 'updates_save') ) {
|
87 |
wp_nonce_ays('updates_save');
|
88 |
}
|
89 |
-
// Check updates now
|
90 |
-
if ($_POST['
|
91 |
if ( $res = nf_sub_do_updates($update_url, $update_log, 0) ) {
|
92 |
echo '<div class="updated notice is-dismissible"><p>' . __('Security rules have been updated.', 'ninjafirewall') . '</p></div>';
|
93 |
} else {
|
94 |
echo '<div class="updated notice is-dismissible"><p>' . __('No security rules update available.', 'ninjafirewall') . '</p></div>';
|
95 |
}
|
96 |
-
// Enable flag to display log
|
97 |
$tmp_showlog = 1;
|
98 |
} else {
|
99 |
-
if ($_POST['
|
100 |
nf_sub_updates_save();
|
101 |
-
} elseif ($_POST['
|
102 |
nf_sub_updates_clearlog($update_log);
|
103 |
}
|
104 |
echo '<div class="updated notice is-dismissible"><p>' . __('Your changes have been saved.', 'ninjafirewall') . '</p></div>';
|
@@ -107,6 +107,11 @@ if (! empty($_POST['nfw_act']) ) {
|
|
107 |
$nfw_options = nfw_get_option('nfw_options');
|
108 |
}
|
109 |
|
|
|
|
|
|
|
|
|
|
|
110 |
if ( empty($nfw_options['enable_updates']) ) {
|
111 |
$enable_updates = 0;
|
112 |
} else {
|
@@ -120,52 +125,34 @@ if ( empty($nfw_options['sched_updates']) || ! preg_match('/^[2-3]$/', $nfw_opti
|
|
120 |
if ( empty($nfw_options['notify_updates']) && isset($nfw_options['notify_updates']) ) {
|
121 |
$notify_updates = 0;
|
122 |
} else {
|
123 |
-
// Defaut if not set yet
|
124 |
$notify_updates = 1;
|
125 |
}
|
126 |
?>
|
127 |
-
|
128 |
-
<script type="text/javascript">
|
129 |
-
function toogle_table(off) {
|
130 |
-
if ( off == 1 ) {
|
131 |
-
jQuery("#upd_table").slideDown();
|
132 |
-
} else if ( off == 2 ) {
|
133 |
-
jQuery("#upd_table").slideUp();
|
134 |
-
}
|
135 |
-
return;
|
136 |
-
}
|
137 |
-
</script>
|
138 |
<br />
|
139 |
<form method="post" name="fupdates">
|
|
|
140 |
<?php wp_nonce_field('updates_save', 'nfwnonce', 0); ?>
|
141 |
-
|
|
|
142 |
<tr style="background-color:#F9F9F9;border: solid 1px #DFDFDF;">
|
143 |
-
<th scope="row"><?php _e('Automatically update NinjaFirewall security rules', 'ninjafirewall') ?></th>
|
144 |
-
<td>
|
145 |
-
<label><input type="radio" name="enable_updates" value="1"<?php checked($enable_updates, 1) ?> onclick="toogle_table(1);"> <?php _e('Yes (default)', 'ninjafirewall') ?></label>
|
146 |
-
</td>
|
147 |
<td>
|
148 |
-
|
149 |
</td>
|
150 |
</tr>
|
151 |
</table>
|
152 |
|
153 |
-
|
154 |
-
|
155 |
-
if ( defined('DISABLE_WP_CRON') ) {
|
156 |
-
?>
|
157 |
-
<p><img src="<?php echo plugins_url() ?>/ninjafirewall/images/glyphicons-warning.png"> <span class="description"><?php printf( __('It seems that %s is enabled. Ensure you have another way to run WP-Cron, otherwise NinjaFirewall automatic updates will not work.', 'ninjafirewall'), '<code>DISABLE_WP_CRON</code>' ) ?></span></p>
|
158 |
-
<?php
|
159 |
-
}
|
160 |
-
?>
|
161 |
<div id="upd_table"<?php echo $enable_updates == 1 ? '' : ' style="display:none"' ?>>
|
162 |
-
<table class="form-table">
|
163 |
<tr>
|
164 |
-
<th scope="row"><?php _e('Check for updates', 'ninjafirewall') ?></th>
|
165 |
<td>
|
166 |
<select name="sched_updates">
|
167 |
-
<option disabled><?php _e('Every 15 minutes', 'ninjafirewall') ?> (
|
168 |
-
<option disabled><?php _e('Every 30 minutes', 'ninjafirewall') ?> (
|
169 |
<option value="1"<?php selected($sched_updates, 1) ?>><?php _e('Hourly', 'ninjafirewall') ?></option>
|
170 |
<option value="2"<?php selected($sched_updates, 2) ?>><?php _e('Twicedaily', 'ninjafirewall') ?></option>
|
171 |
<option value="3"<?php selected($sched_updates, 3) ?>><?php _e('Daily', 'ninjafirewall') ?></option>
|
@@ -175,15 +162,16 @@ function toogle_table(off) {
|
|
175 |
$sched = new DateTime( date('M d, Y H:i:s', $nextcron) );
|
176 |
$now = new DateTime( date('M d, Y H:i:s', time() ) );
|
177 |
$diff = $now->diff($sched);
|
178 |
-
?>
|
179 |
-
<p><span class="description"><?php printf( __('Next scheduled update will start in approximately %s day, %s hour(s), %s minute(s) and %s seconds.', 'ninjafirewall'), $diff->format('%a') % 7, $diff->format('%h'), $diff->format('%i'), $diff->format('%s') ) ?></span></p>
|
180 |
-
<?php
|
181 |
// Ensure that the scheduled scan time is in the future,
|
182 |
// not in the past, otherwise send a warning because wp-cron
|
183 |
-
// is obviously not working as expected
|
184 |
if ( $nextcron < time() ) {
|
185 |
?>
|
186 |
-
<p
|
|
|
|
|
|
|
|
|
187 |
<?php
|
188 |
}
|
189 |
}
|
@@ -191,62 +179,58 @@ function toogle_table(off) {
|
|
191 |
</td>
|
192 |
</tr>
|
193 |
<tr>
|
194 |
-
<th scope="row"><?php _e('Notification', 'ninjafirewall') ?></th>
|
195 |
<td>
|
196 |
<p><label><input type="checkbox" name="notify_updates" value="1"<?php checked($notify_updates, 1) ?> /><?php _e('Send me a report by email when security rules have been updated.', 'ninjafirewall') ?></label></p>
|
197 |
-
<
|
198 |
</td>
|
199 |
</tr>
|
200 |
-
</table>
|
201 |
-
</div>
|
202 |
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
} else {
|
213 |
-
$log_data[] = __('The updates log is currently empty.', 'ninjafirewall');
|
214 |
-
}
|
215 |
-
?>
|
216 |
-
<br />
|
217 |
-
<form method="post">
|
218 |
-
<?php wp_nonce_field('updates_save', 'nfwnonce', 0); ?>
|
219 |
-
<table class="form-table">
|
220 |
<tr>
|
221 |
-
<th scope="row"><?php _e('Updates Log', 'ninjafirewall') ?></th>
|
222 |
<td>
|
223 |
-
<textarea class="small-text code" style="width:100%;height:
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
<?php
|
230 |
-
echo '<input type="submit" name="clear_updates_log" value="' . __('Delete Log', 'ninjafirewall') . '" class="button-secondary"';
|
231 |
-
if (file_exists($update_log) ) {
|
232 |
-
echo ' />';
|
233 |
-
} else {
|
234 |
-
echo ' disabled="disabled" />';
|
235 |
-
}
|
236 |
-
echo ' <span class="description">' . __('Log is flushed automatically.', 'ninjafirewall') . '</span>';
|
237 |
-
?>
|
238 |
</td>
|
239 |
-
|
|
|
|
|
|
|
240 |
</table>
|
241 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
242 |
</form>
|
243 |
-
|
244 |
-
}
|
245 |
-
?>
|
246 |
</div>
|
247 |
<?php
|
248 |
|
249 |
-
|
250 |
|
251 |
function nf_sub_updates_save() {
|
252 |
|
@@ -290,7 +274,7 @@ function nf_sub_updates_save() {
|
|
290 |
|
291 |
}
|
292 |
|
293 |
-
|
294 |
|
295 |
function nf_sub_updates_clearlog($update_log) {
|
296 |
|
@@ -300,7 +284,7 @@ function nf_sub_updates_clearlog($update_log) {
|
|
300 |
|
301 |
}
|
302 |
|
303 |
-
|
304 |
|
305 |
function nf_sub_do_updates($update_url, $update_log, $NFUPDATESDO = 1) {
|
306 |
|
@@ -397,7 +381,7 @@ function nf_sub_do_updates($update_url, $update_log, $NFUPDATESDO = 1) {
|
|
397 |
return 1;
|
398 |
}
|
399 |
|
400 |
-
|
401 |
|
402 |
function nf_sub_updates_getversion($update_url, $rules_version, $update_log) {
|
403 |
|
@@ -462,7 +446,7 @@ function nf_sub_updates_getversion($update_url, $rules_version, $update_log) {
|
|
462 |
return 0;
|
463 |
}
|
464 |
|
465 |
-
|
466 |
|
467 |
function nf_sub_updates_download($update_url, $update_log, $new_rules_version) {
|
468 |
|
@@ -528,7 +512,7 @@ function nf_sub_updates_download($update_url, $update_log, $new_rules_version) {
|
|
528 |
return 0;
|
529 |
}
|
530 |
|
531 |
-
|
532 |
|
533 |
function nf_sub_updates_log($update_log, $msg) {
|
534 |
|
@@ -543,7 +527,7 @@ function nf_sub_updates_log($update_log, $msg) {
|
|
543 |
|
544 |
}
|
545 |
|
546 |
-
|
547 |
|
548 |
function nf_sub_updates_notification($new_rules_version) {
|
549 |
|
@@ -576,5 +560,5 @@ function nf_sub_updates_notification($new_rules_version) {
|
|
576 |
|
577 |
}
|
578 |
|
579 |
-
|
580 |
// EOF
|
14 |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
| GNU General Public License for more details. |
|
17 |
+
+---------------------------------------------------------------------+ i18n+ / sa / 2
|
18 |
*/
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
21 |
|
22 |
// If your server can't remotely connect to a SSL port, add this
|
23 |
+
// to your wp-config.php script: `define('NFW_DONT_USE_SSL', 1);`
|
24 |
if ( defined( 'NFW_DONT_USE_SSL' ) ) {
|
25 |
$proto = "http";
|
26 |
} else {
|
28 |
}
|
29 |
$update_log = NFW_LOG_DIR . '/nfwlog/updates.php';
|
30 |
|
31 |
+
// Check which rules should be returned
|
32 |
if ( defined('NFW_WPWAF') ) {
|
33 |
$rules_type = 0;
|
34 |
} else {
|
44 |
}
|
45 |
|
46 |
if ( defined( 'NFUPDATESDO' ) && NFUPDATESDO == 2 ) {
|
47 |
+
// Installation
|
48 |
$update_url = array(
|
49 |
$proto . '://plugins.svn.wordpress.org/ninjafirewall/updates/',
|
50 |
'version3.txt',
|
51 |
'rules3s.txt'
|
52 |
);
|
53 |
} else {
|
54 |
+
// Scheduled updates or plugin update
|
55 |
$caching_id = sha1( home_url() );
|
56 |
$update_url = array(
|
57 |
$proto . '://updates.nintechnet.com/index.php',
|
60 |
);
|
61 |
}
|
62 |
|
63 |
+
// NFUPDATESDO: scheduled update (1), installation (2) or plugin update (3 - deprecated since v3.8)
|
64 |
if (defined('NFUPDATESDO') ) {
|
65 |
define('NFW_RULES', nf_sub_do_updates($update_url, $update_log, NFUPDATESDO));
|
66 |
return;
|
67 |
}
|
68 |
|
69 |
+
// Block immediately if user is not allowed
|
70 |
nf_not_allowed( 'block', __LINE__ );
|
71 |
|
72 |
echo '<div class="wrap">
|
73 |
<h1><img style="vertical-align:top;width:33px;height:33px;" src="'. plugins_url( '/ninjafirewall/images/ninjafirewall_32.png' ) .'"> ' . __('Rules Update', 'ninjafirewall') . '</h1>';
|
74 |
|
75 |
+
// We stop and warn the user if the firewall is disabled
|
76 |
if (! defined('NF_DISABLED') ) {
|
77 |
is_nfw_enabled();
|
78 |
}
|
81 |
return;
|
82 |
}
|
83 |
|
84 |
+
//Saved options
|
85 |
+
if (! empty( $_POST['nfw_act'] ) ) {
|
86 |
+
if ( empty( $_POST['nfwnonce'] ) || ! wp_verify_nonce( $_POST['nfwnonce'], 'updates_save' ) ) {
|
87 |
wp_nonce_ays('updates_save');
|
88 |
}
|
89 |
+
// Check updates now
|
90 |
+
if ( isset( $_POST['check_updates'] ) ) {
|
91 |
if ( $res = nf_sub_do_updates($update_url, $update_log, 0) ) {
|
92 |
echo '<div class="updated notice is-dismissible"><p>' . __('Security rules have been updated.', 'ninjafirewall') . '</p></div>';
|
93 |
} else {
|
94 |
echo '<div class="updated notice is-dismissible"><p>' . __('No security rules update available.', 'ninjafirewall') . '</p></div>';
|
95 |
}
|
96 |
+
// Enable flag to display log
|
97 |
$tmp_showlog = 1;
|
98 |
} else {
|
99 |
+
if ( isset( $_POST['save_options'] ) ) {
|
100 |
nf_sub_updates_save();
|
101 |
+
} elseif ( isset( $_POST['clear_log'] ) ) {
|
102 |
nf_sub_updates_clearlog($update_log);
|
103 |
}
|
104 |
echo '<div class="updated notice is-dismissible"><p>' . __('Your changes have been saved.', 'ninjafirewall') . '</p></div>';
|
107 |
$nfw_options = nfw_get_option('nfw_options');
|
108 |
}
|
109 |
|
110 |
+
// If WP cron is disabled, we simply warn the user
|
111 |
+
if ( defined('DISABLE_WP_CRON') && DISABLE_WP_CRON == true ) {
|
112 |
+
echo '<div class="notice-warning notice is-dismissible"><p>' . sprintf( __('It seems that %s is set. Ensure you have another way to run WP-Cron, otherwise NinjaFirewall automatic updates will not work.', 'ninjafirewall'), '<code>DISABLE_WP_CRON</code>' ) . '</p></div>';
|
113 |
+
}
|
114 |
+
|
115 |
if ( empty($nfw_options['enable_updates']) ) {
|
116 |
$enable_updates = 0;
|
117 |
} else {
|
125 |
if ( empty($nfw_options['notify_updates']) && isset($nfw_options['notify_updates']) ) {
|
126 |
$notify_updates = 0;
|
127 |
} else {
|
128 |
+
// Defaut if not set yet
|
129 |
$notify_updates = 1;
|
130 |
}
|
131 |
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
132 |
<br />
|
133 |
<form method="post" name="fupdates">
|
134 |
+
|
135 |
<?php wp_nonce_field('updates_save', 'nfwnonce', 0); ?>
|
136 |
+
|
137 |
+
<table class="form-table nfw-table">
|
138 |
<tr style="background-color:#F9F9F9;border: solid 1px #DFDFDF;">
|
139 |
+
<th scope="row" class="row-med"><?php _e('Automatically update NinjaFirewall security rules', 'ninjafirewall') ?></th>
|
|
|
|
|
|
|
140 |
<td>
|
141 |
+
<?php nfw_toggle_switch( 'danger', 'enable_updates', __('Enabled', 'ninjafirewall'), __('Disabled', 'ninjafirewall'), 'large', $enable_updates, false, 'onclick="nfwjs_up_down(\'upd_table\');"' ) ?>
|
142 |
</td>
|
143 |
</tr>
|
144 |
</table>
|
145 |
|
146 |
+
<br />
|
147 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
148 |
<div id="upd_table"<?php echo $enable_updates == 1 ? '' : ' style="display:none"' ?>>
|
149 |
+
<table class="form-table nfw-table">
|
150 |
<tr>
|
151 |
+
<th scope="row" class="row-med"><?php _e('Check for updates', 'ninjafirewall') ?></th>
|
152 |
<td>
|
153 |
<select name="sched_updates">
|
154 |
+
<option disabled><?php _e('Every 15 minutes', 'ninjafirewall') ?> (Premium)</option>
|
155 |
+
<option disabled><?php _e('Every 30 minutes', 'ninjafirewall') ?> (Premium)</option>
|
156 |
<option value="1"<?php selected($sched_updates, 1) ?>><?php _e('Hourly', 'ninjafirewall') ?></option>
|
157 |
<option value="2"<?php selected($sched_updates, 2) ?>><?php _e('Twicedaily', 'ninjafirewall') ?></option>
|
158 |
<option value="3"<?php selected($sched_updates, 3) ?>><?php _e('Daily', 'ninjafirewall') ?></option>
|
162 |
$sched = new DateTime( date('M d, Y H:i:s', $nextcron) );
|
163 |
$now = new DateTime( date('M d, Y H:i:s', time() ) );
|
164 |
$diff = $now->diff($sched);
|
|
|
|
|
|
|
165 |
// Ensure that the scheduled scan time is in the future,
|
166 |
// not in the past, otherwise send a warning because wp-cron
|
167 |
+
// is obviously not working as expected
|
168 |
if ( $nextcron < time() ) {
|
169 |
?>
|
170 |
+
<p class="description" style="color:red"><?php _e('The next scheduled date is in the past! WordPress wp-cron may not be working or may have been disabled.', 'ninjafirewall'); ?></p>
|
171 |
+
<?php
|
172 |
+
} else {
|
173 |
+
?>
|
174 |
+
<p class="description"><?php printf( __('Next scheduled update will start in approximately %s day, %s hour(s), %s minute(s) and %s seconds.', 'ninjafirewall'), $diff->format('%a') % 7, $diff->format('%h'), $diff->format('%i'), $diff->format('%s') ) ?></p>
|
175 |
<?php
|
176 |
}
|
177 |
}
|
179 |
</td>
|
180 |
</tr>
|
181 |
<tr>
|
182 |
+
<th scope="row" class="row-med"><?php _e('Notification', 'ninjafirewall') ?></th>
|
183 |
<td>
|
184 |
<p><label><input type="checkbox" name="notify_updates" value="1"<?php checked($notify_updates, 1) ?> /><?php _e('Send me a report by email when security rules have been updated.', 'ninjafirewall') ?></label></p>
|
185 |
+
<p class="description"><?php _e('Reports will be sent to the contact email address defined in the Event Notifications menu.', 'ninjafirewall') ?></p>
|
186 |
</td>
|
187 |
</tr>
|
|
|
|
|
188 |
|
189 |
+
<?php
|
190 |
+
if (! empty($nfw_options['enable_updates']) || ! empty($tmp_showlog) ) {
|
191 |
+
$log_data = array();
|
192 |
+
if ( file_exists($update_log) ) {
|
193 |
+
$log_data = file($update_log);
|
194 |
+
} else {
|
195 |
+
$log_data[] = __('The updates log is currently empty.', 'ninjafirewall');
|
196 |
+
}
|
197 |
+
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
198 |
<tr>
|
199 |
+
<th scope="row" class="row-med"><?php _e('Updates Log', 'ninjafirewall') ?></th>
|
200 |
<td>
|
201 |
+
<textarea class="small-text code" style="width:100%;height:200px;" wrap="off" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"><?php
|
202 |
+
$reversed = array_reverse($log_data);
|
203 |
+
foreach ($reversed as $key) {
|
204 |
+
echo htmlentities($key);
|
205 |
+
}?></textarea>
|
206 |
+
<p class="description"><?php _e('Log is flushed automatically.', 'ninjafirewall') ?></p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
207 |
</td>
|
208 |
+
</tr>
|
209 |
+
<?php
|
210 |
+
}
|
211 |
+
?>
|
212 |
</table>
|
213 |
+
|
214 |
+
</div>
|
215 |
+
<p>
|
216 |
+
<input name="nfw_act" type="hidden" value="1" />
|
217 |
+
<input name="save_options" type="submit" class="button-primary" value="<?php _e('Save Updates Options', 'ninjafirewall') ?>" />
|
218 |
+
<input name="check_updates" type="submit" class="button-secondary" value="<?php _e('Check For Updates Now!', 'ninjafirewall') ?>" />
|
219 |
+
<?php
|
220 |
+
if ( empty( $enable_updates ) || ! file_exists( $update_log ) ) {
|
221 |
+
$style = ' style="display:none"';
|
222 |
+
} else {
|
223 |
+
$style = '';
|
224 |
+
}
|
225 |
+
?>
|
226 |
+
<input name="clear_log" type="submit" value="<?php _e('Delete Log', 'ninjafirewall') ?>" class="button-secondary"<?php echo $style ?> />
|
227 |
+
</p>
|
228 |
</form>
|
229 |
+
|
|
|
|
|
230 |
</div>
|
231 |
<?php
|
232 |
|
233 |
+
// ---------------------------------------------------------------------
|
234 |
|
235 |
function nf_sub_updates_save() {
|
236 |
|
274 |
|
275 |
}
|
276 |
|
277 |
+
// ---------------------------------------------------------------------
|
278 |
|
279 |
function nf_sub_updates_clearlog($update_log) {
|
280 |
|
284 |
|
285 |
}
|
286 |
|
287 |
+
// ---------------------------------------------------------------------
|
288 |
|
289 |
function nf_sub_do_updates($update_url, $update_log, $NFUPDATESDO = 1) {
|
290 |
|
381 |
return 1;
|
382 |
}
|
383 |
|
384 |
+
// ---------------------------------------------------------------------
|
385 |
|
386 |
function nf_sub_updates_getversion($update_url, $rules_version, $update_log) {
|
387 |
|
446 |
return 0;
|
447 |
}
|
448 |
|
449 |
+
// ---------------------------------------------------------------------
|
450 |
|
451 |
function nf_sub_updates_download($update_url, $update_log, $new_rules_version) {
|
452 |
|
512 |
return 0;
|
513 |
}
|
514 |
|
515 |
+
// ---------------------------------------------------------------------
|
516 |
|
517 |
function nf_sub_updates_log($update_log, $msg) {
|
518 |
|
527 |
|
528 |
}
|
529 |
|
530 |
+
// ---------------------------------------------------------------------
|
531 |
|
532 |
function nf_sub_updates_notification($new_rules_version) {
|
533 |
|
560 |
|
561 |
}
|
562 |
|
563 |
+
// ---------------------------------------------------------------------
|
564 |
// EOF
|
lib/statistics.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
| GNU General Public License for more details. |
|
17 |
-
+---------------------------------------------------------------------+ i18n+ / sa
|
18 |
*/
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
@@ -22,9 +22,10 @@ if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
|
22 |
// Block immediately if user is not allowed :
|
23 |
nf_not_allowed( 'block', __LINE__ );
|
24 |
|
25 |
-
|
26 |
<div class="wrap">
|
27 |
-
<h1><img style="vertical-align:top;width:33px;height:33px;" src="
|
|
|
28 |
|
29 |
// Display a one-time notice after two weeks of use:
|
30 |
$nfw_options = nfw_get_option( 'nfw_options' );
|
@@ -75,6 +76,7 @@ $medium = (int) $medium;
|
|
75 |
$high = (int) $high;
|
76 |
$critical = (int) $critical;
|
77 |
$total = $critical + $high + $medium;
|
|
|
78 |
if ( $total == 1 ) { $fast = $slow; }
|
79 |
|
80 |
if (! $total ) {
|
@@ -93,62 +95,81 @@ if (! $total ) {
|
|
93 |
}
|
94 |
}
|
95 |
|
96 |
-
|
97 |
-
<
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
</script>
|
103 |
-
<table class="form-table">
|
104 |
<tr>
|
105 |
-
<th scope="row"
|
106 |
-
<td
|
107 |
</tr>
|
108 |
<tr>
|
109 |
-
<th scope="row"
|
110 |
-
<td
|
111 |
</tr>
|
112 |
<tr>
|
113 |
-
<th scope="row"
|
114 |
-
<td>
|
115 |
-
' . __('Critical', 'ninjafirewall') . ' : ' . $critical . '%<br />
|
116 |
-
<table bgcolor="#DFDFDF" border="0" cellpadding="0" cellspacing="0" height="14" width="250" style="height:14px;">
|
117 |
-
<tr>
|
118 |
-
<td width="' . round( $critical) . '%" background="' . plugins_url() . '/ninjafirewall/images/bar-critical.png" style="padding:0px"></td><td width="' . round(100 - $critical) . '%" style="padding:0px"></td>
|
119 |
-
</tr>
|
120 |
-
</table>
|
121 |
-
<br /><br />' . __('High', 'ninjafirewall') . ' : ' . $high . '%<br />
|
122 |
-
<table bgcolor="#DFDFDF" border="0" cellpadding="0" cellspacing="0" height="14" width="250" style="height:14px;">
|
123 |
-
<tr>
|
124 |
-
<td width="' . round( $high) . '%" background="' . plugins_url() . '/ninjafirewall/images/bar-high.png" style="padding:0px"></td><td width="' . round(100 - $high) . '%" style="padding:0px"></td>
|
125 |
-
</tr>
|
126 |
-
</table>
|
127 |
-
<br /><br />' . __('Medium', 'ninjafirewall') . ' : ' . $medium . '%<br />
|
128 |
-
<table bgcolor="#DFDFDF" border="0" cellpadding="0" cellspacing="0" height="14" width="250" style="height:14px;">
|
129 |
-
<tr>
|
130 |
-
<td width="' . round( $medium) . '%" background="' . plugins_url() . '/ninjafirewall/images/bar-medium.png" style="padding:0px;"></td><td width="' . round(100 - $medium) . '%" style="padding:0px;"></td>
|
131 |
-
</tr>
|
132 |
-
</table>
|
133 |
-
</td>
|
134 |
</tr>
|
135 |
-
<tr><th scope="row"><h3>' . __('Benchmarks', 'ninjafirewall') . '</h3></th><td> </td><td> </td></tr>
|
136 |
<tr>
|
137 |
-
<th scope="row"
|
138 |
-
<td
|
139 |
</tr>
|
140 |
<tr>
|
141 |
-
<th scope="row"
|
142 |
-
<td
|
143 |
</tr>
|
144 |
<tr>
|
145 |
-
<th scope="row"
|
146 |
-
<td
|
147 |
</tr>
|
148 |
</table>
|
149 |
-
</div>';
|
150 |
|
151 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
152 |
function summary_stats_combo( $statx ) {
|
153 |
|
154 |
// Find all stat files:
|
@@ -167,7 +188,7 @@ function summary_stats_combo( $statx ) {
|
|
167 |
krsort( $avail_logs );
|
168 |
|
169 |
$ret = '<form>
|
170 |
-
<select class="input" name="statx" onChange="return
|
171 |
<option value="">' . __('Select monthly stats to view...', 'ninjafirewall') . '</option>';
|
172 |
foreach ( $avail_logs as $file => $text ) {
|
173 |
$ret .= '<option value="'. $file .'"';
|
@@ -181,5 +202,5 @@ function summary_stats_combo( $statx ) {
|
|
181 |
return $ret;
|
182 |
}
|
183 |
|
184 |
-
|
185 |
// EOF
|
14 |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
| GNU General Public License for more details. |
|
17 |
+
+---------------------------------------------------------------------+ i18n+ / sa / 2
|
18 |
*/
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
22 |
// Block immediately if user is not allowed :
|
23 |
nf_not_allowed( 'block', __LINE__ );
|
24 |
|
25 |
+
?>
|
26 |
<div class="wrap">
|
27 |
+
<h1><img style="vertical-align:top;width:33px;height:33px;" src="<?php echo plugins_url( '/ninjafirewall/images/ninjafirewall_32.png' ) ?>"> <?php _e('Statistics', 'ninjafirewall') ?></h1>
|
28 |
+
<?php
|
29 |
|
30 |
// Display a one-time notice after two weeks of use:
|
31 |
$nfw_options = nfw_get_option( 'nfw_options' );
|
76 |
$high = (int) $high;
|
77 |
$critical = (int) $critical;
|
78 |
$total = $critical + $high + $medium;
|
79 |
+
$c = $critical; $h = $high; $m = $medium;
|
80 |
if ( $total == 1 ) { $fast = $slow; }
|
81 |
|
82 |
if (! $total ) {
|
95 |
}
|
96 |
}
|
97 |
|
98 |
+
?> <br />
|
99 |
+
<table class="form-table nfw-table">
|
100 |
+
<tr>
|
101 |
+
<th scope="row" class="row-med"><h3><?php _e('Monthly stats', 'ninjafirewall') ?></h3></th>
|
102 |
+
<td style="vertical-align: middle;"><?php echo summary_stats_combo( $statx ) ?></td>
|
103 |
+
</tr>
|
|
|
|
|
104 |
<tr>
|
105 |
+
<th scope="row" class="row-med"><?php _e('Blocked threats', 'ninjafirewall') ?></th>
|
106 |
+
<td><?php echo $total ?></td>
|
107 |
</tr>
|
108 |
<tr>
|
109 |
+
<th scope="row" class="row-med"><?php _e('Threats level', 'ninjafirewall') ?></th>
|
110 |
+
<td><canvas id="nfw_stats"></canvas></td>
|
111 |
</tr>
|
112 |
<tr>
|
113 |
+
<th scope="row" class="row-med"><h3><?php _e('Benchmarks', 'ninjafirewall') ?></h3></th>
|
114 |
+
<td> </td><td> </td>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
</tr>
|
|
|
116 |
<tr>
|
117 |
+
<th scope="row" class="row-med"><?php _e('Average time per request', 'ninjafirewall') ?></th>
|
118 |
+
<td><?php echo $speed ?> <?php _e('seconds', 'ninjafirewall') ?></td>
|
119 |
</tr>
|
120 |
<tr>
|
121 |
+
<th scope="row" class="row-med"><?php _e('Fastest request', 'ninjafirewall') ?></th>
|
122 |
+
<td><?php echo round( $fast, 4) ?> <?php _e('seconds', 'ninjafirewall') ?></td>
|
123 |
</tr>
|
124 |
<tr>
|
125 |
+
<th scope="row" class="row-med"><?php _e('Slowest request', 'ninjafirewall') ?></th>
|
126 |
+
<td><?php echo round( $slow, 4) ?> <?php _e('seconds', 'ninjafirewall') ?></td>
|
127 |
</tr>
|
128 |
</table>
|
|
|
129 |
|
130 |
+
<script>
|
131 |
+
var horizontalBarChartData = {
|
132 |
+
labels: [
|
133 |
+
"<?php _e('Critical', 'ninjafirewall') .' '. $critical ?>%",
|
134 |
+
"<?php _e('High', 'ninjafirewall') .' '. $high ?>%",
|
135 |
+
"<?php _e('Medium', 'ninjafirewall') .' '. $medium ?>%"
|
136 |
+
],
|
137 |
+
datasets: [{
|
138 |
+
label: '<?php _e('Blocked threats', 'ninjafirewall') ?>',
|
139 |
+
backgroundColor: ["#c9302c", "#ec971f","#ECE81F"],
|
140 |
+
data: [<?php echo "{$c}, {$h}, {$m}" ?>],
|
141 |
+
borderColor: ['#8C2C2A', '#c9302c', '#ec971f'],
|
142 |
+
borderWidth: 1
|
143 |
+
} ]
|
144 |
+
};
|
145 |
+
window.onload = function() {
|
146 |
+
var ctx = document.getElementById('nfw_stats').getContext("2d");
|
147 |
+
window.myHorizontalBar = new Chart(ctx, {
|
148 |
+
type: 'horizontalBar',
|
149 |
+
data: horizontalBarChartData,
|
150 |
+
options: {
|
151 |
+
tooltips: {
|
152 |
+
backgroundColor: '#333',
|
153 |
+
},
|
154 |
+
legend: {
|
155 |
+
display: false,
|
156 |
+
},
|
157 |
+
responsive: true,
|
158 |
+
scales: {
|
159 |
+
xAxes: [{
|
160 |
+
ticks: {
|
161 |
+
beginAtZero: true
|
162 |
+
}
|
163 |
+
}]
|
164 |
+
}
|
165 |
+
}
|
166 |
+
});
|
167 |
+
};
|
168 |
+
</script>
|
169 |
+
</div>
|
170 |
+
<?php
|
171 |
+
|
172 |
+
// ---------------------------------------------------------------------
|
173 |
function summary_stats_combo( $statx ) {
|
174 |
|
175 |
// Find all stat files:
|
188 |
krsort( $avail_logs );
|
189 |
|
190 |
$ret = '<form>
|
191 |
+
<select class="input" name="statx" onChange="return nfwjs_stat_redir(this.value);">
|
192 |
<option value="">' . __('Select monthly stats to view...', 'ninjafirewall') . '</option>';
|
193 |
foreach ( $avail_logs as $file => $text ) {
|
194 |
$ret .= '<option value="'. $file .'"';
|
202 |
return $ret;
|
203 |
}
|
204 |
|
205 |
+
// ---------------------------------------------------------------------
|
206 |
// EOF
|
lib/thickbox.php
ADDED
@@ -0,0 +1,275 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
+---------------------------------------------------------------------+
|
4 |
+
| NinjaFirewall (WP Edition) |
|
5 |
+
| |
|
6 |
+
| (c) NinTechNet - https://nintechnet.com/ |
|
7 |
+
+---------------------------------------------------------------------+
|
8 |
+
| This program is free software: you can redistribute it and/or |
|
9 |
+
| modify it under the terms of the GNU General Public License as |
|
10 |
+
| published by the Free Software Foundation, either version 3 of |
|
11 |
+
| the License, or (at your option) any later version. |
|
12 |
+
| |
|
13 |
+
| This program is distributed in the hope that it will be useful, |
|
14 |
+
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
+
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
+
| GNU General Public License for more details. |
|
17 |
+
+---------------------------------------------------------------------+ i18n+ / sa / 2
|
18 |
+
*/
|
19 |
+
|
20 |
+
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
21 |
+
|
22 |
+
nf_not_allowed( 'block', __LINE__ );
|
23 |
+
|
24 |
+
add_thickbox();
|
25 |
+
|
26 |
+
nfw_upgrade_fullwaf();
|
27 |
+
|
28 |
+
return;
|
29 |
+
|
30 |
+
// ---------------------------------------------------------------------
|
31 |
+
|
32 |
+
function nfw_upgrade_fullwaf() {
|
33 |
+
|
34 |
+
?>
|
35 |
+
<div id="nfw-thickbox-content" style="display:none;">
|
36 |
+
|
37 |
+
<h2><?php _e('Upgrade to Full WAF mode', 'ninjafirewall') ?></h2>
|
38 |
+
|
39 |
+
<div id="nfwaf-step1">
|
40 |
+
<p>
|
41 |
+
<?php
|
42 |
+
_e('In <strong>Full WAF</strong> mode, all scripts located inside the blog installation directories and sub-directories are protected by NinjaFirewall, including those that aren\'t part of the WordPress package. It gives you the highest possible level of protection: security without compromise.', 'ninjafirewall');
|
43 |
+
echo ' ';
|
44 |
+
printf( __('It works on most websites right out of the box, or may require <a href="%s" title="%s">some very little tweaks</a>. But in a few cases, mostly because of some shared hosting plans restrictions, it may simply not work at all.','ninjafirewall'), 'https://blog.nintechnet.com/troubleshoot-ninjafirewall-installation-problems/', 'Troubleshoot NinjaFirewall installation problems.');
|
45 |
+
echo ' ';
|
46 |
+
_e('If this happened to you, don\'t worry: you could still run it in <strong>WordPress WAF</strong> mode. Despite being less powerful than the <b>Full WAF</b> mode, it offers a level of protection and performance much higher than other security plugins.', 'ninjafirewall');
|
47 |
+
?>
|
48 |
+
</p>
|
49 |
+
<?php
|
50 |
+
// Fetch the HTTP server and PHP SAPI
|
51 |
+
$s1 = ''; $s2 = ''; $s3 = ''; $s4 = ''; $s5 = ''; $s6 = ''; $s7 = ''; $type = '';
|
52 |
+
$recommended = ' ' . __('(recommended)', 'ninjafirewall');
|
53 |
+
$display_none = ' style="display:none"';
|
54 |
+
$tr_ini_userini = '';
|
55 |
+
$tr_ini_phpini = $display_none;
|
56 |
+
$tr_htaccess_modphp = $display_none;
|
57 |
+
$tr_htaccess_litespeed = $display_none;
|
58 |
+
$tr_htaccess_openlitespeed = $display_none;
|
59 |
+
$tr_htaccess_suphp = $display_none;
|
60 |
+
$diy_div_style = '';
|
61 |
+
$div_nfwaf_step2 = $display_none;
|
62 |
+
|
63 |
+
// Mod_php
|
64 |
+
if ( preg_match('/apache/i', PHP_SAPI) ) {
|
65 |
+
$http_server = 'apachemod';
|
66 |
+
$s1 = $recommended ;
|
67 |
+
$type = 'htaccess';
|
68 |
+
$tr_htaccess_modphp = '';
|
69 |
+
$tr_ini_userini = $display_none;
|
70 |
+
|
71 |
+
// Litespeed / Openlitespeed
|
72 |
+
} elseif ( preg_match( '/litespeed/i', PHP_SAPI ) ) {
|
73 |
+
|
74 |
+
if ( isset( $_SERVER['LSWS_EDITION'] ) && stripos( $_SERVER['LSWS_EDITION'], 'Openlitespeed') === 0 ) {
|
75 |
+
$http_server = 'openlitespeed';
|
76 |
+
$s6 = $recommended ;
|
77 |
+
$type = 'htaccess';
|
78 |
+
$tr_htaccess_openlitespeed = '';
|
79 |
+
$tr_ini_userini = $display_none;
|
80 |
+
$diy_div_style = $display_none;
|
81 |
+
$div_nfwaf_step2 = '';
|
82 |
+
|
83 |
+
} else {
|
84 |
+
$http_server = 'litespeed';
|
85 |
+
$s5 = $recommended ;
|
86 |
+
$type = 'htaccess';
|
87 |
+
$tr_htaccess_litespeed = '';
|
88 |
+
$tr_ini_userini = $display_none;
|
89 |
+
}
|
90 |
+
|
91 |
+
} else {
|
92 |
+
$type = 'ini';
|
93 |
+
// Apache FCGI
|
94 |
+
if ( preg_match('/apache/i', $_SERVER['SERVER_SOFTWARE']) ) {
|
95 |
+
$http_server = 'apachecgi';
|
96 |
+
$s2 = $recommended ;
|
97 |
+
|
98 |
+
// NGINX
|
99 |
+
} elseif ( preg_match('/nginx/i', $_SERVER['SERVER_SOFTWARE']) ) {
|
100 |
+
$http_server = 'nginx';
|
101 |
+
$s4 = $recommended;
|
102 |
+
|
103 |
+
// Other webserver with FCGI
|
104 |
+
} else {
|
105 |
+
$http_server = 'othercgi';
|
106 |
+
$s7 = $recommended ;
|
107 |
+
}
|
108 |
+
}
|
109 |
+
?>
|
110 |
+
<table class="form-table nfw-table">
|
111 |
+
<tr>
|
112 |
+
<th scope="row" class="row-med"><?php _e('Select your HTTP server and your PHP server API', 'ninjafirewall') ?> (<code>SAPI</code>)</th>
|
113 |
+
<td>
|
114 |
+
<?php /* HTTP value must be changed in JS and main script as well */ ?>
|
115 |
+
<select class="input" name="http_server" onchange="nfwjs_httpserver(this.value)">
|
116 |
+
<option value="1"<?php selected($http_server, 'apachemod') ?>>Apache + PHP<?php echo PHP_MAJOR_VERSION ?> module<?php echo $s1 ?></option>
|
117 |
+
<option value="2"<?php selected($http_server, 'apachecgi') ?>>Apache + CGI/FastCGI or PHP-FPM<?php echo $s2 ?></option>
|
118 |
+
<option value="3"<?php selected($http_server, 'apachesuphp') ?>>Apache + suPHP</option>
|
119 |
+
<option value="4"<?php selected($http_server, 'nginx') ?>>Nginx + CGI/FastCGI or PHP-FPM<?php echo $s4 ?></option>
|
120 |
+
<option value="5"<?php selected($http_server, 'litespeed') ?>>Litespeed<?php echo $s5 ?></option>
|
121 |
+
<option value="6"<?php selected($http_server, 'openlitespeed') ?>>Openlitespeed<?php echo $s6 ?></option>
|
122 |
+
<option value="7"<?php selected($http_server, 'othercgi') ?>><?php _e('Other webserver + CGI/FastCGI or PHP-FPM', 'ninjafirewall') ?><?php echo $s6 ?></option>
|
123 |
+
</select>
|
124 |
+
<p class="description"><a class="links" href="<?php echo wp_nonce_url( '?page=NinjaFirewall&nfw_act=99', 'show_phpinfo', 'nfwnonce' ); ?>" target="_blank"><?php _e('View PHPINFO', 'ninjafirewall') ?></a></p>
|
125 |
+
</td>
|
126 |
+
</tr>
|
127 |
+
<?php
|
128 |
+
if ( $type == 'ini' ) {
|
129 |
+
$ini_style = '';
|
130 |
+
} else {
|
131 |
+
$ini_style = ' style="display:none"';
|
132 |
+
}
|
133 |
+
$f1 = ''; $f2 = '';
|
134 |
+
if ( file_exists( ABSPATH .'.user.ini' ) ) {
|
135 |
+
$ini_type = 1;
|
136 |
+
$f1 = $recommended;
|
137 |
+
$tr_ini_phpini = $display_none;
|
138 |
+
$tr_ini_userini = '';
|
139 |
+
} elseif ( file_exists( ABSPATH .'php.ini' ) ) {
|
140 |
+
$ini_type = 2;
|
141 |
+
$f2 = $recommended;
|
142 |
+
$tr_ini_phpini = '';
|
143 |
+
$tr_ini_userini = $display_none;
|
144 |
+
} else {
|
145 |
+
// fall back to .user.ini
|
146 |
+
$ini_type = 1;
|
147 |
+
$f1 = $recommended;
|
148 |
+
$tr_ini_phpini = $display_none;
|
149 |
+
$tr_ini_userini = '';
|
150 |
+
}
|
151 |
+
?>
|
152 |
+
<tr id="tr-select-ini"<?php echo $ini_style ?>>
|
153 |
+
<th scope="row" class="row-med"><?php _e('Select the PHP initialization file supported by your server', 'ninjafirewall') ?></th>
|
154 |
+
<td>
|
155 |
+
<p><label><input type="radio" id="ini-type-user" onClick="nfwjs_radio_ini(1)" name="ini_type" value="1"<?php checked( $ini_type, 1 ) ?>><code>.user.ini</code><?php echo $f1 ?></label></p>
|
156 |
+
<p><label><input type="radio" id="ini-type-php" onClick="nfwjs_radio_ini(2)" name="ini_type" value="2"<?php checked( $ini_type, 2 ) ?>><code>php.ini</code><?php echo $f2 ?></label></p>
|
157 |
+
</td>
|
158 |
+
</tr>
|
159 |
+
</table>
|
160 |
+
</div>
|
161 |
+
|
162 |
+
<br />
|
163 |
+
|
164 |
+
<div class="font-15px" id="diy-div"<?php echo $diy_div_style ?>>
|
165 |
+
<p><label><input onClick="nfwjs_diy_chg(this.value)" id="diynfw" type="radio" name="diy-choice" value="nfw" checked /> <?php _e('Let NinjaFirewall make the necessary changes (recommended).', 'ninjafirewall') ?></label></p>
|
166 |
+
<p><label><input onClick="nfwjs_diy_chg(this.value)" type="radio" name="diy-choice" value="usr" /> <?php _e('I want to make the changes myself.', 'ninjafirewall') ?></label></p>
|
167 |
+
<div id="lmd-msg" style="background:#f1f1f1;border-left:4px solid #fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 0 15px;padding:1px 12px;border-left-color:orange;">
|
168 |
+
<p><?php _e('Ensure that you have FTP access to your website so that, if there were a problem during the installation of the firewall, you could easily undo the changes.', 'ninjafirewall') ?></p>
|
169 |
+
</div>
|
170 |
+
<div id="diy-msg" style="display:none;background:#f1f1f1;border-left:4px solid #fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 0 15px;padding:1px 12px;border-left-color:orange;">
|
171 |
+
<p><?php _e('Please make the changes below, then click on the "Finish" button.', 'ninjafirewall') ?></p>
|
172 |
+
</div>
|
173 |
+
</div>
|
174 |
+
<?php
|
175 |
+
require_once __DIR__ .'/install.php';
|
176 |
+
nfw_get_constants();
|
177 |
+
|
178 |
+
$file_missing = __('The %s file must be created, and the following lines of code added to it:', 'ninjafirewall');
|
179 |
+
$file_exist = __('The following lines of code must be added to your existing %s file:', 'ninjafirewall');
|
180 |
+
?>
|
181 |
+
|
182 |
+
<div id="nfwaf-step2"<?php echo $div_nfwaf_step2 ?>>
|
183 |
+
|
184 |
+
<table class="form-table">
|
185 |
+
<tr id="tr-ini-userini"<?php echo $tr_ini_userini ?>>
|
186 |
+
<td>
|
187 |
+
<?php
|
188 |
+
if ( file_exists( ABSPATH .'.user.ini' ) ) {
|
189 |
+
$text = sprintf( $file_exist, '<code>'. htmlspecialchars( ABSPATH ) .'<b>.user.ini</b>' .'</code>');
|
190 |
+
} else {
|
191 |
+
$text = sprintf( $file_missing, '<code>'. htmlspecialchars( ABSPATH ) .'<b>.user.ini</b>' .'</code>');
|
192 |
+
}
|
193 |
+
echo $text;
|
194 |
+
?>
|
195 |
+
<textarea name="txtlog" class="small-text code" rows="4" style="width:100%;color:green;font-size:13px" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" wrap="off"><?php echo NFW_PHPINI_BEGIN ."\n" . NFW_PHPINI_DATA ."\n". NFW_PHPINI_END ."\n"; ?></textarea>
|
196 |
+
</td>
|
197 |
+
</tr>
|
198 |
+
<tr id="tr-ini-phpini"<?php echo $tr_ini_phpini ?>>
|
199 |
+
<td>
|
200 |
+
<?php
|
201 |
+
if ( file_exists( ABSPATH .'php.ini' ) ) {
|
202 |
+
$text = sprintf( $file_exist, '<code>'. htmlspecialchars( ABSPATH ) .'<b>php.ini</b>' .'</code>');
|
203 |
+
} else {
|
204 |
+
$text = sprintf( $file_missing, '<code>'. htmlspecialchars( ABSPATH ) .'<b>php.ini</b>' .'</code>');
|
205 |
+
}
|
206 |
+
echo $text;
|
207 |
+
?>
|
208 |
+
<textarea name="txtlog" class="small-text code" rows="4" style="width:100%;color:green;font-size:13px" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" wrap="off"><?php echo NFW_PHPINI_BEGIN ."\n" . NFW_PHPINI_DATA ."\n". NFW_PHPINI_END ."\n"; ?></textarea>
|
209 |
+
</td>
|
210 |
+
</tr>
|
211 |
+
|
212 |
+
|
213 |
+
<?php
|
214 |
+
if ( file_exists( ABSPATH .'.htaccess' ) ) {
|
215 |
+
$text = sprintf( $file_exist, '<code>'. htmlspecialchars( ABSPATH ) .'<b>.htaccess</b>' .'</code>');
|
216 |
+
} else {
|
217 |
+
$text = sprintf( $file_missing, '<code>'. htmlspecialchars( ABSPATH ) .'<b>.htaccess</b>' .'</code>');
|
218 |
+
}
|
219 |
+
?>
|
220 |
+
<tr id="tr-htaccess-modphp"<?php echo $tr_htaccess_modphp ?>>
|
221 |
+
<td>
|
222 |
+
<?php
|
223 |
+
echo $text;
|
224 |
+
?>
|
225 |
+
<textarea name="txtlog" class="small-text code" rows="6" style="width:100%;color:green;font-size:13px" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" wrap="off"><?php echo NFW_HTACCESS_BEGIN ."\n" . NFW_HTACCESS_DATA ."\n". NFW_HTACCESS_END ."\n"; ?></textarea>
|
226 |
+
</td>
|
227 |
+
</tr>
|
228 |
+
<tr id="tr-htaccess-litespeed"<?php echo $tr_htaccess_litespeed ?>>
|
229 |
+
<td>
|
230 |
+
<?php
|
231 |
+
echo $text;
|
232 |
+
?>
|
233 |
+
<textarea name="txtlog" class="small-text code" rows="4" style="width:100%;color:green;font-size:13px" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" wrap="off"><?php echo NFW_HTACCESS_BEGIN ."\n" . NFW_LITESPEED_DATA ."\n". NFW_HTACCESS_END ."\n"; ?></textarea>
|
234 |
+
</td>
|
235 |
+
</tr>
|
236 |
+
<tr id="tr-htaccess-openlitespeed"<?php echo $tr_htaccess_openlitespeed ?>>
|
237 |
+
<td>
|
238 |
+
<?php
|
239 |
+
_e('Log in to your Openlitespeed admin dashboard, click on "Virtual Host", select your domain, add the following instructions to the "php.ini Override" section in the "General" tab, and restart Openlitespeed:', 'ninjafirewall' );
|
240 |
+
?>
|
241 |
+
<textarea name="txtlog" class="small-text code" rows="4" style="width:100%;color:green;font-size:13px" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" wrap="off"><?php echo NFW_HTACCESS_BEGIN ."\n" . NFW_LITESPEED_DATA ."\n". NFW_HTACCESS_END ."\n"; ?></textarea>
|
242 |
+
<br />
|
243 |
+
<br />
|
244 |
+
<div style="background:#f1f1f1;border-left:4px solid #fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 0 15px;padding:1px 12px;border-left-color:orange;">
|
245 |
+
<br>
|
246 |
+
<?php _e('Important: if one day you wanted to uninstall NinjaFirewall, do not forget to remove these instructions from your Openlitespeed admin dashboard <strong>before</strong> uninstalling NinjaFirewall because this installer could not do it for you.', 'ninjafirewall') ?>
|
247 |
+
<br>
|
248 |
+
</div>
|
249 |
+
</td>
|
250 |
+
</tr>
|
251 |
+
<tr id="tr-htaccess-suphp"<?php echo $tr_htaccess_suphp ?>>
|
252 |
+
<td>
|
253 |
+
<?php
|
254 |
+
echo $text;
|
255 |
+
?>
|
256 |
+
<textarea name="txtlog" class="small-text code" rows="6" style="width:100%;color:green;font-size:13px" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" wrap="off"><?php echo NFW_HTACCESS_BEGIN ."\n" . NFW_SUPHP_DATA ."\n". NFW_HTACCESS_END ."\n"; ?></textarea>
|
257 |
+
</td>
|
258 |
+
</tr>
|
259 |
+
</table>
|
260 |
+
</div>
|
261 |
+
|
262 |
+
<br />
|
263 |
+
<div>
|
264 |
+
<input id="btn-waf-next" type="button" class="button-primary" name="step" value="<?php _e('Finish', 'ninjafirewall') ?> »" onclick="nfwjs_fullwafsubmit()" />
|
265 |
+
<?php wp_nonce_field('events_save', 'nfwnonce', 0); ?>
|
266 |
+
</div>
|
267 |
+
<br />
|
268 |
+
<br />
|
269 |
+
</div>
|
270 |
+
|
271 |
+
<?php
|
272 |
+
}
|
273 |
+
|
274 |
+
// ---------------------------------------------------------------------
|
275 |
+
// EOF
|
lib/utils.php
CHANGED
@@ -19,6 +19,63 @@
|
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
21 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
// ---------------------------------------------------------------------
|
23 |
// Check for HTTPS. This function is also available in firewall.php
|
24 |
// and is used here only if the firewall is not loaded.
|
@@ -94,7 +151,8 @@ function nf_pre_http_request( $preempt, $r, $url ) {
|
|
94 |
// NFW_DISABLE_SWC can be defined in wp-config.php (undocumented):
|
95 |
if (! defined('NFW_DISABLE_SWC') && isset( $_SESSION ) ) {
|
96 |
if ( function_exists( 'get_site_url' ) ) {
|
97 |
-
$
|
|
|
98 |
if ( strpos( $url, $s_url ) === 0 ) {
|
99 |
@session_write_close();
|
100 |
}
|
@@ -439,7 +497,7 @@ function nfw_select_ip() {
|
|
439 |
|
440 |
// ---------------------------------------------------------------------
|
441 |
|
442 |
-
function nfw_admin_notice(){
|
443 |
|
444 |
if (nf_not_allowed( 0, __LINE__ ) ) { return; }
|
445 |
|
@@ -778,7 +836,7 @@ function nf_check_dbdata() {
|
|
778 |
$message = __('NinjaFirewall has detected that one or more administrator accounts were modified in the database:', 'ninjafirewall') . "\n\n";
|
779 |
// Even if this is a multisite install, we display
|
780 |
// the requested blog, not the main site:
|
781 |
-
$message .=__('Blog:', '
|
782 |
$message.= __('Date:', 'ninjafirewall') .' '. date_i18n('F j, Y @ H:i:s') . ' (UTC '. date('O') . ")\n\n";
|
783 |
$message.= sprintf(__('Total administrators : %s', 'ninjafirewall'), count($adm_users) ) . "\n\n";
|
784 |
foreach( $adm_users as $adm ) {
|
@@ -901,28 +959,33 @@ function nfwhook_user_meta( $id, $key, $value ) {
|
|
901 |
is_nfw_enabled();
|
902 |
}
|
903 |
// Note: "NFW_DISABLE_PRVESC2" is the only way to disable this feature.
|
904 |
-
if ( NF_DISABLED || defined('NFW_DISABLE_PRVESC2') ) {
|
|
|
|
|
905 |
|
906 |
global $wpdb;
|
907 |
|
908 |
if ( is_array( $key ) ) {
|
909 |
$key = serialize( $key );
|
910 |
}
|
911 |
-
|
912 |
-
if ( strpos( $key, "{$wpdb->base_prefix}capabilities") !== FALSE
|
913 |
if ( is_array( $value ) ) {
|
914 |
$value = serialize( $value );
|
915 |
}
|
916 |
-
if ( strpos( $value, 's:13:"administrator"' ) === FALSE ) { return; }
|
917 |
-
$subject = __('Blocked privilege escalation attempt', 'ninjafirewall');
|
918 |
|
919 |
-
|
920 |
-
|
921 |
-
|
922 |
-
|
923 |
-
|
|
|
924 |
}
|
925 |
|
|
|
|
|
|
|
|
|
926 |
$nfw_options = nfw_get_option( 'nfw_options' );
|
927 |
|
928 |
// Alert the admin if needed:
|
@@ -936,10 +999,19 @@ function nfwhook_user_meta( $id, $key, $value ) {
|
|
936 |
$recipient = $nfw_options['alert_email'];
|
937 |
}
|
938 |
$subject = '[NinjaFirewall] ' . $subject;
|
939 |
-
|
940 |
-
|
|
|
941 |
$message.= __('Blog:', 'ninjafirewall') .' '. home_url('/') . "\n";
|
942 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
943 |
$message.= __('User IP:', 'ninjafirewall') .' '. NFW_REMOTE_ADDR . "\n";
|
944 |
$message.= 'SCRIPT_FILENAME: ' . $_SERVER['SCRIPT_FILENAME'] . "\n";
|
945 |
$message.= 'REQUEST_URI: ' . $_SERVER['REQUEST_URI'] . "\n";
|
@@ -983,13 +1055,15 @@ function nfwhook_user_meta( $id, $key, $value ) {
|
|
983 |
);
|
984 |
}
|
985 |
}
|
|
|
986 |
// --------------------------------------------------------------------- s1:h0
|
987 |
|
988 |
-
function nfw_login_form_hook() {
|
989 |
|
990 |
if (! empty( $_SESSION['nfw_bfd'] ) ) {
|
991 |
-
|
992 |
}
|
|
|
993 |
}
|
994 |
add_filter( 'login_message', 'nfw_login_form_hook');
|
995 |
|
@@ -1212,7 +1286,7 @@ function nf_monitor_options( $value, $option, $old_value ) {
|
|
1212 |
|
1213 |
function nfw_load_optmon() {
|
1214 |
|
1215 |
-
if (!
|
1216 |
add_filter( 'pre_update_option', 'nf_monitor_options', 10, 3 );
|
1217 |
}
|
1218 |
}
|
@@ -1326,5 +1400,55 @@ function nf_monitor_options_alert( $option, $value, $old_value = null, $type ) {
|
|
1326 |
|
1327 |
}
|
1328 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1329 |
// ---------------------------------------------------------------------
|
1330 |
// EOF
|
19 |
|
20 |
if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
21 |
|
22 |
+
// ---------------------------------------------------------------------
|
23 |
+
// Animated button/switch.
|
24 |
+
|
25 |
+
function nfw_toggle_switch( $type, $name, $text_on, $text_off, $size,
|
26 |
+
$value = 0, $disabled = false, $attr = false, $id = false, $align = false ) {
|
27 |
+
|
28 |
+
if ( $size == 'large' ) {
|
29 |
+
$size = 'style="width:150px;"';
|
30 |
+
|
31 |
+
} elseif ( $size == 'small' ) {
|
32 |
+
$size = 'style="width:80px"';
|
33 |
+
|
34 |
+
} else {
|
35 |
+
$size = 'style="width:'. (int) $size .'px"';
|
36 |
+
}
|
37 |
+
|
38 |
+
if ( $type == 'danger' ) {
|
39 |
+
$type = 'tgl-danger';
|
40 |
+
} elseif ( $type == 'warning' ) {
|
41 |
+
$type = 'tgl-warning';
|
42 |
+
} elseif ( $type == 'green' ) {
|
43 |
+
$type = 'tgl-green';
|
44 |
+
} else {
|
45 |
+
$type = 'tgl-info';
|
46 |
+
}
|
47 |
+
|
48 |
+
$text_on = htmlspecialchars( $text_on );
|
49 |
+
$text_off = htmlspecialchars( $text_off );
|
50 |
+
|
51 |
+
if ( $id == false ) {
|
52 |
+
$id = uniqid();
|
53 |
+
}
|
54 |
+
|
55 |
+
if ( $disabled == false ) {
|
56 |
+
$disabled = '';
|
57 |
+
} else {
|
58 |
+
$disabled = ' disabled';
|
59 |
+
}
|
60 |
+
if ( $attr != false ) {
|
61 |
+
$attr = ' '. $attr;
|
62 |
+
}
|
63 |
+
|
64 |
+
if ( $align == false ) {
|
65 |
+
$align = '';
|
66 |
+
} elseif ( $align == 'left' ) {
|
67 |
+
$align = ' alignleft';
|
68 |
+
} else {
|
69 |
+
$align = ' alignright';
|
70 |
+
}
|
71 |
+
?>
|
72 |
+
<div class="tg-list-item<?php echo $align ?>">
|
73 |
+
<input class="tgl tgl-switch" name="<?php echo $name ?>"<?php checked( $value, 1 ) ?> id="<?php echo $id ?>" type="checkbox"<?php echo $disabled; ?><?php echo $attr ?> />
|
74 |
+
<label class="tgl-btn <?php echo $type ?>" data-tg-on="<?php echo $text_on ?>" data-tg-off="<?php echo $text_off ?>" for="<?php echo $id ?>" <?php echo $size ?>></label>
|
75 |
+
</div>
|
76 |
+
<?php
|
77 |
+
}
|
78 |
+
|
79 |
// ---------------------------------------------------------------------
|
80 |
// Check for HTTPS. This function is also available in firewall.php
|
81 |
// and is used here only if the firewall is not loaded.
|
151 |
// NFW_DISABLE_SWC can be defined in wp-config.php (undocumented):
|
152 |
if (! defined('NFW_DISABLE_SWC') && isset( $_SESSION ) ) {
|
153 |
if ( function_exists( 'get_site_url' ) ) {
|
154 |
+
$parse = parse_url( get_site_url() );
|
155 |
+
$s_url = @$parse['scheme'] . "://{$parse['host']}";
|
156 |
if ( strpos( $url, $s_url ) === 0 ) {
|
157 |
@session_write_close();
|
158 |
}
|
497 |
|
498 |
// ---------------------------------------------------------------------
|
499 |
|
500 |
+
function nfw_admin_notice() {
|
501 |
|
502 |
if (nf_not_allowed( 0, __LINE__ ) ) { return; }
|
503 |
|
836 |
$message = __('NinjaFirewall has detected that one or more administrator accounts were modified in the database:', 'ninjafirewall') . "\n\n";
|
837 |
// Even if this is a multisite install, we display
|
838 |
// the requested blog, not the main site:
|
839 |
+
$message .=__('Blog:', 'ninjafirewall') .' '. home_url('/') . "\n";
|
840 |
$message.= __('Date:', 'ninjafirewall') .' '. date_i18n('F j, Y @ H:i:s') . ' (UTC '. date('O') . ")\n\n";
|
841 |
$message.= sprintf(__('Total administrators : %s', 'ninjafirewall'), count($adm_users) ) . "\n\n";
|
842 |
foreach( $adm_users as $adm ) {
|
959 |
is_nfw_enabled();
|
960 |
}
|
961 |
// Note: "NFW_DISABLE_PRVESC2" is the only way to disable this feature.
|
962 |
+
if ( current_user_can('edit_users') || NF_DISABLED || defined('NFW_DISABLE_PRVESC2') ) {
|
963 |
+
return;
|
964 |
+
}
|
965 |
|
966 |
global $wpdb;
|
967 |
|
968 |
if ( is_array( $key ) ) {
|
969 |
$key = serialize( $key );
|
970 |
}
|
971 |
+
|
972 |
+
if ( strpos( $key, "{$wpdb->base_prefix}capabilities") !== FALSE ) {
|
973 |
if ( is_array( $value ) ) {
|
974 |
$value = serialize( $value );
|
975 |
}
|
|
|
|
|
976 |
|
977 |
+
if ( strpos( $value, 's:6:"editor"' ) === FALSE &&
|
978 |
+
strpos( $value, 's:13:"administrator"' ) === FALSE &&
|
979 |
+
strpos( $value, 's:12:"shop_manager"' ) === FALSE &&
|
980 |
+
strpos( $value, 's:13:"bbp_keymaster"' ) === FALSE ) {
|
981 |
+
|
982 |
+
return;
|
983 |
}
|
984 |
|
985 |
+
if ( strlen( $value ) > 200 ) { $value = mb_substr( $value, 0, 200, 'utf-8' ) . '...'; }
|
986 |
+
$subject = __('Blocked privilege escalation attempt', 'ninjafirewall');
|
987 |
+
nfw_log2( 'WordPress: ' . $subject, "$key: $value", 3, 0);
|
988 |
+
|
989 |
$nfw_options = nfw_get_option( 'nfw_options' );
|
990 |
|
991 |
// Alert the admin if needed:
|
999 |
$recipient = $nfw_options['alert_email'];
|
1000 |
}
|
1001 |
$subject = '[NinjaFirewall] ' . $subject;
|
1002 |
+
|
1003 |
+
$message = __('NinjaFirewall has blocked an attempt to modify a user capability by someone who does not have administrative privileges:', 'ninjafirewall') . "\n\n";
|
1004 |
+
|
1005 |
$message.= __('Blog:', 'ninjafirewall') .' '. home_url('/') . "\n";
|
1006 |
+
|
1007 |
+
// Show current blog, not main site (multisite):
|
1008 |
+
$user_info = get_userdata( $id );
|
1009 |
+
if (! empty( $user_info->user_login ) ) {
|
1010 |
+
$message.= __('Username:', 'ninjafirewall') .' '. "{$user_info->user_login}, ID: $id\n";
|
1011 |
+
}
|
1012 |
+
$message.= "meta_key: $key\n";
|
1013 |
+
$message.= "meta_value: $value\n\n";
|
1014 |
+
|
1015 |
$message.= __('User IP:', 'ninjafirewall') .' '. NFW_REMOTE_ADDR . "\n";
|
1016 |
$message.= 'SCRIPT_FILENAME: ' . $_SERVER['SCRIPT_FILENAME'] . "\n";
|
1017 |
$message.= 'REQUEST_URI: ' . $_SERVER['REQUEST_URI'] . "\n";
|
1055 |
);
|
1056 |
}
|
1057 |
}
|
1058 |
+
|
1059 |
// --------------------------------------------------------------------- s1:h0
|
1060 |
|
1061 |
+
function nfw_login_form_hook( $message ) {
|
1062 |
|
1063 |
if (! empty( $_SESSION['nfw_bfd'] ) ) {
|
1064 |
+
return '<p class="message" id="nfw_login_msg">'. __('NinjaFirewall brute-force protection is enabled and you are temporarily whitelisted.', 'ninjafirewall' ) . '</p><br />';
|
1065 |
}
|
1066 |
+
return $message;
|
1067 |
}
|
1068 |
add_filter( 'login_message', 'nfw_login_form_hook');
|
1069 |
|
1286 |
|
1287 |
function nfw_load_optmon() {
|
1288 |
|
1289 |
+
if (! nfw_is_whitelisted() && ! current_user_can('manage_options') ) {
|
1290 |
add_filter( 'pre_update_option', 'nf_monitor_options', 10, 3 );
|
1291 |
}
|
1292 |
}
|
1400 |
|
1401 |
}
|
1402 |
|
1403 |
+
// ---------------------------------------------------------------------
|
1404 |
+
// Activate WPWAF mode.
|
1405 |
+
|
1406 |
+
function nfw_enable_wpwaf() {
|
1407 |
+
|
1408 |
+
if ( file_exists( WPMU_PLUGIN_DIR .'/0-ninjafirewall.php' ) ) {
|
1409 |
+
// Quick files comparison. We used md5 as we're only looking for changes,
|
1410 |
+
// i.e., if there was an update.
|
1411 |
+
if ( md5_file( WPMU_PLUGIN_DIR .'/0-ninjafirewall.php' ) === md5_file( __DIR__ .'/ninjafirewall.php' ) ) {
|
1412 |
+
return;
|
1413 |
+
}
|
1414 |
+
}
|
1415 |
+
|
1416 |
+
if (! is_dir( WPMU_PLUGIN_DIR ) ) {
|
1417 |
+
if (! mkdir( WPMU_PLUGIN_DIR, 0755, true ) ) {
|
1418 |
+
return sprintf(
|
1419 |
+
__('Error, cannot create the %s folder.', 'ninjafirewall') .' '. __('Check your server permissions and try again.', 'ninjafirewall'),
|
1420 |
+
htmlspecialchars( WPMU_PLUGIN_DIR )
|
1421 |
+
);
|
1422 |
+
}
|
1423 |
+
}
|
1424 |
+
|
1425 |
+
if (! is_writable( WPMU_PLUGIN_DIR ) ) {
|
1426 |
+
return sprintf(
|
1427 |
+
__('Error, the %s folder is not writable.', 'ninjafirewall') .' '. __('Check your server permissions and try again.', 'ninjafirewall'),
|
1428 |
+
htmlspecialchars( WPMU_PLUGIN_DIR )
|
1429 |
+
);
|
1430 |
+
}
|
1431 |
+
|
1432 |
+
@copy( __DIR__ .'/ninjafirewall.php', WPMU_PLUGIN_DIR .'/0-ninjafirewall.php' );
|
1433 |
+
if (! file_exists( WPMU_PLUGIN_DIR .'/0-ninjafirewall.php' ) ) {
|
1434 |
+
return sprintf(
|
1435 |
+
__('Error, cannot write %s.', 'ninjafirewall') .' '. __('Check your server permissions and try again.', 'ninjafirewall'),
|
1436 |
+
htmlspecialchars( WPMU_PLUGIN_DIR .'/0-ninjafirewall.php' )
|
1437 |
+
);
|
1438 |
+
}
|
1439 |
+
|
1440 |
+
return;
|
1441 |
+
}
|
1442 |
+
|
1443 |
+
// ---------------------------------------------------------------------
|
1444 |
+
// Deactivate WPFAF mode.
|
1445 |
+
|
1446 |
+
function nfw_disable_wpwaf() {
|
1447 |
+
|
1448 |
+
if ( file_exists( WPMU_PLUGIN_DIR .'/0-ninjafirewall.php' ) ) {
|
1449 |
+
unlink( WPMU_PLUGIN_DIR .'/0-ninjafirewall.php' );
|
1450 |
+
}
|
1451 |
+
}
|
1452 |
+
|
1453 |
// ---------------------------------------------------------------------
|
1454 |
// EOF
|
lib/wpplus.php
CHANGED
@@ -23,131 +23,232 @@ if (! defined( 'NFW_ENGINE_VERSION' ) ) { die( 'Forbidden' ); }
|
|
23 |
nf_not_allowed( 'block', __LINE__ );
|
24 |
|
25 |
?>
|
26 |
-
<div class="wrap">
|
27 |
-
|
28 |
-
<
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
137 |
|
138 |
-
</td>
|
139 |
-
</tr>
|
140 |
-
<tr>
|
141 |
-
<td> </td>
|
142 |
-
</tr>
|
143 |
-
<tr style="background-color:#F9F9F9;border: solid 1px #DFDFDF;">
|
144 |
-
<td style="text-align:center">
|
145 |
-
<h2><b><a href="https://nintechnet.com/"><?php _e('Learn more</a> about the <font color="#21759B">WP+</font> Edition unique features.', 'ninjafirewall') ?></b></h2>
|
146 |
-
<h2><b><a href="https://nintechnet.com/ninjafirewall/wp-edition/?comparison"><?php _e('Compare</a> the WP and <font color="#21759B">WP+</font> Editions.', 'ninjafirewall') ?></b></h2>
|
147 |
-
</td>
|
148 |
-
</tr>
|
149 |
-
</table>
|
150 |
</div>
|
|
|
151 |
<?php
|
152 |
-
|
153 |
// EOF
|
23 |
nf_not_allowed( 'block', __LINE__ );
|
24 |
|
25 |
?>
|
26 |
+
<div class="wrap about-wrap full-width-layout">
|
27 |
+
|
28 |
+
<h1>
|
29 |
+
<?php _e('Need more security?', 'ninjafirewall') ?>
|
30 |
+
</h1>
|
31 |
+
|
32 |
+
<p class="about-text">
|
33 |
+
<?php
|
34 |
+
printf( __('Take the time to explore NinjaFirewall %s, a supercharged Edition of our Web Application Firewall. It adds many new exciting features and blazing fast performances to make it the fastest and most powerful security plugin for WordPress, no less!', 'ninjafirewall'), '<font color="#21759B">WP+</font> Edition' ) ?>
|
35 |
+
</p>
|
36 |
+
|
37 |
+
<div style="position:absolute;top:0;right:0;display:inline-block;">
|
38 |
+
<img src="<?php echo plugins_url() ?>/ninjafirewall/images/ninjafirewall_100.png" />
|
39 |
+
</div>
|
40 |
+
|
41 |
+
<hr />
|
42 |
+
|
43 |
+
<h1>
|
44 |
+
<?php _e('New Features', 'ninjafirewall') ?>
|
45 |
+
</h1>
|
46 |
+
|
47 |
+
<div class="feature-section is-wide has-2-columns">
|
48 |
+
<div class="column is-vertically-aligned-center">
|
49 |
+
<h3><?php _e('Access Control', 'ninjafirewall') ?></h3>
|
50 |
+
<p><?php _e('Access Control is a powerful set of directives that can be used to allow or restrict access to your blog, depending on the <strong>User Role</strong>, <strong>IP</strong>, <strong>Geolocation</strong>, <strong>Requested URL</strong>, <strong>User-agent</strong> visitors behavior (<strong>Rate Limiting</strong>) and <strong>User Input</strong>. Those directives will be processed before the Firewall Policies and NinjaFirewall\'s built-in security rules.', 'ninjafirewall') ?>
|
51 |
+
<p><?php _e('Its main configuration allows you to whitelist WordPress users depending on their roles, to select the source IP (useful if your site is using a CDN or behind a reverse-proxy/load balancer), and the HTTP methods all directives should apply to.', 'ninjafirewall') ?></p>
|
52 |
+
</div>
|
53 |
+
<div class="column">
|
54 |
+
<a href="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/access-control.png" class="thickbox"><img src="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/access-control.png" class="wpplus" title="<?php _e('Click to enlarge image.', 'ninjafirewall') ?>" /></a>
|
55 |
+
<p class="description aligncenter"><?php _e('Click to enlarge image.', 'ninjafirewall') ?></p>
|
56 |
+
</div>
|
57 |
+
</div>
|
58 |
+
|
59 |
+
<hr />
|
60 |
+
|
61 |
+
<div class="feature-section is-wide has-2-columns">
|
62 |
+
<div class="column">
|
63 |
+
<a href="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/access-control-geolocation.png" class="thickbox"><img src="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/access-control-geolocation.png" class="wpplus" title="<?php _e('Click to enlarge image.', 'ninjafirewall') ?>" /></a>
|
64 |
+
<p class="description aligncenter"><?php _e('Click to enlarge image.', 'ninjafirewall') ?></p>
|
65 |
+
</div>
|
66 |
+
<div class="column is-vertically-aligned-center">
|
67 |
+
<h3><?php _e('Geolocation Access Control', 'ninjafirewall') ?></h3>
|
68 |
+
<p><?php _e('Geolocation can be used to block visitors from specific countries. It can apply to the whole blog or only to specific folders or scripts (e.g., /wp-login.php, /xmlrpc.php etc). If you have a theme or a plugin that needs to know your visitors location, you can even ask NinjaFirewall to append the country code to the PHP headers.', 'ninjafirewall') ?></p>
|
69 |
+
</div>
|
70 |
+
|
71 |
+
</div>
|
72 |
+
|
73 |
+
<hr />
|
74 |
+
|
75 |
+
<div class="feature-section is-wide has-2-columns">
|
76 |
+
<div class="column is-vertically-aligned-center">
|
77 |
+
<h3><?php _e('IP Access Control', 'ninjafirewall') ?></h3>
|
78 |
+
<p><?php _e('The IP Access Control allows you to permanently allow or block an IP, a whole range of IP addresses <strong>and even AS numbers</strong> (Autonomous System number). IPv4 and IPv6 are fully supported by NinjaFirewall.', 'ninjafirewall') ?></p>
|
79 |
+
</div>
|
80 |
+
<div class="column">
|
81 |
+
<a href="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/access-control-ip.png" class="thickbox"><img src="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/access-control-ip.png" class="wpplus" title="<?php _e('Click to enlarge image.', 'ninjafirewall') ?>" /></a>
|
82 |
+
<p class="description aligncenter"><?php _e('Click to enlarge image.', 'ninjafirewall') ?></p>
|
83 |
+
</div>
|
84 |
+
</div>
|
85 |
+
|
86 |
+
<div class="feature-section is-wide has-2-columns">
|
87 |
+
<div class="column">
|
88 |
+
<p><?php _e('The IP Access Control can slow down aggressive bots, crawlers, web scrapers or even small HTTP attacks with its <strong>Rate-Limiting</strong> feature.', 'ninjafirewall') .' ' ?>
|
89 |
+
|
90 |
+
<?php _e('Because it can block attackers <strong>before WordPress and all its plugins are loaded</strong> and can handle a lot of HTTP requests per second, NinjaFirewall will save precious bandwidth and reduce your server load.', 'ninjafirewall') ?></p>
|
91 |
+
</div>
|
92 |
+
<div class="column is-vertically-aligned-center">
|
93 |
+
<a href="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/rate-limiting.png" class="thickbox"><img src="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/rate-limiting.png" class="wpplus" title="<?php _e('Click to enlarge image.', 'ninjafirewall') ?>" /></a>
|
94 |
+
<p class="description aligncenter"><?php _e('Click to enlarge image.', 'ninjafirewall') ?></p>
|
95 |
+
</div>
|
96 |
+
</div>
|
97 |
+
|
98 |
+
<hr />
|
99 |
+
|
100 |
+
<div class="feature-section is-wide has-2-columns">
|
101 |
+
<div class="column">
|
102 |
+
<a href="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/access-control-url.png" class="thickbox"><img src="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/access-control-url.png" class="wpplus" title="<?php _e('Click to enlarge image.', 'ninjafirewall') ?>" /></a>
|
103 |
+
<p class="description aligncenter"><?php _e('Click to enlarge image.', 'ninjafirewall') ?></p>
|
104 |
+
</div>
|
105 |
+
<div class="column is-vertically-aligned-center">
|
106 |
+
<h3><?php _e('URL Access Control', 'ninjafirewall') ?></h3>
|
107 |
+
<p><?php _e('URL Access Control lets you permanently allow/block any access to one or more PHP scripts based on their <code>SCRIPT_NAME</code>.', 'ninjafirewall') ?></p>
|
108 |
+
</div>
|
109 |
+
|
110 |
+
</div>
|
111 |
+
|
112 |
+
<hr />
|
113 |
+
|
114 |
+
<div class="feature-section is-wide has-2-columns">
|
115 |
+
<div class="column is-vertically-aligned-center">
|
116 |
+
<h3><?php _e('Bot Access Control', 'ninjafirewall') ?></h3>
|
117 |
+
<p><?php _e('Bot Access Control allows you block bots, scanners and various annoying crawlers.', 'ninjafirewall') ?></p>
|
118 |
+
</div>
|
119 |
+
<div class="column">
|
120 |
+
<a href="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/access-control-bot.png" class="thickbox"><img src="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/access-control-bot.png" class="wpplus" title="<?php _e('Click to enlarge image.', 'ninjafirewall') ?>" /></a>
|
121 |
+
<p class="description aligncenter"><?php _e('Click to enlarge image.', 'ninjafirewall') ?></p>
|
122 |
+
</div>
|
123 |
+
</div>
|
124 |
+
|
125 |
+
<hr />
|
126 |
+
|
127 |
+
<div class="feature-section is-wide has-2-columns">
|
128 |
+
<div class="column">
|
129 |
+
<a href="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/access-control-input.png" class="thickbox"><img src="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/access-control-input.png" class="wpplus" title="<?php _e('Click to enlarge image.', 'ninjafirewall') ?>" /></a>
|
130 |
+
<p class="description aligncenter"><?php _e('Click to enlarge image.', 'ninjafirewall') ?></p>
|
131 |
+
</div>
|
132 |
+
<div class="column is-vertically-aligned-center">
|
133 |
+
<h3><?php _e('User Input Access Control', 'ninjafirewall') ?></h3>
|
134 |
+
<p><?php _e('User Input Access Control allows you to to ignore or block some specific user input.', 'ninjafirewall') ?></p>
|
135 |
+
</div>
|
136 |
+
</div>
|
137 |
+
|
138 |
+
<hr />
|
139 |
+
|
140 |
+
<div class="feature-section is-wide has-2-columns">
|
141 |
+
<div class="column is-vertically-aligned-center">
|
142 |
+
<h3>Web Filter</h3>
|
143 |
+
<p><?php _e('The Web Filter can hook the response body, i.e., the output of the HTML page, and search it for some specific keywords. Such filter can be useful to identify errors, hacked content and data leakage issues in the response body sent to your visitors.', 'ninjafirewall') .' ' ?>
|
144 |
+
<?php _e('In the case of a positive detection, NinjaFirewall will not block the response body but will send you an alert by email. It can even attach the whole HTML source of the page for your review.', 'ninjafirewall') ?></p>
|
145 |
+
</div>
|
146 |
+
<div class="column">
|
147 |
+
<a href="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/web-filter.png" class="thickbox"><img src="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/web-filter.png" class="wpplus" title="<?php _e('Click to enlarge image.', 'ninjafirewall') ?>" /></a>
|
148 |
+
<p class="description aligncenter"><?php _e('Click to enlarge image.', 'ninjafirewall') ?></p>
|
149 |
+
</div>
|
150 |
+
</div>
|
151 |
+
|
152 |
+
<hr />
|
153 |
+
|
154 |
+
<div class="feature-section is-wide has-2-columns">
|
155 |
+
<div class="column is-vertically-aligned-center">
|
156 |
+
<a href="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/anti-spam.png" class="thickbox"><img src="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/anti-spam.png" class="wpplus" title="<?php _e('Click to enlarge image.', 'ninjafirewall') ?>" /></a>
|
157 |
+
<p class="description aligncenter"><?php _e('Click to enlarge image.', 'ninjafirewall') ?></p>
|
158 |
+
</div>
|
159 |
+
<div class="column">
|
160 |
+
<h3><?php _e('Antispam', 'ninjafirewall') ?></h3>
|
161 |
+
<p><?php _e('The Antispam can protect your blog comment and registration forms against spam. The protection is totally transparent to your visitors and does not require any interaction: no CAPTCHA, no math puzzles or trivia questions. Extremely easy to activate, but powerful enough to make spam bots life as miserable as possible.', 'ninjafirewall') ?></p>
|
162 |
+
<p class="description"><?php _e('NinjaFirewall antispam feature works only with WordPress built-in comment and registration forms.', 'ninjafirewall') ?></p>
|
163 |
+
</div>
|
164 |
+
</div>
|
165 |
+
|
166 |
+
<hr />
|
167 |
+
|
168 |
+
<div class="feature-section is-wide has-2-columns">
|
169 |
+
<div class="column is-vertically-aligned-center">
|
170 |
+
<h3><?php _e('Centralized Logging', 'ninjafirewall') ?></h3>
|
171 |
+
<p><?php printf( __('Centralized Logging lets you remotely access the firewall log of all your NinjaFirewall protected websites from one single installation, using the <a href="%s">Centralized Logging</a> feature. You do not need any longer to log in to individual servers to analyse your log data.', 'ninjafirewall'), 'https://blog.nintechnet.com/centralized-logging-with-ninjafirewall/') ?>
|
172 |
+
<br />
|
173 |
+
<?php _e('There is no limit to the number of websites you can connect to, and they can be running any edition of NinjaFirewall: WP, <font color="#21759B">WP+</font>, Pro or <font color="red">Pro+</font>.', 'ninjafirewall') ?>
|
174 |
+
</div>
|
175 |
+
<div class="column">
|
176 |
+
<a href="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/centralized-logging.png" class="thickbox"><img src="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/centralized-logging.png" class="wpplus" title="<?php _e('Click to enlarge image.', 'ninjafirewall') ?>" /></a>
|
177 |
+
<p class="description aligncenter"><?php _e('Click to enlarge image.', 'ninjafirewall') ?></p>
|
178 |
+
</div>
|
179 |
+
</div>
|
180 |
+
|
181 |
+
<hr />
|
182 |
+
|
183 |
+
<h1>
|
184 |
+
<?php _e('Improved features', 'ninjafirewall') ?>
|
185 |
+
</h1>
|
186 |
+
|
187 |
+
<div class="feature-section is-wide has-2-columns">
|
188 |
+
<div class="column">
|
189 |
+
<h3><?php _e('File uploads', 'ninjafirewall') ?></h3>
|
190 |
+
<p><?php _e('You can allow uploads while rejecting potentially dangerous files: scripts (PHP, CGI, Ruby, Python, bash/shell), C/C++ source code, binaries (MZ/PE/NE and ELF formats), system files (.htaccess, .htpasswd and PHP INI) and SVG files containing Javascript/XML events. You can easily limit the size of each uploaded file too, without having to modify your PHP configuration.', 'ninjafirewall') ?></p>
|
191 |
+
</div>
|
192 |
+
<div class="column is-vertically-aligned-center">
|
193 |
+
<a href="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/file-uploads.png" class="thickbox"><img src="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/file-uploads.png" class="wpplus" title="<?php _e('Click to enlarge image.', 'ninjafirewall') ?>" /></a>
|
194 |
+
<p class="description aligncenter"><?php _e('Click to enlarge image.', 'ninjafirewall') ?></p>
|
195 |
+
</div>
|
196 |
+
</div>
|
197 |
+
|
198 |
+
<hr />
|
199 |
+
|
200 |
+
<div class="feature-section is-wide has-2-columns">
|
201 |
+
<div class="column">
|
202 |
+
<a href="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/firewall-log.png" class="thickbox"><img src="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/firewall-log.png" class="wpplus" title="<?php _e('Click to enlarge image.', 'ninjafirewall') ?>" /></a>
|
203 |
+
<p class="description aligncenter"><?php _e('Click to enlarge image.', 'ninjafirewall') ?></p>
|
204 |
+
</div>
|
205 |
+
<div class="column is-vertically-aligned-center">
|
206 |
+
<h3><?php _e('Firewall Log', 'ninjafirewall') ?></h3>
|
207 |
+
<p>
|
208 |
+
<?php _e('The log menu has been revamped too. You can disable the firewall log, delete the current one, enable its rotation based on the size of the file and, if any, view each rotated log separately. Quick filtering options are easily accessible from checkboxes and the log can be exported as a TSV (tab-separated values) text file. You can also easily add any IP to your Access Control whitelist or blacklist.', 'ninjafirewall') ?><br />
|
209 |
+
<?php _e('It is also possible to redirect all incidents and events to the Syslog server:', 'ninjafirewall') ?> <a href="https://blog.nintechnet.com/syslog-logging-with-ninjafirewall/">Syslog logging with NinjaFirewall</a>.</p>
|
210 |
+
</div>
|
211 |
+
</div>
|
212 |
+
|
213 |
+
<hr />
|
214 |
+
|
215 |
+
<div class="feature-section is-wide has-2-columns">
|
216 |
+
<div class="column is-vertically-aligned-center">
|
217 |
+
<h3><?php _e('Rules Update', 'ninjafirewall') ?></h3>
|
218 |
+
<p>
|
219 |
+
<?php _e('You can check for security rules updates <b>as often as every 15 minutes</b>, versus one hour for the free WP Edition. Don\'t leave your blog at risk!', 'ninjafirewall') ?></p>
|
220 |
+
</div>
|
221 |
+
<div class="column">
|
222 |
+
<a href="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/rules-update.png" class="thickbox"><img src="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/rules-update.png" class="wpplus" title="<?php _e('Click to enlarge image.', 'ninjafirewall') ?>" /></a>
|
223 |
+
<p class="description aligncenter"><?php _e('Click to enlarge image.', 'ninjafirewall') ?></p>
|
224 |
+
</div>
|
225 |
+
</div>
|
226 |
+
|
227 |
+
<hr />
|
228 |
+
|
229 |
+
<div class="feature-section is-wide has-2-columns">
|
230 |
+
<div class="column is-vertically-aligned-center">
|
231 |
+
<a href="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/shared-memory.png" class="thickbox"><img src="<?php echo plugins_url() ?>/ninjafirewall/images/screenshots/shared-memory.png" class="wpplus" title="<?php _e('Click to enlarge image.', 'ninjafirewall') ?>" /></a>
|
232 |
+
<p class="description aligncenter"><?php _e('Click to enlarge image.', 'ninjafirewall') ?></p>
|
233 |
+
<p class="description"><?php _e('This feature requires that PHP was compiled with the <code>--enable-shmop</code> parameter and that NinjaFirewall is running in "Full WAF" mode.', 'ninjafirewall') ?></p>
|
234 |
+
</div>
|
235 |
+
<div class="column">
|
236 |
+
<h3><?php _e('Shared Memory use', 'ninjafirewall') ?></h3>
|
237 |
+
<p>
|
238 |
+
<?php printf( __('Although NinjaFirewall is already <a href="%s">much faster than other WordPress plugins</a>, the <b><font color="#21759B">WP+</font> Edition</b> brings its performance to a whole new level by using Unix shared memory in order to speed things up even more.', 'ninjafirewall'), 'https://blog.nintechnet.com/wordpress-brute-force-attack-detection-plugins-comparison-2015/') ?> <?php _e('This allows easier and faster inter-process communication between the firewall and the plugin part of NinjaFirewall and, because its data and configuration are stored in shared memory segments, the firewall does not need to connect to the database any longer.', 'ninjafirewall') ?> <?php _e('This dramatically increases the processing speed (there is nothing faster than RAM), prevents blocking I/O and MySQL slow queries. On a very busy server like a multi-site network, the firewall processing speed will increase from 25% to 30%. It can be enabled from the "Firewall Options" menu.', 'ninjafirewall') ?></p>
|
239 |
+
</div>
|
240 |
+
|
241 |
+
</div>
|
242 |
+
|
243 |
+
<hr />
|
244 |
+
|
245 |
+
<h3><b><a href="https://nintechnet.com/"><?php _e('Learn more</a> about the <font color="#21759B">WP+</font> Edition unique features.', 'ninjafirewall') ?></b></h3>
|
246 |
+
<h3><b><a href="https://nintechnet.com/ninjafirewall/wp-edition/?comparison"><?php _e('Compare</a> the WP and <font color="#21759B">WP+</font> Editions.', 'ninjafirewall') ?></b></h3>
|
247 |
+
|
248 |
+
<hr />
|
249 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
250 |
</div>
|
251 |
+
|
252 |
<?php
|
253 |
+
// ---------------------------------------------------------------------
|
254 |
// EOF
|
ninjafirewall.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: NinjaFirewall (WP Edition)
|
4 |
Plugin URI: https://nintechnet.com/
|
5 |
Description: A true Web Application Firewall to protect and secure WordPress.
|
6 |
-
Version:
|
7 |
Author: The Ninja Technologies Network
|
8 |
Author URI: https://nintechnet.com/
|
9 |
License: GPLv3 or later
|
@@ -19,7 +19,7 @@ Domain Path: /languages
|
|
19 |
| (c) NinTechNet - https://nintechnet.com/ |
|
20 |
+---------------------------------------------------------------------+
|
21 |
*/
|
22 |
-
define( 'NFW_ENGINE_VERSION', '
|
23 |
/*
|
24 |
+---------------------------------------------------------------------+
|
25 |
| This program is free software: you can redistribute it and/or |
|
@@ -79,6 +79,9 @@ $err_fw = array(
|
|
79 |
12 => __('Cannot retrieve user rules from database (#1)', 'ninjafirewall'),
|
80 |
13 => sprintf( __("The firewall cannot access its log and cache folders. If you changed the name of WordPress %s or %s folders, you must define NinjaFirewall's built-in %s constant (see %s for more info)", 'ninjafirewall'), '<code>/wp-content/</code>', '<code>/plugins/</code>', '<code>NFW_LOG_DIR</code>', "<a href='https://nintechnet.com/ninjafirewall/wp-edition/help/?htninja' target='_blank'>Path to NinjaFirewall's log and cache directory</a>"),
|
81 |
14 => __('The PHP msqli extension is missing or not loaded.', 'ninjafirewall'),
|
|
|
|
|
|
|
82 |
);
|
83 |
|
84 |
if (! defined('NFW_LOG_DIR') ) {
|
@@ -133,49 +136,65 @@ function nfw_activate() {
|
|
133 |
exit( __('NinjaFirewall is not compatible with Microsoft Windows.', 'ninjafirewall') );
|
134 |
}
|
135 |
|
136 |
-
if ( $nfw_options = nfw_get_option( 'nfw_options' ) ) {
|
137 |
-
|
138 |
-
|
|
|
|
|
|
|
|
|
|
|
139 |
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
|
|
|
|
|
|
|
|
152 |
}
|
153 |
-
if (
|
154 |
-
|
155 |
-
$schedtype = 'hourly';
|
156 |
-
} elseif ($nfw_options['sched_updates'] == 2) {
|
157 |
-
$schedtype = 'twicedaily';
|
158 |
-
} else {
|
159 |
-
$schedtype = 'daily';
|
160 |
-
}
|
161 |
-
if ( wp_next_scheduled('nfsecupdates') ) {
|
162 |
-
wp_clear_scheduled_hook('nfsecupdates');
|
163 |
-
}
|
164 |
-
wp_schedule_event( time() + 15, $schedtype, 'nfsecupdates');
|
165 |
}
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
|
|
|
|
|
|
|
|
172 |
}
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
|
|
|
|
|
|
|
|
178 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
179 |
}
|
180 |
}
|
181 |
|
@@ -190,6 +209,8 @@ function nfw_deactivate() {
|
|
190 |
$nfw_options = nfw_get_option( 'nfw_options' );
|
191 |
$nfw_options['enabled'] = 0;
|
192 |
|
|
|
|
|
193 |
if ( wp_next_scheduled('nfwgccron') ) {
|
194 |
wp_clear_scheduled_hook('nfwgccron');
|
195 |
}
|
@@ -212,6 +233,116 @@ function nfw_deactivate() {
|
|
212 |
|
213 |
register_deactivation_hook( __FILE__, 'nfw_deactivate' );
|
214 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
215 |
/* ------------------------------------------------------------------ */
|
216 |
|
217 |
function nfw_admin_init() {
|
@@ -226,12 +357,21 @@ function nfw_admin_init() {
|
|
226 |
// Post-update adjustment:
|
227 |
require plugin_dir_path(__FILE__) . 'lib/init_update.php';
|
228 |
|
|
|
|
|
|
|
|
|
|
|
|
|
229 |
// --------------------------------------------
|
230 |
// Anything below requires admin authentication
|
231 |
// --------------------------------------------
|
232 |
|
233 |
if ( nf_not_allowed(0, __LINE__) ) { return; }
|
234 |
|
|
|
|
|
|
|
235 |
// Export configuration:
|
236 |
if ( isset($_POST['nf_export']) ) {
|
237 |
if ( empty($_POST['nfwnonce']) || ! wp_verify_nonce($_POST['nfwnonce'], 'options_save') ) {
|
@@ -404,10 +544,124 @@ function nfw_logout_hook() {
|
|
404 |
if (isset( $_SESSION['nfw_livelog'] ) ) {
|
405 |
unset( $_SESSION['nfw_livelog'] );
|
406 |
}
|
|
|
|
|
|
|
407 |
}
|
408 |
|
409 |
add_action( 'wp_logout', 'nfw_logout_hook' );
|
410 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
411 |
/* ------------------------------------------------------------------ */
|
412 |
|
413 |
function is_nfw_enabled() {
|
@@ -453,19 +707,6 @@ function ninjafirewall_admin_menu() {
|
|
453 |
exit;
|
454 |
}
|
455 |
|
456 |
-
if (! defined('NF_DISABLED') ) {
|
457 |
-
is_nfw_enabled();
|
458 |
-
}
|
459 |
-
|
460 |
-
if (NF_DISABLED == 10) {
|
461 |
-
add_menu_page( 'NinjaFirewall', 'NinjaFirewall', 'manage_options',
|
462 |
-
'NinjaFirewall', 'nf_menu_install', plugins_url( '/images/nf_icon.png', __FILE__ )
|
463 |
-
);
|
464 |
-
add_submenu_page( 'NinjaFirewall', __('Installation', 'ninjafirewall'), __('Installation', 'ninjafirewall'), 'manage_options',
|
465 |
-
'NinjaFirewall', 'nf_menu_install' );
|
466 |
-
return;
|
467 |
-
}
|
468 |
-
|
469 |
add_menu_page( 'NinjaFirewall', 'NinjaFirewall', 'manage_options',
|
470 |
'NinjaFirewall', 'nf_sub_main', plugins_url( '/images/nf_icon.png', __FILE__ )
|
471 |
);
|
@@ -478,7 +719,9 @@ function ninjafirewall_admin_menu() {
|
|
478 |
'NinjaFirewall', 'nf_sub_main' );
|
479 |
add_action( 'load-' . $menu_hook, 'help_nfsubmain' );
|
480 |
|
|
|
481 |
$menu_hook = add_submenu_page( 'NinjaFirewall', __('NinjaFirewall: Statistics', 'ninjafirewall'), __('Statistics', 'ninjafirewall'), 'manage_options',
|
|
|
482 |
'nfsubstat', 'nf_sub_statistics' );
|
483 |
add_action( 'load-' . $menu_hook, 'help_nfsubstat' );
|
484 |
|
@@ -599,18 +842,9 @@ if ( is_multisite() ) {
|
|
599 |
|
600 |
/* ------------------------------------------------------------------ */
|
601 |
|
602 |
-
function nf_menu_install() {
|
603 |
-
|
604 |
-
nf_not_allowed( 'block', __LINE__ );
|
605 |
-
|
606 |
-
require_once plugin_dir_path(__FILE__) . 'install.php';
|
607 |
-
}
|
608 |
-
|
609 |
-
/* ------------------------------------------------------------------ */
|
610 |
-
|
611 |
function nf_sub_main() {
|
612 |
|
613 |
-
// Main menu (Overview)
|
614 |
require plugin_dir_path(__FILE__) . 'lib/overview.php';
|
615 |
|
616 |
}
|
@@ -635,7 +869,7 @@ function nf_sub_options() { // i18n
|
|
635 |
|
636 |
function nf_sub_policies() {
|
637 |
|
638 |
-
// Firewall Policies menu
|
639 |
require plugin_dir_path(__FILE__) . 'lib/firewall_policies.php';
|
640 |
|
641 |
}
|
@@ -653,7 +887,7 @@ function nf_sub_fileguard() {
|
|
653 |
|
654 |
function nf_sub_network() {
|
655 |
|
656 |
-
// Network menu (multi-site only)
|
657 |
require plugin_dir_path(__FILE__) . 'lib/network.php';
|
658 |
|
659 |
}
|
@@ -723,9 +957,9 @@ function nf_sub_loginprot() {
|
|
723 |
|
724 |
/* ------------------------------------------------------------------ */
|
725 |
|
726 |
-
function nfw_log2($loginfo, $logdata, $loglevel, $ruleid) {
|
727 |
|
728 |
-
// Write incident to the firewall log
|
729 |
require plugin_dir_path(__FILE__) . 'lib/nfw_log.php';
|
730 |
|
731 |
}
|
@@ -734,7 +968,7 @@ function nfw_log2($loginfo, $logdata, $loglevel, $ruleid) { // i18n
|
|
734 |
|
735 |
function nf_sub_editor() {
|
736 |
|
737 |
-
// Rules Editor menu
|
738 |
require plugin_dir_path(__FILE__) . 'lib/rules_editor.php';
|
739 |
|
740 |
}
|
@@ -825,9 +1059,9 @@ function nf_not_allowed($block, $line = 0) {
|
|
825 |
// (see NFW_ALLOWED_ADMIN at http://nin.link/nfwaa ):
|
826 |
if ( defined('NFW_ALLOWED_ADMIN') ) {
|
827 |
$current_user = wp_get_current_user();
|
828 |
-
$admins = explode(',', NFW_ALLOWED_ADMIN);
|
829 |
-
foreach ($admins as $admin) {
|
830 |
-
if ( trim($admin) == $current_user->user_login ) {
|
831 |
return false;
|
832 |
}
|
833 |
}
|
3 |
Plugin Name: NinjaFirewall (WP Edition)
|
4 |
Plugin URI: https://nintechnet.com/
|
5 |
Description: A true Web Application Firewall to protect and secure WordPress.
|
6 |
+
Version: 4.0
|
7 |
Author: The Ninja Technologies Network
|
8 |
Author URI: https://nintechnet.com/
|
9 |
License: GPLv3 or later
|
19 |
| (c) NinTechNet - https://nintechnet.com/ |
|
20 |
+---------------------------------------------------------------------+
|
21 |
*/
|
22 |
+
define( 'NFW_ENGINE_VERSION', '4.0' );
|
23 |
/*
|
24 |
+---------------------------------------------------------------------+
|
25 |
| This program is free software: you can redistribute it and/or |
|
79 |
12 => __('Cannot retrieve user rules from database (#1)', 'ninjafirewall'),
|
80 |
13 => sprintf( __("The firewall cannot access its log and cache folders. If you changed the name of WordPress %s or %s folders, you must define NinjaFirewall's built-in %s constant (see %s for more info)", 'ninjafirewall'), '<code>/wp-content/</code>', '<code>/plugins/</code>', '<code>NFW_LOG_DIR</code>', "<a href='https://nintechnet.com/ninjafirewall/wp-edition/help/?htninja' target='_blank'>Path to NinjaFirewall's log and cache directory</a>"),
|
81 |
14 => __('The PHP msqli extension is missing or not loaded.', 'ninjafirewall'),
|
82 |
+
15 => __('Cannot retrieve user options from database (#4)', 'ninjafirewall'),
|
83 |
+
16 => __('Cannot retrieve user rules from database (#4)', 'ninjafirewall'),
|
84 |
+
|
85 |
);
|
86 |
|
87 |
if (! defined('NFW_LOG_DIR') ) {
|
136 |
exit( __('NinjaFirewall is not compatible with Microsoft Windows.', 'ninjafirewall') );
|
137 |
}
|
138 |
|
139 |
+
if (! $nfw_options = nfw_get_option( 'nfw_options' ) ) {
|
140 |
+
// First time we're running: download the security rules
|
141 |
+
// and populate the options:
|
142 |
+
require_once __DIR__ .'/lib/install_default.php';
|
143 |
+
nfw_load_default_conf();
|
144 |
+
// Reload them
|
145 |
+
$nfw_options = nfw_get_option( 'nfw_options' );
|
146 |
+
}
|
147 |
|
148 |
+
$nfw_options['enabled'] = 1;
|
149 |
+
nfw_update_option( 'nfw_options', $nfw_options);
|
150 |
+
|
151 |
+
$res = nfw_enable_wpwaf();
|
152 |
+
if (! empty( $res ) ){
|
153 |
+
exit( $res );
|
154 |
+
}
|
155 |
+
|
156 |
+
// Re-enable scheduled scan, if needed
|
157 |
+
if (! empty($nfw_options['sched_scan']) ) {
|
158 |
+
if ($nfw_options['sched_scan'] == 1) {
|
159 |
+
$schedtype = 'hourly';
|
160 |
+
} elseif ($nfw_options['sched_scan'] == 2) {
|
161 |
+
$schedtype = 'twicedaily';
|
162 |
+
} else {
|
163 |
+
$schedtype = 'daily';
|
164 |
}
|
165 |
+
if ( wp_next_scheduled('nfscanevent') ) {
|
166 |
+
wp_clear_scheduled_hook('nfscanevent');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
167 |
}
|
168 |
+
wp_schedule_event( time() + 3600, $schedtype, 'nfscanevent');
|
169 |
+
}
|
170 |
+
// Re-enable auto updates, if needed
|
171 |
+
if (! empty($nfw_options['enable_updates']) ) {
|
172 |
+
if ($nfw_options['sched_updates'] == 1) {
|
173 |
+
$schedtype = 'hourly';
|
174 |
+
} elseif ($nfw_options['sched_updates'] == 2) {
|
175 |
+
$schedtype = 'twicedaily';
|
176 |
+
} else {
|
177 |
+
$schedtype = 'daily';
|
178 |
}
|
179 |
+
if ( wp_next_scheduled('nfsecupdates') ) {
|
180 |
+
wp_clear_scheduled_hook('nfsecupdates');
|
181 |
+
}
|
182 |
+
wp_schedule_event( time() + 15, $schedtype, 'nfsecupdates');
|
183 |
+
}
|
184 |
+
// Re-enable daily report, if needed
|
185 |
+
if (! empty($nfw_options['a_52']) ) {
|
186 |
+
if ( wp_next_scheduled('nfdailyreport') ) {
|
187 |
+
wp_clear_scheduled_hook('nfdailyreport');
|
188 |
}
|
189 |
+
nfw_get_blogtimezone();
|
190 |
+
wp_schedule_event( strtotime( date('Y-m-d 00:00:05', strtotime("+1 day")) ), 'daily', 'nfdailyreport');
|
191 |
+
}
|
192 |
+
// Re-enable the garbage collector:
|
193 |
+
wp_schedule_event( time() + 1800, 'hourly', 'nfwgccron' );
|
194 |
+
|
195 |
+
// Re-enable brute-force protection
|
196 |
+
if ( file_exists( NFW_LOG_DIR . '/nfwlog/cache/bf_conf_off.php' ) ) {
|
197 |
+
rename(NFW_LOG_DIR . '/nfwlog/cache/bf_conf_off.php', NFW_LOG_DIR . '/nfwlog/cache/bf_conf.php');
|
198 |
}
|
199 |
}
|
200 |
|
209 |
$nfw_options = nfw_get_option( 'nfw_options' );
|
210 |
$nfw_options['enabled'] = 0;
|
211 |
|
212 |
+
nfw_disable_wpwaf();
|
213 |
+
|
214 |
if ( wp_next_scheduled('nfwgccron') ) {
|
215 |
wp_clear_scheduled_hook('nfwgccron');
|
216 |
}
|
233 |
|
234 |
register_deactivation_hook( __FILE__, 'nfw_deactivate' );
|
235 |
|
236 |
+
/* ------------------------------------------------------------------ */
|
237 |
+
// Load script/style files
|
238 |
+
|
239 |
+
function nfw_load_ext( $hook ) {
|
240 |
+
|
241 |
+
// Load the external JS script and CSS:
|
242 |
+
// -Single site: to the admin only.
|
243 |
+
// -Multi-site: to the superadmin and from the main network admin screen only.
|
244 |
+
// -All: only if this is a NinjaFirewall menu page
|
245 |
+
if (! current_user_can('activate_plugins') || ! is_main_site() ) { return; }
|
246 |
+
if ( stripos( $hook, 'ninjafirewall' ) === false ) { return; }
|
247 |
+
|
248 |
+
if ( strpos ( $hook, 'nfsubwplus' ) !== false ) {
|
249 |
+
// Load thickbox JS and CSS (WP only)
|
250 |
+
$extra_js = array( 'jquery', 'thickbox' );
|
251 |
+
$extra_css = array( 'thickbox' );
|
252 |
+
} else {
|
253 |
+
$extra_js = array( 'jquery' );
|
254 |
+
$extra_css = null;
|
255 |
+
}
|
256 |
+
|
257 |
+
wp_enqueue_script(
|
258 |
+
'nfw_javascript',
|
259 |
+
plugin_dir_url( __FILE__ ) . 'static/ninjafirewall.js',
|
260 |
+
$extra_js,
|
261 |
+
NFW_ENGINE_VERSION
|
262 |
+
);
|
263 |
+
|
264 |
+
// Load Chart.js if we are viewing the statistics page:
|
265 |
+
if ( strpos( $hook, 'nfsubstat' ) !== false ) {
|
266 |
+
wp_enqueue_script(
|
267 |
+
'nfw_charts',
|
268 |
+
plugin_dir_url( __FILE__ ) . 'static/chart.min.js',
|
269 |
+
array( 'jquery' ),
|
270 |
+
NFW_ENGINE_VERSION,
|
271 |
+
false
|
272 |
+
);
|
273 |
+
}
|
274 |
+
|
275 |
+
wp_enqueue_style(
|
276 |
+
'nfw_style',
|
277 |
+
plugin_dir_url( __FILE__ ) .'static/ninjafirewall.css',
|
278 |
+
$extra_css,
|
279 |
+
NFW_ENGINE_VERSION,
|
280 |
+
false
|
281 |
+
);
|
282 |
+
|
283 |
+
// Javascript i18n:
|
284 |
+
$nfw_js_array = array(
|
285 |
+
|
286 |
+
// Generic
|
287 |
+
'restore_default' =>
|
288 |
+
esc_js( __('All fields will be restored to their default values and any changes you made will be lost. Continue?', 'ninjafirewall') ),
|
289 |
+
|
290 |
+
// Full WAF/WordPress WAF
|
291 |
+
'missing_nonce' =>
|
292 |
+
esc_js( __('Missing security nonce, try to reload the page.', 'ninjafirewall') ),
|
293 |
+
'missing_httpserver' =>
|
294 |
+
esc_js( __('Please select the HTTP server in the list.', 'ninjafirewall') ),
|
295 |
+
|
296 |
+
// Firewall Options
|
297 |
+
'restore_warning' =>
|
298 |
+
esc_js( __('This action will restore the selected configuration file and will override all your current firewall options, policies and rules. Continue?', 'ninjafirewall') ),
|
299 |
+
|
300 |
+
// Firewall Policies
|
301 |
+
'warn_sanitise' =>
|
302 |
+
esc_js( __('Any character that is not a letter [a-zA-Z], a digit [0-9], a dot [.], a hyphen [-] or an underscore [_] will be removed from the filename and replaced with the substitution character. Continue?', 'ninjafirewall') ),
|
303 |
+
'ssl_warning' =>
|
304 |
+
esc_js( __('Ensure that you can access your admin console over HTTPS before enabling this option, otherwise you will lock yourself out of your site. Continue?', 'ninjafirewall') ),
|
305 |
+
|
306 |
+
// File Check
|
307 |
+
'del_snapshot' =>
|
308 |
+
esc_js( __('Delete the current snapshot ?', 'ninjafirewall') ),
|
309 |
+
|
310 |
+
// Login Protection
|
311 |
+
'invalid_char' =>
|
312 |
+
esc_js( __('Invalid character.', 'ninjafirewall') ),
|
313 |
+
'no_admin' =>
|
314 |
+
esc_js( __('"admin" is not acceptable, please choose another user name.', 'ninjafirewall') ),
|
315 |
+
'max_char' =>
|
316 |
+
esc_js( __('Please enter max 1024 character only.', 'ninjafirewall') ),
|
317 |
+
'select_when' =>
|
318 |
+
esc_js( __('Select when to enable the login protection.', 'ninjafirewall') ),
|
319 |
+
'missing_auth' =>
|
320 |
+
esc_js( __('Enter a name and a password for the HTTP authentication.', 'ninjafirewall') ),
|
321 |
+
|
322 |
+
// Firewall Log
|
323 |
+
'invalid_key' =>
|
324 |
+
esc_js( __('Your public key is not valid.', 'ninjafirewall') ),
|
325 |
+
|
326 |
+
// Live Log
|
327 |
+
'no_traffic' =>
|
328 |
+
esc_js( __('No traffic yet, please wait', 'ninjafirewall') ),
|
329 |
+
'seconds' =>
|
330 |
+
' ' . esc_js( __('seconds...', 'ninjafirewall') ),
|
331 |
+
'err_unexpected' =>
|
332 |
+
esc_js( __('Error: Live Log did not receive the expected response from your server:', 'ninjafirewall') ),
|
333 |
+
'error_404' =>
|
334 |
+
esc_js( __('Error: URL does not seem to exist (404 Not Found):', 'ninjafirewall') ),
|
335 |
+
'log_not_found' =>
|
336 |
+
esc_js( __('Error: Cannot find your log file. Try to reload this page.', 'ninjafirewall') ),
|
337 |
+
'http_error' =>
|
338 |
+
esc_js( __('Error: The HTTP server returned the following error code:', 'ninjafirewall') ),
|
339 |
+
);
|
340 |
+
|
341 |
+
wp_localize_script( 'nfw_javascript', 'nfwi18n', $nfw_js_array );
|
342 |
+
}
|
343 |
+
|
344 |
+
add_action( 'admin_enqueue_scripts', 'nfw_load_ext' );
|
345 |
+
|
346 |
/* ------------------------------------------------------------------ */
|
347 |
|
348 |
function nfw_admin_init() {
|
357 |
// Post-update adjustment:
|
358 |
require plugin_dir_path(__FILE__) . 'lib/init_update.php';
|
359 |
|
360 |
+
if ( current_user_can( 'edit_pages' ) ) {
|
361 |
+
$_SESSION['nfw_user_can'] = 'edit_pages';
|
362 |
+
} elseif ( current_user_can( 'edit_posts' ) ) {
|
363 |
+
$_SESSION['nfw_user_can'] = 'edit_posts';
|
364 |
+
}
|
365 |
+
|
366 |
// --------------------------------------------
|
367 |
// Anything below requires admin authentication
|
368 |
// --------------------------------------------
|
369 |
|
370 |
if ( nf_not_allowed(0, __LINE__) ) { return; }
|
371 |
|
372 |
+
// Update fallback loader if needed
|
373 |
+
nfw_enable_wpwaf();
|
374 |
+
|
375 |
// Export configuration:
|
376 |
if ( isset($_POST['nf_export']) ) {
|
377 |
if ( empty($_POST['nfwnonce']) || ! wp_verify_nonce($_POST['nfwnonce'], 'options_save') ) {
|
544 |
if (isset( $_SESSION['nfw_livelog'] ) ) {
|
545 |
unset( $_SESSION['nfw_livelog'] );
|
546 |
}
|
547 |
+
if (isset( $_SESSION['nfw_user_can'] ) ) {
|
548 |
+
unset( $_SESSION['nfw_user_can'] );
|
549 |
+
}
|
550 |
}
|
551 |
|
552 |
add_action( 'wp_logout', 'nfw_logout_hook' );
|
553 |
|
554 |
+
/* ------------------------------------------------------------------ */
|
555 |
+
// FullWAF upgrade AJAX function.
|
556 |
+
|
557 |
+
add_action( 'wp_ajax_nfw_fullwafsetup', 'nfw_fullwafsetup' );
|
558 |
+
|
559 |
+
function nfw_fullwafsetup() {
|
560 |
+
|
561 |
+
nf_not_allowed( 'block', __LINE__ );
|
562 |
+
|
563 |
+
if (! check_ajax_referer( 'events_save', 'nonce', false ) ) {
|
564 |
+
_e('Error: Security nonces do not match. Reload the page and try again.', 'ninjafirewall');
|
565 |
+
wp_die();
|
566 |
+
}
|
567 |
+
|
568 |
+
$nfw_options = nfw_get_option( 'nfw_options' );
|
569 |
+
if ( empty( $nfw_options['enabled'] ) ) {
|
570 |
+
_e('Error: NinjaFirewall is disabled', 'ninjafirewall');
|
571 |
+
wp_die();
|
572 |
+
}
|
573 |
+
|
574 |
+
if ( empty( $_POST['httpserver'] ) ) {
|
575 |
+
printf( __('Error: missing parameter (%s).', 'ninjafirewall'), 'httpserver' );
|
576 |
+
wp_die();
|
577 |
+
}
|
578 |
+
if ( preg_match('/^[^1-7]$/', $_POST['httpserver'] ) ) {
|
579 |
+
printf( __('Error: wrong parameter value (%s).', 'ninjafirewall'), 'httpserver' );
|
580 |
+
wp_die();
|
581 |
+
}
|
582 |
+
if ( empty( $_POST['diy'] ) || ! preg_match( '/^(nfw|usr)$/', $_POST['diy'] ) ) {
|
583 |
+
printf( __('Error: wrong parameter value (%s).', 'ninjafirewall'), 'diy' );
|
584 |
+
wp_die();
|
585 |
+
}
|
586 |
+
|
587 |
+
$time = time() + 300;
|
588 |
+
|
589 |
+
// 1: Apache mod_php
|
590 |
+
// 2: Apache + CGI/FastCGI or PHP-FPM
|
591 |
+
// 3: Apache + suPHP
|
592 |
+
// 4: Nginx + CGI/FastCGI or PHP-FPM
|
593 |
+
// 5: Litespeed
|
594 |
+
// 6: Openlitespeed
|
595 |
+
//7: Other webserver + CGI/FastCGI or PHP-FPM
|
596 |
+
$httpserver = (int) $_POST['httpserver'];
|
597 |
+
|
598 |
+
// [6] Openlitespeed: nothing to do.
|
599 |
+
if ( $httpserver == 6 ) {
|
600 |
+
set_transient( 'nfw_fullwaf', "{$httpserver}:{$time}", 60 * 5 );
|
601 |
+
echo '200';
|
602 |
+
wp_die();
|
603 |
+
}
|
604 |
+
|
605 |
+
require_once __DIR__ .'/lib/install.php';
|
606 |
+
|
607 |
+
// .htaccess mods only
|
608 |
+
if ( $httpserver == 1 || $httpserver == 5 ) {
|
609 |
+
// User wants to make the modification
|
610 |
+
if ( $_POST['diy'] == 'usr' ) {
|
611 |
+
// Nothing to do
|
612 |
+
set_transient( 'nfw_fullwaf', "{$httpserver}:{$time}", 60 * 5 );
|
613 |
+
echo '200';
|
614 |
+
wp_die();
|
615 |
+
}
|
616 |
+
// Make changes
|
617 |
+
$ret = nfw_fullwaf_htaccess( $httpserver );
|
618 |
+
if ( $ret !== true ) {
|
619 |
+
echo $ret;
|
620 |
+
} else {
|
621 |
+
set_transient( 'nfw_fullwaf', "{$httpserver}:{$time}", 60 * 5 );
|
622 |
+
echo '200';
|
623 |
+
}
|
624 |
+
wp_die();
|
625 |
+
}
|
626 |
+
|
627 |
+
if ( $_POST['diy'] == 'usr' ) {
|
628 |
+
// Nothing to do, but add 5-minute notice to the overview page
|
629 |
+
// because an INI file is being used
|
630 |
+
set_transient( 'nfw_fullwaf', "{$httpserver}:{$time}", 60 * 5 );
|
631 |
+
echo '200';
|
632 |
+
wp_die();
|
633 |
+
}
|
634 |
+
|
635 |
+
// [1] .user.ini
|
636 |
+
// [2] php.ini
|
637 |
+
if ( empty ( $_POST['initype'] ) || ! preg_match( '/^[12]$/', $_POST['initype'] ) ) {
|
638 |
+
$initype = 1;
|
639 |
+
} else {
|
640 |
+
$initype = (int) $_POST['initype'];
|
641 |
+
}
|
642 |
+
|
643 |
+
if ( $httpserver == 3 ) { // Apache + suPHP
|
644 |
+
// Set up the htaccess file
|
645 |
+
$ret = nfw_fullwaf_htaccess( $httpserver );
|
646 |
+
if ( $ret !== true ) {
|
647 |
+
echo $ret;
|
648 |
+
wp_die();
|
649 |
+
}
|
650 |
+
}
|
651 |
+
// ini file
|
652 |
+
$ret = nfw_fullwaf_ini( $httpserver, $initype );
|
653 |
+
if ( $ret !== true ) {
|
654 |
+
echo $ret;
|
655 |
+
wp_die();
|
656 |
+
} else {
|
657 |
+
// Add 5-minute notice to the overview page
|
658 |
+
// because an INI file is being used
|
659 |
+
set_transient( 'nfw_fullwaf', "{$httpserver}:{$time}", 60 * 5 );
|
660 |
+
echo 200;
|
661 |
+
}
|
662 |
+
wp_die();
|
663 |
+
}
|
664 |
+
|
665 |
/* ------------------------------------------------------------------ */
|
666 |
|
667 |
function is_nfw_enabled() {
|
707 |
exit;
|
708 |
}
|
709 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
710 |
add_menu_page( 'NinjaFirewall', 'NinjaFirewall', 'manage_options',
|
711 |
'NinjaFirewall', 'nf_sub_main', plugins_url( '/images/nf_icon.png', __FILE__ )
|
712 |
);
|
719 |
'NinjaFirewall', 'nf_sub_main' );
|
720 |
add_action( 'load-' . $menu_hook, 'help_nfsubmain' );
|
721 |
|
722 |
+
|
723 |
$menu_hook = add_submenu_page( 'NinjaFirewall', __('NinjaFirewall: Statistics', 'ninjafirewall'), __('Statistics', 'ninjafirewall'), 'manage_options',
|
724 |
+
// "nfsubstat" is also used by the nfw_load_ext() function
|
725 |
'nfsubstat', 'nf_sub_statistics' );
|
726 |
add_action( 'load-' . $menu_hook, 'help_nfsubstat' );
|
727 |
|
842 |
|
843 |
/* ------------------------------------------------------------------ */
|
844 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
845 |
function nf_sub_main() {
|
846 |
|
847 |
+
// Main menu (Overview)
|
848 |
require plugin_dir_path(__FILE__) . 'lib/overview.php';
|
849 |
|
850 |
}
|
869 |
|
870 |
function nf_sub_policies() {
|
871 |
|
872 |
+
// Firewall Policies menu
|
873 |
require plugin_dir_path(__FILE__) . 'lib/firewall_policies.php';
|
874 |
|
875 |
}
|
887 |
|
888 |
function nf_sub_network() {
|
889 |
|
890 |
+
// Network menu (multi-site only)
|
891 |
require plugin_dir_path(__FILE__) . 'lib/network.php';
|
892 |
|
893 |
}
|
957 |
|
958 |
/* ------------------------------------------------------------------ */
|
959 |
|
960 |
+
function nfw_log2($loginfo, $logdata, $loglevel, $ruleid) {
|
961 |
|
962 |
+
// Write incident to the firewall log
|
963 |
require plugin_dir_path(__FILE__) . 'lib/nfw_log.php';
|
964 |
|
965 |
}
|
968 |
|
969 |
function nf_sub_editor() {
|
970 |
|
971 |
+
// Rules Editor menu
|
972 |
require plugin_dir_path(__FILE__) . 'lib/rules_editor.php';
|
973 |
|
974 |
}
|
1059 |
// (see NFW_ALLOWED_ADMIN at http://nin.link/nfwaa ):
|
1060 |
if ( defined('NFW_ALLOWED_ADMIN') ) {
|
1061 |
$current_user = wp_get_current_user();
|
1062 |
+
$admins = explode(',', NFW_ALLOWED_ADMIN );
|
1063 |
+
foreach ( $admins as $admin ) {
|
1064 |
+
if ( trim( $admin ) == $current_user->user_login ) {
|
1065 |
return false;
|
1066 |
}
|
1067 |
}
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: nintechnet, bruandet
|
|
3 |
Tags: security, firewall, malware, antispam, virus, scanner, hacked site, brute force, seguridad, seguranca, sicherheit, sicurezza, veiligheid
|
4 |
Requires at least: 3.7
|
5 |
Tested up to: 5.2
|
6 |
-
Stable tag:
|
7 |
Requires PHP: 5.3
|
8 |
License: GPLv3 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
@@ -121,7 +121,7 @@ Check out our new supercharged edition: [NinjaFirewall WP+ Edition](https://nint
|
|
121 |
* Admin/Superadmin with `manage_options` + `unfiltered_html capabilities`.
|
122 |
* PHP 5.3+ (5.4 or higher recommended), PHP 7.x or [HHVM 3.4+](https://blog.nintechnet.com/installing-ninjafirewall-with-hhvm-hiphop-virtual-machine/ "")
|
123 |
* MySQL or MariaDB with MySQLi extension
|
124 |
-
* Apache / Nginx / LiteSpeed compatible
|
125 |
* Unix-like operating systems only (Linux, BSD etc). NinjaFirewall is **NOT** compatible with Microsoft Windows.
|
126 |
|
127 |
== Frequently Asked Questions ==
|
@@ -184,21 +184,42 @@ NinjaFirewall works on Unix-like servers only. There is no Microsoft Windows ver
|
|
184 |
1. Overview page.
|
185 |
2. Statistics and benchmarks page.
|
186 |
3. Options page.
|
187 |
-
4. Policies pages: NinjaFirewall has a large list of powerful and unique policies that you can tweak accordingly to your needs.
|
188 |
-
5.
|
189 |
-
6.
|
190 |
-
7.
|
191 |
-
8.
|
192 |
-
9.
|
193 |
-
10.
|
194 |
-
11.
|
195 |
-
12.
|
196 |
13. Rules Editor.
|
197 |
-
14.
|
198 |
-
15.
|
|
|
199 |
|
200 |
== Changelog ==
|
201 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
202 |
= 3.9.1 =
|
203 |
|
204 |
* Fixed potential "Nesting level too deep – recursive dependency" error message in the backend.
|
3 |
Tags: security, firewall, malware, antispam, virus, scanner, hacked site, brute force, seguridad, seguranca, sicherheit, sicurezza, veiligheid
|
4 |
Requires at least: 3.7
|
5 |
Tested up to: 5.2
|
6 |
+
Stable tag: 4.0
|
7 |
Requires PHP: 5.3
|
8 |
License: GPLv3 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
121 |
* Admin/Superadmin with `manage_options` + `unfiltered_html capabilities`.
|
122 |
* PHP 5.3+ (5.4 or higher recommended), PHP 7.x or [HHVM 3.4+](https://blog.nintechnet.com/installing-ninjafirewall-with-hhvm-hiphop-virtual-machine/ "")
|
123 |
* MySQL or MariaDB with MySQLi extension
|
124 |
+
* Apache / Nginx / LiteSpeed / Openlitespeed compatible
|
125 |
* Unix-like operating systems only (Linux, BSD etc). NinjaFirewall is **NOT** compatible with Microsoft Windows.
|
126 |
|
127 |
== Frequently Asked Questions ==
|
184 |
1. Overview page.
|
185 |
2. Statistics and benchmarks page.
|
186 |
3. Options page.
|
187 |
+
4. Policies pages 1/3: NinjaFirewall has a large list of powerful and unique policies that you can tweak accordingly to your needs.
|
188 |
+
5. Policies pages 2/3: NinjaFirewall has a large list of powerful and unique policies that you can tweak accordingly to your needs.
|
189 |
+
6. Policies pages 3/3: NinjaFirewall has a large list of powerful and unique policies that you can tweak accordingly to your needs.
|
190 |
+
7. File Guard: this is a totally unique feature, because it can detect, in real-time, any access to a PHP file that was recently modified or created, and alert you about this.
|
191 |
+
8. File Check: lets you perform file integrity monitoring upon request or on a specific interval (hourly, twicedaily, daily).
|
192 |
+
9. Event notifications can alert you by email on specific events triggered within your blog.
|
193 |
+
10. Login page protection: the fastest and most efficient brute-force attack protection for WordPress.
|
194 |
+
11. Firewall Log.
|
195 |
+
12. Live Log: lets you watch your website traffic in real time. It is fast, light and it does not affect your server load.
|
196 |
13. Rules Editor.
|
197 |
+
14. Security rules updates.
|
198 |
+
15. Contextual help.
|
199 |
+
16. Dashboard widget.
|
200 |
|
201 |
== Changelog ==
|
202 |
|
203 |
+
= 4.0 =
|
204 |
+
|
205 |
+
* Improved NinjaFirewall overall interface and pages layout; added some simple toggle switches to replace radio buttons, better handling of error messages, cleaned up useless code etc.
|
206 |
+
* All JavaScript code was 100% rewritten from scratch, including all features that rely on it (e.g., "Live Log" etc).
|
207 |
+
* The installer was removed: When activating NinjaFirewall for the first time, it will automatically install itself in "WordPress WAF" mode. To upgrade to "Full WAF" mode, simply click on the corresponding link in the “Overview” page. The process is now very straightforward! A "sandbox" was added too, so that if there were a crash during the process, NinjaFirewall would undo the changes and warn the user.
|
208 |
+
* When NinjaFirewall is running in "Full WAF" mode, if the PHP INI file used to load its firewall was deleted by mistake, it would automatically fallback to "WordPress WAF" mode so that the blog will remain protected.
|
209 |
+
* Fixed the admin login page bug where some users had to enter their credentials twice.
|
210 |
+
* The "Block the DOCUMENT_ROOT server variable in HTTP request" policy will not be enabled by default with new installations of NinjaFirewall.
|
211 |
+
* NinjaFirewall will not block users with author and editor role while they are editing a post or page using either the Classic or the new Block Editor.
|
212 |
+
* Added Openlitespeed detection to the "Full WAF" mode installer.
|
213 |
+
* WP+ Edition (Premium): The "Access Control" pages interface was simplified: it now uses simple textarea elements where you can copy/paste your data (URL, IP, Bot and User Input) very easily. The "Geolocation" page was simplified too.
|
214 |
+
* WP+ Edition (Premium): In addition to an IP address or CIDR, you can now also enter an AS number (Autonomous System number). This new feature is very helpful if you want to allow or block all IPs from an ISP or hosting company: just enter their AS number instead of hundreds of IP addresses. Syntax is "AS" + the number, e.g. "AS12345". See "Access Control > IP Access Control".
|
215 |
+
* WP+ Edition (Premium): You can now add an IP to the Access Control blacklist or whitelist from the "Firewall Log" page by entering the IP in the input field below the log textarea.
|
216 |
+
* WP+ Edition (Premium): When running in "WordPress WAF" mode, NinjaFirewall will automatically disable the shared memory option, because that feature is only useful when used in "Full WAF" mode (there is no benefit at all to run it in "WordPress WAF" mode).
|
217 |
+
* WP+ Edition (Premium): Fixed a bug where the ISO 3166 country code was not found when using an external PHP Variable instead of the built-in GeoIP database.
|
218 |
+
* WP+ Edition (Premium): Improved malicious SVG files detection.
|
219 |
+
* WP+ Edition (Premium): Updated IPv4/IPv6/ASN GeoIP databases.
|
220 |
+
* Many fixes and adjustments.
|
221 |
+
|
222 |
+
|
223 |
= 3.9.1 =
|
224 |
|
225 |
* Fixed potential "Nesting level too deep – recursive dependency" error message in the backend.
|
static/chart.min.js
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Chart.js v2.8.0
|
3 |
+
* https://www.chartjs.org
|
4 |
+
* (c) 2019 Chart.js Contributors
|
5 |
+
* Released under the MIT License
|
6 |
+
*/
|
7 |
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(function(){try{return require("moment")}catch(t){}}()):"function"==typeof define&&define.amd?define(["require"],function(t){return e(function(){try{return t("moment")}catch(t){}}())}):t.Chart=e(t.moment)}(this,function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var e={rgb2hsl:i,rgb2hsv:n,rgb2hwb:a,rgb2cmyk:o,rgb2keyword:s,rgb2xyz:l,rgb2lab:d,rgb2lch:function(t){return x(d(t))},hsl2rgb:u,hsl2hsv:function(t){var e=t[0],i=t[1]/100,n=t[2]/100;if(0===n)return[0,0,0];return[e,100*(2*(i*=(n*=2)<=1?n:2-n)/(n+i)),100*((n+i)/2)]},hsl2hwb:function(t){return a(u(t))},hsl2cmyk:function(t){return o(u(t))},hsl2keyword:function(t){return s(u(t))},hsv2rgb:h,hsv2hsl:function(t){var e,i,n=t[0],a=t[1]/100,o=t[2]/100;return e=a*o,[n,100*(e=(e/=(i=(2-a)*o)<=1?i:2-i)||0),100*(i/=2)]},hsv2hwb:function(t){return a(h(t))},hsv2cmyk:function(t){return o(h(t))},hsv2keyword:function(t){return s(h(t))},hwb2rgb:c,hwb2hsl:function(t){return i(c(t))},hwb2hsv:function(t){return n(c(t))},hwb2cmyk:function(t){return o(c(t))},hwb2keyword:function(t){return s(c(t))},cmyk2rgb:f,cmyk2hsl:function(t){return i(f(t))},cmyk2hsv:function(t){return n(f(t))},cmyk2hwb:function(t){return a(f(t))},cmyk2keyword:function(t){return s(f(t))},keyword2rgb:w,keyword2hsl:function(t){return i(w(t))},keyword2hsv:function(t){return n(w(t))},keyword2hwb:function(t){return a(w(t))},keyword2cmyk:function(t){return o(w(t))},keyword2lab:function(t){return d(w(t))},keyword2xyz:function(t){return l(w(t))},xyz2rgb:p,xyz2lab:m,xyz2lch:function(t){return x(m(t))},lab2xyz:v,lab2rgb:y,lab2lch:x,lch2lab:k,lch2xyz:function(t){return v(k(t))},lch2rgb:function(t){return y(k(t))}};function i(t){var e,i,n=t[0]/255,a=t[1]/255,o=t[2]/255,r=Math.min(n,a,o),s=Math.max(n,a,o),l=s-r;return s==r?e=0:n==s?e=(a-o)/l:a==s?e=2+(o-n)/l:o==s&&(e=4+(n-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),i=(r+s)/2,[e,100*(s==r?0:i<=.5?l/(s+r):l/(2-s-r)),100*i]}function n(t){var e,i,n=t[0],a=t[1],o=t[2],r=Math.min(n,a,o),s=Math.max(n,a,o),l=s-r;return i=0==s?0:l/s*1e3/10,s==r?e=0:n==s?e=(a-o)/l:a==s?e=2+(o-n)/l:o==s&&(e=4+(n-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),[e,i,s/255*1e3/10]}function a(t){var e=t[0],n=t[1],a=t[2];return[i(t)[0],100*(1/255*Math.min(e,Math.min(n,a))),100*(a=1-1/255*Math.max(e,Math.max(n,a)))]}function o(t){var e,i=t[0]/255,n=t[1]/255,a=t[2]/255;return[100*((1-i-(e=Math.min(1-i,1-n,1-a)))/(1-e)||0),100*((1-n-e)/(1-e)||0),100*((1-a-e)/(1-e)||0),100*e]}function s(t){return _[JSON.stringify(t)]}function l(t){var e=t[0]/255,i=t[1]/255,n=t[2]/255;return[100*(.4124*(e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)+.1805*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)),100*(.2126*e+.7152*i+.0722*n),100*(.0193*e+.1192*i+.9505*n)]}function d(t){var e=l(t),i=e[0],n=e[1],a=e[2];return n/=100,a/=108.883,i=(i/=95.047)>.008856?Math.pow(i,1/3):7.787*i+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(i-n),200*(n-(a=a>.008856?Math.pow(a,1/3):7.787*a+16/116))]}function u(t){var e,i,n,a,o,r=t[0]/360,s=t[1]/100,l=t[2]/100;if(0==s)return[o=255*l,o,o];e=2*l-(i=l<.5?l*(1+s):l+s-l*s),a=[0,0,0];for(var d=0;d<3;d++)(n=r+1/3*-(d-1))<0&&n++,n>1&&n--,o=6*n<1?e+6*(i-e)*n:2*n<1?i:3*n<2?e+(i-e)*(2/3-n)*6:e,a[d]=255*o;return a}function h(t){var e=t[0]/60,i=t[1]/100,n=t[2]/100,a=Math.floor(e)%6,o=e-Math.floor(e),r=255*n*(1-i),s=255*n*(1-i*o),l=255*n*(1-i*(1-o));n*=255;switch(a){case 0:return[n,l,r];case 1:return[s,n,r];case 2:return[r,n,l];case 3:return[r,s,n];case 4:return[l,r,n];case 5:return[n,r,s]}}function c(t){var e,i,n,a,o=t[0]/360,s=t[1]/100,l=t[2]/100,d=s+l;switch(d>1&&(s/=d,l/=d),n=6*o-(e=Math.floor(6*o)),0!=(1&e)&&(n=1-n),a=s+n*((i=1-l)-s),e){default:case 6:case 0:r=i,g=a,b=s;break;case 1:r=a,g=i,b=s;break;case 2:r=s,g=i,b=a;break;case 3:r=s,g=a,b=i;break;case 4:r=a,g=s,b=i;break;case 5:r=i,g=s,b=a}return[255*r,255*g,255*b]}function f(t){var e=t[0]/100,i=t[1]/100,n=t[2]/100,a=t[3]/100;return[255*(1-Math.min(1,e*(1-a)+a)),255*(1-Math.min(1,i*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a))]}function p(t){var e,i,n,a=t[0]/100,o=t[1]/100,r=t[2]/100;return i=-.9689*a+1.8758*o+.0415*r,n=.0557*a+-.204*o+1.057*r,e=(e=3.2406*a+-1.5372*o+-.4986*r)>.0031308?1.055*Math.pow(e,1/2.4)-.055:e*=12.92,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*=12.92,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:n*=12.92,[255*(e=Math.min(Math.max(0,e),1)),255*(i=Math.min(Math.max(0,i),1)),255*(n=Math.min(Math.max(0,n),1))]}function m(t){var e=t[0],i=t[1],n=t[2];return i/=100,n/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116)-16,500*(e-i),200*(i-(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116))]}function v(t){var e,i,n,a,o=t[0],r=t[1],s=t[2];return o<=8?a=(i=100*o/903.3)/100*7.787+16/116:(i=100*Math.pow((o+16)/116,3),a=Math.pow(i/100,1/3)),[e=e/95.047<=.008856?e=95.047*(r/500+a-16/116)/7.787:95.047*Math.pow(r/500+a,3),i,n=n/108.883<=.008859?n=108.883*(a-s/200-16/116)/7.787:108.883*Math.pow(a-s/200,3)]}function x(t){var e,i=t[0],n=t[1],a=t[2];return(e=360*Math.atan2(a,n)/2/Math.PI)<0&&(e+=360),[i,Math.sqrt(n*n+a*a),e]}function y(t){return p(v(t))}function k(t){var e,i=t[0],n=t[1];return e=t[2]/360*2*Math.PI,[i,n*Math.cos(e),n*Math.sin(e)]}function w(t){return M[t]}var M={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},_={};for(var C in M)_[JSON.stringify(M[C])]=C;var S=function(){return new T};for(var P in e){S[P+"Raw"]=function(t){return function(i){return"number"==typeof i&&(i=Array.prototype.slice.call(arguments)),e[t](i)}}(P);var I=/(\w+)2(\w+)/.exec(P),A=I[1],D=I[2];(S[A]=S[A]||{})[D]=S[P]=function(t){return function(i){"number"==typeof i&&(i=Array.prototype.slice.call(arguments));var n=e[t](i);if("string"==typeof n||void 0===n)return n;for(var a=0;a<n.length;a++)n[a]=Math.round(n[a]);return n}}(P)}var T=function(){this.convs={}};T.prototype.routeSpace=function(t,e){var i=e[0];return void 0===i?this.getValues(t):("number"==typeof i&&(i=Array.prototype.slice.call(e)),this.setValues(t,i))},T.prototype.setValues=function(t,e){return this.space=t,this.convs={},this.convs[t]=e,this},T.prototype.getValues=function(t){var e=this.convs[t];if(!e){var i=this.space,n=this.convs[i];e=S[i][t](n),this.convs[t]=e}return e},["rgb","hsl","hsv","cmyk","keyword"].forEach(function(t){T.prototype[t]=function(e){return this.routeSpace(t,arguments)}});var F=S,L={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},R={getRgba:O,getHsla:z,getRgb:function(t){var e=O(t);return e&&e.slice(0,3)},getHsl:function(t){var e=z(t);return e&&e.slice(0,3)},getHwb:B,getAlpha:function(t){var e=O(t);if(e)return e[3];if(e=z(t))return e[3];if(e=B(t))return e[3]},hexString:function(t,e){var e=void 0!==e&&3===t.length?e:t[3];return"#"+H(t[0])+H(t[1])+H(t[2])+(e>=0&&e<1?H(Math.round(255*e)):"")},rgbString:function(t,e){if(e<1||t[3]&&t[3]<1)return N(t,e);return"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:N,percentString:function(t,e){if(e<1||t[3]&&t[3]<1)return W(t,e);var i=Math.round(t[0]/255*100),n=Math.round(t[1]/255*100),a=Math.round(t[2]/255*100);return"rgb("+i+"%, "+n+"%, "+a+"%)"},percentaString:W,hslString:function(t,e){if(e<1||t[3]&&t[3]<1)return V(t,e);return"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:V,hwbString:function(t,e){void 0===e&&(e=void 0!==t[3]?t[3]:1);return"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"},keyword:function(t){return j[t.slice(0,3)]}};function O(t){if(t){var e=[0,0,0],i=1,n=t.match(/^#([a-fA-F0-9]{3,4})$/i),a="";if(n){a=(n=n[1])[3];for(var o=0;o<e.length;o++)e[o]=parseInt(n[o]+n[o],16);a&&(i=Math.round(parseInt(a+a,16)/255*100)/100)}else if(n=t.match(/^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i)){a=n[2],n=n[1];for(o=0;o<e.length;o++)e[o]=parseInt(n.slice(2*o,2*o+2),16);a&&(i=Math.round(parseInt(a,16)/255*100)/100)}else if(n=t.match(/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(o=0;o<e.length;o++)e[o]=parseInt(n[o+1]);i=parseFloat(n[4])}else if(n=t.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(o=0;o<e.length;o++)e[o]=Math.round(2.55*parseFloat(n[o+1]));i=parseFloat(n[4])}else if(n=t.match(/(\w+)/)){if("transparent"==n[1])return[0,0,0,0];if(!(e=L[n[1]]))return}for(o=0;o<e.length;o++)e[o]=E(e[o],0,255);return i=i||0==i?E(i,0,1):1,e[3]=i,e}}function z(t){if(t){var e=t.match(/^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var i=parseFloat(e[4]);return[E(parseInt(e[1]),0,360),E(parseFloat(e[2]),0,100),E(parseFloat(e[3]),0,100),E(isNaN(i)?1:i,0,1)]}}}function B(t){if(t){var e=t.match(/^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var i=parseFloat(e[4]);return[E(parseInt(e[1]),0,360),E(parseFloat(e[2]),0,100),E(parseFloat(e[3]),0,100),E(isNaN(i)?1:i,0,1)]}}}function N(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+e+")"}function W(t,e){return"rgba("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%, "+(e||t[3]||1)+")"}function V(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+e+")"}function E(t,e,i){return Math.min(Math.max(e,t),i)}function H(t){var e=t.toString(16).toUpperCase();return e.length<2?"0"+e:e}var j={};for(var q in L)j[L[q]]=q;var Y=function(t){return t instanceof Y?t:this instanceof Y?(this.valid=!1,this.values={rgb:[0,0,0],hsl:[0,0,0],hsv:[0,0,0],hwb:[0,0,0],cmyk:[0,0,0,0],alpha:1},void("string"==typeof t?(e=R.getRgba(t))?this.setValues("rgb",e):(e=R.getHsla(t))?this.setValues("hsl",e):(e=R.getHwb(t))&&this.setValues("hwb",e):"object"==typeof t&&(void 0!==(e=t).r||void 0!==e.red?this.setValues("rgb",e):void 0!==e.l||void 0!==e.lightness?this.setValues("hsl",e):void 0!==e.v||void 0!==e.value?this.setValues("hsv",e):void 0!==e.w||void 0!==e.whiteness?this.setValues("hwb",e):void 0===e.c&&void 0===e.cyan||this.setValues("cmyk",e)))):new Y(t);var e};Y.prototype={isValid:function(){return this.valid},rgb:function(){return this.setSpace("rgb",arguments)},hsl:function(){return this.setSpace("hsl",arguments)},hsv:function(){return this.setSpace("hsv",arguments)},hwb:function(){return this.setSpace("hwb",arguments)},cmyk:function(){return this.setSpace("cmyk",arguments)},rgbArray:function(){return this.values.rgb},hslArray:function(){return this.values.hsl},hsvArray:function(){return this.values.hsv},hwbArray:function(){var t=this.values;return 1!==t.alpha?t.hwb.concat([t.alpha]):t.hwb},cmykArray:function(){return this.values.cmyk},rgbaArray:function(){var t=this.values;return t.rgb.concat([t.alpha])},hslaArray:function(){var t=this.values;return t.hsl.concat([t.alpha])},alpha:function(t){return void 0===t?this.values.alpha:(this.setValues("alpha",t),this)},red:function(t){return this.setChannel("rgb",0,t)},green:function(t){return this.setChannel("rgb",1,t)},blue:function(t){return this.setChannel("rgb",2,t)},hue:function(t){return t&&(t=(t%=360)<0?360+t:t),this.setChannel("hsl",0,t)},saturation:function(t){return this.setChannel("hsl",1,t)},lightness:function(t){return this.setChannel("hsl",2,t)},saturationv:function(t){return this.setChannel("hsv",1,t)},whiteness:function(t){return this.setChannel("hwb",1,t)},blackness:function(t){return this.setChannel("hwb",2,t)},value:function(t){return this.setChannel("hsv",2,t)},cyan:function(t){return this.setChannel("cmyk",0,t)},magenta:function(t){return this.setChannel("cmyk",1,t)},yellow:function(t){return this.setChannel("cmyk",2,t)},black:function(t){return this.setChannel("cmyk",3,t)},hexString:function(){return R.hexString(this.values.rgb)},rgbString:function(){return R.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return R.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return R.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return R.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return R.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return R.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return R.keyword(this.values.rgb,this.values.alpha)},rgbNumber:function(){var t=this.values.rgb;return t[0]<<16|t[1]<<8|t[2]},luminosity:function(){for(var t=this.values.rgb,e=[],i=0;i<t.length;i++){var n=t[i]/255;e[i]=n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),i=t.luminosity();return e>i?(e+.05)/(i+.05):(i+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,i=(e[0]+t)%360;return e[0]=i<0?360+i:i,this.setValues("hsl",e),this},mix:function(t,e){var i=t,n=void 0===e?.5:e,a=2*n-1,o=this.alpha()-i.alpha(),r=((a*o==-1?a:(a+o)/(1+a*o))+1)/2,s=1-r;return this.rgb(r*this.red()+s*i.red(),r*this.green()+s*i.green(),r*this.blue()+s*i.blue()).alpha(this.alpha()*n+i.alpha()*(1-n))},toJSON:function(){return this.rgb()},clone:function(){var t,e,i=new Y,n=this.values,a=i.values;for(var o in n)n.hasOwnProperty(o)&&(t=n[o],"[object Array]"===(e={}.toString.call(t))?a[o]=t.slice(0):"[object Number]"===e?a[o]=t:console.error("unexpected color value:",t));return i}},Y.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},Y.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},Y.prototype.getValues=function(t){for(var e=this.values,i={},n=0;n<t.length;n++)i[t.charAt(n)]=e[t][n];return 1!==e.alpha&&(i.a=e.alpha),i},Y.prototype.setValues=function(t,e){var i,n,a=this.values,o=this.spaces,r=this.maxes,s=1;if(this.valid=!0,"alpha"===t)s=e;else if(e.length)a[t]=e.slice(0,t.length),s=e[t.length];else if(void 0!==e[t.charAt(0)]){for(i=0;i<t.length;i++)a[t][i]=e[t.charAt(i)];s=e.a}else if(void 0!==e[o[t][0]]){var l=o[t];for(i=0;i<t.length;i++)a[t][i]=e[l[i]];s=e.alpha}if(a.alpha=Math.max(0,Math.min(1,void 0===s?a.alpha:s)),"alpha"===t)return!1;for(i=0;i<t.length;i++)n=Math.max(0,Math.min(r[t][i],a[t][i])),a[t][i]=Math.round(n);for(var d in o)d!==t&&(a[d]=F[t][d](a[t]));return!0},Y.prototype.setSpace=function(t,e){var i=e[0];return void 0===i?this.getValues(t):("number"==typeof i&&(i=Array.prototype.slice.call(e)),this.setValues(t,i),this)},Y.prototype.setChannel=function(t,e,i){var n=this.values[t];return void 0===i?n[e]:i===n[e]?this:(n[e]=i,this.setValues(t,n),this)},"undefined"!=typeof window&&(window.Color=Y);var U,X=Y,K={noop:function(){},uid:(U=0,function(){return U++}),isNullOrUndef:function(t){return null==t},isArray:function(t){if(Array.isArray&&Array.isArray(t))return!0;var e=Object.prototype.toString.call(t);return"[object"===e.substr(0,7)&&"Array]"===e.substr(-6)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},isFinite:function(t){return("number"==typeof t||t instanceof Number)&&isFinite(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,i){return K.valueOrDefault(K.isArray(t)?t[e]:t,i)},callback:function(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)},each:function(t,e,i,n){var a,o,r;if(K.isArray(t))if(o=t.length,n)for(a=o-1;a>=0;a--)e.call(i,t[a],a);else for(a=0;a<o;a++)e.call(i,t[a],a);else if(K.isObject(t))for(o=(r=Object.keys(t)).length,a=0;a<o;a++)e.call(i,t[r[a]],r[a])},arrayEquals:function(t,e){var i,n,a,o;if(!t||!e||t.length!==e.length)return!1;for(i=0,n=t.length;i<n;++i)if(a=t[i],o=e[i],a instanceof Array&&o instanceof Array){if(!K.arrayEquals(a,o))return!1}else if(a!==o)return!1;return!0},clone:function(t){if(K.isArray(t))return t.map(K.clone);if(K.isObject(t)){for(var e={},i=Object.keys(t),n=i.length,a=0;a<n;++a)e[i[a]]=K.clone(t[i[a]]);return e}return t},_merger:function(t,e,i,n){var a=e[t],o=i[t];K.isObject(a)&&K.isObject(o)?K.merge(a,o,n):e[t]=K.clone(o)},_mergerIf:function(t,e,i){var n=e[t],a=i[t];K.isObject(n)&&K.isObject(a)?K.mergeIf(n,a):e.hasOwnProperty(t)||(e[t]=K.clone(a))},merge:function(t,e,i){var n,a,o,r,s,l=K.isArray(e)?e:[e],d=l.length;if(!K.isObject(t))return t;for(n=(i=i||{}).merger||K._merger,a=0;a<d;++a)if(e=l[a],K.isObject(e))for(s=0,r=(o=Object.keys(e)).length;s<r;++s)n(o[s],t,e,i);return t},mergeIf:function(t,e){return K.merge(t,e,{merger:K._mergerIf})},extend:function(t){for(var e=function(e,i){t[i]=e},i=1,n=arguments.length;i<n;++i)K.each(arguments[i],e);return t},inherits:function(t){var e=this,i=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return e.apply(this,arguments)},n=function(){this.constructor=i};return n.prototype=e.prototype,i.prototype=new n,i.extend=K.inherits,t&&K.extend(i.prototype,t),i.__super__=e.prototype,i}},G=K;K.callCallback=K.callback,K.indexOf=function(t,e,i){return Array.prototype.indexOf.call(t,e,i)},K.getValueOrDefault=K.valueOrDefault,K.getValueAtIndexOrDefault=K.valueAtIndexOrDefault;var Z={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return(t-=1)*t*t+1},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-((t-=1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return(t-=1)*t*t*t*t+1},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return 1-Math.cos(t*(Math.PI/2))},easeOutSine:function(t){return Math.sin(t*(Math.PI/2))},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},easeInExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},easeOutExpo:function(t){return 1===t?1:1-Math.pow(2,-10*t)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*--t))},easeInCirc:function(t){return t>=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:1===t?1:(i||(i=.3),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),-n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i))},easeOutElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:1===t?1:(i||(i=.3),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),n*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/i)+1)},easeInOutElastic:function(t){var e=1.70158,i=0,n=1;return 0===t?0:2==(t/=.5)?1:(i||(i=.45),n<1?(n=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/n),t<1?n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*-.5:n*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*.5+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-Z.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*Z.easeInBounce(2*t):.5*Z.easeOutBounce(2*t-1)+.5}},$={effects:Z};G.easingEffects=Z;var J=Math.PI,Q=J/180,tt=2*J,et=J/2,it=J/4,nt=2*J/3,at={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,i,n,a,o){if(o){var r=Math.min(o,a/2,n/2),s=e+r,l=i+r,d=e+n-r,u=i+a-r;t.moveTo(e,l),s<d&&l<u?(t.arc(s,l,r,-J,-et),t.arc(d,l,r,-et,0),t.arc(d,u,r,0,et),t.arc(s,u,r,et,J)):s<d?(t.moveTo(s,i),t.arc(d,l,r,-et,et),t.arc(s,l,r,et,J+et)):l<u?(t.arc(s,l,r,-J,0),t.arc(s,u,r,0,J)):t.arc(s,l,r,-J,J),t.closePath(),t.moveTo(e,i)}else t.rect(e,i,n,a)},drawPoint:function(t,e,i,n,a,o){var r,s,l,d,u,h=(o||0)*Q;if(!e||"object"!=typeof e||"[object HTMLImageElement]"!==(r=e.toString())&&"[object HTMLCanvasElement]"!==r){if(!(isNaN(i)||i<=0)){switch(t.beginPath(),e){default:t.arc(n,a,i,0,tt),t.closePath();break;case"triangle":t.moveTo(n+Math.sin(h)*i,a-Math.cos(h)*i),h+=nt,t.lineTo(n+Math.sin(h)*i,a-Math.cos(h)*i),h+=nt,t.lineTo(n+Math.sin(h)*i,a-Math.cos(h)*i),t.closePath();break;case"rectRounded":d=i-(u=.516*i),s=Math.cos(h+it)*d,l=Math.sin(h+it)*d,t.arc(n-s,a-l,u,h-J,h-et),t.arc(n+l,a-s,u,h-et,h),t.arc(n+s,a+l,u,h,h+et),t.arc(n-l,a+s,u,h+et,h+J),t.closePath();break;case"rect":if(!o){d=Math.SQRT1_2*i,t.rect(n-d,a-d,2*d,2*d);break}h+=it;case"rectRot":s=Math.cos(h)*i,l=Math.sin(h)*i,t.moveTo(n-s,a-l),t.lineTo(n+l,a-s),t.lineTo(n+s,a+l),t.lineTo(n-l,a+s),t.closePath();break;case"crossRot":h+=it;case"cross":s=Math.cos(h)*i,l=Math.sin(h)*i,t.moveTo(n-s,a-l),t.lineTo(n+s,a+l),t.moveTo(n+l,a-s),t.lineTo(n-l,a+s);break;case"star":s=Math.cos(h)*i,l=Math.sin(h)*i,t.moveTo(n-s,a-l),t.lineTo(n+s,a+l),t.moveTo(n+l,a-s),t.lineTo(n-l,a+s),h+=it,s=Math.cos(h)*i,l=Math.sin(h)*i,t.moveTo(n-s,a-l),t.lineTo(n+s,a+l),t.moveTo(n+l,a-s),t.lineTo(n-l,a+s);break;case"line":s=Math.cos(h)*i,l=Math.sin(h)*i,t.moveTo(n-s,a-l),t.lineTo(n+s,a+l);break;case"dash":t.moveTo(n,a),t.lineTo(n+Math.cos(h)*i,a+Math.sin(h)*i)}t.fill(),t.stroke()}}else t.drawImage(e,n-e.width/2,a-e.height/2,e.width,e.height)},_isPointInArea:function(t,e){return t.x>e.left-1e-6&&t.x<e.right+1e-6&&t.y>e.top-1e-6&&t.y<e.bottom+1e-6},clipArea:function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},unclipArea:function(t){t.restore()},lineTo:function(t,e,i,n){var a=i.steppedLine;if(a){if("middle"===a){var o=(e.x+i.x)/2;t.lineTo(o,n?i.y:e.y),t.lineTo(o,n?e.y:i.y)}else"after"===a&&!n||"after"!==a&&n?t.lineTo(e.x,i.y):t.lineTo(i.x,e.y);t.lineTo(i.x,i.y)}else i.tension?t.bezierCurveTo(n?e.controlPointPreviousX:e.controlPointNextX,n?e.controlPointPreviousY:e.controlPointNextY,n?i.controlPointNextX:i.controlPointPreviousX,n?i.controlPointNextY:i.controlPointPreviousY,i.x,i.y):t.lineTo(i.x,i.y)}},ot=at;G.clear=at.clear,G.drawRoundedRectangle=function(t){t.beginPath(),at.roundedRect.apply(at,arguments)};var rt={_set:function(t,e){return G.merge(this[t]||(this[t]={}),e)}};rt._set("global",{defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",defaultLineHeight:1.2,showLines:!0});var st=rt,lt=G.valueOrDefault;var dt={toLineHeight:function(t,e){var i=(""+t).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t},toPadding:function(t){var e,i,n,a;return G.isObject(t)?(e=+t.top||0,i=+t.right||0,n=+t.bottom||0,a=+t.left||0):e=i=n=a=+t||0,{top:e,right:i,bottom:n,left:a,height:e+n,width:a+i}},_parseFont:function(t){var e=st.global,i=lt(t.fontSize,e.defaultFontSize),n={family:lt(t.fontFamily,e.defaultFontFamily),lineHeight:G.options.toLineHeight(lt(t.lineHeight,e.defaultLineHeight),i),size:i,style:lt(t.fontStyle,e.defaultFontStyle),weight:null,string:""};return n.string=function(t){return!t||G.isNullOrUndef(t.size)||G.isNullOrUndef(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}(n),n},resolve:function(t,e,i){var n,a,o;for(n=0,a=t.length;n<a;++n)if(void 0!==(o=t[n])&&(void 0!==e&&"function"==typeof o&&(o=o(e)),void 0!==i&&G.isArray(o)&&(o=o[i]),void 0!==o))return o}},ut=G,ht=$,ct=ot,ft=dt;ut.easing=ht,ut.canvas=ct,ut.options=ft;var gt=function(t){ut.extend(this,t),this.initialize.apply(this,arguments)};ut.extend(gt.prototype,{initialize:function(){this.hidden=!1},pivot:function(){var t=this;return t._view||(t._view=ut.clone(t._model)),t._start={},t},transition:function(t){var e=this,i=e._model,n=e._start,a=e._view;return i&&1!==t?(a||(a=e._view={}),n||(n=e._start={}),function(t,e,i,n){var a,o,r,s,l,d,u,h,c,f=Object.keys(i);for(a=0,o=f.length;a<o;++a)if(d=i[r=f[a]],e.hasOwnProperty(r)||(e[r]=d),(s=e[r])!==d&&"_"!==r[0]){if(t.hasOwnProperty(r)||(t[r]=s),(u=typeof d)==typeof(l=t[r]))if("string"===u){if((h=X(l)).valid&&(c=X(d)).valid){e[r]=c.mix(h,n).rgbString();continue}}else if(ut.isFinite(l)&&ut.isFinite(d)){e[r]=l+(d-l)*n;continue}e[r]=d}}(n,a,i,t),e):(e._view=i,e._start=null,e)},tooltipPosition:function(){return{x:this._model.x,y:this._model.y}},hasValue:function(){return ut.isNumber(this._model.x)&&ut.isNumber(this._model.y)}}),gt.extend=ut.inherits;var pt=gt,mt=pt.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),vt=mt;Object.defineProperty(mt.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(mt.prototype,"chartInstance",{get:function(){return this.chart},set:function(t){this.chart=t}}),st._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:ut.noop,onComplete:ut.noop}});var bt={animations:[],request:null,addAnimation:function(t,e,i,n){var a,o,r=this.animations;for(e.chart=t,e.startTime=Date.now(),e.duration=i,n||(t.animating=!0),a=0,o=r.length;a<o;++a)if(r[a].chart===t)return void(r[a]=e);r.push(e),1===r.length&&this.requestAnimationFrame()},cancelAnimation:function(t){var e=ut.findIndex(this.animations,function(e){return e.chart===t});-1!==e&&(this.animations.splice(e,1),t.animating=!1)},requestAnimationFrame:function(){var t=this;null===t.request&&(t.request=ut.requestAnimFrame.call(window,function(){t.request=null,t.startDigest()}))},startDigest:function(){this.advance(),this.animations.length>0&&this.requestAnimationFrame()},advance:function(){for(var t,e,i,n,a=this.animations,o=0;o<a.length;)e=(t=a[o]).chart,i=t.numSteps,n=Math.floor((Date.now()-t.startTime)/t.duration*i)+1,t.currentStep=Math.min(n,i),ut.callback(t.render,[e,t],e),ut.callback(t.onAnimationProgress,[t],e),t.currentStep>=i?(ut.callback(t.onAnimationComplete,[t],e),e.animating=!1,a.splice(o,1)):++o}},xt=ut.options.resolve,yt=["push","pop","shift","splice","unshift"];function kt(t,e){var i=t._chartjs;if(i){var n=i.listeners,a=n.indexOf(e);-1!==a&&n.splice(a,1),n.length>0||(yt.forEach(function(e){delete t[e]}),delete t._chartjs)}}var wt=function(t,e){this.initialize(t,e)};ut.extend(wt.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){this.chart=t,this.index=e,this.linkScales(),this.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),i=t.getDataset();null!==e.xAxisID&&e.xAxisID in t.chart.scales||(e.xAxisID=i.xAxisID||t.chart.options.scales.xAxes[0].id),null!==e.yAxisID&&e.yAxisID in t.chart.scales||(e.yAxisID=i.yAxisID||t.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},_getValueScaleId:function(){return this.getMeta().yAxisID},_getIndexScaleId:function(){return this.getMeta().xAxisID},_getValueScale:function(){return this.getScaleForId(this._getValueScaleId())},_getIndexScale:function(){return this.getScaleForId(this._getIndexScaleId())},reset:function(){this.update(!0)},destroy:function(){this._data&&kt(this._data,this)},createMetaDataset:function(){var t=this.datasetElementType;return t&&new t({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(t){var e=this.dataElementType;return e&&new e({_chart:this.chart,_datasetIndex:this.index,_index:t})},addElements:function(){var t,e,i=this.getMeta(),n=this.getDataset().data||[],a=i.data;for(t=0,e=n.length;t<e;++t)a[t]=a[t]||this.createMetaData(t);i.dataset=i.dataset||this.createMetaDataset()},addElementAndReset:function(t){var e=this.createMetaData(t);this.getMeta().data.splice(t,0,e),this.updateElement(e,t,!0)},buildOrUpdateElements:function(){var t,e,i=this,n=i.getDataset(),a=n.data||(n.data=[]);i._data!==a&&(i._data&&kt(i._data,i),a&&Object.isExtensible(a)&&(e=i,(t=a)._chartjs?t._chartjs.listeners.push(e):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),yt.forEach(function(e){var i="onData"+e.charAt(0).toUpperCase()+e.slice(1),n=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value:function(){var e=Array.prototype.slice.call(arguments),a=n.apply(this,e);return ut.each(t._chartjs.listeners,function(t){"function"==typeof t[i]&&t[i].apply(t,e)}),a}})}))),i._data=a),i.resyncElements()},update:ut.noop,transition:function(t){for(var e=this.getMeta(),i=e.data||[],n=i.length,a=0;a<n;++a)i[a].transition(t);e.dataset&&e.dataset.transition(t)},draw:function(){var t=this.getMeta(),e=t.data||[],i=e.length,n=0;for(t.dataset&&t.dataset.draw();n<i;++n)e[n].draw()},removeHoverStyle:function(t){ut.merge(t._model,t.$previousStyle||{}),delete t.$previousStyle},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],i=t._index,n=t.custom||{},a=t._model,o=ut.getHoverColor;t.$previousStyle={backgroundColor:a.backgroundColor,borderColor:a.borderColor,borderWidth:a.borderWidth},a.backgroundColor=xt([n.hoverBackgroundColor,e.hoverBackgroundColor,o(a.backgroundColor)],void 0,i),a.borderColor=xt([n.hoverBorderColor,e.hoverBorderColor,o(a.borderColor)],void 0,i),a.borderWidth=xt([n.hoverBorderWidth,e.hoverBorderWidth,a.borderWidth],void 0,i)},resyncElements:function(){var t=this.getMeta(),e=this.getDataset().data,i=t.data.length,n=e.length;n<i?t.data.splice(n,i-n):n>i&&this.insertElements(i,n-i)},insertElements:function(t,e){for(var i=0;i<e;++i)this.addElementAndReset(t+i)},onDataPush:function(){var t=arguments.length;this.insertElements(this.getDataset().data.length-t,t)},onDataPop:function(){this.getMeta().data.pop()},onDataShift:function(){this.getMeta().data.shift()},onDataSplice:function(t,e){this.getMeta().data.splice(t,e),this.insertElements(t,arguments.length-2)},onDataUnshift:function(){this.insertElements(0,arguments.length)}}),wt.extend=ut.inherits;var Mt=wt;st._set("global",{elements:{arc:{backgroundColor:st.global.defaultColor,borderColor:"#fff",borderWidth:2,borderAlign:"center"}}});var _t=pt.extend({inLabelRange:function(t){var e=this._view;return!!e&&Math.pow(t-e.x,2)<Math.pow(e.radius+e.hoverRadius,2)},inRange:function(t,e){var i=this._view;if(i){for(var n=ut.getAngleFromPoint(i,{x:t,y:e}),a=n.angle,o=n.distance,r=i.startAngle,s=i.endAngle;s<r;)s+=2*Math.PI;for(;a>s;)a-=2*Math.PI;for(;a<r;)a+=2*Math.PI;var l=a>=r&&a<=s,d=o>=i.innerRadius&&o<=i.outerRadius;return l&&d}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,i=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,i=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},draw:function(){var t,e=this._chart.ctx,i=this._view,n=i.startAngle,a=i.endAngle,o="inner"===i.borderAlign?.33:0;e.save(),e.beginPath(),e.arc(i.x,i.y,Math.max(i.outerRadius-o,0),n,a),e.arc(i.x,i.y,i.innerRadius,a,n,!0),e.closePath(),e.fillStyle=i.backgroundColor,e.fill(),i.borderWidth&&("inner"===i.borderAlign?(e.beginPath(),t=o/i.outerRadius,e.arc(i.x,i.y,i.outerRadius,n-t,a+t),i.innerRadius>o?(t=o/i.innerRadius,e.arc(i.x,i.y,i.innerRadius-o,a+t,n-t,!0)):e.arc(i.x,i.y,o,a+Math.PI/2,n-Math.PI/2),e.closePath(),e.clip(),e.beginPath(),e.arc(i.x,i.y,i.outerRadius,n,a),e.arc(i.x,i.y,i.innerRadius,a,n,!0),e.closePath(),e.lineWidth=2*i.borderWidth,e.lineJoin="round"):(e.lineWidth=i.borderWidth,e.lineJoin="bevel"),e.strokeStyle=i.borderColor,e.stroke()),e.restore()}}),Ct=ut.valueOrDefault,St=st.global.defaultColor;st._set("global",{elements:{line:{tension:.4,backgroundColor:St,borderWidth:3,borderColor:St,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}});var Pt=pt.extend({draw:function(){var t,e,i,n,a=this._view,o=this._chart.ctx,r=a.spanGaps,s=this._children.slice(),l=st.global,d=l.elements.line,u=-1;for(this._loop&&s.length&&s.push(s[0]),o.save(),o.lineCap=a.borderCapStyle||d.borderCapStyle,o.setLineDash&&o.setLineDash(a.borderDash||d.borderDash),o.lineDashOffset=Ct(a.borderDashOffset,d.borderDashOffset),o.lineJoin=a.borderJoinStyle||d.borderJoinStyle,o.lineWidth=Ct(a.borderWidth,d.borderWidth),o.strokeStyle=a.borderColor||l.defaultColor,o.beginPath(),u=-1,t=0;t<s.length;++t)e=s[t],i=ut.previousItem(s,t),n=e._view,0===t?n.skip||(o.moveTo(n.x,n.y),u=t):(i=-1===u?i:s[u],n.skip||(u!==t-1&&!r||-1===u?o.moveTo(n.x,n.y):ut.canvas.lineTo(o,i._view,e._view),u=t));o.stroke(),o.restore()}}),It=ut.valueOrDefault,At=st.global.defaultColor;function Dt(t){var e=this._view;return!!e&&Math.abs(t-e.x)<e.radius+e.hitRadius}st._set("global",{elements:{point:{radius:3,pointStyle:"circle",backgroundColor:At,borderColor:At,borderWidth:1,hitRadius:1,hoverRadius:4,hoverBorderWidth:1}}});var Tt=pt.extend({inRange:function(t,e){var i=this._view;return!!i&&Math.pow(t-i.x,2)+Math.pow(e-i.y,2)<Math.pow(i.hitRadius+i.radius,2)},inLabelRange:Dt,inXRange:Dt,inYRange:function(t){var e=this._view;return!!e&&Math.abs(t-e.y)<e.radius+e.hitRadius},getCenterPoint:function(){var t=this._view;return{x:t.x,y:t.y}},getArea:function(){return Math.PI*Math.pow(this._view.radius,2)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y,padding:t.radius+t.borderWidth}},draw:function(t){var e=this._view,i=this._chart.ctx,n=e.pointStyle,a=e.rotation,o=e.radius,r=e.x,s=e.y,l=st.global,d=l.defaultColor;e.skip||(void 0===t||ut.canvas._isPointInArea(e,t))&&(i.strokeStyle=e.borderColor||d,i.lineWidth=It(e.borderWidth,l.elements.point.borderWidth),i.fillStyle=e.backgroundColor||d,ut.canvas.drawPoint(i,n,o,r,s,a))}}),Ft=st.global.defaultColor;function Lt(t){return t&&void 0!==t.width}function Rt(t){var e,i,n,a,o;return Lt(t)?(o=t.width/2,e=t.x-o,i=t.x+o,n=Math.min(t.y,t.base),a=Math.max(t.y,t.base)):(o=t.height/2,e=Math.min(t.x,t.base),i=Math.max(t.x,t.base),n=t.y-o,a=t.y+o),{left:e,top:n,right:i,bottom:a}}function Ot(t,e,i){return t===e?i:t===i?e:t}function zt(t,e,i){var n,a,o,r,s=t.borderWidth,l=function(t){var e=t.borderSkipped,i={};return e?(t.horizontal?t.base>t.x&&(e=Ot(e,"left","right")):t.base<t.y&&(e=Ot(e,"bottom","top")),i[e]=!0,i):i}(t);return ut.isObject(s)?(n=+s.top||0,a=+s.right||0,o=+s.bottom||0,r=+s.left||0):n=a=o=r=+s||0,{t:l.top||n<0?0:n>i?i:n,r:l.right||a<0?0:a>e?e:a,b:l.bottom||o<0?0:o>i?i:o,l:l.left||r<0?0:r>e?e:r}}function Bt(t,e,i){var n=null===e,a=null===i,o=!(!t||n&&a)&&Rt(t);return o&&(n||e>=o.left&&e<=o.right)&&(a||i>=o.top&&i<=o.bottom)}st._set("global",{elements:{rectangle:{backgroundColor:Ft,borderColor:Ft,borderSkipped:"bottom",borderWidth:0}}});var Nt=pt.extend({draw:function(){var t=this._chart.ctx,e=this._view,i=function(t){var e=Rt(t),i=e.right-e.left,n=e.bottom-e.top,a=zt(t,i/2,n/2);return{outer:{x:e.left,y:e.top,w:i,h:n},inner:{x:e.left+a.l,y:e.top+a.t,w:i-a.l-a.r,h:n-a.t-a.b}}}(e),n=i.outer,a=i.inner;t.fillStyle=e.backgroundColor,t.fillRect(n.x,n.y,n.w,n.h),n.w===a.w&&n.h===a.h||(t.save(),t.beginPath(),t.rect(n.x,n.y,n.w,n.h),t.clip(),t.fillStyle=e.borderColor,t.rect(a.x,a.y,a.w,a.h),t.fill("evenodd"),t.restore())},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){return Bt(this._view,t,e)},inLabelRange:function(t,e){var i=this._view;return Lt(i)?Bt(i,t,null):Bt(i,null,e)},inXRange:function(t){return Bt(this._view,t,null)},inYRange:function(t){return Bt(this._view,null,t)},getCenterPoint:function(){var t,e,i=this._view;return Lt(i)?(t=i.x,e=(i.y+i.base)/2):(t=(i.x+i.base)/2,e=i.y),{x:t,y:e}},getArea:function(){var t=this._view;return Lt(t)?t.width*Math.abs(t.y-t.base):t.height*Math.abs(t.x-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}}),Wt={},Vt=_t,Et=Pt,Ht=Tt,jt=Nt;Wt.Arc=Vt,Wt.Line=Et,Wt.Point=Ht,Wt.Rectangle=jt;var qt=ut.options.resolve;st._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}});var Yt=Mt.extend({dataElementType:Wt.Rectangle,initialize:function(){var t;Mt.prototype.initialize.apply(this,arguments),(t=this.getMeta()).stack=this.getDataset().stack,t.bar=!0},update:function(t){var e,i,n=this.getMeta().data;for(this._ruler=this.getRuler(),e=0,i=n.length;e<i;++e)this.updateElement(n[e],e,t)},updateElement:function(t,e,i){var n=this,a=n.getMeta(),o=n.getDataset(),r=n._resolveElementOptions(t,e);t._xScale=n.getScaleForId(a.xAxisID),t._yScale=n.getScaleForId(a.yAxisID),t._datasetIndex=n.index,t._index=e,t._model={backgroundColor:r.backgroundColor,borderColor:r.borderColor,borderSkipped:r.borderSkipped,borderWidth:r.borderWidth,datasetLabel:o.label,label:n.chart.data.labels[e]},n._updateElementGeometry(t,e,i),t.pivot()},_updateElementGeometry:function(t,e,i){var n=this,a=t._model,o=n._getValueScale(),r=o.getBasePixel(),s=o.isHorizontal(),l=n._ruler||n.getRuler(),d=n.calculateBarValuePixels(n.index,e),u=n.calculateBarIndexPixels(n.index,e,l);a.horizontal=s,a.base=i?r:d.base,a.x=s?i?r:d.head:u.center,a.y=s?u.center:i?r:d.head,a.height=s?u.size:void 0,a.width=s?void 0:u.size},_getStacks:function(t){var e,i,n=this.chart,a=this._getIndexScale().options.stacked,o=void 0===t?n.data.datasets.length:t+1,r=[];for(e=0;e<o;++e)(i=n.getDatasetMeta(e)).bar&&n.isDatasetVisible(e)&&(!1===a||!0===a&&-1===r.indexOf(i.stack)||void 0===a&&(void 0===i.stack||-1===r.indexOf(i.stack)))&&r.push(i.stack);return r},getStackCount:function(){return this._getStacks().length},getStackIndex:function(t,e){var i=this._getStacks(t),n=void 0!==e?i.indexOf(e):-1;return-1===n?i.length-1:n},getRuler:function(){var t,e,i=this._getIndexScale(),n=this.getStackCount(),a=this.index,o=i.isHorizontal(),r=o?i.left:i.top,s=r+(o?i.width:i.height),l=[];for(t=0,e=this.getMeta().data.length;t<e;++t)l.push(i.getPixelForValue(null,t,a));return{min:ut.isNullOrUndef(i.options.barThickness)?function(t,e){var i,n,a,o,r=t.isHorizontal()?t.width:t.height,s=t.getTicks();for(a=1,o=e.length;a<o;++a)r=Math.min(r,Math.abs(e[a]-e[a-1]));for(a=0,o=s.length;a<o;++a)n=t.getPixelForTick(a),r=a>0?Math.min(r,n-i):r,i=n;return r}(i,l):-1,pixels:l,start:r,end:s,stackCount:n,scale:i}},calculateBarValuePixels:function(t,e){var i,n,a,o,r,s,l=this.chart,d=this.getMeta(),u=this._getValueScale(),h=u.isHorizontal(),c=l.data.datasets,f=+u.getRightValue(c[t].data[e]),g=u.options.minBarLength,p=u.options.stacked,m=d.stack,v=0;if(p||void 0===p&&void 0!==m)for(i=0;i<t;++i)(n=l.getDatasetMeta(i)).bar&&n.stack===m&&n.controller._getValueScaleId()===u.id&&l.isDatasetVisible(i)&&(a=+u.getRightValue(c[i].data[e]),(f<0&&a<0||f>=0&&a>0)&&(v+=a));return o=u.getPixelForValue(v),s=(r=u.getPixelForValue(v+f))-o,void 0!==g&&Math.abs(s)<g&&(s=g,r=f>=0&&!h||f<0&&h?o-g:o+g),{size:s,base:o,head:r,center:r+s/2}},calculateBarIndexPixels:function(t,e,i){var n=i.scale.options,a="flex"===n.barThickness?function(t,e,i){var n,a=e.pixels,o=a[t],r=t>0?a[t-1]:null,s=t<a.length-1?a[t+1]:null,l=i.categoryPercentage;return null===r&&(r=o-(null===s?e.end-e.start:s-o)),null===s&&(s=o+o-r),n=o-(o-Math.min(r,s))/2*l,{chunk:Math.abs(s-r)/2*l/e.stackCount,ratio:i.barPercentage,start:n}}(e,i,n):function(t,e,i){var n,a,o=i.barThickness,r=e.stackCount,s=e.pixels[t];return ut.isNullOrUndef(o)?(n=e.min*i.categoryPercentage,a=i.barPercentage):(n=o*r,a=1),{chunk:n/r,ratio:a,start:s-n/2}}(e,i,n),o=this.getStackIndex(t,this.getMeta().stack),r=a.start+a.chunk*o+a.chunk/2,s=Math.min(ut.valueOrDefault(n.maxBarThickness,1/0),a.chunk*a.ratio);return{base:r-s/2,head:r+s/2,center:r,size:s}},draw:function(){var t=this.chart,e=this._getValueScale(),i=this.getMeta().data,n=this.getDataset(),a=i.length,o=0;for(ut.canvas.clipArea(t.ctx,t.chartArea);o<a;++o)isNaN(e.getRightValue(n.data[o]))||i[o].draw();ut.canvas.unclipArea(t.ctx)},_resolveElementOptions:function(t,e){var i,n,a,o=this.chart,r=o.data.datasets[this.index],s=t.custom||{},l=o.options.elements.rectangle,d={},u={chart:o,dataIndex:e,dataset:r,datasetIndex:this.index},h=["backgroundColor","borderColor","borderSkipped","borderWidth"];for(i=0,n=h.length;i<n;++i)d[a=h[i]]=qt([s[a],r[a],l[a]],u,e);return d}}),Ut=ut.valueOrDefault,Xt=ut.options.resolve;st._set("bubble",{hover:{mode:"single"},scales:{xAxes:[{type:"linear",position:"bottom",id:"x-axis-0"}],yAxes:[{type:"linear",position:"left",id:"y-axis-0"}]},tooltips:{callbacks:{title:function(){return""},label:function(t,e){var i=e.datasets[t.datasetIndex].label||"",n=e.datasets[t.datasetIndex].data[t.index];return i+": ("+t.xLabel+", "+t.yLabel+", "+n.r+")"}}}});var Kt=Mt.extend({dataElementType:Wt.Point,update:function(t){var e=this,i=e.getMeta().data;ut.each(i,function(i,n){e.updateElement(i,n,t)})},updateElement:function(t,e,i){var n=this,a=n.getMeta(),o=t.custom||{},r=n.getScaleForId(a.xAxisID),s=n.getScaleForId(a.yAxisID),l=n._resolveElementOptions(t,e),d=n.getDataset().data[e],u=n.index,h=i?r.getPixelForDecimal(.5):r.getPixelForValue("object"==typeof d?d:NaN,e,u),c=i?s.getBasePixel():s.getPixelForValue(d,e,u);t._xScale=r,t._yScale=s,t._options=l,t._datasetIndex=u,t._index=e,t._model={backgroundColor:l.backgroundColor,borderColor:l.borderColor,borderWidth:l.borderWidth,hitRadius:l.hitRadius,pointStyle:l.pointStyle,rotation:l.rotation,radius:i?0:l.radius,skip:o.skip||isNaN(h)||isNaN(c),x:h,y:c},t.pivot()},setHoverStyle:function(t){var e=t._model,i=t._options,n=ut.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=Ut(i.hoverBackgroundColor,n(i.backgroundColor)),e.borderColor=Ut(i.hoverBorderColor,n(i.borderColor)),e.borderWidth=Ut(i.hoverBorderWidth,i.borderWidth),e.radius=i.radius+i.hoverRadius},_resolveElementOptions:function(t,e){var i,n,a,o=this.chart,r=o.data.datasets[this.index],s=t.custom||{},l=o.options.elements.point,d=r.data[e],u={},h={chart:o,dataIndex:e,dataset:r,datasetIndex:this.index},c=["backgroundColor","borderColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","hoverRadius","hitRadius","pointStyle","rotation"];for(i=0,n=c.length;i<n;++i)u[a=c[i]]=Xt([s[a],r[a],l[a]],h,e);return u.radius=Xt([s.radius,d?d.r:void 0,r.radius,l.radius],h,e),u}}),Gt=ut.options.resolve,Zt=ut.valueOrDefault;st._set("doughnut",{animation:{animateRotate:!0,animateScale:!1},hover:{mode:"single"},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var i=t.data,n=i.datasets,a=i.labels;if(n.length)for(var o=0;o<n[0].data.length;++o)e.push('<li><span style="background-color:'+n[0].backgroundColor[o]+'"></span>'),a[o]&&e.push(a[o]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(i,n){var a=t.getDatasetMeta(0),o=e.datasets[0],r=a.data[n],s=r&&r.custom||{},l=t.options.elements.arc;return{text:i,fillStyle:Gt([s.backgroundColor,o.backgroundColor,l.backgroundColor],void 0,n),strokeStyle:Gt([s.borderColor,o.borderColor,l.borderColor],void 0,n),lineWidth:Gt([s.borderWidth,o.borderWidth,l.borderWidth],void 0,n),hidden:isNaN(o.data[n])||a.data[n].hidden,index:n}}):[]}},onClick:function(t,e){var i,n,a,o=e.index,r=this.chart;for(i=0,n=(r.data.datasets||[]).length;i<n;++i)(a=r.getDatasetMeta(i)).data[o]&&(a.data[o].hidden=!a.data[o].hidden);r.update()}},cutoutPercentage:50,rotation:-.5*Math.PI,circumference:2*Math.PI,tooltips:{callbacks:{title:function(){return""},label:function(t,e){var i=e.labels[t.index],n=": "+e.datasets[t.datasetIndex].data[t.index];return ut.isArray(i)?(i=i.slice())[0]+=n:i+=n,i}}}});var $t=Mt.extend({dataElementType:Wt.Arc,linkScales:ut.noop,getRingIndex:function(t){for(var e=0,i=0;i<t;++i)this.chart.isDatasetVisible(i)&&++e;return e},update:function(t){var e,i,n=this,a=n.chart,o=a.chartArea,r=a.options,s=o.right-o.left,l=o.bottom-o.top,d=Math.min(s,l),u={x:0,y:0},h=n.getMeta(),c=h.data,f=r.cutoutPercentage,g=r.circumference,p=n._getRingWeight(n.index);if(g<2*Math.PI){var m=r.rotation%(2*Math.PI),v=(m+=2*Math.PI*(m>=Math.PI?-1:m<-Math.PI?1:0))+g,b={x:Math.cos(m),y:Math.sin(m)},x={x:Math.cos(v),y:Math.sin(v)},y=m<=0&&v>=0||m<=2*Math.PI&&2*Math.PI<=v,k=m<=.5*Math.PI&&.5*Math.PI<=v||m<=2.5*Math.PI&&2.5*Math.PI<=v,w=m<=-Math.PI&&-Math.PI<=v||m<=Math.PI&&Math.PI<=v,M=m<=.5*-Math.PI&&.5*-Math.PI<=v||m<=1.5*Math.PI&&1.5*Math.PI<=v,_=f/100,C={x:w?-1:Math.min(b.x*(b.x<0?1:_),x.x*(x.x<0?1:_)),y:M?-1:Math.min(b.y*(b.y<0?1:_),x.y*(x.y<0?1:_))},S={x:y?1:Math.max(b.x*(b.x>0?1:_),x.x*(x.x>0?1:_)),y:k?1:Math.max(b.y*(b.y>0?1:_),x.y*(x.y>0?1:_))},P={width:.5*(S.x-C.x),height:.5*(S.y-C.y)};d=Math.min(s/P.width,l/P.height),u={x:-.5*(S.x+C.x),y:-.5*(S.y+C.y)}}for(e=0,i=c.length;e<i;++e)c[e]._options=n._resolveElementOptions(c[e],e);for(a.borderWidth=n.getMaxBorderWidth(),a.outerRadius=Math.max((d-a.borderWidth)/2,0),a.innerRadius=Math.max(f?a.outerRadius/100*f:0,0),a.radiusLength=(a.outerRadius-a.innerRadius)/(n._getVisibleDatasetWeightTotal()||1),a.offsetX=u.x*a.outerRadius,a.offsetY=u.y*a.outerRadius,h.total=n.calculateTotal(),n.outerRadius=a.outerRadius-a.radiusLength*n._getRingWeightOffset(n.index),n.innerRadius=Math.max(n.outerRadius-a.radiusLength*p,0),e=0,i=c.length;e<i;++e)n.updateElement(c[e],e,t)},updateElement:function(t,e,i){var n=this,a=n.chart,o=a.chartArea,r=a.options,s=r.animation,l=(o.left+o.right)/2,d=(o.top+o.bottom)/2,u=r.rotation,h=r.rotation,c=n.getDataset(),f=i&&s.animateRotate?0:t.hidden?0:n.calculateCircumference(c.data[e])*(r.circumference/(2*Math.PI)),g=i&&s.animateScale?0:n.innerRadius,p=i&&s.animateScale?0:n.outerRadius,m=t._options||{};ut.extend(t,{_datasetIndex:n.index,_index:e,_model:{backgroundColor:m.backgroundColor,borderColor:m.borderColor,borderWidth:m.borderWidth,borderAlign:m.borderAlign,x:l+a.offsetX,y:d+a.offsetY,startAngle:u,endAngle:h,circumference:f,outerRadius:p,innerRadius:g,label:ut.valueAtIndexOrDefault(c.label,e,a.data.labels[e])}});var v=t._model;i&&s.animateRotate||(v.startAngle=0===e?r.rotation:n.getMeta().data[e-1]._model.endAngle,v.endAngle=v.startAngle+v.circumference),t.pivot()},calculateTotal:function(){var t,e=this.getDataset(),i=this.getMeta(),n=0;return ut.each(i.data,function(i,a){t=e.data[a],isNaN(t)||i.hidden||(n+=Math.abs(t))}),n},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?2*Math.PI*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){var e,i,n,a,o,r,s,l,d=0,u=this.chart;if(!t)for(e=0,i=u.data.datasets.length;e<i;++e)if(u.isDatasetVisible(e)){t=(n=u.getDatasetMeta(e)).data,e!==this.index&&(o=n.controller);break}if(!t)return 0;for(e=0,i=t.length;e<i;++e)a=t[e],"inner"!==(r=o?o._resolveElementOptions(a,e):a._options).borderAlign&&(s=r.borderWidth,d=(l=r.hoverBorderWidth)>(d=s>d?s:d)?l:d);return d},setHoverStyle:function(t){var e=t._model,i=t._options,n=ut.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=Zt(i.hoverBackgroundColor,n(i.backgroundColor)),e.borderColor=Zt(i.hoverBorderColor,n(i.borderColor)),e.borderWidth=Zt(i.hoverBorderWidth,i.borderWidth)},_resolveElementOptions:function(t,e){var i,n,a,o=this.chart,r=this.getDataset(),s=t.custom||{},l=o.options.elements.arc,d={},u={chart:o,dataIndex:e,dataset:r,datasetIndex:this.index},h=["backgroundColor","borderColor","borderWidth","borderAlign","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth"];for(i=0,n=h.length;i<n;++i)d[a=h[i]]=Gt([s[a],r[a],l[a]],u,e);return d},_getRingWeightOffset:function(t){for(var e=0,i=0;i<t;++i)this.chart.isDatasetVisible(i)&&(e+=this._getRingWeight(i));return e},_getRingWeight:function(t){return Math.max(Zt(this.chart.data.datasets[t].weight,1),0)},_getVisibleDatasetWeightTotal:function(){return this._getRingWeightOffset(this.chart.data.datasets.length)}});st._set("horizontalBar",{hover:{mode:"index",axis:"y"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{type:"category",position:"left",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{mode:"index",axis:"y"}});var Jt=Yt.extend({_getValueScaleId:function(){return this.getMeta().xAxisID},_getIndexScaleId:function(){return this.getMeta().yAxisID}}),Qt=ut.valueOrDefault,te=ut.options.resolve,ee=ut.canvas._isPointInArea;function ie(t,e){return Qt(t.showLine,e.showLines)}st._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}});var ne=Mt.extend({datasetElementType:Wt.Line,dataElementType:Wt.Point,update:function(t){var e,i,n=this,a=n.getMeta(),o=a.dataset,r=a.data||[],s=n.getScaleForId(a.yAxisID),l=n.getDataset(),d=ie(l,n.chart.options);for(d&&(void 0!==l.tension&&void 0===l.lineTension&&(l.lineTension=l.tension),o._scale=s,o._datasetIndex=n.index,o._children=r,o._model=n._resolveLineOptions(o),o.pivot()),e=0,i=r.length;e<i;++e)n.updateElement(r[e],e,t);for(d&&0!==o._model.tension&&n.updateBezierControlPoints(),e=0,i=r.length;e<i;++e)r[e].pivot()},updateElement:function(t,e,i){var n,a,o=this,r=o.getMeta(),s=t.custom||{},l=o.getDataset(),d=o.index,u=l.data[e],h=o.getScaleForId(r.yAxisID),c=o.getScaleForId(r.xAxisID),f=r.dataset._model,g=o._resolvePointOptions(t,e);n=c.getPixelForValue("object"==typeof u?u:NaN,e,d),a=i?h.getBasePixel():o.calculatePointY(u,e,d),t._xScale=c,t._yScale=h,t._options=g,t._datasetIndex=d,t._index=e,t._model={x:n,y:a,skip:s.skip||isNaN(n)||isNaN(a),radius:g.radius,pointStyle:g.pointStyle,rotation:g.rotation,backgroundColor:g.backgroundColor,borderColor:g.borderColor,borderWidth:g.borderWidth,tension:Qt(s.tension,f?f.tension:0),steppedLine:!!f&&f.steppedLine,hitRadius:g.hitRadius}},_resolvePointOptions:function(t,e){var i,n,a,o=this.chart,r=o.data.datasets[this.index],s=t.custom||{},l=o.options.elements.point,d={},u={chart:o,dataIndex:e,dataset:r,datasetIndex:this.index},h={backgroundColor:"pointBackgroundColor",borderColor:"pointBorderColor",borderWidth:"pointBorderWidth",hitRadius:"pointHitRadius",hoverBackgroundColor:"pointHoverBackgroundColor",hoverBorderColor:"pointHoverBorderColor",hoverBorderWidth:"pointHoverBorderWidth",hoverRadius:"pointHoverRadius",pointStyle:"pointStyle",radius:"pointRadius",rotation:"pointRotation"},c=Object.keys(h);for(i=0,n=c.length;i<n;++i)d[a=c[i]]=te([s[a],r[h[a]],r[a],l[a]],u,e);return d},_resolveLineOptions:function(t){var e,i,n,a=this.chart,o=a.data.datasets[this.index],r=t.custom||{},s=a.options,l=s.elements.line,d={},u=["backgroundColor","borderWidth","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","fill","cubicInterpolationMode"];for(e=0,i=u.length;e<i;++e)d[n=u[e]]=te([r[n],o[n],l[n]]);return d.spanGaps=Qt(o.spanGaps,s.spanGaps),d.tension=Qt(o.lineTension,l.tension),d.steppedLine=te([r.steppedLine,o.steppedLine,l.stepped]),d},calculatePointY:function(t,e,i){var n,a,o,r=this.chart,s=this.getMeta(),l=this.getScaleForId(s.yAxisID),d=0,u=0;if(l.options.stacked){for(n=0;n<i;n++)if(a=r.data.datasets[n],"line"===(o=r.getDatasetMeta(n)).type&&o.yAxisID===l.id&&r.isDatasetVisible(n)){var h=Number(l.getRightValue(a.data[e]));h<0?u+=h||0:d+=h||0}var c=Number(l.getRightValue(t));return c<0?l.getPixelForValue(u+c):l.getPixelForValue(d+c)}return l.getPixelForValue(t)},updateBezierControlPoints:function(){var t,e,i,n,a=this.chart,o=this.getMeta(),r=o.dataset._model,s=a.chartArea,l=o.data||[];function d(t,e,i){return Math.max(Math.min(t,i),e)}if(r.spanGaps&&(l=l.filter(function(t){return!t._model.skip})),"monotone"===r.cubicInterpolationMode)ut.splineCurveMonotone(l);else for(t=0,e=l.length;t<e;++t)i=l[t]._model,n=ut.splineCurve(ut.previousItem(l,t)._model,i,ut.nextItem(l,t)._model,r.tension),i.controlPointPreviousX=n.previous.x,i.controlPointPreviousY=n.previous.y,i.controlPointNextX=n.next.x,i.controlPointNextY=n.next.y;if(a.options.elements.line.capBezierPoints)for(t=0,e=l.length;t<e;++t)i=l[t]._model,ee(i,s)&&(t>0&&ee(l[t-1]._model,s)&&(i.controlPointPreviousX=d(i.controlPointPreviousX,s.left,s.right),i.controlPointPreviousY=d(i.controlPointPreviousY,s.top,s.bottom)),t<l.length-1&&ee(l[t+1]._model,s)&&(i.controlPointNextX=d(i.controlPointNextX,s.left,s.right),i.controlPointNextY=d(i.controlPointNextY,s.top,s.bottom)))},draw:function(){var t,e=this.chart,i=this.getMeta(),n=i.data||[],a=e.chartArea,o=n.length,r=0;for(ie(this.getDataset(),e.options)&&(t=(i.dataset._model.borderWidth||0)/2,ut.canvas.clipArea(e.ctx,{left:a.left,right:a.right,top:a.top-t,bottom:a.bottom+t}),i.dataset.draw(),ut.canvas.unclipArea(e.ctx));r<o;++r)n[r].draw(a)},setHoverStyle:function(t){var e=t._model,i=t._options,n=ut.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=Qt(i.hoverBackgroundColor,n(i.backgroundColor)),e.borderColor=Qt(i.hoverBorderColor,n(i.borderColor)),e.borderWidth=Qt(i.hoverBorderWidth,i.borderWidth),e.radius=Qt(i.hoverRadius,i.radius)}}),ae=ut.options.resolve;st._set("polarArea",{scale:{type:"radialLinear",angleLines:{display:!1},gridLines:{circular:!0},pointLabels:{display:!1},ticks:{beginAtZero:!0}},animation:{animateRotate:!0,animateScale:!0},startAngle:-.5*Math.PI,legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var i=t.data,n=i.datasets,a=i.labels;if(n.length)for(var o=0;o<n[0].data.length;++o)e.push('<li><span style="background-color:'+n[0].backgroundColor[o]+'"></span>'),a[o]&&e.push(a[o]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(i,n){var a=t.getDatasetMeta(0),o=e.datasets[0],r=a.data[n].custom||{},s=t.options.elements.arc;return{text:i,fillStyle:ae([r.backgroundColor,o.backgroundColor,s.backgroundColor],void 0,n),strokeStyle:ae([r.borderColor,o.borderColor,s.borderColor],void 0,n),lineWidth:ae([r.borderWidth,o.borderWidth,s.borderWidth],void 0,n),hidden:isNaN(o.data[n])||a.data[n].hidden,index:n}}):[]}},onClick:function(t,e){var i,n,a,o=e.index,r=this.chart;for(i=0,n=(r.data.datasets||[]).length;i<n;++i)(a=r.getDatasetMeta(i)).data[o].hidden=!a.data[o].hidden;r.update()}},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+t.yLabel}}}});var oe=Mt.extend({dataElementType:Wt.Arc,linkScales:ut.noop,update:function(t){var e,i,n,a=this,o=a.getDataset(),r=a.getMeta(),s=a.chart.options.startAngle||0,l=a._starts=[],d=a._angles=[],u=r.data;for(a._updateRadius(),r.count=a.countVisibleElements(),e=0,i=o.data.length;e<i;e++)l[e]=s,n=a._computeAngle(e),d[e]=n,s+=n;for(e=0,i=u.length;e<i;++e)u[e]._options=a._resolveElementOptions(u[e],e),a.updateElement(u[e],e,t)},_updateRadius:function(){var t=this,e=t.chart,i=e.chartArea,n=e.options,a=Math.min(i.right-i.left,i.bottom-i.top);e.outerRadius=Math.max(a/2,0),e.innerRadius=Math.max(n.cutoutPercentage?e.outerRadius/100*n.cutoutPercentage:1,0),e.radiusLength=(e.outerRadius-e.innerRadius)/e.getVisibleDatasetCount(),t.outerRadius=e.outerRadius-e.radiusLength*t.index,t.innerRadius=t.outerRadius-e.radiusLength},updateElement:function(t,e,i){var n=this,a=n.chart,o=n.getDataset(),r=a.options,s=r.animation,l=a.scale,d=a.data.labels,u=l.xCenter,h=l.yCenter,c=r.startAngle,f=t.hidden?0:l.getDistanceFromCenterForValue(o.data[e]),g=n._starts[e],p=g+(t.hidden?0:n._angles[e]),m=s.animateScale?0:l.getDistanceFromCenterForValue(o.data[e]),v=t._options||{};ut.extend(t,{_datasetIndex:n.index,_index:e,_scale:l,_model:{backgroundColor:v.backgroundColor,borderColor:v.borderColor,borderWidth:v.borderWidth,borderAlign:v.borderAlign,x:u,y:h,innerRadius:0,outerRadius:i?m:f,startAngle:i&&s.animateRotate?c:g,endAngle:i&&s.animateRotate?c:p,label:ut.valueAtIndexOrDefault(d,e,d[e])}}),t.pivot()},countVisibleElements:function(){var t=this.getDataset(),e=this.getMeta(),i=0;return ut.each(e.data,function(e,n){isNaN(t.data[n])||e.hidden||i++}),i},setHoverStyle:function(t){var e=t._model,i=t._options,n=ut.getHoverColor,a=ut.valueOrDefault;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=a(i.hoverBackgroundColor,n(i.backgroundColor)),e.borderColor=a(i.hoverBorderColor,n(i.borderColor)),e.borderWidth=a(i.hoverBorderWidth,i.borderWidth)},_resolveElementOptions:function(t,e){var i,n,a,o=this.chart,r=this.getDataset(),s=t.custom||{},l=o.options.elements.arc,d={},u={chart:o,dataIndex:e,dataset:r,datasetIndex:this.index},h=["backgroundColor","borderColor","borderWidth","borderAlign","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth"];for(i=0,n=h.length;i<n;++i)d[a=h[i]]=ae([s[a],r[a],l[a]],u,e);return d},_computeAngle:function(t){var e=this,i=this.getMeta().count,n=e.getDataset(),a=e.getMeta();if(isNaN(n.data[t])||a.data[t].hidden)return 0;var o={chart:e.chart,dataIndex:t,dataset:n,datasetIndex:e.index};return ae([e.chart.options.elements.arc.angle,2*Math.PI/i],o,t)}});st._set("pie",ut.clone(st.doughnut)),st._set("pie",{cutoutPercentage:0});var re=$t,se=ut.valueOrDefault,le=ut.options.resolve;st._set("radar",{scale:{type:"radialLinear"},elements:{line:{tension:0}}});var de=Mt.extend({datasetElementType:Wt.Line,dataElementType:Wt.Point,linkScales:ut.noop,update:function(t){var e,i,n=this,a=n.getMeta(),o=a.dataset,r=a.data||[],s=n.chart.scale,l=n.getDataset();for(void 0!==l.tension&&void 0===l.lineTension&&(l.lineTension=l.tension),o._scale=s,o._datasetIndex=n.index,o._children=r,o._loop=!0,o._model=n._resolveLineOptions(o),o.pivot(),e=0,i=r.length;e<i;++e)n.updateElement(r[e],e,t);for(n.updateBezierControlPoints(),e=0,i=r.length;e<i;++e)r[e].pivot()},updateElement:function(t,e,i){var n=this,a=t.custom||{},o=n.getDataset(),r=n.chart.scale,s=r.getPointPositionForValue(e,o.data[e]),l=n._resolvePointOptions(t,e),d=n.getMeta().dataset._model,u=i?r.xCenter:s.x,h=i?r.yCenter:s.y;t._scale=r,t._options=l,t._datasetIndex=n.index,t._index=e,t._model={x:u,y:h,skip:a.skip||isNaN(u)||isNaN(h),radius:l.radius,pointStyle:l.pointStyle,rotation:l.rotation,backgroundColor:l.backgroundColor,borderColor:l.borderColor,borderWidth:l.borderWidth,tension:se(a.tension,d?d.tension:0),hitRadius:l.hitRadius}},_resolvePointOptions:function(t,e){var i,n,a,o=this.chart,r=o.data.datasets[this.index],s=t.custom||{},l=o.options.elements.point,d={},u={chart:o,dataIndex:e,dataset:r,datasetIndex:this.index},h={backgroundColor:"pointBackgroundColor",borderColor:"pointBorderColor",borderWidth:"pointBorderWidth",hitRadius:"pointHitRadius",hoverBackgroundColor:"pointHoverBackgroundColor",hoverBorderColor:"pointHoverBorderColor",hoverBorderWidth:"pointHoverBorderWidth",hoverRadius:"pointHoverRadius",pointStyle:"pointStyle",radius:"pointRadius",rotation:"pointRotation"},c=Object.keys(h);for(i=0,n=c.length;i<n;++i)d[a=c[i]]=le([s[a],r[h[a]],r[a],l[a]],u,e);return d},_resolveLineOptions:function(t){var e,i,n,a=this.chart,o=a.data.datasets[this.index],r=t.custom||{},s=a.options.elements.line,l={},d=["backgroundColor","borderWidth","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","fill"];for(e=0,i=d.length;e<i;++e)l[n=d[e]]=le([r[n],o[n],s[n]]);return l.tension=se(o.lineTension,s.tension),l},updateBezierControlPoints:function(){var t,e,i,n,a=this.getMeta(),o=this.chart.chartArea,r=a.data||[];function s(t,e,i){return Math.max(Math.min(t,i),e)}for(t=0,e=r.length;t<e;++t)i=r[t]._model,n=ut.splineCurve(ut.previousItem(r,t,!0)._model,i,ut.nextItem(r,t,!0)._model,i.tension),i.controlPointPreviousX=s(n.previous.x,o.left,o.right),i.controlPointPreviousY=s(n.previous.y,o.top,o.bottom),i.controlPointNextX=s(n.next.x,o.left,o.right),i.controlPointNextY=s(n.next.y,o.top,o.bottom)},setHoverStyle:function(t){var e=t._model,i=t._options,n=ut.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth,radius:e.radius},e.backgroundColor=se(i.hoverBackgroundColor,n(i.backgroundColor)),e.borderColor=se(i.hoverBorderColor,n(i.borderColor)),e.borderWidth=se(i.hoverBorderWidth,i.borderWidth),e.radius=se(i.hoverRadius,i.radius)}});st._set("scatter",{hover:{mode:"single"},scales:{xAxes:[{id:"x-axis-1",type:"linear",position:"bottom"}],yAxes:[{id:"y-axis-1",type:"linear",position:"left"}]},showLines:!1,tooltips:{callbacks:{title:function(){return""},label:function(t){return"("+t.xLabel+", "+t.yLabel+")"}}}});var ue={bar:Yt,bubble:Kt,doughnut:$t,horizontalBar:Jt,line:ne,polarArea:oe,pie:re,radar:de,scatter:ne};function he(t,e){return t.native?{x:t.x,y:t.y}:ut.getRelativePosition(t,e)}function ce(t,e){var i,n,a,o,r;for(n=0,o=t.data.datasets.length;n<o;++n)if(t.isDatasetVisible(n))for(a=0,r=(i=t.getDatasetMeta(n)).data.length;a<r;++a){var s=i.data[a];s._view.skip||e(s)}}function fe(t,e){var i=[];return ce(t,function(t){t.inRange(e.x,e.y)&&i.push(t)}),i}function ge(t,e,i,n){var a=Number.POSITIVE_INFINITY,o=[];return ce(t,function(t){if(!i||t.inRange(e.x,e.y)){var r=t.getCenterPoint(),s=n(e,r);s<a?(o=[t],a=s):s===a&&o.push(t)}}),o}function pe(t){var e=-1!==t.indexOf("x"),i=-1!==t.indexOf("y");return function(t,n){var a=e?Math.abs(t.x-n.x):0,o=i?Math.abs(t.y-n.y):0;return Math.sqrt(Math.pow(a,2)+Math.pow(o,2))}}function me(t,e,i){var n=he(e,t);i.axis=i.axis||"x";var a=pe(i.axis),o=i.intersect?fe(t,n):ge(t,n,!1,a),r=[];return o.length?(t.data.datasets.forEach(function(e,i){if(t.isDatasetVisible(i)){var n=t.getDatasetMeta(i).data[o[0]._index];n&&!n._view.skip&&r.push(n)}}),r):[]}var ve={modes:{single:function(t,e){var i=he(e,t),n=[];return ce(t,function(t){if(t.inRange(i.x,i.y))return n.push(t),n}),n.slice(0,1)},label:me,index:me,dataset:function(t,e,i){var n=he(e,t);i.axis=i.axis||"xy";var a=pe(i.axis),o=i.intersect?fe(t,n):ge(t,n,!1,a);return o.length>0&&(o=t.getDatasetMeta(o[0]._datasetIndex).data),o},"x-axis":function(t,e){return me(t,e,{intersect:!1})},point:function(t,e){return fe(t,he(e,t))},nearest:function(t,e,i){var n=he(e,t);i.axis=i.axis||"xy";var a=pe(i.axis);return ge(t,n,i.intersect,a)},x:function(t,e,i){var n=he(e,t),a=[],o=!1;return ce(t,function(t){t.inXRange(n.x)&&a.push(t),t.inRange(n.x,n.y)&&(o=!0)}),i.intersect&&!o&&(a=[]),a},y:function(t,e,i){var n=he(e,t),a=[],o=!1;return ce(t,function(t){t.inYRange(n.y)&&a.push(t),t.inRange(n.x,n.y)&&(o=!0)}),i.intersect&&!o&&(a=[]),a}}};function be(t,e){return ut.where(t,function(t){return t.position===e})}function xe(t,e){t.forEach(function(t,e){return t._tmpIndex_=e,t}),t.sort(function(t,i){var n=e?i:t,a=e?t:i;return n.weight===a.weight?n._tmpIndex_-a._tmpIndex_:n.weight-a.weight}),t.forEach(function(t){delete t._tmpIndex_})}function ye(t,e){ut.each(t,function(t){e[t.position]+=t.isHorizontal()?t.height:t.width})}st._set("global",{layout:{padding:{top:0,right:0,bottom:0,left:0}}});var ke={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),e.fullWidth=e.fullWidth||!1,e.position=e.position||"top",e.weight=e.weight||0,t.boxes.push(e)},removeBox:function(t,e){var i=t.boxes?t.boxes.indexOf(e):-1;-1!==i&&t.boxes.splice(i,1)},configure:function(t,e,i){for(var n,a=["fullWidth","position","weight"],o=a.length,r=0;r<o;++r)n=a[r],i.hasOwnProperty(n)&&(e[n]=i[n])},update:function(t,e,i){if(t){var n=t.options.layout||{},a=ut.options.toPadding(n.padding),o=a.left,r=a.right,s=a.top,l=a.bottom,d=be(t.boxes,"left"),u=be(t.boxes,"right"),h=be(t.boxes,"top"),c=be(t.boxes,"bottom"),f=be(t.boxes,"chartArea");xe(d,!0),xe(u,!1),xe(h,!0),xe(c,!1);var g,p=d.concat(u),m=h.concat(c),v=p.concat(m),b=e-o-r,x=i-s-l,y=(e-b/2)/p.length,k=b,w=x,M={top:s,left:o,bottom:l,right:r},_=[];ut.each(v,function(t){var e,i=t.isHorizontal();i?(e=t.update(t.fullWidth?b:k,x/2),w-=e.height):(e=t.update(y,w),k-=e.width),_.push({horizontal:i,width:e.width,box:t})}),g=function(t){var e=0,i=0,n=0,a=0;return ut.each(t,function(t){if(t.getPadding){var o=t.getPadding();e=Math.max(e,o.top),i=Math.max(i,o.left),n=Math.max(n,o.bottom),a=Math.max(a,o.right)}}),{top:e,left:i,bottom:n,right:a}}(v),ut.each(p,T),ye(p,M),ut.each(m,T),ye(m,M),ut.each(p,function(t){var e=ut.findNextWhere(_,function(e){return e.box===t}),i={left:0,right:0,top:M.top,bottom:M.bottom};e&&t.update(e.width,w,i)}),ye(v,M={top:s,left:o,bottom:l,right:r});var C=Math.max(g.left-M.left,0);M.left+=C,M.right+=Math.max(g.right-M.right,0);var S=Math.max(g.top-M.top,0);M.top+=S,M.bottom+=Math.max(g.bottom-M.bottom,0);var P=i-M.top-M.bottom,I=e-M.left-M.right;I===k&&P===w||(ut.each(p,function(t){t.height=P}),ut.each(m,function(t){t.fullWidth||(t.width=I)}),w=P,k=I);var A=o+C,D=s+S;ut.each(d.concat(h),F),A+=k,D+=w,ut.each(u,F),ut.each(c,F),t.chartArea={left:M.left,top:M.top,right:M.left+k,bottom:M.top+w},ut.each(f,function(e){e.left=t.chartArea.left,e.top=t.chartArea.top,e.right=t.chartArea.right,e.bottom=t.chartArea.bottom,e.update(k,w)})}function T(t){var e=ut.findNextWhere(_,function(e){return e.box===t});if(e)if(e.horizontal){var i={left:Math.max(M.left,g.left),right:Math.max(M.right,g.right),top:0,bottom:0};t.update(t.fullWidth?b:k,x/2,i)}else t.update(e.width,w)}function F(t){t.isHorizontal()?(t.left=t.fullWidth?o:M.left,t.right=t.fullWidth?e-r:M.left+k,t.top=D,t.bottom=D+t.height,D=t.bottom):(t.left=A,t.right=A+t.width,t.top=M.top,t.bottom=M.top+w,A=t.right)}}};var we,Me=(we=Object.freeze({default:"@keyframes chartjs-render-animation{from{opacity:.99}to{opacity:1}}.chartjs-render-monitor{animation:chartjs-render-animation 1ms}.chartjs-size-monitor,.chartjs-size-monitor-expand,.chartjs-size-monitor-shrink{position:absolute;direction:ltr;left:0;top:0;right:0;bottom:0;overflow:hidden;pointer-events:none;visibility:hidden;z-index:-1}.chartjs-size-monitor-expand>div{position:absolute;width:1000000px;height:1000000px;left:0;top:0}.chartjs-size-monitor-shrink>div{position:absolute;width:200%;height:200%;left:0;top:0}"}))&&we.default||we,_e="$chartjs",Ce="chartjs-size-monitor",Se="chartjs-render-monitor",Pe="chartjs-render-animation",Ie=["animationstart","webkitAnimationStart"],Ae={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function De(t,e){var i=ut.getStyle(t,e),n=i&&i.match(/^(\d+)(\.\d+)?px$/);return n?Number(n[1]):void 0}var Te=!!function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("e",null,e)}catch(t){}return t}()&&{passive:!0};function Fe(t,e,i){t.addEventListener(e,i,Te)}function Le(t,e,i){t.removeEventListener(e,i,Te)}function Re(t,e,i,n,a){return{type:t,chart:e,native:a||null,x:void 0!==i?i:null,y:void 0!==n?n:null}}function Oe(t){var e=document.createElement("div");return e.className=t||"",e}function ze(t,e,i){var n,a,o,r,s=t[_e]||(t[_e]={}),l=s.resizer=function(t){var e=Oe(Ce),i=Oe(Ce+"-expand"),n=Oe(Ce+"-shrink");i.appendChild(Oe()),n.appendChild(Oe()),e.appendChild(i),e.appendChild(n),e._reset=function(){i.scrollLeft=1e6,i.scrollTop=1e6,n.scrollLeft=1e6,n.scrollTop=1e6};var a=function(){e._reset(),t()};return Fe(i,"scroll",a.bind(i,"expand")),Fe(n,"scroll",a.bind(n,"shrink")),e}((n=function(){if(s.resizer){var n=i.options.maintainAspectRatio&&t.parentNode,a=n?n.clientWidth:0;e(Re("resize",i)),n&&n.clientWidth<a&&i.canvas&&e(Re("resize",i))}},o=!1,r=[],function(){r=Array.prototype.slice.call(arguments),a=a||this,o||(o=!0,ut.requestAnimFrame.call(window,function(){o=!1,n.apply(a,r)}))}));!function(t,e){var i=t[_e]||(t[_e]={}),n=i.renderProxy=function(t){t.animationName===Pe&&e()};ut.each(Ie,function(e){Fe(t,e,n)}),i.reflow=!!t.offsetParent,t.classList.add(Se)}(t,function(){if(s.resizer){var e=t.parentNode;e&&e!==l.parentNode&&e.insertBefore(l,e.firstChild),l._reset()}})}function Be(t){var e=t[_e]||{},i=e.resizer;delete e.resizer,function(t){var e=t[_e]||{},i=e.renderProxy;i&&(ut.each(Ie,function(e){Le(t,e,i)}),delete e.renderProxy),t.classList.remove(Se)}(t),i&&i.parentNode&&i.parentNode.removeChild(i)}var Ne={disableCSSInjection:!1,_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,_ensureLoaded:function(){var t,e,i;this._loaded||(this._loaded=!0,this.disableCSSInjection||(e=Me,i=(t=this)._style||document.createElement("style"),t._style||(t._style=i,e="/* Chart.js */\n"+e,i.setAttribute("type","text/css"),document.getElementsByTagName("head")[0].appendChild(i)),i.appendChild(document.createTextNode(e))))},acquireContext:function(t,e){"string"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas);var i=t&&t.getContext&&t.getContext("2d");return this._ensureLoaded(),i&&i.canvas===t?(function(t,e){var i=t.style,n=t.getAttribute("height"),a=t.getAttribute("width");if(t[_e]={initial:{height:n,width:a,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",null===a||""===a){var o=De(t,"width");void 0!==o&&(t.width=o)}if(null===n||""===n)if(""===t.style.height)t.height=t.width/(e.options.aspectRatio||2);else{var r=De(t,"height");void 0!==o&&(t.height=r)}}(t,e),i):null},releaseContext:function(t){var e=t.canvas;if(e[_e]){var i=e[_e].initial;["height","width"].forEach(function(t){var n=i[t];ut.isNullOrUndef(n)?e.removeAttribute(t):e.setAttribute(t,n)}),ut.each(i.style||{},function(t,i){e.style[i]=t}),e.width=e.width,delete e[_e]}},addEventListener:function(t,e,i){var n=t.canvas;if("resize"!==e){var a=i[_e]||(i[_e]={});Fe(n,e,(a.proxies||(a.proxies={}))[t.id+"_"+e]=function(e){i(function(t,e){var i=Ae[t.type]||t.type,n=ut.getRelativePosition(t,e);return Re(i,e,n.x,n.y,t)}(e,t))})}else ze(n,i,t)},removeEventListener:function(t,e,i){var n=t.canvas;if("resize"!==e){var a=((i[_e]||{}).proxies||{})[t.id+"_"+e];a&&Le(n,e,a)}else Be(n)}};ut.addEvent=Fe,ut.removeEvent=Le;var We=Ne._enabled?Ne:{acquireContext:function(t){return t&&t.canvas&&(t=t.canvas),t&&t.getContext("2d")||null}},Ve=ut.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},We);st._set("global",{plugins:{}});var Ee={_plugins:[],_cacheId:0,register:function(t){var e=this._plugins;[].concat(t).forEach(function(t){-1===e.indexOf(t)&&e.push(t)}),this._cacheId++},unregister:function(t){var e=this._plugins;[].concat(t).forEach(function(t){var i=e.indexOf(t);-1!==i&&e.splice(i,1)}),this._cacheId++},clear:function(){this._plugins=[],this._cacheId++},count:function(){return this._plugins.length},getAll:function(){return this._plugins},notify:function(t,e,i){var n,a,o,r,s,l=this.descriptors(t),d=l.length;for(n=0;n<d;++n)if("function"==typeof(s=(o=(a=l[n]).plugin)[e])&&((r=[t].concat(i||[])).push(a.options),!1===s.apply(o,r)))return!1;return!0},descriptors:function(t){var e=t.$plugins||(t.$plugins={});if(e.id===this._cacheId)return e.descriptors;var i=[],n=[],a=t&&t.config||{},o=a.options&&a.options.plugins||{};return this._plugins.concat(a.plugins||[]).forEach(function(t){if(-1===i.indexOf(t)){var e=t.id,a=o[e];!1!==a&&(!0===a&&(a=ut.clone(st.global.plugins[e])),i.push(t),n.push({plugin:t,options:a||{}}))}}),e.descriptors=n,e.id=this._cacheId,n},_invalidate:function(t){delete t.$plugins}},He={constructors:{},defaults:{},registerScaleType:function(t,e,i){this.constructors[t]=e,this.defaults[t]=ut.clone(i)},getScaleConstructor:function(t){return this.constructors.hasOwnProperty(t)?this.constructors[t]:void 0},getScaleDefaults:function(t){return this.defaults.hasOwnProperty(t)?ut.merge({},[st.scale,this.defaults[t]]):{}},updateScaleDefaults:function(t,e){this.defaults.hasOwnProperty(t)&&(this.defaults[t]=ut.extend(this.defaults[t],e))},addScalesToLayout:function(t){ut.each(t.scales,function(e){e.fullWidth=e.options.fullWidth,e.position=e.options.position,e.weight=e.options.weight,ke.addBox(t,e)})}},je=ut.valueOrDefault;st._set("global",{tooltips:{enabled:!0,custom:null,mode:"nearest",position:"average",intersect:!0,backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretPadding:2,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",displayColors:!0,borderColor:"rgba(0,0,0,0)",borderWidth:0,callbacks:{beforeTitle:ut.noop,title:function(t,e){var i="",n=e.labels,a=n?n.length:0;if(t.length>0){var o=t[0];o.label?i=o.label:o.xLabel?i=o.xLabel:a>0&&o.index<a&&(i=n[o.index])}return i},afterTitle:ut.noop,beforeBody:ut.noop,beforeLabel:ut.noop,label:function(t,e){var i=e.datasets[t.datasetIndex].label||"";return i&&(i+=": "),ut.isNullOrUndef(t.value)?i+=t.yLabel:i+=t.value,i},labelColor:function(t,e){var i=e.getDatasetMeta(t.datasetIndex).data[t.index]._view;return{borderColor:i.borderColor,backgroundColor:i.backgroundColor}},labelTextColor:function(){return this._options.bodyFontColor},afterLabel:ut.noop,afterBody:ut.noop,beforeFooter:ut.noop,footer:ut.noop,afterFooter:ut.noop}}});var qe={average:function(t){if(!t.length)return!1;var e,i,n=0,a=0,o=0;for(e=0,i=t.length;e<i;++e){var r=t[e];if(r&&r.hasValue()){var s=r.tooltipPosition();n+=s.x,a+=s.y,++o}}return{x:n/o,y:a/o}},nearest:function(t,e){var i,n,a,o=e.x,r=e.y,s=Number.POSITIVE_INFINITY;for(i=0,n=t.length;i<n;++i){var l=t[i];if(l&&l.hasValue()){var d=l.getCenterPoint(),u=ut.distanceBetweenPoints(e,d);u<s&&(s=u,a=l)}}if(a){var h=a.tooltipPosition();o=h.x,r=h.y}return{x:o,y:r}}};function Ye(t,e){return e&&(ut.isArray(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function Ue(t){return("string"==typeof t||t instanceof String)&&t.indexOf("\n")>-1?t.split("\n"):t}function Xe(t){var e=st.global;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,bodyFontColor:t.bodyFontColor,_bodyFontFamily:je(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:je(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:je(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:je(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:je(t.titleFontStyle,e.defaultFontStyle),titleFontSize:je(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:je(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:je(t.footerFontStyle,e.defaultFontStyle),footerFontSize:je(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}function Ke(t,e){return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-t.xPadding:t.x+t.xPadding}function Ge(t){return Ye([],Ue(t))}var Ze=pt.extend({initialize:function(){this._model=Xe(this._options),this._lastActive=[]},getTitle:function(){var t=this._options.callbacks,e=t.beforeTitle.apply(this,arguments),i=t.title.apply(this,arguments),n=t.afterTitle.apply(this,arguments),a=[];return a=Ye(a,Ue(e)),a=Ye(a,Ue(i)),a=Ye(a,Ue(n))},getBeforeBody:function(){return Ge(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(t,e){var i=this,n=i._options.callbacks,a=[];return ut.each(t,function(t){var o={before:[],lines:[],after:[]};Ye(o.before,Ue(n.beforeLabel.call(i,t,e))),Ye(o.lines,n.label.call(i,t,e)),Ye(o.after,Ue(n.afterLabel.call(i,t,e))),a.push(o)}),a},getAfterBody:function(){return Ge(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var t=this._options.callbacks,e=t.beforeFooter.apply(this,arguments),i=t.footer.apply(this,arguments),n=t.afterFooter.apply(this,arguments),a=[];return a=Ye(a,Ue(e)),a=Ye(a,Ue(i)),a=Ye(a,Ue(n))},update:function(t){var e,i,n,a,o,r,s,l,d,u,h=this,c=h._options,f=h._model,g=h._model=Xe(c),p=h._active,m=h._data,v={xAlign:f.xAlign,yAlign:f.yAlign},b={x:f.x,y:f.y},x={width:f.width,height:f.height},y={x:f.caretX,y:f.caretY};if(p.length){g.opacity=1;var k=[],w=[];y=qe[c.position].call(h,p,h._eventPosition);var M=[];for(e=0,i=p.length;e<i;++e)M.push((n=p[e],a=void 0,o=void 0,r=void 0,s=void 0,l=void 0,d=void 0,u=void 0,a=n._xScale,o=n._yScale||n._scale,r=n._index,s=n._datasetIndex,l=n._chart.getDatasetMeta(s).controller,d=l._getIndexScale(),u=l._getValueScale(),{xLabel:a?a.getLabelForIndex(r,s):"",yLabel:o?o.getLabelForIndex(r,s):"",label:d?""+d.getLabelForIndex(r,s):"",value:u?""+u.getLabelForIndex(r,s):"",index:r,datasetIndex:s,x:n._model.x,y:n._model.y}));c.filter&&(M=M.filter(function(t){return c.filter(t,m)})),c.itemSort&&(M=M.sort(function(t,e){return c.itemSort(t,e,m)})),ut.each(M,function(t){k.push(c.callbacks.labelColor.call(h,t,h._chart)),w.push(c.callbacks.labelTextColor.call(h,t,h._chart))}),g.title=h.getTitle(M,m),g.beforeBody=h.getBeforeBody(M,m),g.body=h.getBody(M,m),g.afterBody=h.getAfterBody(M,m),g.footer=h.getFooter(M,m),g.x=y.x,g.y=y.y,g.caretPadding=c.caretPadding,g.labelColors=k,g.labelTextColors=w,g.dataPoints=M,x=function(t,e){var i=t._chart.ctx,n=2*e.yPadding,a=0,o=e.body,r=o.reduce(function(t,e){return t+e.before.length+e.lines.length+e.after.length},0);r+=e.beforeBody.length+e.afterBody.length;var s=e.title.length,l=e.footer.length,d=e.titleFontSize,u=e.bodyFontSize,h=e.footerFontSize;n+=s*d,n+=s?(s-1)*e.titleSpacing:0,n+=s?e.titleMarginBottom:0,n+=r*u,n+=r?(r-1)*e.bodySpacing:0,n+=l?e.footerMarginTop:0,n+=l*h,n+=l?(l-1)*e.footerSpacing:0;var c=0,f=function(t){a=Math.max(a,i.measureText(t).width+c)};return i.font=ut.fontString(d,e._titleFontStyle,e._titleFontFamily),ut.each(e.title,f),i.font=ut.fontString(u,e._bodyFontStyle,e._bodyFontFamily),ut.each(e.beforeBody.concat(e.afterBody),f),c=e.displayColors?u+2:0,ut.each(o,function(t){ut.each(t.before,f),ut.each(t.lines,f),ut.each(t.after,f)}),c=0,i.font=ut.fontString(h,e._footerFontStyle,e._footerFontFamily),ut.each(e.footer,f),{width:a+=2*e.xPadding,height:n}}(this,g),b=function(t,e,i,n){var a=t.x,o=t.y,r=t.caretSize,s=t.caretPadding,l=t.cornerRadius,d=i.xAlign,u=i.yAlign,h=r+s,c=l+s;return"right"===d?a-=e.width:"center"===d&&((a-=e.width/2)+e.width>n.width&&(a=n.width-e.width),a<0&&(a=0)),"top"===u?o+=h:o-="bottom"===u?e.height+h:e.height/2,"center"===u?"left"===d?a+=h:"right"===d&&(a-=h):"left"===d?a-=c:"right"===d&&(a+=c),{x:a,y:o}}(g,x,v=function(t,e){var i,n,a,o,r,s=t._model,l=t._chart,d=t._chart.chartArea,u="center",h="center";s.y<e.height?h="top":s.y>l.height-e.height&&(h="bottom");var c=(d.left+d.right)/2,f=(d.top+d.bottom)/2;"center"===h?(i=function(t){return t<=c},n=function(t){return t>c}):(i=function(t){return t<=e.width/2},n=function(t){return t>=l.width-e.width/2}),a=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},o=function(t){return t-e.width-s.caretSize-s.caretPadding<0},r=function(t){return t<=f?"top":"bottom"},i(s.x)?(u="left",a(s.x)&&(u="center",h=r(s.y))):n(s.x)&&(u="right",o(s.x)&&(u="center",h=r(s.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:u,yAlign:g.yAlign?g.yAlign:h}}(this,x),h._chart)}else g.opacity=0;return g.xAlign=v.xAlign,g.yAlign=v.yAlign,g.x=b.x,g.y=b.y,g.width=x.width,g.height=x.height,g.caretX=y.x,g.caretY=y.y,h._model=g,t&&c.custom&&c.custom.call(h,g),h},drawCaret:function(t,e){var i=this._chart.ctx,n=this._view,a=this.getCaretPosition(t,e,n);i.lineTo(a.x1,a.y1),i.lineTo(a.x2,a.y2),i.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,i){var n,a,o,r,s,l,d=i.caretSize,u=i.cornerRadius,h=i.xAlign,c=i.yAlign,f=t.x,g=t.y,p=e.width,m=e.height;if("center"===c)s=g+m/2,"left"===h?(a=(n=f)-d,o=n,r=s+d,l=s-d):(a=(n=f+p)+d,o=n,r=s-d,l=s+d);else if("left"===h?(n=(a=f+u+d)-d,o=a+d):"right"===h?(n=(a=f+p-u-d)-d,o=a+d):(n=(a=i.caretX)-d,o=a+d),"top"===c)s=(r=g)-d,l=r;else{s=(r=g+m)+d,l=r;var v=o;o=n,n=v}return{x1:n,x2:a,x3:o,y1:r,y2:s,y3:l}},drawTitle:function(t,e,i){var n=e.title;if(n.length){t.x=Ke(e,e._titleAlign),i.textAlign=e._titleAlign,i.textBaseline="top";var a,o,r=e.titleFontSize,s=e.titleSpacing;for(i.fillStyle=e.titleFontColor,i.font=ut.fontString(r,e._titleFontStyle,e._titleFontFamily),a=0,o=n.length;a<o;++a)i.fillText(n[a],t.x,t.y),t.y+=r+s,a+1===n.length&&(t.y+=e.titleMarginBottom-s)}},drawBody:function(t,e,i){var n,a=e.bodyFontSize,o=e.bodySpacing,r=e._bodyAlign,s=e.body,l=e.displayColors,d=e.labelColors,u=0,h=l?Ke(e,"left"):0;i.textAlign=r,i.textBaseline="top",i.font=ut.fontString(a,e._bodyFontStyle,e._bodyFontFamily),t.x=Ke(e,r);var c=function(e){i.fillText(e,t.x+u,t.y),t.y+=a+o};i.fillStyle=e.bodyFontColor,ut.each(e.beforeBody,c),u=l&&"right"!==r?"center"===r?a/2+1:a+2:0,ut.each(s,function(o,r){n=e.labelTextColors[r],i.fillStyle=n,ut.each(o.before,c),ut.each(o.lines,function(o){l&&(i.fillStyle=e.legendColorBackground,i.fillRect(h,t.y,a,a),i.lineWidth=1,i.strokeStyle=d[r].borderColor,i.strokeRect(h,t.y,a,a),i.fillStyle=d[r].backgroundColor,i.fillRect(h+1,t.y+1,a-2,a-2),i.fillStyle=n),c(o)}),ut.each(o.after,c)}),u=0,ut.each(e.afterBody,c),t.y-=o},drawFooter:function(t,e,i){var n=e.footer;n.length&&(t.x=Ke(e,e._footerAlign),t.y+=e.footerMarginTop,i.textAlign=e._footerAlign,i.textBaseline="top",i.fillStyle=e.footerFontColor,i.font=ut.fontString(e.footerFontSize,e._footerFontStyle,e._footerFontFamily),ut.each(n,function(n){i.fillText(n,t.x,t.y),t.y+=e.footerFontSize+e.footerSpacing}))},drawBackground:function(t,e,i,n){i.fillStyle=e.backgroundColor,i.strokeStyle=e.borderColor,i.lineWidth=e.borderWidth;var a=e.xAlign,o=e.yAlign,r=t.x,s=t.y,l=n.width,d=n.height,u=e.cornerRadius;i.beginPath(),i.moveTo(r+u,s),"top"===o&&this.drawCaret(t,n),i.lineTo(r+l-u,s),i.quadraticCurveTo(r+l,s,r+l,s+u),"center"===o&&"right"===a&&this.drawCaret(t,n),i.lineTo(r+l,s+d-u),i.quadraticCurveTo(r+l,s+d,r+l-u,s+d),"bottom"===o&&this.drawCaret(t,n),i.lineTo(r+u,s+d),i.quadraticCurveTo(r,s+d,r,s+d-u),"center"===o&&"left"===a&&this.drawCaret(t,n),i.lineTo(r,s+u),i.quadraticCurveTo(r,s,r+u,s),i.closePath(),i.fill(),e.borderWidth>0&&i.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var i={width:e.width,height:e.height},n={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity,o=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&o&&(t.save(),t.globalAlpha=a,this.drawBackground(n,e,t,i),n.y+=e.yPadding,this.drawTitle(n,e,t),this.drawBody(n,e,t),this.drawFooter(n,e,t),t.restore())}},handleEvent:function(t){var e,i=this,n=i._options;return i._lastActive=i._lastActive||[],"mouseout"===t.type?i._active=[]:i._active=i._chart.getElementsAtEventForMode(t,n.mode,n),(e=!ut.arrayEquals(i._active,i._lastActive))&&(i._lastActive=i._active,(n.enabled||n.custom)&&(i._eventPosition={x:t.x,y:t.y},i.update(!0),i.pivot())),e}}),$e=qe,Je=Ze;Je.positioners=$e;var Qe=ut.valueOrDefault;function ti(){return ut.merge({},[].slice.call(arguments),{merger:function(t,e,i,n){if("xAxes"===t||"yAxes"===t){var a,o,r,s=i[t].length;for(e[t]||(e[t]=[]),a=0;a<s;++a)r=i[t][a],o=Qe(r.type,"xAxes"===t?"category":"linear"),a>=e[t].length&&e[t].push({}),!e[t][a].type||r.type&&r.type!==e[t][a].type?ut.merge(e[t][a],[He.getScaleDefaults(o),r]):ut.merge(e[t][a],r)}else ut._merger(t,e,i,n)}})}function ei(){return ut.merge({},[].slice.call(arguments),{merger:function(t,e,i,n){var a=e[t]||{},o=i[t];"scales"===t?e[t]=ti(a,o):"scale"===t?e[t]=ut.merge(a,[He.getScaleDefaults(o.type),o]):ut._merger(t,e,i,n)}})}function ii(t){return"top"===t||"bottom"===t}st._set("global",{elements:{},events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,maintainAspectRatio:!0,responsive:!0,responsiveAnimationDuration:0});var ni=function(t,e){return this.construct(t,e),this};ut.extend(ni.prototype,{construct:function(t,e){var i=this;e=function(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=ei(st.global,st[t.type],t.options||{}),t}(e);var n=Ve.acquireContext(t,e),a=n&&n.canvas,o=a&&a.height,r=a&&a.width;i.id=ut.uid(),i.ctx=n,i.canvas=a,i.config=e,i.width=r,i.height=o,i.aspectRatio=o?r/o:null,i.options=e.options,i._bufferedRender=!1,i.chart=i,i.controller=i,ni.instances[i.id]=i,Object.defineProperty(i,"data",{get:function(){return i.config.data},set:function(t){i.config.data=t}}),n&&a?(i.initialize(),i.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return Ee.notify(t,"beforeInit"),ut.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.initToolTip(),Ee.notify(t,"afterInit"),t},clear:function(){return ut.canvas.clear(this),this},stop:function(){return bt.cancelAnimation(this),this},resize:function(t){var e=this,i=e.options,n=e.canvas,a=i.maintainAspectRatio&&e.aspectRatio||null,o=Math.max(0,Math.floor(ut.getMaximumWidth(n))),r=Math.max(0,Math.floor(a?o/a:ut.getMaximumHeight(n)));if((e.width!==o||e.height!==r)&&(n.width=e.width=o,n.height=e.height=r,n.style.width=o+"px",n.style.height=r+"px",ut.retinaScale(e,i.devicePixelRatio),!t)){var s={width:o,height:r};Ee.notify(e,"resize",[s]),i.onResize&&i.onResize(e,s),e.stop(),e.update({duration:i.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},i=t.scale;ut.each(e.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),ut.each(e.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),i&&(i.id=i.id||"scale")},buildOrUpdateScales:function(){var t=this,e=t.options,i=t.scales||{},n=[],a=Object.keys(i).reduce(function(t,e){return t[e]=!1,t},{});e.scales&&(n=n.concat((e.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category",dposition:"bottom"}}),(e.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear",dposition:"left"}}))),e.scale&&n.push({options:e.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),ut.each(n,function(e){var n=e.options,o=n.id,r=Qe(n.type,e.dtype);ii(n.position)!==ii(e.dposition)&&(n.position=e.dposition),a[o]=!0;var s=null;if(o in i&&i[o].type===r)(s=i[o]).options=n,s.ctx=t.ctx,s.chart=t;else{var l=He.getScaleConstructor(r);if(!l)return;s=new l({id:o,type:r,options:n,ctx:t.ctx,chart:t}),i[s.id]=s}s.mergeTicksOptions(),e.isDefault&&(t.scale=s)}),ut.each(a,function(t,e){t||delete i[e]}),t.scales=i,He.addScalesToLayout(this)},buildOrUpdateControllers:function(){var t=this,e=[];return ut.each(t.data.datasets,function(i,n){var a=t.getDatasetMeta(n),o=i.type||t.config.type;if(a.type&&a.type!==o&&(t.destroyDatasetMeta(n),a=t.getDatasetMeta(n)),a.type=o,a.controller)a.controller.updateIndex(n),a.controller.linkScales();else{var r=ue[a.type];if(void 0===r)throw new Error('"'+a.type+'" is not a chart type.');a.controller=new r(t,n),e.push(a.controller)}},t),e},resetElements:function(){var t=this;ut.each(t.data.datasets,function(e,i){t.getDatasetMeta(i).controller.reset()},t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(t){var e,i,n=this;if(t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]}),i=(e=n).options,ut.each(e.scales,function(t){ke.removeBox(e,t)}),i=ei(st.global,st[e.config.type],i),e.options=e.config.options=i,e.ensureScalesHaveIDs(),e.buildOrUpdateScales(),e.tooltip._options=i.tooltips,e.tooltip.initialize(),Ee._invalidate(n),!1!==Ee.notify(n,"beforeUpdate")){n.tooltip._data=n.data;var a=n.buildOrUpdateControllers();ut.each(n.data.datasets,function(t,e){n.getDatasetMeta(e).controller.buildOrUpdateElements()},n),n.updateLayout(),n.options.animation&&n.options.animation.duration&&ut.each(a,function(t){t.reset()}),n.updateDatasets(),n.tooltip.initialize(),n.lastActive=[],Ee.notify(n,"afterUpdate"),n._bufferedRender?n._bufferedRequest={duration:t.duration,easing:t.easing,lazy:t.lazy}:n.render(t)}},updateLayout:function(){!1!==Ee.notify(this,"beforeLayout")&&(ke.update(this,this.width,this.height),Ee.notify(this,"afterScaleUpdate"),Ee.notify(this,"afterLayout"))},updateDatasets:function(){if(!1!==Ee.notify(this,"beforeDatasetsUpdate")){for(var t=0,e=this.data.datasets.length;t<e;++t)this.updateDataset(t);Ee.notify(this,"afterDatasetsUpdate")}},updateDataset:function(t){var e=this.getDatasetMeta(t),i={meta:e,index:t};!1!==Ee.notify(this,"beforeDatasetUpdate",[i])&&(e.controller.update(),Ee.notify(this,"afterDatasetUpdate",[i]))},render:function(t){var e=this;t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]});var i=e.options.animation,n=Qe(t.duration,i&&i.duration),a=t.lazy;if(!1!==Ee.notify(e,"beforeRender")){var o=function(t){Ee.notify(e,"afterRender"),ut.callback(i&&i.onComplete,[t],e)};if(i&&n){var r=new vt({numSteps:n/16.66,easing:t.easing||i.easing,render:function(t,e){var i=ut.easing.effects[e.easing],n=e.currentStep,a=n/e.numSteps;t.draw(i(a),a,n)},onAnimationProgress:i.onProgress,onAnimationComplete:o});bt.addAnimation(e,r,n,a)}else e.draw(),o(new vt({numSteps:0,chart:e}));return e}},draw:function(t){var e=this;e.clear(),ut.isNullOrUndef(t)&&(t=1),e.transition(t),e.width<=0||e.height<=0||!1!==Ee.notify(e,"beforeDraw",[t])&&(ut.each(e.boxes,function(t){t.draw(e.chartArea)},e),e.drawDatasets(t),e._drawTooltip(t),Ee.notify(e,"afterDraw",[t]))},transition:function(t){for(var e=0,i=(this.data.datasets||[]).length;e<i;++e)this.isDatasetVisible(e)&&this.getDatasetMeta(e).controller.transition(t);this.tooltip.transition(t)},drawDatasets:function(t){var e=this;if(!1!==Ee.notify(e,"beforeDatasetsDraw",[t])){for(var i=(e.data.datasets||[]).length-1;i>=0;--i)e.isDatasetVisible(i)&&e.drawDataset(i,t);Ee.notify(e,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var i=this.getDatasetMeta(t),n={meta:i,index:t,easingValue:e};!1!==Ee.notify(this,"beforeDatasetDraw",[n])&&(i.controller.draw(e),Ee.notify(this,"afterDatasetDraw",[n]))},_drawTooltip:function(t){var e=this.tooltip,i={tooltip:e,easingValue:t};!1!==Ee.notify(this,"beforeTooltipDraw",[i])&&(e.draw(),Ee.notify(this,"afterTooltipDraw",[i]))},getElementAtEvent:function(t){return ve.modes.single(this,t)},getElementsAtEvent:function(t){return ve.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return ve.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,i){var n=ve.modes[e];return"function"==typeof n?n(this,t,i):[]},getDatasetAtEvent:function(t){return ve.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var i=e._meta[this.id];return i||(i=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),i},getVisibleDatasetCount:function(){for(var t=0,e=0,i=this.data.datasets.length;e<i;++e)this.isDatasetVisible(e)&&t++;return t},isDatasetVisible:function(t){var e=this.getDatasetMeta(t);return"boolean"==typeof e.hidden?!e.hidden:!this.data.datasets[t].hidden},generateLegend:function(){return this.options.legendCallback(this)},destroyDatasetMeta:function(t){var e=this.id,i=this.data.datasets[t],n=i._meta&&i._meta[e];n&&(n.controller.destroy(),delete i._meta[e])},destroy:function(){var t,e,i=this,n=i.canvas;for(i.stop(),t=0,e=i.data.datasets.length;t<e;++t)i.destroyDatasetMeta(t);n&&(i.unbindEvents(),ut.canvas.clear(i),Ve.releaseContext(i.ctx),i.canvas=null,i.ctx=null),Ee.notify(i,"destroy"),delete ni.instances[i.id]},toBase64Image:function(){return this.canvas.toDataURL.apply(this.canvas,arguments)},initToolTip:function(){var t=this;t.tooltip=new Je({_chart:t,_chartInstance:t,_data:t.data,_options:t.options.tooltips},t)},bindEvents:function(){var t=this,e=t._listeners={},i=function(){t.eventHandler.apply(t,arguments)};ut.each(t.options.events,function(n){Ve.addEventListener(t,n,i),e[n]=i}),t.options.responsive&&(i=function(){t.resize()},Ve.addEventListener(t,"resize",i),e.resize=i)},unbindEvents:function(){var t=this,e=t._listeners;e&&(delete t._listeners,ut.each(e,function(e,i){Ve.removeEventListener(t,i,e)}))},updateHoverStyle:function(t,e,i){var n,a,o,r=i?"setHoverStyle":"removeHoverStyle";for(a=0,o=t.length;a<o;++a)(n=t[a])&&this.getDatasetMeta(n._datasetIndex).controller[r](n)},eventHandler:function(t){var e=this,i=e.tooltip;if(!1!==Ee.notify(e,"beforeEvent",[t])){e._bufferedRender=!0,e._bufferedRequest=null;var n=e.handleEvent(t);i&&(n=i._start?i.handleEvent(t):n|i.handleEvent(t)),Ee.notify(e,"afterEvent",[t]);var a=e._bufferedRequest;return a?e.render(a):n&&!e.animating&&(e.stop(),e.render({duration:e.options.hover.animationDuration,lazy:!0})),e._bufferedRender=!1,e._bufferedRequest=null,e}},handleEvent:function(t){var e,i=this,n=i.options||{},a=n.hover;return i.lastActive=i.lastActive||[],"mouseout"===t.type?i.active=[]:i.active=i.getElementsAtEventForMode(t,a.mode,a),ut.callback(n.onHover||n.hover.onHover,[t.native,i.active],i),"mouseup"!==t.type&&"click"!==t.type||n.onClick&&n.onClick.call(i,t.native,i.active),i.lastActive.length&&i.updateHoverStyle(i.lastActive,a.mode,!1),i.active.length&&a.mode&&i.updateHoverStyle(i.active,a.mode,!0),e=!ut.arrayEquals(i.active,i.lastActive),i.lastActive=i.active,e}}),ni.instances={};var ai=ni;ni.Controller=ni,ni.types={},ut.configMerge=ei,ut.scaleMerge=ti;function oi(){throw new Error("This method is not implemented: either no adapter can be found or an incomplete integration was provided.")}function ri(t){this.options=t||{}}ut.extend(ri.prototype,{formats:oi,parse:oi,format:oi,add:oi,diff:oi,startOf:oi,endOf:oi,_create:function(t){return t}}),ri.override=function(t){ut.extend(ri.prototype,t)};var si={_date:ri},li={formatters:{values:function(t){return ut.isArray(t)?t:""+t},linear:function(t,e,i){var n=i.length>3?i[2]-i[1]:i[1]-i[0];Math.abs(n)>1&&t!==Math.floor(t)&&(n=t-Math.floor(t));var a=ut.log10(Math.abs(n)),o="";if(0!==t)if(Math.max(Math.abs(i[0]),Math.abs(i[i.length-1]))<1e-4){var r=ut.log10(Math.abs(t));o=t.toExponential(Math.floor(r)-Math.floor(a))}else{var s=-1*Math.floor(a);s=Math.max(Math.min(s,20),0),o=t.toFixed(s)}else o="0";return o},logarithmic:function(t,e,i){var n=t/Math.pow(10,Math.floor(ut.log10(t)));return 0===t?"0":1===n||2===n||5===n||0===e||e===i.length-1?t.toExponential():""}}},di=ut.valueOrDefault,ui=ut.valueAtIndexOrDefault;function hi(t){var e,i,n=[];for(e=0,i=t.length;e<i;++e)n.push(t[e].label);return n}function ci(t,e,i){return ut.isArray(e)?ut.longestText(t,i,e):t.measureText(e).width}st._set("scale",{display:!0,position:"left",offset:!1,gridLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickMarkLength:10,zeroLineWidth:1,zeroLineColor:"rgba(0,0,0,0.25)",zeroLineBorderDash:[],zeroLineBorderDashOffset:0,offsetGridLines:!1,borderDash:[],borderDashOffset:0},scaleLabel:{display:!1,labelString:"",padding:{top:4,bottom:4}},ticks:{beginAtZero:!1,minRotation:0,maxRotation:50,mirror:!1,padding:0,reverse:!1,display:!0,autoSkip:!0,autoSkipPadding:0,labelOffset:0,callback:li.formatters.values,minor:{},major:{}}});var fi=pt.extend({getPadding:function(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}},getTicks:function(){return this._ticks},mergeTicksOptions:function(){var t=this.options.ticks;for(var e in!1===t.minor&&(t.minor={display:!1}),!1===t.major&&(t.major={display:!1}),t)"major"!==e&&"minor"!==e&&(void 0===t.minor[e]&&(t.minor[e]=t[e]),void 0===t.major[e]&&(t.major[e]=t[e]))},beforeUpdate:function(){ut.callback(this.options.beforeUpdate,[this])},update:function(t,e,i){var n,a,o,r,s,l,d=this;for(d.beforeUpdate(),d.maxWidth=t,d.maxHeight=e,d.margins=ut.extend({left:0,right:0,top:0,bottom:0},i),d._maxLabelLines=0,d.longestLabelWidth=0,d.longestTextCache=d.longestTextCache||{},d.beforeSetDimensions(),d.setDimensions(),d.afterSetDimensions(),d.beforeDataLimits(),d.determineDataLimits(),d.afterDataLimits(),d.beforeBuildTicks(),s=d.buildTicks()||[],s=d.afterBuildTicks(s)||s,d.beforeTickToLabelConversion(),o=d.convertTicksToLabels(s)||d.ticks,d.afterTickToLabelConversion(),d.ticks=o,n=0,a=o.length;n<a;++n)r=o[n],(l=s[n])?l.label=r:s.push(l={label:r,major:!1});return d._ticks=s,d.beforeCalculateTickRotation(),d.calculateTickRotation(),d.afterCalculateTickRotation(),d.beforeFit(),d.fit(),d.afterFit(),d.afterUpdate(),d.minSize},afterUpdate:function(){ut.callback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){ut.callback(this.options.beforeSetDimensions,[this])},setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0},afterSetDimensions:function(){ut.callback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){ut.callback(this.options.beforeDataLimits,[this])},determineDataLimits:ut.noop,afterDataLimits:function(){ut.callback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){ut.callback(this.options.beforeBuildTicks,[this])},buildTicks:ut.noop,afterBuildTicks:function(t){var e=this;return ut.isArray(t)&&t.length?ut.callback(e.options.afterBuildTicks,[e,t]):(e.ticks=ut.callback(e.options.afterBuildTicks,[e,e.ticks])||e.ticks,t)},beforeTickToLabelConversion:function(){ut.callback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){var t=this.options.ticks;this.ticks=this.ticks.map(t.userCallback||t.callback,this)},afterTickToLabelConversion:function(){ut.callback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){ut.callback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var t=this,e=t.ctx,i=t.options.ticks,n=hi(t._ticks),a=ut.options._parseFont(i);e.font=a.string;var o=i.minRotation||0;if(n.length&&t.options.display&&t.isHorizontal())for(var r,s=ut.longestText(e,a.string,n,t.longestTextCache),l=s,d=t.getPixelForTick(1)-t.getPixelForTick(0)-6;l>d&&o<i.maxRotation;){var u=ut.toRadians(o);if(r=Math.cos(u),Math.sin(u)*s>t.maxHeight){o--;break}o++,l=r*s}t.labelRotation=o},afterCalculateTickRotation:function(){ut.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){ut.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},i=hi(t._ticks),n=t.options,a=n.ticks,o=n.scaleLabel,r=n.gridLines,s=t._isVisible(),l=n.position,d=t.isHorizontal(),u=ut.options._parseFont,h=u(a),c=n.gridLines.tickMarkLength;if(e.width=d?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:s&&r.drawTicks?c:0,e.height=d?s&&r.drawTicks?c:0:t.maxHeight,o.display&&s){var f=u(o),g=ut.options.toPadding(o.padding),p=f.lineHeight+g.height;d?e.height+=p:e.width+=p}if(a.display&&s){var m=ut.longestText(t.ctx,h.string,i,t.longestTextCache),v=ut.numberOfLabelLines(i),b=.5*h.size,x=t.options.ticks.padding;if(t._maxLabelLines=v,t.longestLabelWidth=m,d){var y=ut.toRadians(t.labelRotation),k=Math.cos(y),w=Math.sin(y)*m+h.lineHeight*v+b;e.height=Math.min(t.maxHeight,e.height+w+x),t.ctx.font=h.string;var M,_,C=ci(t.ctx,i[0],h.string),S=ci(t.ctx,i[i.length-1],h.string),P=t.getPixelForTick(0)-t.left,I=t.right-t.getPixelForTick(i.length-1);0!==t.labelRotation?(M="bottom"===l?k*C:k*b,_="bottom"===l?k*b:k*S):(M=C/2,_=S/2),t.paddingLeft=Math.max(M-P,0)+3,t.paddingRight=Math.max(_-I,0)+3}else a.mirror?m=0:m+=x+b,e.width=Math.min(t.maxWidth,e.width+m),t.paddingTop=h.size/2,t.paddingBottom=h.size/2}t.handleMargins(),t.width=e.width,t.height=e.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){ut.callback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(ut.isNullOrUndef(t))return NaN;if(("number"==typeof t||t instanceof Number)&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},getLabelForIndex:ut.noop,getPixelForValue:ut.noop,getValueForPixel:ut.noop,getPixelForTick:function(t){var e=this,i=e.options.offset;if(e.isHorizontal()){var n=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(i?0:1),1),a=n*t+e.paddingLeft;i&&(a+=n/2);var o=e.left+a;return o+=e.isFullWidth()?e.margins.left:0}var r=e.height-(e.paddingTop+e.paddingBottom);return e.top+t*(r/(e._ticks.length-1))},getPixelForDecimal:function(t){var e=this;if(e.isHorizontal()){var i=(e.width-(e.paddingLeft+e.paddingRight))*t+e.paddingLeft,n=e.left+i;return n+=e.isFullWidth()?e.margins.left:0}return e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0},_autoSkip:function(t){var e,i,n=this,a=n.isHorizontal(),o=n.options.ticks.minor,r=t.length,s=!1,l=o.maxTicksLimit,d=n._tickSize()*(r-1),u=a?n.width-(n.paddingLeft+n.paddingRight):n.height-(n.paddingTop+n.PaddingBottom),h=[];for(d>u&&(s=1+Math.floor(d/u)),r>l&&(s=Math.max(s,1+Math.floor(r/l))),e=0;e<r;e++)i=t[e],s>1&&e%s>0&&delete i.label,h.push(i);return h},_tickSize:function(){var t=this,e=t.isHorizontal(),i=t.options.ticks.minor,n=ut.toRadians(t.labelRotation),a=Math.abs(Math.cos(n)),o=Math.abs(Math.sin(n)),r=i.autoSkipPadding||0,s=t.longestLabelWidth+r||0,l=ut.options._parseFont(i),d=t._maxLabelLines*l.lineHeight+r||0;return e?d*a>s*o?s/a:d/o:d*o<s*a?d/a:s/o},_isVisible:function(){var t,e,i,n=this.chart,a=this.options.display;if("auto"!==a)return!!a;for(t=0,e=n.data.datasets.length;t<e;++t)if(n.isDatasetVisible(t)&&((i=n.getDatasetMeta(t)).xAxisID===this.id||i.yAxisID===this.id))return!0;return!1},draw:function(t){var e=this,i=e.options;if(e._isVisible()){var n,a,o,r=e.chart,s=e.ctx,l=st.global.defaultFontColor,d=i.ticks.minor,u=i.ticks.major||d,h=i.gridLines,c=i.scaleLabel,f=i.position,g=0!==e.labelRotation,p=d.mirror,m=e.isHorizontal(),v=ut.options._parseFont,b=d.display&&d.autoSkip?e._autoSkip(e.getTicks()):e.getTicks(),x=di(d.fontColor,l),y=v(d),k=y.lineHeight,w=di(u.fontColor,l),M=v(u),_=d.padding,C=d.labelOffset,S=h.drawTicks?h.tickMarkLength:0,P=di(c.fontColor,l),I=v(c),A=ut.options.toPadding(c.padding),D=ut.toRadians(e.labelRotation),T=[],F=h.drawBorder?ui(h.lineWidth,0,0):0,L=ut._alignPixel;"top"===f?(n=L(r,e.bottom,F),a=e.bottom-S,o=n-F/2):"bottom"===f?(n=L(r,e.top,F),a=n+F/2,o=e.top+S):"left"===f?(n=L(r,e.right,F),a=e.right-S,o=n-F/2):(n=L(r,e.left,F),a=n+F/2,o=e.left+S);if(ut.each(b,function(n,s){if(!ut.isNullOrUndef(n.label)){var l,d,u,c,v,b,x,y,w,M,P,I,A,R,O,z,B=n.label;s===e.zeroLineIndex&&i.offset===h.offsetGridLines?(l=h.zeroLineWidth,d=h.zeroLineColor,u=h.zeroLineBorderDash||[],c=h.zeroLineBorderDashOffset||0):(l=ui(h.lineWidth,s),d=ui(h.color,s),u=h.borderDash||[],c=h.borderDashOffset||0);var N=ut.isArray(B)?B.length:1,W=function(t,e,i){var n=t.getPixelForTick(e);return i&&(1===t.getTicks().length?n-=t.isHorizontal()?Math.max(n-t.left,t.right-n):Math.max(n-t.top,t.bottom-n):n-=0===e?(t.getPixelForTick(1)-n)/2:(n-t.getPixelForTick(e-1))/2),n}(e,s,h.offsetGridLines);if(m){var V=S+_;W<e.left-1e-7&&(d="rgba(0,0,0,0)"),v=x=w=P=L(r,W,l),b=a,y=o,A=e.getPixelForTick(s)+C,"top"===f?(M=L(r,t.top,F)+F/2,I=t.bottom,O=((g?1:.5)-N)*k,z=g?"left":"center",R=e.bottom-V):(M=t.top,I=L(r,t.bottom,F)-F/2,O=(g?0:.5)*k,z=g?"right":"center",R=e.top+V)}else{var E=(p?0:S)+_;W<e.top-1e-7&&(d="rgba(0,0,0,0)"),v=a,x=o,b=y=M=I=L(r,W,l),R=e.getPixelForTick(s)+C,O=(1-N)*k/2,"left"===f?(w=L(r,t.left,F)+F/2,P=t.right,z=p?"left":"right",A=e.right-E):(w=t.left,P=L(r,t.right,F)-F/2,z=p?"right":"left",A=e.left+E)}T.push({tx1:v,ty1:b,tx2:x,ty2:y,x1:w,y1:M,x2:P,y2:I,labelX:A,labelY:R,glWidth:l,glColor:d,glBorderDash:u,glBorderDashOffset:c,rotation:-1*D,label:B,major:n.major,textOffset:O,textAlign:z})}}),ut.each(T,function(t){var e=t.glWidth,i=t.glColor;if(h.display&&e&&i&&(s.save(),s.lineWidth=e,s.strokeStyle=i,s.setLineDash&&(s.setLineDash(t.glBorderDash),s.lineDashOffset=t.glBorderDashOffset),s.beginPath(),h.drawTicks&&(s.moveTo(t.tx1,t.ty1),s.lineTo(t.tx2,t.ty2)),h.drawOnChartArea&&(s.moveTo(t.x1,t.y1),s.lineTo(t.x2,t.y2)),s.stroke(),s.restore()),d.display){s.save(),s.translate(t.labelX,t.labelY),s.rotate(t.rotation),s.font=t.major?M.string:y.string,s.fillStyle=t.major?w:x,s.textBaseline="middle",s.textAlign=t.textAlign;var n=t.label,a=t.textOffset;if(ut.isArray(n))for(var o=0;o<n.length;++o)s.fillText(""+n[o],0,a),a+=k;else s.fillText(n,0,a);s.restore()}}),c.display){var R,O,z=0,B=I.lineHeight/2;if(m)R=e.left+(e.right-e.left)/2,O="bottom"===f?e.bottom-B-A.bottom:e.top+B+A.top;else{var N="left"===f;R=N?e.left+B+A.top:e.right-B-A.top,O=e.top+(e.bottom-e.top)/2,z=N?-.5*Math.PI:.5*Math.PI}s.save(),s.translate(R,O),s.rotate(z),s.textAlign="center",s.textBaseline="middle",s.fillStyle=P,s.font=I.string,s.fillText(c.labelString,0,0),s.restore()}if(F){var W,V,E,H,j=F,q=ui(h.lineWidth,b.length-1,0);m?(W=L(r,e.left,j)-j/2,V=L(r,e.right,q)+q/2,E=H=n):(E=L(r,e.top,j)-j/2,H=L(r,e.bottom,q)+q/2,W=V=n),s.lineWidth=F,s.strokeStyle=ui(h.color,0),s.beginPath(),s.moveTo(W,E),s.lineTo(V,H),s.stroke()}}}}),gi=fi.extend({getLabels:function(){var t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels},determineDataLimits:function(){var t,e=this,i=e.getLabels();e.minIndex=0,e.maxIndex=i.length-1,void 0!==e.options.ticks.min&&(t=i.indexOf(e.options.ticks.min),e.minIndex=-1!==t?t:e.minIndex),void 0!==e.options.ticks.max&&(t=i.indexOf(e.options.ticks.max),e.maxIndex=-1!==t?t:e.maxIndex),e.min=i[e.minIndex],e.max=i[e.maxIndex]},buildTicks:function(){var t=this,e=t.getLabels();t.ticks=0===t.minIndex&&t.maxIndex===e.length-1?e:e.slice(t.minIndex,t.maxIndex+1)},getLabelForIndex:function(t,e){var i=this,n=i.chart;return n.getDatasetMeta(e).controller._getValueScaleId()===i.id?i.getRightValue(n.data.datasets[e].data[t]):i.ticks[t-i.minIndex]},getPixelForValue:function(t,e){var i,n=this,a=n.options.offset,o=Math.max(n.maxIndex+1-n.minIndex-(a?0:1),1);if(null!=t&&(i=n.isHorizontal()?t.x:t.y),void 0!==i||void 0!==t&&isNaN(e)){t=i||t;var r=n.getLabels().indexOf(t);e=-1!==r?r:e}if(n.isHorizontal()){var s=n.width/o,l=s*(e-n.minIndex);return a&&(l+=s/2),n.left+l}var d=n.height/o,u=d*(e-n.minIndex);return a&&(u+=d/2),n.top+u},getPixelForTick:function(t){return this.getPixelForValue(this.ticks[t],t+this.minIndex,null)},getValueForPixel:function(t){var e=this,i=e.options.offset,n=Math.max(e._ticks.length-(i?0:1),1),a=e.isHorizontal(),o=(a?e.width:e.height)/n;return t-=a?e.left:e.top,i&&(t-=o/2),(t<=0?0:Math.round(t/o))+e.minIndex},getBasePixel:function(){return this.bottom}}),pi={position:"bottom"};gi._defaults=pi;var mi=ut.noop,vi=ut.isNullOrUndef;var bi=fi.extend({getRightValue:function(t){return"string"==typeof t?+t:fi.prototype.getRightValue.call(this,t)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var i=ut.sign(t.min),n=ut.sign(t.max);i<0&&n<0?t.max=0:i>0&&n>0&&(t.min=0)}var a=void 0!==e.min||void 0!==e.suggestedMin,o=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),a!==o&&t.min>=t.max&&(a?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:function(){var t,e=this.options.ticks,i=e.stepSize,n=e.maxTicksLimit;return i?t=Math.ceil(this.max/i)-Math.floor(this.min/i)+1:(t=this._computeTickLimit(),n=n||11),n&&(t=Math.min(n,t)),t},_computeTickLimit:function(){return Number.POSITIVE_INFINITY},handleDirectionalChanges:mi,buildTicks:function(){var t=this,e=t.options.ticks,i=t.getTickLimit(),n={maxTicks:i=Math.max(2,i),min:e.min,max:e.max,precision:e.precision,stepSize:ut.valueOrDefault(e.fixedStepSize,e.stepSize)},a=t.ticks=function(t,e){var i,n,a,o,r=[],s=t.stepSize,l=s||1,d=t.maxTicks-1,u=t.min,h=t.max,c=t.precision,f=e.min,g=e.max,p=ut.niceNum((g-f)/d/l)*l;if(p<1e-14&&vi(u)&&vi(h))return[f,g];(o=Math.ceil(g/p)-Math.floor(f/p))>d&&(p=ut.niceNum(o*p/d/l)*l),s||vi(c)?i=Math.pow(10,ut._decimalPlaces(p)):(i=Math.pow(10,c),p=Math.ceil(p*i)/i),n=Math.floor(f/p)*p,a=Math.ceil(g/p)*p,s&&(!vi(u)&&ut.almostWhole(u/p,p/1e3)&&(n=u),!vi(h)&&ut.almostWhole(h/p,p/1e3)&&(a=h)),o=(a-n)/p,o=ut.almostEquals(o,Math.round(o),p/1e3)?Math.round(o):Math.ceil(o),n=Math.round(n*i)/i,a=Math.round(a*i)/i,r.push(vi(u)?n:u);for(var m=1;m<o;++m)r.push(Math.round((n+m*p)*i)/i);return r.push(vi(h)?a:h),r}(n,t);t.handleDirectionalChanges(),t.max=ut.max(a),t.min=ut.min(a),e.reverse?(a.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max)},convertTicksToLabels:function(){var t=this;t.ticksAsNumbers=t.ticks.slice(),t.zeroLineIndex=t.ticks.indexOf(0),fi.prototype.convertTicksToLabels.call(t)}}),xi={position:"left",ticks:{callback:li.formatters.linear}},yi=bi.extend({determineDataLimits:function(){var t=this,e=t.options,i=t.chart,n=i.data.datasets,a=t.isHorizontal();function o(e){return a?e.xAxisID===t.id:e.yAxisID===t.id}t.min=null,t.max=null;var r=e.stacked;if(void 0===r&&ut.each(n,function(t,e){if(!r){var n=i.getDatasetMeta(e);i.isDatasetVisible(e)&&o(n)&&void 0!==n.stack&&(r=!0)}}),e.stacked||r){var s={};ut.each(n,function(n,a){var r=i.getDatasetMeta(a),l=[r.type,void 0===e.stacked&&void 0===r.stack?a:"",r.stack].join(".");void 0===s[l]&&(s[l]={positiveValues:[],negativeValues:[]});var d=s[l].positiveValues,u=s[l].negativeValues;i.isDatasetVisible(a)&&o(r)&&ut.each(n.data,function(i,n){var a=+t.getRightValue(i);isNaN(a)||r.data[n].hidden||(d[n]=d[n]||0,u[n]=u[n]||0,e.relativePoints?d[n]=100:a<0?u[n]+=a:d[n]+=a)})}),ut.each(s,function(e){var i=e.positiveValues.concat(e.negativeValues),n=ut.min(i),a=ut.max(i);t.min=null===t.min?n:Math.min(t.min,n),t.max=null===t.max?a:Math.max(t.max,a)})}else ut.each(n,function(e,n){var a=i.getDatasetMeta(n);i.isDatasetVisible(n)&&o(a)&&ut.each(e.data,function(e,i){var n=+t.getRightValue(e);isNaN(n)||a.data[i].hidden||(null===t.min?t.min=n:n<t.min&&(t.min=n),null===t.max?t.max=n:n>t.max&&(t.max=n))})});t.min=isFinite(t.min)&&!isNaN(t.min)?t.min:0,t.max=isFinite(t.max)&&!isNaN(t.max)?t.max:1,this.handleTickRangeOptions()},_computeTickLimit:function(){var t;return this.isHorizontal()?Math.ceil(this.width/40):(t=ut.options._parseFont(this.options.ticks),Math.ceil(this.height/t.lineHeight))},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e=this,i=e.start,n=+e.getRightValue(t),a=e.end-i;return e.isHorizontal()?e.left+e.width/a*(n-i):e.bottom-e.height/a*(n-i)},getValueForPixel:function(t){var e=this,i=e.isHorizontal(),n=i?e.width:e.height,a=(i?t-e.left:e.bottom-t)/n;return e.start+(e.end-e.start)*a},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}}),ki=xi;yi._defaults=ki;var wi=ut.valueOrDefault;var Mi={position:"left",ticks:{callback:li.formatters.logarithmic}};function _i(t,e){return ut.isFinite(t)&&t>=0?t:e}var Ci=fi.extend({determineDataLimits:function(){var t=this,e=t.options,i=t.chart,n=i.data.datasets,a=t.isHorizontal();function o(e){return a?e.xAxisID===t.id:e.yAxisID===t.id}t.min=null,t.max=null,t.minNotZero=null;var r=e.stacked;if(void 0===r&&ut.each(n,function(t,e){if(!r){var n=i.getDatasetMeta(e);i.isDatasetVisible(e)&&o(n)&&void 0!==n.stack&&(r=!0)}}),e.stacked||r){var s={};ut.each(n,function(n,a){var r=i.getDatasetMeta(a),l=[r.type,void 0===e.stacked&&void 0===r.stack?a:"",r.stack].join(".");i.isDatasetVisible(a)&&o(r)&&(void 0===s[l]&&(s[l]=[]),ut.each(n.data,function(e,i){var n=s[l],a=+t.getRightValue(e);isNaN(a)||r.data[i].hidden||a<0||(n[i]=n[i]||0,n[i]+=a)}))}),ut.each(s,function(e){if(e.length>0){var i=ut.min(e),n=ut.max(e);t.min=null===t.min?i:Math.min(t.min,i),t.max=null===t.max?n:Math.max(t.max,n)}})}else ut.each(n,function(e,n){var a=i.getDatasetMeta(n);i.isDatasetVisible(n)&&o(a)&&ut.each(e.data,function(e,i){var n=+t.getRightValue(e);isNaN(n)||a.data[i].hidden||n<0||(null===t.min?t.min=n:n<t.min&&(t.min=n),null===t.max?t.max=n:n>t.max&&(t.max=n),0!==n&&(null===t.minNotZero||n<t.minNotZero)&&(t.minNotZero=n))})});this.handleTickRangeOptions()},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;t.min=_i(e.min,t.min),t.max=_i(e.max,t.max),t.min===t.max&&(0!==t.min&&null!==t.min?(t.min=Math.pow(10,Math.floor(ut.log10(t.min))-1),t.max=Math.pow(10,Math.floor(ut.log10(t.max))+1)):(t.min=1,t.max=10)),null===t.min&&(t.min=Math.pow(10,Math.floor(ut.log10(t.max))-1)),null===t.max&&(t.max=0!==t.min?Math.pow(10,Math.floor(ut.log10(t.min))+1):10),null===t.minNotZero&&(t.min>0?t.minNotZero=t.min:t.max<1?t.minNotZero=Math.pow(10,Math.floor(ut.log10(t.max))):t.minNotZero=1)},buildTicks:function(){var t=this,e=t.options.ticks,i=!t.isHorizontal(),n={min:_i(e.min),max:_i(e.max)},a=t.ticks=function(t,e){var i,n,a=[],o=wi(t.min,Math.pow(10,Math.floor(ut.log10(e.min)))),r=Math.floor(ut.log10(e.max)),s=Math.ceil(e.max/Math.pow(10,r));0===o?(i=Math.floor(ut.log10(e.minNotZero)),n=Math.floor(e.minNotZero/Math.pow(10,i)),a.push(o),o=n*Math.pow(10,i)):(i=Math.floor(ut.log10(o)),n=Math.floor(o/Math.pow(10,i)));var l=i<0?Math.pow(10,Math.abs(i)):1;do{a.push(o),10==++n&&(n=1,l=++i>=0?1:l),o=Math.round(n*Math.pow(10,i)*l)/l}while(i<r||i===r&&n<s);var d=wi(t.max,o);return a.push(d),a}(n,t);t.max=ut.max(a),t.min=ut.min(a),e.reverse?(i=!i,t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max),i&&a.reverse()},convertTicksToLabels:function(){this.tickValues=this.ticks.slice(),fi.prototype.convertTicksToLabels.call(this)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForTick:function(t){return this.getPixelForValue(this.tickValues[t])},_getFirstTickValue:function(t){var e=Math.floor(ut.log10(t));return Math.floor(t/Math.pow(10,e))*Math.pow(10,e)},getPixelForValue:function(t){var e,i,n,a,o,r=this,s=r.options.ticks,l=s.reverse,d=ut.log10,u=r._getFirstTickValue(r.minNotZero),h=0;return t=+r.getRightValue(t),l?(n=r.end,a=r.start,o=-1):(n=r.start,a=r.end,o=1),r.isHorizontal()?(e=r.width,i=l?r.right:r.left):(e=r.height,o*=-1,i=l?r.top:r.bottom),t!==n&&(0===n&&(e-=h=wi(s.fontSize,st.global.defaultFontSize),n=u),0!==t&&(h+=e/(d(a)-d(n))*(d(t)-d(n))),i+=o*h),i},getValueForPixel:function(t){var e,i,n,a,o=this,r=o.options.ticks,s=r.reverse,l=ut.log10,d=o._getFirstTickValue(o.minNotZero);if(s?(i=o.end,n=o.start):(i=o.start,n=o.end),o.isHorizontal()?(e=o.width,a=s?o.right-t:t-o.left):(e=o.height,a=s?t-o.top:o.bottom-t),a!==i){if(0===i){var u=wi(r.fontSize,st.global.defaultFontSize);a-=u,e-=u,i=d}a*=l(n)-l(i),a/=e,a=Math.pow(10,l(i)+a)}return a}}),Si=Mi;Ci._defaults=Si;var Pi=ut.valueOrDefault,Ii=ut.valueAtIndexOrDefault,Ai=ut.options.resolve,Di={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1,borderDash:[],borderDashOffset:0},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:li.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function Ti(t){var e=t.options;return e.angleLines.display||e.pointLabels.display?t.chart.data.labels.length:0}function Fi(t){var e=t.ticks;return e.display&&t.display?Pi(e.fontSize,st.global.defaultFontSize)+2*e.backdropPaddingY:0}function Li(t,e,i,n,a){return t===n||t===a?{start:e-i/2,end:e+i/2}:t<n||t>a?{start:e-i,end:e}:{start:e,end:e+i}}function Ri(t){return 0===t||180===t?"center":t<180?"left":"right"}function Oi(t,e,i,n){var a,o,r=i.y+n/2;if(ut.isArray(e))for(a=0,o=e.length;a<o;++a)t.fillText(e[a],i.x,r),r+=n;else t.fillText(e,i.x,r)}function zi(t,e,i){90===t||270===t?i.y-=e.h/2:(t>270||t<90)&&(i.y-=e.h)}function Bi(t){return ut.isNumber(t)?t:0}var Ni=bi.extend({setDimensions:function(){var t=this;t.width=t.maxWidth,t.height=t.maxHeight,t.paddingTop=Fi(t.options)/2,t.xCenter=Math.floor(t.width/2),t.yCenter=Math.floor((t.height-t.paddingTop)/2),t.drawingArea=Math.min(t.height-t.paddingTop,t.width)/2},determineDataLimits:function(){var t=this,e=t.chart,i=Number.POSITIVE_INFINITY,n=Number.NEGATIVE_INFINITY;ut.each(e.data.datasets,function(a,o){if(e.isDatasetVisible(o)){var r=e.getDatasetMeta(o);ut.each(a.data,function(e,a){var o=+t.getRightValue(e);isNaN(o)||r.data[a].hidden||(i=Math.min(o,i),n=Math.max(o,n))})}}),t.min=i===Number.POSITIVE_INFINITY?0:i,t.max=n===Number.NEGATIVE_INFINITY?0:n,t.handleTickRangeOptions()},_computeTickLimit:function(){return Math.ceil(this.drawingArea/Fi(this.options))},convertTicksToLabels:function(){var t=this;bi.prototype.convertTicksToLabels.call(t),t.pointLabels=t.chart.data.labels.map(t.options.pointLabels.callback,t)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t=this.options;t.display&&t.pointLabels.display?function(t){var e,i,n,a=ut.options._parseFont(t.options.pointLabels),o={l:0,r:t.width,t:0,b:t.height-t.paddingTop},r={};t.ctx.font=a.string,t._pointLabelSizes=[];var s,l,d,u=Ti(t);for(e=0;e<u;e++){n=t.getPointPosition(e,t.drawingArea+5),s=t.ctx,l=a.lineHeight,d=t.pointLabels[e]||"",i=ut.isArray(d)?{w:ut.longestText(s,s.font,d),h:d.length*l}:{w:s.measureText(d).width,h:l},t._pointLabelSizes[e]=i;var h=t.getIndexAngle(e),c=ut.toDegrees(h)%360,f=Li(c,n.x,i.w,0,180),g=Li(c,n.y,i.h,90,270);f.start<o.l&&(o.l=f.start,r.l=h),f.end>o.r&&(o.r=f.end,r.r=h),g.start<o.t&&(o.t=g.start,r.t=h),g.end>o.b&&(o.b=g.end,r.b=h)}t.setReductions(t.drawingArea,o,r)}(this):this.setCenterPoint(0,0,0,0)},setReductions:function(t,e,i){var n=this,a=e.l/Math.sin(i.l),o=Math.max(e.r-n.width,0)/Math.sin(i.r),r=-e.t/Math.cos(i.t),s=-Math.max(e.b-(n.height-n.paddingTop),0)/Math.cos(i.b);a=Bi(a),o=Bi(o),r=Bi(r),s=Bi(s),n.drawingArea=Math.min(Math.floor(t-(a+o)/2),Math.floor(t-(r+s)/2)),n.setCenterPoint(a,o,r,s)},setCenterPoint:function(t,e,i,n){var a=this,o=a.width-e-a.drawingArea,r=t+a.drawingArea,s=i+a.drawingArea,l=a.height-a.paddingTop-n-a.drawingArea;a.xCenter=Math.floor((r+o)/2+a.left),a.yCenter=Math.floor((s+l)/2+a.top+a.paddingTop)},getIndexAngle:function(t){return t*(2*Math.PI/Ti(this))+(this.chart.options&&this.chart.options.startAngle?this.chart.options.startAngle:0)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(null===t)return 0;var i=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*i:(t-e.min)*i},getPointPosition:function(t,e){var i=this.getIndexAngle(t)-Math.PI/2;return{x:Math.cos(i)*e+this.xCenter,y:Math.sin(i)*e+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(){var t=this.min,e=this.max;return this.getPointPositionForValue(0,this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0)},draw:function(){var t=this,e=t.options,i=e.gridLines,n=e.ticks;if(e.display){var a=t.ctx,o=this.getIndexAngle(0),r=ut.options._parseFont(n);(e.angleLines.display||e.pointLabels.display)&&function(t){var e=t.ctx,i=t.options,n=i.angleLines,a=i.gridLines,o=i.pointLabels,r=Pi(n.lineWidth,a.lineWidth),s=Pi(n.color,a.color),l=Fi(i);e.save(),e.lineWidth=r,e.strokeStyle=s,e.setLineDash&&(e.setLineDash(Ai([n.borderDash,a.borderDash,[]])),e.lineDashOffset=Ai([n.borderDashOffset,a.borderDashOffset,0]));var d=t.getDistanceFromCenterForValue(i.ticks.reverse?t.min:t.max),u=ut.options._parseFont(o);e.font=u.string,e.textBaseline="middle";for(var h=Ti(t)-1;h>=0;h--){if(n.display&&r&&s){var c=t.getPointPosition(h,d);e.beginPath(),e.moveTo(t.xCenter,t.yCenter),e.lineTo(c.x,c.y),e.stroke()}if(o.display){var f=0===h?l/2:0,g=t.getPointPosition(h,d+f+5),p=Ii(o.fontColor,h,st.global.defaultFontColor);e.fillStyle=p;var m=t.getIndexAngle(h),v=ut.toDegrees(m);e.textAlign=Ri(v),zi(v,t._pointLabelSizes[h],g),Oi(e,t.pointLabels[h]||"",g,u.lineHeight)}}e.restore()}(t),ut.each(t.ticks,function(e,s){if(s>0||n.reverse){var l=t.getDistanceFromCenterForValue(t.ticksAsNumbers[s]);if(i.display&&0!==s&&function(t,e,i,n){var a,o=t.ctx,r=e.circular,s=Ti(t),l=Ii(e.color,n-1),d=Ii(e.lineWidth,n-1);if((r||s)&&l&&d){if(o.save(),o.strokeStyle=l,o.lineWidth=d,o.setLineDash&&(o.setLineDash(e.borderDash||[]),o.lineDashOffset=e.borderDashOffset||0),o.beginPath(),r)o.arc(t.xCenter,t.yCenter,i,0,2*Math.PI);else{a=t.getPointPosition(0,i),o.moveTo(a.x,a.y);for(var u=1;u<s;u++)a=t.getPointPosition(u,i),o.lineTo(a.x,a.y)}o.closePath(),o.stroke(),o.restore()}}(t,i,l,s),n.display){var d=Pi(n.fontColor,st.global.defaultFontColor);if(a.font=r.string,a.save(),a.translate(t.xCenter,t.yCenter),a.rotate(o),n.showLabelBackdrop){var u=a.measureText(e).width;a.fillStyle=n.backdropColor,a.fillRect(-u/2-n.backdropPaddingX,-l-r.size/2-n.backdropPaddingY,u+2*n.backdropPaddingX,r.size+2*n.backdropPaddingY)}a.textAlign="center",a.textBaseline="middle",a.fillStyle=d,a.fillText(e,0,-l),a.restore()}}})}}}),Wi=Di;Ni._defaults=Wi;var Vi=ut.valueOrDefault,Ei=Number.MIN_SAFE_INTEGER||-9007199254740991,Hi=Number.MAX_SAFE_INTEGER||9007199254740991,ji={millisecond:{common:!0,size:1,steps:[1,2,5,10,20,50,100,250,500]},second:{common:!0,size:1e3,steps:[1,2,5,10,15,30]},minute:{common:!0,size:6e4,steps:[1,2,5,10,15,30]},hour:{common:!0,size:36e5,steps:[1,2,3,6,12]},day:{common:!0,size:864e5,steps:[1,2,5]},week:{common:!1,size:6048e5,steps:[1,2,3,4]},month:{common:!0,size:2628e6,steps:[1,2,3]},quarter:{common:!1,size:7884e6,steps:[1,2,3,4]},year:{common:!0,size:3154e7}},qi=Object.keys(ji);function Yi(t,e){return t-e}function Ui(t){var e,i,n,a={},o=[];for(e=0,i=t.length;e<i;++e)a[n=t[e]]||(a[n]=!0,o.push(n));return o}function Xi(t,e,i,n){var a=function(t,e,i){for(var n,a,o,r=0,s=t.length-1;r>=0&&r<=s;){if(a=t[(n=r+s>>1)-1]||null,o=t[n],!a)return{lo:null,hi:o};if(o[e]<i)r=n+1;else{if(!(a[e]>i))return{lo:a,hi:o};s=n-1}}return{lo:o,hi:null}}(t,e,i),o=a.lo?a.hi?a.lo:t[t.length-2]:t[0],r=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=r[e]-o[e],l=s?(i-o[e])/s:0,d=(r[n]-o[n])*l;return o[n]+d}function Ki(t,e){var i=t._adapter,n=t.options.time,a=n.parser,o=a||n.format,r=e;return"function"==typeof a&&(r=a(r)),ut.isFinite(r)||(r="string"==typeof o?i.parse(r,o):i.parse(r)),null!==r?+r:(a||"function"!=typeof o||(r=o(e),ut.isFinite(r)||(r=i.parse(r))),r)}function Gi(t,e){if(ut.isNullOrUndef(e))return null;var i=t.options.time,n=Ki(t,t.getRightValue(e));return null===n?n:(i.round&&(n=+t._adapter.startOf(n,i.round)),n)}function Zi(t){for(var e=qi.indexOf(t)+1,i=qi.length;e<i;++e)if(ji[qi[e]].common)return qi[e]}function $i(t,e,i,n){var a,o=t._adapter,r=t.options,s=r.time,l=s.unit||function(t,e,i,n){var a,o,r,s=qi.length;for(a=qi.indexOf(t);a<s-1;++a)if(r=(o=ji[qi[a]]).steps?o.steps[o.steps.length-1]:Hi,o.common&&Math.ceil((i-e)/(r*o.size))<=n)return qi[a];return qi[s-1]}(s.minUnit,e,i,n),d=Zi(l),u=Vi(s.stepSize,s.unitStepSize),h="week"===l&&s.isoWeekday,c=r.ticks.major.enabled,f=ji[l],g=e,p=i,m=[];for(u||(u=function(t,e,i,n){var a,o,r,s=e-t,l=ji[i],d=l.size,u=l.steps;if(!u)return Math.ceil(s/(n*d));for(a=0,o=u.length;a<o&&(r=u[a],!(Math.ceil(s/(d*r))<=n));++a);return r}(e,i,l,n)),h&&(g=+o.startOf(g,"isoWeek",h),p=+o.startOf(p,"isoWeek",h)),g=+o.startOf(g,h?"day":l),(p=+o.startOf(p,h?"day":l))<i&&(p=+o.add(p,1,l)),a=g,c&&d&&!h&&!s.round&&(a=+o.startOf(a,d),a=+o.add(a,~~((g-a)/(f.size*u))*u,l));a<p;a=+o.add(a,u,l))m.push(+a);return m.push(+a),m}var Ji=fi.extend({initialize:function(){this.mergeTicksOptions(),fi.prototype.initialize.call(this)},update:function(){var t=this.options,e=t.time||(t.time={}),i=this._adapter=new si._date(t.adapters.date);return e.format&&console.warn("options.time.format is deprecated and replaced by options.time.parser."),ut.mergeIf(e.displayFormats,i.formats()),fi.prototype.update.apply(this,arguments)},getRightValue:function(t){return t&&void 0!==t.t&&(t=t.t),fi.prototype.getRightValue.call(this,t)},determineDataLimits:function(){var t,e,i,n,a,o,r=this,s=r.chart,l=r._adapter,d=r.options.time,u=d.unit||"day",h=Hi,c=Ei,f=[],g=[],p=[],m=s.data.labels||[];for(t=0,i=m.length;t<i;++t)p.push(Gi(r,m[t]));for(t=0,i=(s.data.datasets||[]).length;t<i;++t)if(s.isDatasetVisible(t))if(a=s.data.datasets[t].data,ut.isObject(a[0]))for(g[t]=[],e=0,n=a.length;e<n;++e)o=Gi(r,a[e]),f.push(o),g[t][e]=o;else{for(e=0,n=p.length;e<n;++e)f.push(p[e]);g[t]=p.slice(0)}else g[t]=[];p.length&&(p=Ui(p).sort(Yi),h=Math.min(h,p[0]),c=Math.max(c,p[p.length-1])),f.length&&(f=Ui(f).sort(Yi),h=Math.min(h,f[0]),c=Math.max(c,f[f.length-1])),h=Gi(r,d.min)||h,c=Gi(r,d.max)||c,h=h===Hi?+l.startOf(Date.now(),u):h,c=c===Ei?+l.endOf(Date.now(),u)+1:c,r.min=Math.min(h,c),r.max=Math.max(h+1,c),r._horizontal=r.isHorizontal(),r._table=[],r._timestamps={data:f,datasets:g,labels:p}},buildTicks:function(){var t,e,i,n=this,a=n.min,o=n.max,r=n.options,s=r.time,l=[],d=[];switch(r.ticks.source){case"data":l=n._timestamps.data;break;case"labels":l=n._timestamps.labels;break;case"auto":default:l=$i(n,a,o,n.getLabelCapacity(a))}for("ticks"===r.bounds&&l.length&&(a=l[0],o=l[l.length-1]),a=Gi(n,s.min)||a,o=Gi(n,s.max)||o,t=0,e=l.length;t<e;++t)(i=l[t])>=a&&i<=o&&d.push(i);return n.min=a,n.max=o,n._unit=s.unit||function(t,e,i,n,a){var o,r;for(o=qi.length-1;o>=qi.indexOf(i);o--)if(r=qi[o],ji[r].common&&t._adapter.diff(a,n,r)>=e.length)return r;return qi[i?qi.indexOf(i):0]}(n,d,s.minUnit,n.min,n.max),n._majorUnit=Zi(n._unit),n._table=function(t,e,i,n){if("linear"===n||!t.length)return[{time:e,pos:0},{time:i,pos:1}];var a,o,r,s,l,d=[],u=[e];for(a=0,o=t.length;a<o;++a)(s=t[a])>e&&s<i&&u.push(s);for(u.push(i),a=0,o=u.length;a<o;++a)l=u[a+1],r=u[a-1],s=u[a],void 0!==r&&void 0!==l&&Math.round((l+r)/2)===s||d.push({time:s,pos:a/(o-1)});return d}(n._timestamps.data,a,o,r.distribution),n._offsets=function(t,e,i,n,a){var o,r,s=0,l=0;return a.offset&&e.length&&(a.time.min||(o=Xi(t,"time",e[0],"pos"),s=1===e.length?1-o:(Xi(t,"time",e[1],"pos")-o)/2),a.time.max||(r=Xi(t,"time",e[e.length-1],"pos"),l=1===e.length?r:(r-Xi(t,"time",e[e.length-2],"pos"))/2)),{start:s,end:l}}(n._table,d,0,0,r),r.ticks.reverse&&d.reverse(),function(t,e,i){var n,a,o,r,s=[];for(n=0,a=e.length;n<a;++n)o=e[n],r=!!i&&o===+t._adapter.startOf(o,i),s.push({value:o,major:r});return s}(n,d,n._majorUnit)},getLabelForIndex:function(t,e){var i=this,n=i._adapter,a=i.chart.data,o=i.options.time,r=a.labels&&t<a.labels.length?a.labels[t]:"",s=a.datasets[e].data[t];return ut.isObject(s)&&(r=i.getRightValue(s)),o.tooltipFormat?n.format(Ki(i,r),o.tooltipFormat):"string"==typeof r?r:n.format(Ki(i,r),o.displayFormats.datetime)},tickFormatFunction:function(t,e,i,n){var a=this._adapter,o=this.options,r=o.time.displayFormats,s=r[this._unit],l=this._majorUnit,d=r[l],u=+a.startOf(t,l),h=o.ticks.major,c=h.enabled&&l&&d&&t===u,f=a.format(t,n||(c?d:s)),g=c?h:o.ticks.minor,p=Vi(g.callback,g.userCallback);return p?p(f,e,i):f},convertTicksToLabels:function(t){var e,i,n=[];for(e=0,i=t.length;e<i;++e)n.push(this.tickFormatFunction(t[e].value,e,t));return n},getPixelForOffset:function(t){var e=this,i=e.options.ticks.reverse,n=e._horizontal?e.width:e.height,a=e._horizontal?i?e.right:e.left:i?e.bottom:e.top,o=Xi(e._table,"time",t,"pos"),r=n*(e._offsets.start+o)/(e._offsets.start+1+e._offsets.end);return i?a-r:a+r},getPixelForValue:function(t,e,i){var n=null;if(void 0!==e&&void 0!==i&&(n=this._timestamps.datasets[i][e]),null===n&&(n=Gi(this,t)),null!==n)return this.getPixelForOffset(n)},getPixelForTick:function(t){var e=this.getTicks();return t>=0&&t<e.length?this.getPixelForOffset(e[t].value):null},getValueForPixel:function(t){var e=this,i=e._horizontal?e.width:e.height,n=e._horizontal?e.left:e.top,a=(i?(t-n)/i:0)*(e._offsets.start+1+e._offsets.start)-e._offsets.end,o=Xi(e._table,"pos",a,"time");return e._adapter._create(o)},getLabelWidth:function(t){var e=this.options.ticks,i=this.ctx.measureText(t).width,n=ut.toRadians(e.maxRotation),a=Math.cos(n),o=Math.sin(n);return i*a+Vi(e.fontSize,st.global.defaultFontSize)*o},getLabelCapacity:function(t){var e=this,i=e.options.time.displayFormats.millisecond,n=e.tickFormatFunction(t,0,[],i),a=e.getLabelWidth(n),o=e.isHorizontal()?e.width:e.height,r=Math.floor(o/a);return r>0?r:1}}),Qi={position:"bottom",distribution:"linear",bounds:"data",adapters:{},time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}};Ji._defaults=Qi;var tn={category:gi,linear:yi,logarithmic:Ci,radialLinear:Ni,time:Ji},en={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};si._date.override("function"==typeof t?{_id:"moment",formats:function(){return en},parse:function(e,i){return"string"==typeof e&&"string"==typeof i?e=t(e,i):e instanceof t||(e=t(e)),e.isValid()?e.valueOf():null},format:function(e,i){return t(e).format(i)},add:function(e,i,n){return t(e).add(i,n).valueOf()},diff:function(e,i,n){return t.duration(t(e).diff(t(i))).as(n)},startOf:function(e,i,n){return e=t(e),"isoWeek"===i?e.isoWeekday(n).valueOf():e.startOf(i).valueOf()},endOf:function(e,i){return t(e).endOf(i).valueOf()},_create:function(e){return t(e)}}:{}),st._set("global",{plugins:{filler:{propagate:!0}}});var nn={dataset:function(t){var e=t.fill,i=t.chart,n=i.getDatasetMeta(e),a=n&&i.isDatasetVisible(e)&&n.dataset._children||[],o=a.length||0;return o?function(t,e){return e<o&&a[e]._view||null}:null},boundary:function(t){var e=t.boundary,i=e?e.x:null,n=e?e.y:null;return function(t){return{x:null===i?t.x:i,y:null===n?t.y:n}}}};function an(t,e,i){var n,a=t._model||{},o=a.fill;if(void 0===o&&(o=!!a.backgroundColor),!1===o||null===o)return!1;if(!0===o)return"origin";if(n=parseFloat(o,10),isFinite(n)&&Math.floor(n)===n)return"-"!==o[0]&&"+"!==o[0]||(n=e+n),!(n===e||n<0||n>=i)&&n;switch(o){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return o;default:return!1}}function on(t){var e,i=t.el._model||{},n=t.el._scale||{},a=t.fill,o=null;if(isFinite(a))return null;if("start"===a?o=void 0===i.scaleBottom?n.bottom:i.scaleBottom:"end"===a?o=void 0===i.scaleTop?n.top:i.scaleTop:void 0!==i.scaleZero?o=i.scaleZero:n.getBasePosition?o=n.getBasePosition():n.getBasePixel&&(o=n.getBasePixel()),null!=o){if(void 0!==o.x&&void 0!==o.y)return o;if(ut.isFinite(o))return{x:(e=n.isHorizontal())?o:null,y:e?null:o}}return null}function rn(t,e,i){var n,a=t[e].fill,o=[e];if(!i)return a;for(;!1!==a&&-1===o.indexOf(a);){if(!isFinite(a))return a;if(!(n=t[a]))return!1;if(n.visible)return a;o.push(a),a=n.fill}return!1}function sn(t){var e=t.fill,i="dataset";return!1===e?null:(isFinite(e)||(i="boundary"),nn[i](t))}function ln(t){return t&&!t.skip}function dn(t,e,i,n,a){var o;if(n&&a){for(t.moveTo(e[0].x,e[0].y),o=1;o<n;++o)ut.canvas.lineTo(t,e[o-1],e[o]);for(t.lineTo(i[a-1].x,i[a-1].y),o=a-1;o>0;--o)ut.canvas.lineTo(t,i[o],i[o-1],!0)}}var un={id:"filler",afterDatasetsUpdate:function(t,e){var i,n,a,o,r=(t.data.datasets||[]).length,s=e.propagate,l=[];for(n=0;n<r;++n)o=null,(a=(i=t.getDatasetMeta(n)).dataset)&&a._model&&a instanceof Wt.Line&&(o={visible:t.isDatasetVisible(n),fill:an(a,n,r),chart:t,el:a}),i.$filler=o,l.push(o);for(n=0;n<r;++n)(o=l[n])&&(o.fill=rn(l,n,s),o.boundary=on(o),o.mapper=sn(o))},beforeDatasetDraw:function(t,e){var i=e.meta.$filler;if(i){var n=t.ctx,a=i.el,o=a._view,r=a._children||[],s=i.mapper,l=o.backgroundColor||st.global.defaultColor;s&&l&&r.length&&(ut.canvas.clipArea(n,t.chartArea),function(t,e,i,n,a,o){var r,s,l,d,u,h,c,f=e.length,g=n.spanGaps,p=[],m=[],v=0,b=0;for(t.beginPath(),r=0,s=f+!!o;r<s;++r)u=i(d=e[l=r%f]._view,l,n),h=ln(d),c=ln(u),h&&c?(v=p.push(d),b=m.push(u)):v&&b&&(g?(h&&p.push(d),c&&m.push(u)):(dn(t,p,m,v,b),v=b=0,p=[],m=[]));dn(t,p,m,v,b),t.closePath(),t.fillStyle=a,t.fill()}(n,r,s,o,l,a._loop),ut.canvas.unclipArea(n))}}},hn=ut.noop,cn=ut.valueOrDefault;function fn(t,e){return t.usePointStyle&&t.boxWidth>e?e:t.boxWidth}st._set("global",{legend:{display:!0,position:"top",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var i=e.datasetIndex,n=this.chart,a=n.getDatasetMeta(i);a.hidden=null===a.hidden?!n.data.datasets[i].hidden:null,n.update()},onHover:null,onLeave:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data;return ut.isArray(e.datasets)?e.datasets.map(function(e,i){return{text:e.label,fillStyle:ut.isArray(e.backgroundColor)?e.backgroundColor[0]:e.backgroundColor,hidden:!t.isDatasetVisible(i),lineCap:e.borderCapStyle,lineDash:e.borderDash,lineDashOffset:e.borderDashOffset,lineJoin:e.borderJoinStyle,lineWidth:e.borderWidth,strokeStyle:e.borderColor,pointStyle:e.pointStyle,datasetIndex:i}},this):[]}}},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');for(var i=0;i<t.data.datasets.length;i++)e.push('<li><span style="background-color:'+t.data.datasets[i].backgroundColor+'"></span>'),t.data.datasets[i].label&&e.push(t.data.datasets[i].label),e.push("</li>");return e.push("</ul>"),e.join("")}});var gn=pt.extend({initialize:function(t){ut.extend(this,t),this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1},beforeUpdate:hn,update:function(t,e,i){var n=this;return n.beforeUpdate(),n.maxWidth=t,n.maxHeight=e,n.margins=i,n.beforeSetDimensions(),n.setDimensions(),n.afterSetDimensions(),n.beforeBuildLabels(),n.buildLabels(),n.afterBuildLabels(),n.beforeFit(),n.fit(),n.afterFit(),n.afterUpdate(),n.minSize},afterUpdate:hn,beforeSetDimensions:hn,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:hn,beforeBuildLabels:hn,buildLabels:function(){var t=this,e=t.options.labels||{},i=ut.callback(e.generateLabels,[t.chart],t)||[];e.filter&&(i=i.filter(function(i){return e.filter(i,t.chart.data)})),t.options.reverse&&i.reverse(),t.legendItems=i},afterBuildLabels:hn,beforeFit:hn,fit:function(){var t=this,e=t.options,i=e.labels,n=e.display,a=t.ctx,o=ut.options._parseFont(i),r=o.size,s=t.legendHitBoxes=[],l=t.minSize,d=t.isHorizontal();if(d?(l.width=t.maxWidth,l.height=n?10:0):(l.width=n?10:0,l.height=t.maxHeight),n)if(a.font=o.string,d){var u=t.lineWidths=[0],h=0;a.textAlign="left",a.textBaseline="top",ut.each(t.legendItems,function(t,e){var n=fn(i,r)+r/2+a.measureText(t.text).width;(0===e||u[u.length-1]+n+i.padding>l.width)&&(h+=r+i.padding,u[u.length-(e>0?0:1)]=i.padding),s[e]={left:0,top:0,width:n,height:r},u[u.length-1]+=n+i.padding}),l.height+=h}else{var c=i.padding,f=t.columnWidths=[],g=i.padding,p=0,m=0,v=r+c;ut.each(t.legendItems,function(t,e){var n=fn(i,r)+r/2+a.measureText(t.text).width;e>0&&m+v>l.height-c&&(g+=p+i.padding,f.push(p),p=0,m=0),p=Math.max(p,n),m+=v,s[e]={left:0,top:0,width:n,height:r}}),g+=p,f.push(p),l.width+=g}t.width=l.width,t.height=l.height},afterFit:hn,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,e=t.options,i=e.labels,n=st.global,a=n.defaultColor,o=n.elements.line,r=t.width,s=t.lineWidths;if(e.display){var l,d=t.ctx,u=cn(i.fontColor,n.defaultFontColor),h=ut.options._parseFont(i),c=h.size;d.textAlign="left",d.textBaseline="middle",d.lineWidth=.5,d.strokeStyle=u,d.fillStyle=u,d.font=h.string;var f=fn(i,c),g=t.legendHitBoxes,p=t.isHorizontal();l=p?{x:t.left+(r-s[0])/2+i.padding,y:t.top+i.padding,line:0}:{x:t.left+i.padding,y:t.top+i.padding,line:0};var m=c+i.padding;ut.each(t.legendItems,function(n,u){var h=d.measureText(n.text).width,v=f+c/2+h,b=l.x,x=l.y;p?u>0&&b+v+i.padding>t.left+t.minSize.width&&(x=l.y+=m,l.line++,b=l.x=t.left+(r-s[l.line])/2+i.padding):u>0&&x+m>t.top+t.minSize.height&&(b=l.x=b+t.columnWidths[l.line]+i.padding,x=l.y=t.top+i.padding,l.line++),function(t,i,n){if(!(isNaN(f)||f<=0)){d.save();var r=cn(n.lineWidth,o.borderWidth);if(d.fillStyle=cn(n.fillStyle,a),d.lineCap=cn(n.lineCap,o.borderCapStyle),d.lineDashOffset=cn(n.lineDashOffset,o.borderDashOffset),d.lineJoin=cn(n.lineJoin,o.borderJoinStyle),d.lineWidth=r,d.strokeStyle=cn(n.strokeStyle,a),d.setLineDash&&d.setLineDash(cn(n.lineDash,o.borderDash)),e.labels&&e.labels.usePointStyle){var s=f*Math.SQRT2/2,l=t+f/2,u=i+c/2;ut.canvas.drawPoint(d,n.pointStyle,s,l,u)}else 0!==r&&d.strokeRect(t,i,f,c),d.fillRect(t,i,f,c);d.restore()}}(b,x,n),g[u].left=b,g[u].top=x,function(t,e,i,n){var a=c/2,o=f+a+t,r=e+a;d.fillText(i.text,o,r),i.hidden&&(d.beginPath(),d.lineWidth=2,d.moveTo(o,r),d.lineTo(o+n,r),d.stroke())}(b,x,n,h),p?l.x+=v+i.padding:l.y+=m})}},_getLegendItemAt:function(t,e){var i,n,a,o=this;if(t>=o.left&&t<=o.right&&e>=o.top&&e<=o.bottom)for(a=o.legendHitBoxes,i=0;i<a.length;++i)if(t>=(n=a[i]).left&&t<=n.left+n.width&&e>=n.top&&e<=n.top+n.height)return o.legendItems[i];return null},handleEvent:function(t){var e,i=this,n=i.options,a="mouseup"===t.type?"click":t.type;if("mousemove"===a){if(!n.onHover&&!n.onLeave)return}else{if("click"!==a)return;if(!n.onClick)return}e=i._getLegendItemAt(t.x,t.y),"click"===a?e&&n.onClick&&n.onClick.call(i,t.native,e):(n.onLeave&&e!==i._hoveredItem&&(i._hoveredItem&&n.onLeave.call(i,t.native,i._hoveredItem),i._hoveredItem=e),n.onHover&&e&&n.onHover.call(i,t.native,e))}});function pn(t,e){var i=new gn({ctx:t.ctx,options:e,chart:t});ke.configure(t,i,e),ke.addBox(t,i),t.legend=i}var mn={id:"legend",_element:gn,beforeInit:function(t){var e=t.options.legend;e&&pn(t,e)},beforeUpdate:function(t){var e=t.options.legend,i=t.legend;e?(ut.mergeIf(e,st.global.legend),i?(ke.configure(t,i,e),i.options=e):pn(t,e)):i&&(ke.removeBox(t,i),delete t.legend)},afterEvent:function(t,e){var i=t.legend;i&&i.handleEvent(e)}},vn=ut.noop;st._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,padding:10,position:"top",text:"",weight:2e3}});var bn=pt.extend({initialize:function(t){ut.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:vn,update:function(t,e,i){var n=this;return n.beforeUpdate(),n.maxWidth=t,n.maxHeight=e,n.margins=i,n.beforeSetDimensions(),n.setDimensions(),n.afterSetDimensions(),n.beforeBuildLabels(),n.buildLabels(),n.afterBuildLabels(),n.beforeFit(),n.fit(),n.afterFit(),n.afterUpdate(),n.minSize},afterUpdate:vn,beforeSetDimensions:vn,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:vn,beforeBuildLabels:vn,buildLabels:vn,afterBuildLabels:vn,beforeFit:vn,fit:function(){var t=this,e=t.options,i=e.display,n=t.minSize,a=ut.isArray(e.text)?e.text.length:1,o=ut.options._parseFont(e),r=i?a*o.lineHeight+2*e.padding:0;t.isHorizontal()?(n.width=t.maxWidth,n.height=r):(n.width=r,n.height=t.maxHeight),t.width=n.width,t.height=n.height},afterFit:vn,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,i=t.options;if(i.display){var n,a,o,r=ut.options._parseFont(i),s=r.lineHeight,l=s/2+i.padding,d=0,u=t.top,h=t.left,c=t.bottom,f=t.right;e.fillStyle=ut.valueOrDefault(i.fontColor,st.global.defaultFontColor),e.font=r.string,t.isHorizontal()?(a=h+(f-h)/2,o=u+l,n=f-h):(a="left"===i.position?h+l:f-l,o=u+(c-u)/2,n=c-u,d=Math.PI*("left"===i.position?-.5:.5)),e.save(),e.translate(a,o),e.rotate(d),e.textAlign="center",e.textBaseline="middle";var g=i.text;if(ut.isArray(g))for(var p=0,m=0;m<g.length;++m)e.fillText(g[m],0,p,n),p+=s;else e.fillText(g,0,0,n);e.restore()}}});function xn(t,e){var i=new bn({ctx:t.ctx,options:e,chart:t});ke.configure(t,i,e),ke.addBox(t,i),t.titleBlock=i}var yn={},kn=un,wn=mn,Mn={id:"title",_element:bn,beforeInit:function(t){var e=t.options.title;e&&xn(t,e)},beforeUpdate:function(t){var e=t.options.title,i=t.titleBlock;e?(ut.mergeIf(e,st.global.title),i?(ke.configure(t,i,e),i.options=e):xn(t,e)):i&&(ke.removeBox(t,i),delete t.titleBlock)}};for(var _n in yn.filler=kn,yn.legend=wn,yn.title=Mn,ai.helpers=ut,function(){function t(t,e,i){var n;return"string"==typeof t?(n=parseInt(t,10),-1!==t.indexOf("%")&&(n=n/100*e.parentNode[i])):n=t,n}function e(t){return null!=t&&"none"!==t}function i(i,n,a){var o=document.defaultView,r=ut._getParentNode(i),s=o.getComputedStyle(i)[n],l=o.getComputedStyle(r)[n],d=e(s),u=e(l),h=Number.POSITIVE_INFINITY;return d||u?Math.min(d?t(s,i,a):h,u?t(l,r,a):h):"none"}ut.where=function(t,e){if(ut.isArray(t)&&Array.prototype.filter)return t.filter(e);var i=[];return ut.each(t,function(t){e(t)&&i.push(t)}),i},ut.findIndex=Array.prototype.findIndex?function(t,e,i){return t.findIndex(e,i)}:function(t,e,i){i=void 0===i?t:i;for(var n=0,a=t.length;n<a;++n)if(e.call(i,t[n],n,t))return n;return-1},ut.findNextWhere=function(t,e,i){ut.isNullOrUndef(i)&&(i=-1);for(var n=i+1;n<t.length;n++){var a=t[n];if(e(a))return a}},ut.findPreviousWhere=function(t,e,i){ut.isNullOrUndef(i)&&(i=t.length);for(var n=i-1;n>=0;n--){var a=t[n];if(e(a))return a}},ut.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},ut.almostEquals=function(t,e,i){return Math.abs(t-e)<i},ut.almostWhole=function(t,e){var i=Math.round(t);return i-e<t&&i+e>t},ut.max=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.max(t,e)},Number.NEGATIVE_INFINITY)},ut.min=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.min(t,e)},Number.POSITIVE_INFINITY)},ut.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0==(t=+t)||isNaN(t)?t:t>0?1:-1},ut.log10=Math.log10?function(t){return Math.log10(t)}:function(t){var e=Math.log(t)*Math.LOG10E,i=Math.round(e);return t===Math.pow(10,i)?i:e},ut.toRadians=function(t){return t*(Math.PI/180)},ut.toDegrees=function(t){return t*(180/Math.PI)},ut._decimalPlaces=function(t){if(ut.isFinite(t)){for(var e=1,i=0;Math.round(t*e)/e!==t;)e*=10,i++;return i}},ut.getAngleFromPoint=function(t,e){var i=e.x-t.x,n=e.y-t.y,a=Math.sqrt(i*i+n*n),o=Math.atan2(n,i);return o<-.5*Math.PI&&(o+=2*Math.PI),{angle:o,distance:a}},ut.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},ut.aliasPixel=function(t){return t%2==0?0:.5},ut._alignPixel=function(t,e,i){var n=t.currentDevicePixelRatio,a=i/2;return Math.round((e-a)*n)/n+a},ut.splineCurve=function(t,e,i,n){var a=t.skip?e:t,o=e,r=i.skip?e:i,s=Math.sqrt(Math.pow(o.x-a.x,2)+Math.pow(o.y-a.y,2)),l=Math.sqrt(Math.pow(r.x-o.x,2)+Math.pow(r.y-o.y,2)),d=s/(s+l),u=l/(s+l),h=n*(d=isNaN(d)?0:d),c=n*(u=isNaN(u)?0:u);return{previous:{x:o.x-h*(r.x-a.x),y:o.y-h*(r.y-a.y)},next:{x:o.x+c*(r.x-a.x),y:o.y+c*(r.y-a.y)}}},ut.EPSILON=Number.EPSILON||1e-14,ut.splineCurveMonotone=function(t){var e,i,n,a,o,r,s,l,d,u=(t||[]).map(function(t){return{model:t._model,deltaK:0,mK:0}}),h=u.length;for(e=0;e<h;++e)if(!(n=u[e]).model.skip){if(i=e>0?u[e-1]:null,(a=e<h-1?u[e+1]:null)&&!a.model.skip){var c=a.model.x-n.model.x;n.deltaK=0!==c?(a.model.y-n.model.y)/c:0}!i||i.model.skip?n.mK=n.deltaK:!a||a.model.skip?n.mK=i.deltaK:this.sign(i.deltaK)!==this.sign(n.deltaK)?n.mK=0:n.mK=(i.deltaK+n.deltaK)/2}for(e=0;e<h-1;++e)n=u[e],a=u[e+1],n.model.skip||a.model.skip||(ut.almostEquals(n.deltaK,0,this.EPSILON)?n.mK=a.mK=0:(o=n.mK/n.deltaK,r=a.mK/n.deltaK,(l=Math.pow(o,2)+Math.pow(r,2))<=9||(s=3/Math.sqrt(l),n.mK=o*s*n.deltaK,a.mK=r*s*n.deltaK)));for(e=0;e<h;++e)(n=u[e]).model.skip||(i=e>0?u[e-1]:null,a=e<h-1?u[e+1]:null,i&&!i.model.skip&&(d=(n.model.x-i.model.x)/3,n.model.controlPointPreviousX=n.model.x-d,n.model.controlPointPreviousY=n.model.y-d*n.mK),a&&!a.model.skip&&(d=(a.model.x-n.model.x)/3,n.model.controlPointNextX=n.model.x+d,n.model.controlPointNextY=n.model.y+d*n.mK))},ut.nextItem=function(t,e,i){return i?e>=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},ut.previousItem=function(t,e,i){return i?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},ut.niceNum=function(t,e){var i=Math.floor(ut.log10(t)),n=t/Math.pow(10,i);return(e?n<1.5?1:n<3?2:n<7?5:10:n<=1?1:n<=2?2:n<=5?5:10)*Math.pow(10,i)},ut.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},ut.getRelativePosition=function(t,e){var i,n,a=t.originalEvent||t,o=t.target||t.srcElement,r=o.getBoundingClientRect(),s=a.touches;s&&s.length>0?(i=s[0].clientX,n=s[0].clientY):(i=a.clientX,n=a.clientY);var l=parseFloat(ut.getStyle(o,"padding-left")),d=parseFloat(ut.getStyle(o,"padding-top")),u=parseFloat(ut.getStyle(o,"padding-right")),h=parseFloat(ut.getStyle(o,"padding-bottom")),c=r.right-r.left-l-u,f=r.bottom-r.top-d-h;return{x:i=Math.round((i-r.left-l)/c*o.width/e.currentDevicePixelRatio),y:n=Math.round((n-r.top-d)/f*o.height/e.currentDevicePixelRatio)}},ut.getConstraintWidth=function(t){return i(t,"max-width","clientWidth")},ut.getConstraintHeight=function(t){return i(t,"max-height","clientHeight")},ut._calculatePadding=function(t,e,i){return(e=ut.getStyle(t,e)).indexOf("%")>-1?i*parseInt(e,10)/100:parseInt(e,10)},ut._getParentNode=function(t){var e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e},ut.getMaximumWidth=function(t){var e=ut._getParentNode(t);if(!e)return t.clientWidth;var i=e.clientWidth,n=i-ut._calculatePadding(e,"padding-left",i)-ut._calculatePadding(e,"padding-right",i),a=ut.getConstraintWidth(t);return isNaN(a)?n:Math.min(n,a)},ut.getMaximumHeight=function(t){var e=ut._getParentNode(t);if(!e)return t.clientHeight;var i=e.clientHeight,n=i-ut._calculatePadding(e,"padding-top",i)-ut._calculatePadding(e,"padding-bottom",i),a=ut.getConstraintHeight(t);return isNaN(a)?n:Math.min(n,a)},ut.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},ut.retinaScale=function(t,e){var i=t.currentDevicePixelRatio=e||"undefined"!=typeof window&&window.devicePixelRatio||1;if(1!==i){var n=t.canvas,a=t.height,o=t.width;n.height=a*i,n.width=o*i,t.ctx.scale(i,i),n.style.height||n.style.width||(n.style.height=a+"px",n.style
|