Cerber Security & Antispam - Version 8.6.5

Version Description

  • New: File system analytics. It's generated based on the results of the last full integrity scan.
  • New: Logging user deletions. The users display name and roles are temporarily stored until all log entries related to the user are deleted.
  • New: Faster export with a new date format for CSV log export.
  • New: Ability to disable adding the website administrator's IP address to the White IP Access List upon WP Cerber activation.
  • Improved: Handling the creation of new users by WooCommerce and membership plugins.
  • Improved: Handling user registrations with prohibited emails.
  • Improved: Handling secure Cerbers cookies on websites with SSL encryption enabled.
  • Improved: The performance of the integrity checker and malware scanner on huge websites with a large number of files.
  • Fixed: Loading the default plugin settings has no effect. Now its fixed and moved from the admin sidebar to the Tools admin page.
  • Read more
Download this release

Release Info

Developer Gioni
Plugin Icon 128x128 Cerber Security & Antispam
Version 8.6.5
Comparing to
See all releases

Code changes from version 8.6.3 to 8.6.5

admin/cerber-admin.php ADDED
@@ -0,0 +1,1378 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ Copyright (C) 2015-20 CERBER TECH INC., https://cerber.tech
4
+ Copyright (C) 2015-20 CERBER TECH INC., https://wpcerber.com
5
+
6
+ Licenced under the GNU GPL.
7
+
8
+ This program is free software; you can redistribute it and/or modify
9
+ it under the terms of the GNU General Public License as published by
10
+ the Free Software Foundation; either version 3 of the License, or
11
+ (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
+
18
+ You should have received a copy of the GNU General Public License
19
+ along with this program; if not, write to the Free Software
20
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
+
22
+ */
23
+
24
+ /*
25
+
26
+ *========================================================================*
27
+ | |
28
+ | ATTENTION! Do not change or edit this file! |
29
+ | |
30
+ *========================================================================*
31
+
32
+ */
33
+
34
+ // Scan dashboard ===========================================================
35
+
36
+ function cerber_scanner_dashboard( $msg = '' ) {
37
+ ?>
38
+ <div id="crb-scan-display">
39
+ <div id="crb-the-table">
40
+ <div class="crb-scan-info scan-tile">
41
+ <table>
42
+ <tr>
43
+ <td><?php _e( 'Started', 'wp-cerber' ); ?></td>
44
+ <td id="crb-started" data-init="-">-</td>
45
+ </tr>
46
+ <tr>
47
+ <td><?php _e( 'Finished', 'wp-cerber' ); ?></td>
48
+ <td id="crb-finished" data-init="-">-</td>
49
+ </tr>
50
+ <tr>
51
+ <td><?php _e( 'Duration', 'wp-cerber' ); ?></td>
52
+ <td id="crb-duration" data-init="-">-</td>
53
+ </tr>
54
+ <tr>
55
+ <td><?php _e( 'Performance', 'wp-cerber' ); ?></td>
56
+ <td id="crb-performance" data-init="-">-</td>
57
+ </tr>
58
+ <tr>
59
+ <td>Mode</td>
60
+ <td id="crb-smode" data-init="-">-</td>
61
+ </tr>
62
+ </table>
63
+ </div>
64
+ <div id="crb-scan-filter" class="crb-scan-info scan-tile">
65
+ <table>
66
+ <!--<tr id="crb-numbers-4">
67
+ <td><span><?php _e( 'Vulnerabilities', 'wp-cerber' ); ?></span></td>
68
+ <td class="crb-scan-number" data-init="-">-</td>
69
+ </tr> -->
70
+ <tr id="crb-numbers-51">
71
+ <td><span data-itype-list="[51]"><?php _e( 'New files', 'wp-cerber' ); ?></span></td>
72
+ <td class="crb-scan-number" data-init="-">-</td>
73
+ </tr>
74
+ <tr id="crb-numbers-50">
75
+ <td><span data-itype-list="[50]"><?php _e( 'Changed files', 'wp-cerber' ); ?></span></td>
76
+ <td class="crb-scan-number" data-init="-">-</td>
77
+ </tr>
78
+ <tr id="crb-numbers-15">
79
+ <td><span data-itype-list="[15]"><?php _e( 'Checksum mismatch', 'wp-cerber' ); ?></span></td>
80
+ <td class="crb-scan-number" data-init="-">-</td>
81
+ </tr>
82
+ <tr id="crb-numbers-30">
83
+ <td><span data-itype-list="[30]"><?php _e( 'Unwanted extensions', 'wp-cerber' ); ?></span></td>
84
+ <td class="crb-scan-number" data-init="-">-</td>
85
+ </tr>
86
+ <tr id="crb-numbers-18">
87
+ <td><span data-itype-list="[18]" data-setype-list="[21]"><?php _e( 'Unattended files', 'wp-cerber' ); ?></span></td>
88
+ <td class="crb-scan-number" data-init="-">-</td>
89
+ </tr>
90
+ </table>
91
+ </div>
92
+ <div class="scan-tile">
93
+ <div><p><span id="crb-scanned-files" data-init="0">0</span> / <span id="crb-total-files"
94
+ data-init="0">0</span>
95
+ </p>
96
+ <p><?php echo __( 'Scanned', 'wp-cerber' ) . ' / ' . __( 'Files to scan', 'wp-cerber' ); ?></p>
97
+ </div>
98
+ </div>
99
+
100
+ <div class="scan-tile">
101
+ <div><p><span id="crb-critical" data-init="0">0</span> / <span id="crb-warning" data-init="0">0</span>
102
+ </p>
103
+ <p><?php _e( 'Critical issues', 'wp-cerber' ); ?> / <?php _e( 'Issues total', 'wp-cerber' ); ?></p>
104
+ </div>
105
+ </div>
106
+
107
+ </div>
108
+
109
+ <div id="crb-scan-progress">
110
+ <div>
111
+ <div id="the-scan-bar"></div>
112
+ </div>
113
+ </div>
114
+
115
+ <p id="crb-scan-message"><?php echo $msg; ?></p>
116
+
117
+ </div>
118
+ <div id="crb-scan-details">
119
+ <table class="crb-table" id="crb-browse-files">
120
+ <?php
121
+ $rows = array();
122
+ $rows[] = '<tr class="crb-scan-container" id="crb-wordpress" style=""><td colspan="6">WordPress</td></tr>';
123
+ $rows[] = '<tr class="crb-scan-container" id="crb-muplugins" style=""><td colspan="6">Must use plugins</td></tr>';
124
+ $rows[] = '<tr class="crb-scan-container" id="crb-dropins" style=""><td colspan="6">Drop-ins</td></tr>';
125
+ $rows[] = '<tr class="crb-scan-container" id="crb-plugins" style=""><td colspan="6">Plugins</td></tr>';
126
+
127
+ /*
128
+ $plugins = get_plugins();
129
+ foreach ( $plugins as $plugin ) {
130
+ $rows[] = '<tr class="crb-scan-section" id="' . sha1( $plugin['Name'] ) . '" style="display:none;"></tr>';
131
+ }
132
+ */
133
+ $rows[] = '<tr class="crb-scan-container" id="crb-themes" style=""><td colspan="6">Themes</td></tr>';
134
+
135
+ /*$themes = wp_get_themes();
136
+ foreach ( $themes as $theme_folder => $theme ) {
137
+ $rows[] = '<tr class="crb-scan-section" id="' . sha1( $theme->get( 'Name' ) ) . '" style="display:none;"></tr>';
138
+ }*/
139
+
140
+ $rows[] = '<tr class="crb-scan-container" id="crb-uploads" style=""><td colspan="6">Uploads folder</td></tr>';
141
+ $rows[] = '<tr class="crb-scan-container" id="crb-unattended" style=""><td colspan="6">Unattended files</td></tr>';
142
+ echo implode( "\n", $rows );
143
+ ?>
144
+ </table>
145
+ </div>
146
+
147
+ <?php
148
+
149
+ cerber_ref_upload_form();
150
+ }
151
+
152
+ function cerber_show_scanner() {
153
+ // http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html
154
+
155
+ $msg = '';
156
+ $status = 0;
157
+
158
+ if ( $scan = cerber_get_scan() ) {
159
+ if ( ! $scan['finished'] ) {
160
+ if ( $scan['cloud']
161
+ && cerber_is_cloud_enabled()
162
+ && $scan['started'] > ( time() - 900 )
163
+ ) {
164
+ $msg = __( 'Currently a scheduled scan in progress. Please wait until it is finished.', 'wp-cerber' );
165
+ $status = 1;
166
+ }
167
+ else {
168
+ $msg = sprintf( __( 'Previous scan started %s has not been completed. Continue scanning?', 'wp-cerber' ), cerber_date( $scan['started'], false ) );
169
+ $status = 2;
170
+ }
171
+ }
172
+ else {
173
+
174
+ }
175
+ }
176
+ else {
177
+ $msg = __( 'It seems this website has never been scanned. To start scanning click the button below.', 'wp-cerber' );
178
+ }
179
+
180
+ $start_quick = '<input data-control="start_scan" data-mode="quick" type="button" value="' . __( 'Start Quick Scan', 'wp-cerber' ) . '" class="button button-primary">';
181
+ $start_full = '<input data-control="start_scan" data-mode="full" type="button" value="' . __( 'Start Full Scan', 'wp-cerber' ) . '" class="button button-primary">';
182
+ $stop = '<input id="crb-stop-scan" style="display: none;" data-control="stop_scan" type="button" value="' . __( 'Stop Scanning', 'wp-cerber' ) . '" class="button button-primary">';
183
+ $continue = '<input id="crb-continue-scan" data-control="continue_scan" type="button" value="' . __( 'Continue Scanning', 'wp-cerber' ) . '" class="button button-primary">';
184
+ $controls = '';
185
+
186
+ switch ( $status ) {
187
+ case 0:
188
+ $controls = $start_quick . $start_full;
189
+ break;
190
+ case 1:
191
+ $controls = '';
192
+ break;
193
+ case 2:
194
+ $controls = $start_quick . $start_full . $continue;
195
+ break;
196
+ }
197
+
198
+ $controls .= $stop;
199
+
200
+
201
+ echo '<div id="crb-scanner">';
202
+
203
+ cerber_scanner_dashboard( $msg );
204
+
205
+ $d = '';
206
+ if ( nexus_is_valid_request() && ! nexus_is_granted( 'submit' ) ) {
207
+ $d = 'disabled="disabled"';
208
+ }
209
+
210
+ ?>
211
+ <div id="crb-scan-area">
212
+ <form>
213
+ <table id="crb-scan-controls">
214
+ <tr>
215
+ <td id="crb-file-controls">
216
+ <input data-control="delete_file" type="button"
217
+ class="button button-secondary"
218
+ <?php echo $d; ?>
219
+ value="<?php _e( 'Delete', 'wp-cerber' ); ?>"/>
220
+ <input data-control="ignore_add_file" type="button" class="button button-secondary"
221
+ <?php echo $d; ?>
222
+ value="<?php _e( 'Ignore', 'wp-cerber' ); ?>"/>
223
+ </td>
224
+ <td>
225
+ <?php echo $controls; ?>
226
+ </td>
227
+ <!-- <td><a href="#" data-control="full-paths">Show full paths</a></td> -->
228
+ <td><a href="#" class="dashicons dashicons-list-view" data-control="full-paths"
229
+ title="Toggle full/relative paths"></a></td>
230
+ </tr>
231
+ </table>
232
+ </form>
233
+ </div>
234
+
235
+ <?php
236
+
237
+ echo '</div>';
238
+ }
239
+
240
+ function cerber_ref_upload_form() {
241
+ ?>
242
+ <div id="crb-ref-upload-dialog" style="display: none;">
243
+ <p><?php _e( 'We have not found any integrity data to verify', 'wp-cerber' ); ?> <span
244
+ id="ref-section-name"></span>.</p>
245
+ <p><?php _e( "You have to upload a ZIP archive from which you've installed it. This enables the security scanner to verify the integrity of the code and detect malware.", 'wp-cerber' ); ?></p>
246
+ <p><?php echo sprintf( __( 'Maximum upload file size: %s.' ), esc_html( size_format( wp_max_upload_size() ) ) ); ?></p>
247
+ <form enctype="multipart/form-data">
248
+ <input type="file" name="refile" id="refile" required="required" accept=".zip">
249
+ <input type="submit" name="submit" value="<?php _e( 'Upload file', 'wp-cerber' ); ?>"
250
+ class="button button-primary">
251
+ <ul style="list-style: none;">
252
+ <li style="display:none;" class="crb-status-msg">Uploading the file, please wait&#8230;</li>
253
+ <li style="display:none;" class="crb-status-msg">Processing the file, please wait&#8230;</li>
254
+ </ul>
255
+ </form>
256
+ </div>
257
+
258
+ <?php
259
+ }
260
+
261
+ add_action( 'wp_ajax_cerber_scan_control', 'cerber_manual_scan' );
262
+ function cerber_manual_scan() {
263
+
264
+ cerber_check_ajax_permissions();
265
+
266
+ ob_start(); // Collecting possible junk warnings and notices cause we need clean JSON to be sent
267
+
268
+ $scanner = array();
269
+ $console_log = array();
270
+ $scan_do = '';
271
+
272
+ if ( cerber_is_http_post() && $scan_do = crb_get_post_fields( 'cerber_scan_do' ) ) {
273
+ $scan_do = preg_replace( '/[^a-z_\-\d]/i', '', $scan_do );
274
+ $mode = ( $mode = crb_get_post_fields( 'cerber_scan_mode' ) ) ? preg_replace( '/[^a-z_\-\d]/i', '', $mode ) : 'quick';
275
+
276
+ $scanner = cerber_scanner( $scan_do, $mode );
277
+
278
+ }
279
+ else {
280
+ $console_log[] = 'Unknown HTTP request';
281
+ }
282
+
283
+ $next_do = ( ! empty( $scanner['cerber_scan_do'] ) ) ? $scanner['cerber_scan_do'] : 'stop';
284
+
285
+ $console_log = array_merge( $console_log, cerber_db_get_errors() );
286
+
287
+ $console_log[] = 'PHP MEMORY ' . @ini_get( 'memory_limit' );
288
+
289
+ $ret = array(
290
+ 'console_log' => $console_log,
291
+ 'cerber_scan_do' => $next_do,
292
+ 'cerber_scanner' => $scanner,
293
+ //'scan' => cerber_get_scan(), // debug only
294
+ );
295
+
296
+ if ( $scan_do != 'continue_scan' ) {
297
+ $ret['strings'] = cerber_get_strings();
298
+ }
299
+
300
+ ob_end_clean();
301
+
302
+ echo json_encode( $ret );
303
+
304
+ crb_admin_stop_ajax();
305
+ }
306
+
307
+ /**
308
+ * File viewer, server side AJAX
309
+ *
310
+ */
311
+ add_action( 'wp_ajax_cerber_view_file', function () {
312
+ global $crb_assets_url;
313
+
314
+ cerber_check_ajax_permissions();
315
+
316
+ $get = crb_get_query_params();
317
+ $file_name = $get['file'];
318
+
319
+ if ( ! @is_file( $file_name ) ) {
320
+ crb_admin_stop_ajax( 'I/O Error' );
321
+
322
+ return;
323
+ }
324
+
325
+ $file_size = filesize( $file_name );
326
+
327
+ if ( $file_size > 8000000 ) {
328
+ crb_admin_stop_ajax( 'Error: This file is too large to display.' );
329
+
330
+ return;
331
+ }
332
+
333
+ if ( $file_size <= 0 ) {
334
+ crb_admin_stop_ajax( 'The file is empty.' );
335
+
336
+ return;
337
+ }
338
+
339
+ $scan_id = absint( $get['scan_id'] );
340
+
341
+ $the_file = cerber_db_get_row( 'SELECT * FROM ' . cerber_get_db_prefix() . CERBER_SCAN_TABLE . ' WHERE scan_id = ' . $scan_id . ' AND file_name = "' . $file_name . '"' );
342
+
343
+ if ( ! $the_file ) {
344
+ crb_admin_stop_ajax( __( 'File access error. Possibly scan results are outdated. Please run Quick or Full Scan.', 'wp-cerber' ) );
345
+
346
+ return;
347
+ }
348
+
349
+ if ( ! $source = file_get_contents( $file_name ) ) {
350
+ crb_admin_stop_ajax( 'Error: Unable to load file.' );
351
+
352
+ return;
353
+ }
354
+
355
+ $source = htmlspecialchars( $source, ENT_SUBSTITUTE );
356
+
357
+ if ( ! $source ) {
358
+ $source = 'Unable to display the contents of the file. This file contains non-printable characters.';
359
+ }
360
+
361
+ if ( cerber_detect_exec_extension( $file_name )
362
+ || cerber_check_extension( $file_name, array( 'js', 'css', 'inc' ) )
363
+ || cerber_is_htaccess( $file_name )
364
+ ) {
365
+ $paint = true;
366
+ }
367
+ else {
368
+ $paint = false;
369
+ }
370
+
371
+ $overlay = '';
372
+ if ( $paint ) {
373
+ $overlay = '<div id="crb-overlay">Loading, please wait...</div>';
374
+ }
375
+
376
+ //$sh_url = plugin_dir_url( __FILE__ ) . 'assets/sh/';
377
+ $sh_url = $crb_assets_url . 'sh/';
378
+ $sheight = absint( $get['sheight'] ) - 100; // highlighter is un-responsible, so we need tell him the real height
379
+
380
+ ?>
381
+ <!DOCTYPE html>
382
+ <html xmlns="http://www.w3.org/1999/xhtml">
383
+ <head>
384
+ <script type="text/javascript" src="<?php echo $sh_url ?>scripts/shCore.js"></script>
385
+ <script type="text/javascript" src="<?php echo $sh_url; ?>scripts/shBrushPhp.js"></script>
386
+ <link href="<?php echo $sh_url; ?>styles/shCore.css" rel="stylesheet" type="text/css"/>
387
+ <link href="<?php echo $sh_url; ?>styles/shThemeDefault.css" rel="stylesheet" type="text/css"/>
388
+ <style type="text/css" media="all">
389
+ body {
390
+ overflow: hidden;
391
+ font-family: 'Roboto', sans-serif;
392
+ font-size: 14px;
393
+ }
394
+
395
+ #crb-overlay {
396
+ display: flex;
397
+ justify-content: center;
398
+ align-items: center;
399
+ text-align: center;
400
+ background-color: #fff;
401
+ position: fixed;
402
+ width: 100%;
403
+ height: 100%
404
+ z-index: 2;
405
+ top: 0;
406
+ left: 0;
407
+ right: 0;
408
+ bottom: 0;
409
+ }
410
+
411
+ #crb-issue {
412
+ border-left: 3px solid crimson;
413
+ background-color: #eee;
414
+ padding: 1em;
415
+ overflow: auto;
416
+ }
417
+
418
+ #crb-file-content {
419
+ <?php
420
+ if (!$paint) {
421
+ echo '
422
+ max-height: '.$sheight .'px;
423
+ overflow: auto;
424
+ padding: 15px;
425
+ ';
426
+ }
427
+ else {
428
+ echo 'overflow: hidden;';
429
+ }
430
+ ?>
431
+ }
432
+
433
+ .syntaxhighlighter {
434
+ max-height: <?php echo $sheight; ?>px;
435
+ }
436
+
437
+ .syntaxhighlighter code {
438
+ font-family: Menlo, Consolas, Monaco, monospace !important;
439
+ font-size: 13px !important;
440
+ }
441
+
442
+ .syntaxhighlighter .gutter .line {
443
+ border-right: 3px solid #c7c7c7 !important;
444
+ }
445
+
446
+ </style>
447
+ </head>
448
+
449
+ <body>
450
+
451
+ <?php
452
+
453
+ echo $overlay;
454
+
455
+ echo '<pre id="crb-file-content" class="brush: php; toolbar: false;">' . $source . '</pre>';
456
+
457
+ if ( $the_file ) {
458
+ echo '<div id="crb-issue">Issue: ' . cerber_get_issue_label( $the_file['scan_status'] ) . '</div>';
459
+ }
460
+
461
+ if ( $paint ) :
462
+ ?>
463
+
464
+ <script type="text/javascript">
465
+ SyntaxHighlighter.defaults["highlight"];
466
+ SyntaxHighlighter.all();
467
+
468
+ function crb_waitUntilRender() {
469
+ var overlay = document.getElementById("crb-overlay").style.visibility = "hidden";
470
+ }
471
+
472
+ var intervalID = setInterval(crb_waitUntilRender, 200);
473
+
474
+
475
+ </script>
476
+
477
+ <?php
478
+
479
+ endif;
480
+
481
+ ?>
482
+
483
+ </body>
484
+ </html>
485
+
486
+ <?php
487
+
488
+ crb_admin_stop_ajax();
489
+
490
+ } );
491
+
492
+ /**
493
+ * Upload a reference ZIP archive for a theme or a plugin
494
+ *
495
+ */
496
+ add_action( 'wp_ajax_cerber_ref_upload', function () {
497
+
498
+ cerber_check_ajax_permissions();
499
+
500
+ //ob_start(); // Collecting possible junk warnings and notices cause we need clean JSON to be sent
501
+
502
+ $error = '';
503
+
504
+ $folder = cerber_get_tmp_file_folder();
505
+ if ( is_wp_error( $folder ) ) {
506
+ cerber_end_ajax( array( 'error' => $folder->get_error_message() ) );
507
+ }
508
+
509
+ if ( isset( $_FILES['refile'] ) ) {
510
+
511
+ // Step 1, saving file
512
+
513
+ if ( ! is_uploaded_file( $_FILES['refile']['tmp_name'] ) ) {
514
+ $error = 'Unable to read uploaded file';
515
+ }
516
+
517
+ if ( ! cerber_check_extension( $_FILES['refile']['name'], array( 'zip' ) ) ) {
518
+ $error = 'Incorrect file format';
519
+ }
520
+
521
+ if ( cerber_detect_exec_extension( $_FILES['refile']['name'] ) ) {
522
+ $error = 'Incorrect file format';
523
+ }
524
+
525
+ if ( false !== strpos( $_FILES['refile']['name'], '/' ) ) {
526
+ $error = 'Incorrect filename';
527
+ }
528
+
529
+ if ( $error ) {
530
+ cerber_end_ajax( array( 'error' => $error ) );
531
+ }
532
+
533
+ if ( false === @move_uploaded_file( $_FILES['refile']['tmp_name'], $folder . $_FILES['refile']['name'] ) ) {
534
+ cerber_end_ajax( array( 'error' => 'Unable to copy file to ' . $folder ) );
535
+ }
536
+
537
+ }
538
+ else {
539
+
540
+ // Step 2, creating hash
541
+
542
+ $result = cerber_need_for_hash();
543
+ if ( is_wp_error( $result ) ) {
544
+ cerber_end_ajax( array( 'error' => $result->get_error_message() ) );
545
+ }
546
+ }
547
+
548
+ cerber_end_ajax();
549
+
550
+ } );
551
+
552
+ /**
553
+ * Deleting files, server side AJAX
554
+ *
555
+ */
556
+ add_action( 'wp_ajax_cerber_scan_bulk_files', function () {
557
+
558
+ cerber_check_ajax_permissions();
559
+
560
+ $post = crb_get_post_fields();
561
+
562
+ if ( empty( $post['files'] ) || empty( $post['scan_id'] ) ) {
563
+ crb_admin_stop_ajax( 'Error!' );
564
+
565
+ return;
566
+ }
567
+
568
+ $scan_id = absint( $post['scan_id'] );
569
+
570
+ if ( ! cerber_get_scan( $scan_id ) ) {
571
+ crb_admin_stop_ajax( 'Error!' );
572
+
573
+ return;
574
+ }
575
+
576
+ $operation = $post['scan_file_operation'];
577
+
578
+ if ( ( ! $ignore = cerber_get_set( 'ignore-list' ) ) || ! is_array( $ignore ) ) {
579
+ $ignore = array();
580
+ }
581
+
582
+ global $crb_list;
583
+ $crb_list = array();
584
+ $i = 0;
585
+ $errors = array();
586
+ $time = time();
587
+ $user_id = get_current_user_id();
588
+
589
+ foreach ( $post['files'] as $file_name ) {
590
+
591
+ if ( ! is_file( $file_name ) ) {
592
+ continue;
593
+ }
594
+
595
+ $the_file = cerber_db_get_row( 'SELECT * FROM ' . cerber_get_db_prefix() . CERBER_SCAN_TABLE . ' WHERE scan_id = ' . $scan_id . ' AND file_name = "' . $file_name . '"', MYSQL_FETCH_OBJECT );
596
+ if ( ! $the_file || ! is_file( $the_file->file_name ) ) {
597
+ $errors[] = 'Unknown file: ' . $file_name;
598
+ continue;
599
+ }
600
+
601
+ switch ( $operation ) {
602
+ case 'delete_file':
603
+ $result = cerber_quarantine_file( $file_name, $scan_id );
604
+ break;
605
+ case 'ignore_add_file':
606
+ $ignore[ $the_file->file_name_hash ] = array(
607
+ $the_file->file_name,
608
+ @hash_file( 'sha256', $the_file->file_name ),
609
+ $user_id,
610
+ $time,
611
+ );
612
+ $result = true;
613
+ break;
614
+ }
615
+
616
+ if ( is_wp_error( $result ) ) {
617
+ $errors[] = $result->get_error_message();
618
+ }
619
+ elseif ( ! $result ) {
620
+ $errors[] = 'Unknown error 55';
621
+ }
622
+ else {
623
+ $i ++;
624
+ $crb_list[] = $file_name;
625
+ }
626
+
627
+ }
628
+
629
+ if ( $operation == 'ignore_add_file' ) {
630
+ // Update the last scan results to keep it up to date and avoid user confusing
631
+ if ( $scan = cerber_get_scan() ) {
632
+ $scan['issues'] = crb_issue_filer( $scan['issues'], function ( $file_name ) {
633
+ global $crb_list;
634
+ if ( in_array( $file_name, $crb_list ) ) {
635
+ return false;
636
+ }
637
+
638
+ return true;
639
+ } );
640
+ cerber_update_scan( $scan );
641
+ }
642
+ if ( ! cerber_update_set( 'ignore-list', $ignore ) ) {
643
+ $errors [] = 'Unable to update the ignore list';
644
+ }
645
+ }
646
+
647
+ crb_scan_debug( $errors );
648
+
649
+ cerber_end_ajax( array( 'errors' => $errors, 'number' => $i, 'processed' => $crb_list ) );
650
+
651
+ } );
652
+
653
+ /**
654
+ * Finalizes current AJAX request and sends data to the client
655
+ *
656
+ * @param $data array
657
+ */
658
+ function cerber_end_ajax( $data = array() ) {
659
+
660
+ if ( ! $data ) {
661
+ $data = array();
662
+ }
663
+
664
+ $data['cerber_db_errors'] = cerber_db_get_errors();
665
+
666
+ if ( ! $data['cerber_db_errors'] ) {
667
+ $data['OK'] = 'OK!';
668
+ }
669
+
670
+ echo json_encode( $data );
671
+
672
+ if ( ! nexus_is_valid_request() ) {
673
+ wp_die();
674
+ }
675
+ }
676
+
677
+ function crb_admin_stop_ajax( $msg = '' ) {
678
+ if ( $msg ) {
679
+ echo $msg;
680
+ }
681
+ if ( ! nexus_is_valid_request() ) {
682
+ //wp_die();
683
+ exit;
684
+ }
685
+ }
686
+
687
+ function cerber_show_quarantine() {
688
+
689
+ $folder = cerber_get_the_folder( true );
690
+ if ( is_wp_error( $folder ) ) {
691
+ echo $folder->get_error_message();
692
+
693
+ return;
694
+ }
695
+
696
+ $no_files = '<p>' . __( 'There are no files in the quarantine at the moment.', 'wp-cerber' ) . '</p>';
697
+ $per_page = crb_admin_get_per_page();
698
+ $first = ( cerber_get_pn() - 1 ) * $per_page;
699
+ $last = $first + $per_page;
700
+ $list = array();
701
+
702
+ $filter_scan = crb_get_query_params( 'scan', '\d+' );
703
+
704
+ list ( $list, $count, $scan_list ) = cerber_quarantine_get_files( $first, $last, $filter_scan );
705
+
706
+ _crb_qr_total_sync( $count );
707
+
708
+ if ( ! $list ) {
709
+ if ( ! $filter_scan ) {
710
+ echo $no_files;
711
+ }
712
+ else {
713
+ echo __( 'No files match the specified filter.', 'wp-cerber' ) . ' <a href="' . cerber_admin_link( 'scan_quarantine' ) . '">' . __( 'Click here to see the full list of files', 'wp-cerber' ) . '</a>.';
714
+ }
715
+
716
+ return;
717
+ }
718
+
719
+ $rows = array();
720
+ $ofs = get_option( 'gmt_offset' ) * 3600;
721
+ $confirm = ' onclick="return confirm(\'' . __( 'Are you sure?', 'wp-cerber' ) . '\');"';
722
+
723
+ foreach ( $list as $file ) {
724
+ $p = array(
725
+ 'cerber_admin_do' => 'scan_tegrity',
726
+ 'crb_scan_id' => $file['scan_id'],
727
+ 'crb_file_id' => $file['qfile']
728
+ );
729
+
730
+ $p['crb_scan_adm'] = 'delete';
731
+ $delete = '<a ' . $confirm . ' href="' . cerber_admin_link_add( $p ) . '">' . __( 'Delete permanently', 'wp-cerber' ) . '</a>';
732
+
733
+ $p['crb_scan_adm'] = 'restore';
734
+ $restore = ( ! $file['can'] ) ? '' : ' | <a ' . $confirm . ' href="' . cerber_admin_link_add( $p ) . '">' . __( 'Restore', 'wp-cerber' ) . '</a>';
735
+
736
+ $moved = strtotime( $file['date'] ) - $ofs;
737
+ $will = cerber_auto_date( $file['scan_id'] + DAY_IN_SECONDS * crb_get_settings( 'scan_qcleanup' ) );
738
+
739
+ $file_name = str_replace( DIRECTORY_SEPARATOR, '<wbr>' . DIRECTORY_SEPARATOR, $file['source'] );
740
+
741
+ $rows[] = array(
742
+ '<span title="' . cerber_date( $file['scan_id'] ) . '">' . cerber_auto_date( $file['scan_id'] ) . '</span>',
743
+ '<span title="' . cerber_date( $moved ) . '">' . cerber_auto_date( $moved ) . '</span>',
744
+ $will,
745
+ $file['size'],
746
+ $file_name,
747
+ '<span style="white-space: pre;">' . $delete . $restore . '</span>'
748
+ );
749
+ }
750
+
751
+ $heading = array(
752
+ __( 'Scanned', 'wp-cerber' ),
753
+ __( 'Quarantined', 'wp-cerber' ),
754
+ __( 'Automatic deletion', 'wp-cerber' ),
755
+ __( 'Size', 'wp-cerber' ),
756
+ __( 'File', 'wp-cerber' ),
757
+ __( 'Action', 'wp-cerber' ),
758
+ );
759
+
760
+ $table = cerber_make_table( $rows, $heading, 'crb-quarantine' );
761
+
762
+ $table .= cerber_page_navi( $count, $per_page );
763
+
764
+ $filter = '';
765
+ if ( count( $scan_list ) > 1 ) {
766
+ krsort( $scan_list );
767
+ $list = array( 0 => __( 'All scans', 'wp-cerber' ) );
768
+ foreach ( $scan_list as $s ) {
769
+ $list[ $s ] = cerber_date( $s, false );
770
+ }
771
+ $filter = '<div style="text-align: right; margin-bottom: 1em;"><form style="width: auto;" action="">' . cerber_select( 'scan', $list, $filter_scan ) . ' <input value="Filter" class="button" type="submit"><input name="page" value="cerber-integrity" type="hidden"><input name="tab" value="scan_quarantine" type="hidden"></form></div>';
772
+ }
773
+
774
+ echo $filter . $table;
775
+ }
776
+
777
+ function cerber_quarantine_do( $what, $scan_id, $qfile ) {
778
+ $scan_id = absint( $scan_id );
779
+ if ( ! $scan_id ) {
780
+ cerber_admin_notice( 'Error: Wrong scan parameters.' );
781
+
782
+ return;
783
+ }
784
+ //$dir = cerber_get_the_folder() . 'quarantine' . DIRECTORY_SEPARATOR . $scan_id;
785
+ $dir = cerber_get_the_folder( true );
786
+ if ( is_wp_error( $dir ) ) {
787
+ cerber_admin_notice( $dir->get_error_message() );
788
+
789
+ return;
790
+ }
791
+
792
+ $dir .= 'quarantine' . DIRECTORY_SEPARATOR . $scan_id;
793
+
794
+ $file = $dir . DIRECTORY_SEPARATOR . $qfile;
795
+ if ( ! @is_file( $file ) || is_link( $file ) ) {
796
+ cerber_admin_notice( 'Error: No file to process' );
797
+
798
+ return;
799
+ }
800
+
801
+ $rst = $dir . '/.restore';
802
+ if ( ! file_exists( $rst ) || ! $handle = @fopen( $rst, 'r' ) ) {
803
+ cerber_admin_notice( 'Error: A restore registry file is corrupt or missing.' );
804
+
805
+ return;
806
+ }
807
+
808
+ $data = null;
809
+ while ( ( $line = fgets( $handle ) ) !== false ) {
810
+ if ( $p = crb_parse_qline( $dir, $line ) ) {
811
+ if ( $p['qfile'] == $qfile ) {
812
+ $data = $p;
813
+ break;
814
+ }
815
+ }
816
+ }
817
+
818
+ if ( ! $data ) {
819
+ cerber_admin_notice( 'Error: No information about this file. Unable to proceed.' );
820
+
821
+ return;
822
+ }
823
+
824
+ $err = null;
825
+ $msg = null;
826
+ switch ( $what ) {
827
+ case 'delete':
828
+ if ( unlink( $file ) ) {
829
+ $msg = __( 'The file has been deleted permanently.', 'wp-cerber' );
830
+ crb_qr_total_update( -1 );
831
+ }
832
+ else {
833
+ $err = 'Unable to delete the file: ' . $file;
834
+ }
835
+ break;
836
+ case 'restore':
837
+ if ( $data['can'] ) {
838
+ $target_dir = dirname( $data['source'] );
839
+ if ( ! file_exists( $target_dir ) && ! mkdir( $target_dir, 0755, true ) ) {
840
+ $err = 'Unable to create the folder <b>' . $target_dir . '</b>. Check permissions of parent folders.';
841
+ }
842
+ if ( ! $err ) {
843
+ if ( @rename( $file, $data['source'] ) ) {
844
+ $msg = __( 'The file has been restored to its original location.', 'wp-cerber' );
845
+ crb_qr_total_update( -1 );
846
+ }
847
+ else {
848
+ $err = 'A file error occurred while restoring the file. Check permissions of folders.';
849
+ }
850
+ }
851
+ }
852
+ else {
853
+ $err = 'This file cannot be restored and needs to be manually copied. <p>See instructions in this file: ' . $rst . '</p>';
854
+ }
855
+ break;
856
+ }
857
+ if ( $err ) {
858
+ cerber_admin_notice( __( 'ERROR:', 'wp-cerber' ) . ' ' . $err );
859
+ }
860
+ if ( $msg ) {
861
+ cerber_admin_message( $msg );
862
+ }
863
+ }
864
+
865
+ function cerber_show_ignore() {
866
+
867
+ // For translators
868
+ __( 'Apply', 'wp-cerber' );
869
+ __( 'Remove from the list', 'wp-cerber' );
870
+ __( 'User Insights', 'wp-cerber' );
871
+ __( 'Traffic Insights', 'wp-cerber' );
872
+ __( 'Activity Insights', 'wp-cerber' );
873
+
874
+ $no_files = __( 'The list is empty.', 'wp-cerber' );
875
+ $per_page = crb_admin_get_per_page();
876
+ $first = ( cerber_get_pn() - 1 ) * $per_page;
877
+
878
+ if ( ! $list = cerber_get_set( 'ignore-list' ) ) {
879
+ echo '<p>' . $no_files . '</p>';
880
+
881
+ return;
882
+ }
883
+
884
+ $count = count( $list );
885
+ $list = array_slice( $list, $first, $per_page );
886
+
887
+ $rows = array();
888
+ $confirm = ' onclick="return confirm(\'' . __( 'Are you sure?', 'wp-cerber' ) . '\');"';
889
+
890
+ foreach ( $list as $key => $file ) {
891
+
892
+ $delete = '<a ' . $confirm . ' href="' . cerber_admin_link_add( array(
893
+ 'cerber_admin_do' => 'scan_tegrity',
894
+ 'crb_scan_adm' => 'remove_ignore',
895
+ 'crb_file_id' => $key
896
+ ) ) . '">' . __( 'Remove from the list', 'wp-cerber' ) . '</a>';
897
+
898
+ $rows[] = array(
899
+ cerber_date( $file[3] ),
900
+ cerber_date( cerber_get_date( $file[0] ) ),
901
+ crb_size_format( cerber_get_size( $file[0] ) ),
902
+ $file[0],
903
+ '<span style="white-space: pre;">' . $delete . '</span>'
904
+ );
905
+ }
906
+
907
+ $heading = array(
908
+ __( 'Added', 'wp-cerber' ),
909
+ __( 'Modified', 'wp-cerber' ),
910
+ __( 'Size', 'wp-cerber' ),
911
+ __( 'File', 'wp-cerber' ),
912
+ __( 'Action', 'wp-cerber' ),
913
+ );
914
+
915
+ $table = cerber_make_table( $rows, $heading );
916
+
917
+ $table .= cerber_page_navi( $count, $per_page );
918
+
919
+ echo $table;
920
+ }
921
+
922
+ function crb_remove_ignore( $id ) {
923
+ if ( ! $list = cerber_get_set( 'ignore-list' ) ) {
924
+ return false;
925
+ }
926
+ if ( ! isset( $list[ $id ] ) ) {
927
+ return false;
928
+ }
929
+
930
+ unset( $list[ $id ] );
931
+
932
+ return cerber_update_set( 'ignore-list', $list );
933
+
934
+ }
935
+
936
+ // Scan analytics ===========================================================
937
+
938
+ function cerber_scan_insights() {
939
+
940
+ if ( ! $scan_id = crb_scan_last_full() ) {
941
+ echo 'No data for generating reports. Please run the Full Scan. After the scan is completed, the report will be generated.';
942
+
943
+ return;
944
+ }
945
+
946
+ if ( $ext = crb_get_query_params( 'fext' ) ) {
947
+ cerber_show_files( $ext, $scan_id );
948
+
949
+ return;
950
+ }
951
+
952
+ ?>
953
+
954
+ <div style="padding-bottom: 1.5em;" class="crb_async_content" data-ajax_route="scanner_analytics" data-scan_id="<?php echo $scan_id; ?>" data-itype="1">
955
+ </div>
956
+ <div style="padding-bottom: 1.5em;" class="crb_async_content" data-ajax_route="scanner_analytics" data-scan_id="<?php echo $scan_id; ?>" data-itype="2">
957
+ </div>
958
+ <div id="crb_ins_ext_list" style="padding-bottom: 1.5em;" class="crb_async_content" data-ajax_route="scanner_analytics" data-scan_id="<?php echo $scan_id; ?>" data-itype="3">
959
+ </div>
960
+
961
+ <?php
962
+
963
+ }
964
+
965
+ /**
966
+ * @param string $ext
967
+ * @param int $scan_id
968
+ */
969
+ function cerber_show_files( $ext, $scan_id ) {
970
+
971
+ $ext = cerber_real_escape( $ext );
972
+ $per_page = 25;
973
+ $limit = cerber_get_sql_limit( $per_page );
974
+ $files = cerber_db_get_results( 'SELECT SQL_CALC_FOUND_ROWS file_name, file_mtime, file_size FROM ' . cerber_get_db_prefix() . CERBER_SCAN_TABLE . ' WHERE scan_id = ' . $scan_id . ' AND file_ext = "' . $ext . '" ' . $limit );
975
+ $total = cerber_db_get_var( 'SELECT FOUND_ROWS()' );
976
+
977
+ if ( ! $files ) {
978
+ echo '<p>No files found. Please run the Full Scan.</p>';
979
+
980
+ return;
981
+ }
982
+
983
+ $title = ( $ext == '.' ) ? __( 'Files without extension', 'wp-cerber' ) : 'Files with the "' . $ext . '" extension';
984
+ echo '<div style="display: table-cell"><h3>' . $title . '</h3></div><div style="display: table-cell; vertical-align: middle;"> &nbsp; <a href="' . cerber_admin_link( 'scan_insights' ) . '#crb_ins_ext_list" class="page-title-action">' . __( 'Back to list', 'wp-cerber' ) . '</a></div>';
985
+
986
+ echo crb_make_file_table( $files ) . cerber_page_navi( $total, $per_page );
987
+ }
988
+
989
+ /**
990
+ * @param string $type
991
+ *
992
+ * @return string[]
993
+ *
994
+ * @since 8.6.4
995
+ */
996
+ function cerber_generate_insights( $type ) {
997
+
998
+ if ( ! $scan_id = crb_scan_last_full() ) {
999
+ return array( 'html' => 'No data for generating reports. Please run the Full Scan. After the scan is completed, the report will be generated.' );
1000
+ }
1001
+
1002
+ $key = 'scan_insights_' . $type;
1003
+
1004
+ // Cache
1005
+ if ( $report = cerber_get_set( $key, $scan_id, false ) ) {
1006
+ return array( 'html' => $report );
1007
+ }
1008
+
1009
+ switch ( $type ) {
1010
+ case 1:
1011
+ $report = crb_scan_insights_brief( $scan_id );
1012
+ break;
1013
+ case 2:
1014
+ $report = crb_scan_insights_lrgst( $scan_id );
1015
+ break;
1016
+ case 3:
1017
+ $report = crb_scan_insights_exts( $scan_id );
1018
+ break;
1019
+ }
1020
+
1021
+ // Cache
1022
+ if ( $report ) {
1023
+ cerber_update_set( $key, $report, $scan_id, false, time() + 24 * 3600 );
1024
+ }
1025
+ else {
1026
+ $report = 'ERROR: Unknown report';
1027
+ }
1028
+
1029
+ $response = array( 'html' => $report, 'error' => '' );
1030
+
1031
+ /*if ( $_REQUEST['request'] < 2 ) {
1032
+ $response['continue'] = 1;
1033
+ }*/
1034
+
1035
+ return $response;
1036
+ }
1037
+
1038
+ function crb_scan_insights_brief( $scan_id ) {
1039
+
1040
+ $scan_id = absint( $scan_id );
1041
+
1042
+ $table = cerber_get_db_prefix() . CERBER_SCAN_TABLE;
1043
+
1044
+ $result = '<h3>' . __( 'Brief summary', 'wp-cerber' ) . '</h3>';
1045
+
1046
+ $list = array(
1047
+ array( 'WordPress root folder (ABSPATH) ', ABSPATH ),
1048
+ array( 'WordPress uploads folder', cerber_get_upload_dir() ),
1049
+ array( 'WordPress content folder', dirname( cerber_get_plugins_dir() ) ),
1050
+ array( 'WordPress plugins folder', cerber_get_plugins_dir() ),
1051
+ array( 'WordPress themes folder', cerber_get_themes_dir() ),
1052
+ array( 'WordPress must use plugin folder (WPMU_PLUGIN_DIR) ', WPMU_PLUGIN_DIR ),
1053
+ array( 'PHP folder for uploading files', ini_get( 'upload_tmp_dir' ) ),
1054
+ array( 'Server folder for temporary files', sys_get_temp_dir() ),
1055
+ array( 'Server folder for users\' session data', session_save_path() ),
1056
+ );
1057
+
1058
+ /*
1059
+ It's not scanned by the scanner
1060
+ $cerber_folder = cerber_get_my_folder();
1061
+ if ( ! is_wp_error( $cerber_folder ) ) {
1062
+ $list[] = array( 'WP Cerber\'s folder', $cerber_folder );
1063
+ }*/
1064
+
1065
+ $folders = array();
1066
+ foreach ( $list as $item ) {
1067
+ if ( ! $item[1] || ! @file_exists( $item[1] ) ) {
1068
+ continue;
1069
+ }
1070
+ $item[2] = 0;
1071
+ $item[3] = 0;
1072
+ $item[1] = rtrim( $item[1], DIRECTORY_SEPARATOR ) . DIRECTORY_SEPARATOR;
1073
+ if ( $files = cerber_db_get_col( 'SELECT file_size FROM ' . $table . ' WHERE scan_id = ' . $scan_id . ' AND file_name LIKE "' . $item[1] . '%"' ) ) {
1074
+ $item[2] = count( $files );
1075
+ if ( $sum = array_sum( $files ) ) {
1076
+ $item[3] = crb_size_format( $sum );
1077
+ }
1078
+ }
1079
+ $folders[] = $item;
1080
+ }
1081
+
1082
+ $sql = 'SELECT file_size FROM ' . $table . ' WHERE scan_id = ' . $scan_id . ' AND file_name NOT LIKE "' . ABSPATH . '%"';
1083
+ $files = cerber_db_get_col( $sql );
1084
+ if ( $files ) {
1085
+ if ( $sum = array_sum( $files ) ) {
1086
+ $sum = crb_size_format( $sum );
1087
+ }
1088
+ $folders[] = array( 'Beyond the WordPress root folder', '', count( $files ), $sum );
1089
+ }
1090
+
1091
+ $column = array_column( $folders, 2 );
1092
+ array_multisort( $column, SORT_DESC, $folders );
1093
+
1094
+ return $result . cerber_make_table( $folders, array(
1095
+ __( 'Folder', 'wp-cerber' ),
1096
+ __( 'Path', 'wp-cerber' ),
1097
+ __( 'Files', 'wp-cerber' ),
1098
+ __( 'Space Occupied', 'wp-cerber' )
1099
+ ), '', 'crb_align_right crb_align_left_2', 'crb-monospace' );
1100
+
1101
+ }
1102
+
1103
+ function crb_scan_insights_exts( $scan_id ) {
1104
+
1105
+ $scan_id = absint( $scan_id );
1106
+
1107
+ $table = cerber_get_db_prefix() . CERBER_SCAN_TABLE;
1108
+ $list = array();
1109
+
1110
+ $offset = 0;
1111
+ $total = 0;
1112
+ $done = false;
1113
+ //cerber_exec_timer( 15 );
1114
+
1115
+ while ( true ) {
1116
+
1117
+ if ( ! $files = cerber_db_get_results( 'SELECT file_name, file_name_hash, file_mtime, file_size, file_ext FROM ' . $table . ' WHERE scan_id = ' . $scan_id . ' LIMIT ' . CRB_SQL_CHUNK . ' OFFSET ' . $offset ) ) {
1118
+ $done = true;
1119
+ break;
1120
+ }
1121
+
1122
+ $offset += CRB_SQL_CHUNK;
1123
+
1124
+ foreach ( $files as $file ) {
1125
+ if ( ! $ext = crb_get_extension( $file['file_name'] ) ) {
1126
+ $ext = '.';
1127
+ }
1128
+
1129
+
1130
+ if ( empty( $file['file_ext'] ) ) {
1131
+ cerber_db_query( 'UPDATE ' . $table . ' SET file_ext = "' . $ext . '" WHERE scan_id = ' . $scan_id . ' AND file_name_hash = "' . $file['file_name_hash'] . '"' );
1132
+ }
1133
+
1134
+ if ( ! isset( $list[ $ext ] ) ) {
1135
+ $list[ $ext ] = array( 0, 0, array(), array() );
1136
+ }
1137
+
1138
+ $list[ $ext ][0] ++;
1139
+ $list[ $ext ][1] += $file['file_size'];
1140
+
1141
+ $list[ $ext ][2][] = $file['file_size'];
1142
+ $list[ $ext ][3][] = $file['file_mtime'];
1143
+
1144
+ $total ++;
1145
+ }
1146
+
1147
+ }
1148
+
1149
+ if ( ! $done && ( count( $files ) < CRB_SQL_CHUNK ) ) {
1150
+ $done = true;
1151
+ }
1152
+
1153
+ if ( ! $done ) {
1154
+ return array( 'continue' => 1 );
1155
+ }
1156
+
1157
+ if ( ! $list ) {
1158
+ return 'No data for generating reports. Please run the Full Scan. After the scan is completed, the report will be generated.';
1159
+ }
1160
+
1161
+ $base = cerber_admin_link( 'scan_insights' );
1162
+ $none = __( 'No extension', 'wp-cerber' );
1163
+ $result = array();
1164
+
1165
+ foreach ( $list as $ext => $data ) {
1166
+ $text = ( $ext == '.' ) ? $none : $ext;
1167
+ $result[] = array(
1168
+ '<a href="' . $base . esc_attr( '&fext=' . $ext ) . '">' . $text . '</a>',
1169
+ $data[0],
1170
+ crb_size_format( $data[1] ),
1171
+ crb_size_format( min( $data[2] ) ),
1172
+ crb_size_format( max( $data[2] ) ),
1173
+ crb_size_format( round( $data[1] / $data[0], 0 ) ),
1174
+ cerber_date( min( $data[3] ) ),
1175
+ cerber_date( max( $data[3] ) ),
1176
+ );
1177
+ }
1178
+
1179
+ // Sorting by a column in a multidimensional array
1180
+
1181
+ $column = array_column( $result, 1 );
1182
+ array_multisort( $column, SORT_DESC, $result );
1183
+
1184
+ // Create table
1185
+
1186
+ //$report = '<h3>The file system report is based on the last full scan.</h3>';
1187
+ $report = '<h3>' . __( 'File extensions statistics', 'wp-cerber' ) . '</h3>';
1188
+
1189
+ $report .= cerber_make_table( $result, array(
1190
+ __( 'Extension', 'wp-cerber' ),
1191
+ __( 'Files', 'wp-cerber' ),
1192
+ __( 'Space Occupied', 'wp-cerber' ),
1193
+ __( 'Smallest', 'wp-cerber' ),
1194
+ __( 'Largest', 'wp-cerber' ),
1195
+ __( 'Average Size', 'wp-cerber' ),
1196
+ __( 'Oldest', 'wp-cerber' ),
1197
+ __( 'Newest', 'wp-cerber' ),
1198
+ ), '', 'crb_align_right', 'crb-monospace crb-anchor-decorated' );
1199
+
1200
+ return $report;
1201
+ }
1202
+
1203
+ function crb_scan_insights_lrgst( $scan_id ) {
1204
+
1205
+ $scan_id = absint( $scan_id );
1206
+
1207
+ $table = cerber_get_db_prefix() . CERBER_SCAN_TABLE;
1208
+
1209
+ if ( ! $files = cerber_db_get_results( 'SELECT file_name, file_mtime, file_size FROM ' . $table . ' WHERE scan_id = ' . $scan_id . ' ORDER BY file_size DESC LIMIT 10' ) ) {
1210
+ return 'No data for generating reports. Please run the Full Scan. After the scan is completed, the report will be generated.';
1211
+ }
1212
+
1213
+ $title = '<h3>' . __( 'Top 10 largest files', 'wp-cerber' ) . '</h3>';
1214
+
1215
+ return $title . crb_make_file_table( $files );
1216
+ }
1217
+
1218
+ function crb_scan_insights_duplicates( $scan_id ) {
1219
+
1220
+ $scan_id = absint( $scan_id );
1221
+
1222
+ // SQL Doesn't work
1223
+ /* ( ! $files = cerber_db_get_results( 'SELECT file_name, file_mtime, file_size, file_hash FROM ' . cerber_get_db_prefix() . CERBER_SCAN_TABLE . ' WHERE scan_id = ' . $scan_id . ' GROUP BY file_hash HAVING COUNT(*) > 1 LIMIT 100' ) ) {
1224
+ return '';
1225
+ }*/
1226
+
1227
+ if ( ! $files = cerber_db_get_col( 'SELECT file_hash FROM ' . cerber_get_db_prefix() . CERBER_SCAN_TABLE . ' WHERE scan_id = ' . $scan_id . ' AND file_size !=0 AND file_hash !="" ' ) ) {
1228
+ return 'No data for generating reports. Please run the Full Scan. After the scan is completed, the report will be generated.';
1229
+ }
1230
+
1231
+ $dup = array_unique( array_diff_assoc( $files, array_unique( $files ) ) );
1232
+
1233
+ rsort( $dup );
1234
+
1235
+ $list = array();
1236
+ foreach ( $dup as $hash ) {
1237
+ if ( $fl = cerber_db_get_results( 'SELECT file_name, file_mtime, file_size FROM ' . cerber_get_db_prefix() . CERBER_SCAN_TABLE . ' WHERE scan_id = ' . $scan_id . ' AND file_hash = "' . $hash . '"' ) ) {
1238
+ $list = array_merge( $list, $fl );
1239
+ }
1240
+ }
1241
+
1242
+ $result = '<h3>Duplicate files</h3>';
1243
+
1244
+ return $result . crb_make_file_table( $list );
1245
+
1246
+ }
1247
+
1248
+ function crb_scan_last_full() {
1249
+
1250
+ $scans = cerber_db_get_col( 'SELECT DISTINCT scan_id FROM ' . cerber_get_db_prefix() . CERBER_SCAN_TABLE . ' WHERE scan_mode = 1 ORDER BY scan_id DESC LIMIT 1' );
1251
+
1252
+ if ( $scans ) {
1253
+ $scan_id = $scans[0];
1254
+ $scan = cerber_get_scan( $scan_id );
1255
+ if ( $scan['finished']
1256
+ || ( $scan['aborted'] && $scan['next_step'] > 5 ) ) { // Step 5 is enough for analysis
1257
+ return $scan_id;
1258
+ }
1259
+ }
1260
+
1261
+ return false;
1262
+ }
1263
+
1264
+ // Miscellaneous admin routines ===========================================================
1265
+
1266
+
1267
+ /**
1268
+ * Detects file extension
1269
+ *
1270
+ * @param string $file_name
1271
+ *
1272
+ * @return string
1273
+ */
1274
+ function crb_get_extension( $file_name ) {
1275
+
1276
+ $name = basename( $file_name );
1277
+
1278
+ if ( $name == '.htaccess' ) {
1279
+ return '';
1280
+ }
1281
+
1282
+ if ( false === ( $last_dot = strrpos( $name, '.' ) ) ) {
1283
+ return '';
1284
+ }
1285
+
1286
+ /*$first_dot = strpos( $name, '.' );
1287
+
1288
+ if ( $last_dot !== $first_dot
1289
+ && cerber_detect_exec_extension( $name ) ) {
1290
+ $ext = substr( $name, $first_dot + 1 );
1291
+ }
1292
+ else {
1293
+ $ext = substr( $name, $last_dot + 1 );
1294
+ }*/
1295
+
1296
+ $ext = substr( $name, $last_dot + 1 );
1297
+
1298
+ if ( ! $ext ) {
1299
+ $ext = '';
1300
+ }
1301
+
1302
+ return $ext;
1303
+ }
1304
+
1305
+ function crb_make_file_table( $files ) {
1306
+
1307
+ $result = array();
1308
+ foreach ( $files as $file ) {
1309
+ $result[] = array(
1310
+ $file['file_name'],
1311
+ crb_size_format( $file['file_size'] ),
1312
+ cerber_date( $file['file_mtime'] ),
1313
+ );
1314
+ }
1315
+
1316
+ return cerber_make_table( $result, array(
1317
+ __( 'File Name', 'wp-cerber' ),
1318
+ __( 'Size', 'wp-cerber' ),
1319
+ __( 'Modified', 'wp-cerber' ),
1320
+ ), '', 'crb_align_right', 'crb-monospace crb-anchor-decorated' );
1321
+
1322
+ }
1323
+
1324
+ /**
1325
+ * Generates an HTML table
1326
+ *
1327
+ * @param $heading
1328
+ * @param $rows
1329
+ * @param string $id
1330
+ * @param $class
1331
+ * @param string $body_class
1332
+ * @param string $head_class
1333
+ * @param bool $show_footer
1334
+ *
1335
+ * @return string
1336
+ * @since 8.6.4
1337
+ *
1338
+ */
1339
+ function cerber_make_table( $rows, $heading = array(), $id = '', $class = '', $body_class = '', $head_class = '', $show_footer = true ) {
1340
+
1341
+ $tr = array();
1342
+ foreach ( $rows as $row ) {
1343
+ $tr[] = '<td>' . implode( '</td><td>', $row ) . '</td>';
1344
+ }
1345
+
1346
+ $tfoot = '';
1347
+ $thead = '';
1348
+
1349
+ if ( $heading ) {
1350
+ $titles = '<tr><th>' . implode( '</th><th>', $heading ) . '</th></tr>';
1351
+ $thead = '<thead class="' . $head_class . '">' . $titles . '</thead>';
1352
+
1353
+ if ( $show_footer ) {
1354
+ $tfoot = '<tfoot class="' . $head_class . '">' . $titles . '</tfoot>';
1355
+ }
1356
+ }
1357
+
1358
+ $id = ( $id ) ? 'id="' . $id . '"' : '';
1359
+
1360
+ return '<table ' . $id . ' class="widefat crb-table cerber-margin ' . $class . '">' . $thead . $tfoot . '<tbody class="' . $body_class . '"><tr>' . implode( '</tr><tr>', $tr ) . '</tr></tbody></table>';
1361
+
1362
+ }
1363
+
1364
+ function cerber_get_chmod( $file ) {
1365
+ return substr( sprintf( '%o', @fileperms( $file ) ), - 4 );
1366
+ }
1367
+
1368
+ function cerber_get_size( $file ) {
1369
+ $size = @filesize( $file );
1370
+
1371
+ return ( is_numeric( $size ) ) ? $size : 0;
1372
+ }
1373
+
1374
+ function cerber_get_date( $file ) {
1375
+ $mtime = @filemtime( $file );
1376
+
1377
+ return ( is_numeric( $mtime ) ) ? $mtime : 0;
1378
+ }
admin/cerber-settings.php CHANGED
@@ -38,7 +38,13 @@ if ( ! defined( 'WPINC' ) || ! defined( 'CERBER_VER' ) ) {
38
  // @since 8.5.9.1
39
  define( 'CRB_SETTINGS_GROUP', 'cerber_settings_group' );
40
 
41
- add_action( 'admin_init', 'cerber_admin_init' );
 
 
 
 
 
 
42
  function cerber_admin_init() {
43
  global $crb_assets_url, $crb_ajax_loader;
44
  $crb_assets_url = cerber_plugin_dir_url() . 'assets/';
@@ -383,7 +389,7 @@ function cerber_field_show( $args ) {
383
  break;
384
 
385
  case 'textarea':
386
- $html = '<textarea class="large-text code" id="' . $id . '" name="' . $name . '" ' . $atts . $data . '>' . $value . '</textarea>';
387
  $html .= '<br/><label class="crb-below" for="' . $args['setting'] . '">' . $label . '</label>';
388
  break;
389
 
38
  // @since 8.5.9.1
39
  define( 'CRB_SETTINGS_GROUP', 'cerber_settings_group' );
40
 
41
+ add_action( 'admin_init', function () { // @since 8.6.3.1
42
+ cerber_admin_init();
43
+ cerber_export();
44
+ cerber_import();
45
+ cerber_unsubscribeme();
46
+ } );
47
+
48
  function cerber_admin_init() {
49
  global $crb_assets_url, $crb_ajax_loader;
50
  $crb_assets_url = cerber_plugin_dir_url() . 'assets/';
389
  break;
390
 
391
  case 'textarea':
392
+ $html = '<textarea class="large-text crb-monospace" id="' . $id . '" name="' . $name . '" ' . $atts . $data . '>' . $value . '</textarea>';
393
  $html .= '<br/><label class="crb-below" for="' . $args['setting'] . '">' . $label . '</label>';
394
  break;
395
 
assets/admin.css CHANGED
@@ -9,6 +9,18 @@
9
  line-height: 26px;
10
  }
11
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  /* End of reset */
13
 
14
  .crb-display-none {
@@ -58,8 +70,8 @@
58
 
59
  #crb-admin input.crb-digits {
60
  text-align: center;
61
- /*font-family: Menlo, Consolas, Monaco, monospace;
62
- font-size: 14px;*/
63
  }
64
 
65
  #crb-admin textarea,
@@ -74,10 +86,6 @@
74
  margin: 0 0.5em 0 0;
75
  }
76
 
77
- #crb-admin .wp-list-table td {
78
- color: #222;
79
- }
80
-
81
  .crb-main a:focus,
82
  #crb-aside a:focus {
83
  -webkit-box-shadow: none !important;
@@ -106,7 +114,14 @@
106
  }
107
 
108
  .crb-monospace {
109
- font-family: Menlo, Consolas, Monaco, monospace;
 
 
 
 
 
 
 
110
  }
111
 
112
  /* Settings' forms */
@@ -124,13 +139,15 @@
124
  }
125
  .crb-settings .form-table th {
126
  min-width: 200px;
 
127
  /*
128
  padding-top: 15px;
129
  vertical-align: middle;*/
130
  }
131
  .crb-settings label.crb-below {
132
  padding-top: 0.5em;
133
- opacity: 0.8;
 
134
  }
135
  .crb-settings .form-table input.crb-wide,
136
  .crb-settings .form-table select.crb-wide,
@@ -419,7 +436,7 @@
419
 
420
  .crb-tab-sessions #ses_started,
421
  .crb-tab-sessions #ses_expires{
422
- width: 15%;
423
  }
424
 
425
  .crb-tab-sessions .crb-us-lbl {
@@ -430,7 +447,9 @@
430
  color: white;
431
  }
432
 
433
-
 
 
434
  .crb-table > tbody > tr:nth-child(even){
435
  background: #f9f9f9
436
  }
@@ -443,13 +462,26 @@
443
  .crb-table > tbody > tr.crb-odd{
444
  background: #FFF
445
  }
446
-
447
  .crb-table > tbody > tr > td {
448
  vertical-align: middle;
449
  color: #222;
450
  min-width: 70px;
451
  }
452
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
453
  #crb-traffic td {
454
  vertical-align: top;
455
  }
@@ -485,6 +517,11 @@
485
 
486
  #crb-traffic .crb-request span {
487
  margin-right: 0.5em;
 
 
 
 
 
488
  }
489
 
490
  #crb-traffic .crb-toggle .crb-request {
@@ -501,27 +538,18 @@ td.crb-traffic-details td {
501
  }
502
 
503
  td.crb-traffic-details table td:nth-child(2) {
504
- font-family: Menlo, Consolas, Monaco, monospace;
 
505
  }
506
 
507
  .crb-traffic-more {
508
  position: relative;
509
  left: -9999em;
510
  }
511
-
512
-
513
- /*
514
- td.crb-traffic-details div{
515
- overflow: auto;
516
- max-height: 600px;
517
- }*/
518
  .crb-POST, .crb-ffile{
519
  /*background-color: #616e7b;*/
520
  background-color: #69737d;
521
  color: #fff;
522
- display: inline-block;
523
- line-height: 1em;
524
- padding: 4px 8px;
525
  }
526
  .crb-200 {
527
  color: green;
@@ -531,38 +559,32 @@ td.crb-traffic-details div{
531
  .crb-405{
532
  background-color: #FF5733;
533
  color: #fff;
534
- display: inline-block;
535
- line-height: 1em;
536
- padding: 4px 8px;
537
  }
538
  .crb-wp-type-515{
539
  background-color: #7A804A;
540
  color: #fff;
541
- display: inline-block;
542
- line-height: 1em;
543
- padding: 4px 8px;
544
  }
545
  .crb-wp-type-520{
546
  background-color: #A00D5C;
547
  color: #fff;
548
- display: inline-block;
549
- line-height: 1em;
550
- padding: 4px 8px;
551
  }
 
 
 
 
 
 
 
 
552
  .crb-php-error{
553
  background-color: #8892bf;
554
  color: #fff;
555
- display: inline-block;
556
- line-height: 1em;
557
- padding: 4px 8px;
558
  }
559
  .crb-above{
560
  background-color: #FFFF55;
561
- display: inline-block;
562
- line-height: 1em;
563
- padding: 4px 8px;
564
  }
565
  .crb-fields-table {
 
566
  min-width: 400px;
567
  width: 100%;
568
  margin-right: 2em;
@@ -570,7 +592,7 @@ td.crb-traffic-details div{
570
  /*border: 1px solid #CCC;*/
571
  }
572
  .crb-fields-table.crb-top-table > tbody > tr:first-child td{
573
- background-color: #CCC;
574
  border-color: #CCC;
575
  color: #000;
576
  }
@@ -588,8 +610,8 @@ td.crb-traffic-details div{
588
  .crb-fields-table td:first-child {
589
  min-width: 150px;
590
  width: 20%;
591
- font-weight: bold;
592
- color: #444;
593
  }
594
  .crb-fields-table td:nth-child(2) {
595
  color: #000;
@@ -711,13 +733,24 @@ td.crb-traffic-details div{
711
  word-break: keep-all;
712
  }
713
 
714
- .act-details{
715
- background-color: #888;
716
  color: #ffffff;
717
  display: inline-block;
718
  padding: 0 5px 0 5px;
719
- vertical-align: middle;
 
 
720
  }
 
 
 
 
 
 
 
 
 
721
  p.act-url, .act-role{
722
  color: #777;
723
  }
@@ -816,16 +849,21 @@ p.act-url{
816
  padding-top: 0 !important;
817
  padding-bottom: 0 !important;
818
  }
819
- .crb10 span, .crb11 span {
 
820
  margin-left: -0.7em;
821
  padding-left: 1.1em; /* 0.7 + 0.4 */
822
  padding-right: 1em;
 
 
 
823
  }
824
- .crb10 span:first-child, .crb11 span:first-child {
 
825
  display: inline-block;
826
  background-color: #FF5733;
827
  margin-right: 1.5em;
828
- line-height: 2;
829
  }
830
  .crb5 {
831
  /*border-left: 4px solid #FF5733;*/
@@ -920,8 +958,7 @@ p.act-url{
920
  .acl-table td:first-child {
921
  width: 25%;
922
  white-space: pre;
923
- font-family: Menlo, Consolas, Monaco, monospace;
924
- font-size: 110%;
925
  }
926
  .acl-table td:nth-child(2) {
927
  width: 37%;
@@ -958,7 +995,7 @@ p.act-url{
958
  }
959
 
960
  .crb-acl-hints td:nth-child(3) {
961
- font-family: Menlo, Consolas, Monaco, monospace;
962
  }
963
 
964
  .crb-acl-hints td {
@@ -1000,6 +1037,7 @@ a.nav-tab:last-of-type{
1000
  color: #0073aa;
1001
  /*color: rgb(0, 103, 153);*/
1002
  font-weight: 700;
 
1003
  }
1004
  .cerber-tabs .nav-tab i{
1005
  font-size: 1.5em;
@@ -1086,7 +1124,6 @@ body.wp-cerber_page_cerber-integrity {
1086
  #crb-scan-display div div p:first-of-type {
1087
  font-size: 200%;
1088
  line-height: 160%;
1089
- /*font-family: Menlo, Consolas, Monaco, monospace;*/
1090
  color: #000;
1091
  margin: 0;
1092
  }
@@ -1106,7 +1143,8 @@ body.wp-cerber_page_cerber-integrity {
1106
  }
1107
  .crb-scan-info table td:first-child{
1108
  padding-right: 1em;
1109
- color: #555;
 
1110
  }
1111
  .crb-scan-info table td:last-child{
1112
  color: #000;
@@ -1221,7 +1259,8 @@ body.wp-cerber_page_cerber-integrity {
1221
  }
1222
 
1223
  #crb-browse-files tr.crb-item-file td:nth-child(2) {
1224
- font-family: Menlo, Consolas, Monaco, monospace;
 
1225
  color: #000;
1226
  /*cursor: pointer;*/
1227
  }
@@ -1229,10 +1268,10 @@ body.wp-cerber_page_cerber-integrity {
1229
  #crb-browse-files tr.crb-scan-section td {
1230
  padding: 15px 0 15px 10px;
1231
  border-top: 1px dashed #aaa;
1232
- font-size: 105%;
1233
  }
1234
  #crb-browse-files tr.crb-scan-section td span:first-child {
1235
- font-weight: bold;
1236
  color: #333;
1237
  /*margin-right: 0.5em;*/
1238
  }
@@ -1571,7 +1610,7 @@ div#whois:hover {
1571
  #diagnostic h3 {
1572
  margin-top: 0;
1573
  }
1574
- #diagnostic .diag-section {
1575
  background-color: #fafafa;
1576
  border-top: 2px solid #ddd;
1577
  /*width: 90%;
@@ -1608,6 +1647,13 @@ div#whois:hover {
1608
  width:50%;
1609
  }
1610
 
 
 
 
 
 
 
 
1611
  .crb-plain-table {
1612
  max-height: 440px;
1613
  overflow: auto;
@@ -1620,6 +1666,8 @@ div#whois:hover {
1620
  border: 1px solid #eee;
1621
  }
1622
  .crb-plain-fcw td:first-of-type {
 
 
1623
  width: 30%;
1624
  }
1625
  .crb-plain-table td:not(:first-of-type) {
@@ -1628,7 +1676,7 @@ div#whois:hover {
1628
  .crb-plain-header,
1629
  .crb-plain-fh td:first-of-type {
1630
  color: #000;
1631
- font-weight: bold;
1632
  }
1633
 
1634
 
@@ -1657,7 +1705,7 @@ div#whois:hover {
1657
  font-family: 'Roboto';
1658
  font-style: normal;
1659
  font-weight: 300;
1660
- src: local('Roboto Light'), local('Roboto-Light'), url(fonts/roboto/Roboto-Light.woff) format('woff');
1661
  }
1662
  @font-face {
1663
  font-family: 'Roboto';
@@ -1678,6 +1726,20 @@ div#whois:hover {
1678
  src: local('Roboto Bold'), local('Roboto-Bold'), url(fonts/roboto/Roboto-Bold.woff) format('woff');
1679
  }
1680
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1681
  @font-face {
1682
  font-family: "cerber-icon";
1683
  src: url('fonts/cerber.eot');
@@ -1937,7 +1999,8 @@ table.vtable > tbody > tr > td {
1937
  /* Diagnostic Log */
1938
 
1939
  #crb-log-viewer pre {
1940
- font-family: monospace;
 
1941
  white-space: pre-wrap;
1942
  word-wrap: break-word;
1943
  background-color: #fff;
@@ -1964,7 +2027,6 @@ table.vtable > tbody > tr > td {
1964
  font-weight: bold;
1965
  }
1966
 
1967
-
1968
  /* Switches & Toggle */
1969
 
1970
  .crb-switch {
9
  line-height: 26px;
10
  }
11
 
12
+ #crb-admin .wp-list-table td {
13
+ color: #222;
14
+ }
15
+
16
+ #crb-admin .wp-list-table .row-actions span {
17
+ white-space: nowrap;
18
+ }
19
+
20
+ #crb-admin .dashicons {
21
+ line-height: inherit;
22
+ }
23
+
24
  /* End of reset */
25
 
26
  .crb-display-none {
70
 
71
  #crb-admin input.crb-digits {
72
  text-align: center;
73
+ font-family: 'Roboto Mono', Menlo, Consolas, Monaco, monospace;
74
+ /*font-size: 12px;*/
75
  }
76
 
77
  #crb-admin textarea,
86
  margin: 0 0.5em 0 0;
87
  }
88
 
 
 
 
 
89
  .crb-main a:focus,
90
  #crb-aside a:focus {
91
  -webkit-box-shadow: none !important;
114
  }
115
 
116
  .crb-monospace {
117
+ font-family: 'Roboto Mono', Menlo, Consolas, Monaco, monospace;
118
+ font-size: 12px;
119
+ color: #000;
120
+ }
121
+
122
+ .crb-monospace td {
123
+ font-size: 12px;
124
+ color: #000;
125
  }
126
 
127
  /* Settings' forms */
139
  }
140
  .crb-settings .form-table th {
141
  min-width: 200px;
142
+ font-weight: 500;
143
  /*
144
  padding-top: 15px;
145
  vertical-align: middle;*/
146
  }
147
  .crb-settings label.crb-below {
148
  padding-top: 0.5em;
149
+ font-size: 13px;
150
+ opacity: 0.9;
151
  }
152
  .crb-settings .form-table input.crb-wide,
153
  .crb-settings .form-table select.crb-wide,
436
 
437
  .crb-tab-sessions #ses_started,
438
  .crb-tab-sessions #ses_expires{
439
+ /*width: 15%;*/
440
  }
441
 
442
  .crb-tab-sessions .crb-us-lbl {
447
  color: white;
448
  }
449
 
450
+ .crb-table th {
451
+ white-space: nowrap;
452
+ }
453
  .crb-table > tbody > tr:nth-child(even){
454
  background: #f9f9f9
455
  }
462
  .crb-table > tbody > tr.crb-odd{
463
  background: #FFF
464
  }
 
465
  .crb-table > tbody > tr > td {
466
  vertical-align: middle;
467
  color: #222;
468
  min-width: 70px;
469
  }
470
 
471
+ .crb_align_right th:not(:first-child),
472
+ .crb_align_right td:not(:first-child) {
473
+ text-align: right;
474
+ }
475
+
476
+ .crb_align_left_2 th:nth-child(2),
477
+ .crb_align_left_2 td:nth-child(2) {
478
+ text-align: left;
479
+ }
480
+
481
+ .crb-anchor-decorated a {
482
+ text-decoration: underline;
483
+ }
484
+
485
  #crb-traffic td {
486
  vertical-align: top;
487
  }
517
 
518
  #crb-traffic .crb-request span {
519
  margin-right: 0.5em;
520
+ display: inline-block;
521
+ vertical-align: middle;
522
+ line-height: 1.2em;
523
+ padding: 4px 8px;
524
+ word-break: keep-all;
525
  }
526
 
527
  #crb-traffic .crb-toggle .crb-request {
538
  }
539
 
540
  td.crb-traffic-details table td:nth-child(2) {
541
+ font-family: 'Roboto Mono', Menlo, Consolas, Monaco, monospace;
542
+ font-size: 12px;
543
  }
544
 
545
  .crb-traffic-more {
546
  position: relative;
547
  left: -9999em;
548
  }
 
 
 
 
 
 
 
549
  .crb-POST, .crb-ffile{
550
  /*background-color: #616e7b;*/
551
  background-color: #69737d;
552
  color: #fff;
 
 
 
553
  }
554
  .crb-200 {
555
  color: green;
559
  .crb-405{
560
  background-color: #FF5733;
561
  color: #fff;
 
 
 
562
  }
563
  .crb-wp-type-515{
564
  background-color: #7A804A;
565
  color: #fff;
 
 
 
566
  }
567
  .crb-wp-type-520{
568
  background-color: #A00D5C;
569
  color: #fff;
 
 
 
570
  }
571
+
572
+ .crb-req-status-500,
573
+ .crb-req-status-501,
574
+ .crb-req-status-502{
575
+ background-color: #51ae43;
576
+ color: #fff;
577
+ }
578
+
579
  .crb-php-error{
580
  background-color: #8892bf;
581
  color: #fff;
 
 
 
582
  }
583
  .crb-above{
584
  background-color: #FFFF55;
 
 
 
585
  }
586
  .crb-fields-table {
587
+ font-family: "Roboto Mono", Menlo, Consolas, Monaco, monospace;
588
  min-width: 400px;
589
  width: 100%;
590
  margin-right: 2em;
592
  /*border: 1px solid #CCC;*/
593
  }
594
  .crb-fields-table.crb-top-table > tbody > tr:first-child td{
595
+ background-color: #DDD;
596
  border-color: #CCC;
597
  color: #000;
598
  }
610
  .crb-fields-table td:first-child {
611
  min-width: 150px;
612
  width: 20%;
613
+ font-weight: 500;
614
+ color: #333;
615
  }
616
  .crb-fields-table td:nth-child(2) {
617
  color: #000;
733
  word-break: keep-all;
734
  }
735
 
736
+ .crb-log-status{
737
+ background-color: #777;
738
  color: #ffffff;
739
  display: inline-block;
740
  padding: 0 5px 0 5px;
741
+
742
+ line-height: 1.2;
743
+ padding: 4px 8px;
744
  }
745
+
746
+ .crb-status-500 {
747
+ background-color: #51ae43;
748
+ }
749
+
750
+ .crb-status-14 {
751
+ background-color: #000;
752
+ }
753
+
754
  p.act-url, .act-role{
755
  color: #777;
756
  }
849
  padding-top: 0 !important;
850
  padding-bottom: 0 !important;
851
  }
852
+ .crb10 span,
853
+ .crb11 span {
854
  margin-left: -0.7em;
855
  padding-left: 1.1em; /* 0.7 + 0.4 */
856
  padding-right: 1em;
857
+
858
+ line-height: 1.2;
859
+ padding: 4px 8px;
860
  }
861
+ .crb10 span:first-child,
862
+ .crb11 span:first-child {
863
  display: inline-block;
864
  background-color: #FF5733;
865
  margin-right: 1.5em;
866
+ line-height: 1.2;
867
  }
868
  .crb5 {
869
  /*border-left: 4px solid #FF5733;*/
958
  .acl-table td:first-child {
959
  width: 25%;
960
  white-space: pre;
961
+ font-family: 'Roboto Mono', Menlo, Consolas, Monaco, monospace;
 
962
  }
963
  .acl-table td:nth-child(2) {
964
  width: 37%;
995
  }
996
 
997
  .crb-acl-hints td:nth-child(3) {
998
+ font-family: 'Roboto Mono', Menlo, Consolas, Monaco, monospace;
999
  }
1000
 
1001
  .crb-acl-hints td {
1037
  color: #0073aa;
1038
  /*color: rgb(0, 103, 153);*/
1039
  font-weight: 700;
1040
+ font-weight: 500;
1041
  }
1042
  .cerber-tabs .nav-tab i{
1043
  font-size: 1.5em;
1124
  #crb-scan-display div div p:first-of-type {
1125
  font-size: 200%;
1126
  line-height: 160%;
 
1127
  color: #000;
1128
  margin: 0;
1129
  }
1143
  }
1144
  .crb-scan-info table td:first-child{
1145
  padding-right: 1em;
1146
+ vertical-align: top;
1147
+ color: #444;
1148
  }
1149
  .crb-scan-info table td:last-child{
1150
  color: #000;
1259
  }
1260
 
1261
  #crb-browse-files tr.crb-item-file td:nth-child(2) {
1262
+ font-family: "Roboto Mono", Menlo, Consolas, Monaco, monospace;
1263
+ font-size: 12px;
1264
  color: #000;
1265
  /*cursor: pointer;*/
1266
  }
1268
  #crb-browse-files tr.crb-scan-section td {
1269
  padding: 15px 0 15px 10px;
1270
  border-top: 1px dashed #aaa;
1271
+ font-size: 115%;
1272
  }
1273
  #crb-browse-files tr.crb-scan-section td span:first-child {
1274
+ font-weight: 500;
1275
  color: #333;
1276
  /*margin-right: 0.5em;*/
1277
  }
1610
  #diagnostic h3 {
1611
  margin-top: 0;
1612
  }
1613
+ #diagnostic .crb-diag-section {
1614
  background-color: #fafafa;
1615
  border-top: 2px solid #ddd;
1616
  /*width: 90%;
1647
  width:50%;
1648
  }
1649
 
1650
+ .crb-diag-inner,
1651
+ .crb-diag-inner p {
1652
+ font-family: 'Roboto Mono', Menlo, Consolas, Monaco, monospace;
1653
+ font-size: 12px;
1654
+ color: #000;
1655
+ }
1656
+
1657
  .crb-plain-table {
1658
  max-height: 440px;
1659
  overflow: auto;
1666
  border: 1px solid #eee;
1667
  }
1668
  .crb-plain-fcw td:first-of-type {
1669
+ font-weight: 500;
1670
+ color: #222;
1671
  width: 30%;
1672
  }
1673
  .crb-plain-table td:not(:first-of-type) {
1676
  .crb-plain-header,
1677
  .crb-plain-fh td:first-of-type {
1678
  color: #000;
1679
+ /*font-weight: bold;*/
1680
  }
1681
 
1682
 
1705
  font-family: 'Roboto';
1706
  font-style: normal;
1707
  font-weight: 300;
1708
+ src: url(fonts/roboto/Roboto-Light.woff) format('woff');
1709
  }
1710
  @font-face {
1711
  font-family: 'Roboto';
1726
  src: local('Roboto Bold'), local('Roboto-Bold'), url(fonts/roboto/Roboto-Bold.woff) format('woff');
1727
  }
1728
 
1729
+ @font-face {
1730
+ font-family: 'Roboto Mono';
1731
+ font-style: normal;
1732
+ font-weight: 400;
1733
+ src: url(fonts/roboto/Roboto-Mono_400.woff2) format('woff2');
1734
+ }
1735
+
1736
+ @font-face {
1737
+ font-family: 'Roboto Mono';
1738
+ font-style: normal;
1739
+ font-weight: 500;
1740
+ src: url(fonts/roboto/Roboto-Mono_500.woff2) format('woff2');
1741
+ }
1742
+
1743
  @font-face {
1744
  font-family: "cerber-icon";
1745
  src: url('fonts/cerber.eot');
1999
  /* Diagnostic Log */
2000
 
2001
  #crb-log-viewer pre {
2002
+ font-family: 'Roboto Mono', Menlo, Consolas, Monaco, monospace;
2003
+ font-size: 12px;
2004
  white-space: pre-wrap;
2005
  word-wrap: break-word;
2006
  background-color: #fff;
2027
  font-weight: bold;
2028
  }
2029
 
 
2030
  /* Switches & Toggle */
2031
 
2032
  .crb-switch {
assets/admin.js CHANGED
@@ -290,7 +290,6 @@ jQuery(document).ready(function ($) {
290
  event.preventDefault();
291
  });
292
 
293
-
294
  // GEO
295
 
296
  $("form#crb-geo-rules .crb-geo-switcher").change(function () {
290
  event.preventDefault();
291
  });
292
 
 
293
  // GEO
294
 
295
  $("form#crb-geo-rules .crb-geo-switcher").change(function () {
assets/fonts/roboto/Roboto-Mono_400.woff2 ADDED
Binary file
assets/fonts/roboto/Roboto-Mono_500.woff2 ADDED
Binary file
assets/scanner.js CHANGED
@@ -402,12 +402,12 @@ jQuery(document).ready(function ($) {
402
 
403
  if (scanner_data.errors && scanner_data.errors.length) {
404
  scanner_data.errors.forEach(function (item, index) {
405
- console.error('WP CERBER SCANNER ERROR: ' + item);
406
  });
407
  }
408
  if (crb_response.console_log && crb_response.console_log.length) {
409
  crb_response.console_log.forEach(function (item) {
410
- console.log('WP CERBER: ' + item);
411
  });
412
  }
413
  }
402
 
403
  if (scanner_data.errors && scanner_data.errors.length) {
404
  scanner_data.errors.forEach(function (item, index) {
405
+ console.error('WP CERBER SCANNER: ' + item);
406
  });
407
  }
408
  if (crb_response.console_log && crb_response.console_log.length) {
409
  crb_response.console_log.forEach(function (item) {
410
+ console.log('WP CERBER SCANNER: ' + item);
411
  });
412
  }
413
  }
assets/ui-stack.css ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #ui_page_overlay {
2
+ position: fixed;
3
+ display: none;
4
+ width: 100%;
5
+ height: 100%;
6
+ top: 0;
7
+ left: 0;
8
+ right: 0;
9
+ bottom: 0;
10
+ background-color: rgba(255, 255, 255, 0.6);
11
+ z-index: 2;
12
+ }
13
+
14
+ .uis_page_loader {
15
+ border: 8px solid #52aad1;
16
+ border-top: 8px solid #0073aa;
17
+ opacity: 0.9;
18
+
19
+ border-radius: 50%;
20
+ width: 70px;
21
+ height: 70px;
22
+ -webkit-animation: spin 1.5s linear infinite; /* Safari */
23
+ animation: spin 1.5s linear infinite;
24
+
25
+ /*position: absolute;
26
+ top: 30%;
27
+ left: 35%;*/
28
+ margin: 100px auto;
29
+
30
+ color: white;
31
+ transform: translate(-50%,-50%);
32
+ -ms-transform: translate(-50%,-50%);
33
+ }
34
+ /* Safari */
35
+ @-webkit-keyframes spin {
36
+ 0% { -webkit-transform: rotate(0deg); }
37
+ 100% { -webkit-transform: rotate(360deg); }
38
+ }
39
+ @keyframes spin {
40
+ 0% { transform: rotate(0deg); }
41
+ 100% { transform: rotate(360deg); }
42
+ }
assets/ui-stack.js ADDED
@@ -0,0 +1,121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery(document).ready(function ($) {
2
+
3
+ // Async content loading -----------------------------------------------------
4
+
5
+ let crb_async_content_areas = $('.crb_async_content');
6
+
7
+ if (!__is_empty(crb_async_content_areas)) {
8
+ uis_async_loader(crb_async_content_areas);
9
+ }
10
+
11
+ function uis_async_loader(content_areas) {
12
+ (async () => {
13
+ let total_requests = 0;
14
+ //for(element of [1,2,3]){
15
+ for (element of content_areas) {
16
+ let obj = $(element);
17
+ uis_overlay_loader_on(obj);
18
+
19
+ total_requests += await uis_async_load_content(obj);
20
+
21
+ uis_overlay_loader_off(obj);
22
+ if (total_requests > 100) {
23
+ alert('Loading is aborted: the limit on the number of AJAX requests has reached.');
24
+ break;
25
+ }
26
+ }
27
+ })();
28
+ }
29
+
30
+ /**
31
+ * Load content for a single object. Makes several requests if necessary.
32
+ *
33
+ * @param jquery_object
34
+ * @returns {Promise<number>}
35
+ */
36
+ async function uis_async_load_content(jquery_object) {
37
+ let crb_done = false;
38
+ let request_num = 0;
39
+
40
+ do {
41
+ crb_done = await uis_async_request(jquery_object, request_num);
42
+ request_num++;
43
+ } while (!crb_done);
44
+
45
+ return request_num;
46
+ }
47
+
48
+ /**
49
+ * Make AJAX call with HTML data attributes that are used as HTTP request fields
50
+ *
51
+ * @param jquery_object
52
+ * @param request_num
53
+ * @returns {Promise<boolean>}
54
+ */
55
+ async function uis_async_request(jquery_object, request_num) {
56
+ let crb_done = true;
57
+
58
+ let request_fields = {
59
+ action: 'cerber_ajax',
60
+ ajax_nonce: crb_ajax_nonce,
61
+ request: request_num
62
+ };
63
+
64
+ let data_fields = jquery_object.data();
65
+ if (__is_empty(data_fields)) {
66
+ return true;
67
+ }
68
+
69
+ request_fields = {...data_fields, ...request_fields};
70
+
71
+ await $.ajax({
72
+ dataType: "json",
73
+ url: ajaxurl,
74
+ data: request_fields,
75
+ beforeSend: function (xhr) {
76
+ }
77
+ })
78
+ .done(function (server_response, textStatus, jqXHR) {
79
+ if (!__is_empty(server_response.continue)) {
80
+ crb_done = false;
81
+ }
82
+ if (!__is_empty(server_response.html)) {
83
+ jquery_object.html(server_response.html);
84
+ }
85
+ if (!__is_empty(server_response.error)) {
86
+ alert(server_response.error);
87
+ crb_done = true;
88
+ }
89
+ }
90
+ )
91
+ .fail(function (jqXHR, textStatus, errorThrown) {
92
+ let err = errorThrown + ' ' + jqXHR.status;
93
+ //alert(err); // Ctrl + F5 also fires fail event
94
+ console.error('Server Error: ' + err);
95
+ })
96
+ .always(function () {
97
+ })
98
+
99
+ return crb_done;
100
+ }
101
+
102
+ function uis_overlay_loader_on(area) {
103
+ let uis_ajax_loader = '<div class="uis_page_loader"></div>';
104
+ area.append(uis_ajax_loader);
105
+ $('.uis_page_loader').show();
106
+ }
107
+
108
+ function uis_overlay_loader_off(area) {
109
+ area.find('.uis_page_loader').remove();
110
+ }
111
+ });
112
+
113
+ function __is_empty(thing) {
114
+ if (typeof thing == 'undefined') {
115
+ return true;
116
+ } else if (thing.length === 0) {
117
+ return true;
118
+ }
119
+
120
+ return false;
121
+ }
cerber-2fa.php CHANGED
@@ -508,7 +508,7 @@ final class CRB_2FA {
508
  $ds[] = 'Location: ' . cerber_country_name( $c ) . ' (' . $c . ')';
509
  }
510
  $ds[] = 'Browser: ' . substr( strip_tags( crb_array_get( $_SERVER, 'HTTP_USER_AGENT', 'Not set' ) ), 0, 1000 );
511
- $ds[] = 'Date: ' . cerber_date( time() );
512
 
513
  $body[] = '';
514
  $body[] = __( 'Here are the details of the sign-in attempt', 'wp-cerber' );
508
  $ds[] = 'Location: ' . cerber_country_name( $c ) . ' (' . $c . ')';
509
  }
510
  $ds[] = 'Browser: ' . substr( strip_tags( crb_array_get( $_SERVER, 'HTTP_USER_AGENT', 'Not set' ) ), 0, 1000 );
511
+ $ds[] = 'Date: ' . cerber_date( time(), false );
512
 
513
  $body[] = '';
514
  $body[] = __( 'Here are the details of the sign-in attempt', 'wp-cerber' );
cerber-ds.php CHANGED
@@ -66,7 +66,7 @@ final class CRB_DS {
66
 
67
  self::update_user_shadow( get_current_user_id(), null, null, self::is_meta_preserve() );
68
 
69
- cerber_bg_task_add( array( 'func' => '_crb_ds_background', 'exec_until' => 'done' ) );
70
 
71
  break;
72
 
@@ -370,7 +370,7 @@ final class CRB_DS {
370
  }
371
 
372
  /**
373
- * Protect DB from an authorized user creation
374
  *
375
  * @param $user_id
376
  *
@@ -823,19 +823,19 @@ final class CRB_DS {
823
  }
824
 
825
  static function get_status() {
826
- $ret = '';
827
 
828
  if ( crb_get_settings( 'ds_4acc' ) ) {
829
  self::get_type_status( 1, $msg );
830
- $ret .= 'Enabled for user accounts. ' . $msg;
831
  }
832
  if ( crb_get_settings( 'ds_4roles' ) ) {
833
  self::get_type_status( 2, $msg );
834
- $ret .= '<p>Enabled for user roles. ' . $msg;
835
  }
836
  if ( crb_get_settings( 'ds_4opts' ) ) {
837
  self::get_type_status( 3, $msg );
838
- $ret .= '<p>Enabled for site settings. ' . $msg;
839
  }
840
 
841
  return $ret;
66
 
67
  self::update_user_shadow( get_current_user_id(), null, null, self::is_meta_preserve() );
68
 
69
+ cerber_bg_task_add( '_crb_ds_background', array( 'exec_until' => 'done' ) );
70
 
71
  break;
72
 
370
  }
371
 
372
  /**
373
+ * Protect DB from an unauthorized user creation
374
  *
375
  * @param $user_id
376
  *
823
  }
824
 
825
  static function get_status() {
826
+ $ret = array();
827
 
828
  if ( crb_get_settings( 'ds_4acc' ) ) {
829
  self::get_type_status( 1, $msg );
830
+ $ret [] = 'Enabled for user accounts. ' . $msg;
831
  }
832
  if ( crb_get_settings( 'ds_4roles' ) ) {
833
  self::get_type_status( 2, $msg );
834
+ $ret [] = 'Enabled for user roles. ' . $msg;
835
  }
836
  if ( crb_get_settings( 'ds_4opts' ) ) {
837
  self::get_type_status( 3, $msg );
838
+ $ret [] = 'Enabled for site settings. ' . $msg;
839
  }
840
 
841
  return $ret;
cerber-lab.php CHANGED
@@ -217,10 +217,10 @@ function lab_api_send_request( $workload = array(), $payload_key = null ) {
217
  *
218
  * @return array|bool The response of a node on the success request otherwise false on any error
219
  */
220
- function lab_send_request($request, $node_id = null, $scheme = null) {
221
  global $node_delay;
222
 
223
- $node = lab_get_node($node_id);
224
  if ( ! $scheme ) {
225
  if ( crb_get_settings( 'cerberproto' ) ) {
226
  $scheme = 'https';
@@ -229,7 +229,7 @@ function lab_send_request($request, $node_id = null, $scheme = null) {
229
  $scheme = 'http';
230
  }
231
  }
232
- elseif ($scheme != 'http' || $scheme != 'https') {
233
  $scheme = 'https';
234
  }
235
 
@@ -237,17 +237,17 @@ function lab_send_request($request, $node_id = null, $scheme = null) {
237
  $body['container'] = $request;
238
  $body['nodes'] = lab_get_nodes();
239
 
240
- $request_body = json_encode($body);
241
- if (JSON_ERROR_NONE != json_last_error()) {
242
  //'Unable to encode request: '.json_last_error_msg(), array(__FUNCTION__,__LINE__));
243
  return false;
244
  }
245
 
246
  $headers = array(
247
- 'Host:'.$node[2],
248
  'Content-Type: application/json',
249
  'Accept: application/json',
250
- 'Cerber: '.CERBER_VER,
251
  /* 'Authorization: Bearer ' . $fields['key']*/
252
  );
253
 
@@ -272,8 +272,8 @@ function lab_send_request($request, $node_id = null, $scheme = null) {
272
  ) );
273
 
274
  $start = microtime( true );
275
- $data = @curl_exec( $curl );
276
- $stop = microtime( true );
277
 
278
  $node_delay = $stop - $start;
279
 
@@ -282,15 +282,13 @@ function lab_send_request($request, $node_id = null, $scheme = null) {
282
  }
283
  else {
284
  $response['status'] = 0;
285
- $code = intval( curl_getinfo( $curl, CURLINFO_HTTP_CODE ) );
286
- $response['error'] = 'No connection (' . $code . ')';
287
  //if (!$data) // curl_error($curl) . curl_errno($curl) );
288
  }
289
 
290
  curl_close( $curl );
291
 
292
- //$response = lab_parse_response( $data );
293
-
294
  lab_update_node_last( $node[0], array(
295
  $node_delay,
296
  $response['status'],
@@ -312,7 +310,7 @@ function lab_send_request($request, $node_id = null, $scheme = null) {
312
  *
313
  * @param $response
314
  *
315
- * @return array|mixed|object
316
  */
317
  function lab_parse_response( $response ) {
318
  $ret = array( 'status' => 1, 'error' => false );
@@ -321,7 +319,7 @@ function lab_parse_response( $response ) {
321
  $ret = json_decode( $response, true );
322
  if ( JSON_ERROR_NONE != json_last_error() ) {
323
  $ret['status'] = 0;
324
- $ret['error'] = 'JSON ERROR: ' . json_last_error_msg();
325
  }
326
  // Is everything is OK?
327
  if ( empty( $ret['key'] ) || ! empty( $ret['error'] ) ) {
@@ -330,7 +328,7 @@ function lab_parse_response( $response ) {
330
  }
331
  else {
332
  $ret['status'] = 0;
333
- $ret['error'] = 'No node answer';
334
  }
335
 
336
  if ( ! isset( $ret['error'] ) ) {
@@ -344,17 +342,23 @@ function lab_parse_response( $response ) {
344
  * Return "the best" (closest) node if $node_id is not specified
345
  *
346
  * @param $node_id integer node ID
 
347
  * @return array first element is ID of closest node, second is an IP address
348
  */
349
- function lab_get_node($node_id = null){
350
 
351
- $node_id = absint($node_id);
352
- if ($node_id) $best_id = $node_id;
353
- else $best_id = null;
 
 
 
 
 
354
 
355
  $nodes = lab_get_nodes();
356
 
357
- if (!$best_id) {
358
  if ( $nodes && ! empty( $nodes['best'] ) ) {
359
  $best_id = $nodes['best'];
360
  if ( ! $nodes['nodes'][ $best_id ]['last'][1] ) { // this node was not active at the last request
@@ -364,7 +368,9 @@ function lab_get_node($node_id = null){
364
  }
365
  }
366
 
367
- if (!$best_id || $best_id > LAB_NODE_MAX) $best_id = rand(1, LAB_NODE_MAX);
 
 
368
 
369
  $name = 'node' . $best_id . '.cerberlab.net';
370
 
@@ -379,7 +385,7 @@ function lab_get_node($node_id = null){
379
  $host = @gethostbyname( $name );
380
  }
381
 
382
- return array($best_id, $host, $name);
383
  }
384
 
385
  /**
@@ -398,21 +404,21 @@ function lab_check_nodes( $force = false, $kick_dns = false ) {
398
  }
399
 
400
  $nodes['nodes'] = array(); // clean up before testing
401
- //update_site_option( '_cerberlab_', $nodes );
402
  cerber_update_set( '_cerberlab_', $nodes );
403
 
404
  for ( $i = 1; $i <= LAB_NODE_MAX; $i ++ ) {
405
  if ( $kick_dns ) {
406
  @gethostbyname( 'node' . $i . '.cerberlab.net' );
407
  }
 
408
  lab_send_request( array( 'test' => 'test', 'key' => 1 ), $i );
409
  }
410
 
411
- $nodes = lab_get_nodes();
412
- $nodes['best'] = lab_best_node( $nodes['nodes'] );
413
  $nodes['last_check'] = time();
414
 
415
- //update_site_option( '_cerberlab_', $nodes );
416
  cerber_update_set( '_cerberlab_', $nodes );
417
 
418
  return $nodes['best'];
@@ -423,15 +429,20 @@ function lab_check_nodes( $force = false, $kick_dns = false ) {
423
  *
424
  * @param array $nodes
425
  *
426
- * @return int
427
  */
428
  function lab_best_node( $nodes = array() ) {
 
 
 
 
429
  $active_nodes = array();
430
  foreach ( $nodes as $id => $data ) {
431
  if ( $data['last']['1'] ) { // only active nodes must be in the list
432
  $active_nodes[ $id ] = $data['last']['0'];
433
  }
434
  }
 
435
  if ( $active_nodes ) {
436
  asort( $active_nodes );
437
  reset( $active_nodes );
@@ -485,6 +496,7 @@ function lab_status() {
485
  }
486
 
487
  $tb = array();
 
488
 
489
  foreach ( $nodes['nodes'] as $id => $node ) {
490
  $delay = round( 1000 * $node['last'][0] ) . ' ms';
217
  *
218
  * @return array|bool The response of a node on the success request otherwise false on any error
219
  */
220
+ function lab_send_request( $request, $node_id = null, $scheme = null ) {
221
  global $node_delay;
222
 
223
+ $node = lab_get_node( $node_id );
224
  if ( ! $scheme ) {
225
  if ( crb_get_settings( 'cerberproto' ) ) {
226
  $scheme = 'https';
229
  $scheme = 'http';
230
  }
231
  }
232
+ elseif ( $scheme != 'http' || $scheme != 'https' ) {
233
  $scheme = 'https';
234
  }
235
 
237
  $body['container'] = $request;
238
  $body['nodes'] = lab_get_nodes();
239
 
240
+ $request_body = json_encode( $body );
241
+ if ( JSON_ERROR_NONE != json_last_error() ) {
242
  //'Unable to encode request: '.json_last_error_msg(), array(__FUNCTION__,__LINE__));
243
  return false;
244
  }
245
 
246
  $headers = array(
247
+ 'Host:' . $node[2],
248
  'Content-Type: application/json',
249
  'Accept: application/json',
250
+ 'Cerber: ' . CERBER_VER,
251
  /* 'Authorization: Bearer ' . $fields['key']*/
252
  );
253
 
272
  ) );
273
 
274
  $start = microtime( true );
275
+ $data = @curl_exec( $curl );
276
+ $stop = microtime( true );
277
 
278
  $node_delay = $stop - $start;
279
 
282
  }
283
  else {
284
  $response['status'] = 0;
285
+ $code = intval( curl_getinfo( $curl, CURLINFO_HTTP_CODE ) );
286
+ $response['error'] = 'No connection (' . $code . ')';
287
  //if (!$data) // curl_error($curl) . curl_errno($curl) );
288
  }
289
 
290
  curl_close( $curl );
291
 
 
 
292
  lab_update_node_last( $node[0], array(
293
  $node_delay,
294
  $response['status'],
310
  *
311
  * @param $response
312
  *
313
+ * @return array
314
  */
315
  function lab_parse_response( $response ) {
316
  $ret = array( 'status' => 1, 'error' => false );
319
  $ret = json_decode( $response, true );
320
  if ( JSON_ERROR_NONE != json_last_error() ) {
321
  $ret['status'] = 0;
322
+ $ret['error'] = 'JSON ERROR: ' . json_last_error_msg();
323
  }
324
  // Is everything is OK?
325
  if ( empty( $ret['key'] ) || ! empty( $ret['error'] ) ) {
328
  }
329
  else {
330
  $ret['status'] = 0;
331
+ $ret['error'] = 'No node answer';
332
  }
333
 
334
  if ( ! isset( $ret['error'] ) ) {
342
  * Return "the best" (closest) node if $node_id is not specified
343
  *
344
  * @param $node_id integer node ID
345
+ *
346
  * @return array first element is ID of closest node, second is an IP address
347
  */
348
+ function lab_get_node( $node_id = null ) {
349
 
350
+ $node_id = absint( $node_id );
351
+
352
+ if ( $node_id ) {
353
+ $best_id = $node_id;
354
+ }
355
+ else {
356
+ $best_id = null;
357
+ }
358
 
359
  $nodes = lab_get_nodes();
360
 
361
+ if ( ! $best_id ) {
362
  if ( $nodes && ! empty( $nodes['best'] ) ) {
363
  $best_id = $nodes['best'];
364
  if ( ! $nodes['nodes'][ $best_id ]['last'][1] ) { // this node was not active at the last request
368
  }
369
  }
370
 
371
+ if ( ! $best_id || $best_id > LAB_NODE_MAX ) {
372
+ $best_id = rand( 1, LAB_NODE_MAX );
373
+ }
374
 
375
  $name = 'node' . $best_id . '.cerberlab.net';
376
 
385
  $host = @gethostbyname( $name );
386
  }
387
 
388
+ return array( $best_id, $host, $name );
389
  }
390
 
391
  /**
404
  }
405
 
406
  $nodes['nodes'] = array(); // clean up before testing
407
+
408
  cerber_update_set( '_cerberlab_', $nodes );
409
 
410
  for ( $i = 1; $i <= LAB_NODE_MAX; $i ++ ) {
411
  if ( $kick_dns ) {
412
  @gethostbyname( 'node' . $i . '.cerberlab.net' );
413
  }
414
+
415
  lab_send_request( array( 'test' => 'test', 'key' => 1 ), $i );
416
  }
417
 
418
+ $nodes = lab_get_nodes();
419
+ $nodes['best'] = lab_best_node( $nodes['nodes'] );
420
  $nodes['last_check'] = time();
421
 
 
422
  cerber_update_set( '_cerberlab_', $nodes );
423
 
424
  return $nodes['best'];
429
  *
430
  * @param array $nodes
431
  *
432
+ * @return int the ID of a node, 0 if no node available
433
  */
434
  function lab_best_node( $nodes = array() ) {
435
+ if ( empty( $nodes ) ) {
436
+ return 0;
437
+ }
438
+
439
  $active_nodes = array();
440
  foreach ( $nodes as $id => $data ) {
441
  if ( $data['last']['1'] ) { // only active nodes must be in the list
442
  $active_nodes[ $id ] = $data['last']['0'];
443
  }
444
  }
445
+
446
  if ( $active_nodes ) {
447
  asort( $active_nodes );
448
  reset( $active_nodes );
496
  }
497
 
498
  $tb = array();
499
+ ksort( $nodes['nodes'] );
500
 
501
  foreach ( $nodes['nodes'] as $id => $node ) {
502
  $delay = round( 1000 * $node['last'][0] ) . ' ms';
cerber-load.php CHANGED
@@ -78,19 +78,21 @@ define( 'CERBER_AGGRESSIVE', 1 );
78
  define( 'CRB_CNTX_SAFE', 1 );
79
  define( 'CRB_CNTX_NEXUS', 2 );
80
 
81
- require_once( dirname( __FILE__ ) . '/cerber-pluggable.php' );
82
- require_once( dirname( __FILE__ ) . '/common.php' );
83
- require_once( dirname( __FILE__ ) . '/settings.php' );
84
- include_once( dirname( __FILE__ ) . '/cerber-request.php' );
85
- require_once( dirname( __FILE__ ) . '/cerber-lab.php' );
86
- require_once( dirname( __FILE__ ) . '/whois.php' );
87
- require_once( dirname( __FILE__ ) . '/jetflow.php' );
88
- require_once( dirname( __FILE__ ) . '/cerber-news.php' );
89
- require_once( dirname( __FILE__ ) . '/cerber-scanner.php' );
90
- require_once( dirname( __FILE__ ) . '/cerber-2fa.php' );
91
- require_once( dirname( __FILE__ ) . '/nexus/cerber-nexus.php' );
92
- require_once( dirname( __FILE__ ) . '/cerber-ds.php' );
93
- require_once( dirname( __FILE__ ) . '/cerber-addons.php' );
 
 
94
 
95
  nexus_init();
96
 
@@ -765,7 +767,6 @@ function cerber_init() {
765
  }
766
 
767
  // Redirection control: no default aliases for redirections
768
- //if ( crb_get_settings( 'noredirect' ) ) {
769
  if ( cerber_no_redirect() ) {
770
  remove_action( 'template_redirect', 'wp_redirect_admin_locations', 1000 );
771
  }
@@ -808,7 +809,7 @@ add_action( 'plugins_loaded', function () {
808
 
809
  cerber_inspect_uploads(); // Uploads in the dashboard
810
 
811
- //cerber_init_cron(); @since 8.6.1 moved to cerber_bg_launcher
812
 
813
  if ( ! wp_next_scheduled( 'cerber_bg_launcher' ) ) {
814
  wp_schedule_event( time(), 'crb_five', 'cerber_bg_launcher' );
@@ -827,6 +828,7 @@ function cerber_load_admin_code() {
827
  require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
828
 
829
  require_once( dirname( __FILE__ ) . '/admin/cerber-settings.php' );
 
830
  require_once( dirname( __FILE__ ) . '/cerber-users.php' );
831
  require_once( dirname( __FILE__ ) . '/dashboard.php' );
832
  //require_once( dirname( __FILE__ ) . '/cerber-maintenance.php' ); // @since 8.5.1 moved to Nexus php files because it requires PHP 5.6
@@ -1148,7 +1150,7 @@ function cerber_user_login( $login, $user ) {
1148
  $fa = CRB_2FA::enforce( $user_login, $user );
1149
 
1150
  if ( is_wp_error( $fa ) ) {
1151
- cerber_diag_log( $fa->get_error_message() . ' | RID: ' . get_wp_cerber()->getRequestID(), '2FA' );
1152
  }
1153
 
1154
  cerber_login_history( $user->ID );
@@ -1622,7 +1624,7 @@ function cerber_is_email_permited( $email ) {
1622
  }
1623
 
1624
  foreach ( $list as $item ) {
1625
- if ( substr( $item, 0, 1 ) == '/' && substr( $item, - 1 ) == '/' ) {
1626
  $pattern = $item . 'i'; // we permit to specify any REGEX
1627
  if ( @preg_match( $pattern, $email ) ) {
1628
  return $ret;
@@ -1675,7 +1677,7 @@ function crb_is_reg_limit_reached() {
1675
  return false;
1676
  }
1677
 
1678
- // Fires in register_new_user()
1679
  add_filter( 'registration_errors', function ( $errors, $sanitized_user_login, $user_email ) {
1680
 
1681
  $result = cerber_is_registration_prohibited( $sanitized_user_login, $user_email );
@@ -1688,14 +1690,28 @@ add_filter( 'registration_errors', function ( $errors, $sanitized_user_login, $u
1688
  }, 10, 3 );
1689
 
1690
  // Fires in wp_insert_user()
1691
- add_filter( 'pre_user_login', function ( $login ) {
1692
 
1693
  if ( ! is_admin() && cerber_is_registration_prohibited( $login ) ) {
1694
  return null;
1695
  }
1696
 
1697
  return $login;
1698
- }, PHP_INT_MAX );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1699
 
1700
  // Validation for MU and BuddyPress
1701
  add_filter( 'wpmu_validate_user_signup', function ( $signup_data ) {
@@ -1971,7 +1987,7 @@ add_action( 'init', function () {
1971
  *
1972
  */
1973
  function cerber_access_control() {
1974
- global $wp_cerber, $cerber_status;
1975
 
1976
  if ( crb_acl_is_white() ) {
1977
  return;
@@ -2007,11 +2023,14 @@ function cerber_access_control() {
2007
  if ( ! cerber_is_rest_permitted() ) {
2008
  $rest_allowed = false;
2009
  }
 
2010
  if ( $rest_allowed && ! cerber_geo_allowed( 'geo_restapi' ) ) {
2011
  $rest_allowed = false;
2012
  $cerber_status = 16;
2013
  }
 
2014
  if ( ! $rest_allowed ) {
 
2015
  cerber_block_rest_api();
2016
  }
2017
  }
@@ -2346,7 +2365,7 @@ add_filter( 'wp_redirect', function ( $location ) {
2346
  * @since 7.0
2347
  */
2348
  function cerber_no_redirect() {
2349
- if ( crb_get_settings( 'noredirect' ) && !cerber_check_groove_x()) {
2350
  return true;
2351
  }
2352
 
@@ -2591,7 +2610,7 @@ function cerber_antibot_gene($recreate = false) {
2591
  * @return bool
2592
  */
2593
  function cerber_is_bot( $location = '' ) {
2594
- global $cerber_status;
2595
  static $ret = null;
2596
 
2597
  $remote_ip = cerber_get_remote_ip();
@@ -2640,15 +2659,18 @@ function cerber_is_bot( $location = '' ) {
2640
 
2641
  // Antibot whitelist
2642
  if ( ( $list = crb_get_settings( 'botswhite' ) ) && is_array( $list ) ) {
 
2643
  foreach ( $list as $item ) {
2644
- if ( substr( $item, 0, 1 ) == '{' && substr( $item, - 1 ) == '}' ) {
2645
  $pattern = '/' . substr( $item, 1, - 1 ) . '/i';
2646
- if ( @preg_match( $pattern, '/' . trim( $_SERVER['REQUEST_URI'], '/' ) ) ) {
 
2647
  $ret = false;
2648
  return $ret;
2649
  }
2650
  }
2651
- elseif ( false !== strpos( '/' . trim( $_SERVER['REQUEST_URI'], '/' ), $item ) ) {
 
2652
  $ret = false;
2653
  return $ret;
2654
  }
@@ -2766,10 +2788,10 @@ function cerber_get_geo_rules( $rule_id = '' ) {
2766
 
2767
  if ( ! isset( $rules ) || cerber_is_http_post() ) {
2768
  if ( is_multisite() ) {
2769
- $geo = cerber_db_get_var( 'SELECT meta_value FROM ' . $wpdb->sitemeta . ' WHERE meta_key = "geo_rule_set"' );
2770
  }
2771
  else {
2772
- $geo = cerber_db_get_var( 'SELECT option_value FROM ' . $wpdb->options . ' WHERE option_name = "geo_rule_set"' );
2773
  }
2774
 
2775
  if ( $geo ) {
@@ -2777,6 +2799,7 @@ function cerber_get_geo_rules( $rule_id = '' ) {
2777
  }
2778
  else {
2779
  $rules = false;
 
2780
  return false;
2781
  }
2782
  }
@@ -2808,8 +2831,10 @@ add_filter( 'auth_cookie_expiration', function ( $expire, $user_id ) {
2808
 
2809
  // add_action( 'wp_logout', function(){});
2810
  add_action( 'clear_auth_cookie', function () {
 
2811
  $uid = get_current_user_id();
2812
  if ( $uid ) {
 
2813
  cerber_log( 6, '', $uid );
2814
  CRB_2FA::delete_2fa( $uid );
2815
  }
@@ -2868,6 +2893,29 @@ function crb_log_user_ip( $user_id, $by_user = null ) {
2868
  add_user_meta( $user_id, '_crb_reg_', array( 'IP' => cerber_get_remote_ip(), 'user' => $by_user ) );
2869
  }
2870
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2871
  // Lockouts routines ---------------------------------------------------------------------
2872
 
2873
  /**
@@ -3217,23 +3265,28 @@ function cerber_is_prohibited( $username ) {
3217
  }
3218
 
3219
  // TODO: Merge with $wp_cerber->getStatus();
3220
- function cerber_get_status( $ip ) {
3221
  global $cerber_status;
3222
 
3223
  if ( ! empty( $cerber_status ) ) {
3224
- return absint($cerber_status);
3225
  }
3226
 
3227
  if ( cerber_block_check( $ip ) ) {
3228
  return 13;
3229
  }
3230
 
3231
- $tag = cerber_acl_check( $ip );
3232
- if ( $tag == 'W' ) {
3233
- return 0;
3234
- }
3235
- if ( $tag == 'B' ) {
3236
- return 14;
 
 
 
 
 
3237
  }
3238
 
3239
  if ( cerber_is_citadel() ) {
@@ -4102,7 +4155,7 @@ function cerber_send_email( $type = '', $msg = '', $ip = '' ) {
4102
  case 'citadel':
4103
  $max = cerber_db_get_var( 'SELECT MAX(stamp) FROM ' . CERBER_LOG_TABLE . ' WHERE activity = 7' );
4104
  if ( $max ) {
4105
- $last_date = cerber_date( $max );
4106
  //$last = $wpdb->get_row( 'SELECT * FROM ' . CERBER_LOG_TABLE . ' WHERE stamp = ' . $max . ' AND activity = 7' );
4107
  $last = cerber_db_get_row( 'SELECT * FROM ' . CERBER_LOG_TABLE . ' WHERE stamp = ' . $max . ' AND activity = 7', MYSQL_FETCH_OBJECT );
4108
  }
@@ -4123,7 +4176,7 @@ function cerber_send_email( $type = '', $msg = '', $ip = '' ) {
4123
  case 'lockout':
4124
  $max = cerber_db_get_var( 'SELECT MAX(stamp) FROM ' . CERBER_LOG_TABLE . ' WHERE activity IN (10,11)' );
4125
  if ( $max ) {
4126
- $last_date = cerber_date( $max );
4127
  $last = cerber_db_get_row( 'SELECT * FROM ' . CERBER_LOG_TABLE . ' WHERE stamp = ' . $max . ' AND activity IN (10,11)', MYSQL_FETCH_OBJECT );
4128
  }
4129
 
@@ -4161,7 +4214,7 @@ function cerber_send_email( $type = '', $msg = '', $ip = '' ) {
4161
  break;
4162
  case 'shutdown':
4163
  $subj = '[' . get_option( 'blogname' ) . '] ' . __( 'The WP Cerber security plugin has been deactivated', 'wp-cerber' );
4164
- $body .= __( 'The WP Cerber security plugin has been deactivated', 'wp-cerber' ) . "\n\n";
4165
  if ( ! is_user_logged_in() ) {
4166
  $u = __( 'Not logged in', 'wp-cerber' );
4167
  } else {
@@ -4178,11 +4231,15 @@ function cerber_send_email( $type = '', $msg = '', $ip = '' ) {
4178
  break;
4179
  case 'activated':
4180
  $subj = '[' . get_option( 'blogname' ) . '] ' . __( 'The WP Cerber security plugin is now active', 'wp-cerber' );
4181
- $body .= __( 'WP Cerber is now active and has started protecting your site', 'wp-cerber' ) . "\n\n";
4182
  //$body .= __( 'Change notification settings', 'wp-cerber' ) . ': ' . cerber_admin_link('notifications') . "\n\n";
4183
  $body .= __( 'Getting Started Guide', 'wp-cerber' ) . "\n\n";
4184
  $body .= 'https://wpcerber.com/getting-started/' . "\n\n";
4185
- $body .= 'Be in touch with the developer. Subscribe to Cerber\'s newsletter: https://wpcerber.com/subscribe-newsletter/';
 
 
 
 
4186
  break;
4187
  case 'newlurl':
4188
  $subj .= __( 'New Custom login URL', 'wp-cerber' );
@@ -4220,18 +4277,22 @@ function cerber_send_email( $type = '', $msg = '', $ip = '' ) {
4220
  'to' => $to,
4221
  'subject' => $subj
4222
  ) );
 
4223
  if ( $body_filtered && is_string( $body_filtered ) ) {
4224
  $body = $body_filtered;
4225
  }
4226
 
4227
  $footer = '';
4228
 
4229
- if ( $lolink = cerber_get_login_url() ) {
4230
- $lourl = urldecode( $lolink );
4231
- if ( $html_mode ) {
4232
- $lourl = '<a href="' . $lolink . '">' . $lourl . '</a>';
 
 
 
 
4233
  }
4234
- $footer .= "\n\n" . __( 'Your login page:', 'wp-cerber' ) . ' ' . $lourl;
4235
  }
4236
 
4237
  if ( $type == 'report' && $date = lab_lab( 1 ) ) {
@@ -4259,7 +4320,7 @@ function cerber_send_email( $type = '', $msg = '', $ip = '' ) {
4259
  foreach ( $to_list as $email ) {
4260
  $lastus = '';
4261
  if ( $rec = cerber_get_last_login( null, $email ) ) {
4262
- $lastus = sprintf( __( 'Your last sign-in was %s from %s', 'wp-cerber' ), cerber_date( $rec->stamp ), $rec->ip . ' (' . cerber_country_name( $rec->country ) . ')' );
4263
  if ( $html_mode ) {
4264
  $lastus = '<br/><br/>' . $lastus;
4265
  }
@@ -4479,21 +4540,6 @@ add_action( 'cerber_hourly_2', function () {
4479
 
4480
  cerber_delete_expired_set();
4481
 
4482
- // Cleanup the quarantine folder
4483
- if ( $dirs = glob( cerber_get_the_folder() . 'quarantine' . '/*', GLOB_ONLYDIR ) ) {
4484
- foreach ( $dirs as $dir ) {
4485
- $d = basename( $dir );
4486
- if ( is_numeric( $d ) ) {
4487
- if ( $d < ( time() - DAY_IN_SECONDS * crb_get_settings( 'scan_qcleanup' ) ) ) {
4488
- $fs = cerber_init_wp_filesystem();
4489
- if ( ! is_wp_error( $fs ) ) {
4490
- $fs->delete( $dir, true );
4491
- }
4492
- }
4493
- }
4494
- }
4495
- }
4496
-
4497
  if ( crb_get_settings( 'cerberlab' ) || lab_lab() ) {
4498
  lab_check_nodes( true, true );
4499
  }
@@ -4510,8 +4556,8 @@ add_action( 'cerber_hourly_2', function () {
4510
  set_site_transient( $t, array( $start, time() ), 2 * 3600 );
4511
  });
4512
 
4513
- add_action( 'cerber_daily', 'cerber_do_daily' );
4514
- function cerber_do_daily() {
4515
  $t = 'cerber_daily_1';
4516
  $start = time();
4517
  if ( ( $last = get_site_transient( $t ) ) && date( 'j', $last[0] ) == date( 'j' ) ) {
@@ -4528,6 +4574,20 @@ function cerber_do_daily() {
4528
  cerber_db_query( 'DELETE FROM ' . CERBER_LAB_NET_TABLE . ' WHERE expires < ' . $time );
4529
  cerber_db_query( 'DELETE FROM ' . CERBER_LAB_TABLE . ' WHERE stamp < ' . ( $time - 3600 ) ); // workaround for weird/misconfigured hostings
4530
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4531
  cerber_db_query( 'OPTIMIZE TABLE ' . CERBER_LOG_TABLE );
4532
  cerber_db_query( 'OPTIMIZE TABLE ' . CERBER_QMEM_TABLE );
4533
  cerber_db_query( 'OPTIMIZE TABLE ' . CERBER_TRAF_TABLE );
@@ -4539,6 +4599,7 @@ function cerber_do_daily() {
4539
  cerber_db_query( 'OPTIMIZE TABLE ' . cerber_get_db_prefix() . CERBER_SCAN_TABLE );
4540
  cerber_db_query( 'OPTIMIZE TABLE ' . cerber_get_db_prefix() . CERBER_SETS_TABLE );
4541
  cerber_db_query( 'OPTIMIZE TABLE ' . cerber_get_db_prefix() . CERBER_MS_LIST_TABLE );
 
4542
 
4543
  if ( $new = cerber_check_for_newer() ) {
4544
  $history = get_site_option( '_cerber_notify_new' );
@@ -4566,6 +4627,26 @@ function cerber_do_daily() {
4566
 
4567
  CRB_Cache::reset();
4568
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4569
  // TODO: implement holding previous values for a while
4570
  // cerber_antibot_gene();
4571
 
@@ -4623,17 +4704,18 @@ function cerber_bg_task_launcher( $filter = null ) {
4623
  return $ret;
4624
  }
4625
 
4626
- $safe_func = array( 'nexus_send', 'nexus_do_upgrade', '_crb_ds_background', 'nexus_refresh_slave_srv' );
4627
 
4628
  foreach ( $exec_it as $task_id => $task ) {
4629
 
4630
  $func = crb_array_get( $task, 'func' );
4631
- if ( ! is_callable( $func ) ) {
 
4632
  cerber_bg_task_delete( $task_id );
4633
  continue;
4634
  }
4635
- if ( ! in_array( $func, $safe_func ) ) {
4636
- cerber_diag_log( 'ERROR: Function ' . $func . ' is not in the safe list' );
4637
  cerber_bg_task_delete( $task_id );
4638
  continue;
4639
  }
@@ -4678,21 +4760,36 @@ function cerber_bg_task_get_all() {
4678
  return $list;
4679
  }
4680
 
4681
- function cerber_bg_task_add( $task = array(), $priority = false, $limit = 60 ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4682
 
4683
- $list = cerber_bg_task_get_all();
4684
 
4685
- $id = sha1( serialize( $task ) );
4686
 
4687
  if ( isset( $list[ $id ] ) ) {
4688
  return false;
4689
  }
4690
 
4691
  if ( $priority ) {
4692
- $list = array( $id => $task ) + $list;
4693
  }
4694
  else {
4695
- $list[ $id ] = $task;
4696
  }
4697
 
4698
  return cerber_update_set( '_background_tasks', $list );
@@ -4770,7 +4867,7 @@ function cerber_log( $activity, $login = '', $user_id = 0, $ip = null ) {
4770
 
4771
  $status = 0;
4772
  if ( $activity != 10 && $activity != 11 ) {
4773
- $status = cerber_get_status( $ip );
4774
  }
4775
  elseif ( $cerber_blocked ) {
4776
  $status = $cerber_blocked;
@@ -5129,6 +5226,8 @@ register_activation_hook( cerber_plugin_file(), function () {
5129
 
5130
  cerber_load_admin_code();
5131
 
 
 
5132
  if ( is_user_logged_in() ) { // Not for remote plugin installation/activation
5133
 
5134
  $ip = cerber_get_remote_ip();
@@ -5140,7 +5239,10 @@ register_activation_hook( cerber_plugin_file(), function () {
5140
  }
5141
  }
5142
 
5143
- cerber_add_white( $sub, 'My Subnet' ); // Protection for non-experienced users
 
 
 
5144
 
5145
  cerber_disable_citadel();
5146
  }
@@ -5155,7 +5257,7 @@ register_activation_hook( cerber_plugin_file(), function () {
5155
  cerber_admin_message(
5156
  '<img style="float:left; margin-left:-10px;" src="' . $assets_url . '/icon-128x128.png">' .
5157
  '<p style="font-size:120%;">' . __( 'WP Cerber is now active and has started protecting your site', 'wp-cerber' ) . '</p>' .
5158
- ' <p>' . __( 'Your IP address is added to the', 'wp-cerber' ) . ' ' . __( 'White IP Access List', 'wp-cerber' ) .
5159
 
5160
  ' <p style="font-size:130%;"><a href="https://wpcerber.com/getting-started/" target="_blank">' . __( 'Getting Started Guide', 'wp-cerber' ) . '</a></p>' .
5161
 
@@ -5174,7 +5276,7 @@ register_activation_hook( cerber_plugin_file(), function () {
5174
  ' <i class="crb-icon crb-icon-bx-layer"></i> <a href="' . cerber_admin_link( 'imex' ) . '">' . __( 'Import settings', 'wp-cerber' ) . '</a>' .
5175
  ' <i class="crb-icon crb-icon-bx-cog"></i> <a href="' . cerber_admin_link( '', array( 'page' => 'cerber-nexus' ) ) . '">' . __( 'Enable slave mode', 'wp-cerber' ) . '</a>' .
5176
  ' <i class="crb-icon dashicons-before dashicons-twitter"></i> <a target="_blank" href="https://twitter.com/wpcerber">Follow Cerber on Twitter</a>' .
5177
- ' <i class="crb-icon dashicons-before dashicons-email-alt"></i> <a target="_blank" href="https://wpcerber.com/subscribe-newsletter/">Subscribe to Cerber\'s newsletter</a>' .
5178
  '</p>' );
5179
 
5180
 
@@ -5216,7 +5318,7 @@ function cerber_finito() {
5216
  }
5217
 
5218
  $list = array( '_cerber_subs', '_cerber_up', '_cerber_report', 'cerber-groove', 'cerber-groove-x', '_cerberkey_', 'cerber-antibot', 'cerber_admin_info', '_cerber_db_errors' );
5219
- $list = array_merge( $list, cerber_get_setting_list() );
5220
  foreach ( $list as $opt ) {
5221
  delete_site_option( $opt );
5222
  }
@@ -5253,13 +5355,13 @@ function cerber_upgrade_all( $force = false ) {
5253
  cerber_antibot_gene( true );
5254
  cerber_upgrade_settings();
5255
  cerber_htaccess_sync( 'main' );
5256
- wp_clear_scheduled_hook( 'cerber_hourly' ); // @since 5.8
5257
- cerber_sync_sessions(); // @since 8.3.3
5258
- cerber_push_the_news( CERBER_VER );
5259
  update_site_option( '_cerber_up', array( 'v' => CERBER_VER, 't' => time() ) );
5260
 
 
5261
  cerber_delete_expired_set( true );
5262
  CRB_Cache::reset();
 
5263
 
5264
  lab_get_key( true );
5265
  $cerber_doing_upgrade = false;
@@ -5477,12 +5579,7 @@ function cerber_create_db($recreate = true) {
5477
  */
5478
  function cerber_upgrade_db( $force = false ) {
5479
 
5480
- /*$wpdb->hide_errors();
5481
- if ( $force ) {
5482
- $wpdb->suppress_errors();
5483
- }*/
5484
-
5485
- $sql = array();
5486
 
5487
  // @since 3.0
5488
  $sql[] = 'ALTER TABLE ' . CERBER_LOG_TABLE . ' CHANGE stamp stamp DECIMAL(14,4) NOT NULL';
@@ -5561,13 +5658,15 @@ function cerber_upgrade_db( $force = false ) {
5561
  $sql[] = 'ALTER TABLE ' . CERBER_ACL_TABLE . ' DROP INDEX ip_begin_end';
5562
  }
5563
 
5564
- /*if ( ! empty( $sql ) ) {
5565
- foreach ( $sql as $query ) {
5566
- if ( ! $wpdb->query( $query ) && $wpdb->last_error ) {
5567
- $db_errors[] = array( $wpdb->last_error, $wpdb->last_query );
5568
- }
5569
- }
5570
- }*/
 
 
5571
 
5572
  if ( ! empty( $sql ) ) {
5573
  foreach ( $sql as $query ) {
@@ -5947,7 +6046,7 @@ function cerber_catch_error( $errno, $errstr = null, $errfile = null, $errline =
5947
  }
5948
 
5949
  function cerber_traffic_log(){
5950
- global $cerber_php_errors, $wp_query, $wp_cerber_user_id, $wp_cerber_start_stamp, $blog_id;
5951
  static $logged = false;
5952
 
5953
  if ( $logged || cerber_is_cloud_request() ) {
@@ -6150,13 +6249,14 @@ function cerber_traffic_log(){
6150
  $processing = (int) ( 1000 * ( microtime( true ) - $start ) );
6151
 
6152
  $uri = cerber_real_escape( $uri );
6153
- $fields = cerber_real_escape( $fields );
6154
  $details = cerber_real_escape( $details );
6155
- $php_err = cerber_real_escape( $php_err );
 
 
6156
 
6157
  $query = 'INSERT INTO ' . CERBER_TRAF_TABLE . '
6158
- (ip, ip_long, uri, request_fields , request_details, session_id, user_id, stamp, processing, request_method, http_code, wp_id, wp_type, is_bot, blog_id, php_errors )
6159
- VALUES ("' . $ip . '", ' . $ip_long . ',"' . $uri . '","' . $fields . '","' . $details . '", "' . $session_id . '", ' . $user_id . ', ' . $start . ',' . $processing . ', "' . $method . '", ' . $http_code . ',' . $wp_id . ', ' . $wp_type . ', ' . $bot . ', ' . absint( $blog_id ) . ',"' . $php_err . '")';
6160
 
6161
  $ret = cerber_db_query( $query );
6162
 
@@ -6190,7 +6290,7 @@ function cerber_traffic_log(){
6190
  * @since 6.0
6191
  */
6192
  function cerber_to_log( $wp_type, $http_code, $user_id ) {
6193
- global $cerber_logged, $cerber_blocked, $wp_cerber;
6194
 
6195
  if ( nexus_is_valid_request() ) {
6196
  return false;
@@ -6219,6 +6319,10 @@ function cerber_to_log( $wp_type, $http_code, $user_id ) {
6219
 
6220
  // Smart mode ---------------------------------------------------------
6221
 
 
 
 
 
6222
  if ( ! empty( $cerber_logged ) ) {
6223
  $tmp = $cerber_logged;
6224
  unset( $tmp[7] );
@@ -6385,7 +6489,7 @@ function cerber_get_non_wp_fields() {
6385
  * @since 6.0
6386
  */
6387
  function cerber_beast() {
6388
- global $cerber_status;
6389
 
6390
  if ( is_admin()
6391
  || cerber_is_wp_cron()
@@ -6406,7 +6510,8 @@ function cerber_beast() {
6406
 
6407
  // White list by IP
6408
  if ( crb_get_settings( 'tiipwhite' ) && crb_acl_is_white() ) {
6409
- return; // @since 7.9
 
6410
  }
6411
 
6412
  // White list by URI
@@ -6414,13 +6519,15 @@ function cerber_beast() {
6414
  $uri = CRB_Request::URI();
6415
  if ( $tiwhite = crb_get_settings( 'tiwhite' ) ) {
6416
  foreach ( (array) $tiwhite as $item ) {
6417
- if ( substr( $item, 0, 1 ) == '{' && substr( $item, - 1 ) == '}' ) {
6418
  $pattern = '/' . substr( $item, 1, - 1 ) . '/i';
6419
  if ( @preg_match( $pattern, $uri ) ) {
 
6420
  return;
6421
  }
6422
  }
6423
  elseif ( $item == $uri ) {
 
6424
  return;
6425
  }
6426
  }
@@ -6433,7 +6540,8 @@ function cerber_beast() {
6433
  //$uri_script = cerber_get_uri_script();
6434
  $uri_script = CRB_Request::script();
6435
 
6436
- if ( $uri_script && $script_filename = cerber_script_filename() ) {
 
6437
  // Scanning for executable scripts?
6438
  if ( ! cerber_script_exists( $uri ) && ! cerber_is_login_request() ) {
6439
  $cerber_status = 19;
78
  define( 'CRB_CNTX_SAFE', 1 );
79
  define( 'CRB_CNTX_NEXUS', 2 );
80
 
81
+ $dir = dirname( __FILE__ );
82
+
83
+ require_once( $dir . '/cerber-pluggable.php' );
84
+ require_once( $dir . '/common.php' );
85
+ require_once( $dir . '/settings.php' );
86
+ include_once( $dir . '/cerber-request.php' );
87
+ require_once( $dir . '/cerber-lab.php' );
88
+ require_once( $dir . '/whois.php' );
89
+ //require_once( dirname( __FILE__ ) . '/jetflow.php' );
90
+ require_once( $dir . '/cerber-news.php' );
91
+ require_once( $dir . '/cerber-scanner.php' );
92
+ require_once( $dir . '/cerber-2fa.php' );
93
+ require_once( $dir . '/nexus/cerber-nexus.php' );
94
+ require_once( $dir . '/cerber-ds.php' );
95
+ require_once( $dir . '/cerber-addons.php' );
96
 
97
  nexus_init();
98
 
767
  }
768
 
769
  // Redirection control: no default aliases for redirections
 
770
  if ( cerber_no_redirect() ) {
771
  remove_action( 'template_redirect', 'wp_redirect_admin_locations', 1000 );
772
  }
809
 
810
  cerber_inspect_uploads(); // Uploads in the dashboard
811
 
812
+ require_once( dirname( __FILE__ ) . '/jetflow.php' );
813
 
814
  if ( ! wp_next_scheduled( 'cerber_bg_launcher' ) ) {
815
  wp_schedule_event( time(), 'crb_five', 'cerber_bg_launcher' );
828
  require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
829
 
830
  require_once( dirname( __FILE__ ) . '/admin/cerber-settings.php' );
831
+ require_once( dirname( __FILE__ ) . '/admin/cerber-admin.php' );
832
  require_once( dirname( __FILE__ ) . '/cerber-users.php' );
833
  require_once( dirname( __FILE__ ) . '/dashboard.php' );
834
  //require_once( dirname( __FILE__ ) . '/cerber-maintenance.php' ); // @since 8.5.1 moved to Nexus php files because it requires PHP 5.6
1150
  $fa = CRB_2FA::enforce( $user_login, $user );
1151
 
1152
  if ( is_wp_error( $fa ) ) {
1153
+ cerber_error_log( $fa->get_error_message() . ' | RID: ' . get_wp_cerber()->getRequestID(), '2FA' );
1154
  }
1155
 
1156
  cerber_login_history( $user->ID );
1624
  }
1625
 
1626
  foreach ( $list as $item ) {
1627
+ if ( $item[0] == '/' && substr( $item, - 1 ) == '/' ) {
1628
  $pattern = $item . 'i'; // we permit to specify any REGEX
1629
  if ( @preg_match( $pattern, $email ) ) {
1630
  return $ret;
1677
  return false;
1678
  }
1679
 
1680
+ // The default WP registration form
1681
  add_filter( 'registration_errors', function ( $errors, $sanitized_user_login, $user_email ) {
1682
 
1683
  $result = cerber_is_registration_prohibited( $sanitized_user_login, $user_email );
1690
  }, 10, 3 );
1691
 
1692
  // Fires in wp_insert_user()
1693
+ /*add_filter( 'pre_user_login', function ( $login ) {
1694
 
1695
  if ( ! is_admin() && cerber_is_registration_prohibited( $login ) ) {
1696
  return null;
1697
  }
1698
 
1699
  return $login;
1700
+ }, PHP_INT_MAX );*/
1701
+
1702
+ // Inserting users programmatically via wp_insert_user()
1703
+ // @since 8.6.3.3
1704
+ add_filter( 'wp_pre_insert_user_data', function ( $data, $update ) {
1705
+ if ( $update || is_admin() ) {
1706
+ return $data;
1707
+ }
1708
+
1709
+ if ( cerber_is_registration_prohibited( $data['user_login'], $data['user_email'] ) ) {
1710
+ return null;
1711
+ }
1712
+
1713
+ return $data;
1714
+ }, PHP_INT_MAX, 3 );
1715
 
1716
  // Validation for MU and BuddyPress
1717
  add_filter( 'wpmu_validate_user_signup', function ( $signup_data ) {
1987
  *
1988
  */
1989
  function cerber_access_control() {
1990
+ global $wp_cerber, $cerber_status, $cerber_req_status;
1991
 
1992
  if ( crb_acl_is_white() ) {
1993
  return;
2023
  if ( ! cerber_is_rest_permitted() ) {
2024
  $rest_allowed = false;
2025
  }
2026
+
2027
  if ( $rest_allowed && ! cerber_geo_allowed( 'geo_restapi' ) ) {
2028
  $rest_allowed = false;
2029
  $cerber_status = 16;
2030
  }
2031
+
2032
  if ( ! $rest_allowed ) {
2033
+ $cerber_req_status = 0;
2034
  cerber_block_rest_api();
2035
  }
2036
  }
2365
  * @since 7.0
2366
  */
2367
  function cerber_no_redirect() {
2368
+ if ( crb_get_settings( 'noredirect' ) && ! cerber_check_groove_x() ) {
2369
  return true;
2370
  }
2371
 
2610
  * @return bool
2611
  */
2612
  function cerber_is_bot( $location = '' ) {
2613
+ global $cerber_status, $cerber_req_status;
2614
  static $ret = null;
2615
 
2616
  $remote_ip = cerber_get_remote_ip();
2659
 
2660
  // Antibot whitelist
2661
  if ( ( $list = crb_get_settings( 'botswhite' ) ) && is_array( $list ) ) {
2662
+ $uri = '/' . trim( $_SERVER['REQUEST_URI'], '/' );
2663
  foreach ( $list as $item ) {
2664
+ if ( $item[0] == '{' && substr( $item, - 1 ) == '}' ) {
2665
  $pattern = '/' . substr( $item, 1, - 1 ) . '/i';
2666
+ if ( @preg_match( $pattern, $uri ) ) {
2667
+ $cerber_req_status = 502;
2668
  $ret = false;
2669
  return $ret;
2670
  }
2671
  }
2672
+ elseif ( false !== strpos( $uri, $item ) ) {
2673
+ $cerber_req_status = 502;
2674
  $ret = false;
2675
  return $ret;
2676
  }
2788
 
2789
  if ( ! isset( $rules ) || cerber_is_http_post() ) {
2790
  if ( is_multisite() ) {
2791
+ $geo = cerber_db_get_var( 'SELECT meta_value FROM ' . $wpdb->sitemeta . ' WHERE meta_key = "' . CERBER_GEO_RULES . '"' );
2792
  }
2793
  else {
2794
+ $geo = cerber_db_get_var( 'SELECT option_value FROM ' . $wpdb->options . ' WHERE option_name = "' . CERBER_GEO_RULES . '"' );
2795
  }
2796
 
2797
  if ( $geo ) {
2799
  }
2800
  else {
2801
  $rules = false;
2802
+
2803
  return false;
2804
  }
2805
  }
2831
 
2832
  // add_action( 'wp_logout', function(){});
2833
  add_action( 'clear_auth_cookie', function () {
2834
+ global $wp_cerber_user_id;
2835
  $uid = get_current_user_id();
2836
  if ( $uid ) {
2837
+ $wp_cerber_user_id = $uid;
2838
  cerber_log( 6, '', $uid );
2839
  CRB_2FA::delete_2fa( $uid );
2840
  }
2893
  add_user_meta( $user_id, '_crb_reg_', array( 'IP' => cerber_get_remote_ip(), 'user' => $by_user ) );
2894
  }
2895
 
2896
+ if ( is_multisite() ) {
2897
+ add_action( 'wpmu_delete_user', 'crb_user_delete' );
2898
+ }
2899
+ else {
2900
+ add_action( 'delete_user', 'crb_user_delete' );
2901
+ }
2902
+ /**
2903
+ * @param $user_id
2904
+ * @since 8.6.3.4
2905
+ */
2906
+ function crb_user_delete( $user_id ) {
2907
+ global $__deleted_user;
2908
+ if ( ! $__deleted_user = get_user_by( 'ID', $user_id ) ) {
2909
+ return;
2910
+ }
2911
+ add_action( 'deleted_user', function ( $user_id ) {
2912
+ global $__deleted_user;
2913
+ cerber_log( 3, '', $user_id );
2914
+ $user_data = array( 'display_name' => $__deleted_user->display_name, 'roles' => $__deleted_user->roles );
2915
+ cerber_update_set( 'user_deleted', $user_data, $user_id );
2916
+ } );
2917
+ }
2918
+
2919
  // Lockouts routines ---------------------------------------------------------------------
2920
 
2921
  /**
3265
  }
3266
 
3267
  // TODO: Merge with $wp_cerber->getStatus();
3268
+ function cerber_get_status( $ip, $activity = null ) {
3269
  global $cerber_status;
3270
 
3271
  if ( ! empty( $cerber_status ) ) {
3272
+ return absint( $cerber_status );
3273
  }
3274
 
3275
  if ( cerber_block_check( $ip ) ) {
3276
  return 13;
3277
  }
3278
 
3279
+ if ( $tag = cerber_acl_check( $ip ) ) {
3280
+ if ( $tag == 'W' ) {
3281
+ if ( in_array( $activity, array( 1, 2, 5, 20, 21 ) ) ) {
3282
+ return 500;
3283
+ }
3284
+
3285
+ return 0;
3286
+ }
3287
+ elseif ( $tag == 'B' ) {
3288
+ return 14;
3289
+ }
3290
  }
3291
 
3292
  if ( cerber_is_citadel() ) {
4155
  case 'citadel':
4156
  $max = cerber_db_get_var( 'SELECT MAX(stamp) FROM ' . CERBER_LOG_TABLE . ' WHERE activity = 7' );
4157
  if ( $max ) {
4158
+ $last_date = cerber_date( $max, false );
4159
  //$last = $wpdb->get_row( 'SELECT * FROM ' . CERBER_LOG_TABLE . ' WHERE stamp = ' . $max . ' AND activity = 7' );
4160
  $last = cerber_db_get_row( 'SELECT * FROM ' . CERBER_LOG_TABLE . ' WHERE stamp = ' . $max . ' AND activity = 7', MYSQL_FETCH_OBJECT );
4161
  }
4176
  case 'lockout':
4177
  $max = cerber_db_get_var( 'SELECT MAX(stamp) FROM ' . CERBER_LOG_TABLE . ' WHERE activity IN (10,11)' );
4178
  if ( $max ) {
4179
+ $last_date = cerber_date( $max, false );
4180
  $last = cerber_db_get_row( 'SELECT * FROM ' . CERBER_LOG_TABLE . ' WHERE stamp = ' . $max . ' AND activity IN (10,11)', MYSQL_FETCH_OBJECT );
4181
  }
4182
 
4214
  break;
4215
  case 'shutdown':
4216
  $subj = '[' . get_option( 'blogname' ) . '] ' . __( 'The WP Cerber security plugin has been deactivated', 'wp-cerber' );
4217
+ $body .= "\n" . __( 'The WP Cerber security plugin has been deactivated', 'wp-cerber' ) . "\n\n";
4218
  if ( ! is_user_logged_in() ) {
4219
  $u = __( 'Not logged in', 'wp-cerber' );
4220
  } else {
4231
  break;
4232
  case 'activated':
4233
  $subj = '[' . get_option( 'blogname' ) . '] ' . __( 'The WP Cerber security plugin is now active', 'wp-cerber' );
4234
+ $body = "\n" . __( 'WP Cerber is now active and has started protecting your site', 'wp-cerber' ) . "\n\n";
4235
  //$body .= __( 'Change notification settings', 'wp-cerber' ) . ': ' . cerber_admin_link('notifications') . "\n\n";
4236
  $body .= __( 'Getting Started Guide', 'wp-cerber' ) . "\n\n";
4237
  $body .= 'https://wpcerber.com/getting-started/' . "\n\n";
4238
+ $body .= 'Is your website under Cloudflare? You have to enable a crucial WP Cerber setting.' . "\n\n";
4239
+ $body .= 'https://wpcerber.com/cloudflare-and-wordpress-cerber/' . "\n\n";
4240
+ $body .= 'Be in touch with the developer.' . "\n\n";
4241
+ $body .= 'Follow Cerber on Twitter: https://twitter.com/wpcerber' . "\n\n";
4242
+ $body .= 'Subscribe to the Cerber\'s newsletter: https://wpcerber.com/subscribe-newsletter/' . "\n\n";
4243
  break;
4244
  case 'newlurl':
4245
  $subj .= __( 'New Custom login URL', 'wp-cerber' );
4277
  'to' => $to,
4278
  'subject' => $subj
4279
  ) );
4280
+
4281
  if ( $body_filtered && is_string( $body_filtered ) ) {
4282
  $body = $body_filtered;
4283
  }
4284
 
4285
  $footer = '';
4286
 
4287
+ if ( $type != 'shutdown' ) {
4288
+ if ( $lolink = cerber_get_login_url() ) {
4289
+ $lourl = urldecode( $lolink );
4290
+ if ( $html_mode ) {
4291
+ $lourl = '<a href="' . $lolink . '">' . $lourl . '</a>';
4292
+ }
4293
+
4294
+ $footer .= "\n\n" . __( 'Your login page:', 'wp-cerber' ) . ' ' . $lourl;
4295
  }
 
4296
  }
4297
 
4298
  if ( $type == 'report' && $date = lab_lab( 1 ) ) {
4320
  foreach ( $to_list as $email ) {
4321
  $lastus = '';
4322
  if ( $rec = cerber_get_last_login( null, $email ) ) {
4323
+ $lastus = sprintf( __( 'Your last sign-in was %s from %s', 'wp-cerber' ), cerber_date( $rec->stamp, false ), $rec->ip . ' (' . cerber_country_name( $rec->country ) . ')' );
4324
  if ( $html_mode ) {
4325
  $lastus = '<br/><br/>' . $lastus;
4326
  }
4540
 
4541
  cerber_delete_expired_set();
4542
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4543
  if ( crb_get_settings( 'cerberlab' ) || lab_lab() ) {
4544
  lab_check_nodes( true, true );
4545
  }
4556
  set_site_transient( $t, array( $start, time() ), 2 * 3600 );
4557
  });
4558
 
4559
+ add_action( 'cerber_daily', 'cerber_daily_run' );
4560
+ function cerber_daily_run() {
4561
  $t = 'cerber_daily_1';
4562
  $start = time();
4563
  if ( ( $last = get_site_transient( $t ) ) && date( 'j', $last[0] ) == date( 'j' ) ) {
4574
  cerber_db_query( 'DELETE FROM ' . CERBER_LAB_NET_TABLE . ' WHERE expires < ' . $time );
4575
  cerber_db_query( 'DELETE FROM ' . CERBER_LAB_TABLE . ' WHERE stamp < ' . ( $time - 3600 ) ); // workaround for weird/misconfigured hostings
4576
 
4577
+ // Delete sets if log entries for a user were deleted completely
4578
+ // @since 8.6.3.4
4579
+ $sql = 'SELECT the_id FROM ' . cerber_get_db_prefix() . CERBER_SETS_TABLE . ' sets LEFT JOIN ' . CERBER_LOG_TABLE . ' log
4580
+ ON log.user_id = sets.the_id
4581
+ WHERE sets.the_key = "user_deleted" AND log.user_id IS NULL';
4582
+ $user_ids1 = cerber_db_get_col( $sql );
4583
+ $sql = 'SELECT the_id FROM ' . cerber_get_db_prefix() . CERBER_SETS_TABLE . ' sets LEFT JOIN ' . CERBER_TRAF_TABLE . ' log
4584
+ ON log.user_id = sets.the_id
4585
+ WHERE sets.the_key = "user_deleted" AND log.user_id IS NULL';
4586
+ $user_ids2 = cerber_db_get_col( $sql );
4587
+ if ( $delete = array_intersect( $user_ids1, $user_ids2 ) ) {
4588
+ cerber_db_query( 'DELETE FROM ' . cerber_get_db_prefix() . CERBER_SETS_TABLE . ' WHERE the_key = "user_deleted" AND the_id IN (' . implode( ',', $delete ) . ')' );
4589
+ }
4590
+
4591
  cerber_db_query( 'OPTIMIZE TABLE ' . CERBER_LOG_TABLE );
4592
  cerber_db_query( 'OPTIMIZE TABLE ' . CERBER_QMEM_TABLE );
4593
  cerber_db_query( 'OPTIMIZE TABLE ' . CERBER_TRAF_TABLE );
4599
  cerber_db_query( 'OPTIMIZE TABLE ' . cerber_get_db_prefix() . CERBER_SCAN_TABLE );
4600
  cerber_db_query( 'OPTIMIZE TABLE ' . cerber_get_db_prefix() . CERBER_SETS_TABLE );
4601
  cerber_db_query( 'OPTIMIZE TABLE ' . cerber_get_db_prefix() . CERBER_MS_LIST_TABLE );
4602
+ cerber_db_query( 'OPTIMIZE TABLE ' . cerber_get_db_prefix() . CERBER_USS_TABLE );
4603
 
4604
  if ( $new = cerber_check_for_newer() ) {
4605
  $history = get_site_option( '_cerber_notify_new' );
4627
 
4628
  CRB_Cache::reset();
4629
 
4630
+ // Cleanup the quarantine folder
4631
+ if ( $dirs = glob( cerber_get_the_folder() . 'quarantine' . '/*', GLOB_ONLYDIR ) ) {
4632
+ $sync = false;
4633
+ foreach ( $dirs as $dir ) {
4634
+ $d = basename( $dir );
4635
+ if ( is_numeric( $d ) ) {
4636
+ if ( $d < ( time() - DAY_IN_SECONDS * crb_get_settings( 'scan_qcleanup' ) ) ) {
4637
+ $fs = cerber_init_wp_filesystem();
4638
+ if ( ! is_wp_error( $fs ) ) {
4639
+ $fs->delete( $dir, true );
4640
+ $sync = true;
4641
+ }
4642
+ }
4643
+ }
4644
+ }
4645
+ if ( $sync ) {
4646
+ _crb_qr_total_sync();
4647
+ }
4648
+ }
4649
+
4650
  // TODO: implement holding previous values for a while
4651
  // cerber_antibot_gene();
4652
 
4704
  return $ret;
4705
  }
4706
 
4707
+ $safe_func = array( 'nexus_send', 'nexus_do_upgrade', '_crb_ds_background', 'nexus_refresh_slave_srv', '_crb_qr_total_sync' );
4708
 
4709
  foreach ( $exec_it as $task_id => $task ) {
4710
 
4711
  $func = crb_array_get( $task, 'func' );
4712
+ if ( ! in_array( $func, $safe_func ) ) {
4713
+ cerber_error_log( 'Function ' . $func . ' is not in the safe list', 'BG TASK' );
4714
  cerber_bg_task_delete( $task_id );
4715
  continue;
4716
  }
4717
+ if ( ! is_callable( $func ) ) {
4718
+ cerber_error_log( 'Function ' . $func . ' is not available (not defined)', 'BG TASK' );
4719
  cerber_bg_task_delete( $task_id );
4720
  continue;
4721
  }
4760
  return $list;
4761
  }
4762
 
4763
+ /**
4764
+ * @param callable $func @since 8.6.4
4765
+ * @param array $config
4766
+ * @param bool $priority
4767
+ * @param int $limit
4768
+ *
4769
+ * @return bool
4770
+ */
4771
+ function cerber_bg_task_add( $func, $config = array(), $priority = false, $limit = 60 ) {
4772
+
4773
+ if ( ! is_callable( $func ) ) {
4774
+ cerber_error_log( 'Function ' . $func . ' is not callable', 'BG TASK' );
4775
+ return false;
4776
+ }
4777
+
4778
+ $list = cerber_bg_task_get_all();
4779
 
4780
+ $config['func'] = $func;
4781
 
4782
+ $id = sha1( serialize( $config ) );
4783
 
4784
  if ( isset( $list[ $id ] ) ) {
4785
  return false;
4786
  }
4787
 
4788
  if ( $priority ) {
4789
+ $list = array( $id => $config ) + $list;
4790
  }
4791
  else {
4792
+ $list[ $id ] = $config;
4793
  }
4794
 
4795
  return cerber_update_set( '_background_tasks', $list );
4867
 
4868
  $status = 0;
4869
  if ( $activity != 10 && $activity != 11 ) {
4870
+ $status = cerber_get_status( $ip, $activity );
4871
  }
4872
  elseif ( $cerber_blocked ) {
4873
  $status = $cerber_blocked;
5226
 
5227
  cerber_load_admin_code();
5228
 
5229
+ $whited = '';
5230
+
5231
  if ( is_user_logged_in() ) { // Not for remote plugin installation/activation
5232
 
5233
  $ip = cerber_get_remote_ip();
5239
  }
5240
  }
5241
 
5242
+ if ( ! crb_get_settings( 'no_white_my_ip' ) ) {
5243
+ cerber_add_white( $sub, 'My Subnet' ); // Protection for non-experienced users
5244
+ $whited = ' <p>' . __( 'Your IP address is added to the', 'wp-cerber' ) . ' ' . __( 'White IP Access List', 'wp-cerber' );
5245
+ }
5246
 
5247
  cerber_disable_citadel();
5248
  }
5257
  cerber_admin_message(
5258
  '<img style="float:left; margin-left:-10px;" src="' . $assets_url . '/icon-128x128.png">' .
5259
  '<p style="font-size:120%;">' . __( 'WP Cerber is now active and has started protecting your site', 'wp-cerber' ) . '</p>' .
5260
+ $whited .
5261
 
5262
  ' <p style="font-size:130%;"><a href="https://wpcerber.com/getting-started/" target="_blank">' . __( 'Getting Started Guide', 'wp-cerber' ) . '</a></p>' .
5263
 
5276
  ' <i class="crb-icon crb-icon-bx-layer"></i> <a href="' . cerber_admin_link( 'imex' ) . '">' . __( 'Import settings', 'wp-cerber' ) . '</a>' .
5277
  ' <i class="crb-icon crb-icon-bx-cog"></i> <a href="' . cerber_admin_link( '', array( 'page' => 'cerber-nexus' ) ) . '">' . __( 'Enable slave mode', 'wp-cerber' ) . '</a>' .
5278
  ' <i class="crb-icon dashicons-before dashicons-twitter"></i> <a target="_blank" href="https://twitter.com/wpcerber">Follow Cerber on Twitter</a>' .
5279
+ ' <i class="crb-icon dashicons-before dashicons-email-alt"></i> <a target="_blank" href="https://wpcerber.com/subscribe-newsletter/">Subscribe to the Cerber\'s newsletter</a>' .
5280
  '</p>' );
5281
 
5282
 
5318
  }
5319
 
5320
  $list = array( '_cerber_subs', '_cerber_up', '_cerber_report', 'cerber-groove', 'cerber-groove-x', '_cerberkey_', 'cerber-antibot', 'cerber_admin_info', '_cerber_db_errors' );
5321
+ $list = array_merge( $list, cerber_get_setting_list( true ) );
5322
  foreach ( $list as $opt ) {
5323
  delete_site_option( $opt );
5324
  }
5355
  cerber_antibot_gene( true );
5356
  cerber_upgrade_settings();
5357
  cerber_htaccess_sync( 'main' );
5358
+
 
 
5359
  update_site_option( '_cerber_up', array( 'v' => CERBER_VER, 't' => time() ) );
5360
 
5361
+ cerber_push_the_news( CERBER_VER );
5362
  cerber_delete_expired_set( true );
5363
  CRB_Cache::reset();
5364
+ wp_clear_scheduled_hook( 'cerber_hourly' ); // @since 5.8
5365
 
5366
  lab_get_key( true );
5367
  $cerber_doing_upgrade = false;
5579
  */
5580
  function cerber_upgrade_db( $force = false ) {
5581
 
5582
+ $sql = array();
 
 
 
 
 
5583
 
5584
  // @since 3.0
5585
  $sql[] = 'ALTER TABLE ' . CERBER_LOG_TABLE . ' CHANGE stamp stamp DECIMAL(14,4) NOT NULL';
5658
  $sql[] = 'ALTER TABLE ' . CERBER_ACL_TABLE . ' DROP INDEX ip_begin_end';
5659
  }
5660
 
5661
+ // @since 8.6.4
5662
+ if ( $force || ! cerber_is_column( cerber_get_db_prefix() . CERBER_SCAN_TABLE, 'file_ext' ) ) {
5663
+ $sql[] = 'ALTER TABLE ' . cerber_get_db_prefix() . CERBER_SCAN_TABLE . '
5664
+ ADD file_ext VARCHAR(255) NOT NULL DEFAULT "" AFTER file_mtime
5665
+ ';
5666
+ }
5667
+ if ( $force || ! cerber_is_column( CERBER_TRAF_TABLE, 'req_status' ) ) {
5668
+ $sql[] = 'ALTER TABLE ' . CERBER_TRAF_TABLE . ' ADD req_status int(10) UNSIGNED NOT NULL DEFAULT 0';
5669
+ }
5670
 
5671
  if ( ! empty( $sql ) ) {
5672
  foreach ( $sql as $query ) {
6046
  }
6047
 
6048
  function cerber_traffic_log(){
6049
+ global $cerber_req_status, $cerber_php_errors, $wp_query, $wp_cerber_user_id, $wp_cerber_start_stamp, $blog_id;
6050
  static $logged = false;
6051
 
6052
  if ( $logged || cerber_is_cloud_request() ) {
6249
  $processing = (int) ( 1000 * ( microtime( true ) - $start ) );
6250
 
6251
  $uri = cerber_real_escape( $uri );
 
6252
  $details = cerber_real_escape( $details );
6253
+ $fields = ( $php_err ) ? cerber_real_escape( $fields ) : '';
6254
+ $php_err = ( $php_err ) ? cerber_real_escape( $php_err ) : '';
6255
+ $req_status = absint( $cerber_req_status );
6256
 
6257
  $query = 'INSERT INTO ' . CERBER_TRAF_TABLE . '
6258
+ (ip, ip_long, uri, request_fields , request_details, session_id, user_id, stamp, processing, request_method, http_code, wp_id, wp_type, is_bot, blog_id, php_errors, req_status )
6259
+ VALUES ("' . $ip . '", ' . $ip_long . ',"' . $uri . '","' . $fields . '","' . $details . '", "' . $session_id . '", ' . $user_id . ', ' . $start . ',' . $processing . ', "' . $method . '", ' . $http_code . ',' . $wp_id . ', ' . $wp_type . ', ' . $bot . ', ' . absint( $blog_id ) . ',"' . $php_err . '",' . $req_status . ')';
6260
 
6261
  $ret = cerber_db_query( $query );
6262
 
6290
  * @since 6.0
6291
  */
6292
  function cerber_to_log( $wp_type, $http_code, $user_id ) {
6293
+ global $cerber_logged, $cerber_blocked, $cerber_req_status;
6294
 
6295
  if ( nexus_is_valid_request() ) {
6296
  return false;
6319
 
6320
  // Smart mode ---------------------------------------------------------
6321
 
6322
+ if ( ! empty( $cerber_req_status ) ) {
6323
+ return true;
6324
+ }
6325
+
6326
  if ( ! empty( $cerber_logged ) ) {
6327
  $tmp = $cerber_logged;
6328
  unset( $tmp[7] );
6489
  * @since 6.0
6490
  */
6491
  function cerber_beast() {
6492
+ global $cerber_status, $cerber_req_status;
6493
 
6494
  if ( is_admin()
6495
  || cerber_is_wp_cron()
6510
 
6511
  // White list by IP
6512
  if ( crb_get_settings( 'tiipwhite' ) && crb_acl_is_white() ) {
6513
+ $cerber_req_status = 500;
6514
+ return;
6515
  }
6516
 
6517
  // White list by URI
6519
  $uri = CRB_Request::URI();
6520
  if ( $tiwhite = crb_get_settings( 'tiwhite' ) ) {
6521
  foreach ( (array) $tiwhite as $item ) {
6522
+ if ( $item[0] == '{' && substr( $item, - 1 ) == '}' ) {
6523
  $pattern = '/' . substr( $item, 1, - 1 ) . '/i';
6524
  if ( @preg_match( $pattern, $uri ) ) {
6525
+ $cerber_req_status = 501;
6526
  return;
6527
  }
6528
  }
6529
  elseif ( $item == $uri ) {
6530
+ $cerber_req_status = 501;
6531
  return;
6532
  }
6533
  }
6540
  //$uri_script = cerber_get_uri_script();
6541
  $uri_script = CRB_Request::script();
6542
 
6543
+ //if ( $uri_script && $script_filename = cerber_script_filename() ) {
6544
+ if ( $uri_script && $script_filename = cerber_script_filename() ) { // @since 8.6.3.4
6545
  // Scanning for executable scripts?
6546
  if ( ! cerber_script_exists( $uri ) && ! cerber_is_login_request() ) {
6547
  $cerber_status = 19;
cerber-news.php CHANGED
@@ -96,6 +96,13 @@ function cerber_push_the_news( $version ) {
96
  $news['8.6.3'][] = 'Fixed: The access list IPv4 wildcard *.*.*.* doesn\'t work (has no effect).';
97
  $news['8.6.3'][] = 'Fixed: If the anti-spam query whitelist contains more than one entry, they do not work as expected.';
98
 
 
 
 
 
 
 
 
99
 
100
  if ( ! empty( $news[ $version ] ) ) {
101
  //$text = '<h3>What\'s new in WP Cerber '.$version.'</h3>';
@@ -107,7 +114,7 @@ function cerber_push_the_news( $version ) {
107
  $text .= ' <p style="margin-top: 18px; font-weight: bold;"><a href="https://wpcerber.com/?plugin_version='.$version.'" target="_blank">Read more on wpcerber.com</a></p>';
108
  $text .= ' <p style="margin-top: 18px; font-weight: bold;"><a href="'.cerber_admin_link('change-log').'">See the whole history in the changelog</a></p>';
109
 
110
- $text .= ' <p style="margin-top: 24px;"><span class="dashicons-before dashicons-email-alt"></span> &nbsp; <a href="https://wpcerber.com/subscribe-newsletter/">Subscribe to Cerber\'s newsletter</a></p>
111
  <p><span class="dashicons-before dashicons-twitter"></span> &nbsp; <a href="https://twitter.com/wpcerber">Follow Cerber on Twitter</a></p>
112
  <p><span class="dashicons-before dashicons-facebook"></span> &nbsp; <a href="https://www.facebook.com/wpcerber/">Follow Cerber on Facebook</a></p>
113
  ';
96
  $news['8.6.3'][] = 'Fixed: The access list IPv4 wildcard *.*.*.* doesn\'t work (has no effect).';
97
  $news['8.6.3'][] = 'Fixed: If the anti-spam query whitelist contains more than one entry, they do not work as expected.';
98
 
99
+ $news['8.6.5'][] = 'File system analytics. It\'s generated based on the results of the last full integrity scan.';
100
+ $news['8.6.5'][] = 'Logging user deletions. The user’s display name and roles are temporarily stored until all log entries related to the user are deleted.';
101
+ $news['8.6.5'][] = 'Faster export with a new date format for CSV log export.';
102
+ $news['8.6.5'][] = 'Ability to disable adding the website administrator\'s IP address to the White IP Access List upon WP Cerber activation.';
103
+ $news['8.6.5'][] = 'Improved: Handling user registrations with prohibited emails.';
104
+ $news['8.6.5'][] = 'Fixed: Loading the default plugin settings has no effect. Now it’s fixed and moved from the admin sidebar to the Tools admin page.';
105
+
106
 
107
  if ( ! empty( $news[ $version ] ) ) {
108
  //$text = '<h3>What\'s new in WP Cerber '.$version.'</h3>';
114
  $text .= ' <p style="margin-top: 18px; font-weight: bold;"><a href="https://wpcerber.com/?plugin_version='.$version.'" target="_blank">Read more on wpcerber.com</a></p>';
115
  $text .= ' <p style="margin-top: 18px; font-weight: bold;"><a href="'.cerber_admin_link('change-log').'">See the whole history in the changelog</a></p>';
116
 
117
+ $text .= ' <p style="margin-top: 24px;"><span class="dashicons-before dashicons-email-alt"></span> &nbsp; <a href="https://wpcerber.com/subscribe-newsletter/">Subscribe to the Cerber\'s newsletter</a></p>
118
  <p><span class="dashicons-before dashicons-twitter"></span> &nbsp; <a href="https://twitter.com/wpcerber">Follow Cerber on Twitter</a></p>
119
  <p><span class="dashicons-before dashicons-facebook"></span> &nbsp; <a href="https://www.facebook.com/wpcerber/">Follow Cerber on Facebook</a></p>
120
  ';
cerber-scanner.php CHANGED
@@ -80,143 +80,9 @@ define( 'CRB_SCAN_DTE', '__CERBER__SECURITY_SCAN_DATA_E' );
80
 
81
  define( 'CRB_SCAN_RCV_DIR', 'recovery' );
82
 
83
- function cerber_show_scanner() {
84
- // http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html
85
-
86
- $msg = '';
87
- $status = 0;
88
-
89
- if ( $scan = cerber_get_scan() ) {
90
- if ( ! $scan['finished'] ) {
91
- if ( $scan['cloud']
92
- && cerber_is_cloud_enabled()
93
- && $scan['started'] > ( time() - 900 )
94
- ) {
95
- $msg = __( 'Currently a scheduled scan in progress. Please wait until it is finished.', 'wp-cerber' );
96
- $status = 1;
97
- }
98
- else {
99
- $msg = sprintf( __( 'Previous scan started %s has not been completed. Continue scanning?', 'wp-cerber' ), cerber_date( $scan['started'] ) );
100
- $status = 2;
101
- }
102
- }
103
- else {
104
-
105
- }
106
- }
107
- else {
108
- $msg = __( 'It seems this website has never been scanned. To start scanning click the button below.', 'wp-cerber' );
109
- }
110
-
111
- $start_quick = '<input data-control="start_scan" data-mode="quick" type="button" value="' . __( 'Start Quick Scan', 'wp-cerber' ) . '" class="button button-primary">';
112
- $start_full = '<input data-control="start_scan" data-mode="full" type="button" value="' . __( 'Start Full Scan', 'wp-cerber' ) . '" class="button button-primary">';
113
- $stop = '<input id="crb-stop-scan" style="display: none;" data-control="stop_scan" type="button" value="' . __( 'Stop Scanning', 'wp-cerber' ) . '" class="button button-primary">';
114
- $continue = '<input id="crb-continue-scan" data-control="continue_scan" type="button" value="' . __( 'Continue Scanning', 'wp-cerber' ) . '" class="button button-primary">';
115
- $controls = '';
116
-
117
- switch ( $status ) {
118
- case 0:
119
- $controls = $start_quick . $start_full;
120
- break;
121
- case 1:
122
- $controls = '';
123
- break;
124
- case 2:
125
- $controls = $start_quick . $start_full . $continue;
126
- break;
127
- }
128
-
129
- $controls .= $stop;
130
-
131
-
132
- echo '<div id="crb-scanner">';
133
-
134
- cerber_scanner_dashboard( $msg );
135
-
136
- $d = '';
137
- if ( nexus_is_valid_request() && ! nexus_is_granted( 'submit' ) ) {
138
- $d = 'disabled="disabled"';
139
- }
140
-
141
- ?>
142
- <div id="crb-scan-area">
143
- <form>
144
- <table id="crb-scan-controls">
145
- <tr>
146
- <td id="crb-file-controls">
147
- <input data-control="delete_file" type="button"
148
- class="button button-secondary"
149
- <?php echo $d; ?>
150
- value="<?php _e( 'Delete', 'wp-cerber' ); ?>"/>
151
- <input data-control="ignore_add_file" type="button" class="button button-secondary"
152
- <?php echo $d; ?>
153
- value="<?php _e( 'Ignore', 'wp-cerber' ); ?>"/>
154
- </td>
155
- <td>
156
- <?php echo $controls; ?>
157
- </td>
158
- <!-- <td><a href="#" data-control="full-paths">Show full paths</a></td> -->
159
- <td><a href="#" class="dashicons dashicons-list-view" data-control="full-paths"
160
- title="Toggle full/relative paths"></a></td>
161
- </tr>
162
- </table>
163
- </form>
164
- </div>
165
-
166
- <?php
167
-
168
- echo '</div>';
169
- }
170
-
171
- add_action( 'wp_ajax_cerber_scan_control', 'cerber_manual_scan' );
172
- function cerber_manual_scan() {
173
-
174
- cerber_check_ajax_permissions();
175
-
176
- ob_start(); // Collecting possible junk warnings and notices cause we need clean JSON to be sent
177
-
178
- $scanner = array();
179
- $console_log = array();
180
- $scan_do = '';
181
-
182
- if ( cerber_is_http_post() && $scan_do = crb_get_post_fields( 'cerber_scan_do' ) ) {
183
- $scan_do = preg_replace( '/[^a-z_\-\d]/i', '', $scan_do );
184
- //$mode = ( isset( $_POST['cerber_scan_mode'] ) ) ? preg_replace( '/[^a-z_\-\d]/i', '', $_POST['cerber_scan_mode'] ) : 'quick';
185
- $mode = ( $mode = crb_get_post_fields( 'cerber_scan_mode' ) ) ? preg_replace( '/[^a-z_\-\d]/i', '', $mode ) : 'quick';
186
-
187
- $scanner = cerber_scanner( $scan_do, $mode );
188
-
189
- }
190
- else {
191
- $console_log[] = 'Unknown HTTP request';
192
- }
193
-
194
- $next_do = ( ! empty( $scanner['cerber_scan_do'] ) ) ? $scanner['cerber_scan_do'] : 'stop';
195
-
196
- $console_log = array_merge( $console_log, cerber_db_get_errors() );
197
-
198
- $console_log[] = 'PHP MEMORY ' . @ini_get( 'memory_limit' );
199
-
200
- $ret = array(
201
- 'console_log' => $console_log,
202
- 'cerber_scan_do' => $next_do,
203
- 'cerber_scanner' => $scanner,
204
- //'scan' => cerber_get_scan(), // debug only
205
- );
206
-
207
- if ( $scan_do != 'continue_scan' ) {
208
- $ret['strings'] = cerber_get_strings();
209
- }
210
-
211
- ob_end_clean();
212
-
213
- echo json_encode( $ret );
214
-
215
- crb_admin_stop_ajax();
216
- }
217
 
218
  add_action( 'plugins_loaded', function () {
219
- global $cerber_db_errors;
220
 
221
  if ( ! cerber_is_cloud_request() ) {
222
  return;
@@ -294,7 +160,7 @@ add_action( 'plugins_loaded', function () {
294
 
295
  $db_errors = array_map( function ( $err ) {
296
  return substr( $err, 0, 1000 );
297
- }, $cerber_db_errors );
298
 
299
  $ret = array(
300
  'cerber_scanner' => $scanner,
@@ -322,7 +188,7 @@ add_action( 'plugins_loaded', function () {
322
  } );
323
 
324
  function cerber_scanner( $control, $mode ) {
325
- global $cerber_db_errors, $cerber_scan_mode;
326
 
327
  if ( crb_get_settings( 'scan_debug' ) ) {
328
  register_shutdown_function( function () {
@@ -339,9 +205,9 @@ function cerber_scanner( $control, $mode ) {
339
 
340
  if ( function_exists( 'wp_raise_memory_limit' ) ) {
341
  if ( ! wp_raise_memory_limit( 'admin' ) ) {
342
- $m = 'WARNING: Unable to raise memory limit';
343
- crb_scan_debug( $m );
344
- $errors[] = $m;
345
  }
346
  }
347
 
@@ -436,7 +302,7 @@ function cerber_scanner( $control, $mode ) {
436
  $ret['cerber_scan_do'] = 'stop';
437
  }
438
 
439
- if ( $cerber_db_errors ) {
440
  cerber_watchdog( true );
441
  }
442
 
@@ -517,28 +383,35 @@ function cerber_step_scanning() {
517
  break;
518
  case 5:
519
  $x = 0;
520
- if ( $result = cerber_db_get_results( 'SELECT * FROM ' . cerber_get_db_prefix() . CERBER_SCAN_TABLE . ' WHERE scan_id = ' . $scan['id'] . ' AND file_hash = ""' ) ) {
521
- foreach ( $result as $row ) {
522
- if ( ! cerber_add_file_info( $row ) ) {
523
- cerber_log_scan_error( 'Unable to update file info. Scanning has been aborted.' );
524
- $aborted = 1;
525
- break;
526
- }
527
- if ( 0 === ( $x % 100 ) ) {
528
- if ( cerber_exec_timer() ) {
529
- $exceed = true;
530
  break;
531
  }
 
 
 
 
 
 
 
532
  }
533
- $x ++;
534
  }
535
- // Some files might be symlinks
536
- $update['total']['files'] = cerber_get_num_files( $scan['id'] );
537
- $update['total']['parsed'] = cerber_db_get_var( 'SELECT COUNT(scan_id) FROM ' . cerber_get_db_prefix() . CERBER_SCAN_TABLE . ' WHERE scan_id = ' . $scan['id'] . ' AND file_type !=0' );
538
- }
539
- else {
540
- $aborted = 1;
541
  }
 
 
 
542
  break;
543
  case 6:
544
  if ( cerber_is_check_fs() ) {
@@ -1735,7 +1608,7 @@ function cerber_verify_plugins() {
1735
  continue;
1736
  }
1737
 
1738
- $short_name = cerber_get_short_name( $local_file );
1739
 
1740
  if ( empty( $local_file['file_hash'] ) ) {
1741
  $issues[] = array( 11, $short_name, 'file' => $local_file );
@@ -2045,12 +1918,23 @@ function cerber_process_files(){
2045
  }*/
2046
 
2047
  $in = '0';
 
2048
 
2049
- if ( !$files = cerber_db_get_results( 'SELECT * FROM ' . cerber_get_db_prefix() . CERBER_SCAN_TABLE .
2050
- ' WHERE scan_id = ' . $scan['id'] . ' AND scan_status IN ('.$in.')' ) ) {
 
 
 
 
 
 
2051
  return 0;
2052
  }
2053
 
 
 
 
 
2054
  // Plugins data -------------------
2055
 
2056
  $plugins = array();
@@ -2079,7 +1963,6 @@ function cerber_process_files(){
2079
  $can_be_deleted = array( CERBER_FT_UPLOAD, CERBER_FT_CNT, CERBER_FT_OTHER, CERBER_FT_LNG );
2080
 
2081
  $issues = array();
2082
- $remain = 0;
2083
 
2084
  // Prevent hanging
2085
  if ( $f = cerber_get_set( CRB_LAST_FILE, 0, false ) ) {
@@ -2247,7 +2130,7 @@ function cerber_process_files(){
2247
  }
2248
  }
2249
  else {
2250
- $short_name = cerber_get_short_name( $file );
2251
  }
2252
 
2253
  // Is file can be deleted?
@@ -2892,7 +2775,7 @@ function cerber_verify_files( $hash_data, $field = 'file_hash', $local_prefix =
2892
  continue;
2893
  }
2894
 
2895
- $short_name = cerber_get_short_name( $local_file );
2896
 
2897
  if ( empty( $local_file[ $field ] ) ) {
2898
  $issues[] = array( 11, $short_name, 'file' => $local_file );
@@ -3191,7 +3074,7 @@ function cerber_obtain_hash( $url, $nocache = false ) {
3191
  }
3192
 
3193
  if ( ! empty( $ret['curl_error'] ) ) {
3194
- $err = '#' . curl_errno( $curl ) . ' ' . $ret['curl_error'] . ' for URL: ' . $url;
3195
  $ret['curl_error'] = $err;
3196
  }
3197
 
@@ -3301,7 +3184,10 @@ function cerber_is_htaccess( $file_name ) {
3301
  }
3302
 
3303
  function cerber_is_dropin( $file_name ) {
3304
- $dropins = _get_dropins();
 
 
 
3305
  if ( isset( $dropins[ basename( $file_name ) ] ) ) {
3306
  if ( cerber_get_content_dir() == dirname( $file_name ) ) {
3307
  return true;
@@ -3460,7 +3346,7 @@ function cerber_get_prev_scan_id( $scan_id = 0 ) {
3460
  $prev_id = 0;
3461
  foreach ( $scans as $item ) {
3462
  $scan = unserialize( $item['the_value'] );
3463
- if ( $scan['mode'] == $cerber_scan_mode ) {
3464
  $prev_id = $scan['id'];
3465
  break;
3466
  }
@@ -3912,13 +3798,15 @@ function cerber_array_merge_recurively( $a1, $a2 ) {
3912
  return $a1;
3913
  }
3914
 
3915
- function cerber_get_short_name( $file_row ) {
3916
- if ( ! $file_row ) {
 
3917
  return '';
3918
  }
3919
- $file_name = $file_row['file_name'];
3920
  $len = null;
3921
- switch ( $file_row['file_type'] ) {
 
3922
  case CERBER_FT_PLUGIN:
3923
  $len = mb_strlen( cerber_get_plugins_dir() );
3924
  break;
@@ -3949,244 +3837,8 @@ function cerber_get_short_name( $file_row ) {
3949
  return $ret;
3950
  }
3951
 
3952
- function cerber_scanner_dashboard( $msg = '' ) {
3953
- ?>
3954
- <div id="crb-scan-display">
3955
- <div id="crb-the-table">
3956
- <div class="crb-scan-info scan-tile">
3957
- <table>
3958
- <tr>
3959
- <td><?php _e( 'Started', 'wp-cerber' ); ?></td>
3960
- <td id="crb-started" data-init="-">-</td>
3961
- </tr>
3962
- <tr>
3963
- <td><?php _e( 'Finished', 'wp-cerber' ); ?></td>
3964
- <td id="crb-finished" data-init="-">-</td>
3965
- </tr>
3966
- <tr>
3967
- <td><?php _e( 'Duration', 'wp-cerber' ); ?></td>
3968
- <td id="crb-duration" data-init="-">-</td>
3969
- </tr>
3970
- <tr>
3971
- <td><?php _e( 'Performance', 'wp-cerber' ); ?></td>
3972
- <td id="crb-performance" data-init="-">-</td>
3973
- </tr>
3974
- <tr>
3975
- <td>Mode</td>
3976
- <td id="crb-smode" data-init="-">-</td>
3977
- </tr>
3978
- </table>
3979
- </div>
3980
- <div id="crb-scan-filter" class="crb-scan-info scan-tile">
3981
- <table>
3982
- <!--<tr id="crb-numbers-4">
3983
- <td><span><?php _e( 'Vulnerabilities', 'wp-cerber' ); ?></span></td>
3984
- <td class="crb-scan-number" data-init="-">-</td>
3985
- </tr> -->
3986
- <tr id="crb-numbers-51">
3987
- <td><span data-itype-list="[51]"><?php _e( 'New files', 'wp-cerber' ); ?></span></td>
3988
- <td class="crb-scan-number" data-init="-">-</td>
3989
- </tr>
3990
- <tr id="crb-numbers-50">
3991
- <td><span data-itype-list="[50]"><?php _e( 'Changed files', 'wp-cerber' ); ?></span></td>
3992
- <td class="crb-scan-number" data-init="-">-</td>
3993
- </tr>
3994
- <tr id="crb-numbers-15">
3995
- <td><span data-itype-list="[15]"><?php _e( 'Checksum mismatch', 'wp-cerber' ); ?></span></td>
3996
- <td class="crb-scan-number" data-init="-">-</td>
3997
- </tr>
3998
- <tr id="crb-numbers-30">
3999
- <td><span data-itype-list="[30]"><?php _e( 'Unwanted extensions', 'wp-cerber' ); ?></span></td>
4000
- <td class="crb-scan-number" data-init="-">-</td>
4001
- </tr>
4002
- <tr id="crb-numbers-18">
4003
- <td><span data-itype-list="[18]" data-setype-list="[21]"><?php _e( 'Unattended files', 'wp-cerber' ); ?></span></td>
4004
- <td class="crb-scan-number" data-init="-">-</td>
4005
- </tr>
4006
- </table>
4007
- </div>
4008
- <div class="scan-tile">
4009
- <div><p><span id="crb-scanned-files" data-init="0">0</span> / <span id="crb-total-files"
4010
- data-init="0">0</span>
4011
- </p>
4012
- <p><?php echo __( 'Scanned', 'wp-cerber' ) . ' / ' . __( 'Files to scan', 'wp-cerber' ); ?></p>
4013
- </div>
4014
- </div>
4015
-
4016
- <div class="scan-tile">
4017
- <div><p><span id="crb-critical" data-init="0">0</span> / <span id="crb-warning" data-init="0">0</span>
4018
- </p>
4019
- <p><?php _e( 'Critical issues', 'wp-cerber' ); ?> / <?php _e( 'Issues total', 'wp-cerber' ); ?></p>
4020
- </div>
4021
- </div>
4022
-
4023
- </div>
4024
-
4025
- <div id="crb-scan-progress">
4026
- <div>
4027
- <div id="the-scan-bar"></div>
4028
- </div>
4029
- </div>
4030
-
4031
- <p id="crb-scan-message"><?php echo $msg; ?></p>
4032
-
4033
- </div>
4034
- <div id="crb-scan-details">
4035
- <table class="crb-table" id="crb-browse-files">
4036
- <?php
4037
- $rows = array();
4038
- $rows[] = '<tr class="crb-scan-container" id="crb-wordpress" style=""><td colspan="6">WordPress</td></tr>';
4039
- $rows[] = '<tr class="crb-scan-container" id="crb-muplugins" style=""><td colspan="6">Must use plugins</td></tr>';
4040
- $rows[] = '<tr class="crb-scan-container" id="crb-dropins" style=""><td colspan="6">Drop-ins</td></tr>';
4041
- $rows[] = '<tr class="crb-scan-container" id="crb-plugins" style=""><td colspan="6">Plugins</td></tr>';
4042
-
4043
- /*
4044
- $plugins = get_plugins();
4045
- foreach ( $plugins as $plugin ) {
4046
- $rows[] = '<tr class="crb-scan-section" id="' . sha1( $plugin['Name'] ) . '" style="display:none;"></tr>';
4047
- }
4048
- */
4049
- $rows[] = '<tr class="crb-scan-container" id="crb-themes" style=""><td colspan="6">Themes</td></tr>';
4050
-
4051
- /*$themes = wp_get_themes();
4052
- foreach ( $themes as $theme_folder => $theme ) {
4053
- $rows[] = '<tr class="crb-scan-section" id="' . sha1( $theme->get( 'Name' ) ) . '" style="display:none;"></tr>';
4054
- }*/
4055
-
4056
- $rows[] = '<tr class="crb-scan-container" id="crb-uploads" style=""><td colspan="6">Uploads folder</td></tr>';
4057
- $rows[] = '<tr class="crb-scan-container" id="crb-unattended" style=""><td colspan="6">Unattended files</td></tr>';
4058
- echo implode("\n",$rows);
4059
- ?>
4060
- </table>
4061
- </div>
4062
-
4063
- <?php
4064
-
4065
- cerber_ref_upload_form();
4066
- }
4067
-
4068
- /**
4069
- * Finalizes current AJAX request and sends data to the client
4070
- *
4071
- * @param $data array
4072
- */
4073
- function cerber_end_ajax( $data = array() ) {
4074
- global $cerber_db_errors;
4075
-
4076
- if ( ! $data ) {
4077
- $data = array();
4078
- }
4079
-
4080
- if ( ! $cerber_db_errors ) {
4081
- $data['OK'] = 'OK!';
4082
- }
4083
-
4084
- $data['cerber_db_errors'] = $cerber_db_errors;
4085
-
4086
- echo json_encode( $data );
4087
-
4088
- if ( ! nexus_is_valid_request() ) {
4089
- wp_die();
4090
- }
4091
- }
4092
-
4093
- function crb_admin_stop_ajax( $msg = '' ) {
4094
- if ( $msg ) {
4095
- echo $msg;
4096
- }
4097
- if ( ! nexus_is_valid_request() ) {
4098
- //wp_die();
4099
- exit;
4100
- }
4101
- }
4102
-
4103
-
4104
-
4105
  // ======================================================================================================
4106
 
4107
-
4108
-
4109
- function cerber_ref_upload_form() {
4110
- ?>
4111
- <div id="crb-ref-upload-dialog" style="display: none;">
4112
- <p><?php _e( 'We have not found any integrity data to verify', 'wp-cerber' ); ?> <span
4113
- id="ref-section-name"></span>.</p>
4114
- <p><?php _e( "You have to upload a ZIP archive from which you've installed it. This enables the security scanner to verify the integrity of the code and detect malware.", 'wp-cerber' ); ?></p>
4115
- <p><?php echo sprintf( __( 'Maximum upload file size: %s.'), esc_html(size_format(wp_max_upload_size()))); ?></p>
4116
- <form enctype="multipart/form-data">
4117
- <input type="file" name="refile" id="refile" required="required" accept=".zip">
4118
- <input type="submit" name="submit" value="<?php _e( 'Upload file', 'wp-cerber' ); ?>"
4119
- class="button button-primary">
4120
- <ul style="list-style: none;">
4121
- <li style="display:none;" class="crb-status-msg">Uploading the file, please wait&#8230;</li>
4122
- <li style="display:none;" class="crb-status-msg">Processing the file, please wait&#8230;</li>
4123
- </ul>
4124
- </form>
4125
- </div>
4126
-
4127
- <?php
4128
- }
4129
-
4130
- /**
4131
- * Upload a reference ZIP archive for a theme or a plugin
4132
- *
4133
- */
4134
- add_action( 'wp_ajax_cerber_ref_upload', function () {
4135
-
4136
- cerber_check_ajax_permissions();
4137
-
4138
- //ob_start(); // Collecting possible junk warnings and notices cause we need clean JSON to be sent
4139
-
4140
- $error = '';
4141
-
4142
- $folder = cerber_get_tmp_file_folder();
4143
- if ( is_wp_error( $folder ) ) {
4144
- cerber_end_ajax( array( 'error' => $folder->get_error_message() ) );
4145
- }
4146
-
4147
- if ( isset( $_FILES['refile'] ) ) {
4148
-
4149
- // Step 1, saving file
4150
-
4151
- if ( ! is_uploaded_file( $_FILES['refile']['tmp_name'] ) ) {
4152
- $error = 'Unable to read uploaded file';
4153
- }
4154
-
4155
- if ( ! cerber_check_extension( $_FILES['refile']['name'], array( 'zip' ) ) ) {
4156
- $error = 'Incorrect file format';
4157
- }
4158
-
4159
- if ( cerber_detect_exec_extension( $_FILES['refile']['name'] ) ) {
4160
- $error = 'Incorrect file format';
4161
- }
4162
-
4163
- if ( false !== strpos( $_FILES['refile']['name'], '/' ) ) {
4164
- $error = 'Incorrect filename';
4165
- }
4166
-
4167
- if ( $error ) {
4168
- cerber_end_ajax( array( 'error' => $error ) );
4169
- }
4170
-
4171
- if ( false === @move_uploaded_file( $_FILES['refile']['tmp_name'], $folder . $_FILES['refile']['name'] ) ) {
4172
- cerber_end_ajax( array( 'error' => 'Unable to copy file to ' . $folder ) );
4173
- }
4174
-
4175
- }
4176
- else {
4177
-
4178
- // Step 2, creating hash
4179
-
4180
- $result = cerber_need_for_hash();
4181
- if ( is_wp_error( $result ) ) {
4182
- cerber_end_ajax( array( 'error' => $result->get_error_message() ) );
4183
- }
4184
- }
4185
-
4186
- cerber_end_ajax();
4187
-
4188
- } );
4189
-
4190
  // Process a manually installed/upgraded plugin/theme, part 1
4191
  add_filter( 'wp_insert_attachment_data', function ( $data, $postarr ) {
4192
  global $crb_new_zip_file;
@@ -4563,31 +4215,6 @@ function cerber_unzip( $file_name, $folder ) {
4563
 
4564
  }
4565
 
4566
- /**
4567
- * @return WP_Error|WP_Filesystem_Direct
4568
- */
4569
- function cerber_init_wp_filesystem() {
4570
- global $wp_filesystem;
4571
-
4572
- if ( $wp_filesystem instanceof WP_Filesystem_Direct ) { // @since 8.1.5
4573
- return $wp_filesystem;
4574
- }
4575
-
4576
- require_once( ABSPATH . 'wp-admin/includes/file.php' );
4577
-
4578
- add_filter( 'filesystem_method', '__ret_direct' );
4579
- if ( ! WP_Filesystem() ) {
4580
- return new WP_Error( 'cerber-file', 'Unable to init WP_Filesystem' );
4581
- }
4582
- remove_filter( 'filesystem_method', '__ret_direct' );
4583
-
4584
- return $wp_filesystem;
4585
- }
4586
-
4587
- function __ret_direct() {
4588
- return 'direct';
4589
- }
4590
-
4591
  function cerber_detect_object( $folder = '' ) {
4592
 
4593
  // Look for a theme
@@ -4703,286 +4330,113 @@ function cerber_check_theme_data( $folder ) {
4703
  }
4704
 
4705
  /**
4706
- * File viewer, server side AJAX
 
 
 
 
4707
  *
 
4708
  */
4709
- add_action( 'wp_ajax_cerber_view_file', function () {
4710
-
4711
- cerber_check_ajax_permissions();
4712
-
4713
- $get = crb_get_query_params();
4714
- $file_name = $get['file'];
4715
-
4716
- if ( ! @is_file( $file_name ) ) {
4717
- crb_admin_stop_ajax( 'I/O Error' );
4718
-
4719
- return;
4720
  }
4721
 
4722
- $file_size = filesize( $file_name );
4723
-
4724
- if ( $file_size > 8000000 ) {
4725
- crb_admin_stop_ajax( 'Error: This file is too large to display.' );
4726
 
4727
- return;
 
4728
  }
4729
 
4730
- if ( $file_size <= 0 ) {
4731
- crb_admin_stop_ajax( 'The file is empty.' );
4732
-
4733
- return;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4734
  }
4735
 
4736
- $scan_id = absint( $get['scan_id'] );
4737
-
4738
- $the_file = cerber_db_get_row( 'SELECT * FROM ' . cerber_get_db_prefix() . CERBER_SCAN_TABLE . ' WHERE scan_id = ' . $scan_id . ' AND file_name = "' . $file_name . '"' );
4739
-
4740
- if ( ! $the_file ) {
4741
- crb_admin_stop_ajax( __( 'File access error. Possibly scan results are outdated. Please run Quick or Full Scan.', 'wp-cerber' ) );
4742
 
4743
- return;
 
 
 
 
4744
  }
4745
-
4746
- if ( ! $source = file_get_contents( $file_name ) ) {
4747
- crb_admin_stop_ajax( 'Error: Unable to load file.' );
4748
-
4749
- return;
 
 
4750
  }
4751
-
4752
- $source = htmlspecialchars( $source, ENT_SUBSTITUTE );
4753
-
4754
- if ( ! $source ) {
4755
- $source = 'Unable to display the contents of the file. This file contains non-printable characters.';
4756
  }
 
 
 
 
 
4757
 
4758
- if ( cerber_detect_exec_extension( $file_name )
4759
- || cerber_check_extension( $file_name, array( 'js', 'css', 'inc' ) )
4760
- || cerber_is_htaccess( $file_name )
4761
- ) {
4762
- $paint = true;
4763
- }
4764
- else {
4765
- $paint = false;
4766
- }
4767
-
4768
- $overlay = '';
4769
- if ( $paint ) {
4770
- $overlay = '<div id="crb-overlay">Loading, please wait...</div>';
4771
- }
4772
-
4773
- $sh_url = plugin_dir_url( __FILE__ ) . 'assets/sh/';
4774
- $sheight = absint( $get['sheight'] ) - 100; // highlighter is un-responsible, so we need tell him the real height
4775
- $c_height = absint( $get['sheight'] );
4776
-
4777
- ?>
4778
- <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
4779
- <head>
4780
- <script type="text/javascript" src="<?php echo $sh_url ?>scripts/shCore.js"></script>
4781
- <script type="text/javascript" src="<?php echo $sh_url; ?>scripts/shBrushPhp.js"></script>
4782
- <link href="<?php echo $sh_url; ?>styles/shCore.css" rel="stylesheet" type="text/css" />
4783
- <link href="<?php echo $sh_url; ?>styles/shThemeDefault.css" rel="stylesheet" type="text/css" />
4784
- <style type="text/css" media="all">
4785
- body {
4786
- overflow: hidden;
4787
- font-family: 'Roboto', sans-serif;
4788
- font-size: 14px;
4789
- }
4790
 
4791
- #crb-overlay {
4792
- display: flex;
4793
- justify-content: center;
4794
- align-items: center;
4795
- text-align: center;
4796
- background-color: #fff;
4797
- position: fixed;
4798
- width: 100%;
4799
- height: 100%
4800
- z-index: 2;
4801
- top: 0;
4802
- left: 0;
4803
- right: 0;
4804
- bottom: 0;
4805
- }
4806
 
4807
- #crb-issue {
4808
- border-left: 3px solid crimson;
4809
- background-color: #eee;
4810
- padding: 1em;
4811
- overflow: auto;
4812
- }
4813
-
4814
- #crb-file-content {
4815
- <?php
4816
- if (!$paint) {
4817
- echo '
4818
- max-height: '.$sheight .'px;
4819
- overflow: auto;
4820
- padding: 15px;
4821
- ';
4822
- }
4823
- else {
4824
- echo 'overflow: hidden;';
4825
- }
4826
- ?>
4827
- }
4828
-
4829
- .syntaxhighlighter {
4830
- max-height: <?php echo $sheight; ?>px;
4831
- }
4832
-
4833
- .syntaxhighlighter code {
4834
- font-family: Menlo, Consolas, Monaco, monospace !important;
4835
- font-size: 13px !important;
4836
- }
4837
-
4838
- .syntaxhighlighter .gutter .line{
4839
- border-right: 3px solid #c7c7c7 !important;
4840
- }
4841
-
4842
- </style>
4843
- </head>
4844
-
4845
- <body>
4846
-
4847
- <?php
4848
-
4849
- echo $overlay;
4850
-
4851
- echo '<pre id="crb-file-content" class="brush: php; toolbar: false;">' . $source . '</pre>';
4852
-
4853
- if ( $the_file ) {
4854
- echo '<div id="crb-issue">Issue: ' . cerber_get_issue_label( $the_file['scan_status'] ) . '</div>';
4855
- }
4856
-
4857
- if ( $paint ) :
4858
- ?>
4859
-
4860
- <script type="text/javascript">
4861
- SyntaxHighlighter.defaults["highlight"];
4862
- SyntaxHighlighter.all();
4863
- function crb_waitUntilRender() {
4864
- var overlay = document.getElementById("crb-overlay").style.visibility = "hidden";
4865
- }
4866
- var intervalID = setInterval(crb_waitUntilRender, 200);
4867
-
4868
-
4869
- </script>
4870
-
4871
- <?php
4872
-
4873
- endif;
4874
-
4875
- ?>
4876
-
4877
- </body>
4878
- </html>
4879
-
4880
- <?php
4881
-
4882
- crb_admin_stop_ajax();
4883
-
4884
- } );
4885
-
4886
-
4887
- /**
4888
- * Deleting files, server side AJAX
4889
- *
4890
- */
4891
- add_action( 'wp_ajax_cerber_scan_bulk_files', function () {
4892
-
4893
- cerber_check_ajax_permissions();
4894
-
4895
- $post = crb_get_post_fields();
4896
-
4897
- if ( empty( $post['files'] ) || empty( $post['scan_id'] ) ) {
4898
- crb_admin_stop_ajax( 'Error!' );
4899
-
4900
- return;
4901
- }
4902
-
4903
- $scan_id = absint( $post['scan_id'] );
4904
-
4905
- if ( ! cerber_get_scan( $scan_id ) ) {
4906
- crb_admin_stop_ajax( 'Error!' );
4907
-
4908
- return;
4909
- }
4910
-
4911
- $operation = $post['scan_file_operation'];
4912
-
4913
- if ( ( ! $ignore = cerber_get_set( 'ignore-list' ) ) || ! is_array( $ignore ) ) {
4914
- $ignore = array();
4915
- }
4916
-
4917
- global $crb_list;
4918
- $crb_list = array();
4919
- $i = 0;
4920
- $errors = array();
4921
- $time = time();
4922
- $user_id = get_current_user_id();
4923
-
4924
- foreach ( $post['files'] as $file_name ) {
4925
-
4926
- if ( ! is_file( $file_name ) ) {
4927
- continue;
4928
- }
4929
-
4930
- $the_file = cerber_db_get_row( 'SELECT * FROM ' . cerber_get_db_prefix() . CERBER_SCAN_TABLE . ' WHERE scan_id = ' . $scan_id . ' AND file_name = "' . $file_name . '"', MYSQL_FETCH_OBJECT );
4931
- if ( ! $the_file || ! is_file( $the_file->file_name ) ) {
4932
- $errors[] = 'Unknown file: '.$file_name;
4933
- continue;
4934
- }
4935
-
4936
- switch ( $operation ) {
4937
- case 'delete_file':
4938
- $result = cerber_quarantine_file( $file_name, $scan_id );
4939
- break;
4940
- case 'ignore_add_file':
4941
- $ignore[ $the_file->file_name_hash ] = array(
4942
- $the_file->file_name,
4943
- @hash_file( 'sha256', $the_file->file_name ),
4944
- $user_id,
4945
- $time,
4946
- );
4947
- $result = true;
4948
- break;
4949
- }
4950
-
4951
- if ( is_wp_error( $result ) ) {
4952
- $errors[] = $result->get_error_message();
4953
- }
4954
- elseif ( ! $result ) {
4955
- $errors[] = 'Unknown error 55';
4956
- }
4957
- else {
4958
- $i ++;
4959
- $crb_list[] = $file_name;
4960
- }
4961
-
4962
- }
4963
-
4964
- if ( $operation == 'ignore_add_file' ) {
4965
- // Update the last scan results to keep it up to date and avoid user confusing
4966
- if ( $scan = cerber_get_scan() ) {
4967
- $scan['issues'] = crb_issue_filer( $scan['issues'], function ( $file_name ) {
4968
- global $crb_list;
4969
- if ( in_array( $file_name, $crb_list ) ) {
4970
- return false;
4971
- }
4972
- return true;
4973
- });
4974
- cerber_update_scan( $scan );
4975
- }
4976
- if ( ! cerber_update_set( 'ignore-list', $ignore ) ) {
4977
- $errors [] = 'Unable to update the ignore list';
4978
- }
4979
- }
4980
-
4981
- crb_scan_debug( $errors );
4982
-
4983
- cerber_end_ajax( array( 'errors' => $errors, 'number' => $i, 'processed' => $crb_list ) );
4984
-
4985
- });
4986
  /**
4987
  * Move files to the quarantine folder
4988
  *
@@ -5077,9 +4531,16 @@ function cerber_quarantine_file( $file_name, $scan_id, $move = true ) {
5077
  }
5078
 
5079
  // Save restoring info
5080
- fwrite( $f, PHP_EOL . cerber_date( time() ) . ' | ' . basename( $new_name ) . ' => ' . $file_name );
 
 
 
 
 
5081
  fclose( $f );
5082
 
 
 
5083
  return true;
5084
  }
5085
 
@@ -5712,338 +5173,10 @@ function cerber_make_numbers( &$update = array(), &$scan = array() ) {
5712
  }
5713
  }
5714
 
5715
- function cerber_show_quarantine() {
5716
-
5717
- $folder = cerber_get_the_folder( true );
5718
- if ( is_wp_error( $folder ) ) {
5719
- echo $folder->get_error_message();
5720
-
5721
- return;
5722
- }
5723
-
5724
- $no_files = __( 'There are no files in the quarantine at the moment.', 'wp-cerber' );
5725
- $per_page = crb_admin_get_per_page();
5726
- $first = ( cerber_get_pn() - 1 ) * $per_page;
5727
- $last = $first + $per_page;
5728
- $list = array();
5729
-
5730
- $filter_scan = crb_get_query_params( 'scan', '\d+' );
5731
- //$filter_scan = intval( crb_array_get( $get, 'scan' ) );
5732
- //$dirs = array( $folder . 'quarantine' . DIRECTORY_SEPARATOR . absint( $_GET['scan'] ));
5733
- if ( ! $dirs = glob( $folder . 'quarantine' . DIRECTORY_SEPARATOR . '*', GLOB_ONLYDIR ) ) {
5734
- echo $no_files;
5735
-
5736
- return;
5737
- }
5738
-
5739
- $scan_list = array();
5740
- $count = 0;
5741
- foreach ( $dirs as $dir ) {
5742
- $f = $dir . '/.restore';
5743
- $scan_id = basename( $dir );
5744
- $inc = false;
5745
- if ( file_exists( $f ) && $handle = @fopen( $f, "r" ) ) {
5746
- $ln = 0;
5747
- $included = array();
5748
- while ( ( $line = fgets( $handle ) ) !== false ) {
5749
- $ln ++;
5750
- if ( $ln <= 4 || empty( $line ) ) {
5751
- continue;
5752
- }
5753
- $line = trim( $line );
5754
- if ( empty( $line ) ) {
5755
- continue;
5756
- }
5757
- $v = crb_parse_qline( $dir, $line );
5758
- if ( $v ) {
5759
- if ( in_array( $v['qfile'], $included ) ) {
5760
- continue; // Prevent listing the same file several times
5761
- }
5762
- $inc = true;
5763
- if ( ! $filter_scan || $filter_scan == $scan_id ) {
5764
- if ( $count >= $first && $count <= $last ) {
5765
- $v['scan_id'] = $scan_id;
5766
- $list[] = $v;
5767
- $included[] = $v['qfile'];
5768
- }
5769
- $count ++;
5770
- }
5771
- else {
5772
- continue; // skip the rest of the lines
5773
- }
5774
- }
5775
- }
5776
- if ( ! feof( $handle ) ) {
5777
- echo "Error: unexpected I/O Error";
5778
- }
5779
- fclose( $handle );
5780
- }
5781
- if ( $inc ) {
5782
- $scan_list[] = $scan_id;
5783
- }
5784
- }
5785
-
5786
- if ( ! $list ) {
5787
- if ( ! $filter_scan ) {
5788
- echo $no_files;
5789
- }
5790
- else {
5791
- echo __( 'No files match the specified filter.', 'wp-cerber' ) . ' <a href="' . cerber_admin_link( 'scan_quarantine' ) . '">' . __( 'Click here to see the full list of files', 'wp-cerber' ) . '</a>.';
5792
- }
5793
-
5794
- return;
5795
- }
5796
-
5797
- //echo nl2br( print_r( $list, 1 ) );
5798
-
5799
- $rows = array();
5800
- $ofs = get_option( 'gmt_offset' ) * 3600;
5801
- $confirm = ' onclick="return confirm(\'' . __( 'Are you sure?', 'wp-cerber' ) . '\');"';
5802
-
5803
- foreach ( $list as $file ) {
5804
- $p = array(
5805
- 'cerber_admin_do' => 'scan_tegrity',
5806
- 'crb_scan_id' => $file['scan_id'],
5807
- 'crb_file_id' => $file['qfile']
5808
- );
5809
-
5810
- $p['crb_scan_adm'] = 'delete';
5811
- $delete = '<a ' . $confirm . ' href="' . cerber_admin_link_add( $p ) . '">' . __( 'Delete permanently', 'wp-cerber' ) . '</a>';
5812
-
5813
- $p['crb_scan_adm'] = 'restore';
5814
- $restore = ( ! $file['can'] ) ? '' : ' | <a ' . $confirm . ' href="' . cerber_admin_link_add( $p ) . '">' . __( 'Restore', 'wp-cerber' ) . '</a>';
5815
-
5816
- $moved = strtotime( $file['date'] ) - $ofs;
5817
- $will = cerber_auto_date( $file['scan_id'] + DAY_IN_SECONDS * crb_get_settings( 'scan_qcleanup' ) );
5818
-
5819
- $file_name = str_replace( DIRECTORY_SEPARATOR, '<wbr>' . DIRECTORY_SEPARATOR, $file['source'] );
5820
-
5821
- $rows[] = '<td><span title="' . cerber_date( $file['scan_id'] ) . '">' . cerber_auto_date( $file['scan_id'] ) . '</span></td><td><span title="' . cerber_date( $moved ) . '">' . cerber_auto_date( $moved ) . '</span></td><td>' . $will . '</td><td>' . $file['size'] . '</td><td>' . $file_name . '</td><td style="white-space: pre;">' . $delete . $restore . '</td>';
5822
- }
5823
-
5824
- $heading = array(
5825
- __( 'Scanned', 'wp-cerber' ),
5826
- __( 'Moved to quarantine', 'wp-cerber' ),
5827
- __( 'Automatic deletion', 'wp-cerber' ),
5828
- __( 'Size', 'wp-cerber' ),
5829
- __( 'File', 'wp-cerber' ),
5830
- __( 'Action', 'wp-cerber' ),
5831
- );
5832
-
5833
-
5834
- $titles = '<tr><th>' . implode( '</th><th>', $heading ) . '</th></tr>';
5835
-
5836
- $table = '<table id="crb-quarantine" class="widefat crb-table cerber-margin"><thead>' . $titles . '</thead><tfoot>' . $titles . '</tfoot>' . implode( '</tr><tr>', $rows ) . '</tr></table>';
5837
-
5838
- $table .= cerber_page_navi( $count, $per_page );
5839
-
5840
- $filter = '';
5841
- if ( count( $scan_list ) > 1 ) {
5842
- krsort( $scan_list );
5843
- $list = array( 0 => __( 'All scans', 'wp-cerber' ) );
5844
- foreach ( $scan_list as $s ) {
5845
- $list[ $s ] = cerber_date( $s );
5846
- }
5847
- $filter = '<div style="text-align: right; margin-bottom: 1em;"><form style="width: auto;" action="">' . cerber_select( 'scan', $list, $filter_scan ) . ' <input value="Filter" class="button" type="submit"><input name="page" value="cerber-integrity" type="hidden"><input name="tab" value="scan_quarantine" type="hidden"></form></div>';
5848
- }
5849
-
5850
- echo $filter.$table;
5851
- }
5852
-
5853
- function cerber_quarantine_do( $what, $scan_id, $qfile ) {
5854
- $scan_id = absint( $scan_id );
5855
- if ( ! $scan_id ) {
5856
- cerber_admin_notice( 'Error: Wrong scan parameters.' );
5857
-
5858
- return;
5859
- }
5860
- //$dir = cerber_get_the_folder() . 'quarantine' . DIRECTORY_SEPARATOR . $scan_id;
5861
- $dir = cerber_get_the_folder( true );
5862
- if ( is_wp_error( $dir ) ) {
5863
- cerber_admin_notice( $dir->get_error_message() );
5864
-
5865
- return;
5866
- }
5867
-
5868
- $dir .= 'quarantine' . DIRECTORY_SEPARATOR . $scan_id;
5869
-
5870
- $file = $dir . DIRECTORY_SEPARATOR . $qfile;
5871
- if ( ! @is_file( $file ) || is_link( $file ) ) {
5872
- cerber_admin_notice( 'Error: No file to process' );
5873
-
5874
- return;
5875
- }
5876
-
5877
- $rst = $dir . '/.restore';
5878
- if ( ! file_exists( $rst ) || ! $handle = @fopen( $rst, 'r' ) ) {
5879
- cerber_admin_notice( 'Error: A restore registry file is corrupt or missing.' );
5880
-
5881
- return;
5882
- }
5883
-
5884
- $data = null;
5885
- while ( ( $line = fgets( $handle ) ) !== false ) {
5886
- if ( $p = crb_parse_qline( $dir, $line ) ) {
5887
- if ( $p['qfile'] == $qfile ) {
5888
- $data = $p;
5889
- break;
5890
- }
5891
- }
5892
- }
5893
-
5894
- if ( ! $data ) {
5895
- cerber_admin_notice( 'Error: No information about this file. Unable to proceed.' );
5896
-
5897
- return;
5898
- }
5899
-
5900
- $err = null;
5901
- $msg = null;
5902
- switch ( $what ) {
5903
- case 'delete':
5904
- if ( unlink( $file ) ) {
5905
- $msg = __( 'The file has been deleted permanently.', 'wp-cerber' );
5906
- }
5907
- else {
5908
- $err = 'Unable to delete the file: ' . $file;
5909
- }
5910
- break;
5911
- case 'restore':
5912
- if ( $data['can'] ) {
5913
- $target_dir = dirname( $data['source'] );
5914
- if ( ! file_exists( $target_dir ) && ! mkdir( $target_dir, 0755, true ) ) {
5915
- $err = 'Unable to create the folder <b>' . $target_dir . '</b>. Check permissions of parent folders.';
5916
- }
5917
- if ( ! $err ) {
5918
- if ( @rename( $file, $data['source'] ) ) {
5919
- $msg = __( 'The file has been restored to its original location.', 'wp-cerber' );
5920
- }
5921
- else {
5922
- $err = 'A file error occurred while restoring the file. Check permissions of folders.';
5923
- }
5924
- }
5925
- }
5926
- else {
5927
- $err = 'This file cannot be restored and needs to be manually copied. <p>See instructions in this file: ' . $rst . '</p>';
5928
- }
5929
- break;
5930
- }
5931
- if ( $err ) {
5932
- cerber_admin_notice( __( 'ERROR:', 'wp-cerber' ) . ' ' . $err );
5933
- }
5934
- if ( $msg ) {
5935
- cerber_admin_message( $msg );
5936
- }
5937
- }
5938
-
5939
- function cerber_show_ignore() {
5940
-
5941
- // For translators
5942
- __( 'Apply', 'wp-cerber' );
5943
- __( 'Remove from the list', 'wp-cerber' );
5944
- __( 'User Insights', 'wp-cerber' );
5945
- __( 'Traffic Insights', 'wp-cerber' );
5946
- __( 'Activity Insights', 'wp-cerber' );
5947
-
5948
- $no_files = __( 'The list is empty.', 'wp-cerber' );
5949
- $per_page = crb_admin_get_per_page();
5950
- $first = ( cerber_get_pn() - 1 ) * $per_page;
5951
-
5952
- if ( ! $list = cerber_get_set( 'ignore-list' ) ) {
5953
- echo $no_files;
5954
-
5955
- return;
5956
- }
5957
-
5958
- $count = count( $list );
5959
- $list = array_slice( $list, $first, $per_page );
5960
-
5961
- $rows = array();
5962
- $confirm = ' onclick="return confirm(\'' . __( 'Are you sure?', 'wp-cerber' ) . '\');"';
5963
-
5964
- foreach ( $list as $key => $file ) {
5965
-
5966
- $delete = '<a ' . $confirm . ' href="' . cerber_admin_link_add( array(
5967
- 'cerber_admin_do' => 'scan_tegrity',
5968
- 'crb_scan_adm' => 'remove_ignore',
5969
- 'crb_file_id' => $key
5970
- ) ) . '">' . __( 'Remove from the list', 'wp-cerber' ) . '</a>';
5971
-
5972
- $rows[] = '<td>' . cerber_date( $file[3] ) . '</td><td>' . $file[0] . '</td><td style="white-space: pre;">'.$delete . '</td>';
5973
- }
5974
-
5975
- $heading = array(
5976
- __( 'Added', 'wp-cerber' ),
5977
- __( 'File', 'wp-cerber' ),
5978
- __( 'Action', 'wp-cerber' ),
5979
- );
5980
-
5981
-
5982
- $titles = '<tr><th>' . implode( '</th><th>', $heading ) . '</th></tr>';
5983
-
5984
- $table = '<table class="widefat crb-table cerber-margin"><thead>' . $titles . '</thead><tfoot>' . $titles . '</tfoot>' . implode( '</tr><tr>', $rows ) . '</tr></table>';
5985
-
5986
- $table .= cerber_page_navi( $count, $per_page );
5987
-
5988
- echo $table;
5989
- }
5990
-
5991
- function crb_remove_ignore( $id ) {
5992
- if ( ! $list = cerber_get_set( 'ignore-list' ) ) {
5993
- return false;
5994
- }
5995
- if ( ! isset( $list[ $id ] ) ) {
5996
- return false;
5997
- }
5998
-
5999
- unset( $list[ $id ] );
6000
-
6001
- return cerber_update_set( 'ignore-list', $list );
6002
-
6003
- }
6004
-
6005
- function crb_parse_qline( $dir, $line ) {
6006
- if ( ! $line
6007
- || ! strpos( $line, '|' )
6008
- || ! strpos( $line, '=>' ) ) {
6009
- return false;
6010
- }
6011
- list( $date, $info ) = explode( '|', $line );
6012
- list( $qfile, $source ) = explode( '=>', $info );
6013
- $date = trim( $date );
6014
- $qfile = trim( $qfile );
6015
- $source = trim( $source );
6016
- if ( ! $qfile ) {
6017
- return false;
6018
- }
6019
- $fname = $dir . '/' . $qfile;
6020
- if ( ! @is_file( $fname ) ) {
6021
- return false;
6022
- }
6023
- $size = @filesize( $fname );
6024
- $size = ( is_numeric( $size ) ) ? $size : 0;
6025
- //$sdir = dirname( $source ) . DIRECTORY_SEPARATOR;
6026
- //$can = ( file_exists( $sdir ) ) ? true : false;
6027
- //$can = ( file_exists( $source ) ) ? false : true;
6028
-
6029
- $ret = array(
6030
- 'date' => $date,
6031
- 'size' => crb_size_format( $size ),
6032
- 'qfile' => $qfile,
6033
- 'source' => $source,
6034
- //'sdir' => $sdir,
6035
- //'can' => $can
6036
- 'can' => true
6037
- );
6038
-
6039
- return $ret;
6040
- }
6041
-
6042
  function crb_scan_debug( $msg ) {
6043
- global $cerber_db_errors;
6044
 
6045
  if ( crb_get_settings( 'scan_debug' ) ) {
6046
- cerber_diag_log( $cerber_db_errors, 'Scanner' );
6047
  cerber_diag_log( $msg, 'Scanner' );
6048
  }
6049
  }
@@ -6074,4 +5207,28 @@ function crb_issue_filer( $list, $function ) {
6074
  }
6075
  //$response['issues'] = $filtered;
6076
  return $filtered;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6077
  }
80
 
81
  define( 'CRB_SCAN_RCV_DIR', 'recovery' );
82
 
83
+ define( 'CRB_SQL_CHUNK', 10000 ); // @since 8.6.4 Split queries into chunks to reduce memory consumption
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
 
85
  add_action( 'plugins_loaded', function () {
 
86
 
87
  if ( ! cerber_is_cloud_request() ) {
88
  return;
160
 
161
  $db_errors = array_map( function ( $err ) {
162
  return substr( $err, 0, 1000 );
163
+ }, cerber_db_get_errors() );
164
 
165
  $ret = array(
166
  'cerber_scanner' => $scanner,
188
  } );
189
 
190
  function cerber_scanner( $control, $mode ) {
191
+ global $cerber_scan_mode;
192
 
193
  if ( crb_get_settings( 'scan_debug' ) ) {
194
  register_shutdown_function( function () {
205
 
206
  if ( function_exists( 'wp_raise_memory_limit' ) ) {
207
  if ( ! wp_raise_memory_limit( 'admin' ) ) {
208
+ //$m = 'WARNING: Unable to raise memory limit';
209
+ //crb_scan_debug( $m );
210
+ //$errors[] = $m;
211
  }
212
  }
213
 
302
  $ret['cerber_scan_do'] = 'stop';
303
  }
304
 
305
+ if ( cerber_db_get_errors() ) {
306
  cerber_watchdog( true );
307
  }
308
 
383
  break;
384
  case 5:
385
  $x = 0;
386
+ //if ( $result = cerber_db_get_results( 'SELECT * FROM ' . cerber_get_db_prefix() . CERBER_SCAN_TABLE . ' WHERE scan_id = ' . $scan['id'] . ' AND file_hash = ""' ) ) {
387
+ $done = false;
388
+ while ( ! $aborted && ! $exceed && ! $done ) {
389
+ // Split into several SQL requests to avoid memory exhausted error on a website with hundreds of thousands files
390
+ if ( $result = cerber_db_get_results( 'SELECT file_name, scan_id, file_name_hash FROM ' . cerber_get_db_prefix() . CERBER_SCAN_TABLE . ' WHERE scan_id = ' . $scan['id'] . ' AND file_hash = "" LIMIT ' . CRB_SQL_CHUNK ) ) {
391
+ //cerber_log_scan_error( 'CHUNK ' . count( $result ) );
392
+ foreach ( $result as $row ) {
393
+ if ( ! cerber_add_file_info( $row ) ) {
394
+ cerber_log_scan_error( 'Unable to update file info. Scanning has been aborted.' );
395
+ $aborted = 1;
396
  break;
397
  }
398
+ if ( 0 === ( $x % 100 ) ) {
399
+ if ( cerber_exec_timer() ) {
400
+ $exceed = true;
401
+ break;
402
+ }
403
+ }
404
+ $x ++;
405
  }
 
406
  }
407
+ else {
408
+ //$aborted = 1;
409
+ $done = true;
410
+ }
 
 
411
  }
412
+ // Some files might be symlinks
413
+ $update['total']['files'] = cerber_get_num_files( $scan['id'] );
414
+ $update['total']['parsed'] = cerber_db_get_var( 'SELECT COUNT(scan_id) FROM ' . cerber_get_db_prefix() . CERBER_SCAN_TABLE . ' WHERE scan_id = ' . $scan['id'] . ' AND file_type !=0' );
415
  break;
416
  case 6:
417
  if ( cerber_is_check_fs() ) {
1608
  continue;
1609
  }
1610
 
1611
+ $short_name = cerber_get_short_name( $local_file['file_name'], $local_file['file_type'] );
1612
 
1613
  if ( empty( $local_file['file_hash'] ) ) {
1614
  $issues[] = array( 11, $short_name, 'file' => $local_file );
1918
  }*/
1919
 
1920
  $in = '0';
1921
+ $remain = 0;
1922
 
1923
+ /* if ( ! $files = cerber_db_get_results( 'SELECT * FROM ' . cerber_get_db_prefix() . CERBER_SCAN_TABLE .
1924
+ ' WHERE scan_id = ' . $scan['id'] . ' AND scan_status IN (' . $in . ')' ) ) {
1925
+ return 0;
1926
+ }
1927
+ */
1928
+
1929
+ if ( ! $files = cerber_db_get_results( 'SELECT * FROM ' . cerber_get_db_prefix() . CERBER_SCAN_TABLE .
1930
+ ' WHERE scan_id = ' . $scan['id'] . ' AND scan_status IN (' . $in . ') LIMIT ' . CRB_SQL_CHUNK ) ) {
1931
  return 0;
1932
  }
1933
 
1934
+ if ( count( $files ) >= CRB_SQL_CHUNK ) {
1935
+ $remain = 1;
1936
+ }
1937
+
1938
  // Plugins data -------------------
1939
 
1940
  $plugins = array();
1963
  $can_be_deleted = array( CERBER_FT_UPLOAD, CERBER_FT_CNT, CERBER_FT_OTHER, CERBER_FT_LNG );
1964
 
1965
  $issues = array();
 
1966
 
1967
  // Prevent hanging
1968
  if ( $f = cerber_get_set( CRB_LAST_FILE, 0, false ) ) {
2130
  }
2131
  }
2132
  else {
2133
+ $short_name = cerber_get_short_name( $file['file_name'], $file['file_type'] );
2134
  }
2135
 
2136
  // Is file can be deleted?
2775
  continue;
2776
  }
2777
 
2778
+ $short_name = cerber_get_short_name( $local_file['file_name'], $local_file['file_type'] );
2779
 
2780
  if ( empty( $local_file[ $field ] ) ) {
2781
  $issues[] = array( 11, $short_name, 'file' => $local_file );
3074
  }
3075
 
3076
  if ( ! empty( $ret['curl_error'] ) ) {
3077
+ $err = '#' . curl_errno( $curl ) . ' ' . $ret['curl_error'] . ' while attempting to retrieve: ' . $url;
3078
  $ret['curl_error'] = $err;
3079
  }
3080
 
3184
  }
3185
 
3186
  function cerber_is_dropin( $file_name ) {
3187
+ static $dropins;
3188
+ if ( ! $dropins ) {
3189
+ $dropins = _get_dropins();
3190
+ }
3191
  if ( isset( $dropins[ basename( $file_name ) ] ) ) {
3192
  if ( cerber_get_content_dir() == dirname( $file_name ) ) {
3193
  return true;
3346
  $prev_id = 0;
3347
  foreach ( $scans as $item ) {
3348
  $scan = unserialize( $item['the_value'] );
3349
+ if ( $scan['finished'] && $scan['mode'] == $cerber_scan_mode ) {
3350
  $prev_id = $scan['id'];
3351
  break;
3352
  }
3798
  return $a1;
3799
  }
3800
 
3801
+ //function cerber_get_short_name( $file_row ) {
3802
+ function cerber_get_short_name( $file_name, $file_type ) {
3803
+ if ( ! $file_name || ! $file_type ) {
3804
  return '';
3805
  }
3806
+ //$file_name = $file_row['file_name'];
3807
  $len = null;
3808
+ //switch ( $file_row['file_type'] ) {
3809
+ switch ( $file_type ) {
3810
  case CERBER_FT_PLUGIN:
3811
  $len = mb_strlen( cerber_get_plugins_dir() );
3812
  break;
3837
  return $ret;
3838
  }
3839
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3840
  // ======================================================================================================
3841
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3842
  // Process a manually installed/upgraded plugin/theme, part 1
3843
  add_filter( 'wp_insert_attachment_data', function ( $data, $postarr ) {
3844
  global $crb_new_zip_file;
4215
 
4216
  }
4217
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4218
  function cerber_detect_object( $folder = '' ) {
4219
 
4220
  // Look for a theme
4330
  }
4331
 
4332
  /**
4333
+ * @param int $first
4334
+ * @param int $last
4335
+ * @param int $filter_scan
4336
+ *
4337
+ * @return array|WP_Error
4338
  *
4339
+ * @since 8.6.4
4340
  */
4341
+ function cerber_quarantine_get_files( $first = 0, $last = null, $filter_scan = null ) {
4342
+ $folder = cerber_get_the_folder( true );
4343
+ if ( is_wp_error( $folder ) ) {
4344
+ return $folder;
 
 
 
 
 
 
 
4345
  }
4346
 
4347
+ $list = array();
4348
+ $count = 0;
4349
+ $scan_list = array();
 
4350
 
4351
+ if ( ! $dirs = glob( $folder . 'quarantine' . DIRECTORY_SEPARATOR . '*', GLOB_ONLYDIR ) ) {
4352
+ return array( $list, $count, $scan_list );
4353
  }
4354
 
4355
+ foreach ( $dirs as $dir ) {
4356
+ $f = $dir . '/.restore';
4357
+ $scan_id = basename( $dir );
4358
+ $inc = false;
4359
+ if ( file_exists( $f ) && $handle = @fopen( $f, "r" ) ) {
4360
+ $ln = 0;
4361
+ $included = array();
4362
+ while ( ( $line = fgets( $handle ) ) !== false ) {
4363
+ $ln ++;
4364
+ if ( $ln <= 4 || empty( $line ) ) {
4365
+ continue;
4366
+ }
4367
+ $line = trim( $line );
4368
+ if ( empty( $line ) ) {
4369
+ continue;
4370
+ }
4371
+ $v = crb_parse_qline( $dir, $line );
4372
+ if ( $v ) {
4373
+ if ( in_array( $v['qfile'], $included ) ) {
4374
+ continue; // Prevent listing the same file several times
4375
+ }
4376
+ $inc = true;
4377
+ if ( ! $filter_scan || $filter_scan == $scan_id ) {
4378
+ if ( $count >= $first && ( ! $last || $count <= $last ) ) {
4379
+ $v['scan_id'] = $scan_id;
4380
+ $list[] = $v;
4381
+ $included[] = $v['qfile'];
4382
+ }
4383
+ $count ++;
4384
+ }
4385
+ else {
4386
+ continue; // skip the rest of the lines
4387
+ }
4388
+ }
4389
+ }
4390
+ if ( ! feof( $handle ) ) {
4391
+ echo "Error: unexpected I/O Error";
4392
+ }
4393
+ fclose( $handle );
4394
+ }
4395
+ if ( $inc ) {
4396
+ $scan_list[] = $scan_id;
4397
+ }
4398
  }
4399
 
4400
+ return array( $list, $count, $scan_list );
4401
+ }
 
 
 
 
4402
 
4403
+ function crb_parse_qline( $dir, $line ) {
4404
+ if ( ! $line
4405
+ || ! strpos( $line, '|' )
4406
+ || ! strpos( $line, '=>' ) ) {
4407
+ return false;
4408
  }
4409
+ list( $date, $info ) = explode( '|', $line );
4410
+ list( $qfile, $source ) = explode( '=>', $info );
4411
+ $date = trim( $date );
4412
+ $qfile = trim( $qfile );
4413
+ $source = trim( $source );
4414
+ if ( ! $qfile ) {
4415
+ return false;
4416
  }
4417
+ $fname = $dir . '/' . $qfile;
4418
+ if ( ! @is_file( $fname ) ) {
4419
+ return false;
 
 
4420
  }
4421
+ $size = @filesize( $fname );
4422
+ $size = ( is_numeric( $size ) ) ? $size : 0;
4423
+ //$sdir = dirname( $source ) . DIRECTORY_SEPARATOR;
4424
+ //$can = ( file_exists( $sdir ) ) ? true : false;
4425
+ //$can = ( file_exists( $source ) ) ? false : true;
4426
 
4427
+ $ret = array(
4428
+ 'date' => $date,
4429
+ 'size' => crb_size_format( $size ),
4430
+ 'qfile' => $qfile,
4431
+ 'source' => $source,
4432
+ //'sdir' => $sdir,
4433
+ //'can' => $can
4434
+ 'can' => true
4435
+ );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4436
 
4437
+ return $ret;
4438
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
4439
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4440
  /**
4441
  * Move files to the quarantine folder
4442
  *
4531
  }
4532
 
4533
  // Save restoring info
4534
+ //fwrite( $f, PHP_EOL . cerber_date( time(), false ) . ' | ' . basename( $new_name ) . ' => ' . $file_name );
4535
+ static $gmt_offset;
4536
+ if ( ! isset( $gmt_offset ) ) {
4537
+ $gmt_offset = get_option( 'gmt_offset' ) * 3600;
4538
+ }
4539
+ fwrite( $f, PHP_EOL . date( 'Y-m-d H:i:s', time() + $gmt_offset ) . ' | ' . basename( $new_name ) . ' => ' . $file_name );
4540
  fclose( $f );
4541
 
4542
+ crb_qr_total_update( 1 );
4543
+
4544
  return true;
4545
  }
4546
 
5173
  }
5174
  }
5175
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5176
  function crb_scan_debug( $msg ) {
 
5177
 
5178
  if ( crb_get_settings( 'scan_debug' ) ) {
5179
+ cerber_diag_log( cerber_db_get_errors( true ), 'Scanner' );
5180
  cerber_diag_log( $msg, 'Scanner' );
5181
  }
5182
  }
5207
  }
5208
  //$response['issues'] = $filtered;
5209
  return $filtered;
5210
+ }
5211
+
5212
+ function crb_qr_total_update( $diff ) {
5213
+ if ( ! $numq = cerber_get_set( 'quarantined_total', null, false ) ) {
5214
+ $numq = 0;
5215
+ }
5216
+ $numq = $numq + $diff;
5217
+ if ( $numq < 0 ) {
5218
+ $numq = 0;
5219
+ }
5220
+
5221
+ cerber_update_set( 'quarantined_total', $numq, null, false );
5222
+ }
5223
+
5224
+ function _crb_qr_total_sync( $total = null ) {
5225
+ if ( ! $total ) {
5226
+ $q = cerber_quarantine_get_files();
5227
+ if ( is_wp_error( $q ) ) {
5228
+ return;
5229
+ }
5230
+ $total = $q[1];
5231
+ }
5232
+
5233
+ cerber_update_set( 'quarantined_total', $total, null, false );
5234
  }
cerber-tools.php CHANGED
@@ -49,12 +49,26 @@ function cerber_show_imex() {
49
  $form .= '<p><input id="importacl" name="importacl" value="1" type="checkbox" checked> <label for="importacl">' . __( 'Access Lists', 'wp-cerber' ) . '</label>';
50
  $form .= '<p><input type="submit" name="cerber_import" id="submit" class="button button-primary" value="' . __( 'Upload file', 'wp-cerber' ) . '"></p></form>';
51
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
  $form .= '<h3 style="margin-top:2em;">Bulk load access list entries</h3>';
53
 
54
  $form .= '<form method="post"><input type="hidden" name="acl_text" value="1">' . $nf;
55
  $form .= '<p><input type="radio" name="target_acl" value="W" checked="checked">Load to ' . __( 'White IP Access List', 'wp-cerber' ) . '</p>';
56
  $form .= '<p><input type="radio" name="target_acl" value="B">Load to ' . __( 'Black IP Access List', 'wp-cerber' ) . '</p>';
57
- $form .= '<p><textarea name="import_acl_entries" rows="8" cols="70" placeholder="Enter access list entries, one item per line. To add entry comments, use the CSV format."></textarea></p>';
58
  $form .= '<p><input type="submit" name="cerber_import" id="submit" class="button button-primary" value="' . __( 'Load entries', 'wp-cerber' ) . '"></p></form>';
59
 
60
  echo $form;
@@ -62,7 +76,6 @@ function cerber_show_imex() {
62
  /*
63
  Create export file
64
  */
65
- add_action( 'admin_init', 'cerber_export' );
66
  function cerber_export() {
67
  global $wpdb;
68
 
@@ -95,7 +108,6 @@ function cerber_export() {
95
  * Import plugin settings from a file
96
  *
97
  */
98
- add_action( 'admin_init', 'cerber_import' );
99
  function cerber_import() {
100
  global $wpdb, $wp_cerber;
101
 
@@ -192,7 +204,7 @@ function cerber_import() {
192
  }
193
  cerber_save_settings( $data['options'] ); // @since 2.0
194
  if ( isset( $data['geo-rules'] ) ) {
195
- update_site_option( 'geo_rule_set', $data['geo-rules'] );
196
  }
197
  if ( ! empty( $data['options']['crb_role_policies'] ) ) {
198
  update_site_option( CERBER_SETTINGS, array( 'crb_role_policies' => $data['options']['crb_role_policies'] ) );
@@ -245,89 +257,76 @@ function cerber_show_diag(){
245
  }
246
 
247
  ?>
248
- <!-- <h3 style="margin-top: 3em;">Diagnostic and maintenance</h3>
249
- <a href="javascript:void(0)" onclick="toggle_visibility('diagnostic'); return false;">Show diagnostic information</a>
250
- -->
251
  <form id="diagnostic">
 
252
  <?php
 
253
  foreach ($sections as $section){
254
- echo '<div class="diag-section">';
255
  echo '<h3>'.$section[0].'</h3>';
256
  echo $section[1];
257
  echo '</div>';
258
  }
 
259
  ?>
260
- <div class="diag-section">
261
- <h3>System Info</h3>
262
- <div class="diag-text"><?php cerber_show_wp_diag(); ?></div>
263
- </div>
264
- <div class="diag-section">
265
- <h3>Database Info</h3>
266
- <?php echo cerber_db_diag(); ?>
267
- <?php echo '<p style="text-align: right;"><a class="button button-secondary" href="' . wp_nonce_url( add_query_arg( array( 'force_repair_db' => 1 ) ), 'control', 'cerber_nonce' ) . '"><span class="dashicons dashicons-admin-tools" style="vertical-align: middle;"></span> Repair Cerber\'s Tables</a></p>'; ?>
268
- </div>
269
- <div class="diag-section">
270
- <h3>Server Environment Variables</h3>
271
- <?php
272
- $server = $_SERVER;
273
- if ( ! empty( $server['HTTP_COOKIE'] ) ) {
274
- unset( $server['HTTP_COOKIE'] );
275
- }
276
- if ( ! empty( $server['HTTP_X_COOKIES'] ) ) {
277
- unset( $server['HTTP_X_COOKIES'] );
278
- }
279
- $se = array();
280
- foreach ( $server as $key => $value ) {
281
- $se[] = array( $key, @strip_tags( $value ) );
282
- }
283
- echo cerber_make_plain_table( $se );
284
- ?>
285
- </div>
286
- <div class="diag-section">
287
- <h3>Cerber Security Cloud Status</h3>
288
- <?php
289
- echo lab_status();
290
- ?>
291
- <p style="text-align: right;">
292
- <a class="button button-secondary" href="<?php echo wp_nonce_url( add_query_arg( array( 'clean_up_the_cache' => 1 ) ), 'control', 'cerber_nonce' ); ?>">Clear Up Cache</a>
293
- <a class="button button-secondary" href="<?php echo wp_nonce_url( add_query_arg( array( 'force_check_nodes' => 1 ) ), 'control', 'cerber_nonce' ); ?>">Recheck Node Statuses</a>
294
- </p>
295
- </div>
296
  <?php
297
 
298
- echo '<div class="diag-section"><h3>Maintenance Tasks</h3>';
299
- cerber_cron_diag();
300
- echo '</div>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
301
 
302
  if ( $report = get_site_option( '_cerber_report' ) ) {
303
- echo '<div class="diag-section"><h3>Reports</h3>';
304
- echo cerber_ago_time($report[0]).' ('.cerber_date($report[0]).')';
305
  if ($report[1]) {
306
- echo ' OK / '.get_site_transient( 'crb_hourly_2' );
307
- }
308
- else {
309
- echo ' Unable to send email';
310
- }
311
- echo '</div>';
 
312
  }
 
313
  if ( $subs = get_site_option( '_cerber_subs' ) ) {
314
- echo '
315
- <div class="diag-section">
316
- <h3>Subscriptions for notifications</h3>';
317
- echo '<ol>';
318
  foreach ( $subs as $hash => $sub ) {
319
- echo '<li> '.$hash.' | <a href = "' .cerber_admin_link( 'activity' ).'&amp;unsubscribeme='.$hash.'">'.__( 'Unsubscribe', 'wp-cerber' ).'</a></li>';
320
  }
321
- echo '</ol>';
322
- echo '</div>';
 
 
323
  }
324
 
325
  if ( $status = CRB_DS::get_status() ) {
326
- echo '
327
- <div class="diag-section">
328
- <h3>Data Shield Status</h3>';
329
- echo $status;
330
- echo '</div>';
331
  }
332
 
333
  ?>
@@ -344,6 +343,10 @@ function cerber_show_diag(){
344
  <?php
345
  }
346
 
 
 
 
 
347
  function cerber_show_lic() {
348
  $key = lab_get_key();
349
  $valid = '';
@@ -392,13 +395,9 @@ function cerber_show_lic() {
392
  <?php
393
  }
394
 
395
-
396
-
397
  function cerber_show_wp_diag(){
398
  global $wpdb;
399
 
400
- $ret = array();
401
-
402
  $tz = date_default_timezone_get();
403
  $tz = ( $tz !== 'UTC' ) ? '<span style="color: red;">' . $tz . '!</span>' : $tz;
404
 
@@ -447,9 +446,9 @@ function cerber_show_wp_diag(){
447
  $sys[] = array( 'Your IP address is detected as', cerber_get_remote_ip() . ' (check it on the <a href="https://wpcerber.com/what-is-my-ip/" target="_blank">What Is My IP Address</a> page)' );
448
  }
449
 
450
- $ret[] = cerber_make_plain_table( $sys );
451
 
452
- $folder = cerber_get_the_folder();
453
  if ( is_wp_error( $folder ) ) {
454
  $folder = $folder->get_error_message();
455
  }
@@ -478,8 +477,8 @@ function cerber_show_wp_diag(){
478
  array( 'PHP folder for uploading files', ini_get( 'upload_tmp_dir' ) ),
479
  array( 'Server folder for temporary files', sys_get_temp_dir() ),
480
  array( 'Server folder for user session data', session_save_path() ),
481
- array( 'Cerber\'s quarantine folder', $folder ),
482
- array( 'Cerber\'s diagnostic log', cerber_get_diag_log() )
483
  );
484
 
485
  //$folders[] = array( 'WordPress config file', $config );
@@ -508,7 +507,7 @@ function cerber_show_wp_diag(){
508
 
509
  $folders[] = array( 'Directory separator', DIRECTORY_SEPARATOR );
510
 
511
- $ret[] = '<p>File system</p>'.cerber_make_plain_table( $folders );
512
 
513
  if ( is_multisite() ) {
514
  $mu = array();
@@ -524,7 +523,7 @@ function cerber_show_wp_diag(){
524
 
525
  $mu[] = array( 'Uploads folder for sites', cerber_get_upload_dir_mu() );
526
 
527
- $ret[] = '<p>Multisite system constant</p>' . cerber_make_plain_table( $mu );
528
  }
529
 
530
  $pls = array();
@@ -534,9 +533,7 @@ function cerber_show_wp_diag(){
534
  $pls[] = array($data['Name'], $data['Version']);
535
  }
536
 
537
- $ret[] = '<p>Active plugins</p>' . cerber_make_plain_table( $pls );
538
-
539
- echo implode("\n",$ret);
540
  }
541
 
542
  function cerber_make_plain_table( $data, $header = null, $first_header = false, $eq = false ) {
@@ -559,10 +556,6 @@ function cerber_make_plain_table( $data, $header = null, $first_header = false,
559
  return $ret;
560
  }
561
 
562
- function cerber_get_chmod( $file ) {
563
- return substr( sprintf( '%o', @fileperms( $file ) ), - 4 );
564
- }
565
-
566
  /*
567
  * Create database diagnostic report
568
  *
@@ -664,19 +657,19 @@ function cerber_table_info( $table ) {
664
  function cerber_environment_diag() {
665
  $issues = array();
666
  if ( version_compare( '7.0', phpversion(), '>' ) ) {
667
- $issues[] = 'Your site run on an outdated (unsupported) version of PHP which is ' . phpversion() . '. We strongly encourage you to upgrade it to a newer version of PHP. See more at: <a target="_blank" href="http://php.net/supported-versions.php">http://php.net/supported-versions.php</a>';
668
  }
669
  if ( ! function_exists( 'http_response_code' ) ) {
670
  $issues[] = 'The PHP function http_response_code() is not found or disabled.';
671
  }
 
 
 
 
672
  if ( ! is_numeric( $_SERVER['REQUEST_TIME_FLOAT'] ) ) {
673
  $issues[] = 'The server environment variable $_SERVER[\'REQUEST_TIME_FLOAT\'] is not set correctly.';
674
  }
675
 
676
- /*if ( $c = cerber_cron_diag() ) {
677
- $issues[] = $c;
678
- }*/
679
-
680
  $ret = null;
681
  if ( $issues ) {
682
  $issues = '<p>' . implode( '</p><p>', $issues ) . '</p>';
@@ -691,11 +684,11 @@ function cerber_environment_diag() {
691
 
692
  function cerber_cron_diag() {
693
 
694
- $planned = array();
695
  $crb_crons = array(
696
- 'cerber_hourly_1' => 'Hourly task #1',
697
- 'cerber_hourly_2' => 'Hourly task #2',
698
- 'cerber_daily' => 'Daily task',
699
  //'cerber_bg_launcher' => 'Background tasks'
700
  );
701
  foreach ( _get_cron_array() as $time => $item ) {
@@ -709,8 +702,8 @@ function cerber_cron_diag() {
709
  unset( $crb_crons['cerber_daily'] );
710
  $crb_crons['cerber_daily_1'] = 'Daily task';
711
 
712
- $errors = array();
713
- $ok = array();
714
  $no_cron = false;
715
  foreach ( $crb_crons as $key => $task ) {
716
  $h = get_site_transient( $key );
@@ -745,41 +738,43 @@ function cerber_cron_diag() {
745
  }
746
  }
747
 
 
 
748
  if ( $errors ) {
749
- //echo 'There are some errors';
750
- echo '<p style="color: red;">' . implode( '<br/>', $errors ) . '</p>';
751
  }
752
  if ( $ok ) {
753
- echo '<p>' . implode( '<br/>', $ok ) . '</p>';
754
  }
755
  if ( $planned ) {
756
- echo '<p>' . implode( '<br/>', $planned ) . '</p>';
757
  }
758
 
759
  $num = 0;
760
  if ( $bg = cerber_bg_task_get_all() ) {
761
  $num = count( $bg );
762
  }
763
- echo '<p>Background tasks: ' . $num . '</p>';
764
 
765
  if ( defined( 'DISABLE_WP_CRON' ) && DISABLE_WP_CRON ) {
766
- echo '<p>Note: the internal WordPress cron launcher is disabled on this site.</p>';
767
  if ( $no_cron ) {
768
- echo '<p>An external cron launcher has not been configured or does not work properly.</p>';
769
  }
770
  }
771
 
 
772
  }
773
 
774
  function cerber_show_diag_log() {
775
  $file = cerber_get_diag_log();
776
  if ( ! is_file( $file ) ) {
777
- echo 'The log file has not been created yet.';
778
 
779
  return;
780
  }
781
  if ( ! filesize( $file ) ) {
782
- echo 'The diagnostic log file is empty.';
783
 
784
  return;
785
  }
@@ -847,7 +842,7 @@ function cerber_show_change_log() {
847
  return;
848
  }
849
 
850
- echo '<div id="crb-change-log-view">';
851
  foreach ( $text as $line ) {
852
  $line = htmlspecialchars( $line );
853
  if ( preg_match_all( '/(\[.+?\])(\(.+?\))/', $line, $m ) ) {
49
  $form .= '<p><input id="importacl" name="importacl" value="1" type="checkbox" checked> <label for="importacl">' . __( 'Access Lists', 'wp-cerber' ) . '</label>';
50
  $form .= '<p><input type="submit" name="cerber_import" id="submit" class="button button-primary" value="' . __( 'Upload file', 'wp-cerber' ) . '"></p></form>';
51
 
52
+ $form .= '<h3 style="margin-top:2em;">' . __( 'Load the default plugin settings', 'wp-cerber' ) . '</h3>';
53
+ $form .= '<p>' . __( 'When you click the button below, the default WP Cerber settings will be loaded. The Custom login URL and Access Lists will not be changed.', 'wp-cerber' ) . '</p>';
54
+ $form .= '<p>' . __( 'To get the most out of WP Cerber, follow these steps:', 'wp-cerber' ) . ' <a target="_blank" href="https://wpcerber.com/getting-started/">Getting Stared Guide</a></p>';
55
+
56
+ $form .= '<p>
57
+ <input type="button" class="button button-primary" value="' . __( 'Load default settings', 'wp-cerber' ) . '" onclick="button_default_settings()" />
58
+ <script type="text/javascript">function button_default_settings(){
59
+ if (confirm("' . __( 'Are you sure?', 'wp-cerber' ) . '")) {
60
+ let click_url = "' . cerber_admin_link_add( array( 'load_settings' => 'default', 'cerber_admin_do' => 'load_defaults' ) ) . '";
61
+ window.location = click_url.replace(/&amp;|&#038;/g,"&");
62
+ }
63
+ }</script>
64
+ </p>';
65
+
66
  $form .= '<h3 style="margin-top:2em;">Bulk load access list entries</h3>';
67
 
68
  $form .= '<form method="post"><input type="hidden" name="acl_text" value="1">' . $nf;
69
  $form .= '<p><input type="radio" name="target_acl" value="W" checked="checked">Load to ' . __( 'White IP Access List', 'wp-cerber' ) . '</p>';
70
  $form .= '<p><input type="radio" name="target_acl" value="B">Load to ' . __( 'Black IP Access List', 'wp-cerber' ) . '</p>';
71
+ $form .= '<p><textarea class="crb-monospace" name="import_acl_entries" rows="8" cols="70" placeholder="Enter access list entries, one item per line. To add entry comments, use the CSV format."></textarea></p>';
72
  $form .= '<p><input type="submit" name="cerber_import" id="submit" class="button button-primary" value="' . __( 'Load entries', 'wp-cerber' ) . '"></p></form>';
73
 
74
  echo $form;
76
  /*
77
  Create export file
78
  */
 
79
  function cerber_export() {
80
  global $wpdb;
81
 
108
  * Import plugin settings from a file
109
  *
110
  */
 
111
  function cerber_import() {
112
  global $wpdb, $wp_cerber;
113
 
204
  }
205
  cerber_save_settings( $data['options'] ); // @since 2.0
206
  if ( isset( $data['geo-rules'] ) ) {
207
+ update_site_option( CERBER_GEO_RULES, $data['geo-rules'] );
208
  }
209
  if ( ! empty( $data['options']['crb_role_policies'] ) ) {
210
  update_site_option( CERBER_SETTINGS, array( 'crb_role_policies' => $data['options']['crb_role_policies'] ) );
257
  }
258
 
259
  ?>
260
+
 
 
261
  <form id="diagnostic">
262
+
263
  <?php
264
+
265
  foreach ($sections as $section){
266
+ echo '<div class="crb-diag-section">';
267
  echo '<h3>'.$section[0].'</h3>';
268
  echo $section[1];
269
  echo '</div>';
270
  }
271
+
272
  ?>
273
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
274
  <?php
275
 
276
+ cerber_show_wp_diag();
277
+
278
+ $button = '<p style="text-align: right;"><a class="button button-secondary" href="' . wp_nonce_url( add_query_arg( array( 'force_repair_db' => 1 ) ), 'control', 'cerber_nonce' ) . '">Repair Cerber\'s Tables</a></p>';
279
+ crb_show_diag_section( 'Database Info', cerber_db_diag() . $button );
280
+
281
+ $server = $_SERVER;
282
+ if ( ! empty( $server['HTTP_COOKIE'] ) ) {
283
+ unset( $server['HTTP_COOKIE'] );
284
+ }
285
+ if ( ! empty( $server['HTTP_X_COOKIES'] ) ) {
286
+ unset( $server['HTTP_X_COOKIES'] );
287
+ }
288
+ ksort( $server );
289
+ $se = array();
290
+ foreach ( $server as $key => $value ) {
291
+ $se[] = array( $key, @strip_tags( $value ) );
292
+ }
293
+
294
+ crb_show_diag_section( 'Server Environment Variables', cerber_make_plain_table( $se ) );
295
+
296
+ $buttons = '<p style="text-align: right;">
297
+ <a class="button button-secondary" href="' . wp_nonce_url( add_query_arg( array( 'clear_up_the_cache' => 1 ) ), 'control', 'cerber_nonce' ) . '">Clear Up Cache</a>
298
+ <a class="button button-secondary" href="' . wp_nonce_url( add_query_arg( array( 'force_check_nodes' => 1 ) ), 'control', 'cerber_nonce' ) . '">Recheck Status</a>
299
+ </p>';
300
+ crb_show_diag_section( 'Cerber Security Cloud Status', lab_status() . $buttons );
301
+
302
+ crb_show_diag_section( 'Maintenance Tasks', cerber_cron_diag() );
303
 
304
  if ( $report = get_site_option( '_cerber_report' ) ) {
305
+ $rep = cerber_ago_time( $report[0] ) . ' (' . cerber_date( $report[0] ) . ')';
 
306
  if ($report[1]) {
307
+ $rep .= ' OK | '.get_site_transient( 'crb_hourly_2' );
308
+ }
309
+ else {
310
+ $rep .= ' Unable to send email';
311
+ }
312
+
313
+ crb_show_diag_section( 'Weekly Reports', $rep );
314
  }
315
+
316
  if ( $subs = get_site_option( '_cerber_subs' ) ) {
317
+
318
+ $rep = '<ol>';
 
 
319
  foreach ( $subs as $hash => $sub ) {
320
+ $rep .= '<li>' . $hash . ' | <a href = "' . cerber_admin_link( 'activity' ) . '&amp;unsubscribeme=' . $hash . '">' . __( 'Unsubscribe', 'wp-cerber' ) . '</a></li>';
321
  }
322
+ $rep .= '</ol>';
323
+ $rep .= '<p><a target="_blank" href="https://wpcerber.com/wordpress-notifications-made-easy/">Read more on alerts and notifications</a></p>';
324
+
325
+ crb_show_diag_section( 'Alerts', $rep );
326
  }
327
 
328
  if ( $status = CRB_DS::get_status() ) {
329
+ crb_show_diag_section( 'Data Shield Status', '<ul><li>' . implode( '</il><li>', $status ) . '</li></ul>' );
 
 
 
 
330
  }
331
 
332
  ?>
343
  <?php
344
  }
345
 
346
+ function crb_show_diag_section( $title, $content ) {
347
+ echo '<div class="crb-diag-section"><h3>' . $title . '</h3><div class="crb-diag-inner">' . $content . '</div></div>';
348
+ }
349
+
350
  function cerber_show_lic() {
351
  $key = lab_get_key();
352
  $valid = '';
395
  <?php
396
  }
397
 
 
 
398
  function cerber_show_wp_diag(){
399
  global $wpdb;
400
 
 
 
401
  $tz = date_default_timezone_get();
402
  $tz = ( $tz !== 'UTC' ) ? '<span style="color: red;">' . $tz . '!</span>' : $tz;
403
 
446
  $sys[] = array( 'Your IP address is detected as', cerber_get_remote_ip() . ' (check it on the <a href="https://wpcerber.com/what-is-my-ip/" target="_blank">What Is My IP Address</a> page)' );
447
  }
448
 
449
+ crb_show_diag_section( 'System Info', cerber_make_plain_table( $sys ) );
450
 
451
+ $folder = cerber_get_my_folder();
452
  if ( is_wp_error( $folder ) ) {
453
  $folder = $folder->get_error_message();
454
  }
477
  array( 'PHP folder for uploading files', ini_get( 'upload_tmp_dir' ) ),
478
  array( 'Server folder for temporary files', sys_get_temp_dir() ),
479
  array( 'Server folder for user session data', session_save_path() ),
480
+ array( 'WP Cerber\'s quarantine folder', $folder ),
481
+ array( 'WP Cerber\'s diagnostic log', cerber_get_diag_log() )
482
  );
483
 
484
  //$folders[] = array( 'WordPress config file', $config );
507
 
508
  $folders[] = array( 'Directory separator', DIRECTORY_SEPARATOR );
509
 
510
+ crb_show_diag_section( 'File system', cerber_make_plain_table( $folders ) );
511
 
512
  if ( is_multisite() ) {
513
  $mu = array();
523
 
524
  $mu[] = array( 'Uploads folder for sites', cerber_get_upload_dir_mu() );
525
 
526
+ crb_show_diag_section( 'Multisite Constants', cerber_make_plain_table( $mu ) );
527
  }
528
 
529
  $pls = array();
533
  $pls[] = array($data['Name'], $data['Version']);
534
  }
535
 
536
+ crb_show_diag_section( 'Active Plugins', cerber_make_plain_table( $pls ) );
 
 
537
  }
538
 
539
  function cerber_make_plain_table( $data, $header = null, $first_header = false, $eq = false ) {
556
  return $ret;
557
  }
558
 
 
 
 
 
559
  /*
560
  * Create database diagnostic report
561
  *
657
  function cerber_environment_diag() {
658
  $issues = array();
659
  if ( version_compare( '7.0', phpversion(), '>' ) ) {
660
+ $issues[] = 'Your site run on an outdated (unsupported) version of PHP which is ' . phpversion() . '. We strongly encourage you to upgrade PHP to a newer version. See more at: <a target="_blank" href="http://php.net/supported-versions.php">http://php.net/supported-versions.php</a>';
661
  }
662
  if ( ! function_exists( 'http_response_code' ) ) {
663
  $issues[] = 'The PHP function http_response_code() is not found or disabled.';
664
  }
665
+ if ( ! function_exists( 'mb_convert_encoding' ) ) {
666
+ $issues[] = 'A PHP extension <b>mbstring</b> is not enabled on this website. Some plugin features will not work properly.
667
+ You need to enable the PHP mbstring extension (multibyte strings support) in your hosting control panel.';
668
+ }
669
  if ( ! is_numeric( $_SERVER['REQUEST_TIME_FLOAT'] ) ) {
670
  $issues[] = 'The server environment variable $_SERVER[\'REQUEST_TIME_FLOAT\'] is not set correctly.';
671
  }
672
 
 
 
 
 
673
  $ret = null;
674
  if ( $issues ) {
675
  $issues = '<p>' . implode( '</p><p>', $issues ) . '</p>';
684
 
685
  function cerber_cron_diag() {
686
 
687
+ $planned = array();
688
  $crb_crons = array(
689
+ 'cerber_hourly_1' => 'Hourly task #1',
690
+ 'cerber_hourly_2' => 'Hourly task #2',
691
+ 'cerber_daily' => 'Daily task',
692
  //'cerber_bg_launcher' => 'Background tasks'
693
  );
694
  foreach ( _get_cron_array() as $time => $item ) {
702
  unset( $crb_crons['cerber_daily'] );
703
  $crb_crons['cerber_daily_1'] = 'Daily task';
704
 
705
+ $errors = array();
706
+ $ok = array();
707
  $no_cron = false;
708
  foreach ( $crb_crons as $key => $task ) {
709
  $h = get_site_transient( $key );
738
  }
739
  }
740
 
741
+ $ret = '';
742
+
743
  if ( $errors ) {
744
+ $ret .= '<p style="color: red;">' . implode( '<br/>', $errors ) . '</p>';
 
745
  }
746
  if ( $ok ) {
747
+ $ret .= '<p>' . implode( '<br/>', $ok ) . '</p>';
748
  }
749
  if ( $planned ) {
750
+ $ret .= '<p>' . implode( '<br/>', $planned ) . '</p>';
751
  }
752
 
753
  $num = 0;
754
  if ( $bg = cerber_bg_task_get_all() ) {
755
  $num = count( $bg );
756
  }
757
+ $ret .= '<p>Background tasks: ' . $num . '</p>';
758
 
759
  if ( defined( 'DISABLE_WP_CRON' ) && DISABLE_WP_CRON ) {
760
+ $ret .= '<p>Note: the internal WordPress cron launcher is disabled on this site.</p>';
761
  if ( $no_cron ) {
762
+ $ret .= '<p>An external cron launcher has not been configured or does not work properly.</p>';
763
  }
764
  }
765
 
766
+ return $ret;
767
  }
768
 
769
  function cerber_show_diag_log() {
770
  $file = cerber_get_diag_log();
771
  if ( ! is_file( $file ) ) {
772
+ echo '<p>The log file has not been created yet.</p>';
773
 
774
  return;
775
  }
776
  if ( ! filesize( $file ) ) {
777
+ echo '<p>The diagnostic log file is empty.</p>';
778
 
779
  return;
780
  }
842
  return;
843
  }
844
 
845
+ echo '<div id="crb-change-log-view" class="">';
846
  foreach ( $text as $line ) {
847
  $line = htmlspecialchars( $line );
848
  if ( preg_match_all( '/(\[.+?\])(\(.+?\))/', $line, $m ) ) {
cerber-users.php CHANGED
@@ -532,7 +532,9 @@ function crb_admin_save_role_policies( $post ) {
532
  }
533
  } );
534
 
535
- $settings = get_site_option( CERBER_SETTINGS );
 
 
536
  $settings['crb_role_policies'] = $policies;
537
 
538
  if ( cerber_update_site_option( CERBER_SETTINGS, $settings ) ) {
@@ -662,59 +664,63 @@ function crb_admin_is_current_session( $session_id ) {
662
  }
663
 
664
  function crb_admin_get_user_cell( $user_id = null, $base_url = '', $text = '', $label = '' ) {
665
- static $roles, $user_cache = array(), $avatar_cache = array();
666
 
667
  if ( ! $user_id ) {
668
  return '';
669
  }
670
 
671
- if ( ! isset( $user_cache[ $user_id ] ) ) {
672
- $user_cache[ $user_id ] = get_userdata( $user_id );
673
- }
674
 
675
- if ( ! isset( $avatar_cache[ $user_id ] ) ) {
676
- $avatar_cache[ $user_id ] = get_avatar( $user_id, 32 );
677
- }
678
 
679
- if ( ! isset( $roles ) ) {
680
- $roles = wp_roles()->roles;
681
  }
682
 
683
- $ret = '';
 
 
684
 
685
- if ( $u = $user_cache[ $user_id ] ) {
686
-
687
- $r = '';
688
- if ( ! is_multisite() && $u->roles ) {
689
- $r = array();
690
- foreach ( $u->roles as $role ) {
691
- $r[] = $roles[ $role ]['name'];
692
- }
693
- $r = '<span class="act-role">' . implode( ', ', $r ) . '</span>';
694
  }
 
 
 
 
695
 
696
- $lbl = ( $label ) ? '<span class="crb-us-lbl">' . $label . '</span>' : '';
 
 
697
 
698
- if ( $base_url ) {
699
- $ret = '<a href="' . $base_url . '&amp;filter_user=' . $user_id . '"><b>' . $u->display_name . '</b></a>' . $lbl . '<p>' . $r . '</p>';
700
- }
701
- else {
702
- $ret = '<b>' . $u->display_name . '</b>' . $lbl . '<p>' . $r . '</p>';
703
  }
 
 
704
 
705
- $ret = '<div class="crb-us-name">' . $ret . '</div>';
706
 
707
- if ( $avatar = $avatar_cache[ $user_id ] ) {
708
- $avatar = '<td>' . $avatar . '</td>';
709
- }
710
- else {
711
- $avatar = '';
712
- }
713
 
714
- $ret = '<table class="crb-avatar"><tr>' . $avatar . '<td>' . $ret . $text . '</td></tr></table>';
 
 
 
 
 
 
715
  }
716
 
717
- return $ret;
 
 
718
  }
719
 
720
  function crb_admin_show_sessions() {
@@ -779,7 +785,7 @@ function crb_pdata_exporter_act( $email_address, $page = 1 ) {
779
  $value = json_encode( $value, JSON_UNESCAPED_UNICODE );
780
 
781
  // Format is defined by WordPress
782
- $data[] = array( 'name' => cerber_date( $row->stamp ), // First column
783
  'value' => $value // Second column
784
  );
785
  }
@@ -837,7 +843,7 @@ function crb_pdata_exporter_trf( $email_address, $page = 1 ) {
837
  $value = json_encode( $value, JSON_UNESCAPED_UNICODE );
838
 
839
  // Format is defined by WordPress
840
- $data[] = array( 'name' => cerber_date( $row->stamp ), // First column
841
  'value' => $value // Second column
842
  );
843
  }
@@ -905,6 +911,8 @@ function crb_pdata_eraser( $email_address, $page = 1 ) {
905
  delete_user_meta( $user->ID, '_crb_reg_' );
906
  }
907
 
 
 
908
  if ( crb_get_settings( 'pdata_sessions' ) ) {
909
  update_user_meta( $user->ID , 'session_tokens', array() );
910
  }
532
  }
533
  } );
534
 
535
+ if ( ! $settings = get_site_option( CERBER_SETTINGS ) ) {
536
+ $settings = array();
537
+ }
538
  $settings['crb_role_policies'] = $policies;
539
 
540
  if ( cerber_update_site_option( CERBER_SETTINGS, $settings ) ) {
664
  }
665
 
666
  function crb_admin_get_user_cell( $user_id = null, $base_url = '', $text = '', $label = '' ) {
667
+ static $wp_roles, $user_cache = array();
668
 
669
  if ( ! $user_id ) {
670
  return '';
671
  }
672
 
673
+ if ( isset( $user_cache[ $user_id ] ) ) {
 
 
674
 
675
+ return $user_cache[ $user_id ];
 
 
676
 
 
 
677
  }
678
 
679
+ if ( ! $user = get_userdata( $user_id ) ) {
680
+ if ( ! $user_data = cerber_get_set( 'user_deleted', $user_id ) ) {
681
+ $user_cache[ $user_id ] = 'UID ' . $user_id;
682
 
683
+ return '';
 
 
 
 
 
 
 
 
684
  }
685
+ }
686
+ else {
687
+ $user_data = array( 'roles' => $user->roles, 'display_name' => $user->display_name );
688
+ }
689
 
690
+ if ( ! isset( $wp_roles ) ) {
691
+ $wp_roles = wp_roles()->roles;
692
+ }
693
 
694
+ $roles = '';
695
+ if ( ! is_multisite() && $user_data['roles'] ) {
696
+ $r = array();
697
+ foreach ( $user_data['roles'] as $role ) {
698
+ $r[] = $wp_roles[ $role ]['name'];
699
  }
700
+ $roles = '<span class="act-role">' . implode( ', ', $r ) . '</span>';
701
+ }
702
 
703
+ $lbl = ( $label ) ? '<span class="crb-us-lbl">' . $label . '</span>' : '';
704
 
705
+ if ( $base_url ) {
706
+ $ret = '<a href="' . $base_url . '&amp;filter_user=' . $user_id . '"><b>' . $user_data['display_name'] . '</b></a>' . $lbl . '<p>' . $roles . '</p>';
707
+ }
708
+ else {
709
+ $ret = '<b>' . $user_data['display_name'] . '</b>' . $lbl . '<p>' . $roles . '</p>';
710
+ }
711
 
712
+ $ret = '<div class="crb-us-name">' . $ret . '</div>';
713
+
714
+ if ( $avatar = get_avatar( $user_id, 32 ) ) {
715
+ $avatar = '<td>' . $avatar . '</td>';
716
+ }
717
+ else {
718
+ $avatar = '';
719
  }
720
 
721
+ $user_cache[ $user_id ] = '<table class="crb-avatar"><tr>' . $avatar . '<td>' . $ret . $text . '</td></tr></table>';
722
+
723
+ return $user_cache[ $user_id ];
724
  }
725
 
726
  function crb_admin_show_sessions() {
785
  $value = json_encode( $value, JSON_UNESCAPED_UNICODE );
786
 
787
  // Format is defined by WordPress
788
+ $data[] = array( 'name' => cerber_date( $row->stamp, false ), // First column
789
  'value' => $value // Second column
790
  );
791
  }
843
  $value = json_encode( $value, JSON_UNESCAPED_UNICODE );
844
 
845
  // Format is defined by WordPress
846
+ $data[] = array( 'name' => cerber_date( $row->stamp, false ), // First column
847
  'value' => $value // Second column
848
  );
849
  }
911
  delete_user_meta( $user->ID, '_crb_reg_' );
912
  }
913
 
914
+ cerber_delete_set( 'user_deleted', $user->ID );
915
+
916
  if ( crb_get_settings( 'pdata_sessions' ) ) {
917
  update_user_meta( $user->ID , 'session_tokens', array() );
918
  }
changelog.txt CHANGED
@@ -1,3 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
  = 8.6.3 =
2
  * New: Ability to load IP access list's entries in the CSV format (bulk load).
3
  * Update: A new malware scanner setting allows you to permit the scanner to change permissions of folders and files when required.
@@ -7,7 +19,7 @@
7
  * [Read more](https://wpcerber.com/wp-cerber-security-8-6-3/)
8
 
9
  = 8.6 =
10
- * New: [An integration with the Cloudflare cloud-based firewall. It’s implemented as a special WP Cerber add-on.](https://wpcerber.com/cloudflare-add-on-wp-cerber/)
11
  * Update: The malware scanner has got improvements to the monitoring of new and modified files feature.
12
  * Update: Additional search fields for the Activity log. They enable you to find a specific request by its Request ID (RID) or/and to search for a string in the request URL.
13
  * Update: The minimum supported PHP version is 5.6.
1
+ = 8.6.5 =
2
+ * New: File system analytics. It's generated based on the results of the last full integrity scan.
3
+ * New: Logging user deletions. The user’s display name and roles are temporarily stored until all log entries related to the user are deleted.
4
+ * New: Faster export with a new date format for CSV log export.
5
+ * New: Ability to disable adding the website administrator's IP address to the White IP Access List upon WP Cerber activation.
6
+ * Improved: Handling the creation of new users by WooCommerce and membership plugins.
7
+ * Improved: Handling user registrations with prohibited emails.
8
+ * Improved: Handling secure Cerber‘s cookies on websites with SSL encryption enabled.
9
+ * Improved: The performance of the integrity checker and malware scanner on huge websites with a large number of files.
10
+ * Fixed: Loading the default plugin settings has no effect. Now it’s fixed and moved from the admin sidebar to the Tools admin page.
11
+ * [Read more](https://wpcerber.com/wp-cerber-security-8-6-5/)
12
+
13
  = 8.6.3 =
14
  * New: Ability to load IP access list's entries in the CSV format (bulk load).
15
  * Update: A new malware scanner setting allows you to permit the scanner to change permissions of folders and files when required.
19
  * [Read more](https://wpcerber.com/wp-cerber-security-8-6-3/)
20
 
21
  = 8.6 =
22
+ * New: [An integration with the Cloudflare firewall. It’s implemented as a special WP Cerber add-on.](https://wpcerber.com/cloudflare-add-on-wp-cerber/)
23
  * Update: The malware scanner has got improvements to the monitoring of new and modified files feature.
24
  * Update: Additional search fields for the Activity log. They enable you to find a specific request by its Request ID (RID) or/and to search for a string in the request URL.
25
  * Update: The minimum supported PHP version is 5.6.
common.php CHANGED
@@ -47,11 +47,10 @@ define( 'CRB_SANITIZE_KEY', '/[^a-z_\-\d.:\/]/i' );
47
  * @since 6.0
48
  *
49
  */
50
- function cerber_get_wp_scripts(){
51
- $list = array_map( function ( $e ) {
52
  return '/' . $e;
53
  }, array( WP_LOGIN_SCRIPT, WP_REG_URI, WP_XMLRPC_SCRIPT, WP_TRACKBACK_SCRIPT, WP_PING_SCRIPT, WP_SIGNUP_SCRIPT, WP_COMMENT_SCRIPT ) );
54
- return $list;
55
  }
56
 
57
  /**
@@ -118,7 +117,6 @@ function cerber_admin_link( $tab = '', $args = array(), $add_nonce = false ) {
118
  $link_base = rtrim( $base, '/' ) . '/admin.php?page=';
119
  }
120
 
121
- //$link = rtrim( $base, '/' ) . '/admin.php?page=' . $page;
122
  $link = $link_base . $page;
123
 
124
  if ( $tab ) {
@@ -126,7 +124,6 @@ function cerber_admin_link( $tab = '', $args = array(), $add_nonce = false ) {
126
  }
127
 
128
  if ( $args ) {
129
- //return add_query_arg(array('record_id'=>$record_id,'mode'=>'view_record'),admin_url('admin.php?page=storage'));
130
  foreach ( $args as $arg => $value ) {
131
  $link .= '&amp;' . $arg . '=' . urlencode( $value );
132
  }
@@ -1031,6 +1028,8 @@ function cerber_is_route_blocked() {
1031
  }*/
1032
 
1033
  function cerber_is_rest_permitted() {
 
 
1034
  $opt = crb_get_settings();
1035
 
1036
  if ( ! empty( $opt['norestuser'] ) ) {
@@ -1058,6 +1057,7 @@ function cerber_is_rest_permitted() {
1058
  $namespace = substr( $rest_path, 0, strpos( $rest_path, '/' ) );
1059
  foreach ( $opt['restwhite'] as $exception ) {
1060
  if ( $exception == $namespace ) {
 
1061
  return true;
1062
  }
1063
  }
@@ -1325,6 +1325,7 @@ function cerber_get_labels( $type = 'activity' ) {
1325
  // User actions
1326
  $act[1] = __( 'User created', 'wp-cerber' );
1327
  $act[2] = __( 'User registered', 'wp-cerber' );
 
1328
  $act[5] = __( 'Logged in', 'wp-cerber' );
1329
  $act[6] = __( 'Logged out', 'wp-cerber' );
1330
  $act[7] = __( 'Login failed', 'wp-cerber' );
@@ -1408,13 +1409,19 @@ function cerber_get_labels( $type = 'activity' ) {
1408
  $sts[28] = __( 'Initiated by the user', 'wp-cerber' );
1409
 
1410
  $sts[30] = 'Username is prohibited';
1411
- $sts[31] = __( 'Email address is not permitted', 'wp-cerber' );
1412
  $sts[32] = 'User role is prohibited';
1413
  $sts[33] = __( 'Permission denied', 'wp-cerber' );
1414
  $sts[34] = 'Unauthorized access denied';
1415
  $sts[35] = __( 'Invalid user', 'wp-cerber' );
1416
  $sts[36] = __( 'Incorrect password', 'wp-cerber' );
1417
 
 
 
 
 
 
 
1418
  cerber_cache_set( 'labels', $labels );
1419
  }
1420
 
@@ -1613,18 +1620,35 @@ function cerber_auto_date( $time ) {
1613
  * Format date according to user settings and timezone
1614
  *
1615
  * @param $timestamp int Unix timestamp
 
1616
  *
1617
  * @return string
1618
  */
1619
- function cerber_date( $timestamp ) {
1620
  static $gmt_offset;
1621
 
1622
- if ( $gmt_offset === null) {
1623
  $gmt_offset = get_option( 'gmt_offset' ) * 3600;
1624
  }
1625
 
1626
- $timestamp = absint( $timestamp );
1627
- return date_i18n( cerber_get_dt_format(), $gmt_offset + $timestamp );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1628
  }
1629
 
1630
  function cerber_get_dt_format() {
@@ -1638,12 +1662,16 @@ function cerber_get_dt_format() {
1638
  return $ret;
1639
  }
1640
 
 
 
 
 
 
 
1641
  $tf = get_option( 'time_format' );
1642
- //$tf = str_replace( ' ', '&nbsp;', get_option( 'time_format' ) );
1643
  $df = get_option( 'date_format' );
1644
- $ret = $df . ', ' . $tf;
1645
 
1646
- return $ret;
1647
  }
1648
 
1649
  function cerber_is_ampm() {
@@ -1915,6 +1943,9 @@ function cerber_detect_browser( $ua ) {
1915
  elseif ( 0 === strpos( $ua, 'python-requests' ) ) {
1916
  $ret = 'Python Script';
1917
  }
 
 
 
1918
  else {
1919
  $ret = __( 'Unknown', 'wp-cerber' );
1920
  }
@@ -1954,20 +1985,6 @@ function cerber_is_crawler( $ua ) {
1954
  return 0;
1955
  }
1956
 
1957
- // TODO: remove this and other non-MySQLi stuff
1958
- function cerber_db_use_mysqli() {
1959
- static $mysqli;
1960
-
1961
- return true; // @since 8.6.1 Only MySQLi is supported
1962
-
1963
- if ( $mysqli === null ) {
1964
- $db = cerber_get_db();
1965
- $mysqli = $db->use_mysqli;
1966
- }
1967
-
1968
- return $mysqli;
1969
- }
1970
-
1971
  /**
1972
  * Natively escape a string for use in an SQL statement
1973
  * The reason: https://make.wordpress.org/core/2017/10/31/changed-behaviour-of-esc_sql-in-wordpress-4-8-3/
@@ -1981,7 +1998,7 @@ function cerber_real_escape( $str ) {
1981
 
1982
  $str = (string) $str;
1983
 
1984
- if ( empty( $str ) ) { // @since 8.4.1
1985
  if ( $str === '0' ) {
1986
  return '0';
1987
  }
@@ -1989,16 +2006,11 @@ function cerber_real_escape( $str ) {
1989
  return '';
1990
  }
1991
 
1992
- $db = cerber_get_db();
1993
-
1994
- if ( cerber_db_use_mysqli() ) {
1995
- $escaped = mysqli_real_escape_string( $db->dbh, $str );
1996
- }
1997
- else {
1998
- $escaped = mysql_real_escape_string( $str, $db->dbh );
1999
  }
2000
 
2001
- return $escaped;
2002
  }
2003
 
2004
  function cerber_db_get_errors( $erase = false ) {
@@ -2033,24 +2045,19 @@ function cerber_db_query( $query ) {
2033
 
2034
  $db = cerber_get_db();
2035
 
2036
- if ( ! $db ) {
2037
- $cerber_db_errors[] = 'DB ERROR: No active DB handler';
 
 
 
2038
 
2039
  return false;
2040
  }
2041
 
2042
- if ( cerber_db_use_mysqli() ) {
2043
- //$ret = mysqli_query( $db->dbh, $query, MYSQLI_USE_RESULT );
2044
- $ret = mysqli_query( $db->dbh, $query );
2045
- if ( ! $ret ) {
2046
- $cerber_db_errors[] = mysqli_error( $db->dbh ) . ' for the query: ' . $query;
2047
- }
2048
- }
2049
- else {
2050
- $ret = mysql_query( $query, $db->dbh ); // For compatibility reason only
2051
- if ( ! $ret ) {
2052
- $cerber_db_errors[] = mysql_error( $db->dbh ) . ' for the query: ' . $query; // For compatibility reason only
2053
- }
2054
  }
2055
 
2056
  return $ret;
@@ -2058,140 +2065,89 @@ function cerber_db_query( $query ) {
2058
 
2059
  function cerber_db_get_results( $query, $type = MYSQLI_ASSOC ) {
2060
 
 
 
 
 
2061
  $ret = array();
2062
 
2063
- if ( $result = cerber_db_query( $query ) ) {
2064
- if ( cerber_db_use_mysqli() ) {
2065
- switch ( $type ) {
2066
- case MYSQLI_ASSOC:
2067
- while ( $row = mysqli_fetch_assoc( $result ) ) {
2068
- $ret[] = $row;
2069
- }
2070
- //$ret = mysqli_fetch_all( $result, $type ); // Requires mysqlnd driver
2071
- break;
2072
- case MYSQL_FETCH_OBJECT:
2073
- while ( $row = mysqli_fetch_object( $result ) ) {
2074
- $ret[] = $row;
2075
- }
2076
- break;
2077
- case MYSQL_FETCH_OBJECT_K:
2078
- while ( $row = mysqli_fetch_object( $result ) ) {
2079
- $vars = get_object_vars( $row );
2080
- $key = array_shift( $vars );
2081
- $ret[ $key ] = $row;
2082
- }
2083
- break;
2084
- default:
2085
- while ( $row = mysqli_fetch_row( $result ) ) {
2086
- $ret[] = $row;
2087
- }
2088
  }
2089
-
2090
- mysqli_free_result( $result );
2091
- }
2092
- else {
2093
- switch ( $type ) {
2094
- case MYSQL_ASSOC:
2095
- while ( $row = mysql_fetch_assoc( $result ) ) { // For compatibility reason only
2096
- $ret[] = $row;
2097
- }
2098
- break;
2099
- case MYSQL_FETCH_OBJECT:
2100
- while ( $row = mysql_fetch_object( $result ) ) {
2101
- $ret[] = $row;
2102
- }
2103
- break;
2104
- case MYSQL_FETCH_OBJECT_K:
2105
- while ( $row = mysql_fetch_object( $result ) ) {
2106
- $vars = get_object_vars( $row );
2107
- $key = array_shift( $vars );
2108
- $ret[ $key ] = $row;
2109
- }
2110
- break;
2111
- default:
2112
- while ( $row = mysql_fetch_row( $result ) ) {
2113
- $ret[] = $row;
2114
- }
2115
-
2116
  }
2117
-
2118
- mysql_free_result( $result ); // For compatibility reason only
2119
- }
2120
  }
2121
 
 
 
2122
  return $ret;
2123
  }
2124
 
2125
  function cerber_db_get_row( $query, $type = MYSQLI_ASSOC ) {
2126
 
2127
- if ( $result = cerber_db_query( $query ) ) {
2128
- if ( cerber_db_use_mysqli() ) {
2129
- if ( $type == MYSQL_FETCH_OBJECT ) {
2130
- $ret = $result->fetch_object();
2131
- }
2132
- else {
2133
- $ret = $result->fetch_array( $type );
2134
- }
2135
- $result->free();
2136
- }
2137
- else {
2138
- if ( $type == MYSQL_FETCH_OBJECT ) {
2139
- $ret = mysql_fetch_object( $result ); // For compatibility reason only
2140
- }
2141
- else {
2142
- $ret = mysql_fetch_array( $result, MYSQL_ASSOC ); // For compatibility reason only
2143
- }
2144
- mysql_free_result( $result ); // For compatibility reason only
2145
- }
2146
  }
2147
  else {
2148
- $ret = false;
2149
  }
2150
 
 
 
2151
  return $ret;
2152
  }
2153
 
2154
  function cerber_db_get_col( $query ) {
2155
 
 
 
 
 
2156
  $ret = array();
2157
 
2158
- if ( $result = cerber_db_query( $query ) ) {
2159
- if ( cerber_db_use_mysqli() ) {
2160
- while ( $row = $result->fetch_row() ) {
2161
- $ret[] = $row[0];
2162
- }
2163
- $result->free();
2164
- }
2165
- else {
2166
- while ( $row = mysql_fetch_row( $result ) ) { // For compatibility reason only
2167
- $ret[] = $row[0];
2168
- }
2169
- mysql_free_result( $result ); // For compatibility reason only
2170
- }
2171
- }
2172
- else {
2173
- $ret = false;
2174
  }
2175
 
 
 
2176
  return $ret;
2177
  }
2178
 
2179
  function cerber_db_get_var( $query ) {
2180
 
2181
- if ( $result = cerber_db_query( $query ) ) {
2182
- if ( cerber_db_use_mysqli() ) {
2183
- //$r = $result->fetch_row();
2184
- $r = mysqli_fetch_row( $result );
2185
- $result->free();
2186
- }
2187
- else {
2188
- $r = mysql_fetch_row( $result ); // For compatibility reason only
2189
- mysql_free_result( $result ); // For compatibility reason only
2190
- }
2191
 
2192
- if ( $r ) {
2193
- return $r[0];
2194
- }
 
 
 
2195
  }
2196
 
2197
  return false;
@@ -2212,12 +2168,16 @@ function cerber_get_db() {
2212
  $cerber_db_errors = array();
2213
  }
2214
 
2215
- //if ( ! isset( $db ) || ! is_object( $db ) ) {
2216
- if ( ! isset( $db ) || empty( $db->dbh ) ) {
2217
- // Check for connected DB handler
2218
- if ( ! is_object( $wpdb ) || empty( $wpdb->dbh ) ) {
 
 
 
2219
  if ( ! $db = cerber_db_connect() ) {
2220
  $cerber_db_errors[] = 'Unable to connect to the DB';
 
2221
  return false;
2222
  }
2223
  }
@@ -2248,8 +2208,14 @@ function cerber_db_connect() {
2248
  if ( ! defined( 'CRB_ABSPATH' ) ) {
2249
  define( 'CRB_ABSPATH', cerber_dirname( __FILE__, 4 ) );
2250
  }
 
2251
  $db_class = CRB_ABSPATH . '/' . WPINC . '/wp-db.php';
 
2252
  $wp_config = CRB_ABSPATH . '/wp-config.php';
 
 
 
 
2253
  if ( file_exists( $db_class ) && $config = file_get_contents( $wp_config ) ) {
2254
  $config = str_replace( '<?php', '', $config );
2255
  $config = str_replace( '?>', '', $config );
@@ -2462,7 +2428,7 @@ function cerber_set_groove( $expire ) {
2462
  cerber_set_cookie( 'cerber_groove', md5( cerber_get_groove() ), $expire + 1 );
2463
 
2464
  $groove_x = cerber_get_groove_x();
2465
- cerber_set_cookie( 'cerber_groove_x_'.$groove_x[0], $groove_x[1], $expire + 1 );
2466
  }
2467
  }
2468
 
@@ -2539,7 +2505,7 @@ function cerber_get_cookie_path(){
2539
  return '/';
2540
  }
2541
 
2542
- function cerber_set_cookie( $name, $value, $expire = 0, $path = "", $domain = "", $secure = false, $httponly = false ) {
2543
  if ( cerber_is_wp_cron() ) {
2544
  return;
2545
  }
@@ -2550,7 +2516,16 @@ function cerber_set_cookie( $name, $value, $expire = 0, $path = "", $domain = ""
2550
  $expire = absint( $expire );
2551
  $expire = ( $expire > 43009401600 ) ? 43009401600 : $expire;
2552
 
2553
- setcookie( cerber_get_cookie_prefix() . $name, $value, $expire, $path, $domain, $secure, $httponly );
 
 
 
 
 
 
 
 
 
2554
  }
2555
 
2556
  /**
@@ -3000,28 +2975,38 @@ function crb_getallheaders() {
3000
  return $headers;
3001
  }
3002
 
 
 
 
 
 
3003
 
3004
  /**
3005
  * Write message to the diagnostic log
3006
  *
3007
  * @param string|array $msg
3008
  * @param string $source
 
3009
  *
3010
  * @return bool|int
3011
  */
3012
- function cerber_diag_log( $msg, $source = '' ) {
3013
  if ( ! $msg || ! $log = @fopen( cerber_get_diag_log(), 'a' ) ) {
3014
  return false;
3015
  }
3016
  if ( $source ) {
3017
  $source = '[' . $source . ']';
3018
  }
 
 
 
3019
  if ( ! is_array( $msg ) ) {
3020
  $msg = array( $msg );
3021
  }
 
3022
  foreach ( $msg as $line ) {
3023
  //$ret = @fwrite( $log, '[' .cerber_get_remote_ip(). '][' . cerber_date( time() ) . ']' . $source . ' ' . $line . PHP_EOL );
3024
- $ret = @fwrite( $log, '[' . cerber_date( time() ) . ']' . $source . ' ' . $line . PHP_EOL );
3025
  }
3026
 
3027
  @fclose( $log );
@@ -3290,6 +3275,31 @@ function crb_insert_with_markers( $filename, $marker, $insertion ) {
3290
  return (bool) $bytes;
3291
  }
3292
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3293
  function crb_file_headers( $fname ) {
3294
  $fname = rawurlencode( $fname ); // encode non-ASCII symbols
3295
  @ob_clean(); // This trick is crucial for some servers/environments (e.g. some IIS)
47
  * @since 6.0
48
  *
49
  */
50
+ function cerber_get_wp_scripts() {
51
+ return array_map( function ( $e ) {
52
  return '/' . $e;
53
  }, array( WP_LOGIN_SCRIPT, WP_REG_URI, WP_XMLRPC_SCRIPT, WP_TRACKBACK_SCRIPT, WP_PING_SCRIPT, WP_SIGNUP_SCRIPT, WP_COMMENT_SCRIPT ) );
 
54
  }
55
 
56
  /**
117
  $link_base = rtrim( $base, '/' ) . '/admin.php?page=';
118
  }
119
 
 
120
  $link = $link_base . $page;
121
 
122
  if ( $tab ) {
124
  }
125
 
126
  if ( $args ) {
 
127
  foreach ( $args as $arg => $value ) {
128
  $link .= '&amp;' . $arg . '=' . urlencode( $value );
129
  }
1028
  }*/
1029
 
1030
  function cerber_is_rest_permitted() {
1031
+ global $cerber_req_status;
1032
+
1033
  $opt = crb_get_settings();
1034
 
1035
  if ( ! empty( $opt['norestuser'] ) ) {
1057
  $namespace = substr( $rest_path, 0, strpos( $rest_path, '/' ) );
1058
  foreach ( $opt['restwhite'] as $exception ) {
1059
  if ( $exception == $namespace ) {
1060
+ $cerber_req_status = 503;
1061
  return true;
1062
  }
1063
  }
1325
  // User actions
1326
  $act[1] = __( 'User created', 'wp-cerber' );
1327
  $act[2] = __( 'User registered', 'wp-cerber' );
1328
+ $act[3] = __( 'User deleted', 'wp-cerber' );
1329
  $act[5] = __( 'Logged in', 'wp-cerber' );
1330
  $act[6] = __( 'Logged out', 'wp-cerber' );
1331
  $act[7] = __( 'Login failed', 'wp-cerber' );
1409
  $sts[28] = __( 'Initiated by the user', 'wp-cerber' );
1410
 
1411
  $sts[30] = 'Username is prohibited';
1412
+ $sts[31] = __( 'Email address is prohibited', 'wp-cerber' );
1413
  $sts[32] = 'User role is prohibited';
1414
  $sts[33] = __( 'Permission denied', 'wp-cerber' );
1415
  $sts[34] = 'Unauthorized access denied';
1416
  $sts[35] = __( 'Invalid user', 'wp-cerber' );
1417
  $sts[36] = __( 'Incorrect password', 'wp-cerber' );
1418
 
1419
+ // @since 8.6.4
1420
+ $sts[500] = __( 'IP whitelisted', 'wp-cerber' );
1421
+ $sts[501] = 'URL whitelisted';
1422
+ $sts[502] = 'Query whitelisted';
1423
+ $sts[503] = 'Namespace whitelisted';
1424
+
1425
  cerber_cache_set( 'labels', $labels );
1426
  }
1427
 
1620
  * Format date according to user settings and timezone
1621
  *
1622
  * @param $timestamp int Unix timestamp
1623
+ * @param $purify boolean If true adds html to have a better look on a web page
1624
  *
1625
  * @return string
1626
  */
1627
+ function cerber_date( $timestamp, $purify = true ) {
1628
  static $gmt_offset;
1629
 
1630
+ if ( $gmt_offset === null ) {
1631
  $gmt_offset = get_option( 'gmt_offset' ) * 3600;
1632
  }
1633
 
1634
+ $timestamp = $gmt_offset + absint( $timestamp );
1635
+
1636
+ // @since 8.6.4: snippet is taken from new date_i18n()
1637
+ if ( function_exists( 'wp_date' ) ) { // wp_date() introduced in WP 5.3
1638
+ $local_time = gmdate( 'Y-m-d H:i:s', $timestamp );
1639
+ $timezone = wp_timezone();
1640
+ $datetime = date_create( $local_time, $timezone );
1641
+ $date = wp_date( cerber_get_dt_format(), $datetime->getTimestamp(), $timezone );
1642
+ }
1643
+ else { // Older WP
1644
+ $date = date_i18n( cerber_get_dt_format(), $timestamp );
1645
+ }
1646
+
1647
+ if ( $purify ) {
1648
+ $date = str_replace( array( ',', ' am', ' pm', ' AM', ' PM' ), array( ',<wbr>', '&nbsp;am', '&nbsp;pm', '&nbsp;AM', '&nbsp;PM' ), $date );
1649
+ }
1650
+
1651
+ return $date;
1652
  }
1653
 
1654
  function cerber_get_dt_format() {
1662
  return $ret;
1663
  }
1664
 
1665
+ $ret = crb_get_default_dt_format();
1666
+ return $ret;
1667
+
1668
+ }
1669
+
1670
+ function crb_get_default_dt_format() {
1671
  $tf = get_option( 'time_format' );
 
1672
  $df = get_option( 'date_format' );
 
1673
 
1674
+ return $df . ', ' . $tf;
1675
  }
1676
 
1677
  function cerber_is_ampm() {
1943
  elseif ( 0 === strpos( $ua, 'python-requests' ) ) {
1944
  $ret = 'Python Script';
1945
  }
1946
+ elseif ( 0 === strpos( $ua, 'ApacheBench' ) ) {
1947
+ $ret = $ua;
1948
+ }
1949
  else {
1950
  $ret = __( 'Unknown', 'wp-cerber' );
1951
  }
1985
  return 0;
1986
  }
1987
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1988
  /**
1989
  * Natively escape a string for use in an SQL statement
1990
  * The reason: https://make.wordpress.org/core/2017/10/31/changed-behaviour-of-esc_sql-in-wordpress-4-8-3/
1998
 
1999
  $str = (string) $str;
2000
 
2001
+ if ( empty( $str ) ) {
2002
  if ( $str === '0' ) {
2003
  return '0';
2004
  }
2006
  return '';
2007
  }
2008
 
2009
+ if ( $db = cerber_get_db() ) {
2010
+ return mysqli_real_escape_string( $db->dbh, $str );
 
 
 
 
 
2011
  }
2012
 
2013
+ return '';
2014
  }
2015
 
2016
  function cerber_db_get_errors( $erase = false ) {
2045
 
2046
  $db = cerber_get_db();
2047
 
2048
+ if ( ! $db
2049
+ || empty( $db->dbh )
2050
+ || ! ( $db->dbh instanceof MySQLi ) ) {
2051
+
2052
+ $cerber_db_errors[] = 'No active DB handler. Query: ' . $query;
2053
 
2054
  return false;
2055
  }
2056
 
2057
+ //$ret = mysqli_query( $db->dbh, $query, MYSQLI_USE_RESULT );
2058
+ if ( ! $ret = mysqli_query( $db->dbh, $query ) ) {
2059
+ $err = mysqli_error( $db->dbh ) . '. Query: ' . $query;
2060
+ $cerber_db_errors[] = $err;
 
 
 
 
 
 
 
 
2061
  }
2062
 
2063
  return $ret;
2065
 
2066
  function cerber_db_get_results( $query, $type = MYSQLI_ASSOC ) {
2067
 
2068
+ if ( ! $result = cerber_db_query( $query ) ) {
2069
+ return array();
2070
+ }
2071
+
2072
  $ret = array();
2073
 
2074
+ switch ( $type ) {
2075
+ case MYSQLI_ASSOC:
2076
+ while ( $row = mysqli_fetch_assoc( $result ) ) {
2077
+ $ret[] = $row;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2078
  }
2079
+ //$ret = mysqli_fetch_all( $result, $type ); // Requires mysqlnd driver
2080
+ break;
2081
+ case MYSQL_FETCH_OBJECT:
2082
+ while ( $row = mysqli_fetch_object( $result ) ) {
2083
+ $ret[] = $row;
2084
+ }
2085
+ break;
2086
+ case MYSQL_FETCH_OBJECT_K:
2087
+ while ( $row = mysqli_fetch_object( $result ) ) {
2088
+ $vars = get_object_vars( $row );
2089
+ $key = array_shift( $vars );
2090
+ $ret[ $key ] = $row;
2091
+ }
2092
+ break;
2093
+ default:
2094
+ while ( $row = mysqli_fetch_row( $result ) ) {
2095
+ $ret[] = $row;
 
 
 
 
 
 
 
 
 
 
2096
  }
 
 
 
2097
  }
2098
 
2099
+ mysqli_free_result( $result );
2100
+
2101
  return $ret;
2102
  }
2103
 
2104
  function cerber_db_get_row( $query, $type = MYSQLI_ASSOC ) {
2105
 
2106
+ if ( ! $result = cerber_db_query( $query ) ) {
2107
+ return false;
2108
+ }
2109
+
2110
+ if ( $type == MYSQL_FETCH_OBJECT ) {
2111
+ $ret = $result->fetch_object();
 
 
 
 
 
 
 
 
 
 
 
 
 
2112
  }
2113
  else {
2114
+ $ret = $result->fetch_array( $type );
2115
  }
2116
 
2117
+ $result->free();
2118
+
2119
  return $ret;
2120
  }
2121
 
2122
  function cerber_db_get_col( $query ) {
2123
 
2124
+ if ( ! $result = cerber_db_query( $query ) ) {
2125
+ return array();
2126
+ }
2127
+
2128
  $ret = array();
2129
 
2130
+ while ( $row = $result->fetch_row() ) {
2131
+ $ret[] = $row[0];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2132
  }
2133
 
2134
+ $result->free();
2135
+
2136
  return $ret;
2137
  }
2138
 
2139
  function cerber_db_get_var( $query ) {
2140
 
2141
+ if ( ! $result = cerber_db_query( $query ) ) {
2142
+ return false;
2143
+ }
 
 
 
 
 
 
 
2144
 
2145
+ //$r = $result->fetch_row();
2146
+ $r = mysqli_fetch_row( $result );
2147
+ $result->free();
2148
+
2149
+ if ( $r ) {
2150
+ return $r[0];
2151
  }
2152
 
2153
  return false;
2168
  $cerber_db_errors = array();
2169
  }
2170
 
2171
+ if ( empty( $db )
2172
+ || empty( $db->dbh )
2173
+ || ! ( $db->dbh instanceof MySQLi ) ) {
2174
+
2175
+ if ( ! is_object( $wpdb )
2176
+ || empty( $wpdb->dbh )
2177
+ || ! ( $wpdb->dbh instanceof MySQLi ) ) {
2178
  if ( ! $db = cerber_db_connect() ) {
2179
  $cerber_db_errors[] = 'Unable to connect to the DB';
2180
+
2181
  return false;
2182
  }
2183
  }
2208
  if ( ! defined( 'CRB_ABSPATH' ) ) {
2209
  define( 'CRB_ABSPATH', cerber_dirname( __FILE__, 4 ) );
2210
  }
2211
+
2212
  $db_class = CRB_ABSPATH . '/' . WPINC . '/wp-db.php';
2213
+
2214
  $wp_config = CRB_ABSPATH . '/wp-config.php';
2215
+ if ( ! file_exists( $wp_config ) ) {
2216
+ $wp_config = dirname( CRB_ABSPATH ) . '/wp-config.php';
2217
+ }
2218
+
2219
  if ( file_exists( $db_class ) && $config = file_get_contents( $wp_config ) ) {
2220
  $config = str_replace( '<?php', '', $config );
2221
  $config = str_replace( '?>', '', $config );
2428
  cerber_set_cookie( 'cerber_groove', md5( cerber_get_groove() ), $expire + 1 );
2429
 
2430
  $groove_x = cerber_get_groove_x();
2431
+ cerber_set_cookie( 'cerber_groove_x_' . $groove_x[0], $groove_x[1], $expire + 1 );
2432
  }
2433
  }
2434
 
2505
  return '/';
2506
  }
2507
 
2508
+ function cerber_set_cookie( $name, $value, $expire = 0, $path = "", $domain = "" ) {
2509
  if ( cerber_is_wp_cron() ) {
2510
  return;
2511
  }
2516
  $expire = absint( $expire );
2517
  $expire = ( $expire > 43009401600 ) ? 43009401600 : $expire;
2518
 
2519
+ setcookie( cerber_get_cookie_prefix() . $name, $value, $expire, $path, $domain, is_ssl(), false );
2520
+ // No rush here: PHP 7.3 only
2521
+ /*setcookie( cerber_get_cookie_prefix() . $name, $value, array(
2522
+ 'expires ' => $expire,
2523
+ 'path' => $path,
2524
+ 'domain' => $domain,
2525
+ 'secure' => is_ssl(),
2526
+ 'httponly' => false,
2527
+ 'samesite' => 'Strict',
2528
+ ) );*/
2529
  }
2530
 
2531
  /**
2975
  return $headers;
2976
  }
2977
 
2978
+ function cerber_error_log( $msg, $source = '' ) {
2979
+ //if ( crb_get_settings( 'log_errors' ) ) {
2980
+ cerber_diag_log( $msg, $source, true );
2981
+ //}
2982
+ }
2983
 
2984
  /**
2985
  * Write message to the diagnostic log
2986
  *
2987
  * @param string|array $msg
2988
  * @param string $source
2989
+ * @param bool $error
2990
  *
2991
  * @return bool|int
2992
  */
2993
+ function cerber_diag_log( $msg, $source = '', $error = false ) {
2994
  if ( ! $msg || ! $log = @fopen( cerber_get_diag_log(), 'a' ) ) {
2995
  return false;
2996
  }
2997
  if ( $source ) {
2998
  $source = '[' . $source . ']';
2999
  }
3000
+ if ( $error ) {
3001
+ $source .= ' ERROR: ';
3002
+ }
3003
  if ( ! is_array( $msg ) ) {
3004
  $msg = array( $msg );
3005
  }
3006
+
3007
  foreach ( $msg as $line ) {
3008
  //$ret = @fwrite( $log, '[' .cerber_get_remote_ip(). '][' . cerber_date( time() ) . ']' . $source . ' ' . $line . PHP_EOL );
3009
+ $ret = @fwrite( $log, '[' . cerber_date( time(), false ) . ']' . $source . ' ' . $line . PHP_EOL );
3010
  }
3011
 
3012
  @fclose( $log );
3275
  return (bool) $bytes;
3276
  }
3277
 
3278
+ /**
3279
+ * @return WP_Error|WP_Filesystem_Direct
3280
+ */
3281
+ function cerber_init_wp_filesystem() {
3282
+ global $wp_filesystem;
3283
+
3284
+ if ( $wp_filesystem instanceof WP_Filesystem_Direct ) { // @since 8.1.5
3285
+ return $wp_filesystem;
3286
+ }
3287
+
3288
+ require_once( ABSPATH . 'wp-admin/includes/file.php' );
3289
+
3290
+ add_filter( 'filesystem_method', '__ret_direct' );
3291
+ if ( ! WP_Filesystem() ) {
3292
+ return new WP_Error( 'cerber-file', 'Unable to init WP_Filesystem' );
3293
+ }
3294
+ remove_filter( 'filesystem_method', '__ret_direct' );
3295
+
3296
+ return $wp_filesystem;
3297
+ }
3298
+
3299
+ function __ret_direct() {
3300
+ return 'direct';
3301
+ }
3302
+
3303
  function crb_file_headers( $fname ) {
3304
  $fname = rawurlencode( $fname ); // encode non-ASCII symbols
3305
  @ob_clean(); // This trick is crucial for some servers/environments (e.g. some IIS)
dashboard.php CHANGED
@@ -157,9 +157,9 @@ function cerber_show_lockouts( $args = array(), $echo = true ) {
157
  //$wp_cerber->deleteGarbage();
158
 
159
  $per_page = ( ! empty( $args['per_page'] ) ) ? $args['per_page'] : crb_admin_get_per_page();
160
- $limit = ( cerber_get_pn() - 1 ) * $per_page . ',' . $per_page;
161
 
162
- if ( $rows = cerber_db_get_results( 'SELECT * FROM ' . CERBER_BLOCKS_TABLE . ' ORDER BY block_until DESC LIMIT ' . $limit, MYSQL_FETCH_OBJECT ) ) {
163
 
164
  $total = cerber_blocked_num();
165
  $list = array();
@@ -192,7 +192,7 @@ function cerber_show_lockouts( $args = array(), $echo = true ) {
192
  }
193
 
194
  $heading = array(
195
- __( 'IP', 'wp-cerber' ),
196
  __( 'Hostname', 'wp-cerber' ),
197
  __( 'Country', 'wp-cerber' ),
198
  __( 'Expires', 'wp-cerber' ),
@@ -317,9 +317,9 @@ function cerber_acl_get_table( $tag, $acl_slice = 0 ) {
317
  . $ret . '</div>
318
  <form action="" method="post">
319
  <table>
320
- <tr><td><input class="code" type="text" name="add_acl" required maxlength="100" placeholder="' . __( 'IP address, range, wildcard, or CIDR', 'wp-cerber' ) . '">
321
  </td><td><input type="submit" class="button button-primary" value="' . __( 'Add Entry', 'wp-cerber' ) . '" ></td></tr>
322
- <tr><td><input class="code" type="text" name="add_acl_comment" maxlength="250" placeholder="' . __( 'Optional comment for this entry', 'wp-cerber' ) . '">
323
  </td><td></td></tr>
324
  </table>
325
  <input type="hidden" name="cerber_admin_do" value="add2acl">
@@ -446,6 +446,13 @@ function cerber_admin_ajax() {
446
  delete_site_option( 'cerber_admin_info' );
447
  }
448
  }
 
 
 
 
 
 
 
449
  elseif ( $admin && ( $usearch = crb_array_get( $request, 'user_search' ) ) ) {
450
  $users = get_users( array( 'search' => '*' . esc_attr( $usearch ) . '*', ) );
451
  $response = array();
@@ -520,7 +527,6 @@ function cerber_get_ip_info( $ip, $cache_only = false ) {
520
  /*
521
  Admin dashboard actions
522
  */
523
- //add_action('admin_init','cerber_admin_request');
524
  add_action( 'wp_loaded', function () { // 'wp_loaded' @since 5.6
525
  if ( ! is_admin() ) {
526
  return;
@@ -528,7 +534,7 @@ add_action( 'wp_loaded', function () { // 'wp_loaded' @since 5.6
528
 
529
  cerber_admin_request();
530
 
531
- } );
532
  /**
533
  * @param bool $is_post
534
  *
@@ -673,13 +679,13 @@ function cerber_admin_request( $is_post = false ) {
673
  }
674
  elseif ( isset( $_GET['force_check_nodes'] ) ) {
675
  $best = lab_check_nodes( true );
676
- cerber_admin_message( 'Cerber Lab\'s nodes has been checked. The closest node: ' . $best );
677
  cerber_safe_redirect( 'force_check_nodes' );
678
  }
679
- elseif ( isset( $_GET['clean_up_the_cache'] ) ) {
680
  lab_cleanup_cache();
681
- cerber_admin_message( 'The cache has been cleaned up' );
682
- cerber_safe_redirect( 'clean_up_the_cache' );
683
  }
684
  }
685
 
@@ -856,6 +862,23 @@ function cerber_export_activity( $params = array() ) {
856
 
857
  $placeholder = array( 0, '', '', '', '' );
858
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
859
  $i = 0;
860
 
861
  do {
@@ -872,7 +895,7 @@ function cerber_export_activity( $params = array() ) {
872
  }
873
 
874
  $values[] = $row->ip;
875
- $values[] = cerber_date( $row->stamp );
876
  $values[] = $labels[ $row->activity ];
877
  $s = $details[0];
878
  $values[] = ( isset( $status[ $s ] ) ) ? $status[ $s ] : '';
@@ -903,15 +926,11 @@ function cerber_send_csv_header( $f_name, $total, $heading = array(), $info = ar
903
 
904
  $fname = $f_name . '.csv';
905
 
906
- //$fname = rawurlencode( $f_name ) . '.csv'; // encode non-ASCII symbols
907
- //@ob_clean(); // This trick is crucial for some servers/environments (IIS)
908
- //header( "Content-Type: application/octet-stream" );
909
- //header( "Content-Disposition: attachment; filename*=UTF-8''{$fname}" );
910
  crb_file_headers( $fname );
911
 
912
  $info[] = '"Generated by:","WP Cerber Security ' . CERBER_VER . '"';
913
  $info[] = '"Website:","' . get_option( 'blogname' ) . '"';
914
- $info[] = '"Date:","' . cerber_date( time() ) . '"';
915
  $info[] = '"Rows in this file:","' . $total . '"';
916
 
917
  echo implode( "\r\n", $info ) . "\r\n\r\n";
@@ -961,6 +980,7 @@ function crb_admin_quick_nav( $context = '' ) {
961
  $links[] = array( $ac . '&amp;filter_user=0', __( 'Not logged in visitors', 'wp-cerber' ) );
962
  if ( ! $context ) {
963
  $links[] = array( $ac . '&amp;filter_user=' . get_current_user_id(), __( 'My activity', 'wp-cerber' ) );
 
964
  }
965
 
966
  $ret = '';
@@ -1023,7 +1043,7 @@ function cerber_show_activity( $args = array(), $echo = true ) {
1023
  if ( empty( $args['no_details'] ) && $row->details ) {
1024
  $details = explode( '|', $row->details );
1025
  if ( ! empty( $details[0] ) && isset( $status_labels[ $details[0] ] ) ) {
1026
- $activity .= ' <span class = "act-details">' . $status_labels[ $details[0] ] . '</span>';
1027
  }
1028
  //elseif ($row->activity == 50 && $details[4]) $activity .= ' '.$details[4];
1029
 
@@ -1124,31 +1144,6 @@ function cerber_show_activity( $args = array(), $echo = true ) {
1124
 
1125
  $display = ( $sid || $in_url ) ? '' : 'display: none;';
1126
 
1127
- /*$filters = '<form action="">'
1128
- . crb_get_activity_dd()
1129
- . cerber_select( 'filter_user', ( $user_id ) ? array( $user_id => $sname ) : array(), $user_id, 'crb-select2-ajax', '', false, esc_html__( 'Filter by registered user', 'wp-cerber' ), array( 'min_symbols' => 3 ) )
1130
- . '<input type="text" value="' . $search . '" name="search_activity" placeholder="' . esc_html__( 'Search for IP or username', 'wp-cerber' ) . '">
1131
- <!-- <input type="submit" value="' . __( 'Filter', 'wp-cerber' ) . '" class="button button-secondary"> -->
1132
- <button type="submit" class="cerber-button button button-primary">
1133
- ' . __( 'Filter', 'wp-cerber' ) . '
1134
- </button>
1135
-
1136
- <a href="#" class="crb-opener" data-target="extra-activity-filter">More</a>
1137
-
1138
- <div id="extra-activity-filter" style="' . $display . '">
1139
- <input type="text" value="'.$sid.'" name="filter_sid" placeholder="' . esc_html__( 'Session ID', 'wp-cerber' ) . '">
1140
- <input type="text" value="'.$in_url.'" name="search_url" placeholder="' . esc_html__( 'Search in URL', 'wp-cerber' ) . '">
1141
- </div>
1142
-
1143
- <!-- Preserve values -->
1144
- <input type="hidden" name="filter_ip" value="' . htmlspecialchars( $filter_ip ) . '" >
1145
- <input type="hidden" name="filter_login" value="' . $filter_login . '" >
1146
-
1147
- <input type="hidden" name="page" value="cerber-security" >
1148
- <input type="hidden" name="tab" value="activity">
1149
- </form>';*/
1150
-
1151
-
1152
  $filters = '<form action=""><div id="crb-activity-fields"><div>'
1153
 
1154
  . crb_get_activity_dd()
@@ -1169,7 +1164,7 @@ function cerber_show_activity( $args = array(), $echo = true ) {
1169
  </div>
1170
 
1171
  <div class="crb-act-controls">
1172
- [ <a href="#" class="crb-opener" data-target="crb-more-activity-fields">More</a> ]
1173
  </div>
1174
 
1175
  </div>
@@ -1325,7 +1320,7 @@ function cerber_activity_query( $args = array() ) {
1325
  $ret[1] = $per_page;
1326
 
1327
  if ( $per_page ) {
1328
- $limit = ' LIMIT ' . ( cerber_get_pn() - 1 ) * $per_page . ',' . $per_page;
1329
  $ret[0] = 'SELECT SQL_CALC_FOUND_ROWS * FROM ' . CERBER_LOG_TABLE . " log {$where} ORDER BY stamp DESC {$limit}";
1330
  }
1331
  else {
@@ -2393,7 +2388,7 @@ function cerber_show_aside( $page ) {
2393
 
2394
  $aside = array();
2395
 
2396
- if ( in_array( $page, array( 'main' ) ) ) {
2397
  $aside[] = '<div class="crb-box">
2398
  <h3>' . __( 'Confused about some settings?', 'wp-cerber' ) . '</h3>'
2399
  . __( 'You can easily load default recommended settings using button below', 'wp-cerber' ) . '
@@ -2409,7 +2404,7 @@ function cerber_show_aside( $page ) {
2409
  <p><i>* ' . __( "doesn't affect Custom login URL and Access Lists", 'wp-cerber' ) . '</i></p>
2410
  <p style="text-align: center; font-size: 110%;"><a href="https://wpcerber.com/getting-started/" target="_blank">' . __( 'Getting Started Guide', 'wp-cerber' ) . '</a></p>
2411
  </div>';
2412
- }
2413
  /*
2414
  $aside[] = '<div class="crb-box" id = "crb-subscribe">
2415
  <div class="crb-box-inner">
@@ -2619,14 +2614,14 @@ function crb_admin_alerts_do( $mode = 'on', $hash = null ) {
2619
  }
2620
  }
2621
 
2622
- // Unsubscribe with hash with no admin nonce
2623
- add_action( 'admin_init', function () {
2624
  if ( $hash = cerber_get_get( 'unsubscribeme', '[a-z\d]+' ) ) {
2625
  crb_admin_alerts_do( 'off', $hash );
2626
  wp_safe_redirect( remove_query_arg( 'unsubscribeme' ) );
2627
  exit;
2628
  }
2629
- } );
2630
 
2631
  /*
2632
  Pagination
@@ -2636,15 +2631,15 @@ function cerber_page_navi( $total, $per_page ) {
2636
  if ( ! $per_page ) {
2637
  $per_page = 25;
2638
  }
2639
- $page = cerber_get_pn();
2640
 
2641
  $base_url = esc_url( remove_query_arg( 'pagen', add_query_arg( crb_get_query_params(), cerber_admin_link() ) ) );
2642
 
2643
  $last_page = ceil( $total / $per_page );
2644
- $ret = '';
2645
  if ( $last_page > 1 ) {
2646
  $start = 1 + $max_links * intval( ( $page - 1 ) / $max_links );
2647
- $end = $start + $max_links - 1;
2648
  if ( $end > $last_page ) {
2649
  $end = $last_page;
2650
  }
@@ -2674,6 +2669,10 @@ function cerber_get_pn() {
2674
  return ( ! $q->pagen ) ? 1 : absint( $q->pagen );
2675
  }
2676
 
 
 
 
 
2677
  /*
2678
  Plugins screen links
2679
  */
@@ -2746,11 +2745,16 @@ function cerber_admin_assets() {
2746
  wp_register_style( 'nexus_css', $crb_assets_url . 'nexus.css', null, CERBER_VER );
2747
  wp_enqueue_style( 'nexus_css' );
2748
 
 
 
 
2749
  add_thickbox();
2750
  }
2751
 
2752
  if ( ! defined( 'CERBER_BETA' ) ) {
2753
  wp_enqueue_script( 'cerber_js', $crb_assets_url . 'admin.js', array( 'jquery' ), CERBER_VER, true );
 
 
2754
  if ( cerber_is_admin_page( false, array( 'page' => 'cerber-integrity' ) ) ) {
2755
  wp_enqueue_script( 'cerber_scan', $crb_assets_url . 'scanner.js', array( 'jquery' ), CERBER_VER, true );
2756
  }
@@ -2952,6 +2956,7 @@ function cerber_admin_footer() {
2952
  ?>
2953
  <script type="text/javascript">
2954
  <?php readfile( dirname( __FILE__ ) . '/assets/admin.js' ); ?>
 
2955
  <?php readfile( dirname( __FILE__ ) . '/assets/scanner.js' ); ?>
2956
  </script>
2957
  <?php
@@ -3298,22 +3303,22 @@ function crb_admin_geo_selector( $rule_id, $rule, $class = '' ) {
3298
  switch ( $rule_id ) {
3299
  case 'geo_register':
3300
  if ( ! get_option( 'users_can_register' ) ) {
3301
- $note = 'Registration is disabled in the General Settings';
3302
  }
3303
  break;
3304
  case 'geo_restapi':
3305
  if ( $opt['norest'] ) {
3306
- $note = 'REST API is disabled in the Hardening settings of the plugin';
3307
  }
3308
  break;
3309
  case 'geo_xmlrpc':
3310
  if ( $opt['xmlrpc'] ) {
3311
- $note = 'XML-RPC is disabled in the Hardening settings of the plugin';
3312
  }
3313
  break;
3314
  }
3315
  if ( $note ) {
3316
- $note = '<p><span class="dashicons-before dashicons-warning"></span> Note: ' . $note . '</p>';
3317
  }
3318
 
3319
  return array(
@@ -3450,7 +3455,7 @@ function crb_admin_save_geo_rules( $post_fields = array() ) {
3450
  }
3451
  }
3452
 
3453
- if ( update_site_option( 'geo_rule_set', $geo ) ) {
3454
  cerber_admin_message( __( 'Security rules have been updated', 'wp-cerber' ) );
3455
  }
3456
  }
@@ -3569,6 +3574,23 @@ function cerber_export_traffic( $params = array() ) {
3569
  //$labels = cerber_get_labels( 'activity' );
3570
  //$status = cerber_get_labels( 'status' );
3571
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3572
  $i = 0;
3573
 
3574
  do {
@@ -3591,7 +3613,7 @@ function cerber_export_traffic( $params = array() ) {
3591
  $values[] = $row->stamp;*/
3592
 
3593
  $values[] = $row['ip'];
3594
- $values[] = cerber_date( $row['stamp'] );
3595
  $values[] = $row['request_method'];
3596
  $values[] = $row['uri'];
3597
  $values[] = $row['http_code'];
@@ -3790,7 +3812,7 @@ function cerber_show_traffic( $args = array(), $echo = true ) {
3790
 
3791
  $ad = explode( '|', $a->details );
3792
  if ( ! empty( $ad[0] ) ) {
3793
- $activity .= ' <span class = "act-details">' . $status_labels[ $ad[0] ] . '</span>';
3794
  }
3795
 
3796
  }
@@ -3805,7 +3827,10 @@ function cerber_show_traffic( $args = array(), $echo = true ) {
3805
  $processing = '';
3806
  }
3807
 
3808
- $wp_type = '<span class="crb-wp-type-' . $row->wp_type . '">' . cerber_get_wp_type( $row->wp_type ) . '</span>';
 
 
 
3809
 
3810
  $wp_obj = '';
3811
  if ( isset( $wp_objects[ $row->wp_id ] ) ) {
@@ -3817,7 +3842,7 @@ function cerber_show_traffic( $args = array(), $echo = true ) {
3817
  if ( $truncated ) {
3818
  $more_details[] = array(
3819
  'Full URL',
3820
- '<span class="code">' . $full_uri . '</span>'
3821
  );
3822
  }
3823
 
@@ -3834,14 +3859,14 @@ function cerber_show_traffic( $args = array(), $echo = true ) {
3834
  if ( ! empty( $details[2] ) ) {
3835
  $more_details[] = array(
3836
  'Referrer',
3837
- '<span class="code">' . htmlentities( urldecode( $details[2] ) ) . '</span>'
3838
  );
3839
  }
3840
 
3841
  if ( ! empty( $details[1] ) ) {
3842
  $more_details[] = array(
3843
  'User Agent',
3844
- '<span class="code">' . htmlentities( $details[1] ) . '</span>'
3845
  );
3846
  }
3847
 
@@ -3935,6 +3960,11 @@ function cerber_show_traffic( $args = array(), $echo = true ) {
3935
  }
3936
  }
3937
 
 
 
 
 
 
3938
  $request_details = '';
3939
  $more_link = '';
3940
  $toggle_class = '';
@@ -3952,7 +3982,7 @@ function cerber_show_traffic( $args = array(), $echo = true ) {
3952
  $toggle_class = 'crb-toggle';
3953
  }
3954
 
3955
- $request = '<b>' . $row_uri . '</b>' . '<p style="margin-top:1em;"><span class="crb-' . $row->request_method . '">' . $row->request_method . '</span> ' . $f . $wp_type . ' <span class="crb-' . $row->http_code . '"> HTTP ' . $row->http_code . ' ' . get_status_header_desc( $row->http_code ) . '</span> ' . $php_err . ' <span>' . $processing . '</span> ' . $more_link . ' ' . $activity . ' </p>' . $wp_obj;
3956
 
3957
  // Decorating this table can't be done via simple CSS
3958
  if ( ! empty( $even ) ) {
@@ -4019,6 +4049,9 @@ function cerber_show_traffic( $args = array(), $echo = true ) {
4019
  $filters[] = array( '&amp;filter_wp_type=520', 'REST API' );
4020
  $filters[] = array( '&amp;filter_wp_type=515', 'XML-RPC' );
4021
 
 
 
 
4022
  //$filters .= ' | <a href="'.$base_url.'&filter_wp_type >= 600&filter_method=POST">Form submissions</a>';
4023
 
4024
  if ( $threshold = crb_get_settings( 'tithreshold' ) ) {
@@ -4047,10 +4080,10 @@ function cerber_show_traffic( $args = array(), $echo = true ) {
4047
 
4048
  $refresh = '';
4049
  if ( crb_get_settings( 'timode' ) ) {
4050
- $refresh = ' &nbsp;&nbsp;<a href="" style="white-space: pre;"><span class="dashicons dashicons-update" style="vertical-align: middle; white-space: pre;"></span> ' . __( 'Refresh', 'wp-cerber' ) . '</a>';
4051
  }
4052
 
4053
- $top_bar = '<div id = "activity-filter"><div>' . $filter_links . $refresh . '</div><div>' . $right_links . '</div></div><br style="clear: both;">';
4054
 
4055
  $ret = '<div class="cerber-margin">' . $top_bar . crb_admin_traffic_search_form() . $info . '</div>' . $ret;
4056
  }
@@ -4089,7 +4122,7 @@ function cerber_table_view( $title, $fields, $sub_key = null ) {
4089
  $view = '<table class="' . $class . '">';
4090
 
4091
  if ( $title ) {
4092
- $view .= '<tr><td colspan="2" style="font-weight: bold;">' . $title . '</td></tr>';
4093
  }
4094
 
4095
  $i = 1;
@@ -4312,13 +4345,13 @@ function cerber_traffic_query( $args = array() ) {
4312
  }
4313
 
4314
  if ( $per_page ) {
4315
- $limit = ' LIMIT ' . ( cerber_get_pn() - 1 ) * $per_page . ',' . $per_page;
4316
  //$ret[0] = 'SELECT SQL_CALC_FOUND_ROWS log.session_id,log.* FROM ' . CERBER_TRAF_TABLE . " log USE INDEX FOR ORDER BY (stamp) {$where} ORDER BY stamp DESC {$limit}";
4317
- $ret[0] = 'SELECT log.session_id,'.$cols.' FROM ' . CERBER_TRAF_TABLE . " log {$join} {$where} ORDER BY log.stamp DESC {$limit}";
4318
  //$ret[0] = 'SELECT SQL_CALC_FOUND_ROWS log.*,act.activity FROM ' . CERBER_TRAF_TABLE . ' log USE INDEX FOR ORDER BY (stamp) LEFT JOIN '.CERBER_LOG_TABLE." act ON (log.session_id = act.session_id) {$where} ORDER BY log.stamp DESC {$limit}";
4319
  }
4320
  else {
4321
- $ret[0] = 'SELECT log.session_id,'.$cols.' FROM ' . CERBER_TRAF_TABLE . " log {$join} {$where} ORDER BY stamp DESC"; // "ORDER BY" is mandatory!
4322
  }
4323
 
4324
  $ret[1] = 'SELECT COUNT(log.stamp) FROM ' . CERBER_TRAF_TABLE . " log {$join} {$where}";
@@ -4394,7 +4427,7 @@ function crb_admin_traffic_search_form() {
4394
  <option value="1">Exclude</option>
4395
  </select></p>
4396
  <p><label for="filter-sid">RID</label>
4397
- <br/><input id="filter-sid" type="text" name="filter_sid"></p>
4398
  <p><label for="search-err">Software errors contain</label>
4399
  <br/><input id="search-err" type="text" name="search_traffic[errors]"></p>
4400
  <p class="crb-has-checkbox">
@@ -4572,9 +4605,9 @@ function cerber_get_admin_page_config( $page = '' ) {
4572
  $blocked = cerber_blocked_num();
4573
  $acl = cerber_db_get_var( 'SELECT count(ip) FROM ' . CERBER_ACL_TABLE . ' WHERE acl_slice = 0' );
4574
  $uss = cerber_db_get_var( 'SELECT count(user_id) FROM ' . cerber_get_db_prefix() . CERBER_USS_TABLE );
4575
- $tabs['sessions'][1] .= ' <sup class="loctotal">' . $uss . '</sup>';
4576
- $tabs['lockouts'][1] .= ' <sup class="loctotal">' . $blocked . '</sup>';
4577
- $tabs['acl'][1] .= ' <sup class="acltotal">' . $acl . '</sup>';
4578
 
4579
  return $tabs;
4580
  },
@@ -4693,7 +4726,23 @@ function cerber_get_admin_page_config( $page = '' ) {
4693
  'scan_policy' => array( 'bx-bolt', __( 'Cleaning up', 'wp-cerber' ) ),
4694
  'scan_ignore' => array( 'bx-hide', __( 'Ignore List', 'wp-cerber' ) ),
4695
  'scan_quarantine' => array( 'bx-trash', __( 'Quarantine', 'wp-cerber' ) ),
 
4696
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4697
  'callback' => function ( $tab ) {
4698
  switch ( $tab ) {
4699
  case 'scan_settings':
@@ -4711,6 +4760,9 @@ function cerber_get_admin_page_config( $page = '' ) {
4711
  case 'scan_ignore':
4712
  cerber_show_ignore();
4713
  break;
 
 
 
4714
  case 'help':
4715
  cerber_show_help();
4716
  break;
@@ -4722,9 +4774,10 @@ function cerber_get_admin_page_config( $page = '' ) {
4722
  'cerber-tools' => array(
4723
  'title' => __( 'Tools', 'wp-cerber' ),
4724
  'tabs' => array(
4725
- 'imex' => array( 'bx-layer', __( 'Export & Import', 'wp-cerber' ) ),
 
4726
  'diagnostic' => array( 'bx-wrench', __( 'Diagnostic', 'wp-cerber' ) ),
4727
- 'diag-log' => array( 'bx-bug', __( 'Log', 'wp-cerber' ) ),
4728
  'change-log' => array( 'bx-collection', __( 'Changelog', 'wp-cerber' ) ),
4729
  'license' => array( 'bx-key', __( 'License', 'wp-cerber' ) ),
4730
  ),
157
  //$wp_cerber->deleteGarbage();
158
 
159
  $per_page = ( ! empty( $args['per_page'] ) ) ? $args['per_page'] : crb_admin_get_per_page();
160
+ $limit = cerber_get_sql_limit( $per_page );
161
 
162
+ if ( $rows = cerber_db_get_results( 'SELECT * FROM ' . CERBER_BLOCKS_TABLE . ' ORDER BY block_until DESC ' . $limit, MYSQL_FETCH_OBJECT ) ) {
163
 
164
  $total = cerber_blocked_num();
165
  $list = array();
192
  }
193
 
194
  $heading = array(
195
+ __( 'IP Address', 'wp-cerber' ),
196
  __( 'Hostname', 'wp-cerber' ),
197
  __( 'Country', 'wp-cerber' ),
198
  __( 'Expires', 'wp-cerber' ),
317
  . $ret . '</div>
318
  <form action="" method="post">
319
  <table>
320
+ <tr><td><input class="crb-monospace" type="text" name="add_acl" required maxlength="100" placeholder="' . __( 'IP address, range, wildcard, or CIDR', 'wp-cerber' ) . '">
321
  </td><td><input type="submit" class="button button-primary" value="' . __( 'Add Entry', 'wp-cerber' ) . '" ></td></tr>
322
+ <tr><td><input class="crb-monospace" type="text" name="add_acl_comment" maxlength="250" placeholder="' . __( 'Optional comment for this entry', 'wp-cerber' ) . '">
323
  </td><td></td></tr>
324
  </table>
325
  <input type="hidden" name="cerber_admin_do" value="add2acl">
446
  delete_site_option( 'cerber_admin_info' );
447
  }
448
  }
449
+ elseif ( $admin && ( $ajax_route = crb_array_get( $request, 'ajax_route' ) ) ) {
450
+ switch ( $ajax_route ) {
451
+ case 'scanner_analytics':
452
+ $response = cerber_generate_insights( $request['itype'] );
453
+ break;
454
+ }
455
+ }
456
  elseif ( $admin && ( $usearch = crb_array_get( $request, 'user_search' ) ) ) {
457
  $users = get_users( array( 'search' => '*' . esc_attr( $usearch ) . '*', ) );
458
  $response = array();
527
  /*
528
  Admin dashboard actions
529
  */
 
530
  add_action( 'wp_loaded', function () { // 'wp_loaded' @since 5.6
531
  if ( ! is_admin() ) {
532
  return;
534
 
535
  cerber_admin_request();
536
 
537
+ }, 0 );
538
  /**
539
  * @param bool $is_post
540
  *
679
  }
680
  elseif ( isset( $_GET['force_check_nodes'] ) ) {
681
  $best = lab_check_nodes( true );
682
+ cerber_admin_message( 'Connectivity to all Cerber Lab\'s nodes has been checked. The closest node: ' . $best );
683
  cerber_safe_redirect( 'force_check_nodes' );
684
  }
685
+ elseif ( isset( $_GET['clear_up_the_cache'] ) ) {
686
  lab_cleanup_cache();
687
+ cerber_admin_message( 'The plugin cache has been cleared' );
688
+ cerber_safe_redirect( 'clear_up_the_cache' );
689
  }
690
  }
691
 
862
 
863
  $placeholder = array( 0, '', '', '', '' );
864
 
865
+ if ( crb_get_settings( 'plain_date' ) ) {
866
+ function _crb_csv_date( $timestamp ) {
867
+ static $gmt_offset;
868
+ if ( $gmt_offset === null ) {
869
+ $gmt_offset = get_option( 'gmt_offset' ) * 3600;
870
+ }
871
+ return date( 'Y-m-d H:i:s', $timestamp + $gmt_offset );
872
+ }
873
+ }
874
+ else {
875
+ function _crb_csv_date( $timestamp ) {
876
+ return cerber_date( $timestamp, false );
877
+ }
878
+ }
879
+
880
+ // The loop
881
+
882
  $i = 0;
883
 
884
  do {
895
  }
896
 
897
  $values[] = $row->ip;
898
+ $values[] = _crb_csv_date( $row->stamp );
899
  $values[] = $labels[ $row->activity ];
900
  $s = $details[0];
901
  $values[] = ( isset( $status[ $s ] ) ) ? $status[ $s ] : '';
926
 
927
  $fname = $f_name . '.csv';
928
 
 
 
 
 
929
  crb_file_headers( $fname );
930
 
931
  $info[] = '"Generated by:","WP Cerber Security ' . CERBER_VER . '"';
932
  $info[] = '"Website:","' . get_option( 'blogname' ) . '"';
933
+ $info[] = '"Date:","' . cerber_date( time(), false ) . '"';
934
  $info[] = '"Rows in this file:","' . $total . '"';
935
 
936
  echo implode( "\r\n", $info ) . "\r\n\r\n";
980
  $links[] = array( $ac . '&amp;filter_user=0', __( 'Not logged in visitors', 'wp-cerber' ) );
981
  if ( ! $context ) {
982
  $links[] = array( $ac . '&amp;filter_user=' . get_current_user_id(), __( 'My activity', 'wp-cerber' ) );
983
+ $links[] = array( $ac . '&amp;search_activity=' . cerber_get_remote_ip(), __( 'My IP', 'wp-cerber' ) );
984
  }
985
 
986
  $ret = '';
1043
  if ( empty( $args['no_details'] ) && $row->details ) {
1044
  $details = explode( '|', $row->details );
1045
  if ( ! empty( $details[0] ) && isset( $status_labels[ $details[0] ] ) ) {
1046
+ $activity .= ' <span class = "crb-log-status crb-status-' . $details[0] . '">' . $status_labels[ $details[0] ] . '</span>';
1047
  }
1048
  //elseif ($row->activity == 50 && $details[4]) $activity .= ' '.$details[4];
1049
 
1144
 
1145
  $display = ( $sid || $in_url ) ? '' : 'display: none;';
1146
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1147
  $filters = '<form action=""><div id="crb-activity-fields"><div>'
1148
 
1149
  . crb_get_activity_dd()
1164
  </div>
1165
 
1166
  <div class="crb-act-controls">
1167
+ [&nbsp;<a href="#" class="crb-opener" data-target="crb-more-activity-fields">More</a>&nbsp;]
1168
  </div>
1169
 
1170
  </div>
1320
  $ret[1] = $per_page;
1321
 
1322
  if ( $per_page ) {
1323
+ $limit = cerber_get_sql_limit( $per_page );
1324
  $ret[0] = 'SELECT SQL_CALC_FOUND_ROWS * FROM ' . CERBER_LOG_TABLE . " log {$where} ORDER BY stamp DESC {$limit}";
1325
  }
1326
  else {
2388
 
2389
  $aside = array();
2390
 
2391
+ /*if ( in_array( $page, array( 'main' ) ) ) {
2392
  $aside[] = '<div class="crb-box">
2393
  <h3>' . __( 'Confused about some settings?', 'wp-cerber' ) . '</h3>'
2394
  . __( 'You can easily load default recommended settings using button below', 'wp-cerber' ) . '
2404
  <p><i>* ' . __( "doesn't affect Custom login URL and Access Lists", 'wp-cerber' ) . '</i></p>
2405
  <p style="text-align: center; font-size: 110%;"><a href="https://wpcerber.com/getting-started/" target="_blank">' . __( 'Getting Started Guide', 'wp-cerber' ) . '</a></p>
2406
  </div>';
2407
+ }*/
2408
  /*
2409
  $aside[] = '<div class="crb-box" id = "crb-subscribe">
2410
  <div class="crb-box-inner">
2614
  }
2615
  }
2616
 
2617
+ // Unsubscribe with a secret hash
2618
+ function cerber_unsubscribeme() {
2619
  if ( $hash = cerber_get_get( 'unsubscribeme', '[a-z\d]+' ) ) {
2620
  crb_admin_alerts_do( 'off', $hash );
2621
  wp_safe_redirect( remove_query_arg( 'unsubscribeme' ) );
2622
  exit;
2623
  }
2624
+ }
2625
 
2626
  /*
2627
  Pagination
2631
  if ( ! $per_page ) {
2632
  $per_page = 25;
2633
  }
2634
+ $page = cerber_get_pn();
2635
 
2636
  $base_url = esc_url( remove_query_arg( 'pagen', add_query_arg( crb_get_query_params(), cerber_admin_link() ) ) );
2637
 
2638
  $last_page = ceil( $total / $per_page );
2639
+ $ret = '';
2640
  if ( $last_page > 1 ) {
2641
  $start = 1 + $max_links * intval( ( $page - 1 ) / $max_links );
2642
+ $end = $start + $max_links - 1;
2643
  if ( $end > $last_page ) {
2644
  $end = $last_page;
2645
  }
2669
  return ( ! $q->pagen ) ? 1 : absint( $q->pagen );
2670
  }
2671
 
2672
+ function cerber_get_sql_limit( $per_page = 25 ) {
2673
+ return ' LIMIT ' . ( cerber_get_pn() - 1 ) * $per_page . ',' . $per_page;
2674
+ }
2675
+
2676
  /*
2677
  Plugins screen links
2678
  */
2745
  wp_register_style( 'nexus_css', $crb_assets_url . 'nexus.css', null, CERBER_VER );
2746
  wp_enqueue_style( 'nexus_css' );
2747
 
2748
+ wp_register_style( 'ui_stack_css', $crb_assets_url . 'ui-stack.css', null, CERBER_VER );
2749
+ wp_enqueue_style( 'ui_stack_css' );
2750
+
2751
  add_thickbox();
2752
  }
2753
 
2754
  if ( ! defined( 'CERBER_BETA' ) ) {
2755
  wp_enqueue_script( 'cerber_js', $crb_assets_url . 'admin.js', array( 'jquery' ), CERBER_VER, true );
2756
+ wp_enqueue_script( 'the-ui-stack', $crb_assets_url . 'ui-stack.js', array( 'jquery' ), CERBER_VER, true );
2757
+
2758
  if ( cerber_is_admin_page( false, array( 'page' => 'cerber-integrity' ) ) ) {
2759
  wp_enqueue_script( 'cerber_scan', $crb_assets_url . 'scanner.js', array( 'jquery' ), CERBER_VER, true );
2760
  }
2956
  ?>
2957
  <script type="text/javascript">
2958
  <?php readfile( dirname( __FILE__ ) . '/assets/admin.js' ); ?>
2959
+ <?php readfile( dirname( __FILE__ ) . '/assets/ui-stack.js' ); ?>
2960
  <?php readfile( dirname( __FILE__ ) . '/assets/scanner.js' ); ?>
2961
  </script>
2962
  <?php
3303
  switch ( $rule_id ) {
3304
  case 'geo_register':
3305
  if ( ! get_option( 'users_can_register' ) ) {
3306
+ $note = 'Registration is disabled in the General WordPress Settings.';
3307
  }
3308
  break;
3309
  case 'geo_restapi':
3310
  if ( $opt['norest'] ) {
3311
+ $note = 'REST API is disabled in the Hardening settings of the plugin.';
3312
  }
3313
  break;
3314
  case 'geo_xmlrpc':
3315
  if ( $opt['xmlrpc'] ) {
3316
+ $note = 'XML-RPC is disabled in the Hardening settings of the plugin.';
3317
  }
3318
  break;
3319
  }
3320
  if ( $note ) {
3321
+ $note = '<p><span class="dashicons-before dashicons-warning"></span> Heads up! ' . $note . '</p>';
3322
  }
3323
 
3324
  return array(
3455
  }
3456
  }
3457
 
3458
+ if ( update_site_option( CERBER_GEO_RULES, $geo ) ) {
3459
  cerber_admin_message( __( 'Security rules have been updated', 'wp-cerber' ) );
3460
  }
3461
  }
3574
  //$labels = cerber_get_labels( 'activity' );
3575
  //$status = cerber_get_labels( 'status' );
3576
 
3577
+ if ( crb_get_settings( 'plain_date' ) ) {
3578
+ function _crb_csv_date( $timestamp ) {
3579
+ static $gmt_offset;
3580
+ if ( $gmt_offset === null ) {
3581
+ $gmt_offset = get_option( 'gmt_offset' ) * 3600;
3582
+ }
3583
+ return date( 'Y-m-d H:i:s', $timestamp + $gmt_offset );
3584
+ }
3585
+ }
3586
+ else {
3587
+ function _crb_csv_date( $timestamp ) {
3588
+ return cerber_date( $timestamp, false );
3589
+ }
3590
+ }
3591
+
3592
+ // The loop
3593
+
3594
  $i = 0;
3595
 
3596
  do {
3613
  $values[] = $row->stamp;*/
3614
 
3615
  $values[] = $row['ip'];
3616
+ $values[] = _crb_csv_date( $row['stamp'] );
3617
  $values[] = $row['request_method'];
3618
  $values[] = $row['uri'];
3619
  $values[] = $row['http_code'];
3812
 
3813
  $ad = explode( '|', $a->details );
3814
  if ( ! empty( $ad[0] ) ) {
3815
+ $activity .= ' <span class = "crb-log-status crb-status-' . $ad[0] . '">' . $status_labels[ $ad[0] ] . '</span>';
3816
  }
3817
 
3818
  }
3827
  $processing = '';
3828
  }
3829
 
3830
+ $wp_type = '';
3831
+ if ( $t = cerber_get_wp_type( $row->wp_type ) ) {
3832
+ $wp_type = '<span class="crb-wp-type-' . $row->wp_type . '">' . $t . '</span>';
3833
+ }
3834
 
3835
  $wp_obj = '';
3836
  if ( isset( $wp_objects[ $row->wp_id ] ) ) {
3842
  if ( $truncated ) {
3843
  $more_details[] = array(
3844
  'Full URL',
3845
+ '<span class="crb-monospace">' . $full_uri . '</span>'
3846
  );
3847
  }
3848
 
3859
  if ( ! empty( $details[2] ) ) {
3860
  $more_details[] = array(
3861
  'Referrer',
3862
+ '<span class="crb-monospace">' . htmlentities( urldecode( $details[2] ) ) . '</span>'
3863
  );
3864
  }
3865
 
3866
  if ( ! empty( $details[1] ) ) {
3867
  $more_details[] = array(
3868
  'User Agent',
3869
+ '<span class="crb-monospace">' . htmlentities( $details[1] ) . '</span>'
3870
  );
3871
  }
3872
 
3960
  }
3961
  }
3962
 
3963
+ $req_status = '';
3964
+ if ( ! empty( $row->req_status ) ) {
3965
+ $req_status = '<span class="crb-req-status-' . $row->req_status . '">' . $status_labels[ $row->req_status ] . '</span>';
3966
+ }
3967
+
3968
  $request_details = '';
3969
  $more_link = '';
3970
  $toggle_class = '';
3982
  $toggle_class = 'crb-toggle';
3983
  }
3984
 
3985
+ $request = '<b>' . $row_uri . '</b>' . '<p style="margin-top:1em;"><span class="crb-' . $row->request_method . '">' . $row->request_method . '</span>' . $f . $wp_type . '<span class="crb-' . $row->http_code . '"> HTTP ' . $row->http_code . ' ' . get_status_header_desc( $row->http_code ) . '</span>' . $req_status . $php_err . '<span>' . $processing . '</span> ' . $more_link . ' ' . $activity . ' </p>' . $wp_obj;
3986
 
3987
  // Decorating this table can't be done via simple CSS
3988
  if ( ! empty( $even ) ) {
4049
  $filters[] = array( '&amp;filter_wp_type=520', 'REST API' );
4050
  $filters[] = array( '&amp;filter_wp_type=515', 'XML-RPC' );
4051
 
4052
+ $filters[] = array( '&amp;filter_user=' . get_current_user_id(), __( 'My requests', 'wp-cerber' ) );
4053
+ $filters[] = array( '&amp;filter_ip=' . cerber_get_remote_ip(), __( 'My IP', 'wp-cerber' ) );
4054
+
4055
  //$filters .= ' | <a href="'.$base_url.'&filter_wp_type >= 600&filter_method=POST">Form submissions</a>';
4056
 
4057
  if ( $threshold = crb_get_settings( 'tithreshold' ) ) {
4080
 
4081
  $refresh = '';
4082
  if ( crb_get_settings( 'timode' ) ) {
4083
+ $refresh = '<a href="" style="white-space: pre;"><i class="dashicons dashicons-update" style=""></i> <span>' . __( 'Refresh', 'wp-cerber' ) . '</span></a>';
4084
  }
4085
 
4086
+ $top_bar = '<div id = "activity-filter"><div><div style="display: table-cell; width: 90%;">' . $filter_links .'</div><div style="display: table-cell;">'. $refresh . '</div></div><div>' . $right_links . '</div></div><br style="clear: both;">';
4087
 
4088
  $ret = '<div class="cerber-margin">' . $top_bar . crb_admin_traffic_search_form() . $info . '</div>' . $ret;
4089
  }
4122
  $view = '<table class="' . $class . '">';
4123
 
4124
  if ( $title ) {
4125
+ $view .= '<tr><td colspan="2" style="font-weight: 500">' . $title . '</td></tr>';
4126
  }
4127
 
4128
  $i = 1;
4345
  }
4346
 
4347
  if ( $per_page ) {
4348
+ $limit = cerber_get_sql_limit( $per_page );
4349
  //$ret[0] = 'SELECT SQL_CALC_FOUND_ROWS log.session_id,log.* FROM ' . CERBER_TRAF_TABLE . " log USE INDEX FOR ORDER BY (stamp) {$where} ORDER BY stamp DESC {$limit}";
4350
+ $ret[0] = 'SELECT log.session_id,' . $cols . ' FROM ' . CERBER_TRAF_TABLE . " log {$join} {$where} ORDER BY log.stamp DESC {$limit}";
4351
  //$ret[0] = 'SELECT SQL_CALC_FOUND_ROWS log.*,act.activity FROM ' . CERBER_TRAF_TABLE . ' log USE INDEX FOR ORDER BY (stamp) LEFT JOIN '.CERBER_LOG_TABLE." act ON (log.session_id = act.session_id) {$where} ORDER BY log.stamp DESC {$limit}";
4352
  }
4353
  else {
4354
+ $ret[0] = 'SELECT log.session_id,' . $cols . ' FROM ' . CERBER_TRAF_TABLE . " log {$join} {$where} ORDER BY stamp DESC"; // "ORDER BY" is mandatory!
4355
  }
4356
 
4357
  $ret[1] = 'SELECT COUNT(log.stamp) FROM ' . CERBER_TRAF_TABLE . " log {$join} {$where}";
4427
  <option value="1">Exclude</option>
4428
  </select></p>
4429
  <p><label for="filter-sid">RID</label>
4430
+ <br/><input id="filter-sid" type="text" name="filter_sid" placeholder="Request ID"></p>
4431
  <p><label for="search-err">Software errors contain</label>
4432
  <br/><input id="search-err" type="text" name="search_traffic[errors]"></p>
4433
  <p class="crb-has-checkbox">
4605
  $blocked = cerber_blocked_num();
4606
  $acl = cerber_db_get_var( 'SELECT count(ip) FROM ' . CERBER_ACL_TABLE . ' WHERE acl_slice = 0' );
4607
  $uss = cerber_db_get_var( 'SELECT count(user_id) FROM ' . cerber_get_db_prefix() . CERBER_USS_TABLE );
4608
+ $tabs['sessions'][1] .= ' <sup>' . $uss . '</sup>';
4609
+ $tabs['lockouts'][1] .= ' <sup>' . $blocked . '</sup>';
4610
+ $tabs['acl'][1] .= ' <sup>' . $acl . '</sup>';
4611
 
4612
  return $tabs;
4613
  },
4726
  'scan_policy' => array( 'bx-bolt', __( 'Cleaning up', 'wp-cerber' ) ),
4727
  'scan_ignore' => array( 'bx-hide', __( 'Ignore List', 'wp-cerber' ) ),
4728
  'scan_quarantine' => array( 'bx-trash', __( 'Quarantine', 'wp-cerber' ) ),
4729
+ 'scan_insights' => array( 'bx-flask', __( 'Analytics', 'wp-cerber' ) ),
4730
  ),
4731
+ 'tab_filter' => function ( $tabs ) {
4732
+ $numi = 0;
4733
+ if ( $list = cerber_get_set( 'ignore-list' ) ) {
4734
+ $numi = count( $list );
4735
+ }
4736
+ $numq = cerber_get_set( 'quarantined_total', null, false );
4737
+ if ( ! is_numeric( $numq ) ) {
4738
+ cerber_bg_task_add( '_crb_qr_total_sync' );
4739
+ $numq = '';
4740
+ }
4741
+ $tabs['scan_quarantine'][1] .= ' <sup>' . $numq . '</sup>';
4742
+ $tabs['scan_ignore'][1] .= ' <sup>' . $numi . '</sup>';
4743
+
4744
+ return $tabs;
4745
+ },
4746
  'callback' => function ( $tab ) {
4747
  switch ( $tab ) {
4748
  case 'scan_settings':
4760
  case 'scan_ignore':
4761
  cerber_show_ignore();
4762
  break;
4763
+ case 'scan_insights':
4764
+ cerber_scan_insights();
4765
+ break;
4766
  case 'help':
4767
  cerber_show_help();
4768
  break;
4774
  'cerber-tools' => array(
4775
  'title' => __( 'Tools', 'wp-cerber' ),
4776
  'tabs' => array(
4777
+ //'imex' => array( 'bx-layer', __( 'Export & Import', 'wp-cerber' ) ),
4778
+ 'imex' => array( 'bx-layer', __( 'Manage Settings', 'wp-cerber' ) ),
4779
  'diagnostic' => array( 'bx-wrench', __( 'Diagnostic', 'wp-cerber' ) ),
4780
+ 'diag-log' => array( 'bx-bug', __( 'Diagnostic Log', 'wp-cerber' ) ),
4781
  'change-log' => array( 'bx-collection', __( 'Changelog', 'wp-cerber' ) ),
4782
  'license' => array( 'bx-key', __( 'License', 'wp-cerber' ) ),
4783
  ),
jetflow.php CHANGED
@@ -1,11 +1,11 @@
1
  <?php
2
  /*
3
 
4
- Integration with the jetFlow.io automation and customization plugin, http://jetflow.io
5
  Actions and triggers definitions.
6
 
7
- Copyright (C) 2015-20 CERBER TECH INC., https://cerber.tech
8
- Copyright (C) 2015-20 CERBER TECH INC., https://wpcerber.com
9
 
10
  Licenced under the GNU GPL.
11
 
@@ -23,105 +23,134 @@
23
 
24
 
25
  // If this file is called directly, abort executing.
26
- if ( ! defined( 'WPINC' ) ) { exit; }
 
 
27
 
 
 
 
 
 
 
 
 
28
 
29
- add_action('jetflow_register','cerber_jetflow');
30
  function cerber_jetflow() {
31
- if (!class_exists('WF_Repository')) return;
32
  class TR_IP_Locked extends WF_Action {
33
  static $trigger = true;
34
  static $wp_hook = 'cerber_ip_locked';
35
- static $name = 'IP locked out';
36
- static $description = 'Start after IP address has been blocked by Cerber';
37
  static $form_help = '
38
  Start the workflow after an IP address has been locked out by the WP Cerber plugin and conditions match the specified criteria.
39
- <p>To get blocked IP address in actions use pattern <code>{TRIGGER[IP]}</code>, for a reason why the IP has been locked out use pattern <code>{TRIGGER[reason]}</code>.
40
  ';
41
- public static $fields = array(
42
  'filter' => array(
43
- 'type' => 'group',
44
- 'fields' => array(
45
- 'locks' => array(
46
- 'type' => 'text',
47
- 'label' => 'Start if an IP address has been locked out more than times',
48
- 'default' => '0',
49
  'autocomplete' => 0
50
  ),
51
- 'period' => array(
52
- 'type' => 'text',
53
- 'label' => 'in the last minutes',
54
- 'default' => '60',
55
  'autocomplete' => 0
56
  ),
57
- )),
58
- 'limit' => array(
59
- 'type' => 'text',
60
- 'label' => 'Start if the number of currently locked out IP addresses is greater than',
61
- 'default' => '0',
62
- 'required' => 1,
 
63
  'autocomplete' => 0
64
  ),
65
  );
66
- function execute($fields) {
 
67
  global $wpdb;
68
- list ($fields, $previous, $env, $wp_arguments) = func_get_args();
69
- if ( cerber_blocked_num() <= absint($fields['limit'])) return new WF_Stop( __CLASS__ );
70
- if (!empty($fields['filter']['locks'])) $locks = absint($fields['filter']['locks']);
71
- else $locks = 0;
72
- if ($locks > 0) {
73
- $ip = $wp_arguments[0]['IP'];
74
- $stamp = time() - absint( $fields['filter']['period'] ) * 60;
 
 
 
 
 
 
75
  $lockouts = $wpdb->get_var( $wpdb->prepare( 'SELECT count(ip) FROM ' . CERBER_LOG_TABLE . ' WHERE ip = %s AND activity IN (10,11) AND stamp > %d', $ip, $stamp ) );
76
- $lockouts = absint($lockouts);
77
- if ( !$lockouts || $lockouts <= $locks) {
78
  return new WF_Stop( __CLASS__ );
79
  }
80
  }
 
81
  return $wp_arguments[0];
82
  }
83
- static function getStarterInfo($config, $context) {
 
84
  return 'After IP address has been locked out by Cerber';
85
  }
86
  }
 
87
  class WF_WHOIS extends WF_Action {
88
  public static $section = 'network';
89
  public static $name = 'Get WHOIS info';
90
  public static $description = 'Get extended information about IP address';
91
  public static $form_help = '
92
- Sends request to a WHOIS server and obtains details about given IP address like country, abuse email address, owner of network, etc. The WHOIS information is publicly available and provided for free.
93
  There are no reasons for security concerns, because a list of WHOIS servers are maintained by <a target="_blank" href="https://en.wikipedia.org/wiki/ICANN">ICANN</a>.
94
- <p>Bear in mind that each WHOIS request takes some time to retrieve data from remote WHOIS server. One request can take up to 300 ms approximately, so workflow will wait that time for a response with each request.
95
- <p>A result will be a list. To get a country name in the next action use pattern <code>{PREVIOUS[country-name]}</code>, for two letter country code: <code>{PREVIOUS[country]}</code>, for abuse email address: <code>{PREVIOUS[abuse-mailbox]}</code>, for network as IP range: <code>{PREVIOUS[inetnum]}</code>.
96
- The full list of available fields depends on network owner.
97
- You can request WHOIS data manually to find out what kind of field are available on this page: <a target="_blank" href="http://wq.apnic.net/apnic-bin/whois.pl">http://wq.apnic.net/apnic-bin/whois.pl</a>.
98
  ';
99
- public static $fields = array(
100
- 'ip' => array(
101
- 'type' => 'text',
102
- 'label' => 'IP address',
103
- 'default' => '{TRIGGER[IP]}',
104
  'required' => 1,
105
  ),
106
  );
107
- function execute($fields) {
108
- list ($fields, $previous, $env, $wp_arguments) = func_get_args();
109
- $ip = filter_var($fields['ip'],FILTER_VALIDATE_IP);
110
- if (!$ip) return false;
111
- $whois = cerber_ip_whois_info($ip);
112
- if (!empty($whois['error'])) return new WF_Error (__CLASS__, 'Unable to obtain IP info');
 
 
 
 
 
113
  $ret = $whois['data'];
114
 
115
- if (empty($ret['abuse-mailbox']) && !empty($ret['OrgAbuseEmail'])){
116
  $ret['abuse-mailbox'] = $ret['OrgAbuseEmail'];
117
  }
118
 
119
- if (!is_email($ret['abuse-mailbox'])) $ret['abuse-mailbox'] = '';
 
 
 
 
120
 
121
- $ret['country-name'] = cerber_country_name($ret['country']);
122
  return $ret;
123
  }
124
  }
125
- wof_register(array('TR_IP_Locked','WF_WHOIS'));
 
126
  }
127
 
1
  <?php
2
  /*
3
 
4
+ Integration with the jetFlow.io automation and customization plugin, https://jetflow.io
5
  Actions and triggers definitions.
6
 
7
+ Copyright (C) 2015-20 CERBER TECH INC., https://cerber.tech
8
+ Copyright (C) 2015-20 CERBER TECH INC., https://wpcerber.com
9
 
10
  Licenced under the GNU GPL.
11
 
23
 
24
 
25
  // If this file is called directly, abort executing.
26
+ if ( ! defined( 'WPINC' ) ) {
27
+ exit;
28
+ }
29
 
30
+ if ( function_exists( 'wof_register' ) ) {
31
+ cerber_jetflow();
32
+ }
33
+ else {
34
+ add_action( 'jetflow_register', function () {
35
+ cerber_jetflow();
36
+ } );
37
+ }
38
 
 
39
  function cerber_jetflow() {
40
+
41
  class TR_IP_Locked extends WF_Action {
42
  static $trigger = true;
43
  static $wp_hook = 'cerber_ip_locked';
44
+ static $name = 'IP address locked out';
45
+ static $description = 'Start after IP has been blocked by WP Cerber';
46
  static $form_help = '
47
  Start the workflow after an IP address has been locked out by the WP Cerber plugin and conditions match the specified criteria.
48
+ <p>The variable <code>{TRIGGER.IP}</code> contains the blocked IP address, the variable <code>{TRIGGER.reason}</code> contains the reason why.
49
  ';
50
+ public static $fields = array(
51
  'filter' => array(
52
+ 'type' => 'group',
53
+ 'fields' => array(
54
+ 'locks' => array(
55
+ 'type' => 'text',
56
+ 'label' => 'Start if an IP address has been locked out more than times',
57
+ 'default' => '0',
58
  'autocomplete' => 0
59
  ),
60
+ 'period' => array(
61
+ 'type' => 'text',
62
+ 'label' => 'in the last minutes',
63
+ 'default' => '60',
64
  'autocomplete' => 0
65
  ),
66
+ )
67
+ ),
68
+ 'limit' => array(
69
+ 'type' => 'text',
70
+ 'label' => 'Start if the number of currently locked out IP addresses is greater than',
71
+ 'default' => '0',
72
+ 'required' => 1,
73
  'autocomplete' => 0
74
  ),
75
  );
76
+
77
+ function execute( $fields ) {
78
  global $wpdb;
79
+ list ( $fields, $previous, $env, $wp_arguments ) = func_get_args();
80
+ if ( cerber_blocked_num() <= absint( $fields['limit'] ) ) {
81
+ return new WF_Stop( __CLASS__ );
82
+ }
83
+ if ( ! empty( $fields['filter']['locks'] ) ) {
84
+ $locks = absint( $fields['filter']['locks'] );
85
+ }
86
+ else {
87
+ $locks = 0;
88
+ }
89
+ if ( $locks > 0 ) {
90
+ $ip = $wp_arguments[0]['IP'];
91
+ $stamp = time() - absint( $fields['filter']['period'] ) * 60;
92
  $lockouts = $wpdb->get_var( $wpdb->prepare( 'SELECT count(ip) FROM ' . CERBER_LOG_TABLE . ' WHERE ip = %s AND activity IN (10,11) AND stamp > %d', $ip, $stamp ) );
93
+ $lockouts = absint( $lockouts );
94
+ if ( ! $lockouts || $lockouts <= $locks ) {
95
  return new WF_Stop( __CLASS__ );
96
  }
97
  }
98
+
99
  return $wp_arguments[0];
100
  }
101
+
102
+ static function getStarterInfo( $config, $context ) {
103
  return 'After IP address has been locked out by Cerber';
104
  }
105
  }
106
+
107
  class WF_WHOIS extends WF_Action {
108
  public static $section = 'network';
109
  public static $name = 'Get WHOIS info';
110
  public static $description = 'Get extended information about IP address';
111
  public static $form_help = '
112
+ Sends request to a WHOIS server and retrieves details about a given IP address. The WHOIS information is publicly available and provided for free.
113
  There are no reasons for security concerns, because a list of WHOIS servers are maintained by <a target="_blank" href="https://en.wikipedia.org/wiki/ICANN">ICANN</a>.
114
+ <p>Bear in mind that each WHOIS request takes some time to retrieve data from the remote WHOIS server. A request can take up to 500 ms approximately, so the workflow will be waiting all this time for a response.
115
+ <p>The result is a list. To get a country name in the next action, use variable <code>{PREVIOUS.country-name}</code>, for the two-letter country code: <code>{PREVIOUS.country}</code>, for the abuse email address: <code>{PREVIOUS.abuse-mailbox}</code>, for the network as IP range: <code>{PREVIOUS.inetnum}</code>.
116
+ The full list of available fields depends on a network owner.
117
+ You can request WHOIS data manually to find out what kind of fields are available on this page: <a target="_blank" href="http://wq.apnic.net/apnic-bin/whois.pl">http://wq.apnic.net/apnic-bin/whois.pl</a>.
118
  ';
119
+ public static $fields = array(
120
+ 'ip' => array(
121
+ 'type' => 'text',
122
+ 'label' => 'IP address',
123
+ 'default' => '{TRIGGER.IP}',
124
  'required' => 1,
125
  ),
126
  );
127
+
128
+ function execute( $fields ) {
129
+ list ( $fields, $previous, $env, $wp_arguments ) = func_get_args();
130
+ $ip = filter_var( $fields['ip'], FILTER_VALIDATE_IP );
131
+ if ( ! $ip ) {
132
+ return false;
133
+ }
134
+ $whois = cerber_ip_whois_info( $ip );
135
+ if ( ! empty( $whois['error'] ) ) {
136
+ return new WF_Error ( __CLASS__, 'Unable to obtain IP info' );
137
+ }
138
  $ret = $whois['data'];
139
 
140
+ if ( empty( $ret['abuse-mailbox'] ) && ! empty( $ret['OrgAbuseEmail'] ) ) {
141
  $ret['abuse-mailbox'] = $ret['OrgAbuseEmail'];
142
  }
143
 
144
+ if ( ! is_email( $ret['abuse-mailbox'] ) ) {
145
+ $ret['abuse-mailbox'] = '';
146
+ }
147
+
148
+ $ret['country-name'] = cerber_country_name( $ret['country'] );
149
 
 
150
  return $ret;
151
  }
152
  }
153
+
154
+ wof_register( array( 'TR_IP_Locked', 'WF_WHOIS' ) );
155
  }
156
 
languages/wp-cerber-ru_RU.mo CHANGED
Binary file
languages/wp-cerber-ru_RU.po CHANGED
@@ -2,7 +2,7 @@
2
  # This file is distributed under the same license as the Plugins - Cerber Security, Antispam &amp; Malware Scan - Stable (latest release) package.
3
  msgid ""
4
  msgstr ""
5
- "PO-Revision-Date: 2020-01-27 15:41:06+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
@@ -11,6 +11,118 @@ msgstr ""
11
  "Language: ru\n"
12
  "Project-Id-Version: Plugins - Cerber Security, Antispam &amp; Malware Scan - Stable (latest release)\n"
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  #: cerber-users.php:942
15
  msgid "WP Cerber Personal Data Eraser"
16
  msgstr "WP Cerber удаление персональных данных"
@@ -19,71 +131,71 @@ msgstr "WP Cerber удаление персональных данных"
19
  msgid "Admin Note"
20
  msgstr "Заметка администратора"
21
 
22
- #: settings.php:596
23
  msgid "Cookies"
24
  msgstr "Куки"
25
 
26
- #: settings.php:595
27
  msgid "Form fields data"
28
  msgstr "Данные полей формы"
29
 
30
- #: settings.php:594
31
  msgid "Request URL"
32
  msgstr "URL запроса"
33
 
34
- #: settings.php:591
35
  msgid "Include traffic log entries"
36
  msgstr "Включить записи журнала трафика"
37
 
38
- #: settings.php:585
39
  msgid "Include activity log events"
40
  msgstr "Включить события журнала активности"
41
 
42
- #: settings.php:578
43
  msgid "Enable data export"
44
  msgstr "Включить экспорт данных"
45
 
46
- #: settings.php:572
47
  msgid "Delete user sessions data when user data is erased"
48
  msgstr "Удалить пользовательские сессии при уничтожении данных пользователя"
49
 
50
- #: settings.php:571
51
  msgid "Terminate user sessions"
52
  msgstr "Завершение пользовательских сессий"
53
 
54
- #: settings.php:564
55
  msgid "Enable data erase"
56
  msgstr "Включить уничтожение данных"
57
 
58
- #: settings.php:559
59
  msgid "Personal Data"
60
  msgstr "Персональные данные"
61
 
62
- #: settings.php:266 settings.php:763
63
  msgid "Keep log records of logged in users for"
64
  msgstr "Сохранять записи журнала для авторизованных пользователей"
65
 
66
- #: settings.php:260 settings.php:758
67
  msgid "Keep log records of not logged in visitors for"
68
  msgstr "Сохранять записи журнала для неавторизованных пользователей"
69
 
70
- #: settings.php:228
71
  msgid "Enable authentication log monitoring"
72
  msgstr "Включить наблюдение над журналом авторизации"
73
 
74
- #: settings.php:1209
75
  msgid "Any activity"
76
  msgstr "Любая активность"
77
 
78
- #: common.php:1336
79
  msgid "User metadata update denied"
80
  msgstr "Изменение метаданных пользователя запрещено"
81
 
82
- #: common.php:1333
83
  msgid "User row update denied"
84
  msgstr "Изменение пользователя запрещено"
85
 
86
- #: common.php:1297
87
  msgid "IP subnet blocked"
88
  msgstr "Подсеть IP заблокирована"
89
 
@@ -91,15 +203,15 @@ msgstr "Подсеть IP заблокирована"
91
  msgid "A database error occurred while importing access list entries"
92
  msgstr "Возникла ошибка базы данных при импорте списка адресов"
93
 
94
- #: dashboard.php:4808
95
  msgid "The IP address you are trying to add is already in the list"
96
  msgstr "Этот IP адрес уже присутствует в списке"
97
 
98
- #: dashboard.php:303
99
  msgid "Add Entry"
100
  msgstr "Добавить запись"
101
 
102
- #: dashboard.php:302
103
  msgid "IP address, range, wildcard, or CIDR"
104
  msgstr "IP адрес, диапазон, маска или CIDR"
105
 
@@ -115,15 +227,15 @@ msgstr "Все сервера"
115
  msgid "All countries"
116
  msgstr "Все страны"
117
 
118
- #: nexus/cerber-nexus-master.php:65
119
  msgid "Show homepage in the Website column"
120
  msgstr "Показывать домашнюю страницу в столбце вебсайта"
121
 
122
- #: nexus/cerber-nexus-master.php:67
123
  msgid "Hide server IP address"
124
  msgstr "Спрятать IP адрес сервера"
125
 
126
- #: settings.php:409 settings.php:437 settings.php:466
127
  msgid "Do not apply these policies to the IP addresses in the White IP Access List"
128
  msgstr "Не применять эти политики к IP адресам из белого списка"
129
 
@@ -131,15 +243,15 @@ msgstr "Не применять эти политики к IP адресам и
131
  msgid "Server"
132
  msgstr "Сервер"
133
 
134
- #: dashboard.php:4577
135
  msgid "Site Settings"
136
  msgstr "Настройки сайта"
137
 
138
- #: dashboard.php:4576
139
  msgid "Accounts & Roles"
140
  msgstr "Учетные записи и роли"
141
 
142
- #: dashboard.php:4574
143
  msgid "Data Shield Policies"
144
  msgstr "Политики защиты данных"
145
 
@@ -147,35 +259,35 @@ msgstr "Политики защиты данных"
147
  msgid "Data Shield"
148
  msgstr "Защита данных"
149
 
150
- #: settings.php:460
151
  msgid "Protected settings"
152
  msgstr "Защищенные настройки"
153
 
154
- #: settings.php:455
155
  msgid "Users with these roles are permitted to change protected settings"
156
  msgstr "Пользователи с этими ролями могут изменять защищенные настройки"
157
 
158
- #: settings.php:449
159
  msgid "Restrict updating site settings with the following policies"
160
  msgstr "Ограничить изменение настроек сайта следующими правилами"
161
 
162
- #: settings.php:445
163
  msgid "Protect site settings"
164
  msgstr "Защита настроек сайта"
165
 
166
- #: settings.php:432
167
  msgid "Users with these roles are permitted to change role capabilities"
168
  msgstr "Пользователи с этими ролями могут изменять возможности ролей"
169
 
170
- #: settings.php:427
171
  msgid "Users with these roles are permitted to add new roles"
172
  msgstr "Пользователи с этими ролями могут добавлять новые роли"
173
 
174
- #: settings.php:421
175
  msgid "Restrict roles and capabilities management with the following policies"
176
  msgstr "Ограничить управление ролями и возможностями следующими правилами"
177
 
178
- #: settings.php:417
179
  msgid "Protect user roles"
180
  msgstr "Защита ролей пользователей"
181
 
@@ -183,47 +295,47 @@ msgstr "Защита ролей пользователей"
183
  msgid "Cerber Data Shield Policies"
184
  msgstr "Cerber политики защиты данных"
185
 
186
- #: settings.php:404
187
  msgid "Users with these roles are permitted to change sensitive user data"
188
  msgstr "Пользователи с этими ролями могут изменять важные пользовательские данные"
189
 
190
- #: settings.php:399
191
  msgid "Users with these roles are permitted to create new accounts"
192
  msgstr "Пользователи с этими ролями могут создавать новые учетные записи"
193
 
194
- #: settings.php:393
195
  msgid "User registrations are limited to these roles"
196
  msgstr "Регистрация ограничена следующими ролями"
197
 
198
- #: settings.php:387
199
  msgid "Restrict user account creation and user management with the following policies"
200
  msgstr "Ограничить создание учетных записей и управление пользователями следующими правилами"
201
 
202
- #: settings.php:382
203
  msgid "Protect user accounts"
204
  msgstr "Защита учетных записей пользователей"
205
 
206
- #: common.php:1379
207
  msgid "Incorrect password"
208
  msgstr "Неверный пароль"
209
 
210
- #: common.php:1378
211
  msgid "Invalid user"
212
  msgstr "Неверный пользователь"
213
 
214
- #: common.php:1376
215
  msgid "Permission denied"
216
  msgstr "Доступ запрещен"
217
 
218
- #: common.php:1335
219
  msgid "Setting update denied"
220
  msgstr "Изменение настройки запрещено"
221
 
222
- #: common.php:1334
223
  msgid "Role update denied"
224
  msgstr "Изменение роли запрещено"
225
 
226
- #: common.php:1332
227
  msgid "User creation denied"
228
  msgstr "Создание пользователя запрещено"
229
 
@@ -298,46 +410,46 @@ msgstr[2] "%s сессий завершено"
298
  msgid "The code is valid for %s minutes."
299
  msgstr "Этот код действителен в течении %s минут."
300
 
301
- #: dashboard.php:4494
302
  msgid "Sessions"
303
  msgstr "Сессии"
304
 
305
- #: dashboard.php:3362
306
  msgid "All Users"
307
  msgstr "Все пользователи"
308
 
309
- #: dashboard.php:3250
310
  msgid "Any country is permitted"
311
  msgstr "Разрешены все страны"
312
 
313
- #: dashboard.php:3168
314
  msgid "Role-based rules are configured"
315
  msgstr "Правила на основе ролей настроены"
316
 
317
- #: dashboard.php:1703
318
  msgid "user"
319
  msgid_plural "users"
320
  msgstr[0] "пользователь"
321
  msgstr[1] "пользователя"
322
  msgstr[2] "пользователей"
323
 
324
- #: dashboard.php:828 dashboard.php:1110
325
  msgid "Username"
326
  msgstr "Имя пользователя"
327
 
328
- #: dashboard.php:821 dashboard.php:1104 dashboard.php:3936 cerber-users.php:973
329
  msgid "IP Address"
330
  msgstr "IP-адрес"
331
 
332
- #: dashboard.php:330
333
  msgid "IP address %s has been added to Black IP Access List"
334
  msgstr "IP адрес %s был добавлен в черный список доступа по IP"
335
 
336
- #: dashboard.php:333
337
  msgid "IP address %s has been added to White IP Access List"
338
  msgstr "IP адрес %s был добавлен в белый список доступа по IP"
339
 
340
- #: dashboard.php:2573
341
  msgid "The alert has been deleted"
342
  msgstr "Тревожное предупреждение удалено"
343
 
@@ -345,23 +457,23 @@ msgstr "Тревожное предупреждение удалено"
345
  msgid "Cerber Tech Inc."
346
  msgstr "Cerber Tech Inc."
347
 
348
- #: common.php:1369
349
  msgid "Site policy enforcement"
350
  msgstr "Форсирование политики сайта"
351
 
352
- #: common.php:1370
353
  msgid "2FA code verified"
354
  msgstr "2ФА код проверен"
355
 
356
- #: common.php:1371
357
  msgid "Initiated by the user"
358
  msgstr "Начато пользователем"
359
 
360
- #: common.php:1374
361
  msgid "Email address is not permitted"
362
  msgstr "Email адрес недопустим"
363
 
364
- #: common.php:1756
365
  msgid "A new version of %s is available. Please install it."
366
  msgstr "Доступна новая версия %s, пожалуйста, установите её."
367
 
@@ -405,7 +517,7 @@ msgstr "Правила перенаправления"
405
  msgid "Redirect user after login"
406
  msgstr "Перенаправить пользователя после входа"
407
 
408
- #: settings.php:543 cerber-users.php:431
409
  msgid "User session expiration time"
410
  msgstr "Время до истечения сессии пользователя"
411
 
@@ -429,15 +541,15 @@ msgstr "Вход из другой страны"
429
  msgid "days interval"
430
  msgstr "интервал в днях"
431
 
432
- #: cerber-scanner.php:5390
433
  msgid "Automatically deleted"
434
  msgstr "Автоматически удалено"
435
 
436
- #: cerber-scanner.php:5340
437
  msgid "Recovered"
438
  msgstr "Восстановлено"
439
 
440
- #: cerber-scanner.php:5393
441
  msgid "Automatically recovered"
442
  msgstr "Автоматически восстановлено"
443
 
@@ -445,103 +557,103 @@ msgstr "Автоматически восстановлено"
445
  msgid "Cerber User Security"
446
  msgstr "Безопасность пользователей"
447
 
448
- #: dashboard.php:64 dashboard.php:4584
449
  msgid "User Policies"
450
  msgstr "Политики пользователей"
451
 
452
- #: dashboard.php:930
453
  msgid "New users"
454
  msgstr "Новые пользователи"
455
 
456
- #: dashboard.php:943
457
  msgid "My activity"
458
  msgstr "Моя активность"
459
 
460
- #: dashboard.php:1746
461
  msgid "A new version is available"
462
  msgstr "Доступна новая версия"
463
 
464
- #: dashboard.php:2532
465
  msgid "Create Alert"
466
  msgstr "Создать тревожное предупреждение"
467
 
468
- #: dashboard.php:2536
469
  msgid "Delete Alert"
470
  msgstr "Удалить тревожное предупреждение"
471
 
472
- #: dashboard.php:2569
473
  msgid "The alert has been created"
474
  msgstr "Тревожное предупреждение создано"
475
 
476
- #: dashboard.php:4587
477
  msgid "Global"
478
  msgstr "Глобальная"
479
 
480
- #: settings.php:195
481
  msgid "Custom login URL may contain Latin alphanumeric characters, dashes and underscores only"
482
  msgstr "Пользовательский URL входа может содержать только латинские буквы, цифры, тире и знак подчеркивания."
483
 
484
- #: settings.php:207
485
  msgid "Site-specific settings"
486
  msgstr "Специфические настройки сайта"
487
 
488
- #: settings.php:215
489
  msgid "Prefix for plugin cookies"
490
  msgstr "Префикс для куки плагинов"
491
 
492
- #: settings.php:216
493
  msgid "Prefix may contain only Latin alphanumeric characters and underscores"
494
  msgstr "Префикс может содержать только латинские буквы, цифры и знак подчеркивания"
495
 
496
- #: settings.php:518
497
  msgid "Restrict email addresses"
498
  msgstr "Ограничение адресов email"
499
 
500
- #: settings.php:521
501
  msgid "No restrictions"
502
  msgstr "Без ограничений"
503
 
504
- #: settings.php:522
505
  msgid "Deny all email addresses that match the following"
506
  msgstr "Запретить все адреса email совпадающие со следующим"
507
 
508
- #: settings.php:523
509
  msgid "Permit only email addresses that match the following"
510
  msgstr "Разрешить только адреса совпадающие со следующим"
511
 
512
- #: settings.php:528
513
  msgid "Specify email addresses, wildcards or REGEX patterns. Use comma to separate items."
514
  msgstr "Укажите адреса email, маску или регулярные выражения. Элементы разделяются запятой."
515
 
516
- #: settings.php:607
517
  msgid "Lockout notifications"
518
  msgstr "Уведомления о блокировках"
519
 
520
- #: settings.php:636
521
  msgid "Pushbullet device"
522
  msgstr "Устройство Pushbullet"
523
 
524
- #: settings.php:885
525
  msgid "Delete unattended files"
526
  msgstr "Удалить несопровождаемые файлы"
527
 
528
- #: settings.php:911
529
  msgid "Recover plugins files"
530
  msgstr "Восстановление файлов плагинов"
531
 
532
- #: settings.php:918
533
  msgid "These files will never be deleted during automatic cleanup."
534
  msgstr "Эти файлы никогда не будут удалены при автоматической очистке."
535
 
536
- #: cerber-load.php:1552
537
  msgid "Email address is not permitted."
538
  msgstr "Email адрес недопустим."
539
 
540
- #: cerber-load.php:1552
541
  msgid "Please choose another one."
542
  msgstr "Выберите другой."
543
 
544
- #: cerber-load.php:4833
545
  msgid "To delete the alert, click here"
546
  msgstr "Для удаления этого тревожного предупреждения нажмите тут"
547
 
@@ -621,19 +733,19 @@ msgstr "Файл удален"
621
  msgid "File recovered"
622
  msgstr "Файл восстановлен"
623
 
624
- #: cerber-scanner.php:3857
625
  msgid "Recovering WordPress files"
626
  msgstr "Восстановление файлов WordPress"
627
 
628
- #: cerber-scanner.php:3859
629
  msgid "Recovering plugins files"
630
  msgstr "Восстановление файлов плагинов"
631
 
632
- #: settings.php:904
633
  msgid "Automatic recovery of modified and infected files"
634
  msgstr "Автоматическое восстановление измененных и зараженных файлов"
635
 
636
- #: settings.php:907
637
  msgid "Recover WordPress files"
638
  msgstr "Восстановление файлов WordPress"
639
 
@@ -661,7 +773,7 @@ msgstr "Докажите, что это вы"
661
  msgid "Verify"
662
  msgstr "Проверить"
663
 
664
- #: dashboard.php:4586
665
  msgid "Role-based"
666
  msgstr "Основана на ролях"
667
 
@@ -669,243 +781,243 @@ msgstr "Основана на ролях"
669
  msgid "Redirect user after logout"
670
  msgstr "Перенаправить пользователя после выхода"
671
 
672
- #: settings.php:633
673
  msgid "Pushbullet access token"
674
  msgstr "Токен доступа Pushbullet"
675
 
676
- #: cerber-load.php:348
677
  msgid "You are not allowed to log in"
678
  msgstr "Вам не разрешено войти"
679
 
680
- #: admin/cerber-settings.php:461
681
  msgid "Select one or more roles"
682
  msgstr "Выберите одну или несколько ролей"
683
 
684
- #: settings.php:113
685
  msgid "These restrictions do not apply to IP addresses in the White IP Access List"
686
  msgstr "Эти ограничения не применяются к IP адресам из белого списка"
687
 
688
- #: settings.php:650
689
  msgid "Send reports on"
690
  msgstr "Отправлять отчеты в"
691
 
692
- #: settings.php:371
693
  msgid "Allow these namespaces"
694
  msgstr "Разрешить эти пространства имен"
695
 
696
- #: settings.php:367
697
  msgid "Allow REST API for these roles"
698
  msgstr "Разрешить REST API для следующих ролей"
699
 
700
- #: settings.php:353
701
  msgid "Block access to users' data via REST API"
702
  msgstr "Блокировать доступ к данным пользователей через REST API"
703
 
704
- #: settings.php:348
705
  msgid "Access to WordPress REST API"
706
  msgstr "Доступ к WordPress REST API"
707
 
708
- #: settings.php:1141
709
  msgid "The full access mode requires the PRO version of WP Cerber"
710
  msgstr "Полный доступ требует PRO версии WP Cerber"
711
 
712
- #: settings.php:1125
713
  msgid "Read-only mode"
714
  msgstr "Доступ только для чтения"
715
 
716
- #: settings.php:1124
717
  msgid "Full access mode"
718
  msgstr "Полный доступ"
719
 
720
- #: settings.php:1121
721
  msgid "Access to this website"
722
  msgstr "Доступ к этому сайту"
723
 
724
- #: settings.php:1115
725
  msgid "Limit access by IP address"
726
  msgstr "Ограничить доступ IP адресом"
727
 
728
- #: settings.php:1092
729
  msgid "Use master language"
730
  msgstr "Использовать основной язык"
731
 
732
- #: settings.php:1088
733
  msgid "Add @ site to the page title"
734
  msgstr "Добавить @ сайт к заголовку страницы"
735
 
736
- #: settings.php:1084
737
  msgid "Show \"Switched to\" notification"
738
  msgstr "Показывать уведомление о переходах"
739
 
740
- #: settings.php:1080
741
  msgid "Return to the website list"
742
  msgstr "Вернуться к списку сайтов"
743
 
744
- #: settings.php:1072
745
  msgid "Master settings"
746
  msgstr "Настройки режима основного сайта"
747
 
748
- #: settings.php:503
749
  msgid "Redirect to URL"
750
  msgstr "Перенаправление на URL"
751
 
752
- #: settings.php:498 settings.php:1363
753
  msgid "Only registered and logged in users are allowed to view this website"
754
  msgstr "Только зарегистрированные и авторизованные пользователи могут просматривать этот сайт"
755
 
756
- #: settings.php:488
757
  msgid "Do not apply these policy to the IP addresses in the White IP Access List"
758
  msgstr "Не применять эти политики к IP адресам из белого списка"
759
 
760
- #: settings.php:481
761
  msgid "Only registered and logged in website users have access to the website"
762
  msgstr "Только зарегистрированные и авторизованные пользователи могут получить доступ к этому сайту"
763
 
764
- #: settings.php:480
765
  msgid "Authorized users only"
766
  msgstr "Только для авторизованных пользователей"
767
 
768
- #: dashboard.php:4659
769
  msgid "Changelog"
770
  msgstr "Журнал изменений"
771
 
772
- #: dashboard.php:3225
773
  msgid "Save all rules"
774
  msgstr "Сохранить все правила"
775
 
776
- #: dashboard.php:1144
777
  msgid "Filter by registered user"
778
  msgstr "Фильтровать по зарегистрированным пользователям"
779
 
780
- #: dashboard.php:617
781
  msgid "Default settings have been loaded"
782
  msgstr "Загружены настройки по умолчанию"
783
 
784
- #: nexus/cerber-nexus.php:266
785
  msgid "Install the access token on the master website."
786
  msgstr "Установите токен доступа на основном сайте."
787
 
788
- #: nexus/cerber-nexus.php:265
789
  msgid "This website is set as slave."
790
  msgstr "Этот сайт установлен как зависимый."
791
 
792
- #: nexus/cerber-nexus.php:262
793
  msgid "Add slave websites by using access tokens."
794
  msgstr "Добавьте зависимые сайты используя токены доступа."
795
 
796
- #: nexus/cerber-nexus.php:261
797
  msgid "This website is set as master."
798
  msgstr "Этот сайт установлен основным."
799
 
800
- #: nexus/cerber-nexus.php:146
801
  msgid "Disable slave mode"
802
  msgstr "Отключить зависимый режим"
803
 
804
- #: nexus/cerber-nexus.php:146
805
  msgid "To revoke the token and disable remote management, click here:"
806
  msgstr "Для отзыва токена и отключения удаленного управления нажмите здесь:"
807
 
808
- #: nexus/cerber-nexus.php:145
809
  msgid "Are you sure? This permanently invalidates the token."
810
  msgstr "Вы уверены? Это сделает токен недействительным."
811
 
812
- #: nexus/cerber-nexus.php:143
813
  msgid "The token is unique to this website. Keep it secret. Install the token on a master website to grant access to this website."
814
  msgstr "Этот токен уникален для этого сайта. Сохраните его в тайне. Установите токен на основном сайте, чтобы предоставить доступ к этому сайту."
815
 
816
- #: nexus/cerber-nexus.php:141
817
  msgid "Secret Access Token"
818
  msgstr "Секретный токен доступа"
819
 
820
- #: nexus/cerber-nexus.php:95 nexus/cerber-nexus.php:99
821
  msgid "Slave Settings"
822
  msgstr "Настройки зависимого режима"
823
 
824
- #: nexus/cerber-nexus.php:71
825
  msgid "To proceed, please select the mode for this website"
826
  msgstr "Для продолжения выберите режим для сайта"
827
 
828
- #: nexus/cerber-nexus.php:66
829
  msgid "Configure this website as a master to manage other website"
830
  msgstr "Настроить этот сайт как основной для управления другими сайтами"
831
 
832
- #: nexus/cerber-nexus.php:65
833
  msgid "Enable master mode"
834
  msgstr "Включить режим основного сайта"
835
 
836
- #: nexus/cerber-nexus.php:62
837
  msgid "This website can be managed from a master website"
838
  msgstr "Этот сайт может управляться с основного сайта"
839
 
840
- #: cerber-load.php:5102 nexus/cerber-nexus.php:61
841
  msgid "Enable slave mode"
842
  msgstr "Включить зависимый режим"
843
 
844
- #: nexus/cerber-nexus-master.php:1397 nexus/cerber-nexus-master.php:1405
845
  msgid "Active plugins and updates on"
846
  msgstr "Активные плагины и обновления на"
847
 
848
- #: nexus/cerber-nexus-master.php:1375
849
  msgid "A newer version is available"
850
  msgstr "Доступна новая версия"
851
 
852
- #: nexus/cerber-nexus-master.php:1331
853
  msgid "Are you sure you want to delete selected websites?"
854
  msgstr "Вы точно хотите удалить выделенные сайты?"
855
 
856
- #: nexus/cerber-nexus-master.php:1265
857
  msgid "Visit Site"
858
  msgstr "Посетить сайт"
859
 
860
- #: nexus/cerber-nexus-master.php:1250 nexus/cerber-nexus.php:89
861
- #: nexus/cerber-nexus.php:99
862
  msgid "My Websites"
863
  msgstr "Мои сайты"
864
 
865
- #: nexus/cerber-nexus-master.php:1247
866
  msgid "You are here:"
867
  msgstr "Вы здесь:"
868
 
869
- #: nexus/cerber-nexus-master.php:1031
870
  msgid "You have switched back to the master website"
871
  msgstr "Вы перешли назад на основной сайт"
872
 
873
- #: nexus/cerber-nexus-master.php:1021
874
  msgid "You have switched to %s"
875
  msgstr "Вы перешли к %s"
876
 
877
- #: nexus/cerber-nexus-master.php:690
878
  msgid "Invalid response from the slave website"
879
  msgstr "Неверный ответ с зависимого сайта"
880
 
881
- #: nexus/cerber-nexus-master.php:453
882
  msgid "Website has been deleted"
883
  msgid_plural "%s websites have been deleted"
884
  msgstr[0] "Сайт удален"
885
  msgstr[1] "%s сайта удалено"
886
  msgstr[2] "%s сайтов удалено"
887
 
888
- #: nexus/cerber-nexus-master.php:333
889
  msgid "Keep in mind: You have added the website that does not support SSL encryption. This may lead to data leakage."
890
  msgstr "Имейте ввиду: Вы добавили сайт, который не поддерживает SSL. Это может привести к утечке данных."
891
 
892
- #: nexus/cerber-nexus-master.php:330
893
  msgid "Switch to the Dashboard"
894
  msgstr "Перейти в консоль"
895
 
896
- #: nexus/cerber-nexus-master.php:329
897
  msgid "Click to edit"
898
  msgstr "Нажмите для редактирования"
899
 
900
- #: nexus/cerber-nexus-master.php:328
901
  msgid "The website has been added successfully"
902
  msgstr "Сайт добавлен"
903
 
904
- #: nexus/cerber-nexus-master.php:319
905
  msgid "The website you are trying to add is already in the list"
906
  msgstr "Добавляемый вами сайт уже присутствует в списке"
907
 
908
- #: nexus/cerber-nexus-master.php:289
909
  msgid "Security access token is invalid"
910
  msgstr "Токен безопасного доступа не верен"
911
 
@@ -937,31 +1049,31 @@ msgstr "Имя"
937
  msgid "Website Owner"
938
  msgstr "Владелец сайта"
939
 
940
- #: nexus/cerber-nexus-master.php:117
941
  msgid "Display as"
942
  msgstr "Отображать как"
943
 
944
- #: nexus/cerber-nexus-master.php:112
945
  msgid "Website URL"
946
  msgstr "URL сайта"
947
 
948
- #: nexus/cerber-nexus-master.php:102
949
  msgid "Website Properties"
950
  msgstr "Свойства сайта"
951
 
952
- #: nexus/cerber-nexus-master.php:94
953
  msgid "Select an existing group or enter a new one to add it"
954
  msgstr "Выберите имеющуюся группу или введите новую для добавления"
955
 
956
- #: nexus/cerber-slave-list.php:410
957
  msgid "Disable master mode"
958
  msgstr "Отключить режим управляющего сайта"
959
 
960
- #: nexus/cerber-slave-list.php:410
961
  msgid "Add a new one"
962
  msgstr "Добавить новый"
963
 
964
- #: nexus/cerber-slave-list.php:410
965
  msgid "No websites configured."
966
  msgstr "Ни один сайт не настроен."
967
 
@@ -1033,7 +1145,7 @@ msgstr "Заблокированные пользователи"
1033
  msgid "An optional message for this user"
1034
  msgstr "Необязательное сообщение для этого пользователя"
1035
 
1036
- #: settings.php:494 cerber-users.php:68
1037
  msgid "User Message"
1038
  msgstr "Сообщение пользователю"
1039
 
@@ -1052,198 +1164,198 @@ msgstr "Заблокировать пользователя"
1052
 
1053
  #. translators: Time difference between two dates, in seconds (sec=second). 1:
1054
  #. Number of seconds
1055
- #: common.php:1557
1056
  msgid "%s sec"
1057
  msgid_plural "%s secs"
1058
  msgstr[0] "%s сек."
1059
  msgstr[1] "%s сек."
1060
  msgstr[2] "%s сек."
1061
 
1062
- #: common.php:1368
1063
  msgid "Blocked by administrator"
1064
  msgstr "Заблокирован администратором"
1065
 
1066
- #: common.php:1344
1067
  msgid "Invalid master credentials"
1068
  msgstr "Неверная мастер пара логин/пароль"
1069
 
1070
- #: admin/cerber-settings.php:548 dashboard.php:3096
1071
  msgid "Save Changes"
1072
  msgstr "Сохранить изменения"
1073
 
1074
- #: common.php:1355
1075
  msgid "IP address is locked out"
1076
  msgstr "IP адрес заблокирован"
1077
 
1078
- #: dashboard.php:824
1079
  msgid "Additional Details"
1080
  msgstr "Дополнительная информация"
1081
 
1082
- #: settings.php:702
1083
  msgid "Ignore logged in users"
1084
  msgstr "Игнорировать авторизованных пользователей"
1085
 
1086
- #: settings.php:690
1087
  msgid "Erroneous Request Shielding"
1088
  msgstr "Защита от ошибочных запросов"
1089
 
1090
- #: settings.php:673 settings.php:698
1091
  msgid "Maximum security"
1092
  msgstr "Максимальная безопасность"
1093
 
1094
- #: settings.php:672 settings.php:697
1095
  msgid "Maximum compatibility"
1096
  msgstr "Максимальная совместимость"
1097
 
1098
- #: settings.php:749
1099
  msgid "Save software errors"
1100
  msgstr "Сохранять ошибки ПО"
1101
 
1102
- #: settings.php:693
1103
  msgid "Enable error shielding"
1104
  msgstr "Включить защиту от ошибок"
1105
 
1106
- #: settings.php:665
1107
  msgid "Traffic Inspection"
1108
  msgstr "Инспектор трафика"
1109
 
1110
- #: dashboard.php:5008 dashboard.php:5009
1111
  msgid "Add to menu"
1112
  msgstr "Добавить в меню"
1113
 
1114
- #: dashboard.php:4969
1115
  msgid "WooCommerce Log Out"
1116
  msgstr "Выход WooCommerce"
1117
 
1118
- #: dashboard.php:4968
1119
  msgid "WooCommerce Log In"
1120
  msgstr "Вход WooCommerce"
1121
 
1122
- #: dashboard.php:4965
1123
  msgid "Register"
1124
  msgstr "Регистрация"
1125
 
1126
- #: dashboard.php:4964
1127
  msgid "Log Out"
1128
  msgstr "Выход"
1129
 
1130
- #: dashboard.php:4963
1131
  msgid "Log In"
1132
  msgstr "Вход"
1133
 
1134
- #: dashboard.php:3517
1135
  msgid "Page generation time"
1136
  msgstr "Время генерации страницы"
1137
 
1138
- #: common.php:1420
1139
  msgid "Multiple suspicious requests"
1140
  msgstr "Множественные подозрительные запросы"
1141
 
1142
- #: dashboard.php:4928
1143
  msgid "Know more about all advantages at"
1144
  msgstr "Узнайте больше о всех преимуществах на"
1145
 
1146
- #: dashboard.php:4927
1147
  msgid "These features are available in a professional version of the plugin."
1148
  msgstr "Эти возможности доступны в профессиональной версии плагина."
1149
 
1150
- #: common.php:1367
1151
  msgid "Suspicious JavaScript code detected"
1152
  msgstr "Найден подозрительный код JavaScript"
1153
 
1154
- #: cerber-scanner.php:5765
1155
  msgid "All scans"
1156
  msgstr "Все проверки"
1157
 
1158
- #: cerber-scanner.php:5716
1159
  msgid "Click here to see the full list of files"
1160
  msgstr "Нажмите здесь для просмотра полного списка файлов"
1161
 
1162
- #: cerber-scanner.php:5716
1163
  msgid "No files match the specified filter."
1164
  msgstr "Нет файлов подходящих к указанному фильтру."
1165
 
1166
- #: cerber-scanner.php:3849
1167
  msgid "Preparing for the scan"
1168
  msgstr "Подготовка сканирования"
1169
 
1170
- #: settings.php:811 settings.php:1105 settings.php:1132
1171
  msgid "Enable diagnostic logging"
1172
  msgstr "Включить журнал диагностики"
1173
 
1174
- #: settings.php:332
1175
  msgid "Disable PHP error displaying"
1176
  msgstr "Отключить отображение ошибок PHP"
1177
 
1178
- #: settings.php:328
1179
  msgid "Block execution of PHP scripts in the WordPress media folder"
1180
  msgstr "Отключить исполнение PHP скриптов в папке медиафайлов WordPress"
1181
 
1182
- #: settings.php:327
1183
  msgid "Disable PHP in uploads"
1184
  msgstr "Отключить PHP в папке загрузок"
1185
 
1186
- #: settings.php:306
1187
  msgid "Use English for admin interface"
1188
  msgstr "Use English for admin interface (использовать английский язык для интерфейса администрирования)"
1189
 
1190
- #: dashboard.php:2760
1191
  msgid "All files have been processed"
1192
  msgstr "Все файлы обработаны"
1193
 
1194
- #: dashboard.php:2759
1195
  msgid "Some errors occurred"
1196
  msgstr "Возникли ошибки"
1197
 
1198
- #: dashboard.php:2757
1199
  msgid "These files have been added to the ignore list"
1200
  msgstr "Эти файлы были добавлены в список игнорирования"
1201
 
1202
- #: dashboard.php:2756
1203
  msgid "Do you want to add selected files to the ignore list?"
1204
  msgstr "Вы точно хотите добавить выбранные файлы в список игнорирования?"
1205
 
1206
- #: dashboard.php:2753
1207
  msgid "These files have been moved to the quarantine"
1208
  msgstr "Эти файлы были перемещены в карантин"
1209
 
1210
- #: dashboard.php:2752
1211
  msgid "Are you sure you want to delete selected files?"
1212
  msgstr "Вы точно хотите удалить выбранные файлы?"
1213
 
1214
- #: dashboard.php:4658
1215
  msgid "Log"
1216
  msgstr "Журнал"
1217
 
1218
- #: cerber-scanner.php:5898
1219
  msgid "Added"
1220
  msgstr "Добавлено"
1221
 
1222
- #: cerber-scanner.php:5870
1223
  msgid "The list is empty."
1224
  msgstr "Список пуст."
1225
 
1226
- #: cerber-scanner.php:5868
1227
  msgid "Activity Insights"
1228
  msgstr "На виду: активность"
1229
 
1230
- #: cerber-scanner.php:5867
1231
  msgid "Traffic Insights"
1232
  msgstr "На виду: трафик"
1233
 
1234
- #: cerber-scanner.php:5866
1235
  msgid "User Insights"
1236
  msgstr "На виду: пользователи"
1237
 
1238
- #: cerber-scanner.php:5865 cerber-scanner.php:5892
1239
  msgid "Remove from the list"
1240
  msgstr "Удалить из списка"
1241
 
1242
- #: cerber-scanner.php:5864
1243
  msgid "Apply"
1244
  msgstr "Применить"
1245
 
1246
- #: dashboard.php:4625
1247
  msgid "Ignore List"
1248
  msgstr "Список игнорируемого"
1249
 
@@ -1251,68 +1363,68 @@ msgstr "Список игнорируемого"
1251
  msgid "Ignore"
1252
  msgstr "Игнорировать"
1253
 
1254
- #: settings.php:940
1255
  msgid "Use comma to separate items."
1256
  msgstr "Используйте запятую для разделения элементов."
1257
 
1258
- #: settings.php:936
1259
  msgid "Files with these extensions"
1260
  msgstr "Файлы с этими расширениями"
1261
 
1262
- #: settings.php:933
1263
  msgid "Use absolute paths. One item per line."
1264
  msgstr "Используйте абсолютные пути. Один элемент на строку."
1265
 
1266
- #: settings.php:929
1267
  msgid "Files in these directories"
1268
  msgstr "Файлы в этих папках"
1269
 
1270
- #: settings.php:925
1271
  msgid "Files in the sessions directory"
1272
  msgstr "Файлы в папке сессий"
1273
 
1274
- #: settings.php:921
1275
  msgid "Files in the temporary directory"
1276
  msgstr "Файлы в временной папке"
1277
 
1278
- #: settings.php:917
1279
  msgid "Exclusions"
1280
  msgstr "Исключения"
1281
 
1282
- #: settings.php:898
1283
  msgid "Files with unwanted extensions"
1284
  msgstr "Файлы с нежелательными расширениями"
1285
 
1286
- #: settings.php:889
1287
  msgid "Files in the uploads folder"
1288
  msgstr "Файлы в папке загрузки"
1289
 
1290
- #: settings.php:881
1291
  msgid "Automatic cleanup of malware and suspicious files"
1292
  msgstr "Автоматическая очистка вредоносных и подозрительных файлов"
1293
 
1294
- #: dashboard.php:1743
1295
  msgid "Integrity"
1296
  msgstr "Целостность"
1297
 
1298
- #: dashboard.php:1724
1299
  msgctxt "Example: Last malware scan: 23 Jan 2018"
1300
  msgid "Last malware scan"
1301
  msgstr "Последняя проверка на вредоносное ПО"
1302
 
1303
- #: common.php:1366
1304
  msgid "Suspicious SQL code detected"
1305
  msgstr "Обнаружен подозрительный SQL код"
1306
 
1307
- #: common.php:1327
1308
  msgid "Attempt to upload malicious file denied"
1309
  msgstr "Заблокирована попытка загрузки вредоносного файла"
1310
 
1311
- #: cerber-scanner.php:5389
1312
  msgid "Automatically moved to quarantine"
1313
  msgstr "Автоматически перемещен в карантин"
1314
 
1315
- #: cerber-scanner.php:5336
1316
  msgid "Deleted"
1317
  msgstr "Удален"
1318
 
@@ -1336,11 +1448,11 @@ msgstr "Этот файл содержит исполняемый код и мо
1336
  msgid "Malicious code found"
1337
  msgstr "Найден вредоносный код"
1338
 
1339
- #: dashboard.php:4624
1340
  msgid "Cleaning up"
1341
  msgstr "Очистка"
1342
 
1343
- #: cerber-news.php:136
1344
  msgid "Awesome!"
1345
  msgstr "Замечательно!"
1346
 
@@ -1348,153 +1460,153 @@ msgstr "Замечательно!"
1348
  msgid "Defends WordPress against hacker attacks, spam, trojans, and viruses. Malware scanner and integrity checker. Hardening WordPress with a set of comprehensive security algorithms. Spam protection with a sophisticated bot detection engine and reCAPTCHA. Tracks user and intruder activity with powerful email, mobile and desktop notifications."
1349
  msgstr "Защищает WordPress от атак хакеров, спама, троянов и вирусов. Включает сканер вредоносного ПО и проверку целостности. Усиление защиты WordPress набором комплексных алгоритмов безопасности. Защита от спама тонким определением ботов и reCAPTCHA. Отслеживание пользовательской активности и вторжений с уведомлением по email, а также через уведомления браузера или на мобильные устройства."
1350
 
1351
- #: admin/cerber-settings.php:502
1352
  msgctxt "preposition of time like: at 11:00"
1353
  msgid "at"
1354
  msgstr "в"
1355
 
1356
- #: dashboard.php:4540
1357
- msgid "Antispam engine"
1358
  msgstr "Антиспам защита"
1359
 
1360
- #: common.php:1564
1361
  msgctxt "preposition of a period of time like: in 6 hours"
1362
  msgid "in %s"
1363
  msgstr "Через %s"
1364
 
1365
- #: cerber-scanner.php:5841
1366
  msgid "The file has been restored to its original location."
1367
  msgstr "Файл был восстановлен по оригинальному местоположению."
1368
 
1369
- #: cerber-scanner.php:5827
1370
  msgid "The file has been deleted permanently."
1371
  msgstr "Файл удален навсегда."
1372
 
1373
- #: cerber-scanner.php:5751 cerber-scanner.php:5899
1374
  msgid "File"
1375
  msgstr "Файл"
1376
 
1377
- #: cerber-scanner.php:5750
1378
  msgid "Size"
1379
  msgstr "Размер"
1380
 
1381
- #: cerber-scanner.php:5749
1382
  msgid "Automatic deletion"
1383
  msgstr "Автоматическое удаление"
1384
 
1385
- #: cerber-scanner.php:5748
1386
  msgid "Moved to quarantine"
1387
  msgstr "Перемещен в карантин"
1388
 
1389
- #: cerber-scanner.php:5736
1390
  msgid "Delete permanently"
1391
  msgstr "Удалить навсегда"
1392
 
1393
- #: cerber-scanner.php:5739
1394
  msgid "Restore"
1395
  msgstr "Восстановить"
1396
 
1397
- #: cerber-scanner.php:5649
1398
  msgid "There are no files in the quarantine at the moment."
1399
  msgstr "В карантине сейчас нет файлов."
1400
 
1401
- #: cerber-scanner.php:3990 cerber-scanner.php:5747
1402
  msgid "Scanned"
1403
  msgstr "Проверено"
1404
 
1405
- #: cerber-scanner.php:3981
1406
  msgid "Unattended files"
1407
  msgstr "Несопровождаемые файлы"
1408
 
1409
- #: cerber-scanner.php:3969
1410
  msgid "Changed files"
1411
  msgstr "Измененные файлы"
1412
 
1413
- #: cerber-scanner.php:3965
1414
  msgid "New files"
1415
  msgstr "Новые файлы"
1416
 
1417
- #: nexus/cerber-slave-list.php:338 cerber-scanner.php:3961
1418
  msgid "Vulnerabilities"
1419
  msgstr "Уязвимости"
1420
 
1421
- #: cerber-scanner.php:3949
1422
  msgid "Performance"
1423
  msgstr "Производительность"
1424
 
1425
- #: cerber-scanner.php:3941
1426
  msgid "Finished"
1427
  msgstr "Завершено"
1428
 
1429
- #: cerber-scanner.php:3937
1430
  msgid "Started"
1431
  msgstr "Начато"
1432
 
1433
- #: dashboard.php:4626
1434
  msgid "Quarantine"
1435
  msgstr "Карантин"
1436
 
1437
- #: cerber-load.php:344
1438
  msgid "You have exceeded the number of allowed login attempts. Please try again in %d minutes."
1439
  msgstr "Вы исчерпали максимально допустимое количество попыток входа. Попробуйте снова через %d минут."
1440
 
1441
- #: settings.php:840
1442
  msgid "Scan results reporting"
1443
  msgstr "Отчет о результатах проверки"
1444
 
1445
- #: settings.php:825
1446
  msgid "Automated recurring scan schedule"
1447
  msgstr "План автоматической повторной проверки"
1448
 
1449
- #: dashboard.php:3966
1450
  msgid "Errors"
1451
  msgstr "Ошибки"
1452
 
1453
- #: dashboard.php:936 dashboard.php:3965
1454
  msgid "Suspicious activity"
1455
  msgstr "Подозрительная активность"
1456
 
1457
- #: dashboard.php:1481
1458
  msgid "Activated"
1459
  msgstr "Активация"
1460
 
1461
- #: common.php:1650
1462
  msgid "Bytes"
1463
  msgstr "Байт"
1464
 
1465
- #: common.php:1418
1466
  msgid "Attempt to upload a file with malicious code"
1467
  msgstr "Попытка загрузки файла с вредоносным кодом"
1468
 
1469
- #: common.php:1365 common.php:1417
1470
  msgid "Malicious code detected"
1471
  msgstr "Обнаружен вредоносный код"
1472
 
1473
- #: common.php:1364
1474
  msgid "Suspicious number of nested values"
1475
  msgstr "Подозрительное количество вложенных значений"
1476
 
1477
- #: common.php:1363
1478
  msgid "Suspicious number of fields"
1479
  msgstr "Подозрительное число полей"
1480
 
1481
- #: common.php:1341
1482
  msgid "User activated"
1483
  msgstr "Пользователь активирован"
1484
 
1485
- #: common.php:1338
1486
  msgid "Malicious request denied"
1487
  msgstr "Заблокирован вредоносный запрос"
1488
 
1489
- #: cerber-scanner.php:3853
1490
  msgid "Scanning the session folder for files"
1491
  msgstr "Поиск файлов в каталоге сессий"
1492
 
1493
- #: cerber-scanner.php:3852
1494
  msgid "Scanning the temp folder for files"
1495
  msgstr "Поиск файлов в временном каталоге"
1496
 
1497
- #: cerber-scanner.php:3851
1498
  msgid "Scanning the upload folder for files"
1499
  msgstr "Поиск файлов в каталоге uploads"
1500
 
@@ -1506,131 +1618,127 @@ msgstr "Невозможно проверить целостность из-за
1506
  msgid "Vulnerability found"
1507
  msgstr "Обнаружена уязвимость"
1508
 
1509
- #: admin/cerber-settings.php:876
1510
  msgid "Unable to update the schedule"
1511
  msgstr "Невозможно обновить запланированное"
1512
 
1513
- #: admin/cerber-settings.php:873
1514
  msgid "The schedule has been updated"
1515
  msgstr "Запланированное обновлено"
1516
 
1517
- #: settings.php:866
1518
  msgid "Include scan errors"
1519
  msgstr "Включать ошибки сканера"
1520
 
1521
- #: settings.php:862
1522
  msgid "Include file sizes"
1523
  msgstr "Включать размеры файлов"
1524
 
1525
- #: settings.php:858
1526
  msgid "If new issues found"
1527
  msgstr "Если найдены новые проблемы"
1528
 
1529
- #: settings.php:857
1530
  msgid "If any changes in scan results occurred"
1531
  msgstr "Если найдены изменения в результатах сканирования"
1532
 
1533
- #: settings.php:856
1534
  msgid "After every scan"
1535
  msgstr "После каждого сканирования"
1536
 
1537
- #: settings.php:853
1538
  msgid "Send email report"
1539
  msgstr "Отсылать отчет по эл.почте"
1540
 
1541
- #: settings.php:844
1542
  msgid "Report an issue if any of the following is true"
1543
  msgstr "Отчитываться о проблемах, если нижеперечисленное верно"
1544
 
1545
- #: settings.php:849 settings.php:894
1546
  msgid "High severity"
1547
  msgstr "Высокая тяжесть"
1548
 
1549
- #: settings.php:848 settings.php:893
1550
  msgid "Medium severity"
1551
  msgstr "Средняя тяжесть"
1552
 
1553
- #: settings.php:847 settings.php:892
1554
  msgid "Low severity"
1555
  msgstr "Низкая тяжесть"
1556
 
1557
- #: settings.php:833
1558
  msgid "Launch Full Scan"
1559
  msgstr "Запуск полной проверки"
1560
 
1561
- #: settings.php:828
1562
  msgid "Launch Quick Scan"
1563
  msgstr "Запуск быстрой проверки"
1564
 
1565
- #: settings.php:799
1566
  msgid "Monitor modified files"
1567
  msgstr "Наблюдать за изменением файлов"
1568
 
1569
- #: settings.php:795
1570
  msgid "Monitor new files"
1571
  msgstr "Наблюдать за новыми файлами"
1572
 
1573
- #: settings.php:792
1574
- msgid "Specify directories to exclude from scanning. Use absolute paths. One item per line."
1575
- msgstr "Укажите каталоги для исключения проверки. Используйте абсолютный путь, 1 элемент на строку."
1576
-
1577
- #: cerber-scanner.php:5405
1578
  msgid "To view full report visit"
1579
  msgstr "Для просмотра полного отчета зайдите на"
1580
 
1581
- #: cerber-scanner.php:5251
1582
  msgid "Files scanned"
1583
  msgstr "Проверено файлов"
1584
 
1585
- #: cerber-scanner.php:5238
1586
  msgid "Quick Scan Report"
1587
  msgstr "Отчет быстрой проверки"
1588
 
1589
- #: cerber-scanner.php:5238
1590
  msgid "Full Scan Report"
1591
  msgstr "Отчет полной проверки"
1592
 
1593
- #: cerber-scanner.php:4691
1594
  msgid "File access error. Possibly scan results are outdated. Please run Quick or Full Scan."
1595
  msgstr "Ошибка доступа к файлу. Возможно результаты проверки устарели. Запустите быструю или полную проверку."
1596
 
1597
- #: cerber-scanner.php:4092
1598
  msgid "You have to upload a ZIP archive from which you've installed it. This enables the security scanner to verify the integrity of the code and detect malware."
1599
  msgstr "Вам нужно загрузить zip-архив, из которого вы это установили. Это даст возможность сканеру безопасности проверить целостность файлов, кода и определить вредоносный код."
1600
 
1601
- #: cerber-scanner.php:4090
1602
  msgid "We have not found any integrity data to verify"
1603
  msgstr "Не найдены данные о целостности для проверки"
1604
 
1605
- #: cerber-scanner.php:3862
1606
  msgid "Finalizing the scan"
1607
  msgstr "Завершение проверки"
1608
 
1609
- #: cerber-scanner.php:3861
1610
  msgid "Searching for malicious code"
1611
  msgstr "Поиск вредоносного кода"
1612
 
1613
- #: cerber-scanner.php:3860
1614
  msgid "Verifying the integrity of the themes"
1615
  msgstr "Проверка целостности тем"
1616
 
1617
- #: cerber-scanner.php:3858
1618
  msgid "Verifying the integrity of the plugins"
1619
  msgstr "Проверка целостности плагинов"
1620
 
1621
- #: cerber-scanner.php:3856
1622
  msgid "Verifying the integrity of WordPress"
1623
  msgstr "Проверка целостности WordPress"
1624
 
1625
- #: cerber-scanner.php:3855
1626
  msgid "Checking for new and modified files"
1627
  msgstr "Поиск новых и измененных файлов"
1628
 
1629
- #: cerber-scanner.php:3854
1630
  msgid "Parsing the list of files"
1631
  msgstr "Обработка списка файлов"
1632
 
1633
- #: cerber-scanner.php:3850
1634
  msgid "Scanning folders for files"
1635
  msgstr "Поиск файлов в каталогах"
1636
 
@@ -1666,9 +1774,9 @@ msgstr "Каждые 3 часа"
1666
  msgid "Every hour"
1667
  msgstr "Каждый час"
1668
 
1669
- #: settings.php:671 settings.php:696 settings.php:1126 dashboard.php:1727
1670
- #: dashboard.php:1729 cerber-users.php:20 cerber-users.php:445
1671
- #: cerber-scanner.php:1622
1672
  msgid "Disabled"
1673
  msgstr "Отключено"
1674
 
@@ -1684,15 +1792,15 @@ msgstr "Файл с нежелательным расширением"
1684
  msgid "Suspicious directives found"
1685
  msgstr "Найдены подозрительные директивы"
1686
 
1687
- #: cerber-scanner.php:1586 cerber-scanner.php:3973
1688
  msgid "Checksum mismatch"
1689
  msgstr "Несовпадение контрольной суммы"
1690
 
1691
- #: dashboard.php:1728 cerber-scanner.php:1065
1692
  msgid "Quick Scan"
1693
  msgstr "Быстрая проверка"
1694
 
1695
- #: dashboard.php:1730 cerber-scanner.php:1065
1696
  msgid "Full Scan"
1697
  msgstr "Полная проверка"
1698
 
@@ -1708,11 +1816,11 @@ msgstr "Предыдущая попытка проверки, начатая %s,
1708
  msgid "Currently a scheduled scan in progress. Please wait until it is finished."
1709
  msgstr "Сейчас выполняется запланированная проверка. Дождитесь пока она завершится."
1710
 
1711
- #: cerber-load.php:4154
1712
  msgid "Scanner Report"
1713
  msgstr "Отчет проверки"
1714
 
1715
- #: dashboard.php:4623
1716
  msgid "Scheduling"
1717
  msgstr "Планирование"
1718
 
@@ -1720,59 +1828,59 @@ msgstr "Планирование"
1720
  msgid "WP Cerber Security, Antispam & Malware Scan"
1721
  msgstr "WP Cerber Security, Antispam & Malware Scan"
1722
 
1723
- #: settings.php:815
1724
  msgid "Delete quarantined files after"
1725
  msgstr "Удалять файлы карантина через"
1726
 
1727
- #: settings.php:807
1728
  msgid "Scan session directory"
1729
  msgstr "Проверять каталог файлов сессий"
1730
 
1731
- #: settings.php:803
1732
  msgid "Scan temporary directory"
1733
  msgstr "Проверять каталог временных файлов"
1734
 
1735
- #: settings.php:788
1736
  msgid "Directories to exclude"
1737
  msgstr "Каталоги для исключения"
1738
 
1739
- #: settings.php:785
1740
  msgid "Specify file extensions to search for. Full scan only. Use comma to separate items."
1741
  msgstr "Укажите расширения файлов для поиска. Используется только при полной проверке. Испольуйте запятую для разделения элементов."
1742
 
1743
- #: settings.php:781
1744
  msgid "Unwanted file extensions"
1745
  msgstr "Нежелательные расширения файлов"
1746
 
1747
- #: settings.php:778
1748
  msgid "Specify custom PHP code signatures. One item per line. To specify a REGEX pattern, enclose a whole line in two braces."
1749
  msgstr "Укажите пользовательские подписи PHP кода. Один элемент на строку. Для использования регулярных выражений, включите строку в фигурные скобки { }."
1750
 
1751
- #: settings.php:774
1752
  msgid "Custom signatures"
1753
  msgstr "Пользовательские отпечатки"
1754
 
1755
- #: settings.php:771
1756
  msgid "Scanner settings"
1757
  msgstr "Настройки сканера"
1758
 
1759
- #: settings.php:167
1760
  msgid "Disable dashboard redirection"
1761
  msgstr "Отключить перенаправление с консоли"
1762
 
1763
- #: settings.php:146 settings.php:487 settings.php:677
1764
  msgid "Use White IP Access List"
1765
  msgstr "Использовать белый список IP"
1766
 
1767
- #: cerber-scanner.php:3997 cerber-scanner.php:5282
1768
  msgid "Issues total"
1769
  msgstr "Всего проблем"
1770
 
1771
- #: cerber-scanner.php:3997
1772
  msgid "Critical issues"
1773
  msgstr "Критические проблемы"
1774
 
1775
- #: cerber-scanner.php:3990
1776
  msgid "Files to scan"
1777
  msgstr "Файлы для проверки"
1778
 
@@ -1780,7 +1888,7 @@ msgstr "Файлы для проверки"
1780
  msgid "Custom signature found"
1781
  msgstr "Найден пользовательский отпечаток"
1782
 
1783
- #: cerber-scanner.php:3977
1784
  msgid "Unwanted extensions"
1785
  msgstr "Нежелательные расширения"
1786
 
@@ -1800,7 +1908,7 @@ msgstr "Найден подозрительный код"
1800
  msgid "Content has been modified"
1801
  msgstr "Содержимое изменено"
1802
 
1803
- #: cerber-scanner.php:1584 cerber-scanner.php:5091
1804
  msgid "Unable to open file"
1805
  msgstr "Невозможно открыть файл"
1806
 
@@ -1852,211 +1960,207 @@ msgstr "Начать полную проверку"
1852
  msgid "Start Quick Scan"
1853
  msgstr "Начать быструю проверку"
1854
 
1855
- #: dashboard.php:4621
1856
  msgid "Security Scanner"
1857
  msgstr "Сканер безопасности"
1858
 
1859
- #: dashboard.php:67 dashboard.php:4619
1860
  msgid "Site Integrity"
1861
  msgstr "Целостность сайта"
1862
 
1863
- #: settings.php:110
1864
  msgid "If you forget your Custom login URL, you will be unable to log in."
1865
  msgstr "Если вы забудете ваш пользовательский URL входа, то вы не сможете войти."
1866
 
1867
- #: settings.php:110
1868
  msgid "Be careful about enabling these options."
1869
  msgstr "Будьте осторожны при включении этих настроек."
1870
 
1871
- #: common.php:1361
1872
  msgid "Denied"
1873
  msgstr "Запрещено"
1874
 
1875
- #: settings.php:685
1876
  msgid "To specify a REGEX pattern, enclose a whole line in two braces."
1877
  msgstr "Для использования регулярных выражений заключите строку целиком в фигурные скобки { }."
1878
 
1879
- #: admin/cerber-settings.php:574
1880
  msgid "Plugin initialization mode has not been changed"
1881
  msgstr "Режим инициализации плагина не был изменен"
1882
 
1883
- #: settings.php:124
1884
  msgid "Standard mode"
1885
  msgstr "Стандартный режим"
1886
 
1887
- #: settings.php:123
1888
  msgid "Legacy mode"
1889
  msgstr "Старый режим"
1890
 
1891
- #: settings.php:120
1892
  msgid "Load security engine"
1893
  msgstr "Загрузка движка безопасности"
1894
 
1895
- #: settings.php:117
1896
  msgid "Plugin initialization"
1897
  msgstr "Инициализация плагина"
1898
 
1899
- #: common.php:2776
1900
  msgid "Unable to delete the file"
1901
  msgstr "Невозможно удалить файл"
1902
 
1903
- #: common.php:2770
1904
  msgid "Unable to copy the file"
1905
  msgstr "Невозможно скопировать файл"
1906
 
1907
- #: common.php:2767
1908
  msgid "File not found"
1909
  msgstr "Файл не найден"
1910
 
1911
- #: common.php:2764
1912
  msgid "Destination folder access denied"
1913
  msgstr "Доступ к каталогу назначения закрыт"
1914
 
1915
- #: common.php:2759
1916
  msgid "Unable to create the directory"
1917
  msgstr "Невозможно создать каталог"
1918
 
1919
- #: common.php:1328
1920
  msgid "File upload denied"
1921
  msgstr "Предотвращена загрузка файла"
1922
 
1923
- #: settings.php:323
1924
  msgid "Block unauthorized access to load-scripts.php and load-styles.php"
1925
  msgstr "Блокировка неавторизованного доступа к load-scripts.php и load-styles.php"
1926
 
1927
- #: settings.php:322
1928
  msgid "Protect admin scripts"
1929
  msgstr "Защита скриптов администратора"
1930
 
1931
- #: cerber-load.php:3922
1932
  msgid "We're sorry, you are not allowed to proceed"
1933
  msgstr "Извините, вам не разрешено продолжить"
1934
 
1935
- #: settings.php:685
1936
  msgid "Enter a request URI to exclude the request from inspection. One item per line."
1937
  msgstr "Введите URI запроса для исключения из инспекции. Один элемент на строку."
1938
 
1939
- #: settings.php:681
1940
  msgid "Request whitelist"
1941
  msgstr "Белый список запросов"
1942
 
1943
- #: settings.php:754
1944
  msgid "milliseconds"
1945
  msgstr "миллисекунд"
1946
 
1947
- #: settings.php:753
1948
  msgid "Page generation time threshold"
1949
  msgstr "Порог времени генерации страницы"
1950
 
1951
- #: settings.php:745
1952
  msgid "Save request cookies"
1953
  msgstr "Сохранять куки запроса"
1954
 
1955
- #: settings.php:741
1956
  msgid "Save $_SERVER"
1957
  msgstr "Сохранять $_SERVER"
1958
 
1959
- #: settings.php:736
1960
  msgid "Save request headers"
1961
  msgstr "Сохранять заголовки запроса"
1962
 
1963
- #: settings.php:729
1964
  msgid "Mask these form fields"
1965
  msgstr "Маскировать эти поля форм"
1966
 
1967
- #: settings.php:725
1968
  msgid "Save request fields"
1969
  msgstr "Сохранять поля запросов"
1970
 
1971
- #: settings.php:721
1972
  msgid "Ignore crawlers"
1973
  msgstr "Игнорировать веб-пауков"
1974
 
1975
- #: settings.php:717
1976
  msgid "All traffic"
1977
  msgstr "Весь трафик"
1978
 
1979
- #: settings.php:716
1980
  msgid "Smart"
1981
  msgstr "Умная выборка"
1982
 
1983
- #: settings.php:715
1984
  msgid "Logging disabled"
1985
  msgstr "Журнал отключен"
1986
 
1987
- #: settings.php:712
1988
  msgid "Logging mode"
1989
  msgstr "Режим журнала"
1990
 
1991
- #: settings.php:709
1992
- msgid "Logging"
1993
- msgstr "Журналирование"
1994
-
1995
- #: settings.php:668
1996
  msgid "Enable traffic inspection"
1997
  msgstr "Включить инспектирование трафика"
1998
 
1999
- #: dashboard.php:3992
2000
  msgid "Advanced Search"
2001
  msgstr "Улучшенный поиск"
2002
 
2003
- #: dashboard.php:4005
2004
  msgid "Refresh"
2005
  msgstr "Обновить"
2006
 
2007
- #: dashboard.php:3982
2008
  msgid "Longer than"
2009
  msgstr "Дольше чем"
2010
 
2011
- #: dashboard.php:3973
2012
  msgid "Page Not Found"
2013
  msgstr "Страница не найдена"
2014
 
2015
- #: dashboard.php:3971
2016
  msgid "Form submissions"
2017
  msgstr "Отправки форм"
2018
 
2019
- #: dashboard.php:941 dashboard.php:3968
2020
  msgid "Not logged in visitors"
2021
  msgstr "Неавторизованные посетители"
2022
 
2023
- #: dashboard.php:3963
2024
  msgid "All requests"
2025
  msgstr "Все запросы"
2026
 
2027
- #: dashboard.php:3955
2028
  msgid "No requests have been logged."
2029
  msgstr "В журнале нет данных о запросах."
2030
 
2031
- #: dashboard.php:3938
2032
  msgid "User Agent"
2033
  msgstr "User Agent"
2034
 
2035
- #: dashboard.php:3937 cerber-users.php:974
2036
  msgid "Host Info"
2037
  msgstr "Информация о хосте"
2038
 
2039
- #: dashboard.php:3935
2040
  msgid "Request"
2041
  msgstr "Запрос"
2042
 
2043
- #: dashboard.php:4560
2044
  msgid "Live Traffic"
2045
  msgstr "Живой трафик"
2046
 
2047
- #: dashboard.php:1742 cerber-users.php:1140
2048
  msgid "Traffic"
2049
  msgstr "Трафик"
2050
 
2051
- #: dashboard.php:1714
2052
  msgid "no connection"
2053
  msgstr "нет подключения"
2054
 
2055
- #: dashboard.php:1709
2056
  msgid "enabled"
2057
  msgstr "включено"
2058
 
2059
- #: dashboard.php:56 dashboard.php:1710 dashboard.php:4558
2060
  msgid "Traffic Inspector"
2061
  msgstr "Инспектор трафика"
2062
 
@@ -2064,283 +2168,275 @@ msgstr "Инспектор трафика"
2064
  msgid "Cerber Traffic Inspector"
2065
  msgstr "Цербер-инспектор трафика"
2066
 
2067
- #: dashboard.php:1503
2068
  msgid "Last seen"
2069
  msgstr "Последний раз"
2070
 
2071
- #: common.php:1776
2072
  msgid "Not specified"
2073
  msgstr "Не указано"
2074
 
2075
- #: common.php:1326 common.php:1416
2076
  msgid "Probing for vulnerable PHP code"
2077
  msgstr "Проверка на уязвимый PHP-код"
2078
 
2079
- #: common.php:211
2080
  msgid "Check for requests"
2081
  msgstr "Проверить запросы"
2082
 
2083
- #: dashboard.php:326
2084
  msgid "You cannot add your IP address or network"
2085
  msgstr "Вы не можете добавить ваш IP-адрес или сеть"
2086
 
2087
- #: dashboard.php:304
2088
  msgid "Optional comment for this entry"
2089
  msgstr "Необязательный комментарий к этой записи"
2090
 
2091
- #: cerber-load.php:4304
2092
  msgid "Attempts to log in with non-existing usernames"
2093
  msgstr "Попытка войти с несуществующим именем пользователя"
2094
 
2095
- #: cerber-load.php:4278
2096
  msgid "Weekly Report"
2097
  msgstr "Недельный отчет"
2098
 
2099
- #: cerber-load.php:4208
2100
  msgid "Your last sign-in was %s from %s"
2101
  msgstr "Ваш последний вход был %s с %s"
2102
 
2103
- #: settings.php:646
2104
  msgid "Enable reporting"
2105
  msgstr "Включить отчеты"
2106
 
2107
- #: settings.php:655 settings.php:871
2108
- msgid "if empty, email from notification settings will be used"
2109
- msgstr "если не задано, будет использован адрес из настроек уведомлений"
2110
-
2111
- #: settings.php:981
2112
  msgid "Enter a part of query string or query path to exclude a request from inspection by the engine. One item per line."
2113
  msgstr "Введите часть строки или пути запроса для исключения запроса из проверки движком. Один элемент на строку."
2114
 
2115
- #: settings.php:528 settings.php:536
2116
  msgid "To specify a REGEX pattern wrap a pattern in two forward slashes."
2117
  msgstr "Для использования регулярных выражений оберните их в два прямых слеша."
2118
 
2119
- #: settings.php:181
2120
  msgid "Display simple 404 page"
2121
  msgstr "Показать простую страницу 404"
2122
 
2123
- #: settings.php:180
2124
  msgid "Use 404 template from the active theme"
2125
  msgstr "Использовать шаблон 404 активной темы"
2126
 
2127
- #: dashboard.php:3340
2128
  msgctxt "to is a marker of infinitive, e.g. \"to use it\""
2129
  msgid "Selected countries are not permitted to %s, other countries are permitted to"
2130
  msgstr "Выбранным странам не разрешено %s, остальным странам разрешено"
2131
 
2132
- #: dashboard.php:3337
2133
  msgctxt "to is a marker of infinitive, e.g. \"to use it\""
2134
  msgid "Selected countries are permitted to %s, other countries are not permitted to"
2135
  msgstr "Выбранным странам разрешено %s, остальным странам - нет"
2136
 
2137
- #: dashboard.php:3241
2138
  msgid "Not permitted for one country"
2139
  msgid_plural "Not permitted for %d countries"
2140
  msgstr[0] "Не разрешено в одной стране"
2141
  msgstr[1] "Не разрешено в %d странах"
2142
  msgstr[2] "Не разрешено в %d странах"
2143
 
2144
- #: dashboard.php:562
2145
  msgid "Unable to send email to"
2146
  msgstr "Невозможно отправить email на"
2147
 
2148
- #: dashboard.php:559
2149
  msgid "Email has been sent to"
2150
  msgstr "Сообщение было отправлено на электронный адрес"
2151
 
2152
- #: cerber-load.php:4290
2153
  msgid "Activity details"
2154
  msgstr "Подробно об активности"
2155
 
2156
- #: cerber-load.php:4184
2157
  msgid "Your license is valid until"
2158
  msgstr "Ваша лицензия действительна до"
2159
 
2160
- #: cerber-load.php:4180
2161
  msgid "Your login page:"
2162
  msgstr "Ваша страница входа:"
2163
 
2164
- #: cerber-load.php:4147 cerber-load.php:4157
2165
  msgid "To change reporting settings visit"
2166
  msgstr "Для смены настроек отчетности зайдите"
2167
 
2168
- #: cerber-load.php:4144
2169
  msgid "Weekly report"
2170
  msgstr "Недельный отчет"
2171
 
2172
- #: cerber-load.php:796
2173
  msgid "> > > Translator of WP Cerber? To get the PRO license for free, drop your contacts here: https://wpcerber.com/contact/"
2174
  msgstr ">>> Переводите WP Cerber? Получите PRO лицензию бесплатно, оставьте контакты здесь: https://wpcerber.com/contact/"
2175
 
2176
- #: admin/cerber-settings.php:521
2177
  msgid "Click to send now"
2178
  msgstr "Нажмите для отправки сейчас"
2179
 
2180
- #: admin/cerber-settings.php:492
2181
  msgid "Saturday"
2182
  msgstr "Суббота"
2183
 
2184
- #: admin/cerber-settings.php:491
2185
  msgid "Friday"
2186
  msgstr "Пятница"
2187
 
2188
- #: admin/cerber-settings.php:490
2189
  msgid "Thursday"
2190
  msgstr "Четверг"
2191
 
2192
- #: admin/cerber-settings.php:489
2193
  msgid "Wednesday"
2194
  msgstr "Среда"
2195
 
2196
- #: admin/cerber-settings.php:488
2197
  msgid "Tuesday"
2198
  msgstr "Вторник"
2199
 
2200
- #: admin/cerber-settings.php:487
2201
  msgid "Monday"
2202
  msgstr "Понедельник"
2203
 
2204
- #: admin/cerber-settings.php:486
2205
  msgid "Sunday"
2206
  msgstr "Воскресенье"
2207
 
2208
- #: settings.php:643
2209
  msgid "Weekly reports"
2210
  msgstr "Недельные отчеты"
2211
 
2212
- #: dashboard.php:2643
2213
  msgid "Main settings"
2214
  msgstr "Основные настройки"
2215
 
2216
- #: admin/cerber-settings.php:603 admin/cerber-settings.php:604
2217
  msgid "If you use a caching plugin, you have to add your new login URL to the list of pages not to cache."
2218
  msgstr "Если вы используете плагин кеширования, вам нужно добавить новый URL входа в список исключений кеширования"
2219
 
2220
- #: admin/cerber-settings.php:323
2221
- msgid "%s allowed registrations in %s minutes from one IP"
2222
- msgstr "%s разрешенных регистраций в %s минут с одного IP"
2223
-
2224
- #: settings.php:994
2225
  msgid "Mark it as spam"
2226
  msgstr "Пометить как спам"
2227
 
2228
- #: settings.php:994
2229
  msgid "Deny it completely"
2230
  msgstr "Полностью запретить"
2231
 
2232
- #: settings.php:550
2233
  msgid "Sort users in dashboard"
2234
  msgstr "Сортировать пользователей в консоли"
2235
 
2236
- #: settings.php:512
2237
  msgid "Registration limit"
2238
  msgstr "Предел регистраций"
2239
 
2240
- #: settings.php:363
2241
  msgid "Allow REST API for logged in users"
2242
  msgstr "Разрешить REST API для авторизованных пользователей"
2243
 
2244
- #: dashboard.php:3368
2245
  msgid "Use REST API"
2246
  msgstr "использование REST API"
2247
 
2248
- #: dashboard.php:3367
2249
  msgid "Use XML-RPC"
2250
  msgstr "использование XML-RPC"
2251
 
2252
- #: dashboard.php:3364
2253
  msgid "Register on the website"
2254
  msgstr "регистрация на сайте"
2255
 
2256
- #: dashboard.php:3360
2257
  msgid "Log in to the website"
2258
  msgstr "авторизация на сайте"
2259
 
2260
- #: dashboard.php:3366
2261
  msgid "Post comments"
2262
  msgstr "отправка комментариев"
2263
 
2264
- #: dashboard.php:3365
2265
  msgid "Submit forms"
2266
  msgstr "отправка форм"
2267
 
2268
- #: dashboard.php:3333
2269
  msgid "Click on a country name to add it to the list of selected countries"
2270
  msgstr "Нажмите на страну чтобы добавить ее в список выбранных"
2271
 
2272
- #: dashboard.php:3218
2273
  msgid "Start typing here to find a country"
2274
  msgstr "Начните печатать тут чтобы найти страну"
2275
 
2276
- #: cerber-load.php:4129 cerber-load.php:5087 dashboard.php:2339
2277
  msgid "Getting Started Guide"
2278
  msgstr "Руководство с чего начать"
2279
 
2280
- #: dashboard.php:2279
2281
  msgid "in the last 24 hours"
2282
  msgstr "В последние 24 часа"
2283
 
2284
- #: dashboard.php:1627 cerber-users.php:52 cerber-users.php:1106
2285
  msgid "You"
2286
  msgstr "Вы"
2287
 
2288
- #: dashboard.php:1513 dashboard.php:1557
2289
  msgid "Registered"
2290
  msgstr "Зарегистрирован"
2291
 
2292
- #: dashboard.php:1556
2293
  msgid "Failed login attempts"
2294
  msgstr "Неудачные попытки входа"
2295
 
2296
- #: common.php:1415
2297
  msgid "Multiple suspicious activities were detected"
2298
  msgstr "Обнаружена множественная подозрительная активность"
2299
 
2300
- #: common.php:1360
2301
  msgid "Multiple suspicious activities"
2302
  msgstr "Множественная подозрительная активность"
2303
 
2304
- #: common.php:1359
2305
  msgid "Limit reached"
2306
  msgstr "Предел достигнут"
2307
 
2308
- #: settings.php:980
2309
  msgid "Query whitelist"
2310
  msgstr "Белый список запросов"
2311
 
2312
- #: settings.php:375
2313
  msgid "Specify REST API namespaces to be allowed if REST API is disabled. One string per line."
2314
  msgstr "Укажите пространства имен REST API разрешенных при отключении REST API, одно имя на строку."
2315
 
2316
- #: settings.php:358
2317
  msgid "Block access to WordPress REST API except any of the following"
2318
  msgstr "Блокировать доступ к REST API кроме следующего"
2319
 
2320
- #: dashboard.php:3410
2321
  msgid "Security rules have been updated"
2322
  msgstr "Правила безопасности обновлены"
2323
 
2324
- #: dashboard.php:3249
2325
  msgid "No rule"
2326
  msgstr "Нет правила"
2327
 
2328
- #: dashboard.php:3238
2329
  msgid "Permitted for one country"
2330
  msgid_plural "Permitted for %d countries"
2331
  msgstr[0] "Разрешается для одной страны"
2332
  msgstr[1] "Разрешается для %d стран"
2333
  msgstr[2] "Разрешается для %d стран"
2334
 
2335
- #: dashboard.php:4606
2336
  msgid "Countries"
2337
  msgstr "Страны"
2338
 
2339
- #: common.php:285
2340
  msgid "Spam form submissions denied"
2341
  msgstr "Заблокированы отправки форм спама"
2342
 
2343
- #: dashboard.php:61 dashboard.php:4604
2344
  msgid "Security Rules"
2345
  msgstr "Правила безопасности"
2346
 
@@ -2348,253 +2444,253 @@ msgstr "Правила безопасности"
2348
  msgid "Cerber Security Rules"
2349
  msgstr "Правила безопасности Цербер"
2350
 
2351
- #: dashboard.php:189 dashboard.php:1106
2352
  msgid "Country"
2353
  msgstr "Страна"
2354
 
2355
- #: common.php:1358
2356
  msgid "Blocked by country rule"
2357
  msgstr "Заблокирован по ограничению для страны"
2358
 
2359
- #: common.php:1357
2360
  msgid "Malicious activity detected"
2361
  msgstr "Обнаружена вредоносная активность"
2362
 
2363
- #: common.php:1353
2364
  msgid "Citadel mode is active"
2365
  msgstr "Режим цитадель активен"
2366
 
2367
- #: common.php:1352
2368
  msgid "Bot detected"
2369
  msgstr "Обнаружен бот"
2370
 
2371
- #: common.php:1331
2372
  msgid "XML-RPC request denied"
2373
  msgstr "Запрос XML-RPC заблокирован"
2374
 
2375
- #: common.php:1330
2376
  msgid "Request to REST API denied"
2377
  msgstr "Запрос к REST API заблокирован"
2378
 
2379
- #: common.php:1304
2380
  msgid "Comment denied"
2381
  msgstr "Комментарий заблокирован"
2382
 
2383
- #: common.php:1303
2384
  msgid "Form submission denied"
2385
  msgstr "Отправка формы заблокирована"
2386
 
2387
- #: dashboard.php:4660
2388
  msgid "License"
2389
  msgstr "Лицензия"
2390
 
2391
- #: settings.php:976
2392
  msgid "Disable bot detection engine for logged in users"
2393
  msgstr "Отключить определение ботов для авторизованных пользователей"
2394
 
2395
- #: settings.php:362 settings.php:975 dashboard.php:940 dashboard.php:1703
2396
- #: dashboard.php:3967
2397
  msgid "Logged in users"
2398
  msgstr "Авторизованные пользователи"
2399
 
2400
- #: settings.php:971
2401
  msgid "Use less restrictive policies (allow AJAX)"
2402
  msgstr "Использовать менее жесткую политику (разрешить AJAX)"
2403
 
2404
- #: settings.php:970
2405
  msgid "Safe mode"
2406
  msgstr "Безопасный режим"
2407
 
2408
- #: settings.php:967
2409
- msgid "Adjust antispam engine"
2410
  msgstr "Настроить антиспам-движок"
2411
 
2412
- #: settings.php:961
2413
  msgid "Protect all forms on the website with bot detection engine"
2414
  msgstr "Защитить все формы на сайте через определение ботов"
2415
 
2416
- #: settings.php:960
2417
  msgid "Other forms"
2418
  msgstr "Другие формы"
2419
 
2420
- #: common.php:1302
2421
  msgid "Spam form submission denied"
2422
  msgstr "Отправка формы со спамом заблокирована"
2423
 
2424
- #: cerber-load.php:1852
2425
  msgid "Sorry, human verification failed."
2426
  msgstr "Извините, проверка на человека не удалась."
2427
 
2428
- #: settings.php:999
2429
  msgid "Move spam comments to trash after"
2430
  msgstr "Удалить спам комментарии в корзину после"
2431
 
2432
- #: settings.php:997
2433
  msgid "Trash spam comments"
2434
  msgstr "Удалить спам комментарии в корзину"
2435
 
2436
- #: settings.php:992
2437
  msgid "If a spam comment detected"
2438
  msgstr "Если обнаружен спам комментарий"
2439
 
2440
- #: settings.php:989
2441
  msgid "Comment processing"
2442
  msgstr "Обработка комментария"
2443
 
2444
- #: settings.php:956
2445
  msgid "Protect registration form with bot detection engine"
2446
  msgstr "Защита регистрации через определение ботов"
2447
 
2448
- #: settings.php:951
2449
  msgid "Protect comment form with bot detection engine"
2450
  msgstr "Защита комментариев через определение ботов"
2451
 
2452
- #: settings.php:947
2453
- msgid "Cerber antispam engine"
2454
  msgstr "Движок Цербер-антиспам"
2455
 
2456
- #: settings.php:1054 dashboard.php:71
2457
- msgid "Antispam"
2458
- msgstr "Аниспам"
2459
-
2460
  #: dashboard.php:71
2461
- msgid "Cerber antispam settings"
2462
- msgstr "Настройка Цербер антиспам"
2463
 
2464
- #: common.php:1414
2465
  msgid "Bot activity is detected"
2466
  msgstr "Обнаружена активность ботов"
2467
 
2468
- #: dashboard.php:4538
2469
- msgid "Antispam and bot detection settings"
2470
  msgstr "Антиспам и настройки определения ботов"
2471
 
2472
- #: dashboard.php:4657
2473
  msgid "Diagnostic"
2474
  msgstr "Диагностика"
2475
 
2476
- #: dashboard.php:4656
2477
  msgid "Export & Import"
2478
  msgstr "Экспорт и Импорт"
2479
 
2480
- #: cerber-load.php:1527 cerber-load.php:1533 cerber-load.php:1558
2481
- #: cerber-load.php:1565
2482
  msgid "You are not allowed to register."
2483
  msgstr "Вам не разрешено зарегистрироваться."
2484
 
2485
- #: common.php:287
2486
  msgid "Lockouts occurred"
2487
  msgstr "Блокировок произошло"
2488
 
2489
- #: common.php:286
2490
  msgid "Malicious IP addresses detected"
2491
  msgstr "Найдены вредоносные IP адреса"
2492
 
2493
- #: common.php:284
2494
  msgid "Spam comments denied"
2495
  msgstr "Спам-комментарии отклонены"
2496
 
2497
- #: common.php:281
2498
  msgid "Malicious activities mitigated"
2499
  msgstr "Вредоносная активность снижена"
2500
 
2501
- #: dashboard.php:823 dashboard.php:1108
2502
  msgid "Event"
2503
  msgstr "Событие"
2504
 
2505
- #: common.php:1325
2506
  msgid "Attempt to register denied"
2507
  msgstr "Попытка регистрации отклонена"
2508
 
2509
- #: common.php:1324
2510
  msgid "Attempt to log in denied"
2511
  msgstr "Попытка входа отклонена"
2512
 
2513
- #: common.php:1301
2514
  msgid "Spam comment denied"
2515
  msgstr "Спам коммнтарий отклонен"
2516
 
2517
- #: settings.php:225
2518
  msgid "In the Citadel mode nobody is able to log in except IPs from the White IP Access List. Active user sessions will not be affected."
2519
  msgstr "В режиме Цитадель никто не может войти кроме как с IP в белом списке. Активные сессии пользователей не будут затронуты."
2520
 
2521
- #: settings.php:1065
2522
  msgid "Lock out IP address for %s minutes after %s failed attempts within %s minutes"
2523
  msgstr "Блокировать IP адрес на %s минут после %s неудачных попыток в течении %s минут"
2524
 
2525
- #: settings.php:1064
2526
  msgid "Limit attempts"
2527
  msgstr "Ограничение попыток"
2528
 
2529
- #: settings.php:147
 
 
 
 
2530
  msgid "Apply limit login rules to IP addresses in the White IP Access List"
2531
  msgstr "Применить правила входа для IP адресов в белом списке"
2532
 
2533
- #: common.php:1413
2534
  msgid "Limit on failed reCAPTCHA verifications is reached"
2535
  msgstr "Достигнут предел проверки reCAPTCHA"
2536
 
2537
- #: common.php:1314
2538
  msgid "Password reset requested"
2539
  msgstr "Запрошен сброс пароля"
2540
 
2541
- #: settings.php:1020
2542
  msgid "(do not enable it unless you get and enter the Site and Secret keys for the invisible version)"
2543
  msgstr "(не включайте, если у вас нет или вы не вводили ключ сайта и секретный ключ для невидимой версии)"
2544
 
2545
- #: settings.php:1060
2546
  msgid "Disable reCAPTCHA for logged in users"
2547
  msgstr "Отключить reCAPTCHA для авторизованных пользователей"
2548
 
2549
- #: settings.php:1055
2550
  msgid "Enable reCAPTCHA for WordPress comment form"
2551
  msgstr "Включить reCAPTCHA в форме комментариев WordPress"
2552
 
2553
- #: settings.php:950
2554
  msgid "Comment form"
2555
  msgstr "Форма комментариев"
2556
 
2557
- #: settings.php:1020
2558
  msgid "Enable invisible reCAPTCHA"
2559
  msgstr "Включить невидимую reCAPTCHA"
2560
 
2561
- #: settings.php:1019
2562
  msgid "Invisible reCAPTCHA"
2563
  msgstr "невидимая reCAPTCHA"
2564
 
2565
- #: common.php:1564
2566
  msgid "%s ago"
2567
  msgstr "%s назад"
2568
 
2569
- #: settings.php:101
2570
  msgid "Not available"
2571
  msgstr "Недоступно"
2572
 
2573
- #: settings.php:97
2574
  msgid "No devices found"
2575
  msgstr "Устройства не найдены"
2576
 
2577
- #: settings.php:94
2578
  msgid "All connected devices"
2579
  msgstr "Все подключенные устройства"
2580
 
2581
- #: settings.php:612 settings.php:656 settings.php:731 settings.php:872
2582
  msgid "Use comma to specify multiple values"
2583
  msgstr "Используйте запятую для разделения множественных значений"
2584
 
2585
- #: settings.php:604
2586
  msgid "Email notifications"
2587
  msgstr "Уведомления по эл.почте"
2588
 
2589
- #: settings.php:177
2590
  msgid "Display 404 page"
2591
  msgstr "Показывать страницу 404"
2592
 
2593
- #: settings.php:630
2594
  msgid "Push notifications"
2595
  msgstr "Push уведомления"
2596
 
2597
- #: dashboard.php:1145
2598
  msgid "Search for IP or username"
2599
  msgstr "Поиск IP или имени пользователя"
2600
 
@@ -2602,19 +2698,19 @@ msgstr "Поиск IP или имени пользователя"
2602
  msgid "Unsubscribe"
2603
  msgstr "Отменить подписку"
2604
 
2605
- #: dashboard.php:826
2606
  msgid "User login"
2607
  msgstr "Имя пользователя"
2608
 
2609
- #: dashboard.php:3510
2610
  msgid "IP address"
2611
  msgstr "IP адрес"
2612
 
2613
- #: dashboard.php:1132 dashboard.php:3999
2614
  msgid "Export"
2615
  msgstr "Экспорт"
2616
 
2617
- #: dashboard.php:827 dashboard.php:3516
2618
  msgid "User ID"
2619
  msgstr "ID пользователя"
2620
 
@@ -2622,119 +2718,119 @@ msgstr "ID пользователя"
2622
  msgid "Cerber Dashboard"
2623
  msgstr "Консоль Cerber"
2624
 
2625
- #: dashboard.php:1146 dashboard.php:1148
2626
  msgid "Filter"
2627
  msgstr "Фильтр"
2628
 
2629
- #: dashboard.php:78
2630
  msgid "Cerber tools"
2631
  msgstr "Инструменты Cerber"
2632
 
2633
- #: cerber-load.php:4138 cerber-load.php:4139
2634
  msgid "A new activity has been recorded"
2635
  msgstr "Отмечена новая активность"
2636
 
2637
- #: settings.php:301
2638
  msgid "if empty, the default format %s will be used"
2639
  msgstr "Если пусто, будет использован формат по умолчанию %s"
2640
 
2641
- #: cerber-load.php:4804 cerber-users.php:969
2642
  msgid "User"
2643
  msgstr "Пользователь"
2644
 
2645
- #: cerber-load.php:4812
2646
  msgid "Search string"
2647
  msgstr "Строка поиска"
2648
 
2649
- #: settings.php:292
2650
  msgid "Preferences"
2651
  msgstr "Настройки"
2652
 
2653
- #: settings.php:300
2654
  msgid "Date format"
2655
  msgstr "Формат даты"
2656
 
2657
- #: dashboard.php:54 dashboard.php:1740 dashboard.php:2642 dashboard.php:4492
2658
  msgid "Dashboard"
2659
  msgstr "Консоль"
2660
 
2661
- #: settings.php:1050
2662
  msgid "Enable reCAPTCHA for WooCommerce login form"
2663
  msgstr "Включить reCAPTCHA для формы входа WooCommerce"
2664
 
2665
- #: settings.php:1045
2666
  msgid "Enable reCAPTCHA for WordPress login form"
2667
  msgstr "Включить reCAPTCHA для формы входа WordPress"
2668
 
2669
- #: settings.php:1040
2670
  msgid "Enable reCAPTCHA for WooCommerce lost password form"
2671
  msgstr "Включить reCAPTCHA для формы восстановления пароля WooCommerce"
2672
 
2673
- #: settings.php:1035
2674
  msgid "Enable reCAPTCHA for WordPress lost password form"
2675
  msgstr "Включить reCAPTCHA для формы восстановления пароля WordPress"
2676
 
2677
- #: settings.php:1030
2678
  msgid "Enable reCAPTCHA for WooCommerce registration form"
2679
  msgstr "Включить reCAPTCHA для формы регистрации WooCommerce"
2680
 
2681
- #: settings.php:1025
2682
  msgid "Enable reCAPTCHA for WordPress registration form"
2683
  msgstr "Включить reCAPTCHA для формы регистрации WordPress"
2684
 
2685
- #: settings.php:955 settings.php:1024
2686
  msgid "Registration form"
2687
  msgstr "Форма регистрации"
2688
 
2689
- #: settings.php:277
2690
  msgid "Cerber Lab protocol"
2691
  msgstr "протокол Cerber Lab"
2692
 
2693
- #: settings.php:273
2694
  msgid "Send malicious IP addresses to the Cerber Lab"
2695
  msgstr "Посылать вредоносные IP адреса в Cerber Lab"
2696
 
2697
- #: settings.php:272
2698
  msgid "Cerber Lab connection"
2699
  msgstr "Подключение Cerber Lab"
2700
 
2701
- #: dashboard.php:2303
2702
  msgid "Recently locked out IP addresses"
2703
  msgstr "Недавно заблокированые IP адреса"
2704
 
2705
- #: dashboard.php:919 dashboard.php:2300
2706
  msgid "View all"
2707
  msgstr "Просмотреть все"
2708
 
2709
- #: dashboard.php:1410
2710
  msgid "Add network to the Black List"
2711
  msgstr "Добавить сеть в черный список"
2712
 
2713
- #: dashboard.php:1396
2714
  msgid "Network:"
2715
  msgstr "Сеть:"
2716
 
2717
- #: dashboard.php:4804
2718
  msgid "Incorrect IP address or IP range"
2719
  msgstr "Неверный IP адрес или диапазон адресов"
2720
 
2721
- #: common.php:1318
2722
  msgid "Request to the Google reCAPTCHA service failed"
2723
  msgstr "Запрос к сервису Google reCAPTCHA не удался"
2724
 
2725
- #: cerber-lab.php:812
2726
  msgid "NO, maybe later"
2727
  msgstr "НЕТ, возможно позже"
2728
 
2729
- #: cerber-lab.php:811
2730
  msgid "OK, nail them all"
2731
  msgstr "ОК, прибьем их всех"
2732
 
2733
- #: cerber-lab.php:810
2734
  msgid "Allow WP Cerber to send locked out malicious IP addresses to Cerber Lab. This helps the plugin team to develop new algorithms for WP Cerber that will defend WordPress against new threats and botnets that are appearing everyday. You can disable the sending in the plugin settings at any time."
2735
  msgstr "Разрешить WP Cerber посылать заблокированные IP адреса в Cerber Lab. Это помогает команде плагина разрабатывать новые алгоритмы для WP Cerber, которые будут защищать WordPress против новых угроз и ботнетов появляюшихся каждый день. Вы всегда можете отключить отсылку в настройках плагина, в любой момент."
2736
 
2737
- #: cerber-lab.php:809
2738
  msgid "Want to make WP Cerber even more powerful?"
2739
  msgstr "Хотите сделать WP Cerber еще мощнее ?"
2740
 
@@ -2743,521 +2839,510 @@ msgstr "Хотите сделать WP Cerber еще мощнее ?"
2743
  msgid "https://wpcerber.com"
2744
  msgstr "https://wpcerber.com"
2745
 
2746
- #: cerber-load.php:5101
2747
  msgid "Import settings"
2748
  msgstr "Импорт настроек"
2749
 
2750
- #: cerber-load.php:5085
2751
  msgid "Your IP address is added to the"
2752
  msgstr "Ваш IP адрес добавлен к"
2753
 
2754
- #: cerber-load.php:5064
2755
  msgid "Can't activate WP Cerber due to a database error."
2756
  msgstr "Невозможно активировать плагин WP Cerber из-за ошибки в базе данных."
2757
 
2758
- #: cerber-load.php:5055
2759
  msgid "The WP Cerber requires WordPress %s or higher. You are running"
2760
  msgstr "WP Cerber требует WordPress версии %s или выше. У вас версия"
2761
 
2762
- #: cerber-load.php:5051
2763
  msgid "The WP Cerber requires PHP %s or higher. You are running"
2764
  msgstr "WP Cerber требует PHP версии %s или выше. У вас версия"
2765
 
2766
- #: cerber-load.php:4187
2767
  msgid "This message was sent by"
2768
  msgstr "Это сообщение было отправлено"
2769
 
2770
- #: cerber-load.php:4134
2771
  msgid "New Custom login URL"
2772
  msgstr "Новый URL для входа на сайт"
2773
 
2774
- #: cerber-load.php:4127 cerber-load.php:5084
2775
  msgid "WP Cerber is now active and has started protecting your site"
2776
  msgstr "WP Cerber активен и начал защищать ваш сайт"
2777
 
2778
- #: cerber-load.php:4126
2779
  msgid "The WP Cerber security plugin is now active"
2780
  msgstr "WP Cerber плагин безопасности активен"
2781
 
2782
- #: cerber-load.php:4122
2783
  msgid "From country"
2784
  msgstr "Из страны"
2785
 
2786
- #: cerber-load.php:4119
2787
  msgid "From IP address"
2788
  msgstr "С IP адреса"
2789
 
2790
- #: cerber-load.php:4118
2791
  msgid "By user"
2792
  msgstr "По пользователю"
2793
 
2794
- #: cerber-load.php:4112
2795
  msgid "Not logged in"
2796
  msgstr "Нет авторизации"
2797
 
2798
- #: cerber-load.php:4109 cerber-load.php:4110
2799
  msgid "The WP Cerber security plugin has been deactivated"
2800
  msgstr "WP Cerber плагин деактивирован"
2801
 
2802
- #: cerber-load.php:4106 cerber-load.php:4117 nexus/cerber-slave-list.php:44
2803
  msgid "Website"
2804
  msgstr "Сайт"
2805
 
2806
- #: cerber-load.php:4103
2807
  msgid "Hi!"
2808
  msgstr "Привет!"
2809
 
2810
- #: cerber-load.php:4102 cerber-load.php:4104
2811
  msgid "A new version of WP Cerber is available to install"
2812
  msgstr "Доступна новая версия WP Cerber!"
2813
 
2814
- #: cerber-load.php:4099
2815
  msgid "View lockouts in dashboard"
2816
  msgstr "Просмотреть список заблокированных IP"
2817
 
2818
- #: cerber-load.php:4098
2819
  msgid "View activity for this IP"
2820
  msgstr "Посмотреть активность для этого IP"
2821
 
2822
- #: cerber-load.php:4096
2823
  msgid "Last lockout was added: %s for IP %s"
2824
  msgstr "Последняя блокировка была добавлена %s для IP %s"
2825
 
2826
- #: cerber-load.php:4095
2827
  msgid "Number of active lockouts"
2828
  msgstr "Число активных блокировок на данный момент"
2829
 
2830
- #: cerber-load.php:4093
2831
  msgid "Number of lockouts is increasing"
2832
  msgstr "Число блокировок увеличилось"
2833
 
2834
- #: cerber-load.php:4090
2835
  msgid "unspecified"
2836
  msgstr "неуказано"
2837
 
2838
- #: cerber-load.php:4066 cerber-load.php:4832
2839
  msgid "View activity in dashboard"
2840
  msgstr "Просмотреть журнал активности"
2841
 
2842
- #: cerber-load.php:4065
2843
  msgid "Last failed attempt was at %s from IP %s with user login: %s."
2844
  msgstr "Последняя неудачная попытка была в %s с IP адреса %s с логином %s."
2845
 
2846
- #: cerber-load.php:4064
2847
  msgid "Citadel mode is activated after %d failed login attempts in %d minutes."
2848
  msgstr "Режим Цитадель активирован после %d неудачных попыток за %d минут."
2849
 
2850
- #: cerber-load.php:4062
2851
  msgid "Citadel mode is activated"
2852
  msgstr "Активирован режим Цитадель"
2853
 
2854
- #: cerber-load.php:4038
2855
  msgid "WP Cerber notify"
2856
  msgstr "Уведомление WP Cerber"
2857
 
2858
- #: common.php:1408
2859
  msgid "Limit on login attempts is reached"
2860
  msgstr "Количество попыток исчерпано"
2861
 
2862
- #: common.php:1409
2863
  msgid "Attempt to access"
2864
  msgstr "Попытка доступа к"
2865
 
2866
- #: cerber-load.php:1545
2867
  msgid "Username is not allowed. Please choose another one."
2868
  msgstr "Имя пользователя недопустимо. Выберите другое."
2869
 
2870
- #: cerber-load.php:1104
2871
  msgid "<strong>ERROR</strong>: The password you entered for the username %s is incorrect."
2872
  msgstr "<strong>ОШИБКА</strong>: Пароль введенный для пользователя %s is некорректен."
2873
 
2874
- #: cerber-load.php:675
2875
  msgid "Human verification failed. Please click the square box in the reCAPTCHA block below."
2876
  msgstr "Антибот проверка неудачна. Пожалуйста тыкните в квадратную отметку блока reCAPTCHA ниже"
2877
 
2878
- #: admin/cerber-settings.php:573 admin/cerber-settings.php:593
2879
- #: admin/cerber-settings.php:674 cerber-load.php:646 cerber-load.php:658
2880
- #: cerber-load.php:665 cerber-load.php:995 cerber-load.php:1526
2881
- #: cerber-load.php:1532 cerber-load.php:1537 cerber-load.php:1544
2882
- #: cerber-load.php:1551 cerber-load.php:1557 cerber-load.php:1564
2883
- #: cerber-load.php:1715 cerber-load.php:1852 nexus/cerber-nexus-slave.php:218
2884
- #: nexus/cerber-nexus-slave.php:229 cerber-scanner.php:5854 common.php:341
2885
- #: common.php:419 common.php:424 common.php:430 common.php:435
2886
  msgid "ERROR:"
2887
  msgstr "ОШИБКА:"
2888
 
2889
- #: cerber-load.php:363
2890
  msgid "You have only one attempt remaining."
2891
  msgid_plural "You have %d attempts remaining."
2892
  msgstr[0] "У вас есть только одна попытка для входа"
2893
  msgstr[1] "У вас осталось %d попытки для входа."
2894
  msgstr[2] "У вас осталось %d попыток для входа."
2895
 
2896
- #: cerber-load.php:338
2897
  msgid "You are not allowed to log in. Ask your administrator for assistance."
2898
  msgstr "Вход на сайт невозможен. Обратитесь к администратору сайта."
2899
 
2900
- #: dashboard.php:415 dashboard.php:3623 whois.php:222 whois.php:253
2901
- #: nexus/cerber-slave-list.php:331 common.php:1432 common.php:1816
2902
- #: common.php:1881
2903
  msgid "Unknown"
2904
  msgstr "Неизвестен"
2905
 
2906
- #: admin/cerber-settings.php:698 admin/cerber-settings.php:710
2907
- #: admin/cerber-settings.php:867
2908
  msgid "<strong>ERROR</strong>: please enter a valid email address."
2909
  msgstr "<strong>ОШИБКА</strong>: Введите действительный адрес эл.почты."
2910
 
2911
- #: admin/cerber-settings.php:601 admin/cerber-settings.php:602
2912
  msgid "Attention! You have changed the login URL! The new login URL is"
2913
  msgstr "Внимание! Вы изменили URL страницы авторизации. Новый адрес"
2914
 
2915
- #: admin/cerber-settings.php:343
2916
- msgid "Enable after %s failed login attempts in last %s minutes"
2917
  msgstr "Активировать после %s неудачных авторизаций за последние %s минут"
2918
 
2919
- #: admin/cerber-settings.php:335
2920
  msgid "Notify admin if the number of active lockouts above"
2921
  msgstr "Уведомить администратора, если число заблокированных IP более"
2922
 
2923
- #: admin/cerber-settings.php:328
2924
  msgid "Increase lockout duration to %s hours after %s lockouts in the last %s hours"
2925
  msgstr "Увеличить длительность блокировки до %s часов после %s блокировок в течение последних %s часов"
2926
 
2927
- #: admin/cerber-settings.php:318
2928
- msgid "%s allowed retries in %s minutes"
2929
- msgstr "%s попыток разрешено в течении %s минут"
2930
-
2931
- #: dashboard.php:4758
2932
  msgid "Help"
2933
  msgstr "Помощь"
2934
 
2935
- #: dashboard.php:78 dashboard.php:4654
2936
  msgid "Tools"
2937
  msgstr "Инструменты"
2938
 
2939
- #: dashboard.php:4498
2940
  msgid "Hardening"
2941
  msgstr "Панцирь"
2942
 
2943
- #: dashboard.php:4496
2944
  msgid "Main Settings"
2945
  msgstr "Основные настройки"
2946
 
2947
- #: settings.php:841 settings.php:1008 cerber-lab.php:813
 
2948
  msgid "Know more"
2949
  msgstr "Узнать больше"
2950
 
2951
- #: settings.php:1008
2952
  msgid "Before you can start using reCAPTCHA, you have to obtain Site key and Secret key on the Google website"
2953
  msgstr "Перед использованием reCAPTCHA вам нужно получить ключ сайта и секретный ключ на сайте Google"
2954
 
2955
- #: settings.php:107
2956
  msgid "Please enable Permalinks to use this feature. Set Permalink Settings to something other than Default."
2957
  msgstr "Для использования этой настройки необходимо активировать Постоянные ссылки в настройках сайта."
2958
 
2959
- #: settings.php:154
2960
  msgid "Make your protection smarter!"
2961
  msgstr "Сделайте защиту от злоумышленников еще умнее"
2962
 
2963
- #: settings.php:1044
2964
  msgid "Login form"
2965
  msgstr "Форма входа"
2966
 
2967
- #: settings.php:1034
2968
  msgid "Lost password form"
2969
  msgstr "Форма восстановления пароля"
2970
 
2971
- #: settings.php:1015
2972
  msgid "Secret key"
2973
  msgstr "Секретный ключ"
2974
 
2975
- #: settings.php:1011
2976
  msgid "Site key"
2977
  msgstr "Ключ сайта"
2978
 
2979
- #: settings.php:1007
2980
  msgid "reCAPTCHA settings"
2981
  msgstr "Настройки reCAPTCHA"
2982
 
2983
- #: settings.php:544
2984
  msgid "in minutes (leave empty to use default WP value)"
2985
  msgstr "В минутах (оставьте пустым для значения WP по умолчанию)"
2986
 
2987
- #: settings.php:536
2988
  msgid "Usernames from this list are not allowed to log in or register. Any IP address, have tried to use any of these usernames, will be immediately blocked. Use comma to separate logins."
2989
  msgstr "Имена пользователей из этого списка не разрешены для входа или регистрации. Любой IP адрес пытающийся использовать эти имена будет автоматически заблокирован. Испольуйте запятую как разделитель."
2990
 
2991
- #: settings.php:535
2992
  msgid "Prohibited usernames"
2993
  msgstr "Запрещеные имена пользователей"
2994
 
2995
- #: settings.php:357
2996
  msgid "Disable REST API"
2997
  msgstr "Отключить REST API"
2998
 
2999
- #: settings.php:342
3000
  msgid "Block access to the RSS, Atom and RDF feeds"
3001
  msgstr "Закрыть доступ к RSS, Atom и RDF лентам"
3002
 
3003
- #: settings.php:341
3004
  msgid "Disable feeds"
3005
  msgstr "Отключить ленты"
3006
 
3007
- #: settings.php:337
3008
  msgid "Block access to the XML-RPC server (including Pingbacks and Trackbacks)"
3009
  msgstr "Закрыть доступ к функциям XML-RPC, включая уведомления и обратные ссылки"
3010
 
3011
- #: settings.php:336
3012
  msgid "Disable XML-RPC"
3013
  msgstr "Отключить XML-RPC"
3014
 
3015
- #: settings.php:318
3016
  msgid "Block access to user pages like /?author=n"
3017
  msgstr "Закрыть доступ к страницам авторов наподобие /?author=n"
3018
 
3019
- #: settings.php:317 settings.php:352
3020
  msgid "Stop user enumeration"
3021
  msgstr "Заблокировать сбор имен"
3022
 
3023
- #: settings.php:313
3024
  msgid "Hardening WordPress"
3025
  msgstr "Усиление защиты WordPress"
3026
 
3027
- #: settings.php:286
3028
  msgid "Write failed login attempts to the file"
3029
  msgstr "Записывать попытки входа в файл"
3030
 
3031
- #: settings.php:285
3032
  msgid "Use file"
3033
  msgstr "Использовать файл"
3034
 
3035
- #: settings.php:296
3036
  msgid "Retrieve extra WHOIS information for IP"
3037
  msgstr "Получить дополнительную информацию об IP используя WHOIS"
3038
 
3039
- #: settings.php:295
3040
  msgid "Drill down IP"
3041
  msgstr "Изучать IP"
3042
 
3043
- #: settings.php:261 settings.php:267 settings.php:759 settings.php:764
3044
- #: settings.php:817 settings.php:1000
3045
  msgid "days"
3046
  msgstr "дней"
3047
 
3048
- #: settings.php:620
3049
- msgid "notification letters allowed per hour (0 means unlimited)"
3050
  msgstr "разрешенное число писем с уведомлениями в час (0 - без ограничений)"
3051
 
3052
- #: settings.php:619
3053
  msgid "Notification limit"
3054
  msgstr "Ограничение уведомлений"
3055
 
3056
- #: settings.php:616
3057
- msgid "if empty, the admin email %s will be used"
3058
- msgstr "Если пусто, то будет использован адрес администратора %s"
3059
-
3060
- #: settings.php:611 settings.php:654 settings.php:870
3061
  msgid "Email Address"
3062
  msgstr "Адрес email"
3063
 
3064
- #: settings.php:251 admin/cerber-settings.php:340
3065
  msgid "Click to send test"
3066
  msgstr "Нажмите, чтобы протестировать отправку"
3067
 
3068
- #: settings.php:247
3069
  msgid "Send notification to admin email"
3070
  msgstr "Отправить уведомление на адрес email администратора сайта"
3071
 
3072
- #: settings.php:239 cerber-scanner.php:3945
3073
  msgid "Duration"
3074
  msgstr "Длительность"
3075
 
3076
- #: settings.php:234
3077
  msgid "Threshold"
3078
  msgstr "Порог"
3079
 
3080
- #: settings.php:201
3081
  msgid "Block direct access to wp-login.php and return HTTP 404 Not Found Error"
3082
  msgstr "Заблокировать доступ к wp-login.php и возвращать HTTP 404 Страница не найдена"
3083
 
3084
- #: settings.php:200
3085
  msgid "Disable wp-login.php"
3086
  msgstr "Доступ к wp-login.php"
3087
 
3088
- #: settings.php:193
3089
  msgid "must not overlap with the existing pages or posts slug"
3090
  msgstr "не должно совпадать с URL существующих страниц или записей"
3091
 
3092
- #: settings.php:192
3093
  msgid "Custom login URL"
3094
  msgstr "Адрес страницы авторизации"
3095
 
3096
- #: settings.php:188
3097
  msgid "Custom login page"
3098
  msgstr "Смена URL страницы авторизации"
3099
 
3100
- #: settings.php:173
3101
  msgid "Immediately block IP after any request to wp-login.php"
3102
  msgstr "Блокировать IP при любом запросе wp-login.php"
3103
 
3104
- #: settings.php:172
3105
  msgid "Request wp-login.php"
3106
  msgstr "Запрос wp-login.php"
3107
 
3108
- #: settings.php:168
3109
  msgid "Disable automatic redirection to the login page when /wp-admin/ is requested by an unauthorized request"
3110
  msgstr "Отключить автоматическую переадресацию при запросе /wp-admin/ неавторизованным пользователем"
3111
 
3112
- #: settings.php:163
3113
  msgid "Immediately block IP when attempting to log in with a non-existing username"
3114
  msgstr "Блокировать IP при попытке авторизации с логином несуществующего пользователя"
3115
 
3116
- #: settings.php:162
3117
  msgid "Non-existing users"
3118
  msgstr "Несуществующие пользователи"
3119
 
3120
- #: settings.php:158
3121
  msgid "Always block entire subnet Class C of intruders IP"
3122
  msgstr "Всегда блокировать подсеть класса С вместо IP адреса"
3123
 
3124
- #: settings.php:157
3125
  msgid "Block subnet"
3126
  msgstr "Блокировка подсети"
3127
 
3128
- #: settings.php:153
3129
  msgid "Proactive security rules"
3130
  msgstr "Проактивные правила безопасности"
3131
 
3132
- #: settings.php:211 dashboard.php:2103
3133
  msgid "My site is behind a reverse proxy"
3134
  msgstr "Мой сайт подключен к сети через прокси-сервер"
3135
 
3136
- #: settings.php:210
3137
  msgid "Site connection"
3138
  msgstr "Подключение к сети"
3139
 
3140
- #: settings.php:245 dashboard.php:4500
3141
  msgid "Notifications"
3142
  msgstr "Уведомления"
3143
 
3144
- #: settings.php:142
3145
  msgid "Aggressive lockout"
3146
  msgstr "Ужесточение"
3147
 
3148
- #: settings.php:138 settings.php:240
3149
  msgid "minutes"
3150
  msgstr "минут"
3151
 
3152
- #: settings.php:137
3153
  msgid "Lockout duration"
3154
  msgstr "Длительность блокировки"
3155
 
3156
- #: settings.php:133
3157
- msgid "Attempts"
3158
- msgstr "Попытки"
3159
-
3160
- #: settings.php:130
3161
  msgid "Limit login attempts"
3162
  msgstr "Ограничение числа попыток авторизации"
3163
 
3164
- #: dashboard.php:1391
3165
  msgid "Abuse email:"
3166
  msgstr "Адрес email для жалоб:"
3167
 
3168
- #: settings.php:624
3169
  msgid "New version is available"
3170
  msgstr "Доступна новая версия"
3171
 
3172
- #: dashboard.php:2446 dashboard.php:2833
3173
  msgid "View Activity"
3174
  msgstr "Что происходит?"
3175
 
3176
- #: dashboard.php:2445
3177
  msgid "Deactivate"
3178
  msgstr "Деактивировать"
3179
 
3180
- #: dashboard.php:2444
3181
  msgid "Attention! Citadel mode is now active. Nobody is able to log in."
3182
  msgstr "Внимание! Режим Цитадель активен. Авторизация на сайте заблокирована."
3183
 
3184
- #: dashboard.php:2338
3185
  msgid "doesn't affect Custom login URL and Access Lists"
3186
  msgstr "не затронет настройки URL страницы авторизации и списки доступа"
3187
 
3188
- #: dashboard.php:2332 dashboard.php:4942 cerber-scanner.php:5726
3189
- #: cerber-scanner.php:5884
3190
  msgid "Are you sure?"
3191
  msgstr "Вы уверены?"
3192
 
3193
- #: dashboard.php:2330
3194
  msgid "Load default settings"
3195
  msgstr "Загрузить настройки"
3196
 
3197
- #: dashboard.php:2328
3198
  msgid "You can easily load default recommended settings using button below"
3199
  msgstr "Вы можете загрузить рекомендованные настройки с помощью всего одной кнопки"
3200
 
3201
- #: dashboard.php:2327
3202
  msgid "Confused about some settings?"
3203
  msgstr "Сомневаетесь какие настройки оптимальны?"
3204
 
3205
- #: dashboard.php:4495
3206
  msgid "Lockouts"
3207
  msgstr "Блокировки"
3208
 
3209
- #: settings.php:224 dashboard.php:1707
3210
  msgid "Citadel mode"
3211
  msgstr "Режим Цитадель"
3212
 
3213
- #: dashboard.php:1705 dashboard.php:1706 dashboard.php:2624
3214
  msgid "entry"
3215
  msgid_plural "entries"
3216
  msgstr[0] "элемент"
3217
  msgstr[1] "элемента"
3218
  msgstr[2] "элементов"
3219
 
3220
- #: dashboard.php:1701
3221
  msgid "Last lockout"
3222
  msgstr "Последняя блокировка"
3223
 
3224
- #: dashboard.php:1700
3225
  msgid "Lockouts at the moment"
3226
  msgstr "Сейчас заблокировано"
3227
 
3228
- #: dashboard.php:1698
3229
  msgid "lockouts"
3230
  msgstr "блокировок"
3231
 
3232
- #: dashboard.php:1697 dashboard.php:1698
3233
  msgid "view all"
3234
  msgstr "просмотреть все"
3235
 
3236
- #: dashboard.php:1697 dashboard.php:1698
3237
  msgid "in 24 hours"
3238
  msgstr "за 24 часа"
3239
 
3240
- #: dashboard.php:1697
3241
  msgid "failed attempts"
3242
  msgstr "ошибок авторизации"
3243
 
3244
- #: dashboard.php:1691 dashboard.php:1709
3245
  msgid "disabled"
3246
  msgstr "отключен"
3247
 
3248
- #: dashboard.php:1688
3249
  msgid "not active"
3250
  msgstr "неактивен"
3251
 
3252
- #: dashboard.php:1684
3253
  msgid "deactivate"
3254
  msgstr "деактивировать"
3255
 
3256
- #: dashboard.php:1684 dashboard.php:1714
3257
  msgid "active"
3258
  msgstr "активен"
3259
 
3260
- #: dashboard.php:1645
3261
  msgid "Cerber Quick View"
3262
  msgstr "Сводка от Cerber"
3263
 
@@ -3273,7 +3358,7 @@ msgstr "Все настройки успешно загружены"
3273
  msgid "No file was uploaded or file is corrupted"
3274
  msgstr "Файл не был загружен или имеет неверный формат"
3275
 
3276
- #: cerber-tools.php:48 cerber-scanner.php:4096
3277
  msgid "Upload file"
3278
  msgstr "Загрузить файл"
3279
 
@@ -3281,7 +3366,7 @@ msgstr "Загрузить файл"
3281
  msgid "What do you want to import?"
3282
  msgstr "Что вы хотите импортировать?"
3283
 
3284
- #: cerber-tools.php:43 cerber-scanner.php:4093
3285
  msgid "Maximum upload file size: %s."
3286
  msgstr "Максимальный размер загружаемого файла: %s."
3287
 
@@ -3301,12 +3386,12 @@ msgstr "Импорт настроек из файла"
3301
  msgid "Download file"
3302
  msgstr "Скачать файл"
3303
 
3304
- #: cerber-tools.php:38 cerber-tools.php:47 dashboard.php:4497
3305
  msgid "Access Lists"
3306
  msgstr "Списки доступа"
3307
 
3308
- #: cerber-tools.php:37 cerber-tools.php:46 dashboard.php:4561
3309
- #: dashboard.php:4622 nexus/cerber-nexus.php:90
3310
  msgid "Settings"
3311
  msgstr "Настройки"
3312
 
@@ -3322,179 +3407,179 @@ msgstr "Когда вы нажмете на кнопку, то получите
3322
  msgid "Export settings to the file"
3323
  msgstr "Экспорт настроек в файл"
3324
 
3325
- #: dashboard.php:1588 dashboard.php:1679 nexus/cerber-slave-list.php:345
3326
- #: common.php:1569
3327
  msgid "Never"
3328
  msgstr "Никогда"
3329
 
3330
- #: common.php:1289
3331
  msgid "User created"
3332
  msgstr "Пользователь создан"
3333
 
3334
- #: common.php:1290
3335
  msgid "User registered"
3336
  msgstr "Пользователь зарегистрирован"
3337
 
3338
- #: common.php:1291
3339
  msgid "Logged in"
3340
  msgstr "Вход"
3341
 
3342
- #: common.php:1292
3343
  msgid "Logged out"
3344
  msgstr "Выход"
3345
 
3346
- #: common.php:1293
3347
  msgid "Login failed"
3348
  msgstr "Ошибка авторизации"
3349
 
3350
- #: dashboard.php:938 common.php:1296
3351
  msgid "IP blocked"
3352
  msgstr "IP заблокирован"
3353
 
3354
- #: common.php:1300
3355
  msgid "Citadel activated!"
3356
  msgstr "Режим Цитадель активирован!"
3357
 
3358
- #: dashboard.php:1318 dashboard.php:1354 dashboard.php:3723 common.php:1354
3359
  msgid "Locked out"
3360
  msgstr "Заблокировано"
3361
 
3362
- #: common.php:1313
3363
  msgid "Password changed"
3364
  msgstr "Пароль изменен"
3365
 
3366
- #: common.php:1356
3367
  msgid "IP blacklisted"
3368
  msgstr "IP в черном списке"
3369
 
3370
- #: common.php:1316
3371
  msgid "reCAPTCHA verification failed"
3372
  msgstr "проверка reCAPTCHA неудачна"
3373
 
3374
- #: common.php:1317
3375
  msgid "reCAPTCHA settings are incorrect"
3376
  msgstr "настройки reCAPTCHA неверны"
3377
 
3378
- #: common.php:1320 common.php:1410
3379
  msgid "Attempt to access prohibited URL"
3380
  msgstr "Попытка доступа к запрещенному URL"
3381
 
3382
- #: common.php:1321 common.php:1411
3383
  msgid "Attempt to log in with non-existing username"
3384
  msgstr "Попытка войти с несуществующим именем пользователя"
3385
 
3386
- #: common.php:1322 common.php:1412
3387
  msgid "Attempt to log in with prohibited username"
3388
  msgstr "Попытка входа с запрещенным именем"
3389
 
3390
- #: dashboard.php:182 dashboard.php:290
3391
  msgid "Remove"
3392
  msgstr "Удалить"
3393
 
3394
- #: cerber-load.php:4800 dashboard.php:187
3395
  msgid "IP"
3396
  msgstr "IP"
3397
 
3398
- #: dashboard.php:188 dashboard.php:1105
3399
  msgid "Hostname"
3400
  msgstr "Имя узла"
3401
 
3402
- #: dashboard.php:190 cerber-users.php:972
3403
  msgid "Expires"
3404
  msgstr "Истекает"
3405
 
3406
- #: cerber-load.php:4097 dashboard.php:191
3407
  msgid "Reason"
3408
  msgstr "Причина"
3409
 
3410
- #: dashboard.php:192 cerber-users.php:975 cerber-scanner.php:5752
3411
- #: cerber-scanner.php:5900
3412
  msgid "Action"
3413
  msgstr "Действие"
3414
 
3415
- #: dashboard.php:208
3416
  msgid "Showing last %d records from %d"
3417
  msgstr "Отображены последние %d строк из %d"
3418
 
3419
- #: dashboard.php:210
3420
  msgid "Hint"
3421
  msgstr "Подсказка"
3422
 
3423
- #: dashboard.php:210
3424
  msgid "To view activity, click on the IP"
3425
  msgstr "Чтобы увидеть активность, нажмите на адрес IP"
3426
 
3427
- #: dashboard.php:214
3428
  msgid "No lockouts at the moment. The sky is clear."
3429
  msgstr "Блокировок нет. Все в порядке."
3430
 
3431
- #: cerber-load.php:5085 dashboard.php:238 dashboard.php:1310 dashboard.php:1347
3432
- #: dashboard.php:1705 dashboard.php:3715
3433
  msgid "White IP Access List"
3434
  msgstr "Белый список доступа по IP"
3435
 
3436
- #: dashboard.php:241 dashboard.php:1313 dashboard.php:1350 dashboard.php:1706
3437
- #: dashboard.php:3718
3438
  msgid "Black IP Access List"
3439
  msgstr "Черный список доступа по IP"
3440
 
3441
- #: dashboard.php:248
3442
  msgid "Your IP"
3443
  msgstr "Ваш адрес IP"
3444
 
3445
- #: dashboard.php:286 dashboard.php:1361 dashboard.php:1396 dashboard.php:1519
3446
  msgid "Check for activities"
3447
  msgstr "Проверить активность"
3448
 
3449
- #: dashboard.php:296
3450
  msgid "List is empty"
3451
  msgstr "Список пуст"
3452
 
3453
- #: dashboard.php:488
3454
  msgid "unknown"
3455
  msgstr "неизвестно"
3456
 
3457
- #: dashboard.php:551
3458
  msgid "Lockout for %s was removed"
3459
  msgstr "Удалена блокировка для %s"
3460
 
3461
- #: dashboard.php:2461 nexus/cerber-nexus-slave.php:446
3462
  msgid "Settings saved"
3463
  msgstr "Настройки сохранены."
3464
 
3465
- #: dashboard.php:822 dashboard.php:1107 dashboard.php:3511 dashboard.php:3934
3466
  msgid "Date"
3467
  msgstr "Дата"
3468
 
3469
- #: settings.php:257 cerber-load.php:4791 dashboard.php:1741 dashboard.php:2286
3470
- #: dashboard.php:4493 cerber-users.php:1139
3471
  msgid "Activity"
3472
  msgstr "Активность"
3473
 
3474
- #: dashboard.php:1137
3475
  msgid "No activity has been logged."
3476
  msgstr "Ни одного события не зафиксировано."
3477
 
3478
- #: cerber-load.php:4808
3479
  msgid "Username used"
3480
  msgstr "Использован логин"
3481
 
3482
- #: dashboard.php:825 dashboard.php:1109 dashboard.php:3939
3483
  msgid "Local User"
3484
  msgstr "Пользователь"
3485
 
3486
- #: dashboard.php:1416
3487
  msgid "Add IP to the Black List"
3488
  msgstr "Добавить IP в черный список"
3489
 
3490
- #: dashboard.php:1554
3491
  msgid "Comments"
3492
  msgstr "Комментарии"
3493
 
3494
- #: dashboard.php:1555
3495
  msgid "Last login"
3496
  msgstr "Последний вход"
3497
 
3498
- #: settings.php:551
3499
  msgid "by date of registration"
3500
  msgstr "по дате регистрации"
2
  # This file is distributed under the same license as the Plugins - Cerber Security, Antispam &amp; Malware Scan - Stable (latest release) package.
3
  msgid ""
4
  msgstr ""
5
+ "PO-Revision-Date: 2020-04-01 14:54:17+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
11
  "Language: ru\n"
12
  "Project-Id-Version: Plugins - Cerber Security, Antispam &amp; Malware Scan - Stable (latest release)\n"
13
 
14
+ #: common.php:1425
15
+ msgid "Multiple erroneous requests"
16
+ msgstr "Множественные ошибочные запросы"
17
+
18
+ #: nexus/cerber-nexus-slave.php:451
19
+ msgid "Settings updated"
20
+ msgstr "Настройки обновлены"
21
+
22
+ #: dashboard.php:1152
23
+ msgid "Search in URL"
24
+ msgstr "Поиск URL"
25
+
26
+ #: dashboard.php:1151
27
+ msgid "Request ID"
28
+ msgstr "ID запроса"
29
+
30
+ #: admin/cerber-settings.php:353
31
+ msgid "%s registrations are allowed within %s minutes from one IP address"
32
+ msgstr "Допустимо %s регистраций в течении %s минут с одного IP-адреса"
33
+
34
+ #: admin/cerber-settings.php:347
35
+ msgid "%s retries are allowed within %s minutes"
36
+ msgstr "Допустимо %s попыток в течении %s минут"
37
+
38
+ #: cerber-addons.php:289 dashboard.php:79
39
+ msgid "Add-ons"
40
+ msgstr "Дополнения"
41
+
42
+ #: settings.php:1040
43
+ msgid "How the plugin processes comments submitted through the standard comment form"
44
+ msgstr "То, как плагин обрабатывает комментарии через стандартную форму комментариев"
45
+
46
+ #: settings.php:1016
47
+ msgid "These settings enable you to fine-tune the behavior of anti-spam algorithms and avoid false positives"
48
+ msgstr "Эти настройки позволяют тонко настроить поведение алгоритмов защиты от спама и избежать ложных срабатываний"
49
+
50
+ #: settings.php:994
51
+ msgid "Spam protection for comment, registration and contact forms on a website"
52
+ msgstr "Антиспам защита для комментариев, форм регистрации и контактов на сайте"
53
+
54
+ #: settings.php:927
55
+ msgid "These policies are automatically enforced at the end of every scheduled scan based on its results. All affected files are moved to the quarantine"
56
+ msgstr "Эти правила автоматически применяются в конце каждой запланированной проверки, в зависимости от её результатов. Все затронутые файлы перемещаются в карантин"
57
+
58
+ #: settings.php:885
59
+ msgid "Configure what issues to include in the email report and the condition for sending reports"
60
+ msgstr "Настройте то, о чем хотите получать отчёт, а также условия для отправки отчёта"
61
+
62
+ #: settings.php:868
63
+ msgid "The scanner automatically scans the website, removes malware and sends email reports with the results of a scan"
64
+ msgstr "Сканер автоматически проверяет сайт, удаляет вредоносный код и посылает отчет по email с результатами сканирования"
65
+
66
+ #: settings.php:832 settings.php:841
67
+ msgid "All files"
68
+ msgstr "Все файлы"
69
+
70
+ #: settings.php:831 settings.php:840
71
+ msgid "Executable files"
72
+ msgstr "Исполняемые файлы"
73
+
74
+ #: settings.php:802
75
+ msgid "The scanner monitors file changes, verifies the integrity of WordPress, plugins, and themes, and detects malware"
76
+ msgstr "Сканер следит за изменениями файлов, проверяет целостность файлов WordPress, плагинов, тем. Определяет вредоносный код."
77
+
78
+ #: settings.php:738
79
+ msgid "Enable optional traffic logging if you need to monitor suspicious and malicious activity or solve security issues"
80
+ msgstr "Включите дополнительную запись трафика в журнал, если вам требуется отслеживать подозрительную или вредоносную активность или решить проблемы с безопасностью"
81
+
82
+ #: settings.php:737
83
+ msgid "Traffic Logging"
84
+ msgstr "Журналирование трафика"
85
+
86
+ #: settings.php:718
87
+ msgid "Block IP addresses that send excessive requests for non-existing pages or scan website for security breaches"
88
+ msgstr "Блокировка IP-адресов посылающих избыточные запросы на несуществующие страницы или проверяющих сайт на уязвимости в безопасности"
89
+
90
+ #: settings.php:689
91
+ msgid "Traffic Inspector is a context-aware web application firewall (WAF) that protects your website by recognizing and denying malicious HTTP requests"
92
+ msgstr "Инспектор трафика - фаерволл уровня веб-приложения, защищающий ваш сайт распознавая и блокируя вредоносные HTTP запросы"
93
+
94
+ #: settings.php:677 settings.php:916
95
+ msgid "if empty, the email addresses from the notification settings will be used"
96
+ msgstr "Если не задано, то будет использован email администратора из настроек уведомлений"
97
+
98
+ #: settings.php:664
99
+ msgid "Weekly report is a summary of all activities and suspicious events occurred during the last seven days"
100
+ msgstr "Еженедельный отчет представляет собой обобщение активности и подозрительных событий за последние 7 дней."
101
+
102
+ #: settings.php:649
103
+ msgid "Get notified instantly with mobile and desktop notifications"
104
+ msgstr "Получайте немедленные уведомления на мобильные и стационарные устройства"
105
+
106
+ #: settings.php:633
107
+ msgid "if empty, the website administrator email %s will be used"
108
+ msgstr "Если не задано, то будет использован email администратора %s"
109
+
110
+ #: settings.php:575
111
+ msgid "These features help your organization to be in compliance with personal data protection laws"
112
+ msgstr "Эти возможности позволяют вашему сайту соответствовать нормативам защиты персональных данных"
113
+
114
+ #: settings.php:360
115
+ msgid "Restrict or completely block access to the WordPress REST API according to your needs"
116
+ msgstr "Ограничение или полная блокировка WP REST-API"
117
+
118
+ #: settings.php:142
119
+ msgid "Limit"
120
+ msgstr "Предел"
121
+
122
+ #: settings.php:824
123
+ msgid "Specify directories to exclude from scanning. One directory per line."
124
+ msgstr "Задайте папки для исключения при сканировании. Одна папка на строку."
125
+
126
  #: cerber-users.php:942
127
  msgid "WP Cerber Personal Data Eraser"
128
  msgstr "WP Cerber удаление персональных данных"
131
  msgid "Admin Note"
132
  msgstr "Заметка администратора"
133
 
134
+ #: settings.php:611
135
  msgid "Cookies"
136
  msgstr "Куки"
137
 
138
+ #: settings.php:610
139
  msgid "Form fields data"
140
  msgstr "Данные полей формы"
141
 
142
+ #: settings.php:609
143
  msgid "Request URL"
144
  msgstr "URL запроса"
145
 
146
+ #: settings.php:606
147
  msgid "Include traffic log entries"
148
  msgstr "Включить записи журнала трафика"
149
 
150
+ #: settings.php:600
151
  msgid "Include activity log events"
152
  msgstr "Включить события журнала активности"
153
 
154
+ #: settings.php:593
155
  msgid "Enable data export"
156
  msgstr "Включить экспорт данных"
157
 
158
+ #: settings.php:587
159
  msgid "Delete user sessions data when user data is erased"
160
  msgstr "Удалить пользовательские сессии при уничтожении данных пользователя"
161
 
162
+ #: settings.php:586
163
  msgid "Terminate user sessions"
164
  msgstr "Завершение пользовательских сессий"
165
 
166
+ #: settings.php:579
167
  msgid "Enable data erase"
168
  msgstr "Включить уничтожение данных"
169
 
170
+ #: settings.php:573
171
  msgid "Personal Data"
172
  msgstr "Персональные данные"
173
 
174
+ #: settings.php:275 settings.php:793
175
  msgid "Keep log records of logged in users for"
176
  msgstr "Сохранять записи журнала для авторизованных пользователей"
177
 
178
+ #: settings.php:269 settings.php:788
179
  msgid "Keep log records of not logged in visitors for"
180
  msgstr "Сохранять записи журнала для неавторизованных пользователей"
181
 
182
+ #: settings.php:237
183
  msgid "Enable authentication log monitoring"
184
  msgstr "Включить наблюдение над журналом авторизации"
185
 
186
+ #: settings.php:1265
187
  msgid "Any activity"
188
  msgstr "Любая активность"
189
 
190
+ #: common.php:1341
191
  msgid "User metadata update denied"
192
  msgstr "Изменение метаданных пользователя запрещено"
193
 
194
+ #: common.php:1338
195
  msgid "User row update denied"
196
  msgstr "Изменение пользователя запрещено"
197
 
198
+ #: common.php:1302
199
  msgid "IP subnet blocked"
200
  msgstr "Подсеть IP заблокирована"
201
 
203
  msgid "A database error occurred while importing access list entries"
204
  msgstr "Возникла ошибка базы данных при импорте списка адресов"
205
 
206
+ #: dashboard.php:4875
207
  msgid "The IP address you are trying to add is already in the list"
208
  msgstr "Этот IP адрес уже присутствует в списке"
209
 
210
+ #: dashboard.php:315
211
  msgid "Add Entry"
212
  msgstr "Добавить запись"
213
 
214
+ #: dashboard.php:314
215
  msgid "IP address, range, wildcard, or CIDR"
216
  msgstr "IP адрес, диапазон, маска или CIDR"
217
 
227
  msgid "All countries"
228
  msgstr "Все страны"
229
 
230
+ #: nexus/cerber-nexus-master.php:66
231
  msgid "Show homepage in the Website column"
232
  msgstr "Показывать домашнюю страницу в столбце вебсайта"
233
 
234
+ #: nexus/cerber-nexus-master.php:68
235
  msgid "Hide server IP address"
236
  msgstr "Спрятать IP адрес сервера"
237
 
238
+ #: settings.php:423 settings.php:451 settings.php:480
239
  msgid "Do not apply these policies to the IP addresses in the White IP Access List"
240
  msgstr "Не применять эти политики к IP адресам из белого списка"
241
 
243
  msgid "Server"
244
  msgstr "Сервер"
245
 
246
+ #: dashboard.php:4641
247
  msgid "Site Settings"
248
  msgstr "Настройки сайта"
249
 
250
+ #: dashboard.php:4640
251
  msgid "Accounts & Roles"
252
  msgstr "Учетные записи и роли"
253
 
254
+ #: dashboard.php:4638
255
  msgid "Data Shield Policies"
256
  msgstr "Политики защиты данных"
257
 
259
  msgid "Data Shield"
260
  msgstr "Защита данных"
261
 
262
+ #: settings.php:474
263
  msgid "Protected settings"
264
  msgstr "Защищенные настройки"
265
 
266
+ #: settings.php:469
267
  msgid "Users with these roles are permitted to change protected settings"
268
  msgstr "Пользователи с этими ролями могут изменять защищенные настройки"
269
 
270
+ #: settings.php:463
271
  msgid "Restrict updating site settings with the following policies"
272
  msgstr "Ограничить изменение настроек сайта следующими правилами"
273
 
274
+ #: settings.php:459
275
  msgid "Protect site settings"
276
  msgstr "Защита настроек сайта"
277
 
278
+ #: settings.php:446
279
  msgid "Users with these roles are permitted to change role capabilities"
280
  msgstr "Пользователи с этими ролями могут изменять возможности ролей"
281
 
282
+ #: settings.php:441
283
  msgid "Users with these roles are permitted to add new roles"
284
  msgstr "Пользователи с этими ролями могут добавлять новые роли"
285
 
286
+ #: settings.php:435
287
  msgid "Restrict roles and capabilities management with the following policies"
288
  msgstr "Ограничить управление ролями и возможностями следующими правилами"
289
 
290
+ #: settings.php:431
291
  msgid "Protect user roles"
292
  msgstr "Защита ролей пользователей"
293
 
295
  msgid "Cerber Data Shield Policies"
296
  msgstr "Cerber политики защиты данных"
297
 
298
+ #: settings.php:418
299
  msgid "Users with these roles are permitted to change sensitive user data"
300
  msgstr "Пользователи с этими ролями могут изменять важные пользовательские данные"
301
 
302
+ #: settings.php:413
303
  msgid "Users with these roles are permitted to create new accounts"
304
  msgstr "Пользователи с этими ролями могут создавать новые учетные записи"
305
 
306
+ #: settings.php:407
307
  msgid "User registrations are limited to these roles"
308
  msgstr "Регистрация ограничена следующими ролями"
309
 
310
+ #: settings.php:401
311
  msgid "Restrict user account creation and user management with the following policies"
312
  msgstr "Ограничить создание учетных записей и управление пользователями следующими правилами"
313
 
314
+ #: settings.php:396
315
  msgid "Protect user accounts"
316
  msgstr "Защита учетных записей пользователей"
317
 
318
+ #: common.php:1384
319
  msgid "Incorrect password"
320
  msgstr "Неверный пароль"
321
 
322
+ #: common.php:1383
323
  msgid "Invalid user"
324
  msgstr "Неверный пользователь"
325
 
326
+ #: common.php:1381
327
  msgid "Permission denied"
328
  msgstr "Доступ запрещен"
329
 
330
+ #: common.php:1340
331
  msgid "Setting update denied"
332
  msgstr "Изменение настройки запрещено"
333
 
334
+ #: common.php:1339
335
  msgid "Role update denied"
336
  msgstr "Изменение роли запрещено"
337
 
338
+ #: common.php:1337
339
  msgid "User creation denied"
340
  msgstr "Создание пользователя запрещено"
341
 
410
  msgid "The code is valid for %s minutes."
411
  msgstr "Этот код действителен в течении %s минут."
412
 
413
+ #: dashboard.php:4558
414
  msgid "Sessions"
415
  msgstr "Сессии"
416
 
417
+ #: dashboard.php:3401
418
  msgid "All Users"
419
  msgstr "Все пользователи"
420
 
421
+ #: dashboard.php:3289
422
  msgid "Any country is permitted"
423
  msgstr "Разрешены все страны"
424
 
425
+ #: dashboard.php:3207
426
  msgid "Role-based rules are configured"
427
  msgstr "Правила на основе ролей настроены"
428
 
429
+ #: dashboard.php:1734
430
  msgid "user"
431
  msgid_plural "users"
432
  msgstr[0] "пользователь"
433
  msgstr[1] "пользователя"
434
  msgstr[2] "пользователей"
435
 
436
+ #: dashboard.php:840 dashboard.php:1085
437
  msgid "Username"
438
  msgstr "Имя пользователя"
439
 
440
+ #: dashboard.php:833 dashboard.php:1079 dashboard.php:3976 cerber-users.php:973
441
  msgid "IP Address"
442
  msgstr "IP-адрес"
443
 
444
+ #: dashboard.php:342
445
  msgid "IP address %s has been added to Black IP Access List"
446
  msgstr "IP адрес %s был добавлен в черный список доступа по IP"
447
 
448
+ #: dashboard.php:345
449
  msgid "IP address %s has been added to White IP Access List"
450
  msgstr "IP адрес %s был добавлен в белый список доступа по IP"
451
 
452
+ #: dashboard.php:2612
453
  msgid "The alert has been deleted"
454
  msgstr "Тревожное предупреждение удалено"
455
 
457
  msgid "Cerber Tech Inc."
458
  msgstr "Cerber Tech Inc."
459
 
460
+ #: common.php:1374
461
  msgid "Site policy enforcement"
462
  msgstr "Форсирование политики сайта"
463
 
464
+ #: common.php:1375
465
  msgid "2FA code verified"
466
  msgstr "2ФА код проверен"
467
 
468
+ #: common.php:1376
469
  msgid "Initiated by the user"
470
  msgstr "Начато пользователем"
471
 
472
+ #: common.php:1379
473
  msgid "Email address is not permitted"
474
  msgstr "Email адрес недопустим"
475
 
476
+ #: common.php:1762
477
  msgid "A new version of %s is available. Please install it."
478
  msgstr "Доступна новая версия %s, пожалуйста, установите её."
479
 
517
  msgid "Redirect user after login"
518
  msgstr "Перенаправить пользователя после входа"
519
 
520
+ #: settings.php:557 cerber-users.php:431
521
  msgid "User session expiration time"
522
  msgstr "Время до истечения сессии пользователя"
523
 
541
  msgid "days interval"
542
  msgstr "интервал в днях"
543
 
544
+ #: cerber-scanner.php:5403
545
  msgid "Automatically deleted"
546
  msgstr "Автоматически удалено"
547
 
548
+ #: cerber-scanner.php:5353
549
  msgid "Recovered"
550
  msgstr "Восстановлено"
551
 
552
+ #: cerber-scanner.php:5406
553
  msgid "Automatically recovered"
554
  msgstr "Автоматически восстановлено"
555
 
557
  msgid "Cerber User Security"
558
  msgstr "Безопасность пользователей"
559
 
560
+ #: dashboard.php:64 dashboard.php:4648
561
  msgid "User Policies"
562
  msgstr "Политики пользователей"
563
 
564
+ #: dashboard.php:942
565
  msgid "New users"
566
  msgstr "Новые пользователи"
567
 
568
+ #: dashboard.php:955
569
  msgid "My activity"
570
  msgstr "Моя активность"
571
 
572
+ #: dashboard.php:1784
573
  msgid "A new version is available"
574
  msgstr "Доступна новая версия"
575
 
576
+ #: dashboard.php:2571
577
  msgid "Create Alert"
578
  msgstr "Создать тревожное предупреждение"
579
 
580
+ #: dashboard.php:2575
581
  msgid "Delete Alert"
582
  msgstr "Удалить тревожное предупреждение"
583
 
584
+ #: dashboard.php:2608
585
  msgid "The alert has been created"
586
  msgstr "Тревожное предупреждение создано"
587
 
588
+ #: dashboard.php:4651
589
  msgid "Global"
590
  msgstr "Глобальная"
591
 
592
+ #: settings.php:204
593
  msgid "Custom login URL may contain Latin alphanumeric characters, dashes and underscores only"
594
  msgstr "Пользовательский URL входа может содержать только латинские буквы, цифры, тире и знак подчеркивания."
595
 
596
+ #: settings.php:216
597
  msgid "Site-specific settings"
598
  msgstr "Специфические настройки сайта"
599
 
600
+ #: settings.php:224
601
  msgid "Prefix for plugin cookies"
602
  msgstr "Префикс для куки плагинов"
603
 
604
+ #: settings.php:225
605
  msgid "Prefix may contain only Latin alphanumeric characters and underscores"
606
  msgstr "Префикс может содержать только латинские буквы, цифры и знак подчеркивания"
607
 
608
+ #: settings.php:532
609
  msgid "Restrict email addresses"
610
  msgstr "Ограничение адресов email"
611
 
612
+ #: settings.php:535
613
  msgid "No restrictions"
614
  msgstr "Без ограничений"
615
 
616
+ #: settings.php:536
617
  msgid "Deny all email addresses that match the following"
618
  msgstr "Запретить все адреса email совпадающие со следующим"
619
 
620
+ #: settings.php:537
621
  msgid "Permit only email addresses that match the following"
622
  msgstr "Разрешить только адреса совпадающие со следующим"
623
 
624
+ #: settings.php:542
625
  msgid "Specify email addresses, wildcards or REGEX patterns. Use comma to separate items."
626
  msgstr "Укажите адреса email, маску или регулярные выражения. Элементы разделяются запятой."
627
 
628
+ #: settings.php:624
629
  msgid "Lockout notifications"
630
  msgstr "Уведомления о блокировках"
631
 
632
+ #: settings.php:656
633
  msgid "Pushbullet device"
634
  msgstr "Устройство Pushbullet"
635
 
636
+ #: settings.php:931
637
  msgid "Delete unattended files"
638
  msgstr "Удалить несопровождаемые файлы"
639
 
640
+ #: settings.php:957
641
  msgid "Recover plugins files"
642
  msgstr "Восстановление файлов плагинов"
643
 
644
+ #: settings.php:964
645
  msgid "These files will never be deleted during automatic cleanup."
646
  msgstr "Эти файлы никогда не будут удалены при автоматической очистке."
647
 
648
+ #: cerber-load.php:1574
649
  msgid "Email address is not permitted."
650
  msgstr "Email адрес недопустим."
651
 
652
+ #: cerber-load.php:1574
653
  msgid "Please choose another one."
654
  msgstr "Выберите другой."
655
 
656
+ #: cerber-load.php:4865
657
  msgid "To delete the alert, click here"
658
  msgstr "Для удаления этого тревожного предупреждения нажмите тут"
659
 
733
  msgid "File recovered"
734
  msgstr "Файл восстановлен"
735
 
736
+ #: cerber-scanner.php:3870
737
  msgid "Recovering WordPress files"
738
  msgstr "Восстановление файлов WordPress"
739
 
740
+ #: cerber-scanner.php:3872
741
  msgid "Recovering plugins files"
742
  msgstr "Восстановление файлов плагинов"
743
 
744
+ #: settings.php:950
745
  msgid "Automatic recovery of modified and infected files"
746
  msgstr "Автоматическое восстановление измененных и зараженных файлов"
747
 
748
+ #: settings.php:953
749
  msgid "Recover WordPress files"
750
  msgstr "Восстановление файлов WordPress"
751
 
773
  msgid "Verify"
774
  msgstr "Проверить"
775
 
776
+ #: dashboard.php:4650
777
  msgid "Role-based"
778
  msgstr "Основана на ролях"
779
 
781
  msgid "Redirect user after logout"
782
  msgstr "Перенаправить пользователя после выхода"
783
 
784
+ #: settings.php:653
785
  msgid "Pushbullet access token"
786
  msgstr "Токен доступа Pushbullet"
787
 
788
+ #: cerber-load.php:351
789
  msgid "You are not allowed to log in"
790
  msgstr "Вам не разрешено войти"
791
 
792
+ #: admin/cerber-settings.php:498
793
  msgid "Select one or more roles"
794
  msgstr "Выберите одну или несколько ролей"
795
 
796
+ #: settings.php:122
797
  msgid "These restrictions do not apply to IP addresses in the White IP Access List"
798
  msgstr "Эти ограничения не применяются к IP адресам из белого списка"
799
 
800
+ #: settings.php:671
801
  msgid "Send reports on"
802
  msgstr "Отправлять отчеты в"
803
 
804
+ #: settings.php:385
805
  msgid "Allow these namespaces"
806
  msgstr "Разрешить эти пространства имен"
807
 
808
+ #: settings.php:380
809
  msgid "Allow REST API for these roles"
810
  msgstr "Разрешить REST API для следующих ролей"
811
 
812
+ #: settings.php:365
813
  msgid "Block access to users' data via REST API"
814
  msgstr "Блокировать доступ к данным пользователей через REST API"
815
 
816
+ #: settings.php:359
817
  msgid "Access to WordPress REST API"
818
  msgstr "Доступ к WordPress REST API"
819
 
820
+ #: settings.php:1197
821
  msgid "The full access mode requires the PRO version of WP Cerber"
822
  msgstr "Полный доступ требует PRO версии WP Cerber"
823
 
824
+ #: settings.php:1177
825
  msgid "Read-only mode"
826
  msgstr "Доступ только для чтения"
827
 
828
+ #: settings.php:1176
829
  msgid "Full access mode"
830
  msgstr "Полный доступ"
831
 
832
+ #: settings.php:1173
833
  msgid "Access to this website"
834
  msgstr "Доступ к этому сайту"
835
 
836
+ #: settings.php:1167
837
  msgid "Limit access by IP address"
838
  msgstr "Ограничить доступ IP адресом"
839
 
840
+ #: settings.php:1144
841
  msgid "Use master language"
842
  msgstr "Использовать основной язык"
843
 
844
+ #: settings.php:1140
845
  msgid "Add @ site to the page title"
846
  msgstr "Добавить @ сайт к заголовку страницы"
847
 
848
+ #: settings.php:1136
849
  msgid "Show \"Switched to\" notification"
850
  msgstr "Показывать уведомление о переходах"
851
 
852
+ #: settings.php:1132
853
  msgid "Return to the website list"
854
  msgstr "Вернуться к списку сайтов"
855
 
856
+ #: settings.php:1124
857
  msgid "Master settings"
858
  msgstr "Настройки режима основного сайта"
859
 
860
+ #: settings.php:517
861
  msgid "Redirect to URL"
862
  msgstr "Перенаправление на URL"
863
 
864
+ #: settings.php:512 settings.php:1419
865
  msgid "Only registered and logged in users are allowed to view this website"
866
  msgstr "Только зарегистрированные и авторизованные пользователи могут просматривать этот сайт"
867
 
868
+ #: settings.php:502
869
  msgid "Do not apply these policy to the IP addresses in the White IP Access List"
870
  msgstr "Не применять эти политики к IP адресам из белого списка"
871
 
872
+ #: settings.php:495
873
  msgid "Only registered and logged in website users have access to the website"
874
  msgstr "Только зарегистрированные и авторизованные пользователи могут получить доступ к этому сайту"
875
 
876
+ #: settings.php:494
877
  msgid "Authorized users only"
878
  msgstr "Только для авторизованных пользователей"
879
 
880
+ #: dashboard.php:4723
881
  msgid "Changelog"
882
  msgstr "Журнал изменений"
883
 
884
+ #: dashboard.php:3264
885
  msgid "Save all rules"
886
  msgstr "Сохранить все правила"
887
 
888
+ #: dashboard.php:1147
889
  msgid "Filter by registered user"
890
  msgstr "Фильтровать по зарегистрированным пользователям"
891
 
892
+ #: dashboard.php:629
893
  msgid "Default settings have been loaded"
894
  msgstr "Загружены настройки по умолчанию"
895
 
896
+ #: nexus/cerber-nexus.php:269
897
  msgid "Install the access token on the master website."
898
  msgstr "Установите токен доступа на основном сайте."
899
 
900
+ #: nexus/cerber-nexus.php:268
901
  msgid "This website is set as slave."
902
  msgstr "Этот сайт установлен как зависимый."
903
 
904
+ #: nexus/cerber-nexus.php:265
905
  msgid "Add slave websites by using access tokens."
906
  msgstr "Добавьте зависимые сайты используя токены доступа."
907
 
908
+ #: nexus/cerber-nexus.php:264
909
  msgid "This website is set as master."
910
  msgstr "Этот сайт установлен основным."
911
 
912
+ #: nexus/cerber-nexus.php:149
913
  msgid "Disable slave mode"
914
  msgstr "Отключить зависимый режим"
915
 
916
+ #: nexus/cerber-nexus.php:149
917
  msgid "To revoke the token and disable remote management, click here:"
918
  msgstr "Для отзыва токена и отключения удаленного управления нажмите здесь:"
919
 
920
+ #: nexus/cerber-nexus.php:148
921
  msgid "Are you sure? This permanently invalidates the token."
922
  msgstr "Вы уверены? Это сделает токен недействительным."
923
 
924
+ #: nexus/cerber-nexus.php:146
925
  msgid "The token is unique to this website. Keep it secret. Install the token on a master website to grant access to this website."
926
  msgstr "Этот токен уникален для этого сайта. Сохраните его в тайне. Установите токен на основном сайте, чтобы предоставить доступ к этому сайту."
927
 
928
+ #: nexus/cerber-nexus.php:144
929
  msgid "Secret Access Token"
930
  msgstr "Секретный токен доступа"
931
 
932
+ #: nexus/cerber-nexus.php:98 nexus/cerber-nexus.php:102
933
  msgid "Slave Settings"
934
  msgstr "Настройки зависимого режима"
935
 
936
+ #: nexus/cerber-nexus.php:74
937
  msgid "To proceed, please select the mode for this website"
938
  msgstr "Для продолжения выберите режим для сайта"
939
 
940
+ #: nexus/cerber-nexus.php:69
941
  msgid "Configure this website as a master to manage other website"
942
  msgstr "Настроить этот сайт как основной для управления другими сайтами"
943
 
944
+ #: nexus/cerber-nexus.php:68
945
  msgid "Enable master mode"
946
  msgstr "Включить режим основного сайта"
947
 
948
+ #: nexus/cerber-nexus.php:65
949
  msgid "This website can be managed from a master website"
950
  msgstr "Этот сайт может управляться с основного сайта"
951
 
952
+ #: cerber-load.php:5136 nexus/cerber-nexus.php:64
953
  msgid "Enable slave mode"
954
  msgstr "Включить зависимый режим"
955
 
956
+ #: nexus/cerber-nexus-master.php:1400 nexus/cerber-nexus-master.php:1408
957
  msgid "Active plugins and updates on"
958
  msgstr "Активные плагины и обновления на"
959
 
960
+ #: nexus/cerber-nexus-master.php:1378
961
  msgid "A newer version is available"
962
  msgstr "Доступна новая версия"
963
 
964
+ #: nexus/cerber-nexus-master.php:1334
965
  msgid "Are you sure you want to delete selected websites?"
966
  msgstr "Вы точно хотите удалить выделенные сайты?"
967
 
968
+ #: nexus/cerber-nexus-master.php:1268
969
  msgid "Visit Site"
970
  msgstr "Посетить сайт"
971
 
972
+ #: nexus/cerber-nexus-master.php:1253 nexus/cerber-nexus.php:92
973
+ #: nexus/cerber-nexus.php:102
974
  msgid "My Websites"
975
  msgstr "Мои сайты"
976
 
977
+ #: nexus/cerber-nexus-master.php:1250
978
  msgid "You are here:"
979
  msgstr "Вы здесь:"
980
 
981
+ #: nexus/cerber-nexus-master.php:1034
982
  msgid "You have switched back to the master website"
983
  msgstr "Вы перешли назад на основной сайт"
984
 
985
+ #: nexus/cerber-nexus-master.php:1024
986
  msgid "You have switched to %s"
987
  msgstr "Вы перешли к %s"
988
 
989
+ #: nexus/cerber-nexus-master.php:692
990
  msgid "Invalid response from the slave website"
991
  msgstr "Неверный ответ с зависимого сайта"
992
 
993
+ #: nexus/cerber-nexus-master.php:448
994
  msgid "Website has been deleted"
995
  msgid_plural "%s websites have been deleted"
996
  msgstr[0] "Сайт удален"
997
  msgstr[1] "%s сайта удалено"
998
  msgstr[2] "%s сайтов удалено"
999
 
1000
+ #: nexus/cerber-nexus-master.php:329
1001
  msgid "Keep in mind: You have added the website that does not support SSL encryption. This may lead to data leakage."
1002
  msgstr "Имейте ввиду: Вы добавили сайт, который не поддерживает SSL. Это может привести к утечке данных."
1003
 
1004
+ #: nexus/cerber-nexus-master.php:326
1005
  msgid "Switch to the Dashboard"
1006
  msgstr "Перейти в консоль"
1007
 
1008
+ #: nexus/cerber-nexus-master.php:325
1009
  msgid "Click to edit"
1010
  msgstr "Нажмите для редактирования"
1011
 
1012
+ #: nexus/cerber-nexus-master.php:324
1013
  msgid "The website has been added successfully"
1014
  msgstr "Сайт добавлен"
1015
 
1016
+ #: nexus/cerber-nexus-master.php:315
1017
  msgid "The website you are trying to add is already in the list"
1018
  msgstr "Добавляемый вами сайт уже присутствует в списке"
1019
 
1020
+ #: nexus/cerber-nexus-master.php:285
1021
  msgid "Security access token is invalid"
1022
  msgstr "Токен безопасного доступа не верен"
1023
 
1049
  msgid "Website Owner"
1050
  msgstr "Владелец сайта"
1051
 
1052
+ #: nexus/cerber-nexus-master.php:118
1053
  msgid "Display as"
1054
  msgstr "Отображать как"
1055
 
1056
+ #: nexus/cerber-nexus-master.php:113
1057
  msgid "Website URL"
1058
  msgstr "URL сайта"
1059
 
1060
+ #: nexus/cerber-nexus-master.php:103
1061
  msgid "Website Properties"
1062
  msgstr "Свойства сайта"
1063
 
1064
+ #: nexus/cerber-nexus-master.php:95
1065
  msgid "Select an existing group or enter a new one to add it"
1066
  msgstr "Выберите имеющуюся группу или введите новую для добавления"
1067
 
1068
+ #: nexus/cerber-slave-list.php:413
1069
  msgid "Disable master mode"
1070
  msgstr "Отключить режим управляющего сайта"
1071
 
1072
+ #: nexus/cerber-slave-list.php:413
1073
  msgid "Add a new one"
1074
  msgstr "Добавить новый"
1075
 
1076
+ #: nexus/cerber-slave-list.php:413
1077
  msgid "No websites configured."
1078
  msgstr "Ни один сайт не настроен."
1079
 
1145
  msgid "An optional message for this user"
1146
  msgstr "Необязательное сообщение для этого пользователя"
1147
 
1148
+ #: settings.php:508 cerber-users.php:68
1149
  msgid "User Message"
1150
  msgstr "Сообщение пользователю"
1151
 
1164
 
1165
  #. translators: Time difference between two dates, in seconds (sec=second). 1:
1166
  #. Number of seconds
1167
+ #: common.php:1563
1168
  msgid "%s sec"
1169
  msgid_plural "%s secs"
1170
  msgstr[0] "%s сек."
1171
  msgstr[1] "%s сек."
1172
  msgstr[2] "%s сек."
1173
 
1174
+ #: common.php:1373
1175
  msgid "Blocked by administrator"
1176
  msgstr "Заблокирован администратором"
1177
 
1178
+ #: common.php:1349
1179
  msgid "Invalid master credentials"
1180
  msgstr "Неверная мастер пара логин/пароль"
1181
 
1182
+ #: admin/cerber-settings.php:599 dashboard.php:3135
1183
  msgid "Save Changes"
1184
  msgstr "Сохранить изменения"
1185
 
1186
+ #: common.php:1360
1187
  msgid "IP address is locked out"
1188
  msgstr "IP адрес заблокирован"
1189
 
1190
+ #: dashboard.php:836
1191
  msgid "Additional Details"
1192
  msgstr "Дополнительная информация"
1193
 
1194
+ #: settings.php:730
1195
  msgid "Ignore logged in users"
1196
  msgstr "Игнорировать авторизованных пользователей"
1197
 
1198
+ #: settings.php:716
1199
  msgid "Erroneous Request Shielding"
1200
  msgstr "Защита от ошибочных запросов"
1201
 
1202
+ #: settings.php:698 settings.php:726
1203
  msgid "Maximum security"
1204
  msgstr "Максимальная безопасность"
1205
 
1206
+ #: settings.php:697 settings.php:725
1207
  msgid "Maximum compatibility"
1208
  msgstr "Максимальная совместимость"
1209
 
1210
+ #: settings.php:779
1211
  msgid "Save software errors"
1212
  msgstr "Сохранять ошибки ПО"
1213
 
1214
+ #: settings.php:721
1215
  msgid "Enable error shielding"
1216
  msgstr "Включить защиту от ошибок"
1217
 
1218
+ #: settings.php:688
1219
  msgid "Traffic Inspection"
1220
  msgstr "Инспектор трафика"
1221
 
1222
+ #: dashboard.php:5091 dashboard.php:5092
1223
  msgid "Add to menu"
1224
  msgstr "Добавить в меню"
1225
 
1226
+ #: dashboard.php:5052
1227
  msgid "WooCommerce Log Out"
1228
  msgstr "Выход WooCommerce"
1229
 
1230
+ #: dashboard.php:5051
1231
  msgid "WooCommerce Log In"
1232
  msgstr "Вход WooCommerce"
1233
 
1234
+ #: dashboard.php:5048
1235
  msgid "Register"
1236
  msgstr "Регистрация"
1237
 
1238
+ #: dashboard.php:5047
1239
  msgid "Log Out"
1240
  msgstr "Выход"
1241
 
1242
+ #: dashboard.php:5046
1243
  msgid "Log In"
1244
  msgstr "Вход"
1245
 
1246
+ #: dashboard.php:3556
1247
  msgid "Page generation time"
1248
  msgstr "Время генерации страницы"
1249
 
1250
+ #: common.php:1426
1251
  msgid "Multiple suspicious requests"
1252
  msgstr "Множественные подозрительные запросы"
1253
 
1254
+ #: dashboard.php:5011
1255
  msgid "Know more about all advantages at"
1256
  msgstr "Узнайте больше о всех преимуществах на"
1257
 
1258
+ #: dashboard.php:5010
1259
  msgid "These features are available in a professional version of the plugin."
1260
  msgstr "Эти возможности доступны в профессиональной версии плагина."
1261
 
1262
+ #: common.php:1372
1263
  msgid "Suspicious JavaScript code detected"
1264
  msgstr "Найден подозрительный код JavaScript"
1265
 
1266
+ #: cerber-scanner.php:5781
1267
  msgid "All scans"
1268
  msgstr "Все проверки"
1269
 
1270
+ #: cerber-scanner.php:5729
1271
  msgid "Click here to see the full list of files"
1272
  msgstr "Нажмите здесь для просмотра полного списка файлов"
1273
 
1274
+ #: cerber-scanner.php:5729
1275
  msgid "No files match the specified filter."
1276
  msgstr "Нет файлов подходящих к указанному фильтру."
1277
 
1278
+ #: cerber-scanner.php:3862
1279
  msgid "Preparing for the scan"
1280
  msgstr "Подготовка сканирования"
1281
 
1282
+ #: settings.php:853 settings.php:1157 settings.php:1184
1283
  msgid "Enable diagnostic logging"
1284
  msgstr "Включить журнал диагностики"
1285
 
1286
+ #: settings.php:343
1287
  msgid "Disable PHP error displaying"
1288
  msgstr "Отключить отображение ошибок PHP"
1289
 
1290
+ #: settings.php:339
1291
  msgid "Block execution of PHP scripts in the WordPress media folder"
1292
  msgstr "Отключить исполнение PHP скриптов в папке медиафайлов WordPress"
1293
 
1294
+ #: settings.php:338
1295
  msgid "Disable PHP in uploads"
1296
  msgstr "Отключить PHP в папке загрузок"
1297
 
1298
+ #: settings.php:317
1299
  msgid "Use English for admin interface"
1300
  msgstr "Use English for admin interface (использовать английский язык для интерфейса администрирования)"
1301
 
1302
+ #: dashboard.php:2799
1303
  msgid "All files have been processed"
1304
  msgstr "Все файлы обработаны"
1305
 
1306
+ #: dashboard.php:2798
1307
  msgid "Some errors occurred"
1308
  msgstr "Возникли ошибки"
1309
 
1310
+ #: dashboard.php:2796
1311
  msgid "These files have been added to the ignore list"
1312
  msgstr "Эти файлы были добавлены в список игнорирования"
1313
 
1314
+ #: dashboard.php:2795
1315
  msgid "Do you want to add selected files to the ignore list?"
1316
  msgstr "Вы точно хотите добавить выбранные файлы в список игнорирования?"
1317
 
1318
+ #: dashboard.php:2792
1319
  msgid "These files have been moved to the quarantine"
1320
  msgstr "Эти файлы были перемещены в карантин"
1321
 
1322
+ #: dashboard.php:2791
1323
  msgid "Are you sure you want to delete selected files?"
1324
  msgstr "Вы точно хотите удалить выбранные файлы?"
1325
 
1326
+ #: dashboard.php:4722
1327
  msgid "Log"
1328
  msgstr "Журнал"
1329
 
1330
+ #: cerber-scanner.php:5914
1331
  msgid "Added"
1332
  msgstr "Добавлено"
1333
 
1334
+ #: cerber-scanner.php:5886
1335
  msgid "The list is empty."
1336
  msgstr "Список пуст."
1337
 
1338
+ #: cerber-scanner.php:5884
1339
  msgid "Activity Insights"
1340
  msgstr "На виду: активность"
1341
 
1342
+ #: cerber-scanner.php:5883
1343
  msgid "Traffic Insights"
1344
  msgstr "На виду: трафик"
1345
 
1346
+ #: cerber-scanner.php:5882
1347
  msgid "User Insights"
1348
  msgstr "На виду: пользователи"
1349
 
1350
+ #: cerber-scanner.php:5881 cerber-scanner.php:5908
1351
  msgid "Remove from the list"
1352
  msgstr "Удалить из списка"
1353
 
1354
+ #: cerber-scanner.php:5880
1355
  msgid "Apply"
1356
  msgstr "Применить"
1357
 
1358
+ #: dashboard.php:4689
1359
  msgid "Ignore List"
1360
  msgstr "Список игнорируемого"
1361
 
1363
  msgid "Ignore"
1364
  msgstr "Игнорировать"
1365
 
1366
+ #: settings.php:986
1367
  msgid "Use comma to separate items."
1368
  msgstr "Используйте запятую для разделения элементов."
1369
 
1370
+ #: settings.php:982
1371
  msgid "Files with these extensions"
1372
  msgstr "Файлы с этими расширениями"
1373
 
1374
+ #: settings.php:979
1375
  msgid "Use absolute paths. One item per line."
1376
  msgstr "Используйте абсолютные пути. Один элемент на строку."
1377
 
1378
+ #: settings.php:975
1379
  msgid "Files in these directories"
1380
  msgstr "Файлы в этих папках"
1381
 
1382
+ #: settings.php:971
1383
  msgid "Files in the sessions directory"
1384
  msgstr "Файлы в папке сессий"
1385
 
1386
+ #: settings.php:967
1387
  msgid "Files in the temporary directory"
1388
  msgstr "Файлы в временной папке"
1389
 
1390
+ #: settings.php:963
1391
  msgid "Exclusions"
1392
  msgstr "Исключения"
1393
 
1394
+ #: settings.php:944
1395
  msgid "Files with unwanted extensions"
1396
  msgstr "Файлы с нежелательными расширениями"
1397
 
1398
+ #: settings.php:935
1399
  msgid "Files in the uploads folder"
1400
  msgstr "Файлы в папке загрузки"
1401
 
1402
+ #: settings.php:926
1403
  msgid "Automatic cleanup of malware and suspicious files"
1404
  msgstr "Автоматическая очистка вредоносных и подозрительных файлов"
1405
 
1406
+ #: dashboard.php:1781
1407
  msgid "Integrity"
1408
  msgstr "Целостность"
1409
 
1410
+ #: dashboard.php:1762
1411
  msgctxt "Example: Last malware scan: 23 Jan 2018"
1412
  msgid "Last malware scan"
1413
  msgstr "Последняя проверка на вредоносное ПО"
1414
 
1415
+ #: common.php:1371
1416
  msgid "Suspicious SQL code detected"
1417
  msgstr "Обнаружен подозрительный SQL код"
1418
 
1419
+ #: common.php:1332
1420
  msgid "Attempt to upload malicious file denied"
1421
  msgstr "Заблокирована попытка загрузки вредоносного файла"
1422
 
1423
+ #: cerber-scanner.php:5402
1424
  msgid "Automatically moved to quarantine"
1425
  msgstr "Автоматически перемещен в карантин"
1426
 
1427
+ #: cerber-scanner.php:5349
1428
  msgid "Deleted"
1429
  msgstr "Удален"
1430
 
1448
  msgid "Malicious code found"
1449
  msgstr "Найден вредоносный код"
1450
 
1451
+ #: dashboard.php:4688
1452
  msgid "Cleaning up"
1453
  msgstr "Очистка"
1454
 
1455
+ #: cerber-news.php:148
1456
  msgid "Awesome!"
1457
  msgstr "Замечательно!"
1458
 
1460
  msgid "Defends WordPress against hacker attacks, spam, trojans, and viruses. Malware scanner and integrity checker. Hardening WordPress with a set of comprehensive security algorithms. Spam protection with a sophisticated bot detection engine and reCAPTCHA. Tracks user and intruder activity with powerful email, mobile and desktop notifications."
1461
  msgstr "Защищает WordPress от атак хакеров, спама, троянов и вирусов. Включает сканер вредоносного ПО и проверку целостности. Усиление защиты WordPress набором комплексных алгоритмов безопасности. Защита от спама тонким определением ботов и reCAPTCHA. Отслеживание пользовательской активности и вторжений с уведомлением по email, а также через уведомления браузера или на мобильные устройства."
1462
 
1463
+ #: admin/cerber-settings.php:538
1464
  msgctxt "preposition of time like: at 11:00"
1465
  msgid "at"
1466
  msgstr "в"
1467
 
1468
+ #: dashboard.php:4604
1469
+ msgid "Anti-spam engine"
1470
  msgstr "Антиспам защита"
1471
 
1472
+ #: common.php:1570
1473
  msgctxt "preposition of a period of time like: in 6 hours"
1474
  msgid "in %s"
1475
  msgstr "Через %s"
1476
 
1477
+ #: cerber-scanner.php:5857
1478
  msgid "The file has been restored to its original location."
1479
  msgstr "Файл был восстановлен по оригинальному местоположению."
1480
 
1481
+ #: cerber-scanner.php:5843
1482
  msgid "The file has been deleted permanently."
1483
  msgstr "Файл удален навсегда."
1484
 
1485
+ #: cerber-scanner.php:5767 cerber-scanner.php:5915
1486
  msgid "File"
1487
  msgstr "Файл"
1488
 
1489
+ #: cerber-scanner.php:5766
1490
  msgid "Size"
1491
  msgstr "Размер"
1492
 
1493
+ #: cerber-scanner.php:5765
1494
  msgid "Automatic deletion"
1495
  msgstr "Автоматическое удаление"
1496
 
1497
+ #: cerber-scanner.php:5764
1498
  msgid "Moved to quarantine"
1499
  msgstr "Перемещен в карантин"
1500
 
1501
+ #: cerber-scanner.php:5749
1502
  msgid "Delete permanently"
1503
  msgstr "Удалить навсегда"
1504
 
1505
+ #: cerber-scanner.php:5752
1506
  msgid "Restore"
1507
  msgstr "Восстановить"
1508
 
1509
+ #: cerber-scanner.php:5662
1510
  msgid "There are no files in the quarantine at the moment."
1511
  msgstr "В карантине сейчас нет файлов."
1512
 
1513
+ #: cerber-scanner.php:4003 cerber-scanner.php:5763
1514
  msgid "Scanned"
1515
  msgstr "Проверено"
1516
 
1517
+ #: cerber-scanner.php:3994
1518
  msgid "Unattended files"
1519
  msgstr "Несопровождаемые файлы"
1520
 
1521
+ #: cerber-scanner.php:3982
1522
  msgid "Changed files"
1523
  msgstr "Измененные файлы"
1524
 
1525
+ #: cerber-scanner.php:3978
1526
  msgid "New files"
1527
  msgstr "Новые файлы"
1528
 
1529
+ #: nexus/cerber-slave-list.php:337 cerber-scanner.php:3974
1530
  msgid "Vulnerabilities"
1531
  msgstr "Уязвимости"
1532
 
1533
+ #: cerber-scanner.php:3962
1534
  msgid "Performance"
1535
  msgstr "Производительность"
1536
 
1537
+ #: cerber-scanner.php:3954
1538
  msgid "Finished"
1539
  msgstr "Завершено"
1540
 
1541
+ #: cerber-scanner.php:3950
1542
  msgid "Started"
1543
  msgstr "Начато"
1544
 
1545
+ #: dashboard.php:4690
1546
  msgid "Quarantine"
1547
  msgstr "Карантин"
1548
 
1549
+ #: cerber-load.php:347
1550
  msgid "You have exceeded the number of allowed login attempts. Please try again in %d minutes."
1551
  msgstr "Вы исчерпали максимально допустимое количество попыток входа. Попробуйте снова через %d минут."
1552
 
1553
+ #: settings.php:884
1554
  msgid "Scan results reporting"
1555
  msgstr "Отчет о результатах проверки"
1556
 
1557
+ #: settings.php:867
1558
  msgid "Automated recurring scan schedule"
1559
  msgstr "План автоматической повторной проверки"
1560
 
1561
+ #: dashboard.php:4006
1562
  msgid "Errors"
1563
  msgstr "Ошибки"
1564
 
1565
+ #: dashboard.php:948 dashboard.php:4005
1566
  msgid "Suspicious activity"
1567
  msgstr "Подозрительная активность"
1568
 
1569
+ #: dashboard.php:1512
1570
  msgid "Activated"
1571
  msgstr "Активация"
1572
 
1573
+ #: common.php:1656
1574
  msgid "Bytes"
1575
  msgstr "Байт"
1576
 
1577
+ #: common.php:1423
1578
  msgid "Attempt to upload a file with malicious code"
1579
  msgstr "Попытка загрузки файла с вредоносным кодом"
1580
 
1581
+ #: common.php:1370 common.php:1422
1582
  msgid "Malicious code detected"
1583
  msgstr "Обнаружен вредоносный код"
1584
 
1585
+ #: common.php:1369
1586
  msgid "Suspicious number of nested values"
1587
  msgstr "Подозрительное количество вложенных значений"
1588
 
1589
+ #: common.php:1368
1590
  msgid "Suspicious number of fields"
1591
  msgstr "Подозрительное число полей"
1592
 
1593
+ #: common.php:1346
1594
  msgid "User activated"
1595
  msgstr "Пользователь активирован"
1596
 
1597
+ #: common.php:1343
1598
  msgid "Malicious request denied"
1599
  msgstr "Заблокирован вредоносный запрос"
1600
 
1601
+ #: cerber-scanner.php:3866
1602
  msgid "Scanning the session folder for files"
1603
  msgstr "Поиск файлов в каталоге сессий"
1604
 
1605
+ #: cerber-scanner.php:3865
1606
  msgid "Scanning the temp folder for files"
1607
  msgstr "Поиск файлов в временном каталоге"
1608
 
1609
+ #: cerber-scanner.php:3864
1610
  msgid "Scanning the upload folder for files"
1611
  msgstr "Поиск файлов в каталоге uploads"
1612
 
1618
  msgid "Vulnerability found"
1619
  msgstr "Обнаружена уязвимость"
1620
 
1621
+ #: admin/cerber-settings.php:927
1622
  msgid "Unable to update the schedule"
1623
  msgstr "Невозможно обновить запланированное"
1624
 
1625
+ #: admin/cerber-settings.php:924
1626
  msgid "The schedule has been updated"
1627
  msgstr "Запланированное обновлено"
1628
 
1629
+ #: settings.php:911
1630
  msgid "Include scan errors"
1631
  msgstr "Включать ошибки сканера"
1632
 
1633
+ #: settings.php:907
1634
  msgid "Include file sizes"
1635
  msgstr "Включать размеры файлов"
1636
 
1637
+ #: settings.php:903
1638
  msgid "If new issues found"
1639
  msgstr "Если найдены новые проблемы"
1640
 
1641
+ #: settings.php:902
1642
  msgid "If any changes in scan results occurred"
1643
  msgstr "Если найдены изменения в результатах сканирования"
1644
 
1645
+ #: settings.php:901
1646
  msgid "After every scan"
1647
  msgstr "После каждого сканирования"
1648
 
1649
+ #: settings.php:898
1650
  msgid "Send email report"
1651
  msgstr "Отсылать отчет по эл.почте"
1652
 
1653
+ #: settings.php:889
1654
  msgid "Report an issue if any of the following is true"
1655
  msgstr "Отчитываться о проблемах, если нижеперечисленное верно"
1656
 
1657
+ #: settings.php:894 settings.php:940
1658
  msgid "High severity"
1659
  msgstr "Высокая тяжесть"
1660
 
1661
+ #: settings.php:893 settings.php:939
1662
  msgid "Medium severity"
1663
  msgstr "Средняя тяжесть"
1664
 
1665
+ #: settings.php:892 settings.php:938
1666
  msgid "Low severity"
1667
  msgstr "Низкая тяжесть"
1668
 
1669
+ #: settings.php:877
1670
  msgid "Launch Full Scan"
1671
  msgstr "Запуск полной проверки"
1672
 
1673
+ #: settings.php:872
1674
  msgid "Launch Quick Scan"
1675
  msgstr "Запуск быстрой проверки"
1676
 
1677
+ #: settings.php:836
1678
  msgid "Monitor modified files"
1679
  msgstr "Наблюдать за изменением файлов"
1680
 
1681
+ #: settings.php:827
1682
  msgid "Monitor new files"
1683
  msgstr "Наблюдать за новыми файлами"
1684
 
1685
+ #: cerber-scanner.php:5418
 
 
 
 
1686
  msgid "To view full report visit"
1687
  msgstr "Для просмотра полного отчета зайдите на"
1688
 
1689
+ #: cerber-scanner.php:5264
1690
  msgid "Files scanned"
1691
  msgstr "Проверено файлов"
1692
 
1693
+ #: cerber-scanner.php:5251
1694
  msgid "Quick Scan Report"
1695
  msgstr "Отчет быстрой проверки"
1696
 
1697
+ #: cerber-scanner.php:5251
1698
  msgid "Full Scan Report"
1699
  msgstr "Отчет полной проверки"
1700
 
1701
+ #: cerber-scanner.php:4704
1702
  msgid "File access error. Possibly scan results are outdated. Please run Quick or Full Scan."
1703
  msgstr "Ошибка доступа к файлу. Возможно результаты проверки устарели. Запустите быструю или полную проверку."
1704
 
1705
+ #: cerber-scanner.php:4105
1706
  msgid "You have to upload a ZIP archive from which you've installed it. This enables the security scanner to verify the integrity of the code and detect malware."
1707
  msgstr "Вам нужно загрузить zip-архив, из которого вы это установили. Это даст возможность сканеру безопасности проверить целостность файлов, кода и определить вредоносный код."
1708
 
1709
+ #: cerber-scanner.php:4103
1710
  msgid "We have not found any integrity data to verify"
1711
  msgstr "Не найдены данные о целостности для проверки"
1712
 
1713
+ #: cerber-scanner.php:3875
1714
  msgid "Finalizing the scan"
1715
  msgstr "Завершение проверки"
1716
 
1717
+ #: cerber-scanner.php:3874
1718
  msgid "Searching for malicious code"
1719
  msgstr "Поиск вредоносного кода"
1720
 
1721
+ #: cerber-scanner.php:3873
1722
  msgid "Verifying the integrity of the themes"
1723
  msgstr "Проверка целостности тем"
1724
 
1725
+ #: cerber-scanner.php:3871
1726
  msgid "Verifying the integrity of the plugins"
1727
  msgstr "Проверка целостности плагинов"
1728
 
1729
+ #: cerber-scanner.php:3869
1730
  msgid "Verifying the integrity of WordPress"
1731
  msgstr "Проверка целостности WordPress"
1732
 
1733
+ #: cerber-scanner.php:3868
1734
  msgid "Checking for new and modified files"
1735
  msgstr "Поиск новых и измененных файлов"
1736
 
1737
+ #: cerber-scanner.php:3867
1738
  msgid "Parsing the list of files"
1739
  msgstr "Обработка списка файлов"
1740
 
1741
+ #: cerber-scanner.php:3863
1742
  msgid "Scanning folders for files"
1743
  msgstr "Поиск файлов в каталогах"
1744
 
1774
  msgid "Every hour"
1775
  msgstr "Каждый час"
1776
 
1777
+ #: settings.php:696 settings.php:724 settings.php:830 settings.php:839
1778
+ #: settings.php:1178 dashboard.php:1765 dashboard.php:1767 cerber-users.php:20
1779
+ #: cerber-users.php:445 cerber-scanner.php:1622
1780
  msgid "Disabled"
1781
  msgstr "Отключено"
1782
 
1792
  msgid "Suspicious directives found"
1793
  msgstr "Найдены подозрительные директивы"
1794
 
1795
+ #: cerber-scanner.php:1586 cerber-scanner.php:3986
1796
  msgid "Checksum mismatch"
1797
  msgstr "Несовпадение контрольной суммы"
1798
 
1799
+ #: dashboard.php:1766 cerber-scanner.php:1065
1800
  msgid "Quick Scan"
1801
  msgstr "Быстрая проверка"
1802
 
1803
+ #: dashboard.php:1768 cerber-scanner.php:1065
1804
  msgid "Full Scan"
1805
  msgstr "Полная проверка"
1806
 
1816
  msgid "Currently a scheduled scan in progress. Please wait until it is finished."
1817
  msgstr "Сейчас выполняется запланированная проверка. Дождитесь пока она завершится."
1818
 
1819
+ #: cerber-load.php:4186
1820
  msgid "Scanner Report"
1821
  msgstr "Отчет проверки"
1822
 
1823
+ #: dashboard.php:4687
1824
  msgid "Scheduling"
1825
  msgstr "Планирование"
1826
 
1828
  msgid "WP Cerber Security, Antispam & Malware Scan"
1829
  msgstr "WP Cerber Security, Antispam & Malware Scan"
1830
 
1831
+ #: settings.php:857
1832
  msgid "Delete quarantined files after"
1833
  msgstr "Удалять файлы карантина через"
1834
 
1835
+ #: settings.php:849
1836
  msgid "Scan session directory"
1837
  msgstr "Проверять каталог файлов сессий"
1838
 
1839
+ #: settings.php:845
1840
  msgid "Scan temporary directory"
1841
  msgstr "Проверять каталог временных файлов"
1842
 
1843
+ #: settings.php:820
1844
  msgid "Directories to exclude"
1845
  msgstr "Каталоги для исключения"
1846
 
1847
+ #: settings.php:817
1848
  msgid "Specify file extensions to search for. Full scan only. Use comma to separate items."
1849
  msgstr "Укажите расширения файлов для поиска. Используется только при полной проверке. Испольуйте запятую для разделения элементов."
1850
 
1851
+ #: settings.php:813
1852
  msgid "Unwanted file extensions"
1853
  msgstr "Нежелательные расширения файлов"
1854
 
1855
+ #: settings.php:810
1856
  msgid "Specify custom PHP code signatures. One item per line. To specify a REGEX pattern, enclose a whole line in two braces."
1857
  msgstr "Укажите пользовательские подписи PHP кода. Один элемент на строку. Для использования регулярных выражений, включите строку в фигурные скобки { }."
1858
 
1859
+ #: settings.php:806
1860
  msgid "Custom signatures"
1861
  msgstr "Пользовательские отпечатки"
1862
 
1863
+ #: settings.php:801
1864
  msgid "Scanner settings"
1865
  msgstr "Настройки сканера"
1866
 
1867
+ #: settings.php:176
1868
  msgid "Disable dashboard redirection"
1869
  msgstr "Отключить перенаправление с консоли"
1870
 
1871
+ #: settings.php:155 settings.php:501 settings.php:702
1872
  msgid "Use White IP Access List"
1873
  msgstr "Использовать белый список IP"
1874
 
1875
+ #: cerber-scanner.php:4010 cerber-scanner.php:5295
1876
  msgid "Issues total"
1877
  msgstr "Всего проблем"
1878
 
1879
+ #: cerber-scanner.php:4010
1880
  msgid "Critical issues"
1881
  msgstr "Критические проблемы"
1882
 
1883
+ #: cerber-scanner.php:4003
1884
  msgid "Files to scan"
1885
  msgstr "Файлы для проверки"
1886
 
1888
  msgid "Custom signature found"
1889
  msgstr "Найден пользовательский отпечаток"
1890
 
1891
+ #: cerber-scanner.php:3990
1892
  msgid "Unwanted extensions"
1893
  msgstr "Нежелательные расширения"
1894
 
1908
  msgid "Content has been modified"
1909
  msgstr "Содержимое изменено"
1910
 
1911
+ #: cerber-scanner.php:1584 cerber-scanner.php:5104
1912
  msgid "Unable to open file"
1913
  msgstr "Невозможно открыть файл"
1914
 
1960
  msgid "Start Quick Scan"
1961
  msgstr "Начать быструю проверку"
1962
 
1963
+ #: dashboard.php:4685
1964
  msgid "Security Scanner"
1965
  msgstr "Сканер безопасности"
1966
 
1967
+ #: dashboard.php:67 dashboard.php:4683
1968
  msgid "Site Integrity"
1969
  msgstr "Целостность сайта"
1970
 
1971
+ #: settings.php:119
1972
  msgid "If you forget your Custom login URL, you will be unable to log in."
1973
  msgstr "Если вы забудете ваш пользовательский URL входа, то вы не сможете войти."
1974
 
1975
+ #: settings.php:119
1976
  msgid "Be careful about enabling these options."
1977
  msgstr "Будьте осторожны при включении этих настроек."
1978
 
1979
+ #: common.php:1366
1980
  msgid "Denied"
1981
  msgstr "Запрещено"
1982
 
1983
+ #: settings.php:710
1984
  msgid "To specify a REGEX pattern, enclose a whole line in two braces."
1985
  msgstr "Для использования регулярных выражений заключите строку целиком в фигурные скобки { }."
1986
 
1987
+ #: admin/cerber-settings.php:625
1988
  msgid "Plugin initialization mode has not been changed"
1989
  msgstr "Режим инициализации плагина не был изменен"
1990
 
1991
+ #: settings.php:133
1992
  msgid "Standard mode"
1993
  msgstr "Стандартный режим"
1994
 
1995
+ #: settings.php:132
1996
  msgid "Legacy mode"
1997
  msgstr "Старый режим"
1998
 
1999
+ #: settings.php:129
2000
  msgid "Load security engine"
2001
  msgstr "Загрузка движка безопасности"
2002
 
2003
+ #: settings.php:126
2004
  msgid "Plugin initialization"
2005
  msgstr "Инициализация плагина"
2006
 
2007
+ #: common.php:2782
2008
  msgid "Unable to delete the file"
2009
  msgstr "Невозможно удалить файл"
2010
 
2011
+ #: common.php:2776
2012
  msgid "Unable to copy the file"
2013
  msgstr "Невозможно скопировать файл"
2014
 
2015
+ #: common.php:2773
2016
  msgid "File not found"
2017
  msgstr "Файл не найден"
2018
 
2019
+ #: common.php:2770
2020
  msgid "Destination folder access denied"
2021
  msgstr "Доступ к каталогу назначения закрыт"
2022
 
2023
+ #: common.php:2765
2024
  msgid "Unable to create the directory"
2025
  msgstr "Невозможно создать каталог"
2026
 
2027
+ #: common.php:1333
2028
  msgid "File upload denied"
2029
  msgstr "Предотвращена загрузка файла"
2030
 
2031
+ #: settings.php:334
2032
  msgid "Block unauthorized access to load-scripts.php and load-styles.php"
2033
  msgstr "Блокировка неавторизованного доступа к load-scripts.php и load-styles.php"
2034
 
2035
+ #: settings.php:333
2036
  msgid "Protect admin scripts"
2037
  msgstr "Защита скриптов администратора"
2038
 
2039
+ #: cerber-load.php:3954
2040
  msgid "We're sorry, you are not allowed to proceed"
2041
  msgstr "Извините, вам не разрешено продолжить"
2042
 
2043
+ #: settings.php:710
2044
  msgid "Enter a request URI to exclude the request from inspection. One item per line."
2045
  msgstr "Введите URI запроса для исключения из инспекции. Один элемент на строку."
2046
 
2047
+ #: settings.php:706
2048
  msgid "Request whitelist"
2049
  msgstr "Белый список запросов"
2050
 
2051
+ #: settings.php:784
2052
  msgid "milliseconds"
2053
  msgstr "миллисекунд"
2054
 
2055
+ #: settings.php:783
2056
  msgid "Page generation time threshold"
2057
  msgstr "Порог времени генерации страницы"
2058
 
2059
+ #: settings.php:775
2060
  msgid "Save request cookies"
2061
  msgstr "Сохранять куки запроса"
2062
 
2063
+ #: settings.php:771
2064
  msgid "Save $_SERVER"
2065
  msgstr "Сохранять $_SERVER"
2066
 
2067
+ #: settings.php:766
2068
  msgid "Save request headers"
2069
  msgstr "Сохранять заголовки запроса"
2070
 
2071
+ #: settings.php:759
2072
  msgid "Mask these form fields"
2073
  msgstr "Маскировать эти поля форм"
2074
 
2075
+ #: settings.php:755
2076
  msgid "Save request fields"
2077
  msgstr "Сохранять поля запросов"
2078
 
2079
+ #: settings.php:751
2080
  msgid "Ignore crawlers"
2081
  msgstr "Игнорировать веб-пауков"
2082
 
2083
+ #: settings.php:747
2084
  msgid "All traffic"
2085
  msgstr "Весь трафик"
2086
 
2087
+ #: settings.php:746
2088
  msgid "Smart"
2089
  msgstr "Умная выборка"
2090
 
2091
+ #: settings.php:745
2092
  msgid "Logging disabled"
2093
  msgstr "Журнал отключен"
2094
 
2095
+ #: settings.php:742
2096
  msgid "Logging mode"
2097
  msgstr "Режим журнала"
2098
 
2099
+ #: settings.php:693
 
 
 
 
2100
  msgid "Enable traffic inspection"
2101
  msgstr "Включить инспектирование трафика"
2102
 
2103
+ #: dashboard.php:4032
2104
  msgid "Advanced Search"
2105
  msgstr "Улучшенный поиск"
2106
 
2107
+ #: dashboard.php:4045
2108
  msgid "Refresh"
2109
  msgstr "Обновить"
2110
 
2111
+ #: dashboard.php:4022
2112
  msgid "Longer than"
2113
  msgstr "Дольше чем"
2114
 
2115
+ #: dashboard.php:4013
2116
  msgid "Page Not Found"
2117
  msgstr "Страница не найдена"
2118
 
2119
+ #: dashboard.php:4011
2120
  msgid "Form submissions"
2121
  msgstr "Отправки форм"
2122
 
2123
+ #: dashboard.php:953 dashboard.php:4008
2124
  msgid "Not logged in visitors"
2125
  msgstr "Неавторизованные посетители"
2126
 
2127
+ #: dashboard.php:4003
2128
  msgid "All requests"
2129
  msgstr "Все запросы"
2130
 
2131
+ #: dashboard.php:3995
2132
  msgid "No requests have been logged."
2133
  msgstr "В журнале нет данных о запросах."
2134
 
2135
+ #: dashboard.php:3978
2136
  msgid "User Agent"
2137
  msgstr "User Agent"
2138
 
2139
+ #: dashboard.php:3977 cerber-users.php:974
2140
  msgid "Host Info"
2141
  msgstr "Информация о хосте"
2142
 
2143
+ #: dashboard.php:3975
2144
  msgid "Request"
2145
  msgstr "Запрос"
2146
 
2147
+ #: dashboard.php:4624
2148
  msgid "Live Traffic"
2149
  msgstr "Живой трафик"
2150
 
2151
+ #: dashboard.php:1780 cerber-users.php:1140
2152
  msgid "Traffic"
2153
  msgstr "Трафик"
2154
 
2155
+ #: dashboard.php:1745
2156
  msgid "no connection"
2157
  msgstr "нет подключения"
2158
 
2159
+ #: dashboard.php:1740
2160
  msgid "enabled"
2161
  msgstr "включено"
2162
 
2163
+ #: dashboard.php:56 dashboard.php:1741 dashboard.php:4622
2164
  msgid "Traffic Inspector"
2165
  msgstr "Инспектор трафика"
2166
 
2168
  msgid "Cerber Traffic Inspector"
2169
  msgstr "Цербер-инспектор трафика"
2170
 
2171
+ #: dashboard.php:1534
2172
  msgid "Last seen"
2173
  msgstr "Последний раз"
2174
 
2175
+ #: common.php:1782
2176
  msgid "Not specified"
2177
  msgstr "Не указано"
2178
 
2179
+ #: common.php:1331 common.php:1421
2180
  msgid "Probing for vulnerable PHP code"
2181
  msgstr "Проверка на уязвимый PHP-код"
2182
 
2183
+ #: common.php:213
2184
  msgid "Check for requests"
2185
  msgstr "Проверить запросы"
2186
 
2187
+ #: dashboard.php:338
2188
  msgid "You cannot add your IP address or network"
2189
  msgstr "Вы не можете добавить ваш IP-адрес или сеть"
2190
 
2191
+ #: dashboard.php:316
2192
  msgid "Optional comment for this entry"
2193
  msgstr "Необязательный комментарий к этой записи"
2194
 
2195
+ #: cerber-load.php:4336
2196
  msgid "Attempts to log in with non-existing usernames"
2197
  msgstr "Попытка войти с несуществующим именем пользователя"
2198
 
2199
+ #: cerber-load.php:4310
2200
  msgid "Weekly Report"
2201
  msgstr "Недельный отчет"
2202
 
2203
+ #: cerber-load.php:4240
2204
  msgid "Your last sign-in was %s from %s"
2205
  msgstr "Ваш последний вход был %s с %s"
2206
 
2207
+ #: settings.php:667
2208
  msgid "Enable reporting"
2209
  msgstr "Включить отчеты"
2210
 
2211
+ #: settings.php:1030
 
 
 
 
2212
  msgid "Enter a part of query string or query path to exclude a request from inspection by the engine. One item per line."
2213
  msgstr "Введите часть строки или пути запроса для исключения запроса из проверки движком. Один элемент на строку."
2214
 
2215
+ #: settings.php:542 settings.php:550
2216
  msgid "To specify a REGEX pattern wrap a pattern in two forward slashes."
2217
  msgstr "Для использования регулярных выражений оберните их в два прямых слеша."
2218
 
2219
+ #: settings.php:190
2220
  msgid "Display simple 404 page"
2221
  msgstr "Показать простую страницу 404"
2222
 
2223
+ #: settings.php:189
2224
  msgid "Use 404 template from the active theme"
2225
  msgstr "Использовать шаблон 404 активной темы"
2226
 
2227
+ #: dashboard.php:3379
2228
  msgctxt "to is a marker of infinitive, e.g. \"to use it\""
2229
  msgid "Selected countries are not permitted to %s, other countries are permitted to"
2230
  msgstr "Выбранным странам не разрешено %s, остальным странам разрешено"
2231
 
2232
+ #: dashboard.php:3376
2233
  msgctxt "to is a marker of infinitive, e.g. \"to use it\""
2234
  msgid "Selected countries are permitted to %s, other countries are not permitted to"
2235
  msgstr "Выбранным странам разрешено %s, остальным странам - нет"
2236
 
2237
+ #: dashboard.php:3280
2238
  msgid "Not permitted for one country"
2239
  msgid_plural "Not permitted for %d countries"
2240
  msgstr[0] "Не разрешено в одной стране"
2241
  msgstr[1] "Не разрешено в %d странах"
2242
  msgstr[2] "Не разрешено в %d странах"
2243
 
2244
+ #: dashboard.php:574
2245
  msgid "Unable to send email to"
2246
  msgstr "Невозможно отправить email на"
2247
 
2248
+ #: dashboard.php:571
2249
  msgid "Email has been sent to"
2250
  msgstr "Сообщение было отправлено на электронный адрес"
2251
 
2252
+ #: cerber-load.php:4322
2253
  msgid "Activity details"
2254
  msgstr "Подробно об активности"
2255
 
2256
+ #: cerber-load.php:4216
2257
  msgid "Your license is valid until"
2258
  msgstr "Ваша лицензия действительна до"
2259
 
2260
+ #: cerber-load.php:4212
2261
  msgid "Your login page:"
2262
  msgstr "Ваша страница входа:"
2263
 
2264
+ #: cerber-load.php:4179 cerber-load.php:4189
2265
  msgid "To change reporting settings visit"
2266
  msgstr "Для смены настроек отчетности зайдите"
2267
 
2268
+ #: cerber-load.php:4176
2269
  msgid "Weekly report"
2270
  msgstr "Недельный отчет"
2271
 
2272
+ #: cerber-load.php:818
2273
  msgid "> > > Translator of WP Cerber? To get the PRO license for free, drop your contacts here: https://wpcerber.com/contact/"
2274
  msgstr ">>> Переводите WP Cerber? Получите PRO лицензию бесплатно, оставьте контакты здесь: https://wpcerber.com/contact/"
2275
 
2276
+ #: admin/cerber-settings.php:557
2277
  msgid "Click to send now"
2278
  msgstr "Нажмите для отправки сейчас"
2279
 
2280
+ #: admin/cerber-settings.php:528
2281
  msgid "Saturday"
2282
  msgstr "Суббота"
2283
 
2284
+ #: admin/cerber-settings.php:527
2285
  msgid "Friday"
2286
  msgstr "Пятница"
2287
 
2288
+ #: admin/cerber-settings.php:526
2289
  msgid "Thursday"
2290
  msgstr "Четверг"
2291
 
2292
+ #: admin/cerber-settings.php:525
2293
  msgid "Wednesday"
2294
  msgstr "Среда"
2295
 
2296
+ #: admin/cerber-settings.php:524
2297
  msgid "Tuesday"
2298
  msgstr "Вторник"
2299
 
2300
+ #: admin/cerber-settings.php:523
2301
  msgid "Monday"
2302
  msgstr "Понедельник"
2303
 
2304
+ #: admin/cerber-settings.php:522
2305
  msgid "Sunday"
2306
  msgstr "Воскресенье"
2307
 
2308
+ #: settings.php:663
2309
  msgid "Weekly reports"
2310
  msgstr "Недельные отчеты"
2311
 
2312
+ #: dashboard.php:2682
2313
  msgid "Main settings"
2314
  msgstr "Основные настройки"
2315
 
2316
+ #: admin/cerber-settings.php:654 admin/cerber-settings.php:655
2317
  msgid "If you use a caching plugin, you have to add your new login URL to the list of pages not to cache."
2318
  msgstr "Если вы используете плагин кеширования, вам нужно добавить новый URL входа в список исключений кеширования"
2319
 
2320
+ #: settings.php:1045
 
 
 
 
2321
  msgid "Mark it as spam"
2322
  msgstr "Пометить как спам"
2323
 
2324
+ #: settings.php:1045
2325
  msgid "Deny it completely"
2326
  msgstr "Полностью запретить"
2327
 
2328
+ #: settings.php:564
2329
  msgid "Sort users in dashboard"
2330
  msgstr "Сортировать пользователей в консоли"
2331
 
2332
+ #: settings.php:526
2333
  msgid "Registration limit"
2334
  msgstr "Предел регистраций"
2335
 
2336
+ #: settings.php:375
2337
  msgid "Allow REST API for logged in users"
2338
  msgstr "Разрешить REST API для авторизованных пользователей"
2339
 
2340
+ #: dashboard.php:3407
2341
  msgid "Use REST API"
2342
  msgstr "использование REST API"
2343
 
2344
+ #: dashboard.php:3406
2345
  msgid "Use XML-RPC"
2346
  msgstr "использование XML-RPC"
2347
 
2348
+ #: dashboard.php:3403
2349
  msgid "Register on the website"
2350
  msgstr "регистрация на сайте"
2351
 
2352
+ #: dashboard.php:3399
2353
  msgid "Log in to the website"
2354
  msgstr "авторизация на сайте"
2355
 
2356
+ #: dashboard.php:3405
2357
  msgid "Post comments"
2358
  msgstr "отправка комментариев"
2359
 
2360
+ #: dashboard.php:3404
2361
  msgid "Submit forms"
2362
  msgstr "отправка форм"
2363
 
2364
+ #: dashboard.php:3372
2365
  msgid "Click on a country name to add it to the list of selected countries"
2366
  msgstr "Нажмите на страну чтобы добавить ее в список выбранных"
2367
 
2368
+ #: dashboard.php:3257
2369
  msgid "Start typing here to find a country"
2370
  msgstr "Начните печатать тут чтобы найти страну"
2371
 
2372
+ #: cerber-load.php:4161 cerber-load.php:5121 dashboard.php:2380
2373
  msgid "Getting Started Guide"
2374
  msgstr "Руководство с чего начать"
2375
 
2376
+ #: dashboard.php:2320
2377
  msgid "in the last 24 hours"
2378
  msgstr "В последние 24 часа"
2379
 
2380
+ #: dashboard.php:1658 cerber-users.php:52 cerber-users.php:1106
2381
  msgid "You"
2382
  msgstr "Вы"
2383
 
2384
+ #: dashboard.php:1544 dashboard.php:1588
2385
  msgid "Registered"
2386
  msgstr "Зарегистрирован"
2387
 
2388
+ #: dashboard.php:1587
2389
  msgid "Failed login attempts"
2390
  msgstr "Неудачные попытки входа"
2391
 
2392
+ #: common.php:1420
2393
  msgid "Multiple suspicious activities were detected"
2394
  msgstr "Обнаружена множественная подозрительная активность"
2395
 
2396
+ #: common.php:1365
2397
  msgid "Multiple suspicious activities"
2398
  msgstr "Множественная подозрительная активность"
2399
 
2400
+ #: common.php:1364
2401
  msgid "Limit reached"
2402
  msgstr "Предел достигнут"
2403
 
2404
+ #: settings.php:1029
2405
  msgid "Query whitelist"
2406
  msgstr "Белый список запросов"
2407
 
2408
+ #: settings.php:389
2409
  msgid "Specify REST API namespaces to be allowed if REST API is disabled. One string per line."
2410
  msgstr "Укажите пространства имен REST API разрешенных при отключении REST API, одно имя на строку."
2411
 
2412
+ #: settings.php:370
2413
  msgid "Block access to WordPress REST API except any of the following"
2414
  msgstr "Блокировать доступ к REST API кроме следующего"
2415
 
2416
+ #: dashboard.php:3449
2417
  msgid "Security rules have been updated"
2418
  msgstr "Правила безопасности обновлены"
2419
 
2420
+ #: dashboard.php:3288
2421
  msgid "No rule"
2422
  msgstr "Нет правила"
2423
 
2424
+ #: dashboard.php:3277
2425
  msgid "Permitted for one country"
2426
  msgid_plural "Permitted for %d countries"
2427
  msgstr[0] "Разрешается для одной страны"
2428
  msgstr[1] "Разрешается для %d стран"
2429
  msgstr[2] "Разрешается для %d стран"
2430
 
2431
+ #: dashboard.php:4670
2432
  msgid "Countries"
2433
  msgstr "Страны"
2434
 
2435
+ #: common.php:287
2436
  msgid "Spam form submissions denied"
2437
  msgstr "Заблокированы отправки форм спама"
2438
 
2439
+ #: dashboard.php:61 dashboard.php:4668
2440
  msgid "Security Rules"
2441
  msgstr "Правила безопасности"
2442
 
2444
  msgid "Cerber Security Rules"
2445
  msgstr "Правила безопасности Цербер"
2446
 
2447
+ #: dashboard.php:193 dashboard.php:1081
2448
  msgid "Country"
2449
  msgstr "Страна"
2450
 
2451
+ #: common.php:1363
2452
  msgid "Blocked by country rule"
2453
  msgstr "Заблокирован по ограничению для страны"
2454
 
2455
+ #: common.php:1362
2456
  msgid "Malicious activity detected"
2457
  msgstr "Обнаружена вредоносная активность"
2458
 
2459
+ #: common.php:1358
2460
  msgid "Citadel mode is active"
2461
  msgstr "Режим цитадель активен"
2462
 
2463
+ #: common.php:1357
2464
  msgid "Bot detected"
2465
  msgstr "Обнаружен бот"
2466
 
2467
+ #: common.php:1336
2468
  msgid "XML-RPC request denied"
2469
  msgstr "Запрос XML-RPC заблокирован"
2470
 
2471
+ #: common.php:1335
2472
  msgid "Request to REST API denied"
2473
  msgstr "Запрос к REST API заблокирован"
2474
 
2475
+ #: common.php:1309
2476
  msgid "Comment denied"
2477
  msgstr "Комментарий заблокирован"
2478
 
2479
+ #: common.php:1308
2480
  msgid "Form submission denied"
2481
  msgstr "Отправка формы заблокирована"
2482
 
2483
+ #: dashboard.php:4724
2484
  msgid "License"
2485
  msgstr "Лицензия"
2486
 
2487
+ #: settings.php:1025
2488
  msgid "Disable bot detection engine for logged in users"
2489
  msgstr "Отключить определение ботов для авторизованных пользователей"
2490
 
2491
+ #: settings.php:374 settings.php:1024 dashboard.php:952 dashboard.php:1734
2492
+ #: dashboard.php:4007
2493
  msgid "Logged in users"
2494
  msgstr "Авторизованные пользователи"
2495
 
2496
+ #: settings.php:1020
2497
  msgid "Use less restrictive policies (allow AJAX)"
2498
  msgstr "Использовать менее жесткую политику (разрешить AJAX)"
2499
 
2500
+ #: settings.php:1019
2501
  msgid "Safe mode"
2502
  msgstr "Безопасный режим"
2503
 
2504
+ #: settings.php:1015
2505
+ msgid "Adjust anti-spam engine"
2506
  msgstr "Настроить антиспам-движок"
2507
 
2508
+ #: settings.php:1009
2509
  msgid "Protect all forms on the website with bot detection engine"
2510
  msgstr "Защитить все формы на сайте через определение ботов"
2511
 
2512
+ #: settings.php:1008
2513
  msgid "Other forms"
2514
  msgstr "Другие формы"
2515
 
2516
+ #: common.php:1307
2517
  msgid "Spam form submission denied"
2518
  msgstr "Отправка формы со спамом заблокирована"
2519
 
2520
+ #: cerber-load.php:1874
2521
  msgid "Sorry, human verification failed."
2522
  msgstr "Извините, проверка на человека не удалась."
2523
 
2524
+ #: settings.php:1050
2525
  msgid "Move spam comments to trash after"
2526
  msgstr "Удалить спам комментарии в корзину после"
2527
 
2528
+ #: settings.php:1048
2529
  msgid "Trash spam comments"
2530
  msgstr "Удалить спам комментарии в корзину"
2531
 
2532
+ #: settings.php:1043
2533
  msgid "If a spam comment detected"
2534
  msgstr "Если обнаружен спам комментарий"
2535
 
2536
+ #: settings.php:1039
2537
  msgid "Comment processing"
2538
  msgstr "Обработка комментария"
2539
 
2540
+ #: settings.php:1004
2541
  msgid "Protect registration form with bot detection engine"
2542
  msgstr "Защита регистрации через определение ботов"
2543
 
2544
+ #: settings.php:999
2545
  msgid "Protect comment form with bot detection engine"
2546
  msgstr "Защита комментариев через определение ботов"
2547
 
2548
+ #: settings.php:993
2549
+ msgid "Cerber anti-spam engine"
2550
  msgstr "Движок Цербер-антиспам"
2551
 
 
 
 
 
2552
  #: dashboard.php:71
2553
+ msgid "Cerber anti-spam settings"
2554
+ msgstr "Настройка Цербер-антиспам"
2555
 
2556
+ #: common.php:1419
2557
  msgid "Bot activity is detected"
2558
  msgstr "Обнаружена активность ботов"
2559
 
2560
+ #: dashboard.php:4602
2561
+ msgid "Anti-spam and bot detection settings"
2562
  msgstr "Антиспам и настройки определения ботов"
2563
 
2564
+ #: dashboard.php:4721
2565
  msgid "Diagnostic"
2566
  msgstr "Диагностика"
2567
 
2568
+ #: dashboard.php:4720
2569
  msgid "Export & Import"
2570
  msgstr "Экспорт и Импорт"
2571
 
2572
+ #: cerber-load.php:1549 cerber-load.php:1555 cerber-load.php:1580
2573
+ #: cerber-load.php:1587
2574
  msgid "You are not allowed to register."
2575
  msgstr "Вам не разрешено зарегистрироваться."
2576
 
2577
+ #: common.php:289
2578
  msgid "Lockouts occurred"
2579
  msgstr "Блокировок произошло"
2580
 
2581
+ #: common.php:288
2582
  msgid "Malicious IP addresses detected"
2583
  msgstr "Найдены вредоносные IP адреса"
2584
 
2585
+ #: common.php:286
2586
  msgid "Spam comments denied"
2587
  msgstr "Спам-комментарии отклонены"
2588
 
2589
+ #: common.php:283
2590
  msgid "Malicious activities mitigated"
2591
  msgstr "Вредоносная активность снижена"
2592
 
2593
+ #: dashboard.php:835 dashboard.php:1083
2594
  msgid "Event"
2595
  msgstr "Событие"
2596
 
2597
+ #: common.php:1330
2598
  msgid "Attempt to register denied"
2599
  msgstr "Попытка регистрации отклонена"
2600
 
2601
+ #: common.php:1329
2602
  msgid "Attempt to log in denied"
2603
  msgstr "Попытка входа отклонена"
2604
 
2605
+ #: common.php:1306
2606
  msgid "Spam comment denied"
2607
  msgstr "Спам коммнтарий отклонен"
2608
 
2609
+ #: settings.php:234
2610
  msgid "In the Citadel mode nobody is able to log in except IPs from the White IP Access List. Active user sessions will not be affected."
2611
  msgstr "В режиме Цитадель никто не может войти кроме как с IP в белом списке. Активные сессии пользователей не будут затронуты."
2612
 
2613
+ #: settings.php:1117
2614
  msgid "Lock out IP address for %s minutes after %s failed attempts within %s minutes"
2615
  msgstr "Блокировать IP адрес на %s минут после %s неудачных попыток в течении %s минут"
2616
 
2617
+ #: settings.php:1116
2618
  msgid "Limit attempts"
2619
  msgstr "Ограничение попыток"
2620
 
2621
+ #: settings.php:1106 dashboard.php:71
2622
+ msgid "Anti-spam"
2623
+ msgstr "Антиспам"
2624
+
2625
+ #: settings.php:156
2626
  msgid "Apply limit login rules to IP addresses in the White IP Access List"
2627
  msgstr "Применить правила входа для IP адресов в белом списке"
2628
 
2629
+ #: common.php:1418
2630
  msgid "Limit on failed reCAPTCHA verifications is reached"
2631
  msgstr "Достигнут предел проверки reCAPTCHA"
2632
 
2633
+ #: common.php:1319
2634
  msgid "Password reset requested"
2635
  msgstr "Запрошен сброс пароля"
2636
 
2637
+ #: settings.php:1072
2638
  msgid "(do not enable it unless you get and enter the Site and Secret keys for the invisible version)"
2639
  msgstr "(не включайте, если у вас нет или вы не вводили ключ сайта и секретный ключ для невидимой версии)"
2640
 
2641
+ #: settings.php:1112
2642
  msgid "Disable reCAPTCHA for logged in users"
2643
  msgstr "Отключить reCAPTCHA для авторизованных пользователей"
2644
 
2645
+ #: settings.php:1107
2646
  msgid "Enable reCAPTCHA for WordPress comment form"
2647
  msgstr "Включить reCAPTCHA в форме комментариев WordPress"
2648
 
2649
+ #: settings.php:998
2650
  msgid "Comment form"
2651
  msgstr "Форма комментариев"
2652
 
2653
+ #: settings.php:1072
2654
  msgid "Enable invisible reCAPTCHA"
2655
  msgstr "Включить невидимую reCAPTCHA"
2656
 
2657
+ #: settings.php:1071
2658
  msgid "Invisible reCAPTCHA"
2659
  msgstr "невидимая reCAPTCHA"
2660
 
2661
+ #: common.php:1570
2662
  msgid "%s ago"
2663
  msgstr "%s назад"
2664
 
2665
+ #: settings.php:110
2666
  msgid "Not available"
2667
  msgstr "Недоступно"
2668
 
2669
+ #: settings.php:106
2670
  msgid "No devices found"
2671
  msgstr "Устройства не найдены"
2672
 
2673
+ #: settings.php:103
2674
  msgid "All connected devices"
2675
  msgstr "Все подключенные устройства"
2676
 
2677
+ #: settings.php:629 settings.php:678 settings.php:761 settings.php:917
2678
  msgid "Use comma to specify multiple values"
2679
  msgstr "Используйте запятую для разделения множественных значений"
2680
 
2681
+ #: settings.php:619
2682
  msgid "Email notifications"
2683
  msgstr "Уведомления по эл.почте"
2684
 
2685
+ #: settings.php:186
2686
  msgid "Display 404 page"
2687
  msgstr "Показывать страницу 404"
2688
 
2689
+ #: settings.php:648
2690
  msgid "Push notifications"
2691
  msgstr "Push уведомления"
2692
 
2693
+ #: dashboard.php:1148
2694
  msgid "Search for IP or username"
2695
  msgstr "Поиск IP или имени пользователя"
2696
 
2698
  msgid "Unsubscribe"
2699
  msgstr "Отменить подписку"
2700
 
2701
+ #: dashboard.php:838
2702
  msgid "User login"
2703
  msgstr "Имя пользователя"
2704
 
2705
+ #: dashboard.php:3549
2706
  msgid "IP address"
2707
  msgstr "IP адрес"
2708
 
2709
+ #: dashboard.php:1107 dashboard.php:4039
2710
  msgid "Export"
2711
  msgstr "Экспорт"
2712
 
2713
+ #: dashboard.php:839 dashboard.php:3555
2714
  msgid "User ID"
2715
  msgstr "ID пользователя"
2716
 
2718
  msgid "Cerber Dashboard"
2719
  msgstr "Консоль Cerber"
2720
 
2721
+ #: dashboard.php:1159
2722
  msgid "Filter"
2723
  msgstr "Фильтр"
2724
 
2725
+ #: dashboard.php:82
2726
  msgid "Cerber tools"
2727
  msgstr "Инструменты Cerber"
2728
 
2729
+ #: cerber-load.php:4170 cerber-load.php:4171
2730
  msgid "A new activity has been recorded"
2731
  msgstr "Отмечена новая активность"
2732
 
2733
+ #: settings.php:311
2734
  msgid "if empty, the default format %s will be used"
2735
  msgstr "Если пусто, будет использован формат по умолчанию %s"
2736
 
2737
+ #: cerber-load.php:4836 cerber-users.php:969
2738
  msgid "User"
2739
  msgstr "Пользователь"
2740
 
2741
+ #: cerber-load.php:4844
2742
  msgid "Search string"
2743
  msgstr "Строка поиска"
2744
 
2745
+ #: settings.php:302
2746
  msgid "Preferences"
2747
  msgstr "Настройки"
2748
 
2749
+ #: settings.php:310
2750
  msgid "Date format"
2751
  msgstr "Формат даты"
2752
 
2753
+ #: dashboard.php:54 dashboard.php:1778 dashboard.php:2681 dashboard.php:4556
2754
  msgid "Dashboard"
2755
  msgstr "Консоль"
2756
 
2757
+ #: settings.php:1102
2758
  msgid "Enable reCAPTCHA for WooCommerce login form"
2759
  msgstr "Включить reCAPTCHA для формы входа WooCommerce"
2760
 
2761
+ #: settings.php:1097
2762
  msgid "Enable reCAPTCHA for WordPress login form"
2763
  msgstr "Включить reCAPTCHA для формы входа WordPress"
2764
 
2765
+ #: settings.php:1092
2766
  msgid "Enable reCAPTCHA for WooCommerce lost password form"
2767
  msgstr "Включить reCAPTCHA для формы восстановления пароля WooCommerce"
2768
 
2769
+ #: settings.php:1087
2770
  msgid "Enable reCAPTCHA for WordPress lost password form"
2771
  msgstr "Включить reCAPTCHA для формы восстановления пароля WordPress"
2772
 
2773
+ #: settings.php:1082
2774
  msgid "Enable reCAPTCHA for WooCommerce registration form"
2775
  msgstr "Включить reCAPTCHA для формы регистрации WooCommerce"
2776
 
2777
+ #: settings.php:1077
2778
  msgid "Enable reCAPTCHA for WordPress registration form"
2779
  msgstr "Включить reCAPTCHA для формы регистрации WordPress"
2780
 
2781
+ #: settings.php:1003 settings.php:1076
2782
  msgid "Registration form"
2783
  msgstr "Форма регистрации"
2784
 
2785
+ #: settings.php:287
2786
  msgid "Cerber Lab protocol"
2787
  msgstr "протокол Cerber Lab"
2788
 
2789
+ #: settings.php:282
2790
  msgid "Send malicious IP addresses to the Cerber Lab"
2791
  msgstr "Посылать вредоносные IP адреса в Cerber Lab"
2792
 
2793
+ #: settings.php:281
2794
  msgid "Cerber Lab connection"
2795
  msgstr "Подключение Cerber Lab"
2796
 
2797
+ #: dashboard.php:2344
2798
  msgid "Recently locked out IP addresses"
2799
  msgstr "Недавно заблокированые IP адреса"
2800
 
2801
+ #: dashboard.php:931 dashboard.php:2341
2802
  msgid "View all"
2803
  msgstr "Просмотреть все"
2804
 
2805
+ #: dashboard.php:1441
2806
  msgid "Add network to the Black List"
2807
  msgstr "Добавить сеть в черный список"
2808
 
2809
+ #: dashboard.php:1427
2810
  msgid "Network:"
2811
  msgstr "Сеть:"
2812
 
2813
+ #: dashboard.php:4871
2814
  msgid "Incorrect IP address or IP range"
2815
  msgstr "Неверный IP адрес или диапазон адресов"
2816
 
2817
+ #: common.php:1323
2818
  msgid "Request to the Google reCAPTCHA service failed"
2819
  msgstr "Запрос к сервису Google reCAPTCHA не удался"
2820
 
2821
+ #: cerber-lab.php:827
2822
  msgid "NO, maybe later"
2823
  msgstr "НЕТ, возможно позже"
2824
 
2825
+ #: cerber-lab.php:826
2826
  msgid "OK, nail them all"
2827
  msgstr "ОК, прибьем их всех"
2828
 
2829
+ #: cerber-lab.php:825
2830
  msgid "Allow WP Cerber to send locked out malicious IP addresses to Cerber Lab. This helps the plugin team to develop new algorithms for WP Cerber that will defend WordPress against new threats and botnets that are appearing everyday. You can disable the sending in the plugin settings at any time."
2831
  msgstr "Разрешить WP Cerber посылать заблокированные IP адреса в Cerber Lab. Это помогает команде плагина разрабатывать новые алгоритмы для WP Cerber, которые будут защищать WordPress против новых угроз и ботнетов появляюшихся каждый день. Вы всегда можете отключить отсылку в настройках плагина, в любой момент."
2832
 
2833
+ #: cerber-lab.php:824
2834
  msgid "Want to make WP Cerber even more powerful?"
2835
  msgstr "Хотите сделать WP Cerber еще мощнее ?"
2836
 
2839
  msgid "https://wpcerber.com"
2840
  msgstr "https://wpcerber.com"
2841
 
2842
+ #: cerber-load.php:5135
2843
  msgid "Import settings"
2844
  msgstr "Импорт настроек"
2845
 
2846
+ #: cerber-load.php:5119
2847
  msgid "Your IP address is added to the"
2848
  msgstr "Ваш IP адрес добавлен к"
2849
 
2850
+ #: cerber-load.php:5096
2851
  msgid "Can't activate WP Cerber due to a database error."
2852
  msgstr "Невозможно активировать плагин WP Cerber из-за ошибки в базе данных."
2853
 
2854
+ #: cerber-load.php:5087
2855
  msgid "The WP Cerber requires WordPress %s or higher. You are running"
2856
  msgstr "WP Cerber требует WordPress версии %s или выше. У вас версия"
2857
 
2858
+ #: cerber-load.php:5083
2859
  msgid "The WP Cerber requires PHP %s or higher. You are running"
2860
  msgstr "WP Cerber требует PHP версии %s или выше. У вас версия"
2861
 
2862
+ #: cerber-load.php:4219
2863
  msgid "This message was sent by"
2864
  msgstr "Это сообщение было отправлено"
2865
 
2866
+ #: cerber-load.php:4166
2867
  msgid "New Custom login URL"
2868
  msgstr "Новый URL для входа на сайт"
2869
 
2870
+ #: cerber-load.php:4159 cerber-load.php:5118
2871
  msgid "WP Cerber is now active and has started protecting your site"
2872
  msgstr "WP Cerber активен и начал защищать ваш сайт"
2873
 
2874
+ #: cerber-load.php:4158
2875
  msgid "The WP Cerber security plugin is now active"
2876
  msgstr "WP Cerber плагин безопасности активен"
2877
 
2878
+ #: cerber-load.php:4154
2879
  msgid "From country"
2880
  msgstr "Из страны"
2881
 
2882
+ #: cerber-load.php:4151
2883
  msgid "From IP address"
2884
  msgstr "С IP адреса"
2885
 
2886
+ #: cerber-load.php:4150
2887
  msgid "By user"
2888
  msgstr "По пользователю"
2889
 
2890
+ #: cerber-load.php:4144
2891
  msgid "Not logged in"
2892
  msgstr "Нет авторизации"
2893
 
2894
+ #: cerber-load.php:4141 cerber-load.php:4142
2895
  msgid "The WP Cerber security plugin has been deactivated"
2896
  msgstr "WP Cerber плагин деактивирован"
2897
 
2898
+ #: cerber-load.php:4138 cerber-load.php:4149 nexus/cerber-slave-list.php:44
2899
  msgid "Website"
2900
  msgstr "Сайт"
2901
 
2902
+ #: cerber-load.php:4135
2903
  msgid "Hi!"
2904
  msgstr "Привет!"
2905
 
2906
+ #: cerber-load.php:4134 cerber-load.php:4136
2907
  msgid "A new version of WP Cerber is available to install"
2908
  msgstr "Доступна новая версия WP Cerber!"
2909
 
2910
+ #: cerber-load.php:4131
2911
  msgid "View lockouts in dashboard"
2912
  msgstr "Просмотреть список заблокированных IP"
2913
 
2914
+ #: cerber-load.php:4130
2915
  msgid "View activity for this IP"
2916
  msgstr "Посмотреть активность для этого IP"
2917
 
2918
+ #: cerber-load.php:4128
2919
  msgid "Last lockout was added: %s for IP %s"
2920
  msgstr "Последняя блокировка была добавлена %s для IP %s"
2921
 
2922
+ #: cerber-load.php:4127
2923
  msgid "Number of active lockouts"
2924
  msgstr "Число активных блокировок на данный момент"
2925
 
2926
+ #: cerber-load.php:4125
2927
  msgid "Number of lockouts is increasing"
2928
  msgstr "Число блокировок увеличилось"
2929
 
2930
+ #: cerber-load.php:4122
2931
  msgid "unspecified"
2932
  msgstr "неуказано"
2933
 
2934
+ #: cerber-load.php:4098 cerber-load.php:4864
2935
  msgid "View activity in dashboard"
2936
  msgstr "Просмотреть журнал активности"
2937
 
2938
+ #: cerber-load.php:4097
2939
  msgid "Last failed attempt was at %s from IP %s with user login: %s."
2940
  msgstr "Последняя неудачная попытка была в %s с IP адреса %s с логином %s."
2941
 
2942
+ #: cerber-load.php:4096
2943
  msgid "Citadel mode is activated after %d failed login attempts in %d minutes."
2944
  msgstr "Режим Цитадель активирован после %d неудачных попыток за %d минут."
2945
 
2946
+ #: cerber-load.php:4094
2947
  msgid "Citadel mode is activated"
2948
  msgstr "Активирован режим Цитадель"
2949
 
2950
+ #: cerber-load.php:4070
2951
  msgid "WP Cerber notify"
2952
  msgstr "Уведомление WP Cerber"
2953
 
2954
+ #: common.php:1413
2955
  msgid "Limit on login attempts is reached"
2956
  msgstr "Количество попыток исчерпано"
2957
 
2958
+ #: common.php:1414
2959
  msgid "Attempt to access"
2960
  msgstr "Попытка доступа к"
2961
 
2962
+ #: cerber-load.php:1567
2963
  msgid "Username is not allowed. Please choose another one."
2964
  msgstr "Имя пользователя недопустимо. Выберите другое."
2965
 
2966
+ #: cerber-load.php:1126
2967
  msgid "<strong>ERROR</strong>: The password you entered for the username %s is incorrect."
2968
  msgstr "<strong>ОШИБКА</strong>: Пароль введенный для пользователя %s is некорректен."
2969
 
2970
+ #: cerber-load.php:678
2971
  msgid "Human verification failed. Please click the square box in the reCAPTCHA block below."
2972
  msgstr "Антибот проверка неудачна. Пожалуйста тыкните в квадратную отметку блока reCAPTCHA ниже"
2973
 
2974
+ #: admin/cerber-settings.php:624 admin/cerber-settings.php:644
2975
+ #: admin/cerber-settings.php:725 cerber-load.php:649 cerber-load.php:661
2976
+ #: cerber-load.php:668 cerber-load.php:1017 cerber-load.php:1548
2977
+ #: cerber-load.php:1554 cerber-load.php:1559 cerber-load.php:1566
2978
+ #: cerber-load.php:1573 cerber-load.php:1579 cerber-load.php:1586
2979
+ #: cerber-load.php:1737 cerber-load.php:1874 nexus/cerber-nexus-slave.php:219
2980
+ #: nexus/cerber-nexus-slave.php:230 cerber-scanner.php:5870 common.php:343
2981
+ #: common.php:421 common.php:426 common.php:432 common.php:437
2982
  msgid "ERROR:"
2983
  msgstr "ОШИБКА:"
2984
 
2985
+ #: cerber-load.php:366
2986
  msgid "You have only one attempt remaining."
2987
  msgid_plural "You have %d attempts remaining."
2988
  msgstr[0] "У вас есть только одна попытка для входа"
2989
  msgstr[1] "У вас осталось %d попытки для входа."
2990
  msgstr[2] "У вас осталось %d попыток для входа."
2991
 
2992
+ #: cerber-load.php:341
2993
  msgid "You are not allowed to log in. Ask your administrator for assistance."
2994
  msgstr "Вход на сайт невозможен. Обратитесь к администратору сайта."
2995
 
2996
+ #: dashboard.php:427 dashboard.php:3662 whois.php:222 whois.php:253
2997
+ #: nexus/cerber-slave-list.php:330 common.php:1438 common.php:1822
2998
+ #: common.php:1887
2999
  msgid "Unknown"
3000
  msgstr "Неизвестен"
3001
 
3002
+ #: admin/cerber-settings.php:749 admin/cerber-settings.php:761
3003
+ #: admin/cerber-settings.php:918
3004
  msgid "<strong>ERROR</strong>: please enter a valid email address."
3005
  msgstr "<strong>ОШИБКА</strong>: Введите действительный адрес эл.почты."
3006
 
3007
+ #: admin/cerber-settings.php:652 admin/cerber-settings.php:653
3008
  msgid "Attention! You have changed the login URL! The new login URL is"
3009
  msgstr "Внимание! Вы изменили URL страницы авторизации. Новый адрес"
3010
 
3011
+ #: admin/cerber-settings.php:376
3012
+ msgid "Enable after %s failed login attempts in the last %s minutes"
3013
  msgstr "Активировать после %s неудачных авторизаций за последние %s минут"
3014
 
3015
+ #: admin/cerber-settings.php:367
3016
  msgid "Notify admin if the number of active lockouts above"
3017
  msgstr "Уведомить администратора, если число заблокированных IP более"
3018
 
3019
+ #: admin/cerber-settings.php:359
3020
  msgid "Increase lockout duration to %s hours after %s lockouts in the last %s hours"
3021
  msgstr "Увеличить длительность блокировки до %s часов после %s блокировок в течение последних %s часов"
3022
 
3023
+ #: dashboard.php:4825
 
 
 
 
3024
  msgid "Help"
3025
  msgstr "Помощь"
3026
 
3027
+ #: dashboard.php:82 dashboard.php:4718
3028
  msgid "Tools"
3029
  msgstr "Инструменты"
3030
 
3031
+ #: dashboard.php:4562
3032
  msgid "Hardening"
3033
  msgstr "Панцирь"
3034
 
3035
+ #: dashboard.php:4560
3036
  msgid "Main Settings"
3037
  msgstr "Основные настройки"
3038
 
3039
+ #: admin/cerber-settings.php:94 admin/cerber-settings.php:271
3040
+ #: cerber-lab.php:828
3041
  msgid "Know more"
3042
  msgstr "Узнать больше"
3043
 
3044
+ #: settings.php:1059
3045
  msgid "Before you can start using reCAPTCHA, you have to obtain Site key and Secret key on the Google website"
3046
  msgstr "Перед использованием reCAPTCHA вам нужно получить ключ сайта и секретный ключ на сайте Google"
3047
 
3048
+ #: settings.php:116
3049
  msgid "Please enable Permalinks to use this feature. Set Permalink Settings to something other than Default."
3050
  msgstr "Для использования этой настройки необходимо активировать Постоянные ссылки в настройках сайта."
3051
 
3052
+ #: settings.php:163
3053
  msgid "Make your protection smarter!"
3054
  msgstr "Сделайте защиту от злоумышленников еще умнее"
3055
 
3056
+ #: settings.php:1096
3057
  msgid "Login form"
3058
  msgstr "Форма входа"
3059
 
3060
+ #: settings.php:1086
3061
  msgid "Lost password form"
3062
  msgstr "Форма восстановления пароля"
3063
 
3064
+ #: settings.php:1067
3065
  msgid "Secret key"
3066
  msgstr "Секретный ключ"
3067
 
3068
+ #: settings.php:1063
3069
  msgid "Site key"
3070
  msgstr "Ключ сайта"
3071
 
3072
+ #: settings.php:1058
3073
  msgid "reCAPTCHA settings"
3074
  msgstr "Настройки reCAPTCHA"
3075
 
3076
+ #: settings.php:558
3077
  msgid "in minutes (leave empty to use default WP value)"
3078
  msgstr "В минутах (оставьте пустым для значения WP по умолчанию)"
3079
 
3080
+ #: settings.php:550
3081
  msgid "Usernames from this list are not allowed to log in or register. Any IP address, have tried to use any of these usernames, will be immediately blocked. Use comma to separate logins."
3082
  msgstr "Имена пользователей из этого списка не разрешены для входа или регистрации. Любой IP адрес пытающийся использовать эти имена будет автоматически заблокирован. Испольуйте запятую как разделитель."
3083
 
3084
+ #: settings.php:549
3085
  msgid "Prohibited usernames"
3086
  msgstr "Запрещеные имена пользователей"
3087
 
3088
+ #: settings.php:369
3089
  msgid "Disable REST API"
3090
  msgstr "Отключить REST API"
3091
 
3092
+ #: settings.php:353
3093
  msgid "Block access to the RSS, Atom and RDF feeds"
3094
  msgstr "Закрыть доступ к RSS, Atom и RDF лентам"
3095
 
3096
+ #: settings.php:352
3097
  msgid "Disable feeds"
3098
  msgstr "Отключить ленты"
3099
 
3100
+ #: settings.php:348
3101
  msgid "Block access to the XML-RPC server (including Pingbacks and Trackbacks)"
3102
  msgstr "Закрыть доступ к функциям XML-RPC, включая уведомления и обратные ссылки"
3103
 
3104
+ #: settings.php:347
3105
  msgid "Disable XML-RPC"
3106
  msgstr "Отключить XML-RPC"
3107
 
3108
+ #: settings.php:329
3109
  msgid "Block access to user pages like /?author=n"
3110
  msgstr "Закрыть доступ к страницам авторов наподобие /?author=n"
3111
 
3112
+ #: settings.php:328 settings.php:364
3113
  msgid "Stop user enumeration"
3114
  msgstr "Заблокировать сбор имен"
3115
 
3116
+ #: settings.php:324
3117
  msgid "Hardening WordPress"
3118
  msgstr "Усиление защиты WordPress"
3119
 
3120
+ #: settings.php:296
3121
  msgid "Write failed login attempts to the file"
3122
  msgstr "Записывать попытки входа в файл"
3123
 
3124
+ #: settings.php:295
3125
  msgid "Use file"
3126
  msgstr "Использовать файл"
3127
 
3128
+ #: settings.php:306
3129
  msgid "Retrieve extra WHOIS information for IP"
3130
  msgstr "Получить дополнительную информацию об IP используя WHOIS"
3131
 
3132
+ #: settings.php:305
3133
  msgid "Drill down IP"
3134
  msgstr "Изучать IP"
3135
 
3136
+ #: settings.php:270 settings.php:276 settings.php:789 settings.php:794
3137
+ #: settings.php:859 settings.php:1051
3138
  msgid "days"
3139
  msgstr "дней"
3140
 
3141
+ #: settings.php:637
3142
+ msgid "notifications are allowed per hour (0 means unlimited)"
3143
  msgstr "разрешенное число писем с уведомлениями в час (0 - без ограничений)"
3144
 
3145
+ #: settings.php:636
3146
  msgid "Notification limit"
3147
  msgstr "Ограничение уведомлений"
3148
 
3149
+ #: settings.php:628 settings.php:676 settings.php:915
 
 
 
 
3150
  msgid "Email Address"
3151
  msgstr "Адрес email"
3152
 
3153
+ #: settings.php:260 admin/cerber-settings.php:372
3154
  msgid "Click to send test"
3155
  msgstr "Нажмите, чтобы протестировать отправку"
3156
 
3157
+ #: settings.php:256
3158
  msgid "Send notification to admin email"
3159
  msgstr "Отправить уведомление на адрес email администратора сайта"
3160
 
3161
+ #: settings.php:248 cerber-scanner.php:3958
3162
  msgid "Duration"
3163
  msgstr "Длительность"
3164
 
3165
+ #: settings.php:243
3166
  msgid "Threshold"
3167
  msgstr "Порог"
3168
 
3169
+ #: settings.php:210
3170
  msgid "Block direct access to wp-login.php and return HTTP 404 Not Found Error"
3171
  msgstr "Заблокировать доступ к wp-login.php и возвращать HTTP 404 Страница не найдена"
3172
 
3173
+ #: settings.php:209
3174
  msgid "Disable wp-login.php"
3175
  msgstr "Доступ к wp-login.php"
3176
 
3177
+ #: settings.php:202
3178
  msgid "must not overlap with the existing pages or posts slug"
3179
  msgstr "не должно совпадать с URL существующих страниц или записей"
3180
 
3181
+ #: settings.php:201
3182
  msgid "Custom login URL"
3183
  msgstr "Адрес страницы авторизации"
3184
 
3185
+ #: settings.php:197
3186
  msgid "Custom login page"
3187
  msgstr "Смена URL страницы авторизации"
3188
 
3189
+ #: settings.php:182
3190
  msgid "Immediately block IP after any request to wp-login.php"
3191
  msgstr "Блокировать IP при любом запросе wp-login.php"
3192
 
3193
+ #: settings.php:181
3194
  msgid "Request wp-login.php"
3195
  msgstr "Запрос wp-login.php"
3196
 
3197
+ #: settings.php:177
3198
  msgid "Disable automatic redirection to the login page when /wp-admin/ is requested by an unauthorized request"
3199
  msgstr "Отключить автоматическую переадресацию при запросе /wp-admin/ неавторизованным пользователем"
3200
 
3201
+ #: settings.php:172
3202
  msgid "Immediately block IP when attempting to log in with a non-existing username"
3203
  msgstr "Блокировать IP при попытке авторизации с логином несуществующего пользователя"
3204
 
3205
+ #: settings.php:171
3206
  msgid "Non-existing users"
3207
  msgstr "Несуществующие пользователи"
3208
 
3209
+ #: settings.php:167
3210
  msgid "Always block entire subnet Class C of intruders IP"
3211
  msgstr "Всегда блокировать подсеть класса С вместо IP адреса"
3212
 
3213
+ #: settings.php:166
3214
  msgid "Block subnet"
3215
  msgstr "Блокировка подсети"
3216
 
3217
+ #: settings.php:162
3218
  msgid "Proactive security rules"
3219
  msgstr "Проактивные правила безопасности"
3220
 
3221
+ #: settings.php:220 dashboard.php:2144
3222
  msgid "My site is behind a reverse proxy"
3223
  msgstr "Мой сайт подключен к сети через прокси-сервер"
3224
 
3225
+ #: settings.php:219
3226
  msgid "Site connection"
3227
  msgstr "Подключение к сети"
3228
 
3229
+ #: settings.php:254 dashboard.php:4564
3230
  msgid "Notifications"
3231
  msgstr "Уведомления"
3232
 
3233
+ #: settings.php:151
3234
  msgid "Aggressive lockout"
3235
  msgstr "Ужесточение"
3236
 
3237
+ #: settings.php:147 settings.php:249
3238
  msgid "minutes"
3239
  msgstr "минут"
3240
 
3241
+ #: settings.php:146
3242
  msgid "Lockout duration"
3243
  msgstr "Длительность блокировки"
3244
 
3245
+ #: settings.php:139
 
 
 
 
3246
  msgid "Limit login attempts"
3247
  msgstr "Ограничение числа попыток авторизации"
3248
 
3249
+ #: dashboard.php:1422
3250
  msgid "Abuse email:"
3251
  msgstr "Адрес email для жалоб:"
3252
 
3253
+ #: settings.php:642
3254
  msgid "New version is available"
3255
  msgstr "Доступна новая версия"
3256
 
3257
+ #: dashboard.php:2485 dashboard.php:2872
3258
  msgid "View Activity"
3259
  msgstr "Что происходит?"
3260
 
3261
+ #: dashboard.php:2484
3262
  msgid "Deactivate"
3263
  msgstr "Деактивировать"
3264
 
3265
+ #: dashboard.php:2483
3266
  msgid "Attention! Citadel mode is now active. Nobody is able to log in."
3267
  msgstr "Внимание! Режим Цитадель активен. Авторизация на сайте заблокирована."
3268
 
3269
+ #: dashboard.php:2379
3270
  msgid "doesn't affect Custom login URL and Access Lists"
3271
  msgstr "не затронет настройки URL страницы авторизации и списки доступа"
3272
 
3273
+ #: dashboard.php:2373 dashboard.php:5025 cerber-scanner.php:5739
3274
+ #: cerber-scanner.php:5900
3275
  msgid "Are you sure?"
3276
  msgstr "Вы уверены?"
3277
 
3278
+ #: dashboard.php:2371
3279
  msgid "Load default settings"
3280
  msgstr "Загрузить настройки"
3281
 
3282
+ #: dashboard.php:2369
3283
  msgid "You can easily load default recommended settings using button below"
3284
  msgstr "Вы можете загрузить рекомендованные настройки с помощью всего одной кнопки"
3285
 
3286
+ #: dashboard.php:2368
3287
  msgid "Confused about some settings?"
3288
  msgstr "Сомневаетесь какие настройки оптимальны?"
3289
 
3290
+ #: dashboard.php:4559
3291
  msgid "Lockouts"
3292
  msgstr "Блокировки"
3293
 
3294
+ #: settings.php:233 dashboard.php:1738
3295
  msgid "Citadel mode"
3296
  msgstr "Режим Цитадель"
3297
 
3298
+ #: dashboard.php:1736 dashboard.php:1737 dashboard.php:2663
3299
  msgid "entry"
3300
  msgid_plural "entries"
3301
  msgstr[0] "элемент"
3302
  msgstr[1] "элемента"
3303
  msgstr[2] "элементов"
3304
 
3305
+ #: dashboard.php:1732
3306
  msgid "Last lockout"
3307
  msgstr "Последняя блокировка"
3308
 
3309
+ #: dashboard.php:1731
3310
  msgid "Lockouts at the moment"
3311
  msgstr "Сейчас заблокировано"
3312
 
3313
+ #: dashboard.php:1729
3314
  msgid "lockouts"
3315
  msgstr "блокировок"
3316
 
3317
+ #: dashboard.php:1728 dashboard.php:1729
3318
  msgid "view all"
3319
  msgstr "просмотреть все"
3320
 
3321
+ #: dashboard.php:1728 dashboard.php:1729
3322
  msgid "in 24 hours"
3323
  msgstr "за 24 часа"
3324
 
3325
+ #: dashboard.php:1728
3326
  msgid "failed attempts"
3327
  msgstr "ошибок авторизации"
3328
 
3329
+ #: dashboard.php:1722 dashboard.php:1740
3330
  msgid "disabled"
3331
  msgstr "отключен"
3332
 
3333
+ #: dashboard.php:1719
3334
  msgid "not active"
3335
  msgstr "неактивен"
3336
 
3337
+ #: dashboard.php:1715
3338
  msgid "deactivate"
3339
  msgstr "деактивировать"
3340
 
3341
+ #: dashboard.php:1715 dashboard.php:1745
3342
  msgid "active"
3343
  msgstr "активен"
3344
 
3345
+ #: dashboard.php:1676
3346
  msgid "Cerber Quick View"
3347
  msgstr "Сводка от Cerber"
3348
 
3358
  msgid "No file was uploaded or file is corrupted"
3359
  msgstr "Файл не был загружен или имеет неверный формат"
3360
 
3361
+ #: cerber-tools.php:48 cerber-scanner.php:4109
3362
  msgid "Upload file"
3363
  msgstr "Загрузить файл"
3364
 
3366
  msgid "What do you want to import?"
3367
  msgstr "Что вы хотите импортировать?"
3368
 
3369
+ #: cerber-tools.php:43 cerber-scanner.php:4106
3370
  msgid "Maximum upload file size: %s."
3371
  msgstr "Максимальный размер загружаемого файла: %s."
3372
 
3386
  msgid "Download file"
3387
  msgstr "Скачать файл"
3388
 
3389
+ #: cerber-tools.php:38 cerber-tools.php:47 dashboard.php:4561
3390
  msgid "Access Lists"
3391
  msgstr "Списки доступа"
3392
 
3393
+ #: cerber-tools.php:37 cerber-tools.php:46 dashboard.php:4625
3394
+ #: dashboard.php:4686 nexus/cerber-nexus.php:93
3395
  msgid "Settings"
3396
  msgstr "Настройки"
3397
 
3407
  msgid "Export settings to the file"
3408
  msgstr "Экспорт настроек в файл"
3409
 
3410
+ #: dashboard.php:1619 dashboard.php:1710 dashboard.php:1759
3411
+ #: nexus/cerber-slave-list.php:344 common.php:1575
3412
  msgid "Never"
3413
  msgstr "Никогда"
3414
 
3415
+ #: common.php:1294
3416
  msgid "User created"
3417
  msgstr "Пользователь создан"
3418
 
3419
+ #: common.php:1295
3420
  msgid "User registered"
3421
  msgstr "Пользователь зарегистрирован"
3422
 
3423
+ #: common.php:1296
3424
  msgid "Logged in"
3425
  msgstr "Вход"
3426
 
3427
+ #: common.php:1297
3428
  msgid "Logged out"
3429
  msgstr "Выход"
3430
 
3431
+ #: common.php:1298
3432
  msgid "Login failed"
3433
  msgstr "Ошибка авторизации"
3434
 
3435
+ #: dashboard.php:950 common.php:1301
3436
  msgid "IP blocked"
3437
  msgstr "IP заблокирован"
3438
 
3439
+ #: common.php:1305
3440
  msgid "Citadel activated!"
3441
  msgstr "Режим Цитадель активирован!"
3442
 
3443
+ #: dashboard.php:1349 dashboard.php:1385 dashboard.php:3762 common.php:1359
3444
  msgid "Locked out"
3445
  msgstr "Заблокировано"
3446
 
3447
+ #: common.php:1318
3448
  msgid "Password changed"
3449
  msgstr "Пароль изменен"
3450
 
3451
+ #: common.php:1361
3452
  msgid "IP blacklisted"
3453
  msgstr "IP в черном списке"
3454
 
3455
+ #: common.php:1321
3456
  msgid "reCAPTCHA verification failed"
3457
  msgstr "проверка reCAPTCHA неудачна"
3458
 
3459
+ #: common.php:1322
3460
  msgid "reCAPTCHA settings are incorrect"
3461
  msgstr "настройки reCAPTCHA неверны"
3462
 
3463
+ #: common.php:1325 common.php:1415
3464
  msgid "Attempt to access prohibited URL"
3465
  msgstr "Попытка доступа к запрещенному URL"
3466
 
3467
+ #: common.php:1326 common.php:1416
3468
  msgid "Attempt to log in with non-existing username"
3469
  msgstr "Попытка войти с несуществующим именем пользователя"
3470
 
3471
+ #: common.php:1327 common.php:1417
3472
  msgid "Attempt to log in with prohibited username"
3473
  msgstr "Попытка входа с запрещенным именем"
3474
 
3475
+ #: dashboard.php:186 dashboard.php:302
3476
  msgid "Remove"
3477
  msgstr "Удалить"
3478
 
3479
+ #: cerber-load.php:4832 dashboard.php:191
3480
  msgid "IP"
3481
  msgstr "IP"
3482
 
3483
+ #: dashboard.php:192 dashboard.php:1080
3484
  msgid "Hostname"
3485
  msgstr "Имя узла"
3486
 
3487
+ #: dashboard.php:194 cerber-users.php:972
3488
  msgid "Expires"
3489
  msgstr "Истекает"
3490
 
3491
+ #: cerber-load.php:4129 dashboard.php:195
3492
  msgid "Reason"
3493
  msgstr "Причина"
3494
 
3495
+ #: dashboard.php:196 cerber-users.php:975 cerber-scanner.php:5768
3496
+ #: cerber-scanner.php:5916
3497
  msgid "Action"
3498
  msgstr "Действие"
3499
 
3500
+ #: dashboard.php:212
3501
  msgid "Showing last %d records from %d"
3502
  msgstr "Отображены последние %d строк из %d"
3503
 
3504
+ #: dashboard.php:214
3505
  msgid "Hint"
3506
  msgstr "Подсказка"
3507
 
3508
+ #: dashboard.php:214
3509
  msgid "To view activity, click on the IP"
3510
  msgstr "Чтобы увидеть активность, нажмите на адрес IP"
3511
 
3512
+ #: dashboard.php:218
3513
  msgid "No lockouts at the moment. The sky is clear."
3514
  msgstr "Блокировок нет. Все в порядке."
3515
 
3516
+ #: cerber-load.php:5119 dashboard.php:250 dashboard.php:1341 dashboard.php:1378
3517
+ #: dashboard.php:1736 dashboard.php:3754
3518
  msgid "White IP Access List"
3519
  msgstr "Белый список доступа по IP"
3520
 
3521
+ #: dashboard.php:253 dashboard.php:1344 dashboard.php:1381 dashboard.php:1737
3522
+ #: dashboard.php:3757
3523
  msgid "Black IP Access List"
3524
  msgstr "Черный список доступа по IP"
3525
 
3526
+ #: dashboard.php:260
3527
  msgid "Your IP"
3528
  msgstr "Ваш адрес IP"
3529
 
3530
+ #: dashboard.php:298 dashboard.php:1392 dashboard.php:1427 dashboard.php:1550
3531
  msgid "Check for activities"
3532
  msgstr "Проверить активность"
3533
 
3534
+ #: dashboard.php:308
3535
  msgid "List is empty"
3536
  msgstr "Список пуст"
3537
 
3538
+ #: dashboard.php:500
3539
  msgid "unknown"
3540
  msgstr "неизвестно"
3541
 
3542
+ #: dashboard.php:563
3543
  msgid "Lockout for %s was removed"
3544
  msgstr "Удалена блокировка для %s"
3545
 
3546
+ #: dashboard.php:2500
3547
  msgid "Settings saved"
3548
  msgstr "Настройки сохранены."
3549
 
3550
+ #: dashboard.php:834 dashboard.php:1082 dashboard.php:3550 dashboard.php:3974
3551
  msgid "Date"
3552
  msgstr "Дата"
3553
 
3554
+ #: settings.php:266 cerber-load.php:4823 dashboard.php:1779 dashboard.php:2327
3555
+ #: dashboard.php:4557 cerber-users.php:1139
3556
  msgid "Activity"
3557
  msgstr "Активность"
3558
 
3559
+ #: dashboard.php:1112
3560
  msgid "No activity has been logged."
3561
  msgstr "Ни одного события не зафиксировано."
3562
 
3563
+ #: cerber-load.php:4840
3564
  msgid "Username used"
3565
  msgstr "Использован логин"
3566
 
3567
+ #: dashboard.php:837 dashboard.php:1084 dashboard.php:3979
3568
  msgid "Local User"
3569
  msgstr "Пользователь"
3570
 
3571
+ #: dashboard.php:1447
3572
  msgid "Add IP to the Black List"
3573
  msgstr "Добавить IP в черный список"
3574
 
3575
+ #: dashboard.php:1585
3576
  msgid "Comments"
3577
  msgstr "Комментарии"
3578
 
3579
+ #: dashboard.php:1586
3580
  msgid "Last login"
3581
  msgstr "Последний вход"
3582
 
3583
+ #: settings.php:565
3584
  msgid "by date of registration"
3585
  msgstr "по дате регистрации"
languages/wp-cerber-vi.mo ADDED
Binary file
languages/wp-cerber-vi.po ADDED
@@ -0,0 +1,3709 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "MIME-Version: 1.0\n"
4
+ "Content-Type: text/plain; charset=UTF-8\n"
5
+ "Content-Transfer-Encoding: 8bit\n"
6
+ "X-Generator: POEditor.com\n"
7
+ "Project-Id-Version: WP Cerber Security\n"
8
+ "Language: vi\n"
9
+ "Plural-Forms: nplurals=1; plural=0;\n"
10
+
11
+ #: ../settings.php:149
12
+ msgid "Limit login attempts"
13
+ msgstr "Giới hạn số lần đăng nhập"
14
+
15
+ #: ../settings.php:157
16
+ msgid "Lockout duration"
17
+ msgstr "Thời gian khoá"
18
+
19
+ #: ../settings.php:158 ../settings.php:259
20
+ msgid "minutes"
21
+ msgstr "phút"
22
+
23
+ #: ../settings.php:161
24
+ msgid "Aggressive lockout"
25
+ msgstr ""
26
+
27
+ #: ../settings.php:229
28
+ msgid "Site connection"
29
+ msgstr "Kết nối trang"
30
+
31
+ #: ../settings.php:172
32
+ msgid "Proactive security rules"
33
+ msgstr "Quy tắc bảo mật chủ động"
34
+
35
+ #: ../settings.php:176
36
+ msgid "Block subnet"
37
+ msgstr "Chặn mạng con (subnet)"
38
+
39
+ #: ../settings.php:191
40
+ msgid "Request wp-login.php"
41
+ msgstr "Truy cập wp-login.php"
42
+
43
+ #: ../settings.php:192
44
+ msgid "Immediately block IP after any request to wp-login.php"
45
+ msgstr "Chặn ngay IP sau khi có bất kỳ yêu cầu truy cập nào đến wp-login.php"
46
+
47
+ #: ../settings.php:207
48
+ msgid "Custom login page"
49
+ msgstr "Trang đăng nhập tùy chỉnh"
50
+
51
+ #: ../settings.php:211
52
+ msgid "Custom login URL"
53
+ msgstr "URL trang đăng nhập tùy chỉnh"
54
+
55
+ #: ../settings.php:212
56
+ msgid "must not overlap with the existing pages or posts slug"
57
+ msgstr "không được trùng lặp với đường dẫn của các trang hoặc bài viết hiện có"
58
+
59
+ #: ../settings.php:219
60
+ msgid "Disable wp-login.php"
61
+ msgstr "Vô hiệu hóa wp-login.php"
62
+
63
+ #: ../settings.php:220
64
+ msgid "Block direct access to wp-login.php and return HTTP 404 Not Found Error"
65
+ msgstr "Chặn truy cập trực tiếp vào wp-login.php và trả về Lỗi HTTP 404 Không tìm thấy"
66
+
67
+ #: ../dashboard.php:1763 ../settings.php:243
68
+ msgid "Citadel mode"
69
+ msgstr "Chế độ phòng thủ"
70
+
71
+ #: ../settings.php:253
72
+ msgid "Threshold"
73
+ msgstr "Ngưỡng"
74
+
75
+ #: ../admin/cerber-admin.php:51 ../settings.php:258
76
+ msgid "Duration"
77
+ msgstr "Thời hạn"
78
+
79
+ #: ../dashboard.php:4591 ../settings.php:264
80
+ msgid "Notifications"
81
+ msgstr "Thông báo"
82
+
83
+ #: ../settings.php:266
84
+ msgid "Send notification to admin email"
85
+ msgstr "Gửi thông báo đến email của quản trị viên"
86
+
87
+ #: ../dashboard.php:4588 ../cerber-tools.php:38 ../cerber-tools.php:49
88
+ msgid "Access Lists"
89
+ msgstr "Danh sách truy cập"
90
+
91
+ #: ../dashboard.php:1804 ../dashboard.php:2352 ../dashboard.php:4584 ../cerber-
92
+ #: load.php:4930 ../cerber-users.php:1148 ../settings.php:276
93
+ msgid "Activity"
94
+ msgstr "Hoạt động"
95
+
96
+ #: ../dashboard.php:4586
97
+ msgid "Lockouts"
98
+ msgstr "Khoá"
99
+
100
+ #: ../cerber-load.php:4939
101
+ msgid "IP"
102
+ msgstr "IP"
103
+
104
+ #: ../dashboard.php:846 ../dashboard.php:1110 ../dashboard.php:3560 ../dashboard.
105
+ #: php:4001
106
+ msgid "Date"
107
+ msgstr "Ngày"
108
+
109
+ #: ../dashboard.php:849 ../dashboard.php:1112 ../dashboard.php:4006
110
+ msgid "Local User"
111
+ msgstr "Người dùng cục bộ"
112
+
113
+ #: ../cerber-load.php:4947
114
+ msgid "Username used"
115
+ msgstr "Tên người dùng đã sử dụng"
116
+
117
+ #: ../dashboard.php:216
118
+ msgid "Showing last %d records from %d"
119
+ msgstr ""
120
+
121
+ #: ../common.php:1326
122
+ msgid "Logged in"
123
+ msgstr "Đăng nhập"
124
+
125
+ #: ../common.php:1327
126
+ msgid "Logged out"
127
+ msgstr "Đăng xuất"
128
+
129
+ #: ../common.php:1328
130
+ msgid "Login failed"
131
+ msgstr "Đăng nhập không thành công"
132
+
133
+ #: ../dashboard.php:977 ../common.php:1331
134
+ msgid "IP blocked"
135
+ msgstr ""
136
+
137
+ #: ../common.php:1335
138
+ msgid "Citadel activated!"
139
+ msgstr ""
140
+
141
+ #: ../dashboard.php:1352 ../dashboard.php:1396 ../dashboard.php:3789 ../common.
142
+ #: php:1389
143
+ msgid "Locked out"
144
+ msgstr ""
145
+
146
+ #: ../common.php:1391
147
+ msgid "IP blacklisted"
148
+ msgstr ""
149
+
150
+ #: ../common.php:1348
151
+ msgid "Password changed"
152
+ msgstr "Mật khẩu đã được thay đổi"
153
+
154
+ #: ../dashboard.php:190 ../dashboard.php:308
155
+ msgid "Remove"
156
+ msgstr "Xoá"
157
+
158
+ #: ../dashboard.php:575
159
+ msgid "Lockout for %s was removed"
160
+ msgstr ""
161
+
162
+ #: ../dashboard.php:254 ../dashboard.php:1344 ../dashboard.php:1389 ../dashboard.
163
+ #: php:1761 ../dashboard.php:3781 ../cerber-load.php:5230 ../cerber-tools.php:69
164
+ msgid "White IP Access List"
165
+ msgstr ""
166
+
167
+ #: ../dashboard.php:257 ../dashboard.php:1347 ../dashboard.php:1392 ../dashboard.
168
+ #: php:1762 ../dashboard.php:3784 ../cerber-tools.php:70
169
+ msgid "Black IP Access List"
170
+ msgstr ""
171
+
172
+ #: ../dashboard.php:314
173
+ msgid "List is empty"
174
+ msgstr "Danh sách trống"
175
+
176
+ #: ../cerber-load.php:4166
177
+ msgid "Citadel mode is activated after %d failed login attempts in %d minutes."
178
+ msgstr ""
179
+
180
+ #: ../dashboard.php:2482 ../dashboard.php:2881
181
+ msgid "View Activity"
182
+ msgstr "Xem hoạt động"
183
+
184
+ #: ../dashboard.php:4652 ../dashboard.php:4713 ../cerber-tools.php:37 ../cerber-
185
+ #: tools.php:48 ../nexus/cerber-nexus.php:93
186
+ msgid "Settings"
187
+ msgstr "Cài đặt"
188
+
189
+ #: ../dashboard.php:1611
190
+ msgid "Last login"
191
+ msgstr "Lần đăng nhập cuối"
192
+
193
+ #: ../dashboard.php:1644 ../dashboard.php:1735 ../dashboard.php:1784 ../common.
194
+ #: php:1611 ../nexus/cerber-slave-list.php:344
195
+ msgid "Never"
196
+ msgstr "Chưa bao giờ"
197
+
198
+ #: ../dashboard.php:5075 ../admin/cerber-admin.php:847 ../admin/cerber-admin.php:
199
+ #: 1014 ../cerber-tools.php:59
200
+ msgid "Are you sure?"
201
+ msgstr "Bạn có chắc?"
202
+
203
+ #: ../dashboard.php:2169 ../settings.php:230
204
+ msgid "My site is behind a reverse proxy"
205
+ msgstr "Trang web của tôi đứng sau một reverse proxy"
206
+
207
+ #: ../settings.php:173
208
+ msgid "Make your protection smarter!"
209
+ msgstr ""
210
+
211
+ #: ../settings.php:126
212
+ msgid "Please enable Permalinks to use this feature. Set Permalink Settings to something other than Default."
213
+ msgstr ""
214
+
215
+ #: ../dashboard.php:4587
216
+ msgid "Main Settings"
217
+ msgstr "Cài đặt chính"
218
+
219
+ #: ../dashboard.php:4872
220
+ msgid "Help"
221
+ msgstr "Hỗ trợ"
222
+
223
+ #: ../admin/cerber-settings.php:364
224
+ msgid "Increase lockout duration to %s hours after %s lockouts in the last %s hours"
225
+ msgstr ""
226
+
227
+ #: ../cerber-load.php:343
228
+ msgid "You are not allowed to log in. Ask your administrator for assistance."
229
+ msgstr ""
230
+
231
+ #: ../cerber-load.php:368
232
+ msgid "You have only one attempt remaining."
233
+ msgid_plural "You have %d attempts remaining."
234
+ msgstr[0] ""
235
+
236
+ #: ../dashboard.php:1140
237
+ msgid "No activity has been logged."
238
+ msgstr ""
239
+
240
+ #: ../dashboard.php:198 ../cerber-users.php:981
241
+ msgid "Expires"
242
+ msgstr "Đã hết hạn"
243
+
244
+ #: ../dashboard.php:222
245
+ msgid "No lockouts at the moment. The sky is clear."
246
+ msgstr ""
247
+
248
+ #: ../dashboard.php:264
249
+ msgid "Your IP"
250
+ msgstr "Địa chỉ IP của bạn"
251
+
252
+ #: ../cerber-load.php:4167
253
+ msgid "Last failed attempt was at %s from IP %s with user login: %s."
254
+ msgstr "Lần thử thất bại cuối cùng là ở %s từ địa chỉ IP %s với thông tin đăng nhập của: %s."
255
+
256
+ #: ../cerber-load.php:5204
257
+ msgid "Can't activate WP Cerber due to a database error."
258
+ msgstr "Không thể kích hoạt WP Cerber do lỗi cơ sở dữ liệu."
259
+
260
+ #: ../admin/cerber-settings.php:372
261
+ msgid "Notify admin if the number of active lockouts above"
262
+ msgstr "Thông báo cho quản trị viên nếu số lần khóa hoạt động ở trên"
263
+
264
+ #: ../settings.php:280 ../settings.php:286 ../settings.php:814 ../settings.php:
265
+ #: 820 ../settings.php:891 ../settings.php:1082
266
+ msgid "days"
267
+ msgstr "ngày"
268
+
269
+ #: ../dashboard.php:1701
270
+ msgid "Cerber Quick View"
271
+ msgstr ""
272
+
273
+ #: ../dashboard.php:218
274
+ msgid "Hint"
275
+ msgstr ""
276
+
277
+ #: ../dashboard.php:218
278
+ msgid "To view activity, click on the IP"
279
+ msgstr ""
280
+
281
+ #: ../settings.php:177
282
+ msgid "Always block entire subnet Class C of intruders IP"
283
+ msgstr ""
284
+
285
+ #: ../admin/cerber-settings.php:377 ../settings.php:270
286
+ msgid "Click to send test"
287
+ msgstr ""
288
+
289
+ #: ../admin/cerber-settings.php:677 ../admin/cerber-settings.php:678
290
+ msgid "Attention! You have changed the login URL! The new login URL is"
291
+ msgstr ""
292
+
293
+ #: ../dashboard.php:1610
294
+ msgid "Comments"
295
+ msgstr ""
296
+
297
+ #: ../cerber-load.php:4168 ../cerber-load.php:4971
298
+ msgid "View activity in dashboard"
299
+ msgstr ""
300
+
301
+ #: ../cerber-load.php:4197
302
+ msgid "Number of active lockouts"
303
+ msgstr ""
304
+
305
+ #: ../cerber-load.php:4201
306
+ msgid "View lockouts in dashboard"
307
+ msgstr ""
308
+
309
+ #: ../cerber-load.php:4289
310
+ msgid "This message was sent by"
311
+ msgstr "Tin nhắn này đã được gửi bởi"
312
+
313
+ #: ../dashboard.php:82 ../dashboard.php:4764
314
+ msgid "Tools"
315
+ msgstr "Công cụ"
316
+
317
+ #: ../cerber-tools.php:34
318
+ msgid "Export settings to the file"
319
+ msgstr "Xuất các cài đặt thành file"
320
+
321
+ #: ../cerber-tools.php:35
322
+ msgid "When you click the button below you will get a configuration file, which you can upload on another site."
323
+ msgstr "Khi bạn nhấp vào nút bên dưới, bạn sẽ nhận được một tệp cấu hình, mà bạn có thể tải lên trên một trang web khác."
324
+
325
+ #: ../cerber-tools.php:36
326
+ msgid "What do you want to export?"
327
+ msgstr "Bạn có muốn xuất file không?"
328
+
329
+ #: ../cerber-tools.php:39
330
+ msgid "Download file"
331
+ msgstr "Tải tệp tin"
332
+
333
+ #: ../cerber-tools.php:43
334
+ msgid "Import settings from the file"
335
+ msgstr "Nhập các cài đặt từ tệp tin"
336
+
337
+ #: ../cerber-tools.php:44
338
+ msgid "When you click the button below, file will be uploaded and all existing settings will be overridden."
339
+ msgstr "Khi bạn nhấp vào nút bên dưới, tệp sẽ được tải lên và tất cả các cài đặt hiện có sẽ bị ghi đè."
340
+
341
+ #: ../cerber-tools.php:45
342
+ msgid "Select file to import."
343
+ msgstr "Chọn tệp tin để nhập."
344
+
345
+ #: ../admin/cerber-admin.php:246 ../cerber-tools.php:45
346
+ msgid "Maximum upload file size: %s."
347
+ msgstr "Kích thước tệp tải lên tối đa: %s."
348
+
349
+ #: ../cerber-tools.php:48
350
+ msgid "What do you want to import?"
351
+ msgstr "Bạn có chắc là muốn nhập?"
352
+
353
+ #: ../admin/cerber-admin.php:249 ../cerber-tools.php:50
354
+ msgid "Upload file"
355
+ msgstr "Tải lên"
356
+
357
+ #: ../cerber-tools.php:189
358
+ msgid "No file was uploaded or file is corrupted"
359
+ msgstr "Không có tập tin nào được tải lên hoặc tập tin bị hỏng"
360
+
361
+ #: ../cerber-tools.php:236
362
+ msgid "Settings has imported successfully from"
363
+ msgstr "Các cài đặt đã được nhập thành công từ"
364
+
365
+ #: ../cerber-tools.php:243
366
+ msgid "Error while parsing file"
367
+ msgstr "Lỗi khi phân tích tệp"
368
+
369
+ #: ../dashboard.php:196 ../dashboard.php:1108
370
+ msgid "Hostname"
371
+ msgstr ""
372
+
373
+ #: ../dashboard.php:513
374
+ msgid "unknown"
375
+ msgstr "không rõ"
376
+
377
+ #: ../dashboard.php:1740 ../dashboard.php:1770
378
+ msgid "active"
379
+ msgstr "kích hoạt"
380
+
381
+ #: ../dashboard.php:1740
382
+ msgid "deactivate"
383
+ msgstr "hủy kích hoạt"
384
+
385
+ #: ../dashboard.php:1744
386
+ msgid "not active"
387
+ msgstr "không kích hoạt"
388
+
389
+ #: ../dashboard.php:1747 ../dashboard.php:1765
390
+ msgid "disabled"
391
+ msgstr "vô hiệu hoá"
392
+
393
+ #: ../dashboard.php:1753
394
+ msgid "failed attempts"
395
+ msgstr ""
396
+
397
+ #: ../dashboard.php:1753 ../dashboard.php:1754
398
+ msgid "in 24 hours"
399
+ msgstr "trong 24 tiếng"
400
+
401
+ #: ../dashboard.php:1753 ../dashboard.php:1754
402
+ msgid "view all"
403
+ msgstr "xem tất cả"
404
+
405
+ #: ../dashboard.php:1754
406
+ msgid "lockouts"
407
+ msgstr ""
408
+
409
+ #: ../dashboard.php:1756
410
+ msgid "Lockouts at the moment"
411
+ msgstr ""
412
+
413
+ #: ../dashboard.php:1757
414
+ msgid "Last lockout"
415
+ msgstr ""
416
+
417
+ #: ../dashboard.php:1761 ../dashboard.php:1762 ../dashboard.php:2660
418
+ msgid "entry"
419
+ msgid_plural "entries"
420
+ msgstr[0] ""
421
+
422
+ #: ../cerber-tools.php:57
423
+ msgid "Load default settings"
424
+ msgstr ""
425
+
426
+ #: ../settings.php:666
427
+ msgid "New version is available"
428
+ msgstr ""
429
+
430
+ #: ../cerber-load.php:4140
431
+ msgid "WP Cerber notify"
432
+ msgstr ""
433
+
434
+ #: ../cerber-load.php:4164
435
+ msgid "Citadel mode is activated"
436
+ msgstr ""
437
+
438
+ #: ../cerber-load.php:4236
439
+ msgid "New Custom login URL"
440
+ msgstr ""
441
+
442
+ #: ../cerber-load.php:5190
443
+ msgid "The WP Cerber requires PHP %s or higher. You are running"
444
+ msgstr ""
445
+
446
+ #: ../cerber-load.php:5194
447
+ msgid "The WP Cerber requires WordPress %s or higher. You are running"
448
+ msgstr ""
449
+
450
+ #: ../settings.php:305
451
+ msgid "Use file"
452
+ msgstr ""
453
+
454
+ #: ../settings.php:306
455
+ msgid "Write failed login attempts to the file"
456
+ msgstr ""
457
+
458
+ #: ../dashboard.php:2481
459
+ msgid "Deactivate"
460
+ msgstr ""
461
+
462
+ #: ../dashboard.php:199 ../cerber-load.php:4199
463
+ msgid "Reason"
464
+ msgstr ""
465
+
466
+ #: ../dashboard.php:1455
467
+ msgid "Add IP to the Black List"
468
+ msgstr ""
469
+
470
+ #: ../common.php:1450
471
+ msgid "Attempt to access"
472
+ msgstr ""
473
+
474
+ #: ../common.php:1449
475
+ msgid "Limit on login attempts is reached"
476
+ msgstr ""
477
+
478
+ #: ../cerber-load.php:4198
479
+ msgid "Last lockout was added: %s for IP %s"
480
+ msgstr ""
481
+
482
+ #: ../dashboard.php:4589
483
+ msgid "Hardening"
484
+ msgstr ""
485
+
486
+ #: ../dashboard.php:1428
487
+ msgid "Abuse email:"
488
+ msgstr ""
489
+
490
+ #: ../settings.php:653 ../settings.php:700 ../settings.php:946
491
+ msgid "Email Address"
492
+ msgstr ""
493
+
494
+ #: ../settings.php:315
495
+ msgid "Drill down IP"
496
+ msgstr ""
497
+
498
+ #: ../settings.php:316
499
+ msgid "Retrieve extra WHOIS information for IP"
500
+ msgstr ""
501
+
502
+ #: ../settings.php:349
503
+ msgid "Hardening WordPress"
504
+ msgstr ""
505
+
506
+ #: ../settings.php:353 ../settings.php:389
507
+ msgid "Stop user enumeration"
508
+ msgstr ""
509
+
510
+ #: ../settings.php:372
511
+ msgid "Disable XML-RPC"
512
+ msgstr ""
513
+
514
+ #: ../settings.php:373
515
+ msgid "Block access to the XML-RPC server (including Pingbacks and Trackbacks)"
516
+ msgstr ""
517
+
518
+ #: ../settings.php:377
519
+ msgid "Disable feeds"
520
+ msgstr ""
521
+
522
+ #: ../settings.php:378
523
+ msgid "Block access to the RSS, Atom and RDF feeds"
524
+ msgstr ""
525
+
526
+ #: ../settings.php:394
527
+ msgid "Disable REST API"
528
+ msgstr ""
529
+
530
+ #: ../admin/cerber-settings.php:773 ../admin/cerber-settings.php:785 ..
531
+ #: /admin/cerber-settings.php:942
532
+ msgid "<strong>ERROR</strong>: please enter a valid email address."
533
+ msgstr ""
534
+
535
+ #: ../cerber-load.php:4229 ../cerber-load.php:5245
536
+ msgid "WP Cerber is now active and has started protecting your site"
537
+ msgstr ""
538
+
539
+ #: ../dashboard.php:200 ../admin/cerber-admin.php:883 ../admin/cerber-admin.php:
540
+ #: 1038 ../cerber-users.php:984
541
+ msgid "Action"
542
+ msgstr ""
543
+
544
+ #: ../dashboard.php:4921
545
+ msgid "Incorrect IP address or IP range"
546
+ msgstr ""
547
+
548
+ #: ../dashboard.php:2497
549
+ msgid "Settings saved"
550
+ msgstr ""
551
+
552
+ #: ../dashboard.php:1434
553
+ msgid "Network:"
554
+ msgstr ""
555
+
556
+ #: ../dashboard.php:1449
557
+ msgid "Add network to the Black List"
558
+ msgstr ""
559
+
560
+ #: ../dashboard.php:2480
561
+ msgid "Attention! Citadel mode is now active. Nobody is able to log in."
562
+ msgstr ""
563
+
564
+ #: ../dashboard.php:433 ../dashboard.php:3689 ../whois.php:222 ../whois.php:253 ..
565
+ #: /common.php:1474 ../common.php:1874 ../common.php:1942 ../nexus/cerber-slave-
566
+ #: list.php:330
567
+ msgid "Unknown"
568
+ msgstr ""
569
+
570
+ #: ../common.php:340 ../common.php:418 ../common.php:423 ../common.php:429 ..
571
+ #: /common.php:434 ../admin/cerber-settings.php:649 ../admin/cerber-settings.php:
572
+ #: 669 ../admin/cerber-settings.php:749 ../admin/cerber-admin.php:984 ../cerber-
573
+ #: load.php:651 ../cerber-load.php:663 ../cerber-load.php:670 ../cerber-load.php:
574
+ #: 1018 ../cerber-load.php:1549 ../cerber-load.php:1555 ../cerber-load.php:1560 ..
575
+ #: /cerber-load.php:1567 ../cerber-load.php:1574 ../cerber-load.php:1580 ..
576
+ #: /cerber-load.php:1587 ../cerber-load.php:1752 ../cerber-load.php:1889 ..
577
+ #: /nexus/cerber-nexus-slave.php:204 ../nexus/cerber-nexus-slave.php:215
578
+ msgid "ERROR:"
579
+ msgstr ""
580
+
581
+ #: ../cerber-load.php:680
582
+ msgid "Human verification failed. Please click the square box in the reCAPTCHA block below."
583
+ msgstr ""
584
+
585
+ #: ../cerber-load.php:1127
586
+ msgid "<strong>ERROR</strong>: The password you entered for the username %s is incorrect."
587
+ msgstr ""
588
+
589
+ #: ../cerber-load.php:1568
590
+ msgid "Username is not allowed. Please choose another one."
591
+ msgstr ""
592
+
593
+ #: ../cerber-load.php:4192
594
+ msgid "unspecified"
595
+ msgstr ""
596
+
597
+ #: ../cerber-load.php:4195
598
+ msgid "Number of lockouts is increasing"
599
+ msgstr ""
600
+
601
+ #: ../cerber-load.php:4200
602
+ msgid "View activity for this IP"
603
+ msgstr ""
604
+
605
+ #: ../cerber-load.php:4204 ../cerber-load.php:4206
606
+ msgid "A new version of WP Cerber is available to install"
607
+ msgstr ""
608
+
609
+ #: ../cerber-load.php:4205
610
+ msgid "Hi!"
611
+ msgstr ""
612
+
613
+ #: ../cerber-load.php:4208 ../cerber-load.php:4219 ../nexus/cerber-slave-list.php:
614
+ #: 44
615
+ msgid "Website"
616
+ msgstr ""
617
+
618
+ #: ../cerber-load.php:4211 ../cerber-load.php:4212
619
+ msgid "The WP Cerber security plugin has been deactivated"
620
+ msgstr ""
621
+
622
+ #: ../cerber-load.php:4214
623
+ msgid "Not logged in"
624
+ msgstr ""
625
+
626
+ #: ../cerber-load.php:4220
627
+ msgid "By user"
628
+ msgstr ""
629
+
630
+ #: ../cerber-load.php:4221
631
+ msgid "From IP address"
632
+ msgstr ""
633
+
634
+ #: ../cerber-load.php:4224
635
+ msgid "From country"
636
+ msgstr ""
637
+
638
+ #: ../cerber-load.php:4228
639
+ msgid "The WP Cerber security plugin is now active"
640
+ msgstr ""
641
+
642
+ #: ../cerber-load.php:5230
643
+ msgid "Your IP address is added to the"
644
+ msgstr ""
645
+
646
+ #: ../cerber-load.php:5262
647
+ msgid "Import settings"
648
+ msgstr ""
649
+
650
+ #: ../settings.php:661
651
+ msgid "Notification limit"
652
+ msgstr ""
653
+
654
+ #: ../settings.php:574
655
+ msgid "Prohibited usernames"
656
+ msgstr ""
657
+
658
+ #: ../settings.php:575
659
+ msgid "Usernames from this list are not allowed to log in or register. Any IP address, have tried to use any of these usernames, will be immediately blocked. Use comma to separate logins."
660
+ msgstr ""
661
+
662
+ #: ../settings.php:1088
663
+ msgid "reCAPTCHA settings"
664
+ msgstr ""
665
+
666
+ #: ../settings.php:1093
667
+ msgid "Site key"
668
+ msgstr ""
669
+
670
+ #: ../settings.php:1097
671
+ msgid "Secret key"
672
+ msgstr ""
673
+
674
+ #: ../settings.php:1107
675
+ msgid "Enable reCAPTCHA for WordPress registration form"
676
+ msgstr ""
677
+
678
+ #: ../settings.php:1116
679
+ msgid "Lost password form"
680
+ msgstr ""
681
+
682
+ #: ../settings.php:1126
683
+ msgid "Login form"
684
+ msgstr ""
685
+
686
+ #: ../settings.php:1127
687
+ msgid "Enable reCAPTCHA for WordPress login form"
688
+ msgstr ""
689
+
690
+ #: ../settings.php:1089
691
+ msgid "Before you can start using reCAPTCHA, you have to obtain Site key and Secret key on the Google website"
692
+ msgstr ""
693
+
694
+ #: ../admin/cerber-settings.php:100 ../admin/cerber-settings.php:270 ../cerber-
695
+ #: lab.php:840
696
+ msgid "Know more"
697
+ msgstr ""
698
+
699
+ #: ../common.php:1323
700
+ msgid "User created"
701
+ msgstr ""
702
+
703
+ #: ../common.php:1324
704
+ msgid "User registered"
705
+ msgstr ""
706
+
707
+ #: ../common.php:1351
708
+ msgid "reCAPTCHA verification failed"
709
+ msgstr ""
710
+
711
+ #: ../common.php:1352
712
+ msgid "reCAPTCHA settings are incorrect"
713
+ msgstr ""
714
+
715
+ #: ../common.php:1355 ../common.php:1451
716
+ msgid "Attempt to access prohibited URL"
717
+ msgstr ""
718
+
719
+ #: ../common.php:1357 ../common.php:1453
720
+ msgid "Attempt to log in with prohibited username"
721
+ msgstr ""
722
+
723
+ #: ../settings.php:291
724
+ msgid "Cerber Lab connection"
725
+ msgstr ""
726
+
727
+ #: ../settings.php:292
728
+ msgid "Send malicious IP addresses to the Cerber Lab"
729
+ msgstr ""
730
+
731
+ #: ../settings.php:297
732
+ msgid "Cerber Lab protocol"
733
+ msgstr ""
734
+
735
+ #: ../settings.php:1034 ../settings.php:1106
736
+ msgid "Registration form"
737
+ msgstr ""
738
+
739
+ #: ../settings.php:1112
740
+ msgid "Enable reCAPTCHA for WooCommerce registration form"
741
+ msgstr ""
742
+
743
+ #: ../settings.php:1117
744
+ msgid "Enable reCAPTCHA for WordPress lost password form"
745
+ msgstr ""
746
+
747
+ #: ../settings.php:1122
748
+ msgid "Enable reCAPTCHA for WooCommerce lost password form"
749
+ msgstr ""
750
+
751
+ #: ../settings.php:1132
752
+ msgid "Enable reCAPTCHA for WooCommerce login form"
753
+ msgstr ""
754
+
755
+ #: ../common.php:1353
756
+ msgid "Request to the Google reCAPTCHA service failed"
757
+ msgstr ""
758
+
759
+ #: ../dashboard.php:958 ../dashboard.php:2366
760
+ msgid "View all"
761
+ msgstr ""
762
+
763
+ #: ../dashboard.php:2369
764
+ msgid "Recently locked out IP addresses"
765
+ msgstr ""
766
+
767
+ #: ../cerber-lab.php:838
768
+ msgid "OK, nail them all"
769
+ msgstr ""
770
+
771
+ #: ../cerber-lab.php:839
772
+ msgid "NO, maybe later"
773
+ msgstr ""
774
+
775
+ #: ../dashboard.php:54 ../dashboard.php:1803 ../dashboard.php:2682 ../dashboard.
776
+ #: php:4583
777
+ msgid "Dashboard"
778
+ msgstr ""
779
+
780
+ #: ../cerber-lab.php:836
781
+ msgid "Want to make WP Cerber even more powerful?"
782
+ msgstr ""
783
+
784
+ #: ../cerber-lab.php:837
785
+ msgid "Allow WP Cerber to send locked out malicious IP addresses to Cerber Lab. This helps the plugin team to develop new algorithms for WP Cerber that will defend WordPress against new threats and botnets that are appearing everyday. You can disable the sending in the plugin settings at any time."
786
+ msgstr ""
787
+
788
+ #: ../dashboard.php:3559
789
+ msgid "IP address"
790
+ msgstr ""
791
+
792
+ #: ../dashboard.php:850
793
+ msgid "User login"
794
+ msgstr ""
795
+
796
+ #: ../dashboard.php:851 ../dashboard.php:3565
797
+ msgid "User ID"
798
+ msgstr ""
799
+
800
+ #: ../dashboard.php:1135 ../dashboard.php:4066
801
+ msgid "Export"
802
+ msgstr ""
803
+
804
+ #: ../dashboard.php:1151
805
+ msgid "Search for IP or username"
806
+ msgstr ""
807
+
808
+ #: ../dashboard.php:1162
809
+ msgid "Filter"
810
+ msgstr ""
811
+
812
+ #: ../dashboard.php:54
813
+ msgid "Cerber Dashboard"
814
+ msgstr ""
815
+
816
+ #: ../dashboard.php:82
817
+ msgid "Cerber tools"
818
+ msgstr ""
819
+
820
+ #: ../cerber-tools.php:320
821
+ msgid "Unsubscribe"
822
+ msgstr ""
823
+
824
+ #: ../cerber-load.php:4240 ../cerber-load.php:4241
825
+ msgid "A new activity has been recorded"
826
+ msgstr ""
827
+
828
+ #: ../cerber-load.php:4943 ../cerber-users.php:978
829
+ msgid "User"
830
+ msgstr ""
831
+
832
+ #: ../cerber-load.php:4951
833
+ msgid "Search string"
834
+ msgstr ""
835
+
836
+ #: ../settings.php:312
837
+ msgid "Preferences"
838
+ msgstr ""
839
+
840
+ #: ../settings.php:320
841
+ msgid "Date format"
842
+ msgstr ""
843
+
844
+ #: ../settings.php:321
845
+ msgid "if empty, the default format %s will be used"
846
+ msgstr ""
847
+
848
+ #: ../settings.php:672
849
+ msgid "Push notifications"
850
+ msgstr ""
851
+
852
+ #: ../settings.php:644
853
+ msgid "Email notifications"
854
+ msgstr ""
855
+
856
+ #: ../settings.php:654 ../settings.php:702 ../settings.php:785 ../settings.php:948
857
+ msgid "Use comma to specify multiple values"
858
+ msgstr ""
859
+
860
+ #: ../settings.php:113
861
+ msgid "All connected devices"
862
+ msgstr ""
863
+
864
+ #: ../settings.php:116
865
+ msgid "No devices found"
866
+ msgstr ""
867
+
868
+ #: ../settings.php:120
869
+ msgid "Not available"
870
+ msgstr ""
871
+
872
+ #: ../common.php:1349
873
+ msgid "Password reset requested"
874
+ msgstr ""
875
+
876
+ #: ../common.php:1454
877
+ msgid "Limit on failed reCAPTCHA verifications is reached"
878
+ msgstr ""
879
+
880
+ #: ../common.php:1606
881
+ msgid "%s ago"
882
+ msgstr ""
883
+
884
+ #: ../settings.php:166
885
+ msgid "Apply limit login rules to IP addresses in the White IP Access List"
886
+ msgstr ""
887
+
888
+ #: ../settings.php:196
889
+ msgid "Display 404 page"
890
+ msgstr ""
891
+
892
+ #: ../settings.php:1101
893
+ msgid "Invisible reCAPTCHA"
894
+ msgstr ""
895
+
896
+ #: ../settings.php:1102
897
+ msgid "Enable invisible reCAPTCHA"
898
+ msgstr ""
899
+
900
+ #: ../settings.php:1102
901
+ msgid "(do not enable it unless you get and enter the Site and Secret keys for the invisible version)"
902
+ msgstr ""
903
+
904
+ #: ../settings.php:1137
905
+ msgid "Enable reCAPTCHA for WordPress comment form"
906
+ msgstr ""
907
+
908
+ #: ../settings.php:1142
909
+ msgid "Disable reCAPTCHA for logged in users"
910
+ msgstr ""
911
+
912
+ #: ../settings.php:1146
913
+ msgid "Limit attempts"
914
+ msgstr ""
915
+
916
+ #: ../settings.php:1147
917
+ msgid "Lock out IP address for %s minutes after %s failed attempts within %s minutes"
918
+ msgstr ""
919
+
920
+ #: ../settings.php:244
921
+ msgid "In the Citadel mode nobody is able to log in except IPs from the White IP Access List. Active user sessions will not be affected."
922
+ msgstr ""
923
+
924
+ #: ../dashboard.php:847 ../dashboard.php:1111
925
+ msgid "Event"
926
+ msgstr ""
927
+
928
+ #: ../common.php:283
929
+ msgid "Spam comments denied"
930
+ msgstr ""
931
+
932
+ #: ../common.php:285
933
+ msgid "Malicious IP addresses detected"
934
+ msgstr ""
935
+
936
+ #: ../common.php:286
937
+ msgid "Lockouts occurred"
938
+ msgstr ""
939
+
940
+ #: ../cerber-load.php:1550 ../cerber-load.php:1556 ../cerber-load.php:1581 ..
941
+ #: /cerber-load.php:1588
942
+ msgid "You are not allowed to register."
943
+ msgstr ""
944
+
945
+ #: ../common.php:1336
946
+ msgid "Spam comment denied"
947
+ msgstr ""
948
+
949
+ #: ../common.php:1359
950
+ msgid "Attempt to log in denied"
951
+ msgstr ""
952
+
953
+ #: ../common.php:1360
954
+ msgid "Attempt to register denied"
955
+ msgstr ""
956
+
957
+ #: ../common.php:280
958
+ msgid "Malicious activities mitigated"
959
+ msgstr ""
960
+
961
+ #: ../settings.php:1029
962
+ msgid "Comment form"
963
+ msgstr ""
964
+
965
+ #: ../settings.php:1030
966
+ msgid "Protect comment form with bot detection engine"
967
+ msgstr ""
968
+
969
+ #: ../settings.php:1035
970
+ msgid "Protect registration form with bot detection engine"
971
+ msgstr ""
972
+
973
+ #: ../dashboard.php:4768
974
+ msgid "Diagnostic"
975
+ msgstr ""
976
+
977
+ #: ../dashboard.php:4771
978
+ msgid "License"
979
+ msgstr ""
980
+
981
+ #: ../cerber-load.php:1889
982
+ msgid "Sorry, human verification failed."
983
+ msgstr ""
984
+
985
+ #: ../common.php:1455
986
+ msgid "Bot activity is detected"
987
+ msgstr ""
988
+
989
+ #: ../settings.php:1070
990
+ msgid "Comment processing"
991
+ msgstr ""
992
+
993
+ #: ../settings.php:1074
994
+ msgid "If a spam comment detected"
995
+ msgstr ""
996
+
997
+ #: ../settings.php:1079
998
+ msgid "Trash spam comments"
999
+ msgstr ""
1000
+
1001
+ #: ../settings.php:1081
1002
+ msgid "Move spam comments to trash after"
1003
+ msgstr ""
1004
+
1005
+ #: ../common.php:1337
1006
+ msgid "Spam form submission denied"
1007
+ msgstr ""
1008
+
1009
+ #: ../settings.php:1039
1010
+ msgid "Other forms"
1011
+ msgstr ""
1012
+
1013
+ #: ../settings.php:1040
1014
+ msgid "Protect all forms on the website with bot detection engine"
1015
+ msgstr ""
1016
+
1017
+ #: ../settings.php:1050
1018
+ msgid "Safe mode"
1019
+ msgstr ""
1020
+
1021
+ #: ../settings.php:1051
1022
+ msgid "Use less restrictive policies (allow AJAX)"
1023
+ msgstr ""
1024
+
1025
+ #: ../dashboard.php:979 ../dashboard.php:1759 ../dashboard.php:4034 ../settings.
1026
+ #: php:399 ../settings.php:1055
1027
+ msgid "Logged in users"
1028
+ msgstr ""
1029
+
1030
+ #: ../settings.php:1056
1031
+ msgid "Disable bot detection engine for logged in users"
1032
+ msgstr ""
1033
+
1034
+ #: ../dashboard.php:197 ../dashboard.php:1109
1035
+ msgid "Country"
1036
+ msgstr ""
1037
+
1038
+ #: ../dashboard.php:61
1039
+ msgid "Cerber Security Rules"
1040
+ msgstr ""
1041
+
1042
+ #: ../dashboard.php:61 ../dashboard.php:4695
1043
+ msgid "Security Rules"
1044
+ msgstr ""
1045
+
1046
+ #: ../dashboard.php:1612
1047
+ msgid "Failed login attempts"
1048
+ msgstr ""
1049
+
1050
+ #: ../dashboard.php:1523 ../dashboard.php:1613
1051
+ msgid "Registered"
1052
+ msgstr ""
1053
+
1054
+ #: ../dashboard.php:1683 ../cerber-users.php:52 ../cerber-users.php:1115
1055
+ msgid "You"
1056
+ msgstr ""
1057
+
1058
+ #: ../common.php:284
1059
+ msgid "Spam form submissions denied"
1060
+ msgstr ""
1061
+
1062
+ #: ../cerber-load.php:4231 ../cerber-load.php:5248
1063
+ msgid "Getting Started Guide"
1064
+ msgstr ""
1065
+
1066
+ #: ../dashboard.php:4697
1067
+ msgid "Countries"
1068
+ msgstr ""
1069
+
1070
+ #: ../dashboard.php:3287
1071
+ msgid "Permitted for one country"
1072
+ msgid_plural "Permitted for %d countries"
1073
+ msgstr[0] ""
1074
+
1075
+ #: ../dashboard.php:3298
1076
+ msgid "No rule"
1077
+ msgstr ""
1078
+
1079
+ #: ../dashboard.php:3459
1080
+ msgid "Security rules have been updated"
1081
+ msgstr ""
1082
+
1083
+ #. URI of the plugin
1084
+ #:
1085
+ msgid "https://wpcerber.com"
1086
+ msgstr ""
1087
+
1088
+ #: ../common.php:1338
1089
+ msgid "Form submission denied"
1090
+ msgstr ""
1091
+
1092
+ #: ../common.php:1339
1093
+ msgid "Comment denied"
1094
+ msgstr ""
1095
+
1096
+ #: ../common.php:1365
1097
+ msgid "Request to REST API denied"
1098
+ msgstr ""
1099
+
1100
+ #: ../common.php:1366
1101
+ msgid "XML-RPC request denied"
1102
+ msgstr ""
1103
+
1104
+ #: ../common.php:1387
1105
+ msgid "Bot detected"
1106
+ msgstr ""
1107
+
1108
+ #: ../common.php:1388
1109
+ msgid "Citadel mode is active"
1110
+ msgstr ""
1111
+
1112
+ #: ../common.php:1392
1113
+ msgid "Malicious activity detected"
1114
+ msgstr ""
1115
+
1116
+ #: ../common.php:1393
1117
+ msgid "Blocked by country rule"
1118
+ msgstr ""
1119
+
1120
+ #: ../common.php:1394
1121
+ msgid "Limit reached"
1122
+ msgstr ""
1123
+
1124
+ #: ../common.php:1395
1125
+ msgid "Multiple suspicious activities"
1126
+ msgstr ""
1127
+
1128
+ #: ../common.php:1456
1129
+ msgid "Multiple suspicious activities were detected"
1130
+ msgstr ""
1131
+
1132
+ #: ../settings.php:400
1133
+ msgid "Allow REST API for logged in users"
1134
+ msgstr ""
1135
+
1136
+ #: ../settings.php:414
1137
+ msgid "Specify REST API namespaces to be allowed if REST API is disabled. One string per line."
1138
+ msgstr ""
1139
+
1140
+ #: ../settings.php:551
1141
+ msgid "Registration limit"
1142
+ msgstr ""
1143
+
1144
+ #: ../settings.php:589
1145
+ msgid "Sort users in dashboard"
1146
+ msgstr ""
1147
+
1148
+ #: ../settings.php:590
1149
+ msgid "by date of registration"
1150
+ msgstr ""
1151
+
1152
+ #: ../settings.php:1060
1153
+ msgid "Query whitelist"
1154
+ msgstr ""
1155
+
1156
+ #: ../dashboard.php:3267
1157
+ msgid "Start typing here to find a country"
1158
+ msgstr ""
1159
+
1160
+ #: ../dashboard.php:3382
1161
+ msgid "Click on a country name to add it to the list of selected countries"
1162
+ msgstr ""
1163
+
1164
+ #: ../dashboard.php:3414
1165
+ msgid "Submit forms"
1166
+ msgstr ""
1167
+
1168
+ #: ../dashboard.php:3415
1169
+ msgid "Post comments"
1170
+ msgstr ""
1171
+
1172
+ #: ../dashboard.php:3409
1173
+ msgid "Log in to the website"
1174
+ msgstr ""
1175
+
1176
+ #: ../dashboard.php:3413
1177
+ msgid "Register on the website"
1178
+ msgstr ""
1179
+
1180
+ #: ../dashboard.php:3416
1181
+ msgid "Use XML-RPC"
1182
+ msgstr ""
1183
+
1184
+ #: ../dashboard.php:3417
1185
+ msgid "Use REST API"
1186
+ msgstr ""
1187
+
1188
+ #: ../settings.php:1076
1189
+ msgid "Deny it completely"
1190
+ msgstr ""
1191
+
1192
+ #: ../settings.php:1076
1193
+ msgid "Mark it as spam"
1194
+ msgstr ""
1195
+
1196
+ #: ../dashboard.php:2345
1197
+ msgid "in the last 24 hours"
1198
+ msgstr ""
1199
+
1200
+ #: ../dashboard.php:2683
1201
+ msgid "Main settings"
1202
+ msgstr ""
1203
+
1204
+ #: ../settings.php:687
1205
+ msgid "Weekly reports"
1206
+ msgstr ""
1207
+
1208
+ #: ../admin/cerber-settings.php:537
1209
+ msgid "Sunday"
1210
+ msgstr ""
1211
+
1212
+ #: ../admin/cerber-settings.php:538
1213
+ msgid "Monday"
1214
+ msgstr ""
1215
+
1216
+ #: ../admin/cerber-settings.php:539
1217
+ msgid "Tuesday"
1218
+ msgstr ""
1219
+
1220
+ #: ../admin/cerber-settings.php:540
1221
+ msgid "Wednesday"
1222
+ msgstr ""
1223
+
1224
+ #: ../admin/cerber-settings.php:541
1225
+ msgid "Thursday"
1226
+ msgstr ""
1227
+
1228
+ #: ../admin/cerber-settings.php:542
1229
+ msgid "Friday"
1230
+ msgstr ""
1231
+
1232
+ #: ../admin/cerber-settings.php:543
1233
+ msgid "Saturday"
1234
+ msgstr ""
1235
+
1236
+ #: ../admin/cerber-settings.php:679 ../admin/cerber-settings.php:680
1237
+ msgid "If you use a caching plugin, you have to add your new login URL to the list of pages not to cache."
1238
+ msgstr ""
1239
+
1240
+ #: ../cerber-load.php:4246
1241
+ msgid "Weekly report"
1242
+ msgstr ""
1243
+
1244
+ #: ../cerber-load.php:4249 ../cerber-load.php:4259
1245
+ msgid "To change reporting settings visit"
1246
+ msgstr ""
1247
+
1248
+ #: ../cerber-load.php:4282
1249
+ msgid "Your login page:"
1250
+ msgstr ""
1251
+
1252
+ #: ../cerber-load.php:4286
1253
+ msgid "Your license is valid until"
1254
+ msgstr ""
1255
+
1256
+ #: ../cerber-load.php:4392
1257
+ msgid "Activity details"
1258
+ msgstr ""
1259
+
1260
+ #: ../admin/cerber-settings.php:572
1261
+ msgid "Click to send now"
1262
+ msgstr ""
1263
+
1264
+ #: ../cerber-load.php:818
1265
+ msgid "> > > Translator of WP Cerber? To get the PRO license for free, drop your contacts here: https://wpcerber.com/contact/"
1266
+ msgstr ""
1267
+
1268
+ #: ../dashboard.php:583
1269
+ msgid "Email has been sent to"
1270
+ msgstr ""
1271
+
1272
+ #: ../dashboard.php:586
1273
+ msgid "Unable to send email to"
1274
+ msgstr ""
1275
+
1276
+ #: ../dashboard.php:3290
1277
+ msgid "Not permitted for one country"
1278
+ msgid_plural "Not permitted for %d countries"
1279
+ msgstr[0] ""
1280
+
1281
+ #: ../dashboard.php:3386
1282
+ msgctxt "to is a marker of infinitive, e.g. \"to use it\""
1283
+ msgid "Selected countries are permitted to %s, other countries are not permitted to"
1284
+ msgstr ""
1285
+
1286
+ #: ../dashboard.php:3389
1287
+ msgctxt "to is a marker of infinitive, e.g. \"to use it\""
1288
+ msgid "Selected countries are not permitted to %s, other countries are permitted to"
1289
+ msgstr ""
1290
+
1291
+ #: ../cerber-load.php:4380
1292
+ msgid "Weekly Report"
1293
+ msgstr ""
1294
+
1295
+ #: ../settings.php:199
1296
+ msgid "Use 404 template from the active theme"
1297
+ msgstr ""
1298
+
1299
+ #: ../settings.php:200
1300
+ msgid "Display simple 404 page"
1301
+ msgstr ""
1302
+
1303
+ #: ../settings.php:1061
1304
+ msgid "Enter a part of query string or query path to exclude a request from inspection by the engine. One item per line."
1305
+ msgstr ""
1306
+
1307
+ #: ../settings.php:691
1308
+ msgid "Enable reporting"
1309
+ msgstr ""
1310
+
1311
+ #: ../cerber-load.php:4310
1312
+ msgid "Your last sign-in was %s from %s"
1313
+ msgstr ""
1314
+
1315
+ #: ../dashboard.php:322
1316
+ msgid "Optional comment for this entry"
1317
+ msgstr ""
1318
+
1319
+ #: ../dashboard.php:344
1320
+ msgid "You cannot add your IP address or network"
1321
+ msgstr ""
1322
+
1323
+ #: ../settings.php:567 ../settings.php:575
1324
+ msgid "To specify a REGEX pattern wrap a pattern in two forward slashes."
1325
+ msgstr ""
1326
+
1327
+ #: ../dashboard.php:56
1328
+ msgid "Cerber Traffic Inspector"
1329
+ msgstr ""
1330
+
1331
+ #: ../dashboard.php:56 ../dashboard.php:1766 ../dashboard.php:4649
1332
+ msgid "Traffic Inspector"
1333
+ msgstr ""
1334
+
1335
+ #: ../dashboard.php:1805 ../cerber-users.php:1149
1336
+ msgid "Traffic"
1337
+ msgstr ""
1338
+
1339
+ #: ../dashboard.php:4002
1340
+ msgid "Request"
1341
+ msgstr ""
1342
+
1343
+ #: ../dashboard.php:4004 ../cerber-users.php:983
1344
+ msgid "Host Info"
1345
+ msgstr ""
1346
+
1347
+ #: ../dashboard.php:4005
1348
+ msgid "User Agent"
1349
+ msgstr ""
1350
+
1351
+ #: ../dashboard.php:4030
1352
+ msgid "All requests"
1353
+ msgstr ""
1354
+
1355
+ #: ../dashboard.php:980 ../dashboard.php:4035
1356
+ msgid "Not logged in visitors"
1357
+ msgstr ""
1358
+
1359
+ #: ../dashboard.php:4038
1360
+ msgid "Form submissions"
1361
+ msgstr ""
1362
+
1363
+ #: ../dashboard.php:4040
1364
+ msgid "Page Not Found"
1365
+ msgstr ""
1366
+
1367
+ #: ../dashboard.php:4049
1368
+ msgid "Longer than"
1369
+ msgstr ""
1370
+
1371
+ #: ../dashboard.php:4072
1372
+ msgid "Refresh"
1373
+ msgstr ""
1374
+
1375
+ #: ../common.php:210
1376
+ msgid "Check for requests"
1377
+ msgstr ""
1378
+
1379
+ #: ../common.php:1834
1380
+ msgid "Not specified"
1381
+ msgstr ""
1382
+
1383
+ #: ../settings.php:766
1384
+ msgid "Logging mode"
1385
+ msgstr ""
1386
+
1387
+ #: ../settings.php:769
1388
+ msgid "Logging disabled"
1389
+ msgstr ""
1390
+
1391
+ #: ../settings.php:770
1392
+ msgid "Smart"
1393
+ msgstr ""
1394
+
1395
+ #: ../settings.php:771
1396
+ msgid "All traffic"
1397
+ msgstr ""
1398
+
1399
+ #: ../settings.php:775
1400
+ msgid "Ignore crawlers"
1401
+ msgstr ""
1402
+
1403
+ #: ../settings.php:783
1404
+ msgid "Mask these form fields"
1405
+ msgstr ""
1406
+
1407
+ #: ../settings.php:808
1408
+ msgid "milliseconds"
1409
+ msgstr ""
1410
+
1411
+ #: ../settings.php:717
1412
+ msgid "Enable traffic inspection"
1413
+ msgstr ""
1414
+
1415
+ #: ../settings.php:779
1416
+ msgid "Save request fields"
1417
+ msgstr ""
1418
+
1419
+ #: ../settings.php:807
1420
+ msgid "Page generation time threshold"
1421
+ msgstr ""
1422
+
1423
+ #: ../dashboard.php:4022
1424
+ msgid "No requests have been logged."
1425
+ msgstr ""
1426
+
1427
+ #: ../dashboard.php:1765
1428
+ msgid "enabled"
1429
+ msgstr ""
1430
+
1431
+ #: ../dashboard.php:1770
1432
+ msgid "no connection"
1433
+ msgstr ""
1434
+
1435
+ #: ../dashboard.php:1555
1436
+ msgid "Last seen"
1437
+ msgstr ""
1438
+
1439
+ #: ../common.php:1361 ../common.php:1457
1440
+ msgid "Probing for vulnerable PHP code"
1441
+ msgstr ""
1442
+
1443
+ #: ../cerber-load.php:4024
1444
+ msgid "We're sorry, you are not allowed to proceed"
1445
+ msgstr ""
1446
+
1447
+ #: ../settings.php:730
1448
+ msgid "Request whitelist"
1449
+ msgstr ""
1450
+
1451
+ #: ../settings.php:734
1452
+ msgid "Enter a request URI to exclude the request from inspection. One item per line."
1453
+ msgstr ""
1454
+
1455
+ #: ../settings.php:790
1456
+ msgid "Save request headers"
1457
+ msgstr ""
1458
+
1459
+ #: ../settings.php:795
1460
+ msgid "Save $_SERVER"
1461
+ msgstr ""
1462
+
1463
+ #: ../settings.php:799
1464
+ msgid "Save request cookies"
1465
+ msgstr ""
1466
+
1467
+ #: ../settings.php:358
1468
+ msgid "Protect admin scripts"
1469
+ msgstr ""
1470
+
1471
+ #: ../settings.php:359
1472
+ msgid "Block unauthorized access to load-scripts.php and load-styles.php"
1473
+ msgstr ""
1474
+
1475
+ #: ../common.php:2757
1476
+ msgid "Unable to create the directory"
1477
+ msgstr ""
1478
+
1479
+ #: ../common.php:2762
1480
+ msgid "Destination folder access denied"
1481
+ msgstr ""
1482
+
1483
+ #: ../common.php:2765
1484
+ msgid "File not found"
1485
+ msgstr ""
1486
+
1487
+ #: ../common.php:2768
1488
+ msgid "Unable to copy the file"
1489
+ msgstr ""
1490
+
1491
+ #: ../common.php:2774
1492
+ msgid "Unable to delete the file"
1493
+ msgstr ""
1494
+
1495
+ #: ../settings.php:136
1496
+ msgid "Plugin initialization"
1497
+ msgstr ""
1498
+
1499
+ #: ../settings.php:139
1500
+ msgid "Load security engine"
1501
+ msgstr ""
1502
+
1503
+ #: ../settings.php:142
1504
+ msgid "Legacy mode"
1505
+ msgstr ""
1506
+
1507
+ #: ../settings.php:143
1508
+ msgid "Standard mode"
1509
+ msgstr ""
1510
+
1511
+ #: ../admin/cerber-settings.php:650
1512
+ msgid "Plugin initialization mode has not been changed"
1513
+ msgstr ""
1514
+
1515
+ #. Description of the plugin
1516
+ #:
1517
+ msgid "This is a standard boot module for WP Cerber Security & Antispam plugin. It was installed when you set the plugin initialization mode to Standard. Know more: <a href=\"https://wpcerber.com\">wpcerber.com</a>."
1518
+ msgstr ""
1519
+
1520
+ #: ../common.php:1363
1521
+ msgid "File upload denied"
1522
+ msgstr ""
1523
+
1524
+ #: ../settings.php:734
1525
+ msgid "To specify a REGEX pattern, enclose a whole line in two braces."
1526
+ msgstr ""
1527
+
1528
+ #: ../settings.php:129
1529
+ msgid "Be careful about enabling these options."
1530
+ msgstr ""
1531
+
1532
+ #: ../settings.php:129
1533
+ msgid "If you forget your Custom login URL, you will be unable to log in."
1534
+ msgstr ""
1535
+
1536
+ #: ../dashboard.php:67 ../dashboard.php:4710
1537
+ msgid "Site Integrity"
1538
+ msgstr ""
1539
+
1540
+ #: ../dashboard.php:1790 ../dashboard.php:1792 ../cerber-users.php:20 ../cerber-
1541
+ #: users.php:446 ../settings.php:720 ../settings.php:748 ../settings.php:857 ..
1542
+ #: /settings.php:866 ../settings.php:1209 ../cerber-scanner.php:1493
1543
+ msgid "Disabled"
1544
+ msgstr ""
1545
+
1546
+ #: ../dashboard.php:1791 ../cerber-scanner.php:938
1547
+ msgid "Quick Scan"
1548
+ msgstr ""
1549
+
1550
+ #: ../dashboard.php:1793 ../cerber-scanner.php:938
1551
+ msgid "Full Scan"
1552
+ msgstr ""
1553
+
1554
+ #. Name of the plugin
1555
+ #:
1556
+ msgid "WP Cerber Security, Antispam & Malware Scan"
1557
+ msgstr ""
1558
+
1559
+ #: ../common.php:1396
1560
+ msgid "Denied"
1561
+ msgstr ""
1562
+
1563
+ #: ../settings.php:165 ../settings.php:526 ../settings.php:726
1564
+ msgid "Use White IP Access List"
1565
+ msgstr ""
1566
+
1567
+ #: ../settings.php:186
1568
+ msgid "Disable dashboard redirection"
1569
+ msgstr ""
1570
+
1571
+ #: ../settings.php:187
1572
+ msgid "Disable automatic redirection to the login page when /wp-admin/ is requested by an unauthorized request"
1573
+ msgstr ""
1574
+
1575
+ #: ../settings.php:828
1576
+ msgid "Scanner settings"
1577
+ msgstr ""
1578
+
1579
+ #: ../settings.php:833
1580
+ msgid "Custom signatures"
1581
+ msgstr ""
1582
+
1583
+ #: ../settings.php:837
1584
+ msgid "Specify custom PHP code signatures. One item per line. To specify a REGEX pattern, enclose a whole line in two braces."
1585
+ msgstr ""
1586
+
1587
+ #: ../settings.php:840
1588
+ msgid "Unwanted file extensions"
1589
+ msgstr ""
1590
+
1591
+ #: ../settings.php:844
1592
+ msgid "Specify file extensions to search for. Full scan only. Use comma to separate items."
1593
+ msgstr ""
1594
+
1595
+ #: ../settings.php:847
1596
+ msgid "Directories to exclude"
1597
+ msgstr ""
1598
+
1599
+ #: ../settings.php:876
1600
+ msgid "Scan temporary directory"
1601
+ msgstr ""
1602
+
1603
+ #: ../settings.php:880
1604
+ msgid "Scan session directory"
1605
+ msgstr ""
1606
+
1607
+ #: ../settings.php:889
1608
+ msgid "Delete quarantined files after"
1609
+ msgstr ""
1610
+
1611
+ #: ../settings.php:903
1612
+ msgid "Launch Quick Scan"
1613
+ msgstr ""
1614
+
1615
+ #: ../cerber-scanner.php:1494
1616
+ msgid "Every hour"
1617
+ msgstr ""
1618
+
1619
+ #: ../cerber-scanner.php:1495
1620
+ msgid "Every 3 hours"
1621
+ msgstr ""
1622
+
1623
+ #: ../cerber-scanner.php:1496
1624
+ msgid "Every 6 hours"
1625
+ msgstr ""
1626
+
1627
+ #: ../settings.php:908
1628
+ msgid "Launch Full Scan"
1629
+ msgstr ""
1630
+
1631
+ #: ../settings.php:923 ../settings.php:969
1632
+ msgid "Low severity"
1633
+ msgstr ""
1634
+
1635
+ #: ../settings.php:924 ../settings.php:970
1636
+ msgid "Medium severity"
1637
+ msgstr ""
1638
+
1639
+ #: ../settings.php:925 ../settings.php:971
1640
+ msgid "High severity"
1641
+ msgstr ""
1642
+
1643
+ #: ../settings.php:920
1644
+ msgid "Report an issue if any of the following is true"
1645
+ msgstr ""
1646
+
1647
+ #: ../settings.php:929
1648
+ msgid "Send email report"
1649
+ msgstr ""
1650
+
1651
+ #: ../settings.php:932
1652
+ msgid "After every scan"
1653
+ msgstr ""
1654
+
1655
+ #: ../settings.php:933
1656
+ msgid "If any changes in scan results occurred"
1657
+ msgstr ""
1658
+
1659
+ #: ../settings.php:938
1660
+ msgid "Include file sizes"
1661
+ msgstr ""
1662
+
1663
+ #: ../settings.php:942
1664
+ msgid "Include scan errors"
1665
+ msgstr ""
1666
+
1667
+ #: ../dashboard.php:4712
1668
+ msgid "Security Scanner"
1669
+ msgstr ""
1670
+
1671
+ #: ../dashboard.php:4714
1672
+ msgid "Scheduling"
1673
+ msgstr ""
1674
+
1675
+ #: ../admin/cerber-admin.php:164
1676
+ msgid "Currently a scheduled scan in progress. Please wait until it is finished."
1677
+ msgstr ""
1678
+
1679
+ #: ../admin/cerber-admin.php:168
1680
+ msgid "Previous scan started %s has not been completed. Continue scanning?"
1681
+ msgstr ""
1682
+
1683
+ #: ../admin/cerber-admin.php:177
1684
+ msgid "It seems this website has never been scanned. To start scanning click the button below."
1685
+ msgstr ""
1686
+
1687
+ #: ../admin/cerber-admin.php:180
1688
+ msgid "Start Quick Scan"
1689
+ msgstr ""
1690
+
1691
+ #: ../admin/cerber-admin.php:181
1692
+ msgid "Start Full Scan"
1693
+ msgstr ""
1694
+
1695
+ #: ../admin/cerber-admin.php:182
1696
+ msgid "Stop Scanning"
1697
+ msgstr ""
1698
+
1699
+ #: ../admin/cerber-admin.php:183
1700
+ msgid "Continue Scanning"
1701
+ msgstr ""
1702
+
1703
+ #: ../admin/cerber-admin.php:219
1704
+ msgid "Delete"
1705
+ msgstr ""
1706
+
1707
+ #: ../cerber-scanner.php:1439
1708
+ msgid "Verified"
1709
+ msgstr ""
1710
+
1711
+ #: ../cerber-scanner.php:1446
1712
+ msgid "Integrity data not found"
1713
+ msgstr ""
1714
+
1715
+ #: ../cerber-scanner.php:1447
1716
+ msgid "Unable to check the integrity of the plugin due to a network error"
1717
+ msgstr ""
1718
+
1719
+ #: ../cerber-scanner.php:1448
1720
+ msgid "Unable to check the integrity of WordPress files due to a network error"
1721
+ msgstr ""
1722
+
1723
+ #: ../cerber-scanner.php:1449
1724
+ msgid "Unable to check the integrity of the theme due to a network error"
1725
+ msgstr ""
1726
+
1727
+ #: ../cerber-scanner.php:1452
1728
+ msgid "Local file doesn't exist"
1729
+ msgstr ""
1730
+
1731
+ #: ../cerber-scanner.php:1454
1732
+ msgid "Unable to process file"
1733
+ msgstr ""
1734
+
1735
+ #: ../cerber-scanner.php:1455 ../cerber-scanner.php:4537
1736
+ msgid "Unable to open file"
1737
+ msgstr ""
1738
+
1739
+ #: ../admin/cerber-admin.php:79 ../cerber-scanner.php:1457
1740
+ msgid "Checksum mismatch"
1741
+ msgstr ""
1742
+
1743
+ #: ../cerber-scanner.php:1460
1744
+ msgid "Suspicious code found"
1745
+ msgstr ""
1746
+
1747
+ #: ../cerber-scanner.php:1462
1748
+ msgid "Unattended suspicious file"
1749
+ msgstr ""
1750
+
1751
+ #: ../cerber-scanner.php:1463
1752
+ msgid "Executable code found"
1753
+ msgstr ""
1754
+
1755
+ #: ../cerber-scanner.php:1467
1756
+ msgid "Unwanted file extension"
1757
+ msgstr ""
1758
+
1759
+ #: ../cerber-scanner.php:1469
1760
+ msgid "Content has been modified"
1761
+ msgstr ""
1762
+
1763
+ #: ../cerber-scanner.php:1470
1764
+ msgid "New file"
1765
+ msgstr ""
1766
+
1767
+ #: ../cerber-scanner.php:2526
1768
+ msgid "Custom signature found"
1769
+ msgstr ""
1770
+
1771
+ #: ../cerber-scanner.php:3758
1772
+ msgid "Scanning folders for files"
1773
+ msgstr ""
1774
+
1775
+ #: ../cerber-scanner.php:3762
1776
+ msgid "Parsing the list of files"
1777
+ msgstr ""
1778
+
1779
+ #: ../cerber-scanner.php:3763
1780
+ msgid "Checking for new and modified files"
1781
+ msgstr ""
1782
+
1783
+ #: ../cerber-scanner.php:3764
1784
+ msgid "Verifying the integrity of WordPress"
1785
+ msgstr ""
1786
+
1787
+ #: ../cerber-scanner.php:3766
1788
+ msgid "Verifying the integrity of the plugins"
1789
+ msgstr ""
1790
+
1791
+ #: ../cerber-scanner.php:3768
1792
+ msgid "Verifying the integrity of the themes"
1793
+ msgstr ""
1794
+
1795
+ #: ../cerber-scanner.php:3769
1796
+ msgid "Searching for malicious code"
1797
+ msgstr ""
1798
+
1799
+ #: ../cerber-scanner.php:3770
1800
+ msgid "Finalizing the scan"
1801
+ msgstr ""
1802
+
1803
+ #: ../admin/cerber-admin.php:96
1804
+ msgid "Files to scan"
1805
+ msgstr ""
1806
+
1807
+ #: ../admin/cerber-admin.php:103
1808
+ msgid "Critical issues"
1809
+ msgstr ""
1810
+
1811
+ #: ../admin/cerber-admin.php:103 ../cerber-scanner.php:4710
1812
+ msgid "Issues total"
1813
+ msgstr ""
1814
+
1815
+ #: ../admin/cerber-admin.php:344
1816
+ msgid "File access error. Possibly scan results are outdated. Please run Quick or Full Scan."
1817
+ msgstr ""
1818
+
1819
+ #: ../cerber-scanner.php:4833
1820
+ msgid "To view full report visit"
1821
+ msgstr ""
1822
+
1823
+ #: ../cerber-load.php:4256
1824
+ msgid "Scanner Report"
1825
+ msgstr ""
1826
+
1827
+ #: ../settings.php:854
1828
+ msgid "Monitor new files"
1829
+ msgstr ""
1830
+
1831
+ #: ../settings.php:863
1832
+ msgid "Monitor modified files"
1833
+ msgstr ""
1834
+
1835
+ #: ../settings.php:934
1836
+ msgid "If new issues found"
1837
+ msgstr ""
1838
+
1839
+ #: ../admin/cerber-settings.php:948
1840
+ msgid "The schedule has been updated"
1841
+ msgstr ""
1842
+
1843
+ #: ../cerber-scanner.php:1466 ../cerber-scanner.php:2706
1844
+ msgid "Suspicious directives found"
1845
+ msgstr ""
1846
+
1847
+ #: ../cerber-scanner.php:2704
1848
+ msgid "Suspicious code instruction found"
1849
+ msgstr ""
1850
+
1851
+ #: ../cerber-scanner.php:2705
1852
+ msgid "Suspicious code signatures found"
1853
+ msgstr ""
1854
+
1855
+ #: ../cerber-scanner.php:2708
1856
+ msgid "To solve this issue you have to reinstall %s or update it to the latest version."
1857
+ msgstr ""
1858
+
1859
+ #: ../cerber-scanner.php:2709
1860
+ msgid "Please upload a reference ZIP archive"
1861
+ msgstr ""
1862
+
1863
+ #: ../cerber-scanner.php:2710
1864
+ msgid "Resolve issue"
1865
+ msgstr ""
1866
+
1867
+ #: ../admin/cerber-admin.php:243
1868
+ msgid "We have not found any integrity data to verify"
1869
+ msgstr ""
1870
+
1871
+ #: ../admin/cerber-admin.php:245
1872
+ msgid "You have to upload a ZIP archive from which you've installed it. This enables the security scanner to verify the integrity of the code and detect malware."
1873
+ msgstr ""
1874
+
1875
+ #: ../cerber-scanner.php:4666
1876
+ msgid "Full Scan Report"
1877
+ msgstr ""
1878
+
1879
+ #: ../cerber-scanner.php:4666
1880
+ msgid "Quick Scan Report"
1881
+ msgstr ""
1882
+
1883
+ #: ../cerber-scanner.php:4679
1884
+ msgid "Files scanned"
1885
+ msgstr ""
1886
+
1887
+ #: ../dashboard.php:304 ../dashboard.php:1383 ../dashboard.php:1435 ../dashboard.
1888
+ #: php:1575
1889
+ msgid "Check for activities"
1890
+ msgstr ""
1891
+
1892
+ #: ../dashboard.php:1535
1893
+ msgid "Activated"
1894
+ msgstr ""
1895
+
1896
+ #: ../common.php:1373
1897
+ msgid "Malicious request denied"
1898
+ msgstr ""
1899
+
1900
+ #: ../common.php:1376
1901
+ msgid "User activated"
1902
+ msgstr ""
1903
+
1904
+ #: ../common.php:1398
1905
+ msgid "Suspicious number of fields"
1906
+ msgstr ""
1907
+
1908
+ #: ../common.php:1399
1909
+ msgid "Suspicious number of nested values"
1910
+ msgstr ""
1911
+
1912
+ #: ../common.php:1400 ../common.php:1458
1913
+ msgid "Malicious code detected"
1914
+ msgstr ""
1915
+
1916
+ #: ../common.php:1459
1917
+ msgid "Attempt to upload a file with malicious code"
1918
+ msgstr ""
1919
+
1920
+ #: ../common.php:1708
1921
+ msgid "Bytes"
1922
+ msgstr ""
1923
+
1924
+ #: ../cerber-scanner.php:1445
1925
+ msgid "Vulnerability found"
1926
+ msgstr ""
1927
+
1928
+ #: ../cerber-scanner.php:1450
1929
+ msgid "Unable to check the integrity due to a DB error"
1930
+ msgstr ""
1931
+
1932
+ #: ../cerber-scanner.php:3759
1933
+ msgid "Scanning the upload folder for files"
1934
+ msgstr ""
1935
+
1936
+ #: ../cerber-scanner.php:3760
1937
+ msgid "Scanning the temp folder for files"
1938
+ msgstr ""
1939
+
1940
+ #: ../cerber-scanner.php:3761
1941
+ msgid "Scanning the session folder for files"
1942
+ msgstr ""
1943
+
1944
+ #: ../settings.php:898
1945
+ msgid "Automated recurring scan schedule"
1946
+ msgstr ""
1947
+
1948
+ #: ../settings.php:915
1949
+ msgid "Scan results reporting"
1950
+ msgstr ""
1951
+
1952
+ #: ../dashboard.php:975 ../dashboard.php:4032
1953
+ msgid "Suspicious activity"
1954
+ msgstr ""
1955
+
1956
+ #: ../dashboard.php:4033
1957
+ msgid "Errors"
1958
+ msgstr ""
1959
+
1960
+ #. Description of the plugin
1961
+ #:
1962
+ msgid "Defends WordPress against hacker attacks, spam, trojans, and viruses. Malware scanner and integrity checker. Hardening WordPress with a set of comprehensive security algorithms. Spam protection with a sophisticated bot detection engine and reCAPTCHA. Tracks user and intruder activity with powerful email, mobile and desktop notifications."
1963
+ msgstr ""
1964
+
1965
+ #: ../cerber-load.php:349
1966
+ msgid "You have exceeded the number of allowed login attempts. Please try again in %d minutes."
1967
+ msgstr ""
1968
+
1969
+ #: ../common.php:1606
1970
+ msgctxt "preposition of a period of time like: in 6 hours"
1971
+ msgid "in %s"
1972
+ msgstr ""
1973
+
1974
+ #: ../admin/cerber-settings.php:553
1975
+ msgctxt "preposition of time like: at 11:00"
1976
+ msgid "at"
1977
+ msgstr ""
1978
+
1979
+ #: ../dashboard.php:4717
1980
+ msgid "Quarantine"
1981
+ msgstr ""
1982
+
1983
+ #: ../admin/cerber-admin.php:43
1984
+ msgid "Started"
1985
+ msgstr ""
1986
+
1987
+ #: ../admin/cerber-admin.php:47
1988
+ msgid "Finished"
1989
+ msgstr ""
1990
+
1991
+ #: ../admin/cerber-admin.php:55
1992
+ msgid "Performance"
1993
+ msgstr ""
1994
+
1995
+ #: ../admin/cerber-admin.php:67 ../nexus/cerber-slave-list.php:337
1996
+ msgid "Vulnerabilities"
1997
+ msgstr ""
1998
+
1999
+ #: ../admin/cerber-admin.php:71
2000
+ msgid "New files"
2001
+ msgstr ""
2002
+
2003
+ #: ../admin/cerber-admin.php:75
2004
+ msgid "Changed files"
2005
+ msgstr ""
2006
+
2007
+ #: ../admin/cerber-admin.php:83
2008
+ msgid "Unwanted extensions"
2009
+ msgstr ""
2010
+
2011
+ #: ../admin/cerber-admin.php:87
2012
+ msgid "Unattended files"
2013
+ msgstr ""
2014
+
2015
+ #: ../admin/cerber-admin.php:96 ../admin/cerber-admin.php:878
2016
+ msgid "Scanned"
2017
+ msgstr ""
2018
+
2019
+ #: ../admin/cerber-admin.php:767
2020
+ msgid "There are no files in the quarantine at the moment."
2021
+ msgstr ""
2022
+
2023
+ #: ../admin/cerber-admin.php:860
2024
+ msgid "Restore"
2025
+ msgstr ""
2026
+
2027
+ #: ../admin/cerber-admin.php:857
2028
+ msgid "Delete permanently"
2029
+ msgstr ""
2030
+
2031
+ #: ../admin/cerber-admin.php:880
2032
+ msgid "Automatic deletion"
2033
+ msgstr ""
2034
+
2035
+ #: ../admin/cerber-admin.php:881 ../admin/cerber-admin.php:1036 ../admin/cerber-
2036
+ #: admin.php:1481
2037
+ msgid "Size"
2038
+ msgstr ""
2039
+
2040
+ #: ../admin/cerber-admin.php:882 ../admin/cerber-admin.php:1037
2041
+ msgid "File"
2042
+ msgstr ""
2043
+
2044
+ #: ../admin/cerber-admin.php:955
2045
+ msgid "The file has been deleted permanently."
2046
+ msgstr ""
2047
+
2048
+ #: ../admin/cerber-admin.php:970
2049
+ msgid "The file has been restored to its original location."
2050
+ msgstr ""
2051
+
2052
+ #: ../dashboard.php:1806
2053
+ msgid "Integrity"
2054
+ msgstr ""
2055
+
2056
+ #: ../common.php:1362
2057
+ msgid "Attempt to upload malicious file denied"
2058
+ msgstr ""
2059
+
2060
+ #: ../cerber-news.php:126
2061
+ msgid "Awesome!"
2062
+ msgstr ""
2063
+
2064
+ #: ../settings.php:957
2065
+ msgid "Automatic cleanup of malware and suspicious files"
2066
+ msgstr ""
2067
+
2068
+ #: ../settings.php:966
2069
+ msgid "Files in the uploads folder"
2070
+ msgstr ""
2071
+
2072
+ #: ../settings.php:975
2073
+ msgid "Files with unwanted extensions"
2074
+ msgstr ""
2075
+
2076
+ #: ../settings.php:994
2077
+ msgid "Exclusions"
2078
+ msgstr ""
2079
+
2080
+ #: ../settings.php:998
2081
+ msgid "Files in the temporary directory"
2082
+ msgstr ""
2083
+
2084
+ #: ../settings.php:1002
2085
+ msgid "Files in the sessions directory"
2086
+ msgstr ""
2087
+
2088
+ #: ../settings.php:1006
2089
+ msgid "Files in these directories"
2090
+ msgstr ""
2091
+
2092
+ #: ../settings.php:1010
2093
+ msgid "Use absolute paths. One item per line."
2094
+ msgstr ""
2095
+
2096
+ #: ../settings.php:1013
2097
+ msgid "Files with these extensions"
2098
+ msgstr ""
2099
+
2100
+ #: ../settings.php:1017
2101
+ msgid "Use comma to separate items."
2102
+ msgstr ""
2103
+
2104
+ #: ../dashboard.php:4715
2105
+ msgid "Cleaning up"
2106
+ msgstr ""
2107
+
2108
+ #: ../cerber-scanner.php:1461
2109
+ msgid "Malicious code found"
2110
+ msgstr ""
2111
+
2112
+ #: ../cerber-scanner.php:2701
2113
+ msgid "This file contains executable code and may contain obfuscated malware. If this file is a part of a theme or a plugin, it must be located in the theme or the plugin folder. No exception, no excuses."
2114
+ msgstr ""
2115
+
2116
+ #: ../cerber-scanner.php:2702
2117
+ msgid "The scanner recognizes this file as \"ownerless\" or \"not bundled\" because it does not belong to any known part of the website and should not be here."
2118
+ msgstr ""
2119
+
2120
+ #: ../cerber-scanner.php:2703
2121
+ msgid "It may remain after upgrading to a newer version of %s. It also may be a piece of obfuscated malware. In a rare case it might be a part of a custom-made (bespoke) plugin or theme."
2122
+ msgstr ""
2123
+
2124
+ #: ../cerber-scanner.php:2707
2125
+ msgid "The contents of the file have been changed and do not match what exists in the official WordPress repository or a reference file you have uploaded earlier. The file may have been altered by malware, infected by a virus or has been tampered with."
2126
+ msgstr ""
2127
+
2128
+ #: ../cerber-scanner.php:4764
2129
+ msgid "Deleted"
2130
+ msgstr ""
2131
+
2132
+ #: ../cerber-scanner.php:4817
2133
+ msgid "Automatically moved to quarantine"
2134
+ msgstr ""
2135
+
2136
+ #: ../common.php:1401
2137
+ msgid "Suspicious SQL code detected"
2138
+ msgstr ""
2139
+
2140
+ #: ../dashboard.php:1787
2141
+ msgctxt "Example: Last malware scan: 23 Jan 2018"
2142
+ msgid "Last malware scan"
2143
+ msgstr ""
2144
+
2145
+ #: ../dashboard.php:4651
2146
+ msgid "Live Traffic"
2147
+ msgstr ""
2148
+
2149
+ #: ../settings.php:333
2150
+ msgid "Use English for admin interface"
2151
+ msgstr ""
2152
+
2153
+ #: ../settings.php:363
2154
+ msgid "Disable PHP in uploads"
2155
+ msgstr ""
2156
+
2157
+ #: ../settings.php:368
2158
+ msgid "Disable PHP error displaying"
2159
+ msgstr ""
2160
+
2161
+ #: ../dashboard.php:4716
2162
+ msgid "Ignore List"
2163
+ msgstr ""
2164
+
2165
+ #: ../admin/cerber-admin.php:222
2166
+ msgid "Ignore"
2167
+ msgstr ""
2168
+
2169
+ #: ../admin/cerber-admin.php:994
2170
+ msgid "Apply"
2171
+ msgstr ""
2172
+
2173
+ #: ../admin/cerber-admin.php:1034
2174
+ msgid "Added"
2175
+ msgstr ""
2176
+
2177
+ #: ../admin/cerber-admin.php:995 ../admin/cerber-admin.php:1022
2178
+ msgid "Remove from the list"
2179
+ msgstr ""
2180
+
2181
+ #: ../admin/cerber-admin.php:996
2182
+ msgid "User Insights"
2183
+ msgstr ""
2184
+
2185
+ #: ../admin/cerber-admin.php:997
2186
+ msgid "Traffic Insights"
2187
+ msgstr ""
2188
+
2189
+ #: ../admin/cerber-admin.php:998
2190
+ msgid "Activity Insights"
2191
+ msgstr ""
2192
+
2193
+ #: ../dashboard.php:2800
2194
+ msgid "Are you sure you want to delete selected files?"
2195
+ msgstr ""
2196
+
2197
+ #: ../dashboard.php:2801
2198
+ msgid "These files have been moved to the quarantine"
2199
+ msgstr ""
2200
+
2201
+ #: ../dashboard.php:2804
2202
+ msgid "Do you want to add selected files to the ignore list?"
2203
+ msgstr ""
2204
+
2205
+ #: ../dashboard.php:2805
2206
+ msgid "These files have been added to the ignore list"
2207
+ msgstr ""
2208
+
2209
+ #: ../dashboard.php:2807
2210
+ msgid "Some errors occurred"
2211
+ msgstr ""
2212
+
2213
+ #: ../dashboard.php:2808
2214
+ msgid "All files have been processed"
2215
+ msgstr ""
2216
+
2217
+ #: ../dashboard.php:5060
2218
+ msgid "These features are available in a professional version of the plugin."
2219
+ msgstr ""
2220
+
2221
+ #: ../dashboard.php:5061
2222
+ msgid "Know more about all advantages at"
2223
+ msgstr ""
2224
+
2225
+ #: ../common.php:1402
2226
+ msgid "Suspicious JavaScript code detected"
2227
+ msgstr ""
2228
+
2229
+ #: ../admin/cerber-settings.php:951
2230
+ msgid "Unable to update the schedule"
2231
+ msgstr ""
2232
+
2233
+ #: ../admin/cerber-admin.php:893
2234
+ msgid "All scans"
2235
+ msgstr ""
2236
+
2237
+ #: ../admin/cerber-admin.php:1000
2238
+ msgid "The list is empty."
2239
+ msgstr ""
2240
+
2241
+ #: ../admin/cerber-admin.php:839
2242
+ msgid "No files match the specified filter."
2243
+ msgstr ""
2244
+
2245
+ #: ../admin/cerber-admin.php:839
2246
+ msgid "Click here to see the full list of files"
2247
+ msgstr ""
2248
+
2249
+ #: ../dashboard.php:848
2250
+ msgid "Additional Details"
2251
+ msgstr ""
2252
+
2253
+ #: ../dashboard.php:3566
2254
+ msgid "Page generation time"
2255
+ msgstr ""
2256
+
2257
+ #: ../dashboard.php:5096
2258
+ msgid "Log In"
2259
+ msgstr ""
2260
+
2261
+ #: ../dashboard.php:5097
2262
+ msgid "Log Out"
2263
+ msgstr ""
2264
+
2265
+ #: ../dashboard.php:5098
2266
+ msgid "Register"
2267
+ msgstr ""
2268
+
2269
+ #: ../dashboard.php:5101
2270
+ msgid "WooCommerce Log In"
2271
+ msgstr ""
2272
+
2273
+ #: ../dashboard.php:5102
2274
+ msgid "WooCommerce Log Out"
2275
+ msgstr ""
2276
+
2277
+ #: ../dashboard.php:5141 ../dashboard.php:5142
2278
+ msgid "Add to menu"
2279
+ msgstr ""
2280
+
2281
+ #: ../common.php:1390
2282
+ msgid "IP address is locked out"
2283
+ msgstr ""
2284
+
2285
+ #: ../common.php:1462
2286
+ msgid "Multiple suspicious requests"
2287
+ msgstr ""
2288
+
2289
+ #: ../settings.php:712
2290
+ msgid "Traffic Inspection"
2291
+ msgstr ""
2292
+
2293
+ #: ../settings.php:721 ../settings.php:749
2294
+ msgid "Maximum compatibility"
2295
+ msgstr ""
2296
+
2297
+ #: ../settings.php:722 ../settings.php:750
2298
+ msgid "Maximum security"
2299
+ msgstr ""
2300
+
2301
+ #: ../settings.php:740
2302
+ msgid "Erroneous Request Shielding"
2303
+ msgstr ""
2304
+
2305
+ #: ../settings.php:745
2306
+ msgid "Enable error shielding"
2307
+ msgstr ""
2308
+
2309
+ #: ../settings.php:803
2310
+ msgid "Save software errors"
2311
+ msgstr ""
2312
+
2313
+ #: ../cerber-scanner.php:3757
2314
+ msgid "Preparing for the scan"
2315
+ msgstr ""
2316
+
2317
+ #: ../common.php:1403
2318
+ msgid "Blocked by administrator"
2319
+ msgstr ""
2320
+
2321
+ #: ../cerber-load.php:353
2322
+ msgid "You are not allowed to log in"
2323
+ msgstr ""
2324
+
2325
+ #: ../cerber-users.php:39
2326
+ msgid "Block User"
2327
+ msgstr ""
2328
+
2329
+ #: ../cerber-users.php:43 ../cerber-users.php:49
2330
+ msgid "User is not permitted to log into the website"
2331
+ msgstr ""
2332
+
2333
+ #: ../cerber-users.php:68 ../settings.php:533
2334
+ msgid "User Message"
2335
+ msgstr ""
2336
+
2337
+ #: ../cerber-users.php:70
2338
+ msgid "An optional message for this user"
2339
+ msgstr ""
2340
+
2341
+ #: ../cerber-users.php:181
2342
+ msgid "Blocked Users"
2343
+ msgstr ""
2344
+
2345
+ #: ../settings.php:354
2346
+ msgid "Block access to user pages like /?author=n"
2347
+ msgstr ""
2348
+
2349
+ #: ../settings.php:384
2350
+ msgid "Access to WordPress REST API"
2351
+ msgstr ""
2352
+
2353
+ #: ../settings.php:395
2354
+ msgid "Block access to WordPress REST API except any of the following"
2355
+ msgstr ""
2356
+
2357
+ #: ../settings.php:405
2358
+ msgid "Allow REST API for these roles"
2359
+ msgstr ""
2360
+
2361
+ #: ../settings.php:410
2362
+ msgid "Allow these namespaces"
2363
+ msgstr ""
2364
+
2365
+ #: ../settings.php:754
2366
+ msgid "Ignore logged in users"
2367
+ msgstr ""
2368
+
2369
+ #: ../settings.php:132
2370
+ msgid "These restrictions do not apply to IP addresses in the White IP Access List"
2371
+ msgstr ""
2372
+
2373
+ #: ../admin/cerber-settings.php:513
2374
+ msgid "Select one or more roles"
2375
+ msgstr ""
2376
+
2377
+ #: ../dashboard.php:1150
2378
+ msgid "Filter by registered user"
2379
+ msgstr ""
2380
+
2381
+ #: ../settings.php:519
2382
+ msgid "Authorized users only"
2383
+ msgstr ""
2384
+
2385
+ #: ../settings.php:520
2386
+ msgid "Only registered and logged in website users have access to the website"
2387
+ msgstr ""
2388
+
2389
+ #: ../settings.php:537 ../settings.php:1454
2390
+ msgid "Only registered and logged in users are allowed to view this website"
2391
+ msgstr ""
2392
+
2393
+ #: ../settings.php:542
2394
+ msgid "Redirect to URL"
2395
+ msgstr ""
2396
+
2397
+ #: ../dashboard.php:4770
2398
+ msgid "Changelog"
2399
+ msgstr ""
2400
+
2401
+ #: ../dashboard.php:641
2402
+ msgid "Default settings have been loaded"
2403
+ msgstr ""
2404
+
2405
+ #: ../dashboard.php:3274
2406
+ msgid "Save all rules"
2407
+ msgstr ""
2408
+
2409
+ #: ../dashboard.php:3145 ../admin/cerber-settings.php:624
2410
+ msgid "Save Changes"
2411
+ msgstr ""
2412
+
2413
+ #: ../common.php:1379
2414
+ msgid "Invalid master credentials"
2415
+ msgstr ""
2416
+
2417
+ #: ../settings.php:1154
2418
+ msgid "Master settings"
2419
+ msgstr ""
2420
+
2421
+ #: ../settings.php:1162
2422
+ msgid "Return to the website list"
2423
+ msgstr ""
2424
+
2425
+ #: ../settings.php:1166
2426
+ msgid "Show \"Switched to\" notification"
2427
+ msgstr ""
2428
+
2429
+ #: ../settings.php:1170
2430
+ msgid "Add @ site to the page title"
2431
+ msgstr ""
2432
+
2433
+ #: ../settings.php:884 ../settings.php:1187 ../settings.php:1215
2434
+ msgid "Enable diagnostic logging"
2435
+ msgstr ""
2436
+
2437
+ #: ../settings.php:1198
2438
+ msgid "Limit access by IP address"
2439
+ msgstr ""
2440
+
2441
+ #: ../settings.php:1204
2442
+ msgid "Access to this website"
2443
+ msgstr ""
2444
+
2445
+ #: ../settings.php:1207
2446
+ msgid "Full access mode"
2447
+ msgstr ""
2448
+
2449
+ #: ../settings.php:1208
2450
+ msgid "Read-only mode"
2451
+ msgstr ""
2452
+
2453
+ #: ../settings.php:1229
2454
+ msgid "The full access mode requires the PRO version of WP Cerber"
2455
+ msgstr ""
2456
+
2457
+ #: ../nexus/cerber-slave-list.php:47
2458
+ msgid "WordPress"
2459
+ msgstr ""
2460
+
2461
+ #: ../nexus/cerber-slave-list.php:51
2462
+ msgid "Malware Scan"
2463
+ msgstr ""
2464
+
2465
+ #: ../nexus/cerber-slave-list.php:56 ../nexus/cerber-nexus-master.php:140
2466
+ msgid "Notes"
2467
+ msgstr ""
2468
+
2469
+ #: ../nexus/cerber-slave-list.php:160
2470
+ msgid "Add a slave website"
2471
+ msgstr ""
2472
+
2473
+ #: ../cerber-users.php:1070 ../nexus/cerber-slave-list.php:244
2474
+ msgid "Search results for:"
2475
+ msgstr ""
2476
+
2477
+ #: ../nexus/cerber-slave-list.php:279
2478
+ msgid "Edit"
2479
+ msgstr ""
2480
+
2481
+ #: ../nexus/cerber-slave-list.php:285
2482
+ msgid "Switch to"
2483
+ msgstr ""
2484
+
2485
+ #: ../nexus/cerber-slave-list.php:413
2486
+ msgid "No websites configured."
2487
+ msgstr ""
2488
+
2489
+ #: ../nexus/cerber-slave-list.php:413
2490
+ msgid "Add a new one"
2491
+ msgstr ""
2492
+
2493
+ #: ../nexus/cerber-nexus-master.php:103
2494
+ msgid "Website Properties"
2495
+ msgstr ""
2496
+
2497
+ #: ../nexus/cerber-nexus-master.php:113
2498
+ msgid "Website URL"
2499
+ msgstr ""
2500
+
2501
+ #: ../nexus/cerber-nexus-master.php:118
2502
+ msgid "Display as"
2503
+ msgstr ""
2504
+
2505
+ #: ../nexus/cerber-nexus-master.php:148
2506
+ msgid "Website Owner"
2507
+ msgstr ""
2508
+
2509
+ #: ../nexus/cerber-nexus-master.php:152
2510
+ msgid "First Name"
2511
+ msgstr ""
2512
+
2513
+ #: ../nexus/cerber-nexus-master.php:156
2514
+ msgid "Last Name"
2515
+ msgstr ""
2516
+
2517
+ #: ../nexus/cerber-nexus-master.php:160
2518
+ msgid "Email"
2519
+ msgstr ""
2520
+
2521
+ #: ../nexus/cerber-nexus-master.php:164
2522
+ msgid "Phone"
2523
+ msgstr ""
2524
+
2525
+ #: ../nexus/cerber-nexus-master.php:172
2526
+ msgid "Address"
2527
+ msgstr ""
2528
+
2529
+ #: ../nexus/cerber-nexus-master.php:281
2530
+ msgid "Security access token is invalid"
2531
+ msgstr ""
2532
+
2533
+ #: ../nexus/cerber-nexus-master.php:311
2534
+ msgid "The website you are trying to add is already in the list"
2535
+ msgstr ""
2536
+
2537
+ #: ../nexus/cerber-nexus-master.php:320
2538
+ msgid "The website has been added successfully"
2539
+ msgstr ""
2540
+
2541
+ #: ../nexus/cerber-nexus-master.php:321
2542
+ msgid "Click to edit"
2543
+ msgstr ""
2544
+
2545
+ #: ../nexus/cerber-nexus-master.php:322
2546
+ msgid "Switch to the Dashboard"
2547
+ msgstr ""
2548
+
2549
+ #: ../nexus/cerber-nexus-master.php:325
2550
+ msgid "Keep in mind: You have added the website that does not support SSL encryption. This may lead to data leakage."
2551
+ msgstr ""
2552
+
2553
+ #: ../nexus/cerber-nexus-master.php:444
2554
+ msgid "Website has been deleted"
2555
+ msgid_plural "%s websites have been deleted"
2556
+ msgstr[0] ""
2557
+
2558
+ #: ../nexus/cerber-nexus-master.php:1020
2559
+ msgid "You have switched to %s"
2560
+ msgstr ""
2561
+
2562
+ #: ../nexus/cerber-nexus-master.php:1030
2563
+ msgid "You have switched back to the master website"
2564
+ msgstr ""
2565
+
2566
+ #: ../nexus/cerber-nexus-master.php:1246
2567
+ msgid "You are here:"
2568
+ msgstr ""
2569
+
2570
+ #: ../nexus/cerber-nexus-master.php:1249 ../nexus/cerber-nexus.php:92 ..
2571
+ #: /nexus/cerber-nexus.php:102
2572
+ msgid "My Websites"
2573
+ msgstr ""
2574
+
2575
+ #: ../nexus/cerber-nexus-master.php:1264
2576
+ msgid "Visit Site"
2577
+ msgstr ""
2578
+
2579
+ #: ../cerber-load.php:5263 ../nexus/cerber-nexus.php:64
2580
+ msgid "Enable slave mode"
2581
+ msgstr ""
2582
+
2583
+ #: ../nexus/cerber-nexus.php:65
2584
+ msgid "This website can be managed from a master website"
2585
+ msgstr ""
2586
+
2587
+ #: ../nexus/cerber-nexus.php:68
2588
+ msgid "Enable master mode"
2589
+ msgstr ""
2590
+
2591
+ #: ../nexus/cerber-nexus.php:69
2592
+ msgid "Configure this website as a master to manage other website"
2593
+ msgstr ""
2594
+
2595
+ #: ../nexus/cerber-nexus.php:74
2596
+ msgid "To proceed, please select the mode for this website"
2597
+ msgstr ""
2598
+
2599
+ #: ../nexus/cerber-nexus.php:98 ../nexus/cerber-nexus.php:102
2600
+ msgid "Slave Settings"
2601
+ msgstr ""
2602
+
2603
+ #: ../nexus/cerber-nexus.php:144
2604
+ msgid "Secret Access Token"
2605
+ msgstr ""
2606
+
2607
+ #: ../nexus/cerber-nexus.php:146
2608
+ msgid "The token is unique to this website. Keep it secret. Install the token on a master website to grant access to this website."
2609
+ msgstr ""
2610
+
2611
+ #: ../nexus/cerber-nexus.php:148
2612
+ msgid "Are you sure? This permanently invalidates the token."
2613
+ msgstr ""
2614
+
2615
+ #: ../nexus/cerber-nexus.php:149
2616
+ msgid "Disable slave mode"
2617
+ msgstr ""
2618
+
2619
+ #: ../nexus/cerber-nexus.php:264
2620
+ msgid "This website is set as master."
2621
+ msgstr ""
2622
+
2623
+ #: ../nexus/cerber-nexus.php:265
2624
+ msgid "Add slave websites by using access tokens."
2625
+ msgstr ""
2626
+
2627
+ #: ../nexus/cerber-nexus.php:268
2628
+ msgid "This website is set as slave."
2629
+ msgstr ""
2630
+
2631
+ #: ../nexus/cerber-nexus.php:269
2632
+ msgid "Install the access token on the master website."
2633
+ msgstr ""
2634
+
2635
+ #. translators: Time difference between two dates, in seconds (sec=second). 1: Number of seconds
2636
+ #: ../common.php:1599
2637
+ msgid "%s sec"
2638
+ msgid_plural "%s secs"
2639
+ msgstr[0] ""
2640
+
2641
+ #: ../settings.php:695
2642
+ msgid "Send reports on"
2643
+ msgstr ""
2644
+
2645
+ #: ../nexus/cerber-slave-list.php:50
2646
+ msgid "Updates"
2647
+ msgstr ""
2648
+
2649
+ #: ../nexus/cerber-slave-list.php:54 ../nexus/cerber-nexus-master.php:126
2650
+ msgid "Group"
2651
+ msgstr ""
2652
+
2653
+ #: ../nexus/cerber-slave-list.php:117
2654
+ msgid "Upgrade WP Cerber"
2655
+ msgstr ""
2656
+
2657
+ #: ../nexus/cerber-slave-list.php:118
2658
+ msgid "Upgrade all active plugins"
2659
+ msgstr ""
2660
+
2661
+ #: ../nexus/cerber-slave-list.php:119
2662
+ msgid "Delete website"
2663
+ msgstr ""
2664
+
2665
+ #: ../nexus/cerber-slave-list.php:134
2666
+ msgid "All groups"
2667
+ msgstr ""
2668
+
2669
+ #: ../nexus/cerber-nexus-master.php:1330
2670
+ msgid "Are you sure you want to delete selected websites?"
2671
+ msgstr ""
2672
+
2673
+ #: ../cerber-users.php:213
2674
+ msgid "Block"
2675
+ msgstr ""
2676
+
2677
+ #: ../nexus/cerber-nexus-master.php:95
2678
+ msgid "Select an existing group or enter a new one to add it"
2679
+ msgstr ""
2680
+
2681
+ #: ../nexus/cerber-nexus-master.php:168
2682
+ msgid "Company"
2683
+ msgstr ""
2684
+
2685
+ #: ../nexus/cerber-nexus-master.php:688
2686
+ msgid "Invalid response from the slave website"
2687
+ msgstr ""
2688
+
2689
+ #: ../common.php:1356 ../common.php:1452
2690
+ msgid "Attempt to log in with non-existing username"
2691
+ msgstr ""
2692
+
2693
+ #: ../cerber-load.php:4406
2694
+ msgid "Attempts to log in with non-existing usernames"
2695
+ msgstr ""
2696
+
2697
+ #: ../settings.php:1174
2698
+ msgid "Use master language"
2699
+ msgstr ""
2700
+
2701
+ #: ../settings.php:181
2702
+ msgid "Non-existing users"
2703
+ msgstr ""
2704
+
2705
+ #: ../settings.php:182
2706
+ msgid "Immediately block IP when attempting to log in with a non-existing username"
2707
+ msgstr ""
2708
+
2709
+ #: ../nexus/cerber-slave-list.php:55
2710
+ msgid "Owner"
2711
+ msgstr ""
2712
+
2713
+ #: ../nexus/cerber-slave-list.php:413
2714
+ msgid "Disable master mode"
2715
+ msgstr ""
2716
+
2717
+ #: ../nexus/cerber-nexus.php:149
2718
+ msgid "To revoke the token and disable remote management, click here:"
2719
+ msgstr ""
2720
+
2721
+ #: ../settings.php:364
2722
+ msgid "Block execution of PHP scripts in the WordPress media folder"
2723
+ msgstr ""
2724
+
2725
+ #: ../nexus/cerber-nexus-master.php:1396 ../nexus/cerber-nexus-master.php:1404
2726
+ msgid "Active plugins and updates on"
2727
+ msgstr ""
2728
+
2729
+ #: ../nexus/cerber-nexus-master.php:1374
2730
+ msgid "A newer version is available"
2731
+ msgstr ""
2732
+
2733
+ #: ../dashboard.php:969
2734
+ msgid "New users"
2735
+ msgstr ""
2736
+
2737
+ #: ../dashboard.php:982
2738
+ msgid "My activity"
2739
+ msgstr ""
2740
+
2741
+ #: ../dashboard.php:2568
2742
+ msgid "Create Alert"
2743
+ msgstr ""
2744
+
2745
+ #: ../dashboard.php:2572
2746
+ msgid "Delete Alert"
2747
+ msgstr ""
2748
+
2749
+ #: ../dashboard.php:2605
2750
+ msgid "The alert has been created"
2751
+ msgstr ""
2752
+
2753
+ #: ../dashboard.php:2609
2754
+ msgid "The alert has been deleted"
2755
+ msgstr ""
2756
+
2757
+ #: ../dashboard.php:4059
2758
+ msgid "Advanced Search"
2759
+ msgstr ""
2760
+
2761
+ #. Author of the plugin
2762
+ #:
2763
+ msgid "Cerber Tech Inc."
2764
+ msgstr ""
2765
+
2766
+ #: ../cerber-load.php:4972
2767
+ msgid "To delete the alert, click here"
2768
+ msgstr ""
2769
+
2770
+ #: ../settings.php:214
2771
+ msgid "Custom login URL may contain Latin alphanumeric characters, dashes and underscores only"
2772
+ msgstr ""
2773
+
2774
+ #: ../settings.php:226
2775
+ msgid "Site-specific settings"
2776
+ msgstr ""
2777
+
2778
+ #: ../settings.php:234
2779
+ msgid "Prefix for plugin cookies"
2780
+ msgstr ""
2781
+
2782
+ #: ../settings.php:235
2783
+ msgid "Prefix may contain only Latin alphanumeric characters and underscores"
2784
+ msgstr ""
2785
+
2786
+ #: ../settings.php:649
2787
+ msgid "Lockout notifications"
2788
+ msgstr ""
2789
+
2790
+ #: ../settings.php:677
2791
+ msgid "Pushbullet access token"
2792
+ msgstr ""
2793
+
2794
+ #: ../settings.php:680
2795
+ msgid "Pushbullet device"
2796
+ msgstr ""
2797
+
2798
+ #: ../settings.php:962
2799
+ msgid "Delete unattended files"
2800
+ msgstr ""
2801
+
2802
+ #: ../settings.php:981
2803
+ msgid "Automatic recovery of modified and infected files"
2804
+ msgstr ""
2805
+
2806
+ #: ../settings.php:984
2807
+ msgid "Recover WordPress files"
2808
+ msgstr ""
2809
+
2810
+ #: ../settings.php:988
2811
+ msgid "Recover plugins files"
2812
+ msgstr ""
2813
+
2814
+ #: ../cerber-scanner.php:1473
2815
+ msgid "File deleted"
2816
+ msgstr ""
2817
+
2818
+ #: ../cerber-scanner.php:1474
2819
+ msgid "File recovered"
2820
+ msgstr ""
2821
+
2822
+ #: ../cerber-scanner.php:3765
2823
+ msgid "Recovering WordPress files"
2824
+ msgstr ""
2825
+
2826
+ #: ../cerber-scanner.php:3767
2827
+ msgid "Recovering plugins files"
2828
+ msgstr ""
2829
+
2830
+ #: ../cerber-scanner.php:4768
2831
+ msgid "Recovered"
2832
+ msgstr ""
2833
+
2834
+ #: ../cerber-scanner.php:4818
2835
+ msgid "Automatically deleted"
2836
+ msgstr ""
2837
+
2838
+ #: ../cerber-scanner.php:4821
2839
+ msgid "Automatically recovered"
2840
+ msgstr ""
2841
+
2842
+ #: ../dashboard.php:64
2843
+ msgid "Cerber User Security"
2844
+ msgstr ""
2845
+
2846
+ #: ../dashboard.php:64 ../dashboard.php:4675
2847
+ msgid "User Policies"
2848
+ msgstr ""
2849
+
2850
+ #: ../dashboard.php:1809
2851
+ msgid "A new version is available"
2852
+ msgstr ""
2853
+
2854
+ #: ../dashboard.php:4677
2855
+ msgid "Role-based"
2856
+ msgstr ""
2857
+
2858
+ #: ../dashboard.php:4678
2859
+ msgid "Global"
2860
+ msgstr ""
2861
+
2862
+ #: ../common.php:1404
2863
+ msgid "Site policy enforcement"
2864
+ msgstr ""
2865
+
2866
+ #: ../common.php:1405
2867
+ msgid "2FA code verified"
2868
+ msgstr ""
2869
+
2870
+ #: ../common.php:1406
2871
+ msgid "Initiated by the user"
2872
+ msgstr ""
2873
+
2874
+ #: ../common.php:1814
2875
+ msgid "A new version of %s is available. Please install it."
2876
+ msgstr ""
2877
+
2878
+ #: ../cerber-load.php:1575
2879
+ msgid "Email address is not permitted."
2880
+ msgstr ""
2881
+
2882
+ #: ../cerber-load.php:1575
2883
+ msgid "Please choose another one."
2884
+ msgstr ""
2885
+
2886
+ #: ../cerber-users.php:10 ../cerber-users.php:439
2887
+ msgid "Two-Factor Authentication"
2888
+ msgstr ""
2889
+
2890
+ #: ../cerber-users.php:18
2891
+ msgid "Determined by user role policies"
2892
+ msgstr ""
2893
+
2894
+ #: ../cerber-users.php:19 ../cerber-users.php:447
2895
+ msgid "Always enabled"
2896
+ msgstr ""
2897
+
2898
+ #: ../cerber-users.php:86
2899
+ msgid "2FA PIN Code"
2900
+ msgstr ""
2901
+
2902
+ #: ../cerber-users.php:288
2903
+ msgid "Save All Changes"
2904
+ msgstr ""
2905
+
2906
+ #: ../cerber-users.php:401
2907
+ msgid "Block access to WordPress Dashboard"
2908
+ msgstr ""
2909
+
2910
+ #: ../cerber-users.php:406
2911
+ msgid "Hide Toolbar when viewing site"
2912
+ msgstr ""
2913
+
2914
+ #: ../cerber-users.php:412
2915
+ msgid "Redirection rules"
2916
+ msgstr ""
2917
+
2918
+ #: ../cerber-users.php:416
2919
+ msgid "Redirect user after login"
2920
+ msgstr ""
2921
+
2922
+ #: ../cerber-users.php:421
2923
+ msgid "Redirect user after logout"
2924
+ msgstr ""
2925
+
2926
+ #: ../cerber-users.php:432 ../settings.php:582
2927
+ msgid "User session expiration time"
2928
+ msgstr ""
2929
+
2930
+ #: ../cerber-users.php:443
2931
+ msgid "Two-factor authentication"
2932
+ msgstr ""
2933
+
2934
+ #: ../cerber-users.php:448
2935
+ msgid "Advanced mode"
2936
+ msgstr ""
2937
+
2938
+ #: ../cerber-users.php:452
2939
+ msgid "Enforce two-factor authentication if any of the following conditions is true"
2940
+ msgstr ""
2941
+
2942
+ #: ../cerber-users.php:458
2943
+ msgid "Login from a different country"
2944
+ msgstr ""
2945
+
2946
+ #: ../cerber-users.php:464
2947
+ msgid "Login from a different network Class C"
2948
+ msgstr ""
2949
+
2950
+ #: ../cerber-users.php:470
2951
+ msgid "Login from a different IP address"
2952
+ msgstr ""
2953
+
2954
+ #: ../cerber-users.php:476
2955
+ msgid "Using a different browser or device"
2956
+ msgstr ""
2957
+
2958
+ #: ../cerber-users.php:482
2959
+ msgid "Enforce two-factor authentication with fixed intervals"
2960
+ msgstr ""
2961
+
2962
+ #: ../cerber-users.php:488
2963
+ msgid "Regular time intervals (days)"
2964
+ msgstr ""
2965
+
2966
+ #: ../cerber-users.php:490
2967
+ msgid "days interval"
2968
+ msgstr ""
2969
+
2970
+ #: ../cerber-users.php:495
2971
+ msgid "Fixed number of logins"
2972
+ msgstr ""
2973
+
2974
+ #: ../cerber-users.php:497
2975
+ msgid "number of logins"
2976
+ msgstr ""
2977
+
2978
+ #: ../cerber-users.php:541
2979
+ msgid "Policies have been updated"
2980
+ msgstr ""
2981
+
2982
+ #: ../settings.php:557
2983
+ msgid "Restrict email addresses"
2984
+ msgstr ""
2985
+
2986
+ #: ../settings.php:560
2987
+ msgid "No restrictions"
2988
+ msgstr ""
2989
+
2990
+ #: ../settings.php:561
2991
+ msgid "Deny all email addresses that match the following"
2992
+ msgstr ""
2993
+
2994
+ #: ../settings.php:562
2995
+ msgid "Permit only email addresses that match the following"
2996
+ msgstr ""
2997
+
2998
+ #: ../settings.php:567
2999
+ msgid "Specify email addresses, wildcards or REGEX patterns. Use comma to separate items."
3000
+ msgstr ""
3001
+
3002
+ #: ../settings.php:995
3003
+ msgid "These files will never be deleted during automatic cleanup."
3004
+ msgstr ""
3005
+
3006
+ #: ../cerber-2fa.php:352
3007
+ msgid "This verification PIN code is expired. We have just sent a new one to your email."
3008
+ msgstr ""
3009
+
3010
+ #: ../cerber-2fa.php:355
3011
+ msgid "You have entered an incorrect verification PIN code"
3012
+ msgstr ""
3013
+
3014
+ #: ../cerber-2fa.php:402 ../cerber-2fa.php:486
3015
+ msgid "Please verify that it’s you"
3016
+ msgstr ""
3017
+
3018
+ #: ../cerber-2fa.php:489
3019
+ msgid "Please use the following verification PIN code to confirm your identity"
3020
+ msgstr ""
3021
+
3022
+ #: ../cerber-2fa.php:514
3023
+ msgid "Here are the details of the sign-in attempt"
3024
+ msgstr ""
3025
+
3026
+ #: ../cerber-2fa.php:563
3027
+ msgid "expires"
3028
+ msgstr ""
3029
+
3030
+ #: ../cerber-2fa.php:580
3031
+ msgid "only digits are allowed"
3032
+ msgstr ""
3033
+
3034
+ #: ../cerber-2fa.php:583
3035
+ msgid "We've sent a verification PIN code to your email"
3036
+ msgstr ""
3037
+
3038
+ #: ../cerber-2fa.php:584
3039
+ msgid "Enter the code from the email in the field below."
3040
+ msgstr ""
3041
+
3042
+ #: ../cerber-2fa.php:586
3043
+ msgid "Try again"
3044
+ msgstr ""
3045
+
3046
+ #: ../cerber-2fa.php:587
3047
+ msgid "Cancel"
3048
+ msgstr ""
3049
+
3050
+ #: ../cerber-2fa.php:588
3051
+ msgid "Did not receive an email?"
3052
+ msgstr ""
3053
+
3054
+ #: ../cerber-2fa.php:588
3055
+ msgid "or"
3056
+ msgstr ""
3057
+
3058
+ #: ../cerber-2fa.php:594
3059
+ msgid "Verify it's you"
3060
+ msgstr ""
3061
+
3062
+ #: ../cerber-2fa.php:599
3063
+ msgid "Verify"
3064
+ msgstr ""
3065
+
3066
+ #: ../cerber-users.php:101
3067
+ msgid "Two-Factor Authentication Email"
3068
+ msgstr ""
3069
+
3070
+ #: ../dashboard.php:3217
3071
+ msgid "Role-based rules are configured"
3072
+ msgstr ""
3073
+
3074
+ #: ../dashboard.php:3411
3075
+ msgid "All Users"
3076
+ msgstr ""
3077
+
3078
+ #: ../cerber-users.php:58
3079
+ msgctxt "e.g. blocked by John at 11:00"
3080
+ msgid "blocked by %s at %s"
3081
+ msgstr ""
3082
+
3083
+ #: ../cerber-2fa.php:489
3084
+ msgid "The code is valid for %s minutes."
3085
+ msgstr ""
3086
+
3087
+ #: ../dashboard.php:351
3088
+ msgid "IP address %s has been added to White IP Access List"
3089
+ msgstr ""
3090
+
3091
+ #: ../dashboard.php:348
3092
+ msgid "IP address %s has been added to Black IP Access List"
3093
+ msgstr ""
3094
+
3095
+ #: ../dashboard.php:195 ../dashboard.php:845 ../dashboard.php:1107 ../dashboard.
3096
+ #: php:4003 ../cerber-users.php:982
3097
+ msgid "IP Address"
3098
+ msgstr ""
3099
+
3100
+ #: ../dashboard.php:852 ../dashboard.php:1113
3101
+ msgid "Username"
3102
+ msgstr ""
3103
+
3104
+ #: ../dashboard.php:3299
3105
+ msgid "Any country is permitted"
3106
+ msgstr ""
3107
+
3108
+ #: ../dashboard.php:4585
3109
+ msgid "Sessions"
3110
+ msgstr ""
3111
+
3112
+ #: ../cerber-users.php:615
3113
+ msgid "Session has been terminated"
3114
+ msgid_plural "%s sessions have been terminated"
3115
+ msgstr[0] ""
3116
+
3117
+ #: ../cerber-users.php:980
3118
+ msgid "Created"
3119
+ msgstr ""
3120
+
3121
+ #: ../cerber-users.php:1001
3122
+ msgid "Terminate session"
3123
+ msgstr ""
3124
+
3125
+ #: ../cerber-users.php:1002
3126
+ msgid "Block user"
3127
+ msgstr ""
3128
+
3129
+ #: ../cerber-users.php:1112
3130
+ msgid "Profile"
3131
+ msgstr ""
3132
+
3133
+ #: ../cerber-users.php:1125
3134
+ msgid "All Logins"
3135
+ msgstr ""
3136
+
3137
+ #: ../cerber-users.php:1126
3138
+ msgid "User Activity"
3139
+ msgstr ""
3140
+
3141
+ #: ../cerber-users.php:1172
3142
+ msgid "Terminate"
3143
+ msgstr ""
3144
+
3145
+ #: ../dashboard.php:1759
3146
+ msgid "user"
3147
+ msgid_plural "users"
3148
+ msgstr[0] ""
3149
+
3150
+ #: ../settings.php:390
3151
+ msgid "Block access to users' data via REST API"
3152
+ msgstr ""
3153
+
3154
+ #: ../cerber-scanner.php:1472
3155
+ msgid "Unable to delete"
3156
+ msgstr ""
3157
+
3158
+ #: ../dashboard.php:60
3159
+ msgid "Cerber Data Shield Policies"
3160
+ msgstr ""
3161
+
3162
+ #: ../dashboard.php:60
3163
+ msgid "Data Shield"
3164
+ msgstr ""
3165
+
3166
+ #: ../dashboard.php:4665
3167
+ msgid "Data Shield Policies"
3168
+ msgstr ""
3169
+
3170
+ #: ../dashboard.php:4667
3171
+ msgid "Accounts & Roles"
3172
+ msgstr ""
3173
+
3174
+ #: ../dashboard.php:4668
3175
+ msgid "Site Settings"
3176
+ msgstr ""
3177
+
3178
+ #: ../common.php:1367
3179
+ msgid "User creation denied"
3180
+ msgstr ""
3181
+
3182
+ #: ../common.php:1369
3183
+ msgid "Role update denied"
3184
+ msgstr ""
3185
+
3186
+ #: ../common.php:1370
3187
+ msgid "Setting update denied"
3188
+ msgstr ""
3189
+
3190
+ #: ../common.php:1411
3191
+ msgid "Permission denied"
3192
+ msgstr ""
3193
+
3194
+ #: ../common.php:1413
3195
+ msgid "Invalid user"
3196
+ msgstr ""
3197
+
3198
+ #: ../common.php:1414
3199
+ msgid "Incorrect password"
3200
+ msgstr ""
3201
+
3202
+ #: ../settings.php:421
3203
+ msgid "Protect user accounts"
3204
+ msgstr ""
3205
+
3206
+ #: ../settings.php:426
3207
+ msgid "Restrict user account creation and user management with the following policies"
3208
+ msgstr ""
3209
+
3210
+ #: ../settings.php:432
3211
+ msgid "User registrations are limited to these roles"
3212
+ msgstr ""
3213
+
3214
+ #: ../settings.php:438
3215
+ msgid "Users with these roles are permitted to create new accounts"
3216
+ msgstr ""
3217
+
3218
+ #: ../settings.php:443
3219
+ msgid "Users with these roles are permitted to change sensitive user data"
3220
+ msgstr ""
3221
+
3222
+ #: ../settings.php:448 ../settings.php:476 ../settings.php:505
3223
+ msgid "Do not apply these policies to the IP addresses in the White IP Access List"
3224
+ msgstr ""
3225
+
3226
+ #: ../settings.php:456
3227
+ msgid "Protect user roles"
3228
+ msgstr ""
3229
+
3230
+ #: ../settings.php:460
3231
+ msgid "Restrict roles and capabilities management with the following policies"
3232
+ msgstr ""
3233
+
3234
+ #: ../settings.php:466
3235
+ msgid "Users with these roles are permitted to add new roles"
3236
+ msgstr ""
3237
+
3238
+ #: ../settings.php:471
3239
+ msgid "Users with these roles are permitted to change role capabilities"
3240
+ msgstr ""
3241
+
3242
+ #: ../settings.php:484
3243
+ msgid "Protect site settings"
3244
+ msgstr ""
3245
+
3246
+ #: ../settings.php:488
3247
+ msgid "Restrict updating site settings with the following policies"
3248
+ msgstr ""
3249
+
3250
+ #: ../settings.php:494
3251
+ msgid "Users with these roles are permitted to change protected settings"
3252
+ msgstr ""
3253
+
3254
+ #: ../settings.php:499
3255
+ msgid "Protected settings"
3256
+ msgstr ""
3257
+
3258
+ #: ../settings.php:527
3259
+ msgid "Do not apply these policy to the IP addresses in the White IP Access List"
3260
+ msgstr ""
3261
+
3262
+ #: ../cerber-ds.php:787
3263
+ msgid "Administration Email Address"
3264
+ msgstr ""
3265
+
3266
+ #: ../cerber-ds.php:788
3267
+ msgid "New User Default Role"
3268
+ msgstr ""
3269
+
3270
+ #: ../cerber-ds.php:789
3271
+ msgid "Site Address (URL)"
3272
+ msgstr ""
3273
+
3274
+ #: ../cerber-ds.php:790
3275
+ msgid "WordPress Address (URL)"
3276
+ msgstr ""
3277
+
3278
+ #: ../cerber-ds.php:791
3279
+ msgid "Anyone can register"
3280
+ msgstr ""
3281
+
3282
+ #: ../cerber-ds.php:792
3283
+ msgid "Active Plugins"
3284
+ msgstr ""
3285
+
3286
+ #: ../cerber-ds.php:793
3287
+ msgid "Active Theme"
3288
+ msgstr ""
3289
+
3290
+ #: ../nexus/cerber-slave-list.php:52
3291
+ msgid "Server"
3292
+ msgstr ""
3293
+
3294
+ #: ../nexus/cerber-slave-list.php:53
3295
+ msgid "Server Country"
3296
+ msgstr ""
3297
+
3298
+ #: ../nexus/cerber-slave-list.php:144
3299
+ msgid "All servers"
3300
+ msgstr ""
3301
+
3302
+ #: ../nexus/cerber-slave-list.php:151
3303
+ msgid "All countries"
3304
+ msgstr ""
3305
+
3306
+ #: ../nexus/cerber-nexus-master.php:66
3307
+ msgid "Show homepage in the Website column"
3308
+ msgstr ""
3309
+
3310
+ #: ../nexus/cerber-nexus-master.php:68
3311
+ msgid "Hide server IP address"
3312
+ msgstr ""
3313
+
3314
+ #: ../dashboard.php:320
3315
+ msgid "IP address, range, wildcard, or CIDR"
3316
+ msgstr ""
3317
+
3318
+ #: ../dashboard.php:321
3319
+ msgid "Add Entry"
3320
+ msgstr ""
3321
+
3322
+ #: ../dashboard.php:4925
3323
+ msgid "The IP address you are trying to add is already in the list"
3324
+ msgstr ""
3325
+
3326
+ #: ../common.php:1332
3327
+ msgid "IP subnet blocked"
3328
+ msgstr ""
3329
+
3330
+ #: ../common.php:1368
3331
+ msgid "User row update denied"
3332
+ msgstr ""
3333
+
3334
+ #: ../common.php:1371
3335
+ msgid "User metadata update denied"
3336
+ msgstr ""
3337
+
3338
+ #: ../settings.php:1297
3339
+ msgid "Any activity"
3340
+ msgstr ""
3341
+
3342
+ #: ../cerber-tools.php:228
3343
+ msgid "A database error occurred while importing access list entries"
3344
+ msgstr ""
3345
+
3346
+ #: ../settings.php:247
3347
+ msgid "Enable authentication log monitoring"
3348
+ msgstr ""
3349
+
3350
+ #: ../settings.php:279 ../settings.php:813
3351
+ msgid "Keep log records of not logged in visitors for"
3352
+ msgstr ""
3353
+
3354
+ #: ../settings.php:285 ../settings.php:819
3355
+ msgid "Keep log records of logged in users for"
3356
+ msgstr ""
3357
+
3358
+ #: ../cerber-users.php:75
3359
+ msgid "Admin Note"
3360
+ msgstr ""
3361
+
3362
+ #: ../cerber-users.php:951
3363
+ msgid "WP Cerber Personal Data Eraser"
3364
+ msgstr ""
3365
+
3366
+ #: ../settings.php:598
3367
+ msgid "Personal Data"
3368
+ msgstr ""
3369
+
3370
+ #: ../settings.php:604
3371
+ msgid "Enable data erase"
3372
+ msgstr ""
3373
+
3374
+ #: ../settings.php:611
3375
+ msgid "Terminate user sessions"
3376
+ msgstr ""
3377
+
3378
+ #: ../settings.php:612
3379
+ msgid "Delete user sessions data when user data is erased"
3380
+ msgstr ""
3381
+
3382
+ #: ../settings.php:618
3383
+ msgid "Enable data export"
3384
+ msgstr ""
3385
+
3386
+ #: ../settings.php:625
3387
+ msgid "Include activity log events"
3388
+ msgstr ""
3389
+
3390
+ #: ../settings.php:631
3391
+ msgid "Include traffic log entries"
3392
+ msgstr ""
3393
+
3394
+ #: ../settings.php:634
3395
+ msgid "Request URL"
3396
+ msgstr ""
3397
+
3398
+ #: ../settings.php:635
3399
+ msgid "Form fields data"
3400
+ msgstr ""
3401
+
3402
+ #: ../settings.php:636
3403
+ msgid "Cookies"
3404
+ msgstr ""
3405
+
3406
+ #: ../dashboard.php:71
3407
+ msgid "Cerber anti-spam settings"
3408
+ msgstr ""
3409
+
3410
+ #: ../dashboard.php:71 ../settings.php:1136
3411
+ msgid "Anti-spam"
3412
+ msgstr ""
3413
+
3414
+ #: ../dashboard.php:79 ../dashboard.php:79 ../cerber-addons.php:289
3415
+ msgid "Add-ons"
3416
+ msgstr ""
3417
+
3418
+ #: ../dashboard.php:4629
3419
+ msgid "Anti-spam and bot detection settings"
3420
+ msgstr ""
3421
+
3422
+ #: ../dashboard.php:4631
3423
+ msgid "Anti-spam engine"
3424
+ msgstr ""
3425
+
3426
+ #: ../common.php:1461
3427
+ msgid "Multiple erroneous requests"
3428
+ msgstr ""
3429
+
3430
+ #: ../admin/cerber-settings.php:352
3431
+ msgid "%s retries are allowed within %s minutes"
3432
+ msgstr ""
3433
+
3434
+ #: ../admin/cerber-settings.php:358
3435
+ msgid "%s registrations are allowed within %s minutes from one IP address"
3436
+ msgstr ""
3437
+
3438
+ #: ../admin/cerber-settings.php:381
3439
+ msgid "Enable after %s failed login attempts in the last %s minutes"
3440
+ msgstr ""
3441
+
3442
+ #: ../settings.php:152
3443
+ msgid "Limit"
3444
+ msgstr ""
3445
+
3446
+ #: ../settings.php:385
3447
+ msgid "Restrict or completely block access to the WordPress REST API according to your needs"
3448
+ msgstr ""
3449
+
3450
+ #: ../settings.php:600
3451
+ msgid "These features help your organization to be in compliance with personal data protection laws"
3452
+ msgstr ""
3453
+
3454
+ #: ../settings.php:658
3455
+ msgid "if empty, the website administrator email %s will be used"
3456
+ msgstr ""
3457
+
3458
+ #: ../settings.php:662
3459
+ msgid "notifications are allowed per hour (0 means unlimited)"
3460
+ msgstr ""
3461
+
3462
+ #: ../settings.php:673
3463
+ msgid "Get notified instantly with mobile and desktop notifications"
3464
+ msgstr ""
3465
+
3466
+ #: ../settings.php:688
3467
+ msgid "Weekly report is a summary of all activities and suspicious events occurred during the last seven days"
3468
+ msgstr ""
3469
+
3470
+ #: ../settings.php:701 ../settings.php:947
3471
+ msgid "if empty, the email addresses from the notification settings will be used"
3472
+ msgstr ""
3473
+
3474
+ #: ../settings.php:713
3475
+ msgid "Traffic Inspector is a context-aware web application firewall (WAF) that protects your website by recognizing and denying malicious HTTP requests"
3476
+ msgstr ""
3477
+
3478
+ #: ../settings.php:742
3479
+ msgid "Block IP addresses that send excessive requests for non-existing pages or scan website for security breaches"
3480
+ msgstr ""
3481
+
3482
+ #: ../settings.php:761
3483
+ msgid "Traffic Logging"
3484
+ msgstr ""
3485
+
3486
+ #: ../settings.php:762
3487
+ msgid "Enable optional traffic logging if you need to monitor suspicious and malicious activity or solve security issues"
3488
+ msgstr ""
3489
+
3490
+ #: ../settings.php:829
3491
+ msgid "The scanner monitors file changes, verifies the integrity of WordPress, plugins, and themes, and detects malware"
3492
+ msgstr ""
3493
+
3494
+ #: ../settings.php:851
3495
+ msgid "Specify directories to exclude from scanning. One directory per line."
3496
+ msgstr ""
3497
+
3498
+ #: ../settings.php:899
3499
+ msgid "The scanner automatically scans the website, removes malware and sends email reports with the results of a scan"
3500
+ msgstr ""
3501
+
3502
+ #: ../settings.php:916
3503
+ msgid "Configure what issues to include in the email report and the condition for sending reports"
3504
+ msgstr ""
3505
+
3506
+ #: ../settings.php:958
3507
+ msgid "These policies are automatically enforced at the end of every scheduled scan based on its results. All affected files are moved to the quarantine"
3508
+ msgstr ""
3509
+
3510
+ #: ../settings.php:1024
3511
+ msgid "Cerber anti-spam engine"
3512
+ msgstr ""
3513
+
3514
+ #: ../settings.php:1025
3515
+ msgid "Spam protection for comment, registration and contact forms on a website"
3516
+ msgstr ""
3517
+
3518
+ #: ../settings.php:1046
3519
+ msgid "Adjust anti-spam engine"
3520
+ msgstr ""
3521
+
3522
+ #: ../settings.php:1047
3523
+ msgid "These settings enable you to fine-tune the behavior of anti-spam algorithms and avoid false positives"
3524
+ msgstr ""
3525
+
3526
+ #: ../settings.php:1071
3527
+ msgid "How the plugin processes comments submitted through the standard comment form"
3528
+ msgstr ""
3529
+
3530
+ #: ../nexus/cerber-nexus-slave.php:436
3531
+ msgid "Settings updated"
3532
+ msgstr ""
3533
+
3534
+ #: ../dashboard.php:1154
3535
+ msgid "Request ID"
3536
+ msgstr ""
3537
+
3538
+ #: ../dashboard.php:1155
3539
+ msgid "Search in URL"
3540
+ msgstr ""
3541
+
3542
+ #: ../settings.php:858 ../settings.php:867
3543
+ msgid "Executable files"
3544
+ msgstr ""
3545
+
3546
+ #: ../settings.php:859 ../settings.php:868
3547
+ msgid "All files"
3548
+ msgstr ""
3549
+
3550
+ #: ../dashboard.php:1559
3551
+ msgid "Active sessions"
3552
+ msgstr ""
3553
+
3554
+ #: ../settings.php:583
3555
+ msgid "minutes (leave empty to use the default WordPress value)"
3556
+ msgstr "phút (để trống để sử dụng giá trị mặc định của WordPress)"
3557
+
3558
+ #: ../settings.php:872
3559
+ msgid "Change file permissions when necessary"
3560
+ msgstr "Thay đổi quyền truy cập tệp khi cần thiết"
3561
+
3562
+ #: ../cerber-tools.php:72
3563
+ msgid "Load entries"
3564
+ msgstr "Tải bản ghi"
3565
+
3566
+ #: ../dashboard.php:983
3567
+ msgid "My IP"
3568
+ msgstr ""
3569
+
3570
+ #: ../dashboard.php:4718
3571
+ msgid "Analytics"
3572
+ msgstr ""
3573
+
3574
+ #: ../dashboard.php:4767
3575
+ msgid "Manage Settings"
3576
+ msgstr ""
3577
+
3578
+ #: ../dashboard.php:4769
3579
+ msgid "Diagnostic Log"
3580
+ msgstr ""
3581
+
3582
+ #: ../common.php:1325
3583
+ msgid "User deleted"
3584
+ msgstr ""
3585
+
3586
+ #: ../common.php:1409
3587
+ msgid "Email address is prohibited"
3588
+ msgstr ""
3589
+
3590
+ #: ../admin/cerber-admin.php:879
3591
+ msgid "Quarantined"
3592
+ msgstr ""
3593
+
3594
+ #: ../admin/cerber-admin.php:1035 ../admin/cerber-admin.php:1482
3595
+ msgid "Modified"
3596
+ msgstr ""
3597
+
3598
+ #: ../admin/cerber-admin.php:1146
3599
+ msgid "Files without extension"
3600
+ msgstr ""
3601
+
3602
+ #: ../admin/cerber-admin.php:1147
3603
+ msgid "Back to list"
3604
+ msgstr ""
3605
+
3606
+ #: ../admin/cerber-admin.php:1207
3607
+ msgid "Brief summary"
3608
+ msgstr ""
3609
+
3610
+ #: ../admin/cerber-admin.php:1258
3611
+ msgid "Folder"
3612
+ msgstr ""
3613
+
3614
+ #: ../admin/cerber-admin.php:1259
3615
+ msgid "Path"
3616
+ msgstr ""
3617
+
3618
+ #: ../admin/cerber-admin.php:1260 ../admin/cerber-admin.php:1354
3619
+ msgid "Files"
3620
+ msgstr ""
3621
+
3622
+ #: ../admin/cerber-admin.php:1261 ../admin/cerber-admin.php:1355
3623
+ msgid "Space Occupied"
3624
+ msgstr ""
3625
+
3626
+ #: ../admin/cerber-admin.php:1325
3627
+ msgid "No extension"
3628
+ msgstr ""
3629
+
3630
+ #: ../admin/cerber-admin.php:1350
3631
+ msgid "File extensions statistics"
3632
+ msgstr ""
3633
+
3634
+ #: ../admin/cerber-admin.php:1353
3635
+ msgid "Extension"
3636
+ msgstr ""
3637
+
3638
+ #: ../admin/cerber-admin.php:1356
3639
+ msgid "Smallest"
3640
+ msgstr ""
3641
+
3642
+ #: ../admin/cerber-admin.php:1357
3643
+ msgid "Largest"
3644
+ msgstr ""
3645
+
3646
+ #: ../admin/cerber-admin.php:1358
3647
+ msgid "Average Size"
3648
+ msgstr ""
3649
+
3650
+ #: ../admin/cerber-admin.php:1359
3651
+ msgid "Oldest"
3652
+ msgstr ""
3653
+
3654
+ #: ../admin/cerber-admin.php:1360
3655
+ msgid "Newest"
3656
+ msgstr ""
3657
+
3658
+ #: ../admin/cerber-admin.php:1376
3659
+ msgid "Top 10 largest files"
3660
+ msgstr ""
3661
+
3662
+ #: ../admin/cerber-admin.php:1480
3663
+ msgid "File Name"
3664
+ msgstr ""
3665
+
3666
+ #: ../settings.php:327
3667
+ msgid "Date format for CSV export"
3668
+ msgstr ""
3669
+
3670
+ #: ../settings.php:328
3671
+ msgid "Use ISO 8601 date format for CSV export files"
3672
+ msgstr ""
3673
+
3674
+ #: ../settings.php:332
3675
+ msgid "Use English"
3676
+ msgstr ""
3677
+
3678
+ #: ../settings.php:337
3679
+ msgid "My IP address"
3680
+ msgstr ""
3681
+
3682
+ #: ../settings.php:338
3683
+ msgid "Do not add my IP address to the White IP Access List upon plugin activation"
3684
+ msgstr ""
3685
+
3686
+ #: ../cerber-tools.php:52
3687
+ msgid "Load the default plugin settings"
3688
+ msgstr ""
3689
+
3690
+ #: ../cerber-tools.php:53
3691
+ msgid "When you click the button below, the default WP Cerber settings will be loaded. The Custom login URL and Access Lists will not be changed."
3692
+ msgstr ""
3693
+
3694
+ #: ../cerber-tools.php:54
3695
+ msgid "To get the most out of WP Cerber, follow these steps:"
3696
+ msgstr ""
3697
+
3698
+ #: ../common.php:1416
3699
+ msgid "IP whitelisted"
3700
+ msgstr ""
3701
+
3702
+ #: ../common.php:1419
3703
+ msgid "URL whitelisted"
3704
+ msgstr ""
3705
+
3706
+ #: ../common.php:1420
3707
+ msgid "Request whitelisted"
3708
+ msgstr ""
3709
+
languages/wp-cerber.pot CHANGED
@@ -5,7 +5,7 @@ msgstr ""
5
  "Project-Id-Version: WP Cerber\n"
6
  "Report-Msgid-Bugs-To: \n"
7
  "POT-Creation-Date: Tue Sep 08 2015 21:38:11 GMT+0300\n"
8
- "POT-Revision-Date: Tue Apr 28 2020 11:47:21 GMT+0300 (Moscow Standard Time)\n"
9
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
10
  "Last-Translator: \n"
11
  "Language-Team: \n"
@@ -28,8 +28,8 @@ msgstr ""
28
  msgid "Cerber Dashboard"
29
  msgstr ""
30
 
31
- #: ../dashboard.php:54 ../dashboard.php:1808 ../dashboard.php:2711 ../dashboard.
32
- #: php:4589
33
  msgid "Dashboard"
34
  msgstr ""
35
 
@@ -37,7 +37,7 @@ msgstr ""
37
  msgid "Cerber Traffic Inspector"
38
  msgstr ""
39
 
40
- #: ../dashboard.php:56 ../dashboard.php:1771 ../dashboard.php:4655
41
  msgid "Traffic Inspector"
42
  msgstr ""
43
 
@@ -53,7 +53,7 @@ msgstr ""
53
  msgid "Cerber Security Rules"
54
  msgstr ""
55
 
56
- #: ../dashboard.php:61 ../dashboard.php:4701
57
  msgid "Security Rules"
58
  msgstr ""
59
 
@@ -61,11 +61,11 @@ msgstr ""
61
  msgid "Cerber User Security"
62
  msgstr ""
63
 
64
- #: ../dashboard.php:64 ../dashboard.php:4681
65
  msgid "User Policies"
66
  msgstr ""
67
 
68
- #: ../dashboard.php:67 ../dashboard.php:4716
69
  msgid "Site Integrity"
70
  msgstr ""
71
 
@@ -73,7 +73,7 @@ msgstr ""
73
  msgid "Cerber anti-spam settings"
74
  msgstr ""
75
 
76
- #: ../dashboard.php:71 ../settings.php:1110
77
  msgid "Anti-spam"
78
  msgstr ""
79
 
@@ -85,7 +85,7 @@ msgstr ""
85
  msgid "Cerber tools"
86
  msgstr ""
87
 
88
- #: ../dashboard.php:82 ../dashboard.php:4751
89
  msgid "Tools"
90
  msgstr ""
91
 
@@ -93,28 +93,29 @@ msgstr ""
93
  msgid "Remove"
94
  msgstr ""
95
 
96
- #: ../dashboard.php:195 ../cerber-load.php:4856
97
- msgid "IP"
 
98
  msgstr ""
99
 
100
- #: ../dashboard.php:196 ../dashboard.php:1088
101
  msgid "Hostname"
102
  msgstr ""
103
 
104
- #: ../dashboard.php:197 ../dashboard.php:1089
105
  msgid "Country"
106
  msgstr ""
107
 
108
- #: ../dashboard.php:198 ../cerber-users.php:973
109
  msgid "Expires"
110
  msgstr ""
111
 
112
- #: ../dashboard.php:199 ../cerber-load.php:4151
113
  msgid "Reason"
114
  msgstr ""
115
 
116
- #: ../dashboard.php:200 ../cerber-users.php:976 ../cerber-scanner.php:5830 ..
117
- #: /cerber-scanner.php:5978
118
  msgid "Action"
119
  msgstr ""
120
 
@@ -135,13 +136,13 @@ msgstr ""
135
  msgid "No lockouts at the moment. The sky is clear."
136
  msgstr ""
137
 
138
- #: ../dashboard.php:254 ../dashboard.php:1349 ../dashboard.php:1394 ../dashboard.
139
- #: php:1766 ../dashboard.php:3787 ../cerber-load.php:5158 ../cerber-tools.php:55
140
  msgid "White IP Access List"
141
  msgstr ""
142
 
143
- #: ../dashboard.php:257 ../dashboard.php:1352 ../dashboard.php:1397 ../dashboard.
144
- #: php:1767 ../dashboard.php:3790 ../cerber-tools.php:56
145
  msgid "Black IP Access List"
146
  msgstr ""
147
 
@@ -149,8 +150,8 @@ msgstr ""
149
  msgid "Your IP"
150
  msgstr ""
151
 
152
- #: ../dashboard.php:304 ../dashboard.php:1388 ../dashboard.php:1440 ../dashboard.
153
- #: php:1580
154
  msgid "Check for activities"
155
  msgstr ""
156
 
@@ -184,667 +185,654 @@ msgstr ""
184
  msgid "IP address %s has been added to White IP Access List"
185
  msgstr ""
186
 
187
- #: ../dashboard.php:433 ../dashboard.php:3695 ../whois.php:222 ../whois.php:253 ..
188
- #: /common.php:1470 ../common.php:1854 ../common.php:1919 ../nexus/cerber-slave-
189
  #: list.php:330
190
  msgid "Unknown"
191
  msgstr ""
192
 
193
- #: ../dashboard.php:506
194
  msgid "unknown"
195
  msgstr ""
196
 
197
- #: ../dashboard.php:569
198
  #, php-format
199
  msgid "Lockout for %s was removed"
200
  msgstr ""
201
 
202
- #: ../dashboard.php:577
203
  msgid "Email has been sent to"
204
  msgstr ""
205
 
206
- #: ../dashboard.php:580
207
  msgid "Unable to send email to"
208
  msgstr ""
209
 
210
- #: ../dashboard.php:635
211
  msgid "Default settings have been loaded"
212
  msgstr ""
213
 
214
- #: ../dashboard.php:839 ../dashboard.php:1087 ../dashboard.php:4009 ../cerber-
215
- #: users.php:974
216
- msgid "IP Address"
217
- msgstr ""
218
-
219
- #: ../dashboard.php:840 ../dashboard.php:1090 ../dashboard.php:3583 ../dashboard.
220
- #: php:4007
221
  msgid "Date"
222
  msgstr ""
223
 
224
- #: ../dashboard.php:841 ../dashboard.php:1091
225
  msgid "Event"
226
  msgstr ""
227
 
228
- #: ../dashboard.php:842
229
  msgid "Additional Details"
230
  msgstr ""
231
 
232
- #: ../dashboard.php:843 ../dashboard.php:1092 ../dashboard.php:4012
233
  msgid "Local User"
234
  msgstr ""
235
 
236
- #: ../dashboard.php:844
237
  msgid "User login"
238
  msgstr ""
239
 
240
- #: ../dashboard.php:845 ../dashboard.php:3588
241
  msgid "User ID"
242
  msgstr ""
243
 
244
- #: ../dashboard.php:846 ../dashboard.php:1093
245
  msgid "Username"
246
  msgstr ""
247
 
248
- #: ../dashboard.php:939 ../dashboard.php:2371
249
  msgid "View all"
250
  msgstr ""
251
 
252
- #: ../dashboard.php:950
253
  msgid "New users"
254
  msgstr ""
255
 
256
- #: ../dashboard.php:956 ../dashboard.php:4038
257
  msgid "Suspicious activity"
258
  msgstr ""
259
 
260
- #: ../dashboard.php:958 ../common.php:1333
261
  msgid "IP blocked"
262
  msgstr ""
263
 
264
- #: ../dashboard.php:960 ../dashboard.php:1764 ../dashboard.php:4040 ../settings.
265
- #: php:374 ../settings.php:1029
266
  msgid "Logged in users"
267
  msgstr ""
268
 
269
- #: ../dashboard.php:961 ../dashboard.php:4041
270
  msgid "Not logged in visitors"
271
  msgstr ""
272
 
273
- #: ../dashboard.php:963
274
  msgid "My activity"
275
  msgstr ""
276
 
277
- #: ../dashboard.php:1115 ../dashboard.php:4072
 
 
 
 
278
  msgid "Export"
279
  msgstr ""
280
 
281
- #: ../dashboard.php:1120
282
  msgid "No activity has been logged."
283
  msgstr ""
284
 
285
- #: ../dashboard.php:1155
286
  msgid "Filter by registered user"
287
  msgstr ""
288
 
289
- #: ../dashboard.php:1156
290
  msgid "Search for IP or username"
291
  msgstr ""
292
 
293
- #: ../dashboard.php:1159
294
  msgid "Request ID"
295
  msgstr ""
296
 
297
- #: ../dashboard.php:1160
298
  msgid "Search in URL"
299
  msgstr ""
300
 
301
- #: ../dashboard.php:1167
302
  msgid "Filter"
303
  msgstr ""
304
 
305
- #: ../dashboard.php:1357 ../dashboard.php:1401 ../dashboard.php:3795 ../common.
306
- #: php:1391
307
  msgid "Locked out"
308
  msgstr ""
309
 
310
- #: ../dashboard.php:1433
311
  msgid "Abuse email:"
312
  msgstr ""
313
 
314
- #: ../dashboard.php:1439
315
  msgid "Network:"
316
  msgstr ""
317
 
318
- #: ../dashboard.php:1454
319
  msgid "Add network to the Black List"
320
  msgstr ""
321
 
322
- #: ../dashboard.php:1460
323
  msgid "Add IP to the Black List"
324
  msgstr ""
325
 
326
- #: ../dashboard.php:1528 ../dashboard.php:1618
327
  msgid "Registered"
328
  msgstr ""
329
 
330
- #: ../dashboard.php:1540
331
  msgid "Activated"
332
  msgstr ""
333
 
334
- #: ../dashboard.php:1560
335
  msgid "Last seen"
336
  msgstr ""
337
 
338
- #: ../dashboard.php:1564
339
  msgid "Active sessions"
340
  msgstr ""
341
 
342
- #: ../dashboard.php:1615
343
  msgid "Comments"
344
  msgstr ""
345
 
346
- #: ../dashboard.php:1616
347
  msgid "Last login"
348
  msgstr ""
349
 
350
- #: ../dashboard.php:1617
351
  msgid "Failed login attempts"
352
  msgstr ""
353
 
354
- #: ../dashboard.php:1649 ../dashboard.php:1740 ../dashboard.php:1789 ../common.
355
- #: php:1607 ../nexus/cerber-slave-list.php:344
356
  msgid "Never"
357
  msgstr ""
358
 
359
- #: ../dashboard.php:1688 ../cerber-users.php:52 ../cerber-users.php:1107
360
  msgid "You"
361
  msgstr ""
362
 
363
- #: ../dashboard.php:1706
364
  msgid "Cerber Quick View"
365
  msgstr ""
366
 
367
- #: ../dashboard.php:1745 ../dashboard.php:1775
368
  msgid "active"
369
  msgstr ""
370
 
371
- #: ../dashboard.php:1745
372
  msgid "deactivate"
373
  msgstr ""
374
 
375
- #: ../dashboard.php:1749
376
  msgid "not active"
377
  msgstr ""
378
 
379
- #: ../dashboard.php:1752 ../dashboard.php:1770
380
  msgid "disabled"
381
  msgstr ""
382
 
383
- #: ../dashboard.php:1758
384
  msgid "failed attempts"
385
  msgstr ""
386
 
387
- #: ../dashboard.php:1758 ../dashboard.php:1759
388
  msgid "in 24 hours"
389
  msgstr ""
390
 
391
- #: ../dashboard.php:1758 ../dashboard.php:1759
392
  msgid "view all"
393
  msgstr ""
394
 
395
- #: ../dashboard.php:1759
396
  msgid "lockouts"
397
  msgstr ""
398
 
399
- #: ../dashboard.php:1761
400
  msgid "Lockouts at the moment"
401
  msgstr ""
402
 
403
- #: ../dashboard.php:1762
404
  msgid "Last lockout"
405
  msgstr ""
406
 
407
- #: ../dashboard.php:1764
408
  msgid "user"
409
  msgid_plural "users"
410
  msgstr[0] ""
411
  msgstr[1] ""
412
 
413
- #: ../dashboard.php:1766 ../dashboard.php:1767 ../dashboard.php:2693
414
  msgid "entry"
415
  msgid_plural "entries"
416
  msgstr[0] ""
417
  msgstr[1] ""
418
 
419
- #: ../dashboard.php:1768 ../settings.php:233
420
  msgid "Citadel mode"
421
  msgstr ""
422
 
423
- #: ../dashboard.php:1770
424
  msgid "enabled"
425
  msgstr ""
426
 
427
- #: ../dashboard.php:1775
428
  msgid "no connection"
429
  msgstr ""
430
 
431
- #: ../dashboard.php:1792
432
  msgctxt "Example: Last malware scan: 23 Jan 2018"
433
  msgid "Last malware scan"
434
  msgstr ""
435
 
436
- #: ../dashboard.php:1795 ../dashboard.php:1797 ../cerber-users.php:20 ../cerber-
437
- #: users.php:446 ../settings.php:695 ../settings.php:723 ../settings.php:832 ..
438
- #: /settings.php:841 ../settings.php:1182 ../cerber-scanner.php:1620
439
  msgid "Disabled"
440
  msgstr ""
441
 
442
- #: ../dashboard.php:1796 ../cerber-scanner.php:1065
443
  msgid "Quick Scan"
444
  msgstr ""
445
 
446
- #: ../dashboard.php:1798 ../cerber-scanner.php:1065
447
  msgid "Full Scan"
448
  msgstr ""
449
 
450
- #: ../dashboard.php:1809 ../dashboard.php:2357 ../dashboard.php:4590 ../cerber-
451
- #: load.php:4847 ../cerber-users.php:1140 ../settings.php:266
452
  msgid "Activity"
453
  msgstr ""
454
 
455
- #: ../dashboard.php:1810 ../cerber-users.php:1141
456
  msgid "Traffic"
457
  msgstr ""
458
 
459
- #: ../dashboard.php:1811
460
  msgid "Integrity"
461
  msgstr ""
462
 
463
- #: ../dashboard.php:1814
464
  msgid "A new version is available"
465
  msgstr ""
466
 
467
- #: ../dashboard.php:2174 ../settings.php:220
468
  msgid "My site is behind a reverse proxy"
469
  msgstr ""
470
 
471
- #: ../dashboard.php:2350
472
  msgid "in the last 24 hours"
473
  msgstr ""
474
 
475
- #: ../dashboard.php:2374
476
  msgid "Recently locked out IP addresses"
477
  msgstr ""
478
 
479
- #: ../dashboard.php:2398
480
- msgid "Confused about some settings?"
481
- msgstr ""
482
-
483
- #: ../dashboard.php:2399
484
- msgid "You can easily load default recommended settings using button below"
485
- msgstr ""
486
-
487
- #: ../dashboard.php:2401
488
- msgid "Load default settings"
489
- msgstr ""
490
-
491
- #: ../dashboard.php:2403 ../dashboard.php:5061 ../cerber-scanner.php:5801 ..
492
- #: /cerber-scanner.php:5962
493
- msgid "Are you sure?"
494
- msgstr ""
495
-
496
- #: ../dashboard.php:2409
497
- msgid "doesn't affect Custom login URL and Access Lists"
498
- msgstr ""
499
-
500
- #: ../dashboard.php:2410 ../cerber-load.php:4183 ../cerber-load.php:5160
501
- msgid "Getting Started Guide"
502
- msgstr ""
503
-
504
- #: ../dashboard.php:2513
505
  msgid "Attention! Citadel mode is now active. Nobody is able to log in."
506
  msgstr ""
507
 
508
- #: ../dashboard.php:2514
509
  msgid "Deactivate"
510
  msgstr ""
511
 
512
- #: ../dashboard.php:2515 ../dashboard.php:2905
513
  msgid "View Activity"
514
  msgstr ""
515
 
516
- #: ../dashboard.php:2530
517
  msgid "Settings saved"
518
  msgstr ""
519
 
520
- #: ../dashboard.php:2601
521
  msgid "Create Alert"
522
  msgstr ""
523
 
524
- #: ../dashboard.php:2605
525
  msgid "Delete Alert"
526
  msgstr ""
527
 
528
- #: ../dashboard.php:2638
529
  msgid "The alert has been created"
530
  msgstr ""
531
 
532
- #: ../dashboard.php:2642
533
  msgid "The alert has been deleted"
534
  msgstr ""
535
 
536
- #: ../dashboard.php:2712
537
  msgid "Main settings"
538
  msgstr ""
539
 
540
- #: ../dashboard.php:2824
541
  msgid "Are you sure you want to delete selected files?"
542
  msgstr ""
543
 
544
- #: ../dashboard.php:2825
545
  msgid "These files have been moved to the quarantine"
546
  msgstr ""
547
 
548
- #: ../dashboard.php:2828
549
  msgid "Do you want to add selected files to the ignore list?"
550
  msgstr ""
551
 
552
- #: ../dashboard.php:2829
553
  msgid "These files have been added to the ignore list"
554
  msgstr ""
555
 
556
- #: ../dashboard.php:2831
557
  msgid "Some errors occurred"
558
  msgstr ""
559
 
560
- #: ../dashboard.php:2832
561
  msgid "All files have been processed"
562
  msgstr ""
563
 
564
- #: ../dashboard.php:3168 ../admin/cerber-settings.php:618
565
  msgid "Save Changes"
566
  msgstr ""
567
 
568
- #: ../dashboard.php:3240
569
  msgid "Role-based rules are configured"
570
  msgstr ""
571
 
572
- #: ../dashboard.php:3290
573
  msgid "Start typing here to find a country"
574
  msgstr ""
575
 
576
- #: ../dashboard.php:3297
577
  msgid "Save all rules"
578
  msgstr ""
579
 
580
- #: ../dashboard.php:3310
581
  #, php-format
582
  msgid "Permitted for one country"
583
  msgid_plural "Permitted for %d countries"
584
  msgstr[0] ""
585
  msgstr[1] ""
586
 
587
- #: ../dashboard.php:3313
588
  #, php-format
589
  msgid "Not permitted for one country"
590
  msgid_plural "Not permitted for %d countries"
591
  msgstr[0] ""
592
  msgstr[1] ""
593
 
594
- #: ../dashboard.php:3321
595
  msgid "No rule"
596
  msgstr ""
597
 
598
- #: ../dashboard.php:3322
599
  msgid "Any country is permitted"
600
  msgstr ""
601
 
602
- #: ../dashboard.php:3405
603
  msgid "Click on a country name to add it to the list of selected countries"
604
  msgstr ""
605
 
606
- #: ../dashboard.php:3409
607
  #, php-format
608
  msgctxt "to is a marker of infinitive, e.g. \"to use it\""
609
  msgid "Selected countries are permitted to %s, other countries are not permitted to"
610
  msgstr ""
611
 
612
- #: ../dashboard.php:3412
613
  #, php-format
614
  msgctxt "to is a marker of infinitive, e.g. \"to use it\""
615
  msgid "Selected countries are not permitted to %s, other countries are permitted to"
616
  msgstr ""
617
 
618
- #: ../dashboard.php:3432
619
  msgid "Log in to the website"
620
  msgstr ""
621
 
622
- #: ../dashboard.php:3434
623
  msgid "All Users"
624
  msgstr ""
625
 
626
- #: ../dashboard.php:3436
627
  msgid "Register on the website"
628
  msgstr ""
629
 
630
- #: ../dashboard.php:3437
631
  msgid "Submit forms"
632
  msgstr ""
633
 
634
- #: ../dashboard.php:3438
635
  msgid "Post comments"
636
  msgstr ""
637
 
638
- #: ../dashboard.php:3439
639
  msgid "Use XML-RPC"
640
  msgstr ""
641
 
642
- #: ../dashboard.php:3440
643
  msgid "Use REST API"
644
  msgstr ""
645
 
646
- #: ../dashboard.php:3482
647
  msgid "Security rules have been updated"
648
  msgstr ""
649
 
650
- #: ../dashboard.php:3582
651
  msgid "IP address"
652
  msgstr ""
653
 
654
- #: ../dashboard.php:3589
655
  msgid "Page generation time"
656
  msgstr ""
657
 
658
- #: ../dashboard.php:4008
659
  msgid "Request"
660
  msgstr ""
661
 
662
- #: ../dashboard.php:4010 ../cerber-users.php:975
663
  msgid "Host Info"
664
  msgstr ""
665
 
666
- #: ../dashboard.php:4011
667
  msgid "User Agent"
668
  msgstr ""
669
 
670
- #: ../dashboard.php:4028
671
  msgid "No requests have been logged."
672
  msgstr ""
673
 
674
- #: ../dashboard.php:4036
675
  msgid "All requests"
676
  msgstr ""
677
 
678
- #: ../dashboard.php:4039
679
  msgid "Errors"
680
  msgstr ""
681
 
682
- #: ../dashboard.php:4044
683
  msgid "Form submissions"
684
  msgstr ""
685
 
686
- #: ../dashboard.php:4046
687
  msgid "Page Not Found"
688
  msgstr ""
689
 
690
- #: ../dashboard.php:4055
 
 
 
 
691
  msgid "Longer than"
692
  msgstr ""
693
 
694
- #: ../dashboard.php:4065
695
  msgid "Advanced Search"
696
  msgstr ""
697
 
698
- #: ../dashboard.php:4078
699
  msgid "Refresh"
700
  msgstr ""
701
 
702
- #: ../dashboard.php:4591
703
  msgid "Sessions"
704
  msgstr ""
705
 
706
- #: ../dashboard.php:4592
707
  msgid "Lockouts"
708
  msgstr ""
709
 
710
- #: ../dashboard.php:4593
711
  msgid "Main Settings"
712
  msgstr ""
713
 
714
- #: ../dashboard.php:4594 ../cerber-tools.php:38 ../cerber-tools.php:49
715
  msgid "Access Lists"
716
  msgstr ""
717
 
718
- #: ../dashboard.php:4595
719
  msgid "Hardening"
720
  msgstr ""
721
 
722
- #: ../dashboard.php:4597 ../settings.php:254
723
  msgid "Notifications"
724
  msgstr ""
725
 
726
- #: ../dashboard.php:4635
727
  msgid "Anti-spam and bot detection settings"
728
  msgstr ""
729
 
730
- #: ../dashboard.php:4637
731
  msgid "Anti-spam engine"
732
  msgstr ""
733
 
734
- #: ../dashboard.php:4657
735
  msgid "Live Traffic"
736
  msgstr ""
737
 
738
- #: ../dashboard.php:4658 ../dashboard.php:4719 ../cerber-tools.php:37 ../cerber-
739
  #: tools.php:48 ../nexus/cerber-nexus.php:93
740
  msgid "Settings"
741
  msgstr ""
742
 
743
- #: ../dashboard.php:4671
744
  msgid "Data Shield Policies"
745
  msgstr ""
746
 
747
- #: ../dashboard.php:4673
748
  msgid "Accounts & Roles"
749
  msgstr ""
750
 
751
- #: ../dashboard.php:4674
752
  msgid "Site Settings"
753
  msgstr ""
754
 
755
- #: ../dashboard.php:4683
756
  msgid "Role-based"
757
  msgstr ""
758
 
759
- #: ../dashboard.php:4684
760
  msgid "Global"
761
  msgstr ""
762
 
763
- #: ../dashboard.php:4703
764
  msgid "Countries"
765
  msgstr ""
766
 
767
- #: ../dashboard.php:4718
768
  msgid "Security Scanner"
769
  msgstr ""
770
 
771
- #: ../dashboard.php:4720
772
  msgid "Scheduling"
773
  msgstr ""
774
 
775
- #: ../dashboard.php:4721
776
  msgid "Cleaning up"
777
  msgstr ""
778
 
779
- #: ../dashboard.php:4722
780
  msgid "Ignore List"
781
  msgstr ""
782
 
783
- #: ../dashboard.php:4723
784
  msgid "Quarantine"
785
  msgstr ""
786
 
787
- #: ../dashboard.php:4753
788
- msgid "Export & Import"
 
 
 
 
789
  msgstr ""
790
 
791
- #: ../dashboard.php:4754
792
  msgid "Diagnostic"
793
  msgstr ""
794
 
795
- #: ../dashboard.php:4755
796
- msgid "Log"
797
  msgstr ""
798
 
799
- #: ../dashboard.php:4756
800
  msgid "Changelog"
801
  msgstr ""
802
 
803
- #: ../dashboard.php:4757
804
  msgid "License"
805
  msgstr ""
806
 
807
- #: ../dashboard.php:4858
808
  msgid "Help"
809
  msgstr ""
810
 
811
- #: ../dashboard.php:4907
812
  msgid "Incorrect IP address or IP range"
813
  msgstr ""
814
 
815
- #: ../dashboard.php:4911
816
  msgid "The IP address you are trying to add is already in the list"
817
  msgstr ""
818
 
819
- #: ../dashboard.php:5046
820
  msgid "These features are available in a professional version of the plugin."
821
  msgstr ""
822
 
823
- #: ../dashboard.php:5047
824
  msgid "Know more about all advantages at"
825
  msgstr ""
826
 
827
- #: ../dashboard.php:5082
 
 
 
 
 
828
  msgid "Log In"
829
  msgstr ""
830
 
831
- #: ../dashboard.php:5083
832
  msgid "Log Out"
833
  msgstr ""
834
 
835
- #: ../dashboard.php:5084
836
  msgid "Register"
837
  msgstr ""
838
 
839
- #: ../dashboard.php:5087
840
  msgid "WooCommerce Log In"
841
  msgstr ""
842
 
843
- #: ../dashboard.php:5088
844
  msgid "WooCommerce Log Out"
845
  msgstr ""
846
 
847
- #: ../dashboard.php:5127 ../dashboard.php:5128
848
  msgid "Add to menu"
849
  msgstr ""
850
 
@@ -869,38 +857,38 @@ msgstr ""
869
  msgid "Cerber Tech Inc."
870
  msgstr ""
871
 
872
- #: ../common.php:213
873
  msgid "Check for requests"
874
  msgstr ""
875
 
876
- #: ../common.php:283
877
  msgid "Malicious activities mitigated"
878
  msgstr ""
879
 
880
- #: ../common.php:286
881
  msgid "Spam comments denied"
882
  msgstr ""
883
 
884
- #: ../common.php:287
885
  msgid "Spam form submissions denied"
886
  msgstr ""
887
 
888
- #: ../common.php:288
889
  msgid "Malicious IP addresses detected"
890
  msgstr ""
891
 
892
- #: ../common.php:289
893
  msgid "Lockouts occurred"
894
  msgstr ""
895
 
896
- #: ../common.php:343 ../common.php:421 ../common.php:426 ../common.php:432 ..
897
- #: /common.php:437 ../admin/cerber-settings.php:643 ../admin/cerber-settings.php:
898
- #: 663 ../admin/cerber-settings.php:743 ../cerber-load.php:649 ../cerber-load.php:
899
- #: 661 ../cerber-load.php:668 ../cerber-load.php:1016 ../cerber-load.php:1547 ..
900
- #: /cerber-load.php:1553 ../cerber-load.php:1558 ../cerber-load.php:1565 ..
901
- #: /cerber-load.php:1572 ../cerber-load.php:1578 ../cerber-load.php:1585 ..
902
- #: /cerber-load.php:1736 ../cerber-load.php:1873 ../nexus/cerber-nexus-slave.php:
903
- #: 204 ../nexus/cerber-nexus-slave.php:215 ../cerber-scanner.php:5932
904
  msgid "ERROR:"
905
  msgstr ""
906
 
@@ -913,302 +901,310 @@ msgid "User registered"
913
  msgstr ""
914
 
915
  #: ../common.php:1328
916
- msgid "Logged in"
917
  msgstr ""
918
 
919
  #: ../common.php:1329
920
- msgid "Logged out"
921
  msgstr ""
922
 
923
  #: ../common.php:1330
 
 
 
 
924
  msgid "Login failed"
925
  msgstr ""
926
 
927
- #: ../common.php:1334
928
  msgid "IP subnet blocked"
929
  msgstr ""
930
 
931
- #: ../common.php:1337
932
  msgid "Citadel activated!"
933
  msgstr ""
934
 
935
- #: ../common.php:1338
936
  msgid "Spam comment denied"
937
  msgstr ""
938
 
939
- #: ../common.php:1339
940
  msgid "Spam form submission denied"
941
  msgstr ""
942
 
943
- #: ../common.php:1340
944
  msgid "Form submission denied"
945
  msgstr ""
946
 
947
- #: ../common.php:1341
948
  msgid "Comment denied"
949
  msgstr ""
950
 
951
- #: ../common.php:1350
952
  msgid "Password changed"
953
  msgstr ""
954
 
955
- #: ../common.php:1351
956
  msgid "Password reset requested"
957
  msgstr ""
958
 
959
- #: ../common.php:1353
960
  msgid "reCAPTCHA verification failed"
961
  msgstr ""
962
 
963
- #: ../common.php:1354
964
  msgid "reCAPTCHA settings are incorrect"
965
  msgstr ""
966
 
967
- #: ../common.php:1355
968
  msgid "Request to the Google reCAPTCHA service failed"
969
  msgstr ""
970
 
971
- #: ../common.php:1357 ../common.php:1447
972
  msgid "Attempt to access prohibited URL"
973
  msgstr ""
974
 
975
- #: ../common.php:1358 ../common.php:1448
976
  msgid "Attempt to log in with non-existing username"
977
  msgstr ""
978
 
979
- #: ../common.php:1359 ../common.php:1449
980
  msgid "Attempt to log in with prohibited username"
981
  msgstr ""
982
 
983
- #: ../common.php:1361
984
  msgid "Attempt to log in denied"
985
  msgstr ""
986
 
987
- #: ../common.php:1362
988
  msgid "Attempt to register denied"
989
  msgstr ""
990
 
991
- #: ../common.php:1363 ../common.php:1453
992
  msgid "Probing for vulnerable PHP code"
993
  msgstr ""
994
 
995
- #: ../common.php:1364
996
  msgid "Attempt to upload malicious file denied"
997
  msgstr ""
998
 
999
- #: ../common.php:1365
1000
  msgid "File upload denied"
1001
  msgstr ""
1002
 
1003
- #: ../common.php:1367
1004
  msgid "Request to REST API denied"
1005
  msgstr ""
1006
 
1007
- #: ../common.php:1368
1008
  msgid "XML-RPC request denied"
1009
  msgstr ""
1010
 
1011
- #: ../common.php:1369
1012
  msgid "User creation denied"
1013
  msgstr ""
1014
 
1015
- #: ../common.php:1370
1016
  msgid "User row update denied"
1017
  msgstr ""
1018
 
1019
- #: ../common.php:1371
1020
  msgid "Role update denied"
1021
  msgstr ""
1022
 
1023
- #: ../common.php:1372
1024
  msgid "Setting update denied"
1025
  msgstr ""
1026
 
1027
- #: ../common.php:1373
1028
  msgid "User metadata update denied"
1029
  msgstr ""
1030
 
1031
- #: ../common.php:1375
1032
  msgid "Malicious request denied"
1033
  msgstr ""
1034
 
1035
- #: ../common.php:1378
1036
  msgid "User activated"
1037
  msgstr ""
1038
 
1039
- #: ../common.php:1381
1040
  msgid "Invalid master credentials"
1041
  msgstr ""
1042
 
1043
- #: ../common.php:1389
1044
  msgid "Bot detected"
1045
  msgstr ""
1046
 
1047
- #: ../common.php:1390
1048
  msgid "Citadel mode is active"
1049
  msgstr ""
1050
 
1051
- #: ../common.php:1392
1052
  msgid "IP address is locked out"
1053
  msgstr ""
1054
 
1055
- #: ../common.php:1393
1056
  msgid "IP blacklisted"
1057
  msgstr ""
1058
 
1059
- #: ../common.php:1394
1060
  msgid "Malicious activity detected"
1061
  msgstr ""
1062
 
1063
- #: ../common.php:1395
1064
  msgid "Blocked by country rule"
1065
  msgstr ""
1066
 
1067
- #: ../common.php:1396
1068
  msgid "Limit reached"
1069
  msgstr ""
1070
 
1071
- #: ../common.php:1397
1072
  msgid "Multiple suspicious activities"
1073
  msgstr ""
1074
 
1075
- #: ../common.php:1398
1076
  msgid "Denied"
1077
  msgstr ""
1078
 
1079
- #: ../common.php:1400
1080
  msgid "Suspicious number of fields"
1081
  msgstr ""
1082
 
1083
- #: ../common.php:1401
1084
  msgid "Suspicious number of nested values"
1085
  msgstr ""
1086
 
1087
- #: ../common.php:1402 ../common.php:1454
1088
  msgid "Malicious code detected"
1089
  msgstr ""
1090
 
1091
- #: ../common.php:1403
1092
  msgid "Suspicious SQL code detected"
1093
  msgstr ""
1094
 
1095
- #: ../common.php:1404
1096
  msgid "Suspicious JavaScript code detected"
1097
  msgstr ""
1098
 
1099
- #: ../common.php:1405
1100
  msgid "Blocked by administrator"
1101
  msgstr ""
1102
 
1103
- #: ../common.php:1406
1104
  msgid "Site policy enforcement"
1105
  msgstr ""
1106
 
1107
- #: ../common.php:1407
1108
  msgid "2FA code verified"
1109
  msgstr ""
1110
 
1111
- #: ../common.php:1408
1112
  msgid "Initiated by the user"
1113
  msgstr ""
1114
 
1115
- #: ../common.php:1411
1116
- msgid "Email address is not permitted"
1117
  msgstr ""
1118
 
1119
- #: ../common.php:1413
1120
  msgid "Permission denied"
1121
  msgstr ""
1122
 
1123
- #: ../common.php:1415
1124
  msgid "Invalid user"
1125
  msgstr ""
1126
 
1127
- #: ../common.php:1416
1128
  msgid "Incorrect password"
1129
  msgstr ""
1130
 
1131
- #: ../common.php:1445
 
 
 
 
1132
  msgid "Limit on login attempts is reached"
1133
  msgstr ""
1134
 
1135
- #: ../common.php:1446
1136
  msgid "Attempt to access"
1137
  msgstr ""
1138
 
1139
- #: ../common.php:1450
1140
  msgid "Limit on failed reCAPTCHA verifications is reached"
1141
  msgstr ""
1142
 
1143
- #: ../common.php:1451
1144
  msgid "Bot activity is detected"
1145
  msgstr ""
1146
 
1147
- #: ../common.php:1452
1148
  msgid "Multiple suspicious activities were detected"
1149
  msgstr ""
1150
 
1151
- #: ../common.php:1455
1152
  msgid "Attempt to upload a file with malicious code"
1153
  msgstr ""
1154
 
1155
- #: ../common.php:1457
1156
  msgid "Multiple erroneous requests"
1157
  msgstr ""
1158
 
1159
- #: ../common.php:1458
1160
  msgid "Multiple suspicious requests"
1161
  msgstr ""
1162
 
1163
  #. translators: Time difference between two dates, in seconds (sec=second). 1: Number of seconds
1164
- #: ../common.php:1595
1165
  #, php-format
1166
  msgid "%s sec"
1167
  msgid_plural "%s secs"
1168
  msgstr[0] ""
1169
  msgstr[1] ""
1170
 
1171
- #: ../common.php:1602
1172
  #, php-format
1173
  msgid "%s ago"
1174
  msgstr ""
1175
 
1176
- #: ../common.php:1602
1177
  #, php-format
1178
  msgctxt "preposition of a period of time like: in 6 hours"
1179
  msgid "in %s"
1180
  msgstr ""
1181
 
1182
- #: ../common.php:1688
1183
  msgid "Bytes"
1184
  msgstr ""
1185
 
1186
- #: ../common.php:1794
1187
  #, php-format
1188
  msgid "A new version of %s is available. Please install it."
1189
  msgstr ""
1190
 
1191
- #: ../common.php:1814
1192
  msgid "Not specified"
1193
  msgstr ""
1194
 
1195
- #: ../common.php:2792
1196
  msgid "Unable to create the directory"
1197
  msgstr ""
1198
 
1199
- #: ../common.php:2797
1200
  msgid "Destination folder access denied"
1201
  msgstr ""
1202
 
1203
- #: ../common.php:2800
1204
  msgid "File not found"
1205
  msgstr ""
1206
 
1207
- #: ../common.php:2803
1208
  msgid "Unable to copy the file"
1209
  msgstr ""
1210
 
1211
- #: ../common.php:2809
1212
  msgid "Unable to delete the file"
1213
  msgstr ""
1214
 
@@ -1219,116 +1215,386 @@ msgid ""
1219
  "more: <a href=\"https://wpcerber.com\">wpcerber.com</a>."
1220
  msgstr ""
1221
 
1222
- #: ../cerber-news.php:148
1223
  msgid "Awesome!"
1224
  msgstr ""
1225
 
1226
- #: ../admin/cerber-settings.php:94 ../admin/cerber-settings.php:264 ../cerber-lab.
1227
- #: php:828
1228
  msgid "Know more"
1229
  msgstr ""
1230
 
1231
- #: ../admin/cerber-settings.php:346
1232
  #, php-format
1233
  msgid "%s retries are allowed within %s minutes"
1234
  msgstr ""
1235
 
1236
- #: ../admin/cerber-settings.php:352
1237
  #, php-format
1238
  msgid "%s registrations are allowed within %s minutes from one IP address"
1239
  msgstr ""
1240
 
1241
- #: ../admin/cerber-settings.php:358
1242
  #, php-format
1243
  msgid "Increase lockout duration to %s hours after %s lockouts in the last %s hours"
1244
  msgstr ""
1245
 
1246
- #: ../admin/cerber-settings.php:366
1247
  msgid "Notify admin if the number of active lockouts above"
1248
  msgstr ""
1249
 
1250
- #: ../admin/cerber-settings.php:371 ../settings.php:260
1251
  msgid "Click to send test"
1252
  msgstr ""
1253
 
1254
- #: ../admin/cerber-settings.php:375
1255
  #, php-format
1256
  msgid "Enable after %s failed login attempts in the last %s minutes"
1257
  msgstr ""
1258
 
1259
- #: ../admin/cerber-settings.php:507
1260
  msgid "Select one or more roles"
1261
  msgstr ""
1262
 
1263
- #: ../admin/cerber-settings.php:531
1264
  msgid "Sunday"
1265
  msgstr ""
1266
 
1267
- #: ../admin/cerber-settings.php:532
1268
  msgid "Monday"
1269
  msgstr ""
1270
 
1271
- #: ../admin/cerber-settings.php:533
1272
  msgid "Tuesday"
1273
  msgstr ""
1274
 
1275
- #: ../admin/cerber-settings.php:534
1276
  msgid "Wednesday"
1277
  msgstr ""
1278
 
1279
- #: ../admin/cerber-settings.php:535
1280
  msgid "Thursday"
1281
  msgstr ""
1282
 
1283
- #: ../admin/cerber-settings.php:536
1284
  msgid "Friday"
1285
  msgstr ""
1286
 
1287
- #: ../admin/cerber-settings.php:537
1288
  msgid "Saturday"
1289
  msgstr ""
1290
 
1291
- #: ../admin/cerber-settings.php:547
1292
  msgctxt "preposition of time like: at 11:00"
1293
  msgid "at"
1294
  msgstr ""
1295
 
1296
- #: ../admin/cerber-settings.php:566
1297
  msgid "Click to send now"
1298
  msgstr ""
1299
 
1300
- #: ../admin/cerber-settings.php:644
1301
  msgid "Plugin initialization mode has not been changed"
1302
  msgstr ""
1303
 
1304
- #: ../admin/cerber-settings.php:671 ../admin/cerber-settings.php:672
1305
  msgid "Attention! You have changed the login URL! The new login URL is"
1306
  msgstr ""
1307
 
1308
- #: ../admin/cerber-settings.php:673 ../admin/cerber-settings.php:674
1309
  msgid ""
1310
  "If you use a caching plugin, you have to add your new login URL to the list "
1311
  "of pages not to cache."
1312
  msgstr ""
1313
 
1314
- #: ../admin/cerber-settings.php:767 ../admin/cerber-settings.php:779 ..
1315
- #: /admin/cerber-settings.php:936
1316
  msgid "<strong>ERROR</strong>: please enter a valid email address."
1317
  msgstr ""
1318
 
1319
- #: ../admin/cerber-settings.php:942
1320
  msgid "The schedule has been updated"
1321
  msgstr ""
1322
 
1323
- #: ../admin/cerber-settings.php:945
1324
  msgid "Unable to update the schedule"
1325
  msgstr ""
1326
 
1327
- #: ../cerber-lab.php:824
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1328
  msgid "Want to make WP Cerber even more powerful?"
1329
  msgstr ""
1330
 
1331
- #: ../cerber-lab.php:825
1332
  msgid ""
1333
  "Allow WP Cerber to send locked out malicious IP addresses to Cerber Lab. "
1334
  "This helps the plugin team to develop new algorithms for WP Cerber that will "
@@ -1336,256 +1602,264 @@ msgid ""
1336
  "everyday. You can disable the sending in the plugin settings at any time."
1337
  msgstr ""
1338
 
1339
- #: ../cerber-lab.php:826
1340
  msgid "OK, nail them all"
1341
  msgstr ""
1342
 
1343
- #: ../cerber-lab.php:827
1344
  msgid "NO, maybe later"
1345
  msgstr ""
1346
 
1347
- #: ../cerber-load.php:341
1348
  msgid "You are not allowed to log in. Ask your administrator for assistance."
1349
  msgstr ""
1350
 
1351
- #: ../cerber-load.php:347
1352
  #, php-format
1353
  msgid ""
1354
  "You have exceeded the number of allowed login attempts. Please try again in "
1355
  "%d minutes."
1356
  msgstr ""
1357
 
1358
- #: ../cerber-load.php:351
1359
  msgid "You are not allowed to log in"
1360
  msgstr ""
1361
 
1362
- #: ../cerber-load.php:366
1363
  #, php-format
1364
  msgid "You have only one attempt remaining."
1365
  msgid_plural "You have %d attempts remaining."
1366
  msgstr[0] ""
1367
  msgstr[1] ""
1368
 
1369
- #: ../cerber-load.php:678
1370
  msgid ""
1371
  "Human verification failed. Please click the square box in the reCAPTCHA "
1372
  "block below."
1373
  msgstr ""
1374
 
1375
- #: ../cerber-load.php:817
1376
  msgid ""
1377
  "> > > Translator of WP Cerber? To get the PRO license for free, drop your "
1378
  "contacts here: https://wpcerber.com/contact/"
1379
  msgstr ""
1380
 
1381
- #: ../cerber-load.php:1125
1382
  #, php-format
1383
  msgid ""
1384
  "<strong>ERROR</strong>: The password you entered for the username %s is "
1385
  "incorrect."
1386
  msgstr ""
1387
 
1388
- #: ../cerber-load.php:1548 ../cerber-load.php:1554 ../cerber-load.php:1579 ..
1389
- #: /cerber-load.php:1586
1390
  msgid "You are not allowed to register."
1391
  msgstr ""
1392
 
1393
- #: ../cerber-load.php:1566
1394
  msgid "Username is not allowed. Please choose another one."
1395
  msgstr ""
1396
 
1397
- #: ../cerber-load.php:1573
1398
  msgid "Email address is not permitted."
1399
  msgstr ""
1400
 
1401
- #: ../cerber-load.php:1573
1402
  msgid "Please choose another one."
1403
  msgstr ""
1404
 
1405
- #: ../cerber-load.php:1873
1406
  msgid "Sorry, human verification failed."
1407
  msgstr ""
1408
 
1409
- #: ../cerber-load.php:3976
1410
  msgid "We're sorry, you are not allowed to proceed"
1411
  msgstr ""
1412
 
1413
- #: ../cerber-load.php:4092
1414
  msgid "WP Cerber notify"
1415
  msgstr ""
1416
 
1417
- #: ../cerber-load.php:4116
1418
  msgid "Citadel mode is activated"
1419
  msgstr ""
1420
 
1421
- #: ../cerber-load.php:4118
1422
  #, php-format
1423
  msgid "Citadel mode is activated after %d failed login attempts in %d minutes."
1424
  msgstr ""
1425
 
1426
- #: ../cerber-load.php:4119
1427
  #, php-format
1428
  msgid "Last failed attempt was at %s from IP %s with user login: %s."
1429
  msgstr ""
1430
 
1431
- #: ../cerber-load.php:4120 ../cerber-load.php:4888
1432
  msgid "View activity in dashboard"
1433
  msgstr ""
1434
 
1435
- #: ../cerber-load.php:4144
1436
  msgid "unspecified"
1437
  msgstr ""
1438
 
1439
- #: ../cerber-load.php:4147
1440
  msgid "Number of lockouts is increasing"
1441
  msgstr ""
1442
 
1443
- #: ../cerber-load.php:4149
1444
  msgid "Number of active lockouts"
1445
  msgstr ""
1446
 
1447
- #: ../cerber-load.php:4150
1448
  #, php-format
1449
  msgid "Last lockout was added: %s for IP %s"
1450
  msgstr ""
1451
 
1452
- #: ../cerber-load.php:4152
1453
  msgid "View activity for this IP"
1454
  msgstr ""
1455
 
1456
- #: ../cerber-load.php:4153
1457
  msgid "View lockouts in dashboard"
1458
  msgstr ""
1459
 
1460
- #: ../cerber-load.php:4156 ../cerber-load.php:4158
1461
  msgid "A new version of WP Cerber is available to install"
1462
  msgstr ""
1463
 
1464
- #: ../cerber-load.php:4157
1465
  msgid "Hi!"
1466
  msgstr ""
1467
 
1468
- #: ../cerber-load.php:4160 ../cerber-load.php:4171 ../nexus/cerber-slave-list.php:
1469
  #: 44
1470
  msgid "Website"
1471
  msgstr ""
1472
 
1473
- #: ../cerber-load.php:4163 ../cerber-load.php:4164
1474
  msgid "The WP Cerber security plugin has been deactivated"
1475
  msgstr ""
1476
 
1477
- #: ../cerber-load.php:4166
1478
  msgid "Not logged in"
1479
  msgstr ""
1480
 
1481
- #: ../cerber-load.php:4172
1482
  msgid "By user"
1483
  msgstr ""
1484
 
1485
- #: ../cerber-load.php:4173
1486
  msgid "From IP address"
1487
  msgstr ""
1488
 
1489
- #: ../cerber-load.php:4176
1490
  msgid "From country"
1491
  msgstr ""
1492
 
1493
- #: ../cerber-load.php:4180
1494
  msgid "The WP Cerber security plugin is now active"
1495
  msgstr ""
1496
 
1497
- #: ../cerber-load.php:4181 ../cerber-load.php:5157
1498
  msgid "WP Cerber is now active and has started protecting your site"
1499
  msgstr ""
1500
 
1501
- #: ../cerber-load.php:4188
 
 
 
 
1502
  msgid "New Custom login URL"
1503
  msgstr ""
1504
 
1505
- #: ../cerber-load.php:4192 ../cerber-load.php:4193
1506
  msgid "A new activity has been recorded"
1507
  msgstr ""
1508
 
1509
- #: ../cerber-load.php:4198
1510
  msgid "Weekly report"
1511
  msgstr ""
1512
 
1513
- #: ../cerber-load.php:4201 ../cerber-load.php:4211
1514
  msgid "To change reporting settings visit"
1515
  msgstr ""
1516
 
1517
- #: ../cerber-load.php:4208
1518
  msgid "Scanner Report"
1519
  msgstr ""
1520
 
1521
- #: ../cerber-load.php:4234
1522
  msgid "Your login page:"
1523
  msgstr ""
1524
 
1525
- #: ../cerber-load.php:4238
1526
  msgid "Your license is valid until"
1527
  msgstr ""
1528
 
1529
- #: ../cerber-load.php:4241
1530
  msgid "This message was sent by"
1531
  msgstr ""
1532
 
1533
- #: ../cerber-load.php:4262
1534
  #, php-format
1535
  msgid "Your last sign-in was %s from %s"
1536
  msgstr ""
1537
 
1538
- #: ../cerber-load.php:4332
1539
  msgid "Weekly Report"
1540
  msgstr ""
1541
 
1542
- #: ../cerber-load.php:4344
1543
  msgid "Activity details"
1544
  msgstr ""
1545
 
1546
- #: ../cerber-load.php:4358
1547
  msgid "Attempts to log in with non-existing usernames"
1548
  msgstr ""
1549
 
1550
- #: ../cerber-load.php:4860 ../cerber-users.php:970
 
 
 
 
1551
  msgid "User"
1552
  msgstr ""
1553
 
1554
- #: ../cerber-load.php:4864
1555
  msgid "Username used"
1556
  msgstr ""
1557
 
1558
- #: ../cerber-load.php:4868
1559
  msgid "Search string"
1560
  msgstr ""
1561
 
1562
- #: ../cerber-load.php:4889
1563
  msgid "To delete the alert, click here"
1564
  msgstr ""
1565
 
1566
- #: ../cerber-load.php:5107
1567
  #, php-format
1568
  msgid "The WP Cerber requires PHP %s or higher. You are running"
1569
  msgstr ""
1570
 
1571
- #: ../cerber-load.php:5111
1572
  #, php-format
1573
  msgid "The WP Cerber requires WordPress %s or higher. You are running"
1574
  msgstr ""
1575
 
1576
- #: ../cerber-load.php:5121
1577
  msgid "Can't activate WP Cerber due to a database error."
1578
  msgstr ""
1579
 
1580
- #: ../cerber-load.php:5158
1581
  msgid "Your IP address is added to the"
1582
  msgstr ""
1583
 
1584
- #: ../cerber-load.php:5174
1585
  msgid "Import settings"
1586
  msgstr ""
1587
 
1588
- #: ../cerber-load.php:5175 ../nexus/cerber-nexus.php:64
1589
  msgid "Enable slave mode"
1590
  msgstr ""
1591
 
@@ -1615,7 +1889,7 @@ msgctxt "e.g. blocked by John at 11:00"
1615
  msgid "blocked by %s at %s"
1616
  msgstr ""
1617
 
1618
- #: ../cerber-users.php:68 ../settings.php:508
1619
  msgid "User Message"
1620
  msgstr ""
1621
 
@@ -1667,7 +1941,7 @@ msgstr ""
1667
  msgid "Redirect user after logout"
1668
  msgstr ""
1669
 
1670
- #: ../cerber-users.php:432 ../settings.php:557
1671
  msgid "User session expiration time"
1672
  msgstr ""
1673
 
@@ -1719,1177 +1993,1193 @@ msgstr ""
1719
  msgid "number of logins"
1720
  msgstr ""
1721
 
1722
- #: ../cerber-users.php:539
1723
  msgid "Policies have been updated"
1724
  msgstr ""
1725
 
1726
- #: ../cerber-users.php:613
1727
  #, php-format
1728
  msgid "Session has been terminated"
1729
  msgid_plural "%s sessions have been terminated"
1730
  msgstr[0] ""
1731
  msgstr[1] ""
1732
 
1733
- #: ../cerber-users.php:943
1734
  msgid "WP Cerber Personal Data Eraser"
1735
  msgstr ""
1736
 
1737
- #: ../cerber-users.php:972
1738
  msgid "Created"
1739
  msgstr ""
1740
 
1741
- #: ../cerber-users.php:993
1742
  msgid "Terminate session"
1743
  msgstr ""
1744
 
1745
- #: ../cerber-users.php:994
1746
  msgid "Block user"
1747
  msgstr ""
1748
 
1749
- #: ../cerber-users.php:1062 ../nexus/cerber-slave-list.php:244
1750
  msgid "Search results for:"
1751
  msgstr ""
1752
 
1753
- #: ../cerber-users.php:1104
1754
  msgid "Profile"
1755
  msgstr ""
1756
 
1757
- #: ../cerber-users.php:1117
1758
  msgid "All Logins"
1759
  msgstr ""
1760
 
1761
- #: ../cerber-users.php:1118
1762
  msgid "User Activity"
1763
  msgstr ""
1764
 
1765
- #: ../cerber-users.php:1164
1766
  msgid "Terminate"
1767
  msgstr ""
1768
 
1769
- #: ../settings.php:103
1770
  msgid "All connected devices"
1771
  msgstr ""
1772
 
1773
- #: ../settings.php:106
1774
  msgid "No devices found"
1775
  msgstr ""
1776
 
1777
- #: ../settings.php:110
1778
  msgid "Not available"
1779
  msgstr ""
1780
 
1781
- #: ../settings.php:116
1782
  msgid ""
1783
  "Please enable Permalinks to use this feature. Set Permalink Settings to "
1784
  "something other than Default."
1785
  msgstr ""
1786
 
1787
- #: ../settings.php:119
1788
  msgid "Be careful about enabling these options."
1789
  msgstr ""
1790
 
1791
- #: ../settings.php:119
1792
  msgid "If you forget your Custom login URL, you will be unable to log in."
1793
  msgstr ""
1794
 
1795
- #: ../settings.php:122
1796
  msgid "These restrictions do not apply to IP addresses in the White IP Access List"
1797
  msgstr ""
1798
 
1799
- #: ../settings.php:126
1800
  msgid "Plugin initialization"
1801
  msgstr ""
1802
 
1803
- #: ../settings.php:129
1804
  msgid "Load security engine"
1805
  msgstr ""
1806
 
1807
- #: ../settings.php:132
1808
  msgid "Legacy mode"
1809
  msgstr ""
1810
 
1811
- #: ../settings.php:133
1812
  msgid "Standard mode"
1813
  msgstr ""
1814
 
1815
- #: ../settings.php:139
1816
  msgid "Limit login attempts"
1817
  msgstr ""
1818
 
1819
- #: ../settings.php:142
1820
  msgid "Limit"
1821
  msgstr ""
1822
 
1823
- #: ../settings.php:147
1824
  msgid "Lockout duration"
1825
  msgstr ""
1826
 
1827
- #: ../settings.php:148 ../settings.php:249
1828
  msgid "minutes"
1829
  msgstr ""
1830
 
1831
- #: ../settings.php:151
1832
  msgid "Aggressive lockout"
1833
  msgstr ""
1834
 
1835
- #: ../settings.php:155 ../settings.php:501 ../settings.php:701
1836
  msgid "Use White IP Access List"
1837
  msgstr ""
1838
 
1839
- #: ../settings.php:156
1840
  msgid "Apply limit login rules to IP addresses in the White IP Access List"
1841
  msgstr ""
1842
 
1843
- #: ../settings.php:162
1844
  msgid "Proactive security rules"
1845
  msgstr ""
1846
 
1847
- #: ../settings.php:163
1848
  msgid "Make your protection smarter!"
1849
  msgstr ""
1850
 
1851
- #: ../settings.php:166
1852
  msgid "Block subnet"
1853
  msgstr ""
1854
 
1855
- #: ../settings.php:167
1856
  msgid "Always block entire subnet Class C of intruders IP"
1857
  msgstr ""
1858
 
1859
- #: ../settings.php:171
1860
  msgid "Non-existing users"
1861
  msgstr ""
1862
 
1863
- #: ../settings.php:172
1864
  msgid "Immediately block IP when attempting to log in with a non-existing username"
1865
  msgstr ""
1866
 
1867
- #: ../settings.php:176
1868
  msgid "Disable dashboard redirection"
1869
  msgstr ""
1870
 
1871
- #: ../settings.php:177
1872
  msgid ""
1873
  "Disable automatic redirection to the login page when /wp-admin/ is requested "
1874
  "by an unauthorized request"
1875
  msgstr ""
1876
 
1877
- #: ../settings.php:181
1878
  msgid "Request wp-login.php"
1879
  msgstr ""
1880
 
1881
- #: ../settings.php:182
1882
  msgid "Immediately block IP after any request to wp-login.php"
1883
  msgstr ""
1884
 
1885
- #: ../settings.php:186
1886
  msgid "Display 404 page"
1887
  msgstr ""
1888
 
1889
- #: ../settings.php:189
1890
  msgid "Use 404 template from the active theme"
1891
  msgstr ""
1892
 
1893
- #: ../settings.php:190
1894
  msgid "Display simple 404 page"
1895
  msgstr ""
1896
 
1897
- #: ../settings.php:197
1898
  msgid "Custom login page"
1899
  msgstr ""
1900
 
1901
- #: ../settings.php:201
1902
  msgid "Custom login URL"
1903
  msgstr ""
1904
 
1905
- #: ../settings.php:202
1906
  msgid "must not overlap with the existing pages or posts slug"
1907
  msgstr ""
1908
 
1909
- #: ../settings.php:204
1910
  msgid ""
1911
  "Custom login URL may contain Latin alphanumeric characters, dashes and "
1912
  "underscores only"
1913
  msgstr ""
1914
 
1915
- #: ../settings.php:209
1916
  msgid "Disable wp-login.php"
1917
  msgstr ""
1918
 
1919
- #: ../settings.php:210
1920
  msgid "Block direct access to wp-login.php and return HTTP 404 Not Found Error"
1921
  msgstr ""
1922
 
1923
- #: ../settings.php:216
1924
  msgid "Site-specific settings"
1925
  msgstr ""
1926
 
1927
- #: ../settings.php:219
1928
  msgid "Site connection"
1929
  msgstr ""
1930
 
1931
- #: ../settings.php:224
1932
  msgid "Prefix for plugin cookies"
1933
  msgstr ""
1934
 
1935
- #: ../settings.php:225
1936
  msgid "Prefix may contain only Latin alphanumeric characters and underscores"
1937
  msgstr ""
1938
 
1939
- #: ../settings.php:234
1940
  msgid ""
1941
  "In the Citadel mode nobody is able to log in except IPs from the White IP "
1942
  "Access List. Active user sessions will not be affected."
1943
  msgstr ""
1944
 
1945
- #: ../settings.php:237
1946
  msgid "Enable authentication log monitoring"
1947
  msgstr ""
1948
 
1949
- #: ../settings.php:243
1950
  msgid "Threshold"
1951
  msgstr ""
1952
 
1953
- #: ../settings.php:248 ../cerber-scanner.php:3967
1954
- msgid "Duration"
1955
- msgstr ""
1956
-
1957
- #: ../settings.php:256
1958
  msgid "Send notification to admin email"
1959
  msgstr ""
1960
 
1961
- #: ../settings.php:269 ../settings.php:788
1962
  msgid "Keep log records of not logged in visitors for"
1963
  msgstr ""
1964
 
1965
- #: ../settings.php:270 ../settings.php:276 ../settings.php:789 ../settings.php:
1966
- #: 795 ../settings.php:865 ../settings.php:1056
1967
  msgid "days"
1968
  msgstr ""
1969
 
1970
- #: ../settings.php:275 ../settings.php:794
1971
  msgid "Keep log records of logged in users for"
1972
  msgstr ""
1973
 
1974
- #: ../settings.php:281
1975
  msgid "Cerber Lab connection"
1976
  msgstr ""
1977
 
1978
- #: ../settings.php:282
1979
  msgid "Send malicious IP addresses to the Cerber Lab"
1980
  msgstr ""
1981
 
1982
- #: ../settings.php:287
1983
  msgid "Cerber Lab protocol"
1984
  msgstr ""
1985
 
1986
- #: ../settings.php:295
1987
  msgid "Use file"
1988
  msgstr ""
1989
 
1990
- #: ../settings.php:296
1991
  msgid "Write failed login attempts to the file"
1992
  msgstr ""
1993
 
1994
- #: ../settings.php:302
1995
  msgid "Preferences"
1996
  msgstr ""
1997
 
1998
- #: ../settings.php:305
1999
  msgid "Drill down IP"
2000
  msgstr ""
2001
 
2002
- #: ../settings.php:306
2003
- msgid "Retrieve extra WHOIS information for IP"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2004
  msgstr ""
2005
 
2006
- #: ../settings.php:310
2007
- msgid "Date format"
2008
  msgstr ""
2009
 
2010
- #: ../settings.php:311
2011
- #, php-format
2012
- msgid "if empty, the default format %s will be used"
2013
  msgstr ""
2014
 
2015
- #: ../settings.php:317
2016
- msgid "Use English for admin interface"
2017
  msgstr ""
2018
 
2019
- #: ../settings.php:324
2020
  msgid "Hardening WordPress"
2021
  msgstr ""
2022
 
2023
- #: ../settings.php:328 ../settings.php:364
2024
  msgid "Stop user enumeration"
2025
  msgstr ""
2026
 
2027
- #: ../settings.php:329
2028
  msgid "Block access to user pages like /?author=n"
2029
  msgstr ""
2030
 
2031
- #: ../settings.php:333
2032
  msgid "Protect admin scripts"
2033
  msgstr ""
2034
 
2035
- #: ../settings.php:334
2036
  msgid "Block unauthorized access to load-scripts.php and load-styles.php"
2037
  msgstr ""
2038
 
2039
- #: ../settings.php:338
2040
  msgid "Disable PHP in uploads"
2041
  msgstr ""
2042
 
2043
- #: ../settings.php:339
2044
  msgid "Block execution of PHP scripts in the WordPress media folder"
2045
  msgstr ""
2046
 
2047
- #: ../settings.php:343
2048
  msgid "Disable PHP error displaying"
2049
  msgstr ""
2050
 
2051
- #: ../settings.php:347
2052
  msgid "Disable XML-RPC"
2053
  msgstr ""
2054
 
2055
- #: ../settings.php:348
2056
  msgid "Block access to the XML-RPC server (including Pingbacks and Trackbacks)"
2057
  msgstr ""
2058
 
2059
- #: ../settings.php:352
2060
  msgid "Disable feeds"
2061
  msgstr ""
2062
 
2063
- #: ../settings.php:353
2064
  msgid "Block access to the RSS, Atom and RDF feeds"
2065
  msgstr ""
2066
 
2067
- #: ../settings.php:359
2068
  msgid "Access to WordPress REST API"
2069
  msgstr ""
2070
 
2071
- #: ../settings.php:360
2072
  msgid ""
2073
  "Restrict or completely block access to the WordPress REST API according to "
2074
  "your needs"
2075
  msgstr ""
2076
 
2077
- #: ../settings.php:365
2078
  msgid "Block access to users' data via REST API"
2079
  msgstr ""
2080
 
2081
- #: ../settings.php:369
2082
  msgid "Disable REST API"
2083
  msgstr ""
2084
 
2085
- #: ../settings.php:370
2086
  msgid "Block access to WordPress REST API except any of the following"
2087
  msgstr ""
2088
 
2089
- #: ../settings.php:375
2090
  msgid "Allow REST API for logged in users"
2091
  msgstr ""
2092
 
2093
- #: ../settings.php:380
2094
  msgid "Allow REST API for these roles"
2095
  msgstr ""
2096
 
2097
- #: ../settings.php:385
2098
  msgid "Allow these namespaces"
2099
  msgstr ""
2100
 
2101
- #: ../settings.php:389
2102
  msgid ""
2103
  "Specify REST API namespaces to be allowed if REST API is disabled. One "
2104
  "string per line."
2105
  msgstr ""
2106
 
2107
- #: ../settings.php:396
2108
  msgid "Protect user accounts"
2109
  msgstr ""
2110
 
2111
- #: ../settings.php:401
2112
  msgid ""
2113
  "Restrict user account creation and user management with the following "
2114
  "policies"
2115
  msgstr ""
2116
 
2117
- #: ../settings.php:407
2118
  msgid "User registrations are limited to these roles"
2119
  msgstr ""
2120
 
2121
- #: ../settings.php:413
2122
  msgid "Users with these roles are permitted to create new accounts"
2123
  msgstr ""
2124
 
2125
- #: ../settings.php:418
2126
  msgid "Users with these roles are permitted to change sensitive user data"
2127
  msgstr ""
2128
 
2129
- #: ../settings.php:423 ../settings.php:451 ../settings.php:480
2130
  msgid "Do not apply these policies to the IP addresses in the White IP Access List"
2131
  msgstr ""
2132
 
2133
- #: ../settings.php:431
2134
  msgid "Protect user roles"
2135
  msgstr ""
2136
 
2137
- #: ../settings.php:435
2138
  msgid "Restrict roles and capabilities management with the following policies"
2139
  msgstr ""
2140
 
2141
- #: ../settings.php:441
2142
  msgid "Users with these roles are permitted to add new roles"
2143
  msgstr ""
2144
 
2145
- #: ../settings.php:446
2146
  msgid "Users with these roles are permitted to change role capabilities"
2147
  msgstr ""
2148
 
2149
- #: ../settings.php:459
2150
  msgid "Protect site settings"
2151
  msgstr ""
2152
 
2153
- #: ../settings.php:463
2154
  msgid "Restrict updating site settings with the following policies"
2155
  msgstr ""
2156
 
2157
- #: ../settings.php:469
2158
  msgid "Users with these roles are permitted to change protected settings"
2159
  msgstr ""
2160
 
2161
- #: ../settings.php:474
2162
  msgid "Protected settings"
2163
  msgstr ""
2164
 
2165
- #: ../settings.php:494
2166
  msgid "Authorized users only"
2167
  msgstr ""
2168
 
2169
- #: ../settings.php:495
2170
  msgid "Only registered and logged in website users have access to the website"
2171
  msgstr ""
2172
 
2173
- #: ../settings.php:502
2174
  msgid "Do not apply these policy to the IP addresses in the White IP Access List"
2175
  msgstr ""
2176
 
2177
- #: ../settings.php:512 ../settings.php:1423
2178
  msgid "Only registered and logged in users are allowed to view this website"
2179
  msgstr ""
2180
 
2181
- #: ../settings.php:517
2182
  msgid "Redirect to URL"
2183
  msgstr ""
2184
 
2185
- #: ../settings.php:526
2186
  msgid "Registration limit"
2187
  msgstr ""
2188
 
2189
- #: ../settings.php:532
2190
  msgid "Restrict email addresses"
2191
  msgstr ""
2192
 
2193
- #: ../settings.php:535
2194
  msgid "No restrictions"
2195
  msgstr ""
2196
 
2197
- #: ../settings.php:536
2198
  msgid "Deny all email addresses that match the following"
2199
  msgstr ""
2200
 
2201
- #: ../settings.php:537
2202
  msgid "Permit only email addresses that match the following"
2203
  msgstr ""
2204
 
2205
- #: ../settings.php:542
2206
  msgid ""
2207
  "Specify email addresses, wildcards or REGEX patterns. Use comma to separate "
2208
  "items."
2209
  msgstr ""
2210
 
2211
- #: ../settings.php:542 ../settings.php:550
2212
  msgid "To specify a REGEX pattern wrap a pattern in two forward slashes."
2213
  msgstr ""
2214
 
2215
- #: ../settings.php:549
2216
  msgid "Prohibited usernames"
2217
  msgstr ""
2218
 
2219
- #: ../settings.php:550
2220
  msgid ""
2221
  "Usernames from this list are not allowed to log in or register. Any IP "
2222
  "address, have tried to use any of these usernames, will be immediately "
2223
  "blocked. Use comma to separate logins."
2224
  msgstr ""
2225
 
2226
- #: ../settings.php:558
2227
  msgid "minutes (leave empty to use the default WordPress value)"
2228
  msgstr ""
2229
 
2230
- #: ../settings.php:564
2231
  msgid "Sort users in dashboard"
2232
  msgstr ""
2233
 
2234
- #: ../settings.php:565
2235
  msgid "by date of registration"
2236
  msgstr ""
2237
 
2238
- #: ../settings.php:573
2239
  msgid "Personal Data"
2240
  msgstr ""
2241
 
2242
- #: ../settings.php:575
2243
  msgid ""
2244
  "These features help your organization to be in compliance with personal data "
2245
  "protection laws"
2246
  msgstr ""
2247
 
2248
- #: ../settings.php:579
2249
  msgid "Enable data erase"
2250
  msgstr ""
2251
 
2252
- #: ../settings.php:586
2253
  msgid "Terminate user sessions"
2254
  msgstr ""
2255
 
2256
- #: ../settings.php:587
2257
  msgid "Delete user sessions data when user data is erased"
2258
  msgstr ""
2259
 
2260
- #: ../settings.php:593
2261
  msgid "Enable data export"
2262
  msgstr ""
2263
 
2264
- #: ../settings.php:600
2265
  msgid "Include activity log events"
2266
  msgstr ""
2267
 
2268
- #: ../settings.php:606
2269
  msgid "Include traffic log entries"
2270
  msgstr ""
2271
 
2272
- #: ../settings.php:609
2273
  msgid "Request URL"
2274
  msgstr ""
2275
 
2276
- #: ../settings.php:610
2277
  msgid "Form fields data"
2278
  msgstr ""
2279
 
2280
- #: ../settings.php:611
2281
  msgid "Cookies"
2282
  msgstr ""
2283
 
2284
- #: ../settings.php:619
2285
  msgid "Email notifications"
2286
  msgstr ""
2287
 
2288
- #: ../settings.php:624
2289
  msgid "Lockout notifications"
2290
  msgstr ""
2291
 
2292
- #: ../settings.php:628 ../settings.php:675 ../settings.php:920
2293
  msgid "Email Address"
2294
  msgstr ""
2295
 
2296
- #: ../settings.php:629 ../settings.php:677 ../settings.php:760 ../settings.php:922
2297
  msgid "Use comma to specify multiple values"
2298
  msgstr ""
2299
 
2300
- #: ../settings.php:633
2301
  #, php-format
2302
  msgid "if empty, the website administrator email %s will be used"
2303
  msgstr ""
2304
 
2305
- #: ../settings.php:636
2306
  msgid "Notification limit"
2307
  msgstr ""
2308
 
2309
- #: ../settings.php:637
2310
  msgid "notifications are allowed per hour (0 means unlimited)"
2311
  msgstr ""
2312
 
2313
- #: ../settings.php:641
2314
  msgid "New version is available"
2315
  msgstr ""
2316
 
2317
- #: ../settings.php:647
2318
  msgid "Push notifications"
2319
  msgstr ""
2320
 
2321
- #: ../settings.php:648
2322
  msgid "Get notified instantly with mobile and desktop notifications"
2323
  msgstr ""
2324
 
2325
- #: ../settings.php:652
2326
  msgid "Pushbullet access token"
2327
  msgstr ""
2328
 
2329
- #: ../settings.php:655
2330
  msgid "Pushbullet device"
2331
  msgstr ""
2332
 
2333
- #: ../settings.php:662
2334
  msgid "Weekly reports"
2335
  msgstr ""
2336
 
2337
- #: ../settings.php:663
2338
  msgid ""
2339
  "Weekly report is a summary of all activities and suspicious events occurred "
2340
  "during the last seven days"
2341
  msgstr ""
2342
 
2343
- #: ../settings.php:666
2344
  msgid "Enable reporting"
2345
  msgstr ""
2346
 
2347
- #: ../settings.php:670
2348
  msgid "Send reports on"
2349
  msgstr ""
2350
 
2351
- #: ../settings.php:676 ../settings.php:921
2352
  msgid "if empty, the email addresses from the notification settings will be used"
2353
  msgstr ""
2354
 
2355
- #: ../settings.php:687
2356
  msgid "Traffic Inspection"
2357
  msgstr ""
2358
 
2359
- #: ../settings.php:688
2360
  msgid ""
2361
  "Traffic Inspector is a context-aware web application firewall (WAF) that "
2362
  "protects your website by recognizing and denying malicious HTTP requests"
2363
  msgstr ""
2364
 
2365
- #: ../settings.php:692
2366
  msgid "Enable traffic inspection"
2367
  msgstr ""
2368
 
2369
- #: ../settings.php:696 ../settings.php:724
2370
  msgid "Maximum compatibility"
2371
  msgstr ""
2372
 
2373
- #: ../settings.php:697 ../settings.php:725
2374
  msgid "Maximum security"
2375
  msgstr ""
2376
 
2377
- #: ../settings.php:705
2378
  msgid "Request whitelist"
2379
  msgstr ""
2380
 
2381
- #: ../settings.php:709
2382
  msgid ""
2383
  "Enter a request URI to exclude the request from inspection. One item per "
2384
  "line."
2385
  msgstr ""
2386
 
2387
- #: ../settings.php:709
2388
  msgid "To specify a REGEX pattern, enclose a whole line in two braces."
2389
  msgstr ""
2390
 
2391
- #: ../settings.php:715
2392
  msgid "Erroneous Request Shielding"
2393
  msgstr ""
2394
 
2395
- #: ../settings.php:717
2396
  msgid ""
2397
  "Block IP addresses that send excessive requests for non-existing pages or "
2398
  "scan website for security breaches"
2399
  msgstr ""
2400
 
2401
- #: ../settings.php:720
2402
  msgid "Enable error shielding"
2403
  msgstr ""
2404
 
2405
- #: ../settings.php:729
2406
  msgid "Ignore logged in users"
2407
  msgstr ""
2408
 
2409
- #: ../settings.php:736
2410
  msgid "Traffic Logging"
2411
  msgstr ""
2412
 
2413
- #: ../settings.php:737
2414
  msgid ""
2415
  "Enable optional traffic logging if you need to monitor suspicious and "
2416
  "malicious activity or solve security issues"
2417
  msgstr ""
2418
 
2419
- #: ../settings.php:741
2420
  msgid "Logging mode"
2421
  msgstr ""
2422
 
2423
- #: ../settings.php:744
2424
  msgid "Logging disabled"
2425
  msgstr ""
2426
 
2427
- #: ../settings.php:745
2428
  msgid "Smart"
2429
  msgstr ""
2430
 
2431
- #: ../settings.php:746
2432
  msgid "All traffic"
2433
  msgstr ""
2434
 
2435
- #: ../settings.php:750
2436
  msgid "Ignore crawlers"
2437
  msgstr ""
2438
 
2439
- #: ../settings.php:754
2440
  msgid "Save request fields"
2441
  msgstr ""
2442
 
2443
- #: ../settings.php:758
2444
  msgid "Mask these form fields"
2445
  msgstr ""
2446
 
2447
- #: ../settings.php:765
2448
  msgid "Save request headers"
2449
  msgstr ""
2450
 
2451
- #: ../settings.php:770
2452
  msgid "Save $_SERVER"
2453
  msgstr ""
2454
 
2455
- #: ../settings.php:774
2456
  msgid "Save request cookies"
2457
  msgstr ""
2458
 
2459
- #: ../settings.php:778
2460
  msgid "Save software errors"
2461
  msgstr ""
2462
 
2463
- #: ../settings.php:782
2464
  msgid "Page generation time threshold"
2465
  msgstr ""
2466
 
2467
- #: ../settings.php:783
2468
  msgid "milliseconds"
2469
  msgstr ""
2470
 
2471
- #: ../settings.php:803
2472
  msgid "Scanner settings"
2473
  msgstr ""
2474
 
2475
- #: ../settings.php:804
2476
  msgid ""
2477
  "The scanner monitors file changes, verifies the integrity of WordPress, "
2478
  "plugins, and themes, and detects malware"
2479
  msgstr ""
2480
 
2481
- #: ../settings.php:808
2482
  msgid "Custom signatures"
2483
  msgstr ""
2484
 
2485
- #: ../settings.php:812
2486
  msgid ""
2487
  "Specify custom PHP code signatures. One item per line. To specify a REGEX "
2488
  "pattern, enclose a whole line in two braces."
2489
  msgstr ""
2490
 
2491
- #: ../settings.php:815
2492
  msgid "Unwanted file extensions"
2493
  msgstr ""
2494
 
2495
- #: ../settings.php:819
2496
  msgid ""
2497
  "Specify file extensions to search for. Full scan only. Use comma to separate "
2498
  "items."
2499
  msgstr ""
2500
 
2501
- #: ../settings.php:822
2502
  msgid "Directories to exclude"
2503
  msgstr ""
2504
 
2505
- #: ../settings.php:826
2506
  msgid "Specify directories to exclude from scanning. One directory per line."
2507
  msgstr ""
2508
 
2509
- #: ../settings.php:829
2510
  msgid "Monitor new files"
2511
  msgstr ""
2512
 
2513
- #: ../settings.php:833 ../settings.php:842
2514
  msgid "Executable files"
2515
  msgstr ""
2516
 
2517
- #: ../settings.php:834 ../settings.php:843
2518
  msgid "All files"
2519
  msgstr ""
2520
 
2521
- #: ../settings.php:838
2522
  msgid "Monitor modified files"
2523
  msgstr ""
2524
 
2525
- #: ../settings.php:847
2526
  msgid "Change file permissions when necessary"
2527
  msgstr ""
2528
 
2529
- #: ../settings.php:851
2530
  msgid "Scan temporary directory"
2531
  msgstr ""
2532
 
2533
- #: ../settings.php:855
2534
  msgid "Scan session directory"
2535
  msgstr ""
2536
 
2537
- #: ../settings.php:859 ../settings.php:1161 ../settings.php:1188
2538
  msgid "Enable diagnostic logging"
2539
  msgstr ""
2540
 
2541
- #: ../settings.php:863
2542
  msgid "Delete quarantined files after"
2543
  msgstr ""
2544
 
2545
- #: ../settings.php:872
2546
  msgid "Automated recurring scan schedule"
2547
  msgstr ""
2548
 
2549
- #: ../settings.php:873
2550
  msgid ""
2551
  "The scanner automatically scans the website, removes malware and sends email "
2552
  "reports with the results of a scan"
2553
  msgstr ""
2554
 
2555
- #: ../settings.php:877
2556
  msgid "Launch Quick Scan"
2557
  msgstr ""
2558
 
2559
- #: ../settings.php:882
2560
  msgid "Launch Full Scan"
2561
  msgstr ""
2562
 
2563
- #: ../settings.php:889
2564
  msgid "Scan results reporting"
2565
  msgstr ""
2566
 
2567
- #: ../settings.php:890
2568
  msgid ""
2569
  "Configure what issues to include in the email report and the condition for "
2570
  "sending reports"
2571
  msgstr ""
2572
 
2573
- #: ../settings.php:894
2574
  msgid "Report an issue if any of the following is true"
2575
  msgstr ""
2576
 
2577
- #: ../settings.php:897 ../settings.php:943
2578
  msgid "Low severity"
2579
  msgstr ""
2580
 
2581
- #: ../settings.php:898 ../settings.php:944
2582
  msgid "Medium severity"
2583
  msgstr ""
2584
 
2585
- #: ../settings.php:899 ../settings.php:945
2586
  msgid "High severity"
2587
  msgstr ""
2588
 
2589
- #: ../settings.php:903
2590
  msgid "Send email report"
2591
  msgstr ""
2592
 
2593
- #: ../settings.php:906
2594
  msgid "After every scan"
2595
  msgstr ""
2596
 
2597
- #: ../settings.php:907
2598
  msgid "If any changes in scan results occurred"
2599
  msgstr ""
2600
 
2601
- #: ../settings.php:908
2602
  msgid "If new issues found"
2603
  msgstr ""
2604
 
2605
- #: ../settings.php:912
2606
  msgid "Include file sizes"
2607
  msgstr ""
2608
 
2609
- #: ../settings.php:916
2610
  msgid "Include scan errors"
2611
  msgstr ""
2612
 
2613
- #: ../settings.php:931
2614
  msgid "Automatic cleanup of malware and suspicious files"
2615
  msgstr ""
2616
 
2617
- #: ../settings.php:932
2618
  msgid ""
2619
  "These policies are automatically enforced at the end of every scheduled scan "
2620
  "based on its results. All affected files are moved to the quarantine"
2621
  msgstr ""
2622
 
2623
- #: ../settings.php:936
2624
  msgid "Delete unattended files"
2625
  msgstr ""
2626
 
2627
- #: ../settings.php:940
2628
  msgid "Files in the uploads folder"
2629
  msgstr ""
2630
 
2631
- #: ../settings.php:949
2632
  msgid "Files with unwanted extensions"
2633
  msgstr ""
2634
 
2635
- #: ../settings.php:955
2636
  msgid "Automatic recovery of modified and infected files"
2637
  msgstr ""
2638
 
2639
- #: ../settings.php:958
2640
  msgid "Recover WordPress files"
2641
  msgstr ""
2642
 
2643
- #: ../settings.php:962
2644
  msgid "Recover plugins files"
2645
  msgstr ""
2646
 
2647
- #: ../settings.php:968
2648
  msgid "Exclusions"
2649
  msgstr ""
2650
 
2651
- #: ../settings.php:969
2652
  msgid "These files will never be deleted during automatic cleanup."
2653
  msgstr ""
2654
 
2655
- #: ../settings.php:972
2656
  msgid "Files in the temporary directory"
2657
  msgstr ""
2658
 
2659
- #: ../settings.php:976
2660
  msgid "Files in the sessions directory"
2661
  msgstr ""
2662
 
2663
- #: ../settings.php:980
2664
  msgid "Files in these directories"
2665
  msgstr ""
2666
 
2667
- #: ../settings.php:984
2668
  msgid "Use absolute paths. One item per line."
2669
  msgstr ""
2670
 
2671
- #: ../settings.php:987
2672
  msgid "Files with these extensions"
2673
  msgstr ""
2674
 
2675
- #: ../settings.php:991
2676
  msgid "Use comma to separate items."
2677
  msgstr ""
2678
 
2679
- #: ../settings.php:998
2680
  msgid "Cerber anti-spam engine"
2681
  msgstr ""
2682
 
2683
- #: ../settings.php:999
2684
  msgid "Spam protection for comment, registration and contact forms on a website"
2685
  msgstr ""
2686
 
2687
- #: ../settings.php:1003
2688
  msgid "Comment form"
2689
  msgstr ""
2690
 
2691
- #: ../settings.php:1004
2692
  msgid "Protect comment form with bot detection engine"
2693
  msgstr ""
2694
 
2695
- #: ../settings.php:1008 ../settings.php:1080
2696
  msgid "Registration form"
2697
  msgstr ""
2698
 
2699
- #: ../settings.php:1009
2700
  msgid "Protect registration form with bot detection engine"
2701
  msgstr ""
2702
 
2703
- #: ../settings.php:1013
2704
  msgid "Other forms"
2705
  msgstr ""
2706
 
2707
- #: ../settings.php:1014
2708
  msgid "Protect all forms on the website with bot detection engine"
2709
  msgstr ""
2710
 
2711
- #: ../settings.php:1020
2712
  msgid "Adjust anti-spam engine"
2713
  msgstr ""
2714
 
2715
- #: ../settings.php:1021
2716
  msgid ""
2717
  "These settings enable you to fine-tune the behavior of anti-spam algorithms "
2718
  "and avoid false positives"
2719
  msgstr ""
2720
 
2721
- #: ../settings.php:1024
2722
  msgid "Safe mode"
2723
  msgstr ""
2724
 
2725
- #: ../settings.php:1025
2726
  msgid "Use less restrictive policies (allow AJAX)"
2727
  msgstr ""
2728
 
2729
- #: ../settings.php:1030
2730
  msgid "Disable bot detection engine for logged in users"
2731
  msgstr ""
2732
 
2733
- #: ../settings.php:1034
2734
  msgid "Query whitelist"
2735
  msgstr ""
2736
 
2737
- #: ../settings.php:1035
2738
  msgid ""
2739
  "Enter a part of query string or query path to exclude a request from "
2740
  "inspection by the engine. One item per line."
2741
  msgstr ""
2742
 
2743
- #: ../settings.php:1044
2744
  msgid "Comment processing"
2745
  msgstr ""
2746
 
2747
- #: ../settings.php:1045
2748
  msgid "How the plugin processes comments submitted through the standard comment form"
2749
  msgstr ""
2750
 
2751
- #: ../settings.php:1048
2752
  msgid "If a spam comment detected"
2753
  msgstr ""
2754
 
2755
- #: ../settings.php:1050
2756
  msgid "Deny it completely"
2757
  msgstr ""
2758
 
2759
- #: ../settings.php:1050
2760
  msgid "Mark it as spam"
2761
  msgstr ""
2762
 
2763
- #: ../settings.php:1053
2764
  msgid "Trash spam comments"
2765
  msgstr ""
2766
 
2767
- #: ../settings.php:1055
2768
  msgid "Move spam comments to trash after"
2769
  msgstr ""
2770
 
2771
- #: ../settings.php:1062
2772
  msgid "reCAPTCHA settings"
2773
  msgstr ""
2774
 
2775
- #: ../settings.php:1063
2776
  msgid ""
2777
  "Before you can start using reCAPTCHA, you have to obtain Site key and Secret "
2778
  "key on the Google website"
2779
  msgstr ""
2780
 
2781
- #: ../settings.php:1067
2782
  msgid "Site key"
2783
  msgstr ""
2784
 
2785
- #: ../settings.php:1071
2786
  msgid "Secret key"
2787
  msgstr ""
2788
 
2789
- #: ../settings.php:1075
2790
  msgid "Invisible reCAPTCHA"
2791
  msgstr ""
2792
 
2793
- #: ../settings.php:1076
2794
  msgid "Enable invisible reCAPTCHA"
2795
  msgstr ""
2796
 
2797
- #: ../settings.php:1076
2798
  msgid ""
2799
  "(do not enable it unless you get and enter the Site and Secret keys for the "
2800
  "invisible version)"
2801
  msgstr ""
2802
 
2803
- #: ../settings.php:1081
2804
  msgid "Enable reCAPTCHA for WordPress registration form"
2805
  msgstr ""
2806
 
2807
- #: ../settings.php:1086
2808
  msgid "Enable reCAPTCHA for WooCommerce registration form"
2809
  msgstr ""
2810
 
2811
- #: ../settings.php:1090
2812
  msgid "Lost password form"
2813
  msgstr ""
2814
 
2815
- #: ../settings.php:1091
2816
  msgid "Enable reCAPTCHA for WordPress lost password form"
2817
  msgstr ""
2818
 
2819
- #: ../settings.php:1096
2820
  msgid "Enable reCAPTCHA for WooCommerce lost password form"
2821
  msgstr ""
2822
 
2823
- #: ../settings.php:1100
2824
  msgid "Login form"
2825
  msgstr ""
2826
 
2827
- #: ../settings.php:1101
2828
  msgid "Enable reCAPTCHA for WordPress login form"
2829
  msgstr ""
2830
 
2831
- #: ../settings.php:1106
2832
  msgid "Enable reCAPTCHA for WooCommerce login form"
2833
  msgstr ""
2834
 
2835
- #: ../settings.php:1111
2836
  msgid "Enable reCAPTCHA for WordPress comment form"
2837
  msgstr ""
2838
 
2839
- #: ../settings.php:1116
2840
  msgid "Disable reCAPTCHA for logged in users"
2841
  msgstr ""
2842
 
2843
- #: ../settings.php:1120
2844
  msgid "Limit attempts"
2845
  msgstr ""
2846
 
2847
- #: ../settings.php:1121
2848
  #, php-format
2849
  msgid "Lock out IP address for %s minutes after %s failed attempts within %s minutes"
2850
  msgstr ""
2851
 
2852
- #: ../settings.php:1128
2853
  msgid "Master settings"
2854
  msgstr ""
2855
 
2856
- #: ../settings.php:1136
2857
  msgid "Return to the website list"
2858
  msgstr ""
2859
 
2860
- #: ../settings.php:1140
2861
  msgid "Show \"Switched to\" notification"
2862
  msgstr ""
2863
 
2864
- #: ../settings.php:1144
2865
  msgid "Add @ site to the page title"
2866
  msgstr ""
2867
 
2868
- #: ../settings.php:1148
2869
  msgid "Use master language"
2870
  msgstr ""
2871
 
2872
- #: ../settings.php:1171
2873
  msgid "Limit access by IP address"
2874
  msgstr ""
2875
 
2876
- #: ../settings.php:1177
2877
  msgid "Access to this website"
2878
  msgstr ""
2879
 
2880
- #: ../settings.php:1180
2881
  msgid "Full access mode"
2882
  msgstr ""
2883
 
2884
- #: ../settings.php:1181
2885
  msgid "Read-only mode"
2886
  msgstr ""
2887
 
2888
- #: ../settings.php:1201
2889
  msgid "The full access mode requires the PRO version of WP Cerber"
2890
  msgstr ""
2891
 
2892
- #: ../settings.php:1269
2893
  msgid "Any activity"
2894
  msgstr ""
2895
 
@@ -3020,40 +3310,49 @@ msgstr ""
3020
  msgid "Select file to import."
3021
  msgstr ""
3022
 
3023
- #: ../cerber-tools.php:45 ../cerber-scanner.php:4115
3024
- #, php-format
3025
- msgid "Maximum upload file size: %s."
3026
- msgstr ""
3027
-
3028
  #: ../cerber-tools.php:48
3029
  msgid "What do you want to import?"
3030
  msgstr ""
3031
 
3032
- #: ../cerber-tools.php:50 ../cerber-scanner.php:4118
3033
- msgid "Upload file"
 
 
 
 
 
 
 
 
 
 
3034
  msgstr ""
3035
 
3036
- #: ../cerber-tools.php:58
 
 
 
 
3037
  msgid "Load entries"
3038
  msgstr ""
3039
 
3040
- #: ../cerber-tools.php:177
3041
  msgid "No file was uploaded or file is corrupted"
3042
  msgstr ""
3043
 
3044
- #: ../cerber-tools.php:216
3045
  msgid "A database error occurred while importing access list entries"
3046
  msgstr ""
3047
 
3048
- #: ../cerber-tools.php:224
3049
  msgid "Settings has imported successfully from"
3050
  msgstr ""
3051
 
3052
- #: ../cerber-tools.php:231
3053
  msgid "Error while parsing file"
3054
  msgstr ""
3055
 
3056
- #: ../cerber-tools.php:319
3057
  msgid "Unsubscribe"
3058
  msgstr ""
3059
 
@@ -3125,10 +3424,6 @@ msgstr ""
3125
  msgid "Switch to"
3126
  msgstr ""
3127
 
3128
- #: ../nexus/cerber-slave-list.php:337 ../cerber-scanner.php:3983
3129
- msgid "Vulnerabilities"
3130
- msgstr ""
3131
-
3132
  #: ../nexus/cerber-slave-list.php:413
3133
  msgid "No websites configured."
3134
  msgstr ""
@@ -3193,74 +3488,74 @@ msgstr ""
3193
  msgid "Address"
3194
  msgstr ""
3195
 
3196
- #: ../nexus/cerber-nexus-master.php:285
3197
  msgid "Security access token is invalid"
3198
  msgstr ""
3199
 
3200
- #: ../nexus/cerber-nexus-master.php:315
3201
  msgid "The website you are trying to add is already in the list"
3202
  msgstr ""
3203
 
3204
- #: ../nexus/cerber-nexus-master.php:324
3205
  msgid "The website has been added successfully"
3206
  msgstr ""
3207
 
3208
- #: ../nexus/cerber-nexus-master.php:325
3209
  msgid "Click to edit"
3210
  msgstr ""
3211
 
3212
- #: ../nexus/cerber-nexus-master.php:326
3213
  msgid "Switch to the Dashboard"
3214
  msgstr ""
3215
 
3216
- #: ../nexus/cerber-nexus-master.php:329
3217
  msgid ""
3218
  "Keep in mind: You have added the website that does not support SSL "
3219
  "encryption. This may lead to data leakage."
3220
  msgstr ""
3221
 
3222
- #: ../nexus/cerber-nexus-master.php:448
3223
  #, php-format
3224
  msgid "Website has been deleted"
3225
  msgid_plural "%s websites have been deleted"
3226
  msgstr[0] ""
3227
  msgstr[1] ""
3228
 
3229
- #: ../nexus/cerber-nexus-master.php:692
3230
  msgid "Invalid response from the slave website"
3231
  msgstr ""
3232
 
3233
- #: ../nexus/cerber-nexus-master.php:1024
3234
  #, php-format
3235
  msgid "You have switched to %s"
3236
  msgstr ""
3237
 
3238
- #: ../nexus/cerber-nexus-master.php:1034
3239
  msgid "You have switched back to the master website"
3240
  msgstr ""
3241
 
3242
- #: ../nexus/cerber-nexus-master.php:1250
3243
  msgid "You are here:"
3244
  msgstr ""
3245
 
3246
- #: ../nexus/cerber-nexus-master.php:1253 ../nexus/cerber-nexus.php:92 ..
3247
  #: /nexus/cerber-nexus.php:102
3248
  msgid "My Websites"
3249
  msgstr ""
3250
 
3251
- #: ../nexus/cerber-nexus-master.php:1268
3252
  msgid "Visit Site"
3253
  msgstr ""
3254
 
3255
- #: ../nexus/cerber-nexus-master.php:1334
3256
  msgid "Are you sure you want to delete selected websites?"
3257
  msgstr ""
3258
 
3259
- #: ../nexus/cerber-nexus-master.php:1378
3260
  msgid "A newer version is available"
3261
  msgstr ""
3262
 
3263
- #: ../nexus/cerber-nexus-master.php:1400 ../nexus/cerber-nexus-master.php:1408
3264
  msgid "Active plugins and updates on"
3265
  msgstr ""
3266
 
@@ -3326,163 +3621,120 @@ msgstr ""
3326
  msgid "Install the access token on the master website."
3327
  msgstr ""
3328
 
3329
- #: ../cerber-scanner.php:95
3330
- msgid "Currently a scheduled scan in progress. Please wait until it is finished."
3331
- msgstr ""
3332
-
3333
- #: ../cerber-scanner.php:99
3334
- #, php-format
3335
- msgid "Previous scan started %s has not been completed. Continue scanning?"
3336
- msgstr ""
3337
-
3338
- #: ../cerber-scanner.php:108
3339
- msgid ""
3340
- "It seems this website has never been scanned. To start scanning click the "
3341
- "button below."
3342
- msgstr ""
3343
-
3344
- #: ../cerber-scanner.php:111
3345
- msgid "Start Quick Scan"
3346
- msgstr ""
3347
-
3348
- #: ../cerber-scanner.php:112
3349
- msgid "Start Full Scan"
3350
- msgstr ""
3351
-
3352
- #: ../cerber-scanner.php:113
3353
- msgid "Stop Scanning"
3354
- msgstr ""
3355
-
3356
- #: ../cerber-scanner.php:114
3357
- msgid "Continue Scanning"
3358
- msgstr ""
3359
-
3360
- #: ../cerber-scanner.php:150
3361
- msgid "Delete"
3362
- msgstr ""
3363
-
3364
- #: ../cerber-scanner.php:153
3365
- msgid "Ignore"
3366
- msgstr ""
3367
-
3368
- #: ../cerber-scanner.php:1566
3369
  msgid "Verified"
3370
  msgstr ""
3371
 
3372
- #: ../cerber-scanner.php:1572
3373
  msgid "Vulnerability found"
3374
  msgstr ""
3375
 
3376
- #: ../cerber-scanner.php:1573
3377
  msgid "Integrity data not found"
3378
  msgstr ""
3379
 
3380
- #: ../cerber-scanner.php:1574
3381
  msgid "Unable to check the integrity of the plugin due to a network error"
3382
  msgstr ""
3383
 
3384
- #: ../cerber-scanner.php:1575
3385
  msgid "Unable to check the integrity of WordPress files due to a network error"
3386
  msgstr ""
3387
 
3388
- #: ../cerber-scanner.php:1576
3389
  msgid "Unable to check the integrity of the theme due to a network error"
3390
  msgstr ""
3391
 
3392
- #: ../cerber-scanner.php:1577
3393
  msgid "Unable to check the integrity due to a DB error"
3394
  msgstr ""
3395
 
3396
- #: ../cerber-scanner.php:1579
3397
  msgid "Local file doesn't exist"
3398
  msgstr ""
3399
 
3400
- #: ../cerber-scanner.php:1581
3401
  msgid "Unable to process file"
3402
  msgstr ""
3403
 
3404
- #: ../cerber-scanner.php:1582 ../cerber-scanner.php:5184
3405
  msgid "Unable to open file"
3406
  msgstr ""
3407
 
3408
- #: ../cerber-scanner.php:1584 ../cerber-scanner.php:3995
3409
- msgid "Checksum mismatch"
3410
- msgstr ""
3411
-
3412
- #: ../cerber-scanner.php:1587
3413
  msgid "Suspicious code found"
3414
  msgstr ""
3415
 
3416
- #: ../cerber-scanner.php:1588
3417
  msgid "Malicious code found"
3418
  msgstr ""
3419
 
3420
- #: ../cerber-scanner.php:1589
3421
  msgid "Unattended suspicious file"
3422
  msgstr ""
3423
 
3424
- #: ../cerber-scanner.php:1590
3425
  msgid "Executable code found"
3426
  msgstr ""
3427
 
3428
- #: ../cerber-scanner.php:1593 ../cerber-scanner.php:2823
3429
  msgid "Suspicious directives found"
3430
  msgstr ""
3431
 
3432
- #: ../cerber-scanner.php:1594
3433
  msgid "Unwanted file extension"
3434
  msgstr ""
3435
 
3436
- #: ../cerber-scanner.php:1596
3437
  msgid "Content has been modified"
3438
  msgstr ""
3439
 
3440
- #: ../cerber-scanner.php:1597
3441
  msgid "New file"
3442
  msgstr ""
3443
 
3444
- #: ../cerber-scanner.php:1599
3445
  msgid "Unable to delete"
3446
  msgstr ""
3447
 
3448
- #: ../cerber-scanner.php:1600
3449
  msgid "File deleted"
3450
  msgstr ""
3451
 
3452
- #: ../cerber-scanner.php:1601
3453
  msgid "File recovered"
3454
  msgstr ""
3455
 
3456
- #: ../cerber-scanner.php:1621
3457
  msgid "Every hour"
3458
  msgstr ""
3459
 
3460
- #: ../cerber-scanner.php:1622
3461
  msgid "Every 3 hours"
3462
  msgstr ""
3463
 
3464
- #: ../cerber-scanner.php:1623
3465
  msgid "Every 6 hours"
3466
  msgstr ""
3467
 
3468
- #: ../cerber-scanner.php:2643
3469
  msgid "Custom signature found"
3470
  msgstr ""
3471
 
3472
- #: ../cerber-scanner.php:2818
3473
  msgid ""
3474
  "This file contains executable code and may contain obfuscated malware. If "
3475
  "this file is a part of a theme or a plugin, it must be located in the theme "
3476
  "or the plugin folder. No exception, no excuses."
3477
  msgstr ""
3478
 
3479
- #: ../cerber-scanner.php:2819
3480
  msgid ""
3481
  "The scanner recognizes this file as \"ownerless\" or \"not bundled\" because it "
3482
  "does not belong to any known part of the website and should not be here."
3483
  msgstr ""
3484
 
3485
- #: ../cerber-scanner.php:2820
3486
  #, php-format
3487
  msgid ""
3488
  "It may remain after upgrading to a newer version of %s. It also may be a "
@@ -3490,15 +3742,15 @@ msgid ""
3490
  "made (bespoke) plugin or theme."
3491
  msgstr ""
3492
 
3493
- #: ../cerber-scanner.php:2821
3494
  msgid "Suspicious code instruction found"
3495
  msgstr ""
3496
 
3497
- #: ../cerber-scanner.php:2822
3498
  msgid "Suspicious code signatures found"
3499
  msgstr ""
3500
 
3501
- #: ../cerber-scanner.php:2824
3502
  msgid ""
3503
  "The contents of the file have been changed and do not match what exists in "
3504
  "the official WordPress repository or a reference file you have uploaded "
@@ -3506,246 +3758,109 @@ msgid ""
3506
  "has been tampered with."
3507
  msgstr ""
3508
 
3509
- #: ../cerber-scanner.php:2825
3510
  #, php-format
3511
  msgid ""
3512
  "To solve this issue you have to reinstall %s or update it to the latest "
3513
  "version."
3514
  msgstr ""
3515
 
3516
- #: ../cerber-scanner.php:2826
3517
  msgid "Please upload a reference ZIP archive"
3518
  msgstr ""
3519
 
3520
- #: ../cerber-scanner.php:2827
3521
  msgid "Resolve issue"
3522
  msgstr ""
3523
 
3524
- #: ../cerber-scanner.php:3871
3525
  msgid "Preparing for the scan"
3526
  msgstr ""
3527
 
3528
- #: ../cerber-scanner.php:3872
3529
  msgid "Scanning folders for files"
3530
  msgstr ""
3531
 
3532
- #: ../cerber-scanner.php:3873
3533
  msgid "Scanning the upload folder for files"
3534
  msgstr ""
3535
 
3536
- #: ../cerber-scanner.php:3874
3537
  msgid "Scanning the temp folder for files"
3538
  msgstr ""
3539
 
3540
- #: ../cerber-scanner.php:3875
3541
  msgid "Scanning the session folder for files"
3542
  msgstr ""
3543
 
3544
- #: ../cerber-scanner.php:3876
3545
  msgid "Parsing the list of files"
3546
  msgstr ""
3547
 
3548
- #: ../cerber-scanner.php:3877
3549
  msgid "Checking for new and modified files"
3550
  msgstr ""
3551
 
3552
- #: ../cerber-scanner.php:3878
3553
  msgid "Verifying the integrity of WordPress"
3554
  msgstr ""
3555
 
3556
- #: ../cerber-scanner.php:3879
3557
  msgid "Recovering WordPress files"
3558
  msgstr ""
3559
 
3560
- #: ../cerber-scanner.php:3880
3561
  msgid "Verifying the integrity of the plugins"
3562
  msgstr ""
3563
 
3564
- #: ../cerber-scanner.php:3881
3565
  msgid "Recovering plugins files"
3566
  msgstr ""
3567
 
3568
- #: ../cerber-scanner.php:3882
3569
  msgid "Verifying the integrity of the themes"
3570
  msgstr ""
3571
 
3572
- #: ../cerber-scanner.php:3883
3573
  msgid "Searching for malicious code"
3574
  msgstr ""
3575
 
3576
- #: ../cerber-scanner.php:3884
3577
  msgid "Finalizing the scan"
3578
  msgstr ""
3579
 
3580
- #: ../cerber-scanner.php:3959
3581
- msgid "Started"
3582
- msgstr ""
3583
-
3584
- #: ../cerber-scanner.php:3963
3585
- msgid "Finished"
3586
- msgstr ""
3587
-
3588
- #: ../cerber-scanner.php:3971
3589
- msgid "Performance"
3590
- msgstr ""
3591
-
3592
- #: ../cerber-scanner.php:3987
3593
- msgid "New files"
3594
- msgstr ""
3595
-
3596
- #: ../cerber-scanner.php:3991
3597
- msgid "Changed files"
3598
- msgstr ""
3599
-
3600
- #: ../cerber-scanner.php:3999
3601
- msgid "Unwanted extensions"
3602
- msgstr ""
3603
-
3604
- #: ../cerber-scanner.php:4003
3605
- msgid "Unattended files"
3606
- msgstr ""
3607
-
3608
- #: ../cerber-scanner.php:4012 ../cerber-scanner.php:5825
3609
- msgid "Scanned"
3610
- msgstr ""
3611
-
3612
- #: ../cerber-scanner.php:4012
3613
- msgid "Files to scan"
3614
- msgstr ""
3615
-
3616
- #: ../cerber-scanner.php:4019
3617
- msgid "Critical issues"
3618
- msgstr ""
3619
-
3620
- #: ../cerber-scanner.php:4019 ../cerber-scanner.php:5357
3621
- msgid "Issues total"
3622
- msgstr ""
3623
-
3624
- #: ../cerber-scanner.php:4112
3625
- msgid "We have not found any integrity data to verify"
3626
- msgstr ""
3627
-
3628
- #: ../cerber-scanner.php:4114
3629
- msgid ""
3630
- "You have to upload a ZIP archive from which you've installed it. This "
3631
- "enables the security scanner to verify the integrity of the code and detect "
3632
- "malware."
3633
- msgstr ""
3634
-
3635
- #: ../cerber-scanner.php:4741
3636
- msgid ""
3637
- "File access error. Possibly scan results are outdated. Please run Quick or "
3638
- "Full Scan."
3639
- msgstr ""
3640
-
3641
- #: ../cerber-scanner.php:5313
3642
  msgid "Full Scan Report"
3643
  msgstr ""
3644
 
3645
- #: ../cerber-scanner.php:5313
3646
  msgid "Quick Scan Report"
3647
  msgstr ""
3648
 
3649
- #: ../cerber-scanner.php:5326
3650
  msgid "Files scanned"
3651
  msgstr ""
3652
 
3653
- #: ../cerber-scanner.php:5411
3654
  msgid "Deleted"
3655
  msgstr ""
3656
 
3657
- #: ../cerber-scanner.php:5415
3658
  msgid "Recovered"
3659
  msgstr ""
3660
 
3661
- #: ../cerber-scanner.php:5464
3662
  msgid "Automatically moved to quarantine"
3663
  msgstr ""
3664
 
3665
- #: ../cerber-scanner.php:5465
3666
  msgid "Automatically deleted"
3667
  msgstr ""
3668
 
3669
- #: ../cerber-scanner.php:5468
3670
  msgid "Automatically recovered"
3671
  msgstr ""
3672
 
3673
- #: ../cerber-scanner.php:5480
3674
  msgid "To view full report visit"
3675
  msgstr ""
3676
-
3677
- #: ../cerber-scanner.php:5724
3678
- msgid "There are no files in the quarantine at the moment."
3679
- msgstr ""
3680
-
3681
- #: ../cerber-scanner.php:5791
3682
- msgid "No files match the specified filter."
3683
- msgstr ""
3684
-
3685
- #: ../cerber-scanner.php:5791
3686
- msgid "Click here to see the full list of files"
3687
- msgstr ""
3688
-
3689
- #: ../cerber-scanner.php:5811
3690
- msgid "Delete permanently"
3691
- msgstr ""
3692
-
3693
- #: ../cerber-scanner.php:5814
3694
- msgid "Restore"
3695
- msgstr ""
3696
-
3697
- #: ../cerber-scanner.php:5826
3698
- msgid "Moved to quarantine"
3699
- msgstr ""
3700
-
3701
- #: ../cerber-scanner.php:5827
3702
- msgid "Automatic deletion"
3703
- msgstr ""
3704
-
3705
- #: ../cerber-scanner.php:5828
3706
- msgid "Size"
3707
- msgstr ""
3708
-
3709
- #: ../cerber-scanner.php:5829 ../cerber-scanner.php:5977
3710
- msgid "File"
3711
- msgstr ""
3712
-
3713
- #: ../cerber-scanner.php:5843
3714
- msgid "All scans"
3715
- msgstr ""
3716
-
3717
- #: ../cerber-scanner.php:5905
3718
- msgid "The file has been deleted permanently."
3719
- msgstr ""
3720
-
3721
- #: ../cerber-scanner.php:5919
3722
- msgid "The file has been restored to its original location."
3723
- msgstr ""
3724
-
3725
- #: ../cerber-scanner.php:5942
3726
- msgid "Apply"
3727
- msgstr ""
3728
-
3729
- #: ../cerber-scanner.php:5943 ../cerber-scanner.php:5970
3730
- msgid "Remove from the list"
3731
- msgstr ""
3732
-
3733
- #: ../cerber-scanner.php:5944
3734
- msgid "User Insights"
3735
- msgstr ""
3736
-
3737
- #: ../cerber-scanner.php:5945
3738
- msgid "Traffic Insights"
3739
- msgstr ""
3740
-
3741
- #: ../cerber-scanner.php:5946
3742
- msgid "Activity Insights"
3743
- msgstr ""
3744
-
3745
- #: ../cerber-scanner.php:5948
3746
- msgid "The list is empty."
3747
- msgstr ""
3748
-
3749
- #: ../cerber-scanner.php:5976
3750
- msgid "Added"
3751
- msgstr ""
5
  "Project-Id-Version: WP Cerber\n"
6
  "Report-Msgid-Bugs-To: \n"
7
  "POT-Creation-Date: Tue Sep 08 2015 21:38:11 GMT+0300\n"
8
+ "POT-Revision-Date: Wed Jun 10 2020 13:11:10 GMT+0300 (Moscow Standard Time)\n"
9
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
10
  "Last-Translator: \n"
11
  "Language-Team: \n"
28
  msgid "Cerber Dashboard"
29
  msgstr ""
30
 
31
+ #: ../dashboard.php:54 ../dashboard.php:1803 ../dashboard.php:2682 ../dashboard.
32
+ #: php:4594
33
  msgid "Dashboard"
34
  msgstr ""
35
 
37
  msgid "Cerber Traffic Inspector"
38
  msgstr ""
39
 
40
+ #: ../dashboard.php:56 ../dashboard.php:1766 ../dashboard.php:4660
41
  msgid "Traffic Inspector"
42
  msgstr ""
43
 
53
  msgid "Cerber Security Rules"
54
  msgstr ""
55
 
56
+ #: ../dashboard.php:61 ../dashboard.php:4706
57
  msgid "Security Rules"
58
  msgstr ""
59
 
61
  msgid "Cerber User Security"
62
  msgstr ""
63
 
64
+ #: ../dashboard.php:64 ../dashboard.php:4686
65
  msgid "User Policies"
66
  msgstr ""
67
 
68
+ #: ../dashboard.php:67 ../dashboard.php:4721
69
  msgid "Site Integrity"
70
  msgstr ""
71
 
73
  msgid "Cerber anti-spam settings"
74
  msgstr ""
75
 
76
+ #: ../dashboard.php:71 ../settings.php:1136
77
  msgid "Anti-spam"
78
  msgstr ""
79
 
85
  msgid "Cerber tools"
86
  msgstr ""
87
 
88
+ #: ../dashboard.php:82 ../dashboard.php:4775
89
  msgid "Tools"
90
  msgstr ""
91
 
93
  msgid "Remove"
94
  msgstr ""
95
 
96
+ #: ../dashboard.php:195 ../dashboard.php:845 ../dashboard.php:1107 ../dashboard.
97
+ #: php:4011 ../cerber-users.php:982
98
+ msgid "IP Address"
99
  msgstr ""
100
 
101
+ #: ../dashboard.php:196 ../dashboard.php:1108
102
  msgid "Hostname"
103
  msgstr ""
104
 
105
+ #: ../dashboard.php:197 ../dashboard.php:1109
106
  msgid "Country"
107
  msgstr ""
108
 
109
+ #: ../dashboard.php:198 ../cerber-users.php:981
110
  msgid "Expires"
111
  msgstr ""
112
 
113
+ #: ../dashboard.php:199 ../cerber-load.php:4204
114
  msgid "Reason"
115
  msgstr ""
116
 
117
+ #: ../dashboard.php:200 ../admin/cerber-admin.php:757 ../admin/cerber-admin.php:
118
+ #: 912 ../cerber-users.php:984
119
  msgid "Action"
120
  msgstr ""
121
 
136
  msgid "No lockouts at the moment. The sky is clear."
137
  msgstr ""
138
 
139
+ #: ../dashboard.php:254 ../dashboard.php:1344 ../dashboard.php:1389 ../dashboard.
140
+ #: php:1761 ../dashboard.php:3781 ../cerber-load.php:5244 ../cerber-tools.php:69
141
  msgid "White IP Access List"
142
  msgstr ""
143
 
144
+ #: ../dashboard.php:257 ../dashboard.php:1347 ../dashboard.php:1392 ../dashboard.
145
+ #: php:1762 ../dashboard.php:3784 ../cerber-tools.php:70
146
  msgid "Black IP Access List"
147
  msgstr ""
148
 
150
  msgid "Your IP"
151
  msgstr ""
152
 
153
+ #: ../dashboard.php:304 ../dashboard.php:1383 ../dashboard.php:1435 ../dashboard.
154
+ #: php:1575
155
  msgid "Check for activities"
156
  msgstr ""
157
 
185
  msgid "IP address %s has been added to White IP Access List"
186
  msgstr ""
187
 
188
+ #: ../dashboard.php:433 ../dashboard.php:3689 ../whois.php:222 ../whois.php:253 ..
189
+ #: /common.php:1477 ../common.php:1882 ../common.php:1950 ../nexus/cerber-slave-
190
  #: list.php:330
191
  msgid "Unknown"
192
  msgstr ""
193
 
194
+ #: ../dashboard.php:513
195
  msgid "unknown"
196
  msgstr ""
197
 
198
+ #: ../dashboard.php:575
199
  #, php-format
200
  msgid "Lockout for %s was removed"
201
  msgstr ""
202
 
203
+ #: ../dashboard.php:583
204
  msgid "Email has been sent to"
205
  msgstr ""
206
 
207
+ #: ../dashboard.php:586
208
  msgid "Unable to send email to"
209
  msgstr ""
210
 
211
+ #: ../dashboard.php:641
212
  msgid "Default settings have been loaded"
213
  msgstr ""
214
 
215
+ #: ../dashboard.php:846 ../dashboard.php:1110 ../dashboard.php:3560 ../dashboard.
216
+ #: php:4009
 
 
 
 
 
217
  msgid "Date"
218
  msgstr ""
219
 
220
+ #: ../dashboard.php:847 ../dashboard.php:1111
221
  msgid "Event"
222
  msgstr ""
223
 
224
+ #: ../dashboard.php:848
225
  msgid "Additional Details"
226
  msgstr ""
227
 
228
+ #: ../dashboard.php:849 ../dashboard.php:1112 ../dashboard.php:4014
229
  msgid "Local User"
230
  msgstr ""
231
 
232
+ #: ../dashboard.php:850
233
  msgid "User login"
234
  msgstr ""
235
 
236
+ #: ../dashboard.php:851 ../dashboard.php:3565
237
  msgid "User ID"
238
  msgstr ""
239
 
240
+ #: ../dashboard.php:852 ../dashboard.php:1113
241
  msgid "Username"
242
  msgstr ""
243
 
244
+ #: ../dashboard.php:958 ../dashboard.php:2366
245
  msgid "View all"
246
  msgstr ""
247
 
248
+ #: ../dashboard.php:969
249
  msgid "New users"
250
  msgstr ""
251
 
252
+ #: ../dashboard.php:975 ../dashboard.php:4040
253
  msgid "Suspicious activity"
254
  msgstr ""
255
 
256
+ #: ../dashboard.php:977 ../common.php:1334
257
  msgid "IP blocked"
258
  msgstr ""
259
 
260
+ #: ../dashboard.php:979 ../dashboard.php:1759 ../dashboard.php:4042 ../settings.
261
+ #: php:399 ../settings.php:1055
262
  msgid "Logged in users"
263
  msgstr ""
264
 
265
+ #: ../dashboard.php:980 ../dashboard.php:4043
266
  msgid "Not logged in visitors"
267
  msgstr ""
268
 
269
+ #: ../dashboard.php:982
270
  msgid "My activity"
271
  msgstr ""
272
 
273
+ #: ../dashboard.php:983 ../dashboard.php:4053
274
+ msgid "My IP"
275
+ msgstr ""
276
+
277
+ #: ../dashboard.php:1135 ../dashboard.php:4077
278
  msgid "Export"
279
  msgstr ""
280
 
281
+ #: ../dashboard.php:1140
282
  msgid "No activity has been logged."
283
  msgstr ""
284
 
285
+ #: ../dashboard.php:1150
286
  msgid "Filter by registered user"
287
  msgstr ""
288
 
289
+ #: ../dashboard.php:1151
290
  msgid "Search for IP or username"
291
  msgstr ""
292
 
293
+ #: ../dashboard.php:1154
294
  msgid "Request ID"
295
  msgstr ""
296
 
297
+ #: ../dashboard.php:1155
298
  msgid "Search in URL"
299
  msgstr ""
300
 
301
+ #: ../dashboard.php:1162
302
  msgid "Filter"
303
  msgstr ""
304
 
305
+ #: ../dashboard.php:1352 ../dashboard.php:1396 ../dashboard.php:3789 ../common.
306
+ #: php:1392
307
  msgid "Locked out"
308
  msgstr ""
309
 
310
+ #: ../dashboard.php:1428
311
  msgid "Abuse email:"
312
  msgstr ""
313
 
314
+ #: ../dashboard.php:1434
315
  msgid "Network:"
316
  msgstr ""
317
 
318
+ #: ../dashboard.php:1449
319
  msgid "Add network to the Black List"
320
  msgstr ""
321
 
322
+ #: ../dashboard.php:1455
323
  msgid "Add IP to the Black List"
324
  msgstr ""
325
 
326
+ #: ../dashboard.php:1523 ../dashboard.php:1613
327
  msgid "Registered"
328
  msgstr ""
329
 
330
+ #: ../dashboard.php:1535
331
  msgid "Activated"
332
  msgstr ""
333
 
334
+ #: ../dashboard.php:1555
335
  msgid "Last seen"
336
  msgstr ""
337
 
338
+ #: ../dashboard.php:1559
339
  msgid "Active sessions"
340
  msgstr ""
341
 
342
+ #: ../dashboard.php:1610
343
  msgid "Comments"
344
  msgstr ""
345
 
346
+ #: ../dashboard.php:1611
347
  msgid "Last login"
348
  msgstr ""
349
 
350
+ #: ../dashboard.php:1612
351
  msgid "Failed login attempts"
352
  msgstr ""
353
 
354
+ #: ../dashboard.php:1644 ../dashboard.php:1735 ../dashboard.php:1784 ../common.
355
+ #: php:1614 ../nexus/cerber-slave-list.php:344
356
  msgid "Never"
357
  msgstr ""
358
 
359
+ #: ../dashboard.php:1683 ../cerber-users.php:52 ../cerber-users.php:1115
360
  msgid "You"
361
  msgstr ""
362
 
363
+ #: ../dashboard.php:1701
364
  msgid "Cerber Quick View"
365
  msgstr ""
366
 
367
+ #: ../dashboard.php:1740 ../dashboard.php:1770
368
  msgid "active"
369
  msgstr ""
370
 
371
+ #: ../dashboard.php:1740
372
  msgid "deactivate"
373
  msgstr ""
374
 
375
+ #: ../dashboard.php:1744
376
  msgid "not active"
377
  msgstr ""
378
 
379
+ #: ../dashboard.php:1747 ../dashboard.php:1765
380
  msgid "disabled"
381
  msgstr ""
382
 
383
+ #: ../dashboard.php:1753
384
  msgid "failed attempts"
385
  msgstr ""
386
 
387
+ #: ../dashboard.php:1753 ../dashboard.php:1754
388
  msgid "in 24 hours"
389
  msgstr ""
390
 
391
+ #: ../dashboard.php:1753 ../dashboard.php:1754
392
  msgid "view all"
393
  msgstr ""
394
 
395
+ #: ../dashboard.php:1754
396
  msgid "lockouts"
397
  msgstr ""
398
 
399
+ #: ../dashboard.php:1756
400
  msgid "Lockouts at the moment"
401
  msgstr ""
402
 
403
+ #: ../dashboard.php:1757
404
  msgid "Last lockout"
405
  msgstr ""
406
 
407
+ #: ../dashboard.php:1759
408
  msgid "user"
409
  msgid_plural "users"
410
  msgstr[0] ""
411
  msgstr[1] ""
412
 
413
+ #: ../dashboard.php:1761 ../dashboard.php:1762 ../dashboard.php:2660
414
  msgid "entry"
415
  msgid_plural "entries"
416
  msgstr[0] ""
417
  msgstr[1] ""
418
 
419
+ #: ../dashboard.php:1763 ../settings.php:243
420
  msgid "Citadel mode"
421
  msgstr ""
422
 
423
+ #: ../dashboard.php:1765
424
  msgid "enabled"
425
  msgstr ""
426
 
427
+ #: ../dashboard.php:1770
428
  msgid "no connection"
429
  msgstr ""
430
 
431
+ #: ../dashboard.php:1787
432
  msgctxt "Example: Last malware scan: 23 Jan 2018"
433
  msgid "Last malware scan"
434
  msgstr ""
435
 
436
+ #: ../dashboard.php:1790 ../dashboard.php:1792 ../cerber-users.php:20 ../cerber-
437
+ #: users.php:446 ../settings.php:720 ../settings.php:748 ../settings.php:857 ..
438
+ #: /settings.php:866 ../settings.php:1209 ../cerber-scanner.php:1493
439
  msgid "Disabled"
440
  msgstr ""
441
 
442
+ #: ../dashboard.php:1791 ../cerber-scanner.php:938
443
  msgid "Quick Scan"
444
  msgstr ""
445
 
446
+ #: ../dashboard.php:1793 ../cerber-scanner.php:938
447
  msgid "Full Scan"
448
  msgstr ""
449
 
450
+ #: ../dashboard.php:1804 ../dashboard.php:2352 ../dashboard.php:4595 ../cerber-
451
+ #: load.php:4944 ../cerber-users.php:1148 ../settings.php:276
452
  msgid "Activity"
453
  msgstr ""
454
 
455
+ #: ../dashboard.php:1805 ../cerber-users.php:1149
456
  msgid "Traffic"
457
  msgstr ""
458
 
459
+ #: ../dashboard.php:1806
460
  msgid "Integrity"
461
  msgstr ""
462
 
463
+ #: ../dashboard.php:1809
464
  msgid "A new version is available"
465
  msgstr ""
466
 
467
+ #: ../dashboard.php:2169 ../settings.php:230
468
  msgid "My site is behind a reverse proxy"
469
  msgstr ""
470
 
471
+ #: ../dashboard.php:2345
472
  msgid "in the last 24 hours"
473
  msgstr ""
474
 
475
+ #: ../dashboard.php:2369
476
  msgid "Recently locked out IP addresses"
477
  msgstr ""
478
 
479
+ #: ../dashboard.php:2480
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
480
  msgid "Attention! Citadel mode is now active. Nobody is able to log in."
481
  msgstr ""
482
 
483
+ #: ../dashboard.php:2481
484
  msgid "Deactivate"
485
  msgstr ""
486
 
487
+ #: ../dashboard.php:2482 ../dashboard.php:2881
488
  msgid "View Activity"
489
  msgstr ""
490
 
491
+ #: ../dashboard.php:2497
492
  msgid "Settings saved"
493
  msgstr ""
494
 
495
+ #: ../dashboard.php:2568
496
  msgid "Create Alert"
497
  msgstr ""
498
 
499
+ #: ../dashboard.php:2572
500
  msgid "Delete Alert"
501
  msgstr ""
502
 
503
+ #: ../dashboard.php:2605
504
  msgid "The alert has been created"
505
  msgstr ""
506
 
507
+ #: ../dashboard.php:2609
508
  msgid "The alert has been deleted"
509
  msgstr ""
510
 
511
+ #: ../dashboard.php:2683
512
  msgid "Main settings"
513
  msgstr ""
514
 
515
+ #: ../dashboard.php:2800
516
  msgid "Are you sure you want to delete selected files?"
517
  msgstr ""
518
 
519
+ #: ../dashboard.php:2801
520
  msgid "These files have been moved to the quarantine"
521
  msgstr ""
522
 
523
+ #: ../dashboard.php:2804
524
  msgid "Do you want to add selected files to the ignore list?"
525
  msgstr ""
526
 
527
+ #: ../dashboard.php:2805
528
  msgid "These files have been added to the ignore list"
529
  msgstr ""
530
 
531
+ #: ../dashboard.php:2807
532
  msgid "Some errors occurred"
533
  msgstr ""
534
 
535
+ #: ../dashboard.php:2808
536
  msgid "All files have been processed"
537
  msgstr ""
538
 
539
+ #: ../dashboard.php:3145 ../admin/cerber-settings.php:624
540
  msgid "Save Changes"
541
  msgstr ""
542
 
543
+ #: ../dashboard.php:3217
544
  msgid "Role-based rules are configured"
545
  msgstr ""
546
 
547
+ #: ../dashboard.php:3267
548
  msgid "Start typing here to find a country"
549
  msgstr ""
550
 
551
+ #: ../dashboard.php:3274
552
  msgid "Save all rules"
553
  msgstr ""
554
 
555
+ #: ../dashboard.php:3287
556
  #, php-format
557
  msgid "Permitted for one country"
558
  msgid_plural "Permitted for %d countries"
559
  msgstr[0] ""
560
  msgstr[1] ""
561
 
562
+ #: ../dashboard.php:3290
563
  #, php-format
564
  msgid "Not permitted for one country"
565
  msgid_plural "Not permitted for %d countries"
566
  msgstr[0] ""
567
  msgstr[1] ""
568
 
569
+ #: ../dashboard.php:3298
570
  msgid "No rule"
571
  msgstr ""
572
 
573
+ #: ../dashboard.php:3299
574
  msgid "Any country is permitted"
575
  msgstr ""
576
 
577
+ #: ../dashboard.php:3382
578
  msgid "Click on a country name to add it to the list of selected countries"
579
  msgstr ""
580
 
581
+ #: ../dashboard.php:3386
582
  #, php-format
583
  msgctxt "to is a marker of infinitive, e.g. \"to use it\""
584
  msgid "Selected countries are permitted to %s, other countries are not permitted to"
585
  msgstr ""
586
 
587
+ #: ../dashboard.php:3389
588
  #, php-format
589
  msgctxt "to is a marker of infinitive, e.g. \"to use it\""
590
  msgid "Selected countries are not permitted to %s, other countries are permitted to"
591
  msgstr ""
592
 
593
+ #: ../dashboard.php:3409
594
  msgid "Log in to the website"
595
  msgstr ""
596
 
597
+ #: ../dashboard.php:3411
598
  msgid "All Users"
599
  msgstr ""
600
 
601
+ #: ../dashboard.php:3413
602
  msgid "Register on the website"
603
  msgstr ""
604
 
605
+ #: ../dashboard.php:3414
606
  msgid "Submit forms"
607
  msgstr ""
608
 
609
+ #: ../dashboard.php:3415
610
  msgid "Post comments"
611
  msgstr ""
612
 
613
+ #: ../dashboard.php:3416
614
  msgid "Use XML-RPC"
615
  msgstr ""
616
 
617
+ #: ../dashboard.php:3417
618
  msgid "Use REST API"
619
  msgstr ""
620
 
621
+ #: ../dashboard.php:3459
622
  msgid "Security rules have been updated"
623
  msgstr ""
624
 
625
+ #: ../dashboard.php:3559
626
  msgid "IP address"
627
  msgstr ""
628
 
629
+ #: ../dashboard.php:3566
630
  msgid "Page generation time"
631
  msgstr ""
632
 
633
+ #: ../dashboard.php:4010
634
  msgid "Request"
635
  msgstr ""
636
 
637
+ #: ../dashboard.php:4012 ../cerber-users.php:983
638
  msgid "Host Info"
639
  msgstr ""
640
 
641
+ #: ../dashboard.php:4013
642
  msgid "User Agent"
643
  msgstr ""
644
 
645
+ #: ../dashboard.php:4030
646
  msgid "No requests have been logged."
647
  msgstr ""
648
 
649
+ #: ../dashboard.php:4038
650
  msgid "All requests"
651
  msgstr ""
652
 
653
+ #: ../dashboard.php:4041
654
  msgid "Errors"
655
  msgstr ""
656
 
657
+ #: ../dashboard.php:4046
658
  msgid "Form submissions"
659
  msgstr ""
660
 
661
+ #: ../dashboard.php:4048
662
  msgid "Page Not Found"
663
  msgstr ""
664
 
665
+ #: ../dashboard.php:4052
666
+ msgid "My requests"
667
+ msgstr ""
668
+
669
+ #: ../dashboard.php:4060
670
  msgid "Longer than"
671
  msgstr ""
672
 
673
+ #: ../dashboard.php:4070
674
  msgid "Advanced Search"
675
  msgstr ""
676
 
677
+ #: ../dashboard.php:4083
678
  msgid "Refresh"
679
  msgstr ""
680
 
681
+ #: ../dashboard.php:4596
682
  msgid "Sessions"
683
  msgstr ""
684
 
685
+ #: ../dashboard.php:4597
686
  msgid "Lockouts"
687
  msgstr ""
688
 
689
+ #: ../dashboard.php:4598
690
  msgid "Main Settings"
691
  msgstr ""
692
 
693
+ #: ../dashboard.php:4599 ../cerber-tools.php:38 ../cerber-tools.php:49
694
  msgid "Access Lists"
695
  msgstr ""
696
 
697
+ #: ../dashboard.php:4600
698
  msgid "Hardening"
699
  msgstr ""
700
 
701
+ #: ../dashboard.php:4602 ../settings.php:264
702
  msgid "Notifications"
703
  msgstr ""
704
 
705
+ #: ../dashboard.php:4640
706
  msgid "Anti-spam and bot detection settings"
707
  msgstr ""
708
 
709
+ #: ../dashboard.php:4642
710
  msgid "Anti-spam engine"
711
  msgstr ""
712
 
713
+ #: ../dashboard.php:4662
714
  msgid "Live Traffic"
715
  msgstr ""
716
 
717
+ #: ../dashboard.php:4663 ../dashboard.php:4724 ../cerber-tools.php:37 ../cerber-
718
  #: tools.php:48 ../nexus/cerber-nexus.php:93
719
  msgid "Settings"
720
  msgstr ""
721
 
722
+ #: ../dashboard.php:4676
723
  msgid "Data Shield Policies"
724
  msgstr ""
725
 
726
+ #: ../dashboard.php:4678
727
  msgid "Accounts & Roles"
728
  msgstr ""
729
 
730
+ #: ../dashboard.php:4679
731
  msgid "Site Settings"
732
  msgstr ""
733
 
734
+ #: ../dashboard.php:4688
735
  msgid "Role-based"
736
  msgstr ""
737
 
738
+ #: ../dashboard.php:4689
739
  msgid "Global"
740
  msgstr ""
741
 
742
+ #: ../dashboard.php:4708
743
  msgid "Countries"
744
  msgstr ""
745
 
746
+ #: ../dashboard.php:4723
747
  msgid "Security Scanner"
748
  msgstr ""
749
 
750
+ #: ../dashboard.php:4725
751
  msgid "Scheduling"
752
  msgstr ""
753
 
754
+ #: ../dashboard.php:4726
755
  msgid "Cleaning up"
756
  msgstr ""
757
 
758
+ #: ../dashboard.php:4727
759
  msgid "Ignore List"
760
  msgstr ""
761
 
762
+ #: ../dashboard.php:4728
763
  msgid "Quarantine"
764
  msgstr ""
765
 
766
+ #: ../dashboard.php:4729
767
+ msgid "Analytics"
768
+ msgstr ""
769
+
770
+ #: ../dashboard.php:4778
771
+ msgid "Manage Settings"
772
  msgstr ""
773
 
774
+ #: ../dashboard.php:4779
775
  msgid "Diagnostic"
776
  msgstr ""
777
 
778
+ #: ../dashboard.php:4780
779
+ msgid "Diagnostic Log"
780
  msgstr ""
781
 
782
+ #: ../dashboard.php:4781
783
  msgid "Changelog"
784
  msgstr ""
785
 
786
+ #: ../dashboard.php:4782
787
  msgid "License"
788
  msgstr ""
789
 
790
+ #: ../dashboard.php:4883
791
  msgid "Help"
792
  msgstr ""
793
 
794
+ #: ../dashboard.php:4932
795
  msgid "Incorrect IP address or IP range"
796
  msgstr ""
797
 
798
+ #: ../dashboard.php:4936
799
  msgid "The IP address you are trying to add is already in the list"
800
  msgstr ""
801
 
802
+ #: ../dashboard.php:5071
803
  msgid "These features are available in a professional version of the plugin."
804
  msgstr ""
805
 
806
+ #: ../dashboard.php:5072
807
  msgid "Know more about all advantages at"
808
  msgstr ""
809
 
810
+ #: ../dashboard.php:5086 ../admin/cerber-admin.php:721 ../admin/cerber-admin.php:
811
+ #: 888 ../cerber-tools.php:59
812
+ msgid "Are you sure?"
813
+ msgstr ""
814
+
815
+ #: ../dashboard.php:5107
816
  msgid "Log In"
817
  msgstr ""
818
 
819
+ #: ../dashboard.php:5108
820
  msgid "Log Out"
821
  msgstr ""
822
 
823
+ #: ../dashboard.php:5109
824
  msgid "Register"
825
  msgstr ""
826
 
827
+ #: ../dashboard.php:5112
828
  msgid "WooCommerce Log In"
829
  msgstr ""
830
 
831
+ #: ../dashboard.php:5113
832
  msgid "WooCommerce Log Out"
833
  msgstr ""
834
 
835
+ #: ../dashboard.php:5152 ../dashboard.php:5153
836
  msgid "Add to menu"
837
  msgstr ""
838
 
857
  msgid "Cerber Tech Inc."
858
  msgstr ""
859
 
860
+ #: ../common.php:210
861
  msgid "Check for requests"
862
  msgstr ""
863
 
864
+ #: ../common.php:280
865
  msgid "Malicious activities mitigated"
866
  msgstr ""
867
 
868
+ #: ../common.php:283
869
  msgid "Spam comments denied"
870
  msgstr ""
871
 
872
+ #: ../common.php:284
873
  msgid "Spam form submissions denied"
874
  msgstr ""
875
 
876
+ #: ../common.php:285
877
  msgid "Malicious IP addresses detected"
878
  msgstr ""
879
 
880
+ #: ../common.php:286
881
  msgid "Lockouts occurred"
882
  msgstr ""
883
 
884
+ #: ../common.php:340 ../common.php:418 ../common.php:423 ../common.php:429 ..
885
+ #: /common.php:434 ../admin/cerber-settings.php:649 ../admin/cerber-settings.php:
886
+ #: 669 ../admin/cerber-settings.php:749 ../admin/cerber-admin.php:858 ../cerber-
887
+ #: load.php:651 ../cerber-load.php:663 ../cerber-load.php:670 ../cerber-load.php:
888
+ #: 1018 ../cerber-load.php:1549 ../cerber-load.php:1555 ../cerber-load.php:1560 ..
889
+ #: /cerber-load.php:1567 ../cerber-load.php:1574 ../cerber-load.php:1580 ..
890
+ #: /cerber-load.php:1587 ../cerber-load.php:1752 ../cerber-load.php:1889 ..
891
+ #: /nexus/cerber-nexus-slave.php:204 ../nexus/cerber-nexus-slave.php:215
892
  msgid "ERROR:"
893
  msgstr ""
894
 
901
  msgstr ""
902
 
903
  #: ../common.php:1328
904
+ msgid "User deleted"
905
  msgstr ""
906
 
907
  #: ../common.php:1329
908
+ msgid "Logged in"
909
  msgstr ""
910
 
911
  #: ../common.php:1330
912
+ msgid "Logged out"
913
+ msgstr ""
914
+
915
+ #: ../common.php:1331
916
  msgid "Login failed"
917
  msgstr ""
918
 
919
+ #: ../common.php:1335
920
  msgid "IP subnet blocked"
921
  msgstr ""
922
 
923
+ #: ../common.php:1338
924
  msgid "Citadel activated!"
925
  msgstr ""
926
 
927
+ #: ../common.php:1339
928
  msgid "Spam comment denied"
929
  msgstr ""
930
 
931
+ #: ../common.php:1340
932
  msgid "Spam form submission denied"
933
  msgstr ""
934
 
935
+ #: ../common.php:1341
936
  msgid "Form submission denied"
937
  msgstr ""
938
 
939
+ #: ../common.php:1342
940
  msgid "Comment denied"
941
  msgstr ""
942
 
943
+ #: ../common.php:1351
944
  msgid "Password changed"
945
  msgstr ""
946
 
947
+ #: ../common.php:1352
948
  msgid "Password reset requested"
949
  msgstr ""
950
 
951
+ #: ../common.php:1354
952
  msgid "reCAPTCHA verification failed"
953
  msgstr ""
954
 
955
+ #: ../common.php:1355
956
  msgid "reCAPTCHA settings are incorrect"
957
  msgstr ""
958
 
959
+ #: ../common.php:1356
960
  msgid "Request to the Google reCAPTCHA service failed"
961
  msgstr ""
962
 
963
+ #: ../common.php:1358 ../common.php:1454
964
  msgid "Attempt to access prohibited URL"
965
  msgstr ""
966
 
967
+ #: ../common.php:1359 ../common.php:1455
968
  msgid "Attempt to log in with non-existing username"
969
  msgstr ""
970
 
971
+ #: ../common.php:1360 ../common.php:1456
972
  msgid "Attempt to log in with prohibited username"
973
  msgstr ""
974
 
975
+ #: ../common.php:1362
976
  msgid "Attempt to log in denied"
977
  msgstr ""
978
 
979
+ #: ../common.php:1363
980
  msgid "Attempt to register denied"
981
  msgstr ""
982
 
983
+ #: ../common.php:1364 ../common.php:1460
984
  msgid "Probing for vulnerable PHP code"
985
  msgstr ""
986
 
987
+ #: ../common.php:1365
988
  msgid "Attempt to upload malicious file denied"
989
  msgstr ""
990
 
991
+ #: ../common.php:1366
992
  msgid "File upload denied"
993
  msgstr ""
994
 
995
+ #: ../common.php:1368
996
  msgid "Request to REST API denied"
997
  msgstr ""
998
 
999
+ #: ../common.php:1369
1000
  msgid "XML-RPC request denied"
1001
  msgstr ""
1002
 
1003
+ #: ../common.php:1370
1004
  msgid "User creation denied"
1005
  msgstr ""
1006
 
1007
+ #: ../common.php:1371
1008
  msgid "User row update denied"
1009
  msgstr ""
1010
 
1011
+ #: ../common.php:1372
1012
  msgid "Role update denied"
1013
  msgstr ""
1014
 
1015
+ #: ../common.php:1373
1016
  msgid "Setting update denied"
1017
  msgstr ""
1018
 
1019
+ #: ../common.php:1374
1020
  msgid "User metadata update denied"
1021
  msgstr ""
1022
 
1023
+ #: ../common.php:1376
1024
  msgid "Malicious request denied"
1025
  msgstr ""
1026
 
1027
+ #: ../common.php:1379
1028
  msgid "User activated"
1029
  msgstr ""
1030
 
1031
+ #: ../common.php:1382
1032
  msgid "Invalid master credentials"
1033
  msgstr ""
1034
 
1035
+ #: ../common.php:1390
1036
  msgid "Bot detected"
1037
  msgstr ""
1038
 
1039
+ #: ../common.php:1391
1040
  msgid "Citadel mode is active"
1041
  msgstr ""
1042
 
1043
+ #: ../common.php:1393
1044
  msgid "IP address is locked out"
1045
  msgstr ""
1046
 
1047
+ #: ../common.php:1394
1048
  msgid "IP blacklisted"
1049
  msgstr ""
1050
 
1051
+ #: ../common.php:1395
1052
  msgid "Malicious activity detected"
1053
  msgstr ""
1054
 
1055
+ #: ../common.php:1396
1056
  msgid "Blocked by country rule"
1057
  msgstr ""
1058
 
1059
+ #: ../common.php:1397
1060
  msgid "Limit reached"
1061
  msgstr ""
1062
 
1063
+ #: ../common.php:1398
1064
  msgid "Multiple suspicious activities"
1065
  msgstr ""
1066
 
1067
+ #: ../common.php:1399
1068
  msgid "Denied"
1069
  msgstr ""
1070
 
1071
+ #: ../common.php:1401
1072
  msgid "Suspicious number of fields"
1073
  msgstr ""
1074
 
1075
+ #: ../common.php:1402
1076
  msgid "Suspicious number of nested values"
1077
  msgstr ""
1078
 
1079
+ #: ../common.php:1403 ../common.php:1461
1080
  msgid "Malicious code detected"
1081
  msgstr ""
1082
 
1083
+ #: ../common.php:1404
1084
  msgid "Suspicious SQL code detected"
1085
  msgstr ""
1086
 
1087
+ #: ../common.php:1405
1088
  msgid "Suspicious JavaScript code detected"
1089
  msgstr ""
1090
 
1091
+ #: ../common.php:1406
1092
  msgid "Blocked by administrator"
1093
  msgstr ""
1094
 
1095
+ #: ../common.php:1407
1096
  msgid "Site policy enforcement"
1097
  msgstr ""
1098
 
1099
+ #: ../common.php:1408
1100
  msgid "2FA code verified"
1101
  msgstr ""
1102
 
1103
+ #: ../common.php:1409
1104
  msgid "Initiated by the user"
1105
  msgstr ""
1106
 
1107
+ #: ../common.php:1412
1108
+ msgid "Email address is prohibited"
1109
  msgstr ""
1110
 
1111
+ #: ../common.php:1414
1112
  msgid "Permission denied"
1113
  msgstr ""
1114
 
1115
+ #: ../common.php:1416
1116
  msgid "Invalid user"
1117
  msgstr ""
1118
 
1119
+ #: ../common.php:1417
1120
  msgid "Incorrect password"
1121
  msgstr ""
1122
 
1123
+ #: ../common.php:1420
1124
+ msgid "IP whitelisted"
1125
+ msgstr ""
1126
+
1127
+ #: ../common.php:1452
1128
  msgid "Limit on login attempts is reached"
1129
  msgstr ""
1130
 
1131
+ #: ../common.php:1453
1132
  msgid "Attempt to access"
1133
  msgstr ""
1134
 
1135
+ #: ../common.php:1457
1136
  msgid "Limit on failed reCAPTCHA verifications is reached"
1137
  msgstr ""
1138
 
1139
+ #: ../common.php:1458
1140
  msgid "Bot activity is detected"
1141
  msgstr ""
1142
 
1143
+ #: ../common.php:1459
1144
  msgid "Multiple suspicious activities were detected"
1145
  msgstr ""
1146
 
1147
+ #: ../common.php:1462
1148
  msgid "Attempt to upload a file with malicious code"
1149
  msgstr ""
1150
 
1151
+ #: ../common.php:1464
1152
  msgid "Multiple erroneous requests"
1153
  msgstr ""
1154
 
1155
+ #: ../common.php:1465
1156
  msgid "Multiple suspicious requests"
1157
  msgstr ""
1158
 
1159
  #. translators: Time difference between two dates, in seconds (sec=second). 1: Number of seconds
1160
+ #: ../common.php:1602
1161
  #, php-format
1162
  msgid "%s sec"
1163
  msgid_plural "%s secs"
1164
  msgstr[0] ""
1165
  msgstr[1] ""
1166
 
1167
+ #: ../common.php:1609
1168
  #, php-format
1169
  msgid "%s ago"
1170
  msgstr ""
1171
 
1172
+ #: ../common.php:1609
1173
  #, php-format
1174
  msgctxt "preposition of a period of time like: in 6 hours"
1175
  msgid "in %s"
1176
  msgstr ""
1177
 
1178
+ #: ../common.php:1716
1179
  msgid "Bytes"
1180
  msgstr ""
1181
 
1182
+ #: ../common.php:1822
1183
  #, php-format
1184
  msgid "A new version of %s is available. Please install it."
1185
  msgstr ""
1186
 
1187
+ #: ../common.php:1842
1188
  msgid "Not specified"
1189
  msgstr ""
1190
 
1191
+ #: ../common.php:2767
1192
  msgid "Unable to create the directory"
1193
  msgstr ""
1194
 
1195
+ #: ../common.php:2772
1196
  msgid "Destination folder access denied"
1197
  msgstr ""
1198
 
1199
+ #: ../common.php:2775
1200
  msgid "File not found"
1201
  msgstr ""
1202
 
1203
+ #: ../common.php:2778
1204
  msgid "Unable to copy the file"
1205
  msgstr ""
1206
 
1207
+ #: ../common.php:2784
1208
  msgid "Unable to delete the file"
1209
  msgstr ""
1210
 
1215
  "more: <a href=\"https://wpcerber.com\">wpcerber.com</a>."
1216
  msgstr ""
1217
 
1218
+ #: ../cerber-news.php:126
1219
  msgid "Awesome!"
1220
  msgstr ""
1221
 
1222
+ #: ../admin/cerber-settings.php:100 ../admin/cerber-settings.php:270 ../cerber-
1223
+ #: lab.php:840
1224
  msgid "Know more"
1225
  msgstr ""
1226
 
1227
+ #: ../admin/cerber-settings.php:352
1228
  #, php-format
1229
  msgid "%s retries are allowed within %s minutes"
1230
  msgstr ""
1231
 
1232
+ #: ../admin/cerber-settings.php:358
1233
  #, php-format
1234
  msgid "%s registrations are allowed within %s minutes from one IP address"
1235
  msgstr ""
1236
 
1237
+ #: ../admin/cerber-settings.php:364
1238
  #, php-format
1239
  msgid "Increase lockout duration to %s hours after %s lockouts in the last %s hours"
1240
  msgstr ""
1241
 
1242
+ #: ../admin/cerber-settings.php:372
1243
  msgid "Notify admin if the number of active lockouts above"
1244
  msgstr ""
1245
 
1246
+ #: ../admin/cerber-settings.php:377 ../settings.php:270
1247
  msgid "Click to send test"
1248
  msgstr ""
1249
 
1250
+ #: ../admin/cerber-settings.php:381
1251
  #, php-format
1252
  msgid "Enable after %s failed login attempts in the last %s minutes"
1253
  msgstr ""
1254
 
1255
+ #: ../admin/cerber-settings.php:513
1256
  msgid "Select one or more roles"
1257
  msgstr ""
1258
 
1259
+ #: ../admin/cerber-settings.php:537
1260
  msgid "Sunday"
1261
  msgstr ""
1262
 
1263
+ #: ../admin/cerber-settings.php:538
1264
  msgid "Monday"
1265
  msgstr ""
1266
 
1267
+ #: ../admin/cerber-settings.php:539
1268
  msgid "Tuesday"
1269
  msgstr ""
1270
 
1271
+ #: ../admin/cerber-settings.php:540
1272
  msgid "Wednesday"
1273
  msgstr ""
1274
 
1275
+ #: ../admin/cerber-settings.php:541
1276
  msgid "Thursday"
1277
  msgstr ""
1278
 
1279
+ #: ../admin/cerber-settings.php:542
1280
  msgid "Friday"
1281
  msgstr ""
1282
 
1283
+ #: ../admin/cerber-settings.php:543
1284
  msgid "Saturday"
1285
  msgstr ""
1286
 
1287
+ #: ../admin/cerber-settings.php:553
1288
  msgctxt "preposition of time like: at 11:00"
1289
  msgid "at"
1290
  msgstr ""
1291
 
1292
+ #: ../admin/cerber-settings.php:572
1293
  msgid "Click to send now"
1294
  msgstr ""
1295
 
1296
+ #: ../admin/cerber-settings.php:650
1297
  msgid "Plugin initialization mode has not been changed"
1298
  msgstr ""
1299
 
1300
+ #: ../admin/cerber-settings.php:677 ../admin/cerber-settings.php:678
1301
  msgid "Attention! You have changed the login URL! The new login URL is"
1302
  msgstr ""
1303
 
1304
+ #: ../admin/cerber-settings.php:679 ../admin/cerber-settings.php:680
1305
  msgid ""
1306
  "If you use a caching plugin, you have to add your new login URL to the list "
1307
  "of pages not to cache."
1308
  msgstr ""
1309
 
1310
+ #: ../admin/cerber-settings.php:773 ../admin/cerber-settings.php:785 ..
1311
+ #: /admin/cerber-settings.php:942
1312
  msgid "<strong>ERROR</strong>: please enter a valid email address."
1313
  msgstr ""
1314
 
1315
+ #: ../admin/cerber-settings.php:948
1316
  msgid "The schedule has been updated"
1317
  msgstr ""
1318
 
1319
+ #: ../admin/cerber-settings.php:951
1320
  msgid "Unable to update the schedule"
1321
  msgstr ""
1322
 
1323
+ #: ../admin/cerber-admin.php:43
1324
+ msgid "Started"
1325
+ msgstr ""
1326
+
1327
+ #: ../admin/cerber-admin.php:47
1328
+ msgid "Finished"
1329
+ msgstr ""
1330
+
1331
+ #: ../admin/cerber-admin.php:51 ../settings.php:258
1332
+ msgid "Duration"
1333
+ msgstr ""
1334
+
1335
+ #: ../admin/cerber-admin.php:55
1336
+ msgid "Performance"
1337
+ msgstr ""
1338
+
1339
+ #: ../admin/cerber-admin.php:67 ../nexus/cerber-slave-list.php:337
1340
+ msgid "Vulnerabilities"
1341
+ msgstr ""
1342
+
1343
+ #: ../admin/cerber-admin.php:71
1344
+ msgid "New files"
1345
+ msgstr ""
1346
+
1347
+ #: ../admin/cerber-admin.php:75
1348
+ msgid "Changed files"
1349
+ msgstr ""
1350
+
1351
+ #: ../admin/cerber-admin.php:79 ../cerber-scanner.php:1457
1352
+ msgid "Checksum mismatch"
1353
+ msgstr ""
1354
+
1355
+ #: ../admin/cerber-admin.php:83
1356
+ msgid "Unwanted extensions"
1357
+ msgstr ""
1358
+
1359
+ #: ../admin/cerber-admin.php:87
1360
+ msgid "Unattended files"
1361
+ msgstr ""
1362
+
1363
+ #: ../admin/cerber-admin.php:96 ../admin/cerber-admin.php:752
1364
+ msgid "Scanned"
1365
+ msgstr ""
1366
+
1367
+ #: ../admin/cerber-admin.php:96
1368
+ msgid "Files to scan"
1369
+ msgstr ""
1370
+
1371
+ #: ../admin/cerber-admin.php:103
1372
+ msgid "Critical issues"
1373
+ msgstr ""
1374
+
1375
+ #: ../admin/cerber-admin.php:103 ../cerber-scanner.php:4781
1376
+ msgid "Issues total"
1377
+ msgstr ""
1378
+
1379
+ #: ../admin/cerber-admin.php:164
1380
+ msgid "Currently a scheduled scan in progress. Please wait until it is finished."
1381
+ msgstr ""
1382
+
1383
+ #: ../admin/cerber-admin.php:168
1384
+ #, php-format
1385
+ msgid "Previous scan started %s has not been completed. Continue scanning?"
1386
+ msgstr ""
1387
+
1388
+ #: ../admin/cerber-admin.php:177
1389
+ msgid ""
1390
+ "It seems this website has never been scanned. To start scanning click the "
1391
+ "button below."
1392
+ msgstr ""
1393
+
1394
+ #: ../admin/cerber-admin.php:180
1395
+ msgid "Start Quick Scan"
1396
+ msgstr ""
1397
+
1398
+ #: ../admin/cerber-admin.php:181
1399
+ msgid "Start Full Scan"
1400
+ msgstr ""
1401
+
1402
+ #: ../admin/cerber-admin.php:182
1403
+ msgid "Stop Scanning"
1404
+ msgstr ""
1405
+
1406
+ #: ../admin/cerber-admin.php:183
1407
+ msgid "Continue Scanning"
1408
+ msgstr ""
1409
+
1410
+ #: ../admin/cerber-admin.php:219
1411
+ msgid "Delete"
1412
+ msgstr ""
1413
+
1414
+ #: ../admin/cerber-admin.php:222
1415
+ msgid "Ignore"
1416
+ msgstr ""
1417
+
1418
+ #: ../admin/cerber-admin.php:243
1419
+ msgid "We have not found any integrity data to verify"
1420
+ msgstr ""
1421
+
1422
+ #: ../admin/cerber-admin.php:245
1423
+ msgid ""
1424
+ "You have to upload a ZIP archive from which you've installed it. This "
1425
+ "enables the security scanner to verify the integrity of the code and detect "
1426
+ "malware."
1427
+ msgstr ""
1428
+
1429
+ #: ../admin/cerber-admin.php:246 ../cerber-tools.php:45
1430
+ #, php-format
1431
+ msgid "Maximum upload file size: %s."
1432
+ msgstr ""
1433
+
1434
+ #: ../admin/cerber-admin.php:249 ../cerber-tools.php:50
1435
+ msgid "Upload file"
1436
+ msgstr ""
1437
+
1438
+ #: ../admin/cerber-admin.php:344
1439
+ msgid ""
1440
+ "File access error. Possibly scan results are outdated. Please run Quick or "
1441
+ "Full Scan."
1442
+ msgstr ""
1443
+
1444
+ #: ../admin/cerber-admin.php:696
1445
+ msgid "There are no files in the quarantine at the moment."
1446
+ msgstr ""
1447
+
1448
+ #: ../admin/cerber-admin.php:713
1449
+ msgid "No files match the specified filter."
1450
+ msgstr ""
1451
+
1452
+ #: ../admin/cerber-admin.php:713
1453
+ msgid "Click here to see the full list of files"
1454
+ msgstr ""
1455
+
1456
+ #: ../admin/cerber-admin.php:731
1457
+ msgid "Delete permanently"
1458
+ msgstr ""
1459
+
1460
+ #: ../admin/cerber-admin.php:734
1461
+ msgid "Restore"
1462
+ msgstr ""
1463
+
1464
+ #: ../admin/cerber-admin.php:753
1465
+ msgid "Quarantined"
1466
+ msgstr ""
1467
+
1468
+ #: ../admin/cerber-admin.php:754
1469
+ msgid "Automatic deletion"
1470
+ msgstr ""
1471
+
1472
+ #: ../admin/cerber-admin.php:755 ../admin/cerber-admin.php:910 ../admin/cerber-
1473
+ #: admin.php:1355
1474
+ msgid "Size"
1475
+ msgstr ""
1476
+
1477
+ #: ../admin/cerber-admin.php:756 ../admin/cerber-admin.php:911
1478
+ msgid "File"
1479
+ msgstr ""
1480
+
1481
+ #: ../admin/cerber-admin.php:767
1482
+ msgid "All scans"
1483
+ msgstr ""
1484
+
1485
+ #: ../admin/cerber-admin.php:829
1486
+ msgid "The file has been deleted permanently."
1487
+ msgstr ""
1488
+
1489
+ #: ../admin/cerber-admin.php:844
1490
+ msgid "The file has been restored to its original location."
1491
+ msgstr ""
1492
+
1493
+ #: ../admin/cerber-admin.php:868
1494
+ msgid "Apply"
1495
+ msgstr ""
1496
+
1497
+ #: ../admin/cerber-admin.php:869 ../admin/cerber-admin.php:896
1498
+ msgid "Remove from the list"
1499
+ msgstr ""
1500
+
1501
+ #: ../admin/cerber-admin.php:870
1502
+ msgid "User Insights"
1503
+ msgstr ""
1504
+
1505
+ #: ../admin/cerber-admin.php:871
1506
+ msgid "Traffic Insights"
1507
+ msgstr ""
1508
+
1509
+ #: ../admin/cerber-admin.php:872
1510
+ msgid "Activity Insights"
1511
+ msgstr ""
1512
+
1513
+ #: ../admin/cerber-admin.php:874
1514
+ msgid "The list is empty."
1515
+ msgstr ""
1516
+
1517
+ #: ../admin/cerber-admin.php:908
1518
+ msgid "Added"
1519
+ msgstr ""
1520
+
1521
+ #: ../admin/cerber-admin.php:909 ../admin/cerber-admin.php:1356
1522
+ msgid "Modified"
1523
+ msgstr ""
1524
+
1525
+ #: ../admin/cerber-admin.php:1020
1526
+ msgid "Files without extension"
1527
+ msgstr ""
1528
+
1529
+ #: ../admin/cerber-admin.php:1021
1530
+ msgid "Back to list"
1531
+ msgstr ""
1532
+
1533
+ #: ../admin/cerber-admin.php:1081
1534
+ msgid "Brief summary"
1535
+ msgstr ""
1536
+
1537
+ #: ../admin/cerber-admin.php:1132
1538
+ msgid "Folder"
1539
+ msgstr ""
1540
+
1541
+ #: ../admin/cerber-admin.php:1133
1542
+ msgid "Path"
1543
+ msgstr ""
1544
+
1545
+ #: ../admin/cerber-admin.php:1134 ../admin/cerber-admin.php:1228
1546
+ msgid "Files"
1547
+ msgstr ""
1548
+
1549
+ #: ../admin/cerber-admin.php:1135 ../admin/cerber-admin.php:1229
1550
+ msgid "Space Occupied"
1551
+ msgstr ""
1552
+
1553
+ #: ../admin/cerber-admin.php:1199
1554
+ msgid "No extension"
1555
+ msgstr ""
1556
+
1557
+ #: ../admin/cerber-admin.php:1224
1558
+ msgid "File extensions statistics"
1559
+ msgstr ""
1560
+
1561
+ #: ../admin/cerber-admin.php:1227
1562
+ msgid "Extension"
1563
+ msgstr ""
1564
+
1565
+ #: ../admin/cerber-admin.php:1230
1566
+ msgid "Smallest"
1567
+ msgstr ""
1568
+
1569
+ #: ../admin/cerber-admin.php:1231
1570
+ msgid "Largest"
1571
+ msgstr ""
1572
+
1573
+ #: ../admin/cerber-admin.php:1232
1574
+ msgid "Average Size"
1575
+ msgstr ""
1576
+
1577
+ #: ../admin/cerber-admin.php:1233
1578
+ msgid "Oldest"
1579
+ msgstr ""
1580
+
1581
+ #: ../admin/cerber-admin.php:1234
1582
+ msgid "Newest"
1583
+ msgstr ""
1584
+
1585
+ #: ../admin/cerber-admin.php:1250
1586
+ msgid "Top 10 largest files"
1587
+ msgstr ""
1588
+
1589
+ #: ../admin/cerber-admin.php:1354
1590
+ msgid "File Name"
1591
+ msgstr ""
1592
+
1593
+ #: ../cerber-lab.php:836
1594
  msgid "Want to make WP Cerber even more powerful?"
1595
  msgstr ""
1596
 
1597
+ #: ../cerber-lab.php:837
1598
  msgid ""
1599
  "Allow WP Cerber to send locked out malicious IP addresses to Cerber Lab. "
1600
  "This helps the plugin team to develop new algorithms for WP Cerber that will "
1602
  "everyday. You can disable the sending in the plugin settings at any time."
1603
  msgstr ""
1604
 
1605
+ #: ../cerber-lab.php:838
1606
  msgid "OK, nail them all"
1607
  msgstr ""
1608
 
1609
+ #: ../cerber-lab.php:839
1610
  msgid "NO, maybe later"
1611
  msgstr ""
1612
 
1613
+ #: ../cerber-load.php:343
1614
  msgid "You are not allowed to log in. Ask your administrator for assistance."
1615
  msgstr ""
1616
 
1617
+ #: ../cerber-load.php:349
1618
  #, php-format
1619
  msgid ""
1620
  "You have exceeded the number of allowed login attempts. Please try again in "
1621
  "%d minutes."
1622
  msgstr ""
1623
 
1624
+ #: ../cerber-load.php:353
1625
  msgid "You are not allowed to log in"
1626
  msgstr ""
1627
 
1628
+ #: ../cerber-load.php:368
1629
  #, php-format
1630
  msgid "You have only one attempt remaining."
1631
  msgid_plural "You have %d attempts remaining."
1632
  msgstr[0] ""
1633
  msgstr[1] ""
1634
 
1635
+ #: ../cerber-load.php:680
1636
  msgid ""
1637
  "Human verification failed. Please click the square box in the reCAPTCHA "
1638
  "block below."
1639
  msgstr ""
1640
 
1641
+ #: ../cerber-load.php:818
1642
  msgid ""
1643
  "> > > Translator of WP Cerber? To get the PRO license for free, drop your "
1644
  "contacts here: https://wpcerber.com/contact/"
1645
  msgstr ""
1646
 
1647
+ #: ../cerber-load.php:1127
1648
  #, php-format
1649
  msgid ""
1650
  "<strong>ERROR</strong>: The password you entered for the username %s is "
1651
  "incorrect."
1652
  msgstr ""
1653
 
1654
+ #: ../cerber-load.php:1550 ../cerber-load.php:1556 ../cerber-load.php:1581 ..
1655
+ #: /cerber-load.php:1588
1656
  msgid "You are not allowed to register."
1657
  msgstr ""
1658
 
1659
+ #: ../cerber-load.php:1568
1660
  msgid "Username is not allowed. Please choose another one."
1661
  msgstr ""
1662
 
1663
+ #: ../cerber-load.php:1575
1664
  msgid "Email address is not permitted."
1665
  msgstr ""
1666
 
1667
+ #: ../cerber-load.php:1575
1668
  msgid "Please choose another one."
1669
  msgstr ""
1670
 
1671
+ #: ../cerber-load.php:1889
1672
  msgid "Sorry, human verification failed."
1673
  msgstr ""
1674
 
1675
+ #: ../cerber-load.php:4029
1676
  msgid "We're sorry, you are not allowed to proceed"
1677
  msgstr ""
1678
 
1679
+ #: ../cerber-load.php:4145
1680
  msgid "WP Cerber notify"
1681
  msgstr ""
1682
 
1683
+ #: ../cerber-load.php:4169
1684
  msgid "Citadel mode is activated"
1685
  msgstr ""
1686
 
1687
+ #: ../cerber-load.php:4171
1688
  #, php-format
1689
  msgid "Citadel mode is activated after %d failed login attempts in %d minutes."
1690
  msgstr ""
1691
 
1692
+ #: ../cerber-load.php:4172
1693
  #, php-format
1694
  msgid "Last failed attempt was at %s from IP %s with user login: %s."
1695
  msgstr ""
1696
 
1697
+ #: ../cerber-load.php:4173 ../cerber-load.php:4985
1698
  msgid "View activity in dashboard"
1699
  msgstr ""
1700
 
1701
+ #: ../cerber-load.php:4197
1702
  msgid "unspecified"
1703
  msgstr ""
1704
 
1705
+ #: ../cerber-load.php:4200
1706
  msgid "Number of lockouts is increasing"
1707
  msgstr ""
1708
 
1709
+ #: ../cerber-load.php:4202
1710
  msgid "Number of active lockouts"
1711
  msgstr ""
1712
 
1713
+ #: ../cerber-load.php:4203
1714
  #, php-format
1715
  msgid "Last lockout was added: %s for IP %s"
1716
  msgstr ""
1717
 
1718
+ #: ../cerber-load.php:4205
1719
  msgid "View activity for this IP"
1720
  msgstr ""
1721
 
1722
+ #: ../cerber-load.php:4206
1723
  msgid "View lockouts in dashboard"
1724
  msgstr ""
1725
 
1726
+ #: ../cerber-load.php:4209 ../cerber-load.php:4211
1727
  msgid "A new version of WP Cerber is available to install"
1728
  msgstr ""
1729
 
1730
+ #: ../cerber-load.php:4210
1731
  msgid "Hi!"
1732
  msgstr ""
1733
 
1734
+ #: ../cerber-load.php:4213 ../cerber-load.php:4224 ../nexus/cerber-slave-list.php:
1735
  #: 44
1736
  msgid "Website"
1737
  msgstr ""
1738
 
1739
+ #: ../cerber-load.php:4216 ../cerber-load.php:4217
1740
  msgid "The WP Cerber security plugin has been deactivated"
1741
  msgstr ""
1742
 
1743
+ #: ../cerber-load.php:4219
1744
  msgid "Not logged in"
1745
  msgstr ""
1746
 
1747
+ #: ../cerber-load.php:4225
1748
  msgid "By user"
1749
  msgstr ""
1750
 
1751
+ #: ../cerber-load.php:4226
1752
  msgid "From IP address"
1753
  msgstr ""
1754
 
1755
+ #: ../cerber-load.php:4229
1756
  msgid "From country"
1757
  msgstr ""
1758
 
1759
+ #: ../cerber-load.php:4233
1760
  msgid "The WP Cerber security plugin is now active"
1761
  msgstr ""
1762
 
1763
+ #: ../cerber-load.php:4234 ../cerber-load.php:5259
1764
  msgid "WP Cerber is now active and has started protecting your site"
1765
  msgstr ""
1766
 
1767
+ #: ../cerber-load.php:4236 ../cerber-load.php:5262
1768
+ msgid "Getting Started Guide"
1769
+ msgstr ""
1770
+
1771
+ #: ../cerber-load.php:4245
1772
  msgid "New Custom login URL"
1773
  msgstr ""
1774
 
1775
+ #: ../cerber-load.php:4249 ../cerber-load.php:4250
1776
  msgid "A new activity has been recorded"
1777
  msgstr ""
1778
 
1779
+ #: ../cerber-load.php:4255
1780
  msgid "Weekly report"
1781
  msgstr ""
1782
 
1783
+ #: ../cerber-load.php:4258 ../cerber-load.php:4268
1784
  msgid "To change reporting settings visit"
1785
  msgstr ""
1786
 
1787
+ #: ../cerber-load.php:4265
1788
  msgid "Scanner Report"
1789
  msgstr ""
1790
 
1791
+ #: ../cerber-load.php:4294
1792
  msgid "Your login page:"
1793
  msgstr ""
1794
 
1795
+ #: ../cerber-load.php:4299
1796
  msgid "Your license is valid until"
1797
  msgstr ""
1798
 
1799
+ #: ../cerber-load.php:4302
1800
  msgid "This message was sent by"
1801
  msgstr ""
1802
 
1803
+ #: ../cerber-load.php:4323
1804
  #, php-format
1805
  msgid "Your last sign-in was %s from %s"
1806
  msgstr ""
1807
 
1808
+ #: ../cerber-load.php:4393
1809
  msgid "Weekly Report"
1810
  msgstr ""
1811
 
1812
+ #: ../cerber-load.php:4405
1813
  msgid "Activity details"
1814
  msgstr ""
1815
 
1816
+ #: ../cerber-load.php:4419
1817
  msgid "Attempts to log in with non-existing usernames"
1818
  msgstr ""
1819
 
1820
+ #: ../cerber-load.php:4953
1821
+ msgid "IP"
1822
+ msgstr ""
1823
+
1824
+ #: ../cerber-load.php:4957 ../cerber-users.php:978
1825
  msgid "User"
1826
  msgstr ""
1827
 
1828
+ #: ../cerber-load.php:4961
1829
  msgid "Username used"
1830
  msgstr ""
1831
 
1832
+ #: ../cerber-load.php:4965
1833
  msgid "Search string"
1834
  msgstr ""
1835
 
1836
+ #: ../cerber-load.php:4986
1837
  msgid "To delete the alert, click here"
1838
  msgstr ""
1839
 
1840
+ #: ../cerber-load.php:5204
1841
  #, php-format
1842
  msgid "The WP Cerber requires PHP %s or higher. You are running"
1843
  msgstr ""
1844
 
1845
+ #: ../cerber-load.php:5208
1846
  #, php-format
1847
  msgid "The WP Cerber requires WordPress %s or higher. You are running"
1848
  msgstr ""
1849
 
1850
+ #: ../cerber-load.php:5218
1851
  msgid "Can't activate WP Cerber due to a database error."
1852
  msgstr ""
1853
 
1854
+ #: ../cerber-load.php:5244
1855
  msgid "Your IP address is added to the"
1856
  msgstr ""
1857
 
1858
+ #: ../cerber-load.php:5276
1859
  msgid "Import settings"
1860
  msgstr ""
1861
 
1862
+ #: ../cerber-load.php:5277 ../nexus/cerber-nexus.php:64
1863
  msgid "Enable slave mode"
1864
  msgstr ""
1865
 
1889
  msgid "blocked by %s at %s"
1890
  msgstr ""
1891
 
1892
+ #: ../cerber-users.php:68 ../settings.php:533
1893
  msgid "User Message"
1894
  msgstr ""
1895
 
1941
  msgid "Redirect user after logout"
1942
  msgstr ""
1943
 
1944
+ #: ../cerber-users.php:432 ../settings.php:582
1945
  msgid "User session expiration time"
1946
  msgstr ""
1947
 
1993
  msgid "number of logins"
1994
  msgstr ""
1995
 
1996
+ #: ../cerber-users.php:541
1997
  msgid "Policies have been updated"
1998
  msgstr ""
1999
 
2000
+ #: ../cerber-users.php:615
2001
  #, php-format
2002
  msgid "Session has been terminated"
2003
  msgid_plural "%s sessions have been terminated"
2004
  msgstr[0] ""
2005
  msgstr[1] ""
2006
 
2007
+ #: ../cerber-users.php:951
2008
  msgid "WP Cerber Personal Data Eraser"
2009
  msgstr ""
2010
 
2011
+ #: ../cerber-users.php:980
2012
  msgid "Created"
2013
  msgstr ""
2014
 
2015
+ #: ../cerber-users.php:1001
2016
  msgid "Terminate session"
2017
  msgstr ""
2018
 
2019
+ #: ../cerber-users.php:1002
2020
  msgid "Block user"
2021
  msgstr ""
2022
 
2023
+ #: ../cerber-users.php:1070 ../nexus/cerber-slave-list.php:244
2024
  msgid "Search results for:"
2025
  msgstr ""
2026
 
2027
+ #: ../cerber-users.php:1112
2028
  msgid "Profile"
2029
  msgstr ""
2030
 
2031
+ #: ../cerber-users.php:1125
2032
  msgid "All Logins"
2033
  msgstr ""
2034
 
2035
+ #: ../cerber-users.php:1126
2036
  msgid "User Activity"
2037
  msgstr ""
2038
 
2039
+ #: ../cerber-users.php:1172
2040
  msgid "Terminate"
2041
  msgstr ""
2042
 
2043
+ #: ../settings.php:113
2044
  msgid "All connected devices"
2045
  msgstr ""
2046
 
2047
+ #: ../settings.php:116
2048
  msgid "No devices found"
2049
  msgstr ""
2050
 
2051
+ #: ../settings.php:120
2052
  msgid "Not available"
2053
  msgstr ""
2054
 
2055
+ #: ../settings.php:126
2056
  msgid ""
2057
  "Please enable Permalinks to use this feature. Set Permalink Settings to "
2058
  "something other than Default."
2059
  msgstr ""
2060
 
2061
+ #: ../settings.php:129
2062
  msgid "Be careful about enabling these options."
2063
  msgstr ""
2064
 
2065
+ #: ../settings.php:129
2066
  msgid "If you forget your Custom login URL, you will be unable to log in."
2067
  msgstr ""
2068
 
2069
+ #: ../settings.php:132
2070
  msgid "These restrictions do not apply to IP addresses in the White IP Access List"
2071
  msgstr ""
2072
 
2073
+ #: ../settings.php:136
2074
  msgid "Plugin initialization"
2075
  msgstr ""
2076
 
2077
+ #: ../settings.php:139
2078
  msgid "Load security engine"
2079
  msgstr ""
2080
 
2081
+ #: ../settings.php:142
2082
  msgid "Legacy mode"
2083
  msgstr ""
2084
 
2085
+ #: ../settings.php:143
2086
  msgid "Standard mode"
2087
  msgstr ""
2088
 
2089
+ #: ../settings.php:149
2090
  msgid "Limit login attempts"
2091
  msgstr ""
2092
 
2093
+ #: ../settings.php:152
2094
  msgid "Limit"
2095
  msgstr ""
2096
 
2097
+ #: ../settings.php:157
2098
  msgid "Lockout duration"
2099
  msgstr ""
2100
 
2101
+ #: ../settings.php:158 ../settings.php:259
2102
  msgid "minutes"
2103
  msgstr ""
2104
 
2105
+ #: ../settings.php:161
2106
  msgid "Aggressive lockout"
2107
  msgstr ""
2108
 
2109
+ #: ../settings.php:165 ../settings.php:526 ../settings.php:726
2110
  msgid "Use White IP Access List"
2111
  msgstr ""
2112
 
2113
+ #: ../settings.php:166
2114
  msgid "Apply limit login rules to IP addresses in the White IP Access List"
2115
  msgstr ""
2116
 
2117
+ #: ../settings.php:172
2118
  msgid "Proactive security rules"
2119
  msgstr ""
2120
 
2121
+ #: ../settings.php:173
2122
  msgid "Make your protection smarter!"
2123
  msgstr ""
2124
 
2125
+ #: ../settings.php:176
2126
  msgid "Block subnet"
2127
  msgstr ""
2128
 
2129
+ #: ../settings.php:177
2130
  msgid "Always block entire subnet Class C of intruders IP"
2131
  msgstr ""
2132
 
2133
+ #: ../settings.php:181
2134
  msgid "Non-existing users"
2135
  msgstr ""
2136
 
2137
+ #: ../settings.php:182
2138
  msgid "Immediately block IP when attempting to log in with a non-existing username"
2139
  msgstr ""
2140
 
2141
+ #: ../settings.php:186
2142
  msgid "Disable dashboard redirection"
2143
  msgstr ""
2144
 
2145
+ #: ../settings.php:187
2146
  msgid ""
2147
  "Disable automatic redirection to the login page when /wp-admin/ is requested "
2148
  "by an unauthorized request"
2149
  msgstr ""
2150
 
2151
+ #: ../settings.php:191
2152
  msgid "Request wp-login.php"
2153
  msgstr ""
2154
 
2155
+ #: ../settings.php:192
2156
  msgid "Immediately block IP after any request to wp-login.php"
2157
  msgstr ""
2158
 
2159
+ #: ../settings.php:196
2160
  msgid "Display 404 page"
2161
  msgstr ""
2162
 
2163
+ #: ../settings.php:199
2164
  msgid "Use 404 template from the active theme"
2165
  msgstr ""
2166
 
2167
+ #: ../settings.php:200
2168
  msgid "Display simple 404 page"
2169
  msgstr ""
2170
 
2171
+ #: ../settings.php:207
2172
  msgid "Custom login page"
2173
  msgstr ""
2174
 
2175
+ #: ../settings.php:211
2176
  msgid "Custom login URL"
2177
  msgstr ""
2178
 
2179
+ #: ../settings.php:212
2180
  msgid "must not overlap with the existing pages or posts slug"
2181
  msgstr ""
2182
 
2183
+ #: ../settings.php:214
2184
  msgid ""
2185
  "Custom login URL may contain Latin alphanumeric characters, dashes and "
2186
  "underscores only"
2187
  msgstr ""
2188
 
2189
+ #: ../settings.php:219
2190
  msgid "Disable wp-login.php"
2191
  msgstr ""
2192
 
2193
+ #: ../settings.php:220
2194
  msgid "Block direct access to wp-login.php and return HTTP 404 Not Found Error"
2195
  msgstr ""
2196
 
2197
+ #: ../settings.php:226
2198
  msgid "Site-specific settings"
2199
  msgstr ""
2200
 
2201
+ #: ../settings.php:229
2202
  msgid "Site connection"
2203
  msgstr ""
2204
 
2205
+ #: ../settings.php:234
2206
  msgid "Prefix for plugin cookies"
2207
  msgstr ""
2208
 
2209
+ #: ../settings.php:235
2210
  msgid "Prefix may contain only Latin alphanumeric characters and underscores"
2211
  msgstr ""
2212
 
2213
+ #: ../settings.php:244
2214
  msgid ""
2215
  "In the Citadel mode nobody is able to log in except IPs from the White IP "
2216
  "Access List. Active user sessions will not be affected."
2217
  msgstr ""
2218
 
2219
+ #: ../settings.php:247
2220
  msgid "Enable authentication log monitoring"
2221
  msgstr ""
2222
 
2223
+ #: ../settings.php:253
2224
  msgid "Threshold"
2225
  msgstr ""
2226
 
2227
+ #: ../settings.php:266
 
 
 
 
2228
  msgid "Send notification to admin email"
2229
  msgstr ""
2230
 
2231
+ #: ../settings.php:279 ../settings.php:813
2232
  msgid "Keep log records of not logged in visitors for"
2233
  msgstr ""
2234
 
2235
+ #: ../settings.php:280 ../settings.php:286 ../settings.php:814 ../settings.php:
2236
+ #: 820 ../settings.php:891 ../settings.php:1082
2237
  msgid "days"
2238
  msgstr ""
2239
 
2240
+ #: ../settings.php:285 ../settings.php:819
2241
  msgid "Keep log records of logged in users for"
2242
  msgstr ""
2243
 
2244
+ #: ../settings.php:291
2245
  msgid "Cerber Lab connection"
2246
  msgstr ""
2247
 
2248
+ #: ../settings.php:292
2249
  msgid "Send malicious IP addresses to the Cerber Lab"
2250
  msgstr ""
2251
 
2252
+ #: ../settings.php:297
2253
  msgid "Cerber Lab protocol"
2254
  msgstr ""
2255
 
2256
+ #: ../settings.php:305
2257
  msgid "Use file"
2258
  msgstr ""
2259
 
2260
+ #: ../settings.php:306
2261
  msgid "Write failed login attempts to the file"
2262
  msgstr ""
2263
 
2264
+ #: ../settings.php:312
2265
  msgid "Preferences"
2266
  msgstr ""
2267
 
2268
+ #: ../settings.php:315
2269
  msgid "Drill down IP"
2270
  msgstr ""
2271
 
2272
+ #: ../settings.php:316
2273
+ msgid "Retrieve extra WHOIS information for IP"
2274
+ msgstr ""
2275
+
2276
+ #: ../settings.php:320
2277
+ msgid "Date format"
2278
+ msgstr ""
2279
+
2280
+ #: ../settings.php:321
2281
+ #, php-format
2282
+ msgid "if empty, the default format %s will be used"
2283
+ msgstr ""
2284
+
2285
+ #: ../settings.php:327
2286
+ msgid "Date format for CSV export"
2287
+ msgstr ""
2288
+
2289
+ #: ../settings.php:328
2290
+ msgid "Use ISO 8601 date format for CSV export files"
2291
+ msgstr ""
2292
+
2293
+ #: ../settings.php:332
2294
+ msgid "Use English"
2295
  msgstr ""
2296
 
2297
+ #: ../settings.php:333
2298
+ msgid "Use English for admin interface"
2299
  msgstr ""
2300
 
2301
+ #: ../settings.php:337
2302
+ msgid "My IP address"
 
2303
  msgstr ""
2304
 
2305
+ #: ../settings.php:338
2306
+ msgid "Do not add my IP address to the White IP Access List upon plugin activation"
2307
  msgstr ""
2308
 
2309
+ #: ../settings.php:349
2310
  msgid "Hardening WordPress"
2311
  msgstr ""
2312
 
2313
+ #: ../settings.php:353 ../settings.php:389
2314
  msgid "Stop user enumeration"
2315
  msgstr ""
2316
 
2317
+ #: ../settings.php:354
2318
  msgid "Block access to user pages like /?author=n"
2319
  msgstr ""
2320
 
2321
+ #: ../settings.php:358
2322
  msgid "Protect admin scripts"
2323
  msgstr ""
2324
 
2325
+ #: ../settings.php:359
2326
  msgid "Block unauthorized access to load-scripts.php and load-styles.php"
2327
  msgstr ""
2328
 
2329
+ #: ../settings.php:363
2330
  msgid "Disable PHP in uploads"
2331
  msgstr ""
2332
 
2333
+ #: ../settings.php:364
2334
  msgid "Block execution of PHP scripts in the WordPress media folder"
2335
  msgstr ""
2336
 
2337
+ #: ../settings.php:368
2338
  msgid "Disable PHP error displaying"
2339
  msgstr ""
2340
 
2341
+ #: ../settings.php:372
2342
  msgid "Disable XML-RPC"
2343
  msgstr ""
2344
 
2345
+ #: ../settings.php:373
2346
  msgid "Block access to the XML-RPC server (including Pingbacks and Trackbacks)"
2347
  msgstr ""
2348
 
2349
+ #: ../settings.php:377
2350
  msgid "Disable feeds"
2351
  msgstr ""
2352
 
2353
+ #: ../settings.php:378
2354
  msgid "Block access to the RSS, Atom and RDF feeds"
2355
  msgstr ""
2356
 
2357
+ #: ../settings.php:384
2358
  msgid "Access to WordPress REST API"
2359
  msgstr ""
2360
 
2361
+ #: ../settings.php:385
2362
  msgid ""
2363
  "Restrict or completely block access to the WordPress REST API according to "
2364
  "your needs"
2365
  msgstr ""
2366
 
2367
+ #: ../settings.php:390
2368
  msgid "Block access to users' data via REST API"
2369
  msgstr ""
2370
 
2371
+ #: ../settings.php:394
2372
  msgid "Disable REST API"
2373
  msgstr ""
2374
 
2375
+ #: ../settings.php:395
2376
  msgid "Block access to WordPress REST API except any of the following"
2377
  msgstr ""
2378
 
2379
+ #: ../settings.php:400
2380
  msgid "Allow REST API for logged in users"
2381
  msgstr ""
2382
 
2383
+ #: ../settings.php:405
2384
  msgid "Allow REST API for these roles"
2385
  msgstr ""
2386
 
2387
+ #: ../settings.php:410
2388
  msgid "Allow these namespaces"
2389
  msgstr ""
2390
 
2391
+ #: ../settings.php:414
2392
  msgid ""
2393
  "Specify REST API namespaces to be allowed if REST API is disabled. One "
2394
  "string per line."
2395
  msgstr ""
2396
 
2397
+ #: ../settings.php:421
2398
  msgid "Protect user accounts"
2399
  msgstr ""
2400
 
2401
+ #: ../settings.php:426
2402
  msgid ""
2403
  "Restrict user account creation and user management with the following "
2404
  "policies"
2405
  msgstr ""
2406
 
2407
+ #: ../settings.php:432
2408
  msgid "User registrations are limited to these roles"
2409
  msgstr ""
2410
 
2411
+ #: ../settings.php:438
2412
  msgid "Users with these roles are permitted to create new accounts"
2413
  msgstr ""
2414
 
2415
+ #: ../settings.php:443
2416
  msgid "Users with these roles are permitted to change sensitive user data"
2417
  msgstr ""
2418
 
2419
+ #: ../settings.php:448 ../settings.php:476 ../settings.php:505
2420
  msgid "Do not apply these policies to the IP addresses in the White IP Access List"
2421
  msgstr ""
2422
 
2423
+ #: ../settings.php:456
2424
  msgid "Protect user roles"
2425
  msgstr ""
2426
 
2427
+ #: ../settings.php:460
2428
  msgid "Restrict roles and capabilities management with the following policies"
2429
  msgstr ""
2430
 
2431
+ #: ../settings.php:466
2432
  msgid "Users with these roles are permitted to add new roles"
2433
  msgstr ""
2434
 
2435
+ #: ../settings.php:471
2436
  msgid "Users with these roles are permitted to change role capabilities"
2437
  msgstr ""
2438
 
2439
+ #: ../settings.php:484
2440
  msgid "Protect site settings"
2441
  msgstr ""
2442
 
2443
+ #: ../settings.php:488
2444
  msgid "Restrict updating site settings with the following policies"
2445
  msgstr ""
2446
 
2447
+ #: ../settings.php:494
2448
  msgid "Users with these roles are permitted to change protected settings"
2449
  msgstr ""
2450
 
2451
+ #: ../settings.php:499
2452
  msgid "Protected settings"
2453
  msgstr ""
2454
 
2455
+ #: ../settings.php:519
2456
  msgid "Authorized users only"
2457
  msgstr ""
2458
 
2459
+ #: ../settings.php:520
2460
  msgid "Only registered and logged in website users have access to the website"
2461
  msgstr ""
2462
 
2463
+ #: ../settings.php:527
2464
  msgid "Do not apply these policy to the IP addresses in the White IP Access List"
2465
  msgstr ""
2466
 
2467
+ #: ../settings.php:537 ../settings.php:1454
2468
  msgid "Only registered and logged in users are allowed to view this website"
2469
  msgstr ""
2470
 
2471
+ #: ../settings.php:542
2472
  msgid "Redirect to URL"
2473
  msgstr ""
2474
 
2475
+ #: ../settings.php:551
2476
  msgid "Registration limit"
2477
  msgstr ""
2478
 
2479
+ #: ../settings.php:557
2480
  msgid "Restrict email addresses"
2481
  msgstr ""
2482
 
2483
+ #: ../settings.php:560
2484
  msgid "No restrictions"
2485
  msgstr ""
2486
 
2487
+ #: ../settings.php:561
2488
  msgid "Deny all email addresses that match the following"
2489
  msgstr ""
2490
 
2491
+ #: ../settings.php:562
2492
  msgid "Permit only email addresses that match the following"
2493
  msgstr ""
2494
 
2495
+ #: ../settings.php:567
2496
  msgid ""
2497
  "Specify email addresses, wildcards or REGEX patterns. Use comma to separate "
2498
  "items."
2499
  msgstr ""
2500
 
2501
+ #: ../settings.php:567 ../settings.php:575
2502
  msgid "To specify a REGEX pattern wrap a pattern in two forward slashes."
2503
  msgstr ""
2504
 
2505
+ #: ../settings.php:574
2506
  msgid "Prohibited usernames"
2507
  msgstr ""
2508
 
2509
+ #: ../settings.php:575
2510
  msgid ""
2511
  "Usernames from this list are not allowed to log in or register. Any IP "
2512
  "address, have tried to use any of these usernames, will be immediately "
2513
  "blocked. Use comma to separate logins."
2514
  msgstr ""
2515
 
2516
+ #: ../settings.php:583
2517
  msgid "minutes (leave empty to use the default WordPress value)"
2518
  msgstr ""
2519
 
2520
+ #: ../settings.php:589
2521
  msgid "Sort users in dashboard"
2522
  msgstr ""
2523
 
2524
+ #: ../settings.php:590
2525
  msgid "by date of registration"
2526
  msgstr ""
2527
 
2528
+ #: ../settings.php:598
2529
  msgid "Personal Data"
2530
  msgstr ""
2531
 
2532
+ #: ../settings.php:600
2533
  msgid ""
2534
  "These features help your organization to be in compliance with personal data "
2535
  "protection laws"
2536
  msgstr ""
2537
 
2538
+ #: ../settings.php:604
2539
  msgid "Enable data erase"
2540
  msgstr ""
2541
 
2542
+ #: ../settings.php:611
2543
  msgid "Terminate user sessions"
2544
  msgstr ""
2545
 
2546
+ #: ../settings.php:612
2547
  msgid "Delete user sessions data when user data is erased"
2548
  msgstr ""
2549
 
2550
+ #: ../settings.php:618
2551
  msgid "Enable data export"
2552
  msgstr ""
2553
 
2554
+ #: ../settings.php:625
2555
  msgid "Include activity log events"
2556
  msgstr ""
2557
 
2558
+ #: ../settings.php:631
2559
  msgid "Include traffic log entries"
2560
  msgstr ""
2561
 
2562
+ #: ../settings.php:634
2563
  msgid "Request URL"
2564
  msgstr ""
2565
 
2566
+ #: ../settings.php:635
2567
  msgid "Form fields data"
2568
  msgstr ""
2569
 
2570
+ #: ../settings.php:636
2571
  msgid "Cookies"
2572
  msgstr ""
2573
 
2574
+ #: ../settings.php:644
2575
  msgid "Email notifications"
2576
  msgstr ""
2577
 
2578
+ #: ../settings.php:649
2579
  msgid "Lockout notifications"
2580
  msgstr ""
2581
 
2582
+ #: ../settings.php:653 ../settings.php:700 ../settings.php:946
2583
  msgid "Email Address"
2584
  msgstr ""
2585
 
2586
+ #: ../settings.php:654 ../settings.php:702 ../settings.php:785 ../settings.php:948
2587
  msgid "Use comma to specify multiple values"
2588
  msgstr ""
2589
 
2590
+ #: ../settings.php:658
2591
  #, php-format
2592
  msgid "if empty, the website administrator email %s will be used"
2593
  msgstr ""
2594
 
2595
+ #: ../settings.php:661
2596
  msgid "Notification limit"
2597
  msgstr ""
2598
 
2599
+ #: ../settings.php:662
2600
  msgid "notifications are allowed per hour (0 means unlimited)"
2601
  msgstr ""
2602
 
2603
+ #: ../settings.php:666
2604
  msgid "New version is available"
2605
  msgstr ""
2606
 
2607
+ #: ../settings.php:672
2608
  msgid "Push notifications"
2609
  msgstr ""
2610
 
2611
+ #: ../settings.php:673
2612
  msgid "Get notified instantly with mobile and desktop notifications"
2613
  msgstr ""
2614
 
2615
+ #: ../settings.php:677
2616
  msgid "Pushbullet access token"
2617
  msgstr ""
2618
 
2619
+ #: ../settings.php:680
2620
  msgid "Pushbullet device"
2621
  msgstr ""
2622
 
2623
+ #: ../settings.php:687
2624
  msgid "Weekly reports"
2625
  msgstr ""
2626
 
2627
+ #: ../settings.php:688
2628
  msgid ""
2629
  "Weekly report is a summary of all activities and suspicious events occurred "
2630
  "during the last seven days"
2631
  msgstr ""
2632
 
2633
+ #: ../settings.php:691
2634
  msgid "Enable reporting"
2635
  msgstr ""
2636
 
2637
+ #: ../settings.php:695
2638
  msgid "Send reports on"
2639
  msgstr ""
2640
 
2641
+ #: ../settings.php:701 ../settings.php:947
2642
  msgid "if empty, the email addresses from the notification settings will be used"
2643
  msgstr ""
2644
 
2645
+ #: ../settings.php:712
2646
  msgid "Traffic Inspection"
2647
  msgstr ""
2648
 
2649
+ #: ../settings.php:713
2650
  msgid ""
2651
  "Traffic Inspector is a context-aware web application firewall (WAF) that "
2652
  "protects your website by recognizing and denying malicious HTTP requests"
2653
  msgstr ""
2654
 
2655
+ #: ../settings.php:717
2656
  msgid "Enable traffic inspection"
2657
  msgstr ""
2658
 
2659
+ #: ../settings.php:721 ../settings.php:749
2660
  msgid "Maximum compatibility"
2661
  msgstr ""
2662
 
2663
+ #: ../settings.php:722 ../settings.php:750
2664
  msgid "Maximum security"
2665
  msgstr ""
2666
 
2667
+ #: ../settings.php:730
2668
  msgid "Request whitelist"
2669
  msgstr ""
2670
 
2671
+ #: ../settings.php:734
2672
  msgid ""
2673
  "Enter a request URI to exclude the request from inspection. One item per "
2674
  "line."
2675
  msgstr ""
2676
 
2677
+ #: ../settings.php:734
2678
  msgid "To specify a REGEX pattern, enclose a whole line in two braces."
2679
  msgstr ""
2680
 
2681
+ #: ../settings.php:740
2682
  msgid "Erroneous Request Shielding"
2683
  msgstr ""
2684
 
2685
+ #: ../settings.php:742
2686
  msgid ""
2687
  "Block IP addresses that send excessive requests for non-existing pages or "
2688
  "scan website for security breaches"
2689
  msgstr ""
2690
 
2691
+ #: ../settings.php:745
2692
  msgid "Enable error shielding"
2693
  msgstr ""
2694
 
2695
+ #: ../settings.php:754
2696
  msgid "Ignore logged in users"
2697
  msgstr ""
2698
 
2699
+ #: ../settings.php:761
2700
  msgid "Traffic Logging"
2701
  msgstr ""
2702
 
2703
+ #: ../settings.php:762
2704
  msgid ""
2705
  "Enable optional traffic logging if you need to monitor suspicious and "
2706
  "malicious activity or solve security issues"
2707
  msgstr ""
2708
 
2709
+ #: ../settings.php:766
2710
  msgid "Logging mode"
2711
  msgstr ""
2712
 
2713
+ #: ../settings.php:769
2714
  msgid "Logging disabled"
2715
  msgstr ""
2716
 
2717
+ #: ../settings.php:770
2718
  msgid "Smart"
2719
  msgstr ""
2720
 
2721
+ #: ../settings.php:771
2722
  msgid "All traffic"
2723
  msgstr ""
2724
 
2725
+ #: ../settings.php:775
2726
  msgid "Ignore crawlers"
2727
  msgstr ""
2728
 
2729
+ #: ../settings.php:779
2730
  msgid "Save request fields"
2731
  msgstr ""
2732
 
2733
+ #: ../settings.php:783
2734
  msgid "Mask these form fields"
2735
  msgstr ""
2736
 
2737
+ #: ../settings.php:790
2738
  msgid "Save request headers"
2739
  msgstr ""
2740
 
2741
+ #: ../settings.php:795
2742
  msgid "Save $_SERVER"
2743
  msgstr ""
2744
 
2745
+ #: ../settings.php:799
2746
  msgid "Save request cookies"
2747
  msgstr ""
2748
 
2749
+ #: ../settings.php:803
2750
  msgid "Save software errors"
2751
  msgstr ""
2752
 
2753
+ #: ../settings.php:807
2754
  msgid "Page generation time threshold"
2755
  msgstr ""
2756
 
2757
+ #: ../settings.php:808
2758
  msgid "milliseconds"
2759
  msgstr ""
2760
 
2761
+ #: ../settings.php:828
2762
  msgid "Scanner settings"
2763
  msgstr ""
2764
 
2765
+ #: ../settings.php:829
2766
  msgid ""
2767
  "The scanner monitors file changes, verifies the integrity of WordPress, "
2768
  "plugins, and themes, and detects malware"
2769
  msgstr ""
2770
 
2771
+ #: ../settings.php:833
2772
  msgid "Custom signatures"
2773
  msgstr ""
2774
 
2775
+ #: ../settings.php:837
2776
  msgid ""
2777
  "Specify custom PHP code signatures. One item per line. To specify a REGEX "
2778
  "pattern, enclose a whole line in two braces."
2779
  msgstr ""
2780
 
2781
+ #: ../settings.php:840
2782
  msgid "Unwanted file extensions"
2783
  msgstr ""
2784
 
2785
+ #: ../settings.php:844
2786
  msgid ""
2787
  "Specify file extensions to search for. Full scan only. Use comma to separate "
2788
  "items."
2789
  msgstr ""
2790
 
2791
+ #: ../settings.php:847
2792
  msgid "Directories to exclude"
2793
  msgstr ""
2794
 
2795
+ #: ../settings.php:851
2796
  msgid "Specify directories to exclude from scanning. One directory per line."
2797
  msgstr ""
2798
 
2799
+ #: ../settings.php:854
2800
  msgid "Monitor new files"
2801
  msgstr ""
2802
 
2803
+ #: ../settings.php:858 ../settings.php:867
2804
  msgid "Executable files"
2805
  msgstr ""
2806
 
2807
+ #: ../settings.php:859 ../settings.php:868
2808
  msgid "All files"
2809
  msgstr ""
2810
 
2811
+ #: ../settings.php:863
2812
  msgid "Monitor modified files"
2813
  msgstr ""
2814
 
2815
+ #: ../settings.php:872
2816
  msgid "Change file permissions when necessary"
2817
  msgstr ""
2818
 
2819
+ #: ../settings.php:876
2820
  msgid "Scan temporary directory"
2821
  msgstr ""
2822
 
2823
+ #: ../settings.php:880
2824
  msgid "Scan session directory"
2825
  msgstr ""
2826
 
2827
+ #: ../settings.php:884 ../settings.php:1187 ../settings.php:1215
2828
  msgid "Enable diagnostic logging"
2829
  msgstr ""
2830
 
2831
+ #: ../settings.php:889
2832
  msgid "Delete quarantined files after"
2833
  msgstr ""
2834
 
2835
+ #: ../settings.php:898
2836
  msgid "Automated recurring scan schedule"
2837
  msgstr ""
2838
 
2839
+ #: ../settings.php:899
2840
  msgid ""
2841
  "The scanner automatically scans the website, removes malware and sends email "
2842
  "reports with the results of a scan"
2843
  msgstr ""
2844
 
2845
+ #: ../settings.php:903
2846
  msgid "Launch Quick Scan"
2847
  msgstr ""
2848
 
2849
+ #: ../settings.php:908
2850
  msgid "Launch Full Scan"
2851
  msgstr ""
2852
 
2853
+ #: ../settings.php:915
2854
  msgid "Scan results reporting"
2855
  msgstr ""
2856
 
2857
+ #: ../settings.php:916
2858
  msgid ""
2859
  "Configure what issues to include in the email report and the condition for "
2860
  "sending reports"
2861
  msgstr ""
2862
 
2863
+ #: ../settings.php:920
2864
  msgid "Report an issue if any of the following is true"
2865
  msgstr ""
2866
 
2867
+ #: ../settings.php:923 ../settings.php:969
2868
  msgid "Low severity"
2869
  msgstr ""
2870
 
2871
+ #: ../settings.php:924 ../settings.php:970
2872
  msgid "Medium severity"
2873
  msgstr ""
2874
 
2875
+ #: ../settings.php:925 ../settings.php:971
2876
  msgid "High severity"
2877
  msgstr ""
2878
 
2879
+ #: ../settings.php:929
2880
  msgid "Send email report"
2881
  msgstr ""
2882
 
2883
+ #: ../settings.php:932
2884
  msgid "After every scan"
2885
  msgstr ""
2886
 
2887
+ #: ../settings.php:933
2888
  msgid "If any changes in scan results occurred"
2889
  msgstr ""
2890
 
2891
+ #: ../settings.php:934
2892
  msgid "If new issues found"
2893
  msgstr ""
2894
 
2895
+ #: ../settings.php:938
2896
  msgid "Include file sizes"
2897
  msgstr ""
2898
 
2899
+ #: ../settings.php:942
2900
  msgid "Include scan errors"
2901
  msgstr ""
2902
 
2903
+ #: ../settings.php:957
2904
  msgid "Automatic cleanup of malware and suspicious files"
2905
  msgstr ""
2906
 
2907
+ #: ../settings.php:958
2908
  msgid ""
2909
  "These policies are automatically enforced at the end of every scheduled scan "
2910
  "based on its results. All affected files are moved to the quarantine"
2911
  msgstr ""
2912
 
2913
+ #: ../settings.php:962
2914
  msgid "Delete unattended files"
2915
  msgstr ""
2916
 
2917
+ #: ../settings.php:966
2918
  msgid "Files in the uploads folder"
2919
  msgstr ""
2920
 
2921
+ #: ../settings.php:975
2922
  msgid "Files with unwanted extensions"
2923
  msgstr ""
2924
 
2925
+ #: ../settings.php:981
2926
  msgid "Automatic recovery of modified and infected files"
2927
  msgstr ""
2928
 
2929
+ #: ../settings.php:984
2930
  msgid "Recover WordPress files"
2931
  msgstr ""
2932
 
2933
+ #: ../settings.php:988
2934
  msgid "Recover plugins files"
2935
  msgstr ""
2936
 
2937
+ #: ../settings.php:994
2938
  msgid "Exclusions"
2939
  msgstr ""
2940
 
2941
+ #: ../settings.php:995
2942
  msgid "These files will never be deleted during automatic cleanup."
2943
  msgstr ""
2944
 
2945
+ #: ../settings.php:998
2946
  msgid "Files in the temporary directory"
2947
  msgstr ""
2948
 
2949
+ #: ../settings.php:1002
2950
  msgid "Files in the sessions directory"
2951
  msgstr ""
2952
 
2953
+ #: ../settings.php:1006
2954
  msgid "Files in these directories"
2955
  msgstr ""
2956
 
2957
+ #: ../settings.php:1010
2958
  msgid "Use absolute paths. One item per line."
2959
  msgstr ""
2960
 
2961
+ #: ../settings.php:1013
2962
  msgid "Files with these extensions"
2963
  msgstr ""
2964
 
2965
+ #: ../settings.php:1017
2966
  msgid "Use comma to separate items."
2967
  msgstr ""
2968
 
2969
+ #: ../settings.php:1024
2970
  msgid "Cerber anti-spam engine"
2971
  msgstr ""
2972
 
2973
+ #: ../settings.php:1025
2974
  msgid "Spam protection for comment, registration and contact forms on a website"
2975
  msgstr ""
2976
 
2977
+ #: ../settings.php:1029
2978
  msgid "Comment form"
2979
  msgstr ""
2980
 
2981
+ #: ../settings.php:1030
2982
  msgid "Protect comment form with bot detection engine"
2983
  msgstr ""
2984
 
2985
+ #: ../settings.php:1034 ../settings.php:1106
2986
  msgid "Registration form"
2987
  msgstr ""
2988
 
2989
+ #: ../settings.php:1035
2990
  msgid "Protect registration form with bot detection engine"
2991
  msgstr ""
2992
 
2993
+ #: ../settings.php:1039
2994
  msgid "Other forms"
2995
  msgstr ""
2996
 
2997
+ #: ../settings.php:1040
2998
  msgid "Protect all forms on the website with bot detection engine"
2999
  msgstr ""
3000
 
3001
+ #: ../settings.php:1046
3002
  msgid "Adjust anti-spam engine"
3003
  msgstr ""
3004
 
3005
+ #: ../settings.php:1047
3006
  msgid ""
3007
  "These settings enable you to fine-tune the behavior of anti-spam algorithms "
3008
  "and avoid false positives"
3009
  msgstr ""
3010
 
3011
+ #: ../settings.php:1050
3012
  msgid "Safe mode"
3013
  msgstr ""
3014
 
3015
+ #: ../settings.php:1051
3016
  msgid "Use less restrictive policies (allow AJAX)"
3017
  msgstr ""
3018
 
3019
+ #: ../settings.php:1056
3020
  msgid "Disable bot detection engine for logged in users"
3021
  msgstr ""
3022
 
3023
+ #: ../settings.php:1060
3024
  msgid "Query whitelist"
3025
  msgstr ""
3026
 
3027
+ #: ../settings.php:1061
3028
  msgid ""
3029
  "Enter a part of query string or query path to exclude a request from "
3030
  "inspection by the engine. One item per line."
3031
  msgstr ""
3032
 
3033
+ #: ../settings.php:1070
3034
  msgid "Comment processing"
3035
  msgstr ""
3036
 
3037
+ #: ../settings.php:1071
3038
  msgid "How the plugin processes comments submitted through the standard comment form"
3039
  msgstr ""
3040
 
3041
+ #: ../settings.php:1074
3042
  msgid "If a spam comment detected"
3043
  msgstr ""
3044
 
3045
+ #: ../settings.php:1076
3046
  msgid "Deny it completely"
3047
  msgstr ""
3048
 
3049
+ #: ../settings.php:1076
3050
  msgid "Mark it as spam"
3051
  msgstr ""
3052
 
3053
+ #: ../settings.php:1079
3054
  msgid "Trash spam comments"
3055
  msgstr ""
3056
 
3057
+ #: ../settings.php:1081
3058
  msgid "Move spam comments to trash after"
3059
  msgstr ""
3060
 
3061
+ #: ../settings.php:1088
3062
  msgid "reCAPTCHA settings"
3063
  msgstr ""
3064
 
3065
+ #: ../settings.php:1089
3066
  msgid ""
3067
  "Before you can start using reCAPTCHA, you have to obtain Site key and Secret "
3068
  "key on the Google website"
3069
  msgstr ""
3070
 
3071
+ #: ../settings.php:1093
3072
  msgid "Site key"
3073
  msgstr ""
3074
 
3075
+ #: ../settings.php:1097
3076
  msgid "Secret key"
3077
  msgstr ""
3078
 
3079
+ #: ../settings.php:1101
3080
  msgid "Invisible reCAPTCHA"
3081
  msgstr ""
3082
 
3083
+ #: ../settings.php:1102
3084
  msgid "Enable invisible reCAPTCHA"
3085
  msgstr ""
3086
 
3087
+ #: ../settings.php:1102
3088
  msgid ""
3089
  "(do not enable it unless you get and enter the Site and Secret keys for the "
3090
  "invisible version)"
3091
  msgstr ""
3092
 
3093
+ #: ../settings.php:1107
3094
  msgid "Enable reCAPTCHA for WordPress registration form"
3095
  msgstr ""
3096
 
3097
+ #: ../settings.php:1112
3098
  msgid "Enable reCAPTCHA for WooCommerce registration form"
3099
  msgstr ""
3100
 
3101
+ #: ../settings.php:1116
3102
  msgid "Lost password form"
3103
  msgstr ""
3104
 
3105
+ #: ../settings.php:1117
3106
  msgid "Enable reCAPTCHA for WordPress lost password form"
3107
  msgstr ""
3108
 
3109
+ #: ../settings.php:1122
3110
  msgid "Enable reCAPTCHA for WooCommerce lost password form"
3111
  msgstr ""
3112
 
3113
+ #: ../settings.php:1126
3114
  msgid "Login form"
3115
  msgstr ""
3116
 
3117
+ #: ../settings.php:1127
3118
  msgid "Enable reCAPTCHA for WordPress login form"
3119
  msgstr ""
3120
 
3121
+ #: ../settings.php:1132
3122
  msgid "Enable reCAPTCHA for WooCommerce login form"
3123
  msgstr ""
3124
 
3125
+ #: ../settings.php:1137
3126
  msgid "Enable reCAPTCHA for WordPress comment form"
3127
  msgstr ""
3128
 
3129
+ #: ../settings.php:1142
3130
  msgid "Disable reCAPTCHA for logged in users"
3131
  msgstr ""
3132
 
3133
+ #: ../settings.php:1146
3134
  msgid "Limit attempts"
3135
  msgstr ""
3136
 
3137
+ #: ../settings.php:1147
3138
  #, php-format
3139
  msgid "Lock out IP address for %s minutes after %s failed attempts within %s minutes"
3140
  msgstr ""
3141
 
3142
+ #: ../settings.php:1154
3143
  msgid "Master settings"
3144
  msgstr ""
3145
 
3146
+ #: ../settings.php:1162
3147
  msgid "Return to the website list"
3148
  msgstr ""
3149
 
3150
+ #: ../settings.php:1166
3151
  msgid "Show \"Switched to\" notification"
3152
  msgstr ""
3153
 
3154
+ #: ../settings.php:1170
3155
  msgid "Add @ site to the page title"
3156
  msgstr ""
3157
 
3158
+ #: ../settings.php:1174
3159
  msgid "Use master language"
3160
  msgstr ""
3161
 
3162
+ #: ../settings.php:1198
3163
  msgid "Limit access by IP address"
3164
  msgstr ""
3165
 
3166
+ #: ../settings.php:1204
3167
  msgid "Access to this website"
3168
  msgstr ""
3169
 
3170
+ #: ../settings.php:1207
3171
  msgid "Full access mode"
3172
  msgstr ""
3173
 
3174
+ #: ../settings.php:1208
3175
  msgid "Read-only mode"
3176
  msgstr ""
3177
 
3178
+ #: ../settings.php:1229
3179
  msgid "The full access mode requires the PRO version of WP Cerber"
3180
  msgstr ""
3181
 
3182
+ #: ../settings.php:1297
3183
  msgid "Any activity"
3184
  msgstr ""
3185
 
3310
  msgid "Select file to import."
3311
  msgstr ""
3312
 
 
 
 
 
 
3313
  #: ../cerber-tools.php:48
3314
  msgid "What do you want to import?"
3315
  msgstr ""
3316
 
3317
+ #: ../cerber-tools.php:52
3318
+ msgid "Load the default plugin settings"
3319
+ msgstr ""
3320
+
3321
+ #: ../cerber-tools.php:53
3322
+ msgid ""
3323
+ "When you click the button below, the default WP Cerber settings will be "
3324
+ "loaded. The Custom login URL and Access Lists will not be changed."
3325
+ msgstr ""
3326
+
3327
+ #: ../cerber-tools.php:54
3328
+ msgid "To get the most out of WP Cerber, follow these steps:"
3329
  msgstr ""
3330
 
3331
+ #: ../cerber-tools.php:57
3332
+ msgid "Load default settings"
3333
+ msgstr ""
3334
+
3335
+ #: ../cerber-tools.php:72
3336
  msgid "Load entries"
3337
  msgstr ""
3338
 
3339
+ #: ../cerber-tools.php:189
3340
  msgid "No file was uploaded or file is corrupted"
3341
  msgstr ""
3342
 
3343
+ #: ../cerber-tools.php:228
3344
  msgid "A database error occurred while importing access list entries"
3345
  msgstr ""
3346
 
3347
+ #: ../cerber-tools.php:236
3348
  msgid "Settings has imported successfully from"
3349
  msgstr ""
3350
 
3351
+ #: ../cerber-tools.php:243
3352
  msgid "Error while parsing file"
3353
  msgstr ""
3354
 
3355
+ #: ../cerber-tools.php:320
3356
  msgid "Unsubscribe"
3357
  msgstr ""
3358
 
3424
  msgid "Switch to"
3425
  msgstr ""
3426
 
 
 
 
 
3427
  #: ../nexus/cerber-slave-list.php:413
3428
  msgid "No websites configured."
3429
  msgstr ""
3488
  msgid "Address"
3489
  msgstr ""
3490
 
3491
+ #: ../nexus/cerber-nexus-master.php:281
3492
  msgid "Security access token is invalid"
3493
  msgstr ""
3494
 
3495
+ #: ../nexus/cerber-nexus-master.php:311
3496
  msgid "The website you are trying to add is already in the list"
3497
  msgstr ""
3498
 
3499
+ #: ../nexus/cerber-nexus-master.php:320
3500
  msgid "The website has been added successfully"
3501
  msgstr ""
3502
 
3503
+ #: ../nexus/cerber-nexus-master.php:321
3504
  msgid "Click to edit"
3505
  msgstr ""
3506
 
3507
+ #: ../nexus/cerber-nexus-master.php:322
3508
  msgid "Switch to the Dashboard"
3509
  msgstr ""
3510
 
3511
+ #: ../nexus/cerber-nexus-master.php:325
3512
  msgid ""
3513
  "Keep in mind: You have added the website that does not support SSL "
3514
  "encryption. This may lead to data leakage."
3515
  msgstr ""
3516
 
3517
+ #: ../nexus/cerber-nexus-master.php:444
3518
  #, php-format
3519
  msgid "Website has been deleted"
3520
  msgid_plural "%s websites have been deleted"
3521
  msgstr[0] ""
3522
  msgstr[1] ""
3523
 
3524
+ #: ../nexus/cerber-nexus-master.php:688
3525
  msgid "Invalid response from the slave website"
3526
  msgstr ""
3527
 
3528
+ #: ../nexus/cerber-nexus-master.php:1020
3529
  #, php-format
3530
  msgid "You have switched to %s"
3531
  msgstr ""
3532
 
3533
+ #: ../nexus/cerber-nexus-master.php:1030
3534
  msgid "You have switched back to the master website"
3535
  msgstr ""
3536
 
3537
+ #: ../nexus/cerber-nexus-master.php:1246
3538
  msgid "You are here:"
3539
  msgstr ""
3540
 
3541
+ #: ../nexus/cerber-nexus-master.php:1249 ../nexus/cerber-nexus.php:92 ..
3542
  #: /nexus/cerber-nexus.php:102
3543
  msgid "My Websites"
3544
  msgstr ""
3545
 
3546
+ #: ../nexus/cerber-nexus-master.php:1264
3547
  msgid "Visit Site"
3548
  msgstr ""
3549
 
3550
+ #: ../nexus/cerber-nexus-master.php:1330
3551
  msgid "Are you sure you want to delete selected websites?"
3552
  msgstr ""
3553
 
3554
+ #: ../nexus/cerber-nexus-master.php:1374
3555
  msgid "A newer version is available"
3556
  msgstr ""
3557
 
3558
+ #: ../nexus/cerber-nexus-master.php:1396 ../nexus/cerber-nexus-master.php:1404
3559
  msgid "Active plugins and updates on"
3560
  msgstr ""
3561
 
3621
  msgid "Install the access token on the master website."
3622
  msgstr ""
3623
 
3624
+ #: ../cerber-scanner.php:1439
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3625
  msgid "Verified"
3626
  msgstr ""
3627
 
3628
+ #: ../cerber-scanner.php:1445
3629
  msgid "Vulnerability found"
3630
  msgstr ""
3631
 
3632
+ #: ../cerber-scanner.php:1446
3633
  msgid "Integrity data not found"
3634
  msgstr ""
3635
 
3636
+ #: ../cerber-scanner.php:1447
3637
  msgid "Unable to check the integrity of the plugin due to a network error"
3638
  msgstr ""
3639
 
3640
+ #: ../cerber-scanner.php:1448
3641
  msgid "Unable to check the integrity of WordPress files due to a network error"
3642
  msgstr ""
3643
 
3644
+ #: ../cerber-scanner.php:1449
3645
  msgid "Unable to check the integrity of the theme due to a network error"
3646
  msgstr ""
3647
 
3648
+ #: ../cerber-scanner.php:1450
3649
  msgid "Unable to check the integrity due to a DB error"
3650
  msgstr ""
3651
 
3652
+ #: ../cerber-scanner.php:1452
3653
  msgid "Local file doesn't exist"
3654
  msgstr ""
3655
 
3656
+ #: ../cerber-scanner.php:1454
3657
  msgid "Unable to process file"
3658
  msgstr ""
3659
 
3660
+ #: ../cerber-scanner.php:1455 ../cerber-scanner.php:4608
3661
  msgid "Unable to open file"
3662
  msgstr ""
3663
 
3664
+ #: ../cerber-scanner.php:1460
 
 
 
 
3665
  msgid "Suspicious code found"
3666
  msgstr ""
3667
 
3668
+ #: ../cerber-scanner.php:1461
3669
  msgid "Malicious code found"
3670
  msgstr ""
3671
 
3672
+ #: ../cerber-scanner.php:1462
3673
  msgid "Unattended suspicious file"
3674
  msgstr ""
3675
 
3676
+ #: ../cerber-scanner.php:1463
3677
  msgid "Executable code found"
3678
  msgstr ""
3679
 
3680
+ #: ../cerber-scanner.php:1466 ../cerber-scanner.php:2706
3681
  msgid "Suspicious directives found"
3682
  msgstr ""
3683
 
3684
+ #: ../cerber-scanner.php:1467
3685
  msgid "Unwanted file extension"
3686
  msgstr ""
3687
 
3688
+ #: ../cerber-scanner.php:1469
3689
  msgid "Content has been modified"
3690
  msgstr ""
3691
 
3692
+ #: ../cerber-scanner.php:1470
3693
  msgid "New file"
3694
  msgstr ""
3695
 
3696
+ #: ../cerber-scanner.php:1472
3697
  msgid "Unable to delete"
3698
  msgstr ""
3699
 
3700
+ #: ../cerber-scanner.php:1473
3701
  msgid "File deleted"
3702
  msgstr ""
3703
 
3704
+ #: ../cerber-scanner.php:1474
3705
  msgid "File recovered"
3706
  msgstr ""
3707
 
3708
+ #: ../cerber-scanner.php:1494
3709
  msgid "Every hour"
3710
  msgstr ""
3711
 
3712
+ #: ../cerber-scanner.php:1495
3713
  msgid "Every 3 hours"
3714
  msgstr ""
3715
 
3716
+ #: ../cerber-scanner.php:1496
3717
  msgid "Every 6 hours"
3718
  msgstr ""
3719
 
3720
+ #: ../cerber-scanner.php:2526
3721
  msgid "Custom signature found"
3722
  msgstr ""
3723
 
3724
+ #: ../cerber-scanner.php:2701
3725
  msgid ""
3726
  "This file contains executable code and may contain obfuscated malware. If "
3727
  "this file is a part of a theme or a plugin, it must be located in the theme "
3728
  "or the plugin folder. No exception, no excuses."
3729
  msgstr ""
3730
 
3731
+ #: ../cerber-scanner.php:2702
3732
  msgid ""
3733
  "The scanner recognizes this file as \"ownerless\" or \"not bundled\" because it "
3734
  "does not belong to any known part of the website and should not be here."
3735
  msgstr ""
3736
 
3737
+ #: ../cerber-scanner.php:2703
3738
  #, php-format
3739
  msgid ""
3740
  "It may remain after upgrading to a newer version of %s. It also may be a "
3742
  "made (bespoke) plugin or theme."
3743
  msgstr ""
3744
 
3745
+ #: ../cerber-scanner.php:2704
3746
  msgid "Suspicious code instruction found"
3747
  msgstr ""
3748
 
3749
+ #: ../cerber-scanner.php:2705
3750
  msgid "Suspicious code signatures found"
3751
  msgstr ""
3752
 
3753
+ #: ../cerber-scanner.php:2707
3754
  msgid ""
3755
  "The contents of the file have been changed and do not match what exists in "
3756
  "the official WordPress repository or a reference file you have uploaded "
3758
  "has been tampered with."
3759
  msgstr ""
3760
 
3761
+ #: ../cerber-scanner.php:2708
3762
  #, php-format
3763
  msgid ""
3764
  "To solve this issue you have to reinstall %s or update it to the latest "
3765
  "version."
3766
  msgstr ""
3767
 
3768
+ #: ../cerber-scanner.php:2709
3769
  msgid "Please upload a reference ZIP archive"
3770
  msgstr ""
3771
 
3772
+ #: ../cerber-scanner.php:2710
3773
  msgid "Resolve issue"
3774
  msgstr ""
3775
 
3776
+ #: ../cerber-scanner.php:3757
3777
  msgid "Preparing for the scan"
3778
  msgstr ""
3779
 
3780
+ #: ../cerber-scanner.php:3758
3781
  msgid "Scanning folders for files"
3782
  msgstr ""
3783
 
3784
+ #: ../cerber-scanner.php:3759
3785
  msgid "Scanning the upload folder for files"
3786
  msgstr ""
3787
 
3788
+ #: ../cerber-scanner.php:3760
3789
  msgid "Scanning the temp folder for files"
3790
  msgstr ""
3791
 
3792
+ #: ../cerber-scanner.php:3761
3793
  msgid "Scanning the session folder for files"
3794
  msgstr ""
3795
 
3796
+ #: ../cerber-scanner.php:3762
3797
  msgid "Parsing the list of files"
3798
  msgstr ""
3799
 
3800
+ #: ../cerber-scanner.php:3763
3801
  msgid "Checking for new and modified files"
3802
  msgstr ""
3803
 
3804
+ #: ../cerber-scanner.php:3764
3805
  msgid "Verifying the integrity of WordPress"
3806
  msgstr ""
3807
 
3808
+ #: ../cerber-scanner.php:3765
3809
  msgid "Recovering WordPress files"
3810
  msgstr ""
3811
 
3812
+ #: ../cerber-scanner.php:3766
3813
  msgid "Verifying the integrity of the plugins"
3814
  msgstr ""
3815
 
3816
+ #: ../cerber-scanner.php:3767
3817
  msgid "Recovering plugins files"
3818
  msgstr ""
3819
 
3820
+ #: ../cerber-scanner.php:3768
3821
  msgid "Verifying the integrity of the themes"
3822
  msgstr ""
3823
 
3824
+ #: ../cerber-scanner.php:3769
3825
  msgid "Searching for malicious code"
3826
  msgstr ""
3827
 
3828
+ #: ../cerber-scanner.php:3770
3829
  msgid "Finalizing the scan"
3830
  msgstr ""
3831
 
3832
+ #: ../cerber-scanner.php:4737
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3833
  msgid "Full Scan Report"
3834
  msgstr ""
3835
 
3836
+ #: ../cerber-scanner.php:4737
3837
  msgid "Quick Scan Report"
3838
  msgstr ""
3839
 
3840
+ #: ../cerber-scanner.php:4750
3841
  msgid "Files scanned"
3842
  msgstr ""
3843
 
3844
+ #: ../cerber-scanner.php:4835
3845
  msgid "Deleted"
3846
  msgstr ""
3847
 
3848
+ #: ../cerber-scanner.php:4839
3849
  msgid "Recovered"
3850
  msgstr ""
3851
 
3852
+ #: ../cerber-scanner.php:4888
3853
  msgid "Automatically moved to quarantine"
3854
  msgstr ""
3855
 
3856
+ #: ../cerber-scanner.php:4889
3857
  msgid "Automatically deleted"
3858
  msgstr ""
3859
 
3860
+ #: ../cerber-scanner.php:4892
3861
  msgid "Automatically recovered"
3862
  msgstr ""
3863
 
3864
+ #: ../cerber-scanner.php:4904
3865
  msgid "To view full report visit"
3866
  msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
nexus/cerber-nexus-master.php CHANGED
@@ -197,19 +197,15 @@ function nexus_get_groups() {
197
  return $groups;
198
  }
199
 
200
- //add_action( 'setup_theme', function () {
201
- add_action( 'admin_init', function () { // 8.3.3
202
- if ( ! is_admin() || ! nexus_is_master() ) {
203
- return;
204
- }
205
- nexus_set_context();
206
- if ( nexus_get_context() ) {
207
- nexus_send_admin_request();
208
- }
209
- }, 0 );
210
-
211
  add_action( 'admin_init', function () {
212
 
 
 
 
 
 
 
 
213
  if ( nexus_is_master() && function_exists( 'nexus_schedule_refresh' ) ) {
214
  nexus_schedule_refresh();
215
  }
@@ -266,7 +262,7 @@ add_action( 'admin_init', function () {
266
  return '';
267
  }, 10, 3 );
268
 
269
- } );
270
 
271
  function nexus_add_slave( $token ) {
272
  if ( ! is_super_admin() || ! nexus_is_master() ) {
@@ -729,7 +725,7 @@ function nexus_send( $request, $slave_id = null ) {
729
  ?>
730
 
731
  <p style="margin-top: 2em;">Diagnostic information</p>
732
- <p class="code" style="font-size: 90%">
733
  HTTP code: <?php echo $nexus_last_http; ?><br/>
734
  Response size: <?php echo $nexus_last_curl['size_download']; ?><br/>
735
  IP address: <?php echo $ip; ?><br/>
@@ -1117,9 +1113,9 @@ function nexus_do_bulk() {
1117
 
1118
  function nexus_bg_upgrade( $ids, $plugins ) {
1119
  foreach ( $ids as $id ) {
1120
- cerber_bg_task_add( array(
1121
- 'func' => 'nexus_do_upgrade',
1122
- 'args' => array( $id, $plugins, false ),
1123
  'exec_until' => 'stop', // may not be boolean
1124
  ) );
1125
  }
@@ -1196,8 +1192,8 @@ function nexus_schedule_refresh() {
1196
  }
1197
 
1198
  function nexus_add_bg_refresh( $slave_id ) {
1199
- cerber_bg_task_add( array( 'func' => 'nexus_send', 'args' => array( array( 'type' => 'hello' ), $slave_id ) ) );
1200
- cerber_bg_task_add( array( 'func' => 'nexus_refresh_slave_srv', 'args' => array( $slave_id ) ) );
1201
  }
1202
 
1203
  add_action( 'wp_before_admin_bar_render', function () {
197
  return $groups;
198
  }
199
 
 
 
 
 
 
 
 
 
 
 
 
200
  add_action( 'admin_init', function () {
201
 
202
+ if ( is_admin() && nexus_is_master() ) { // @since 8.6.3.3
203
+ nexus_set_context();
204
+ if ( nexus_get_context() ) {
205
+ nexus_send_admin_request();
206
+ }
207
+ }
208
+
209
  if ( nexus_is_master() && function_exists( 'nexus_schedule_refresh' ) ) {
210
  nexus_schedule_refresh();
211
  }
262
  return '';
263
  }, 10, 3 );
264
 
265
+ }, 0 );
266
 
267
  function nexus_add_slave( $token ) {
268
  if ( ! is_super_admin() || ! nexus_is_master() ) {
725
  ?>
726
 
727
  <p style="margin-top: 2em;">Diagnostic information</p>
728
+ <p class="crb-monospace" style="font-size: 90%">
729
  HTTP code: <?php echo $nexus_last_http; ?><br/>
730
  Response size: <?php echo $nexus_last_curl['size_download']; ?><br/>
731
  IP address: <?php echo $ip; ?><br/>
1113
 
1114
  function nexus_bg_upgrade( $ids, $plugins ) {
1115
  foreach ( $ids as $id ) {
1116
+ cerber_bg_task_add( 'nexus_do_upgrade', array(
1117
+ //'func' => 'nexus_do_upgrade',
1118
+ 'args' => array( $id, $plugins, false ),
1119
  'exec_until' => 'stop', // may not be boolean
1120
  ) );
1121
  }
1192
  }
1193
 
1194
  function nexus_add_bg_refresh( $slave_id ) {
1195
+ cerber_bg_task_add( 'nexus_send', array( 'args' => array( array( 'type' => 'hello' ), $slave_id ) ) );
1196
+ cerber_bg_task_add( 'nexus_refresh_slave_srv', array( 'args' => array( $slave_id ) ) );
1197
  }
1198
 
1199
  add_action( 'wp_before_admin_bar_render', function () {
nexus/cerber-slave-list.php CHANGED
@@ -350,7 +350,7 @@ class CRB_Slave_Table extends WP_List_Table {
350
  return $val;
351
  case 'plugin_v':
352
  if ( $val ) {
353
- $ret = '<span class="crb-slave-ver">' . $val . '</span>' . ( ( $item['site_key'] ) ? '<span class="crb-vpro" title="Valid until ' . cerber_date( $item['site_key'] ) . '">PRO</span>' : '' );
354
  if ( isset( $pup['new_version'] ) && version_compare( $val, $pup['new_version'], '<' ) ) {
355
  $ret .= ' <i style="color: red; font-size: 1.2em;" class="dashicons dashicons-warning"></i>';
356
  }
350
  return $val;
351
  case 'plugin_v':
352
  if ( $val ) {
353
+ $ret = '<span class="crb-slave-ver">' . $val . '</span>' . ( ( $item['site_key'] ) ? '<span class="crb-vpro" title="Valid until ' . cerber_date( $item['site_key'], false ) . '">PRO</span>' : '' );
354
  if ( isset( $pup['new_version'] ) && version_compare( $val, $pup['new_version'], '<' ) ) {
355
  $ret .= ' <i style="color: red; font-size: 1.2em;" class="dashicons dashicons-warning"></i>';
356
  }
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
- === Cerber Security, Antispam & Malware Scan ===
2
  Contributors: gioni
3
  Tags: security, malware scanner, antispam, firewall, limit login attempts, custom login url, login, recaptcha, captcha, activity, log, logging, whitelist, blacklist, access list
4
  Requires at least: 4.9
5
  Requires PHP: 5.6
6
  Tested up to: 5.4
7
- Stable tag: 8.6.3
8
  License: GPLv2
9
 
10
  Protection against hacker attacks and bots. Malware scanner & integrity checker. User activity log. Antispam reCAPTCHA. Limit login attempts.
@@ -329,6 +329,19 @@ To get access to your dashboard you need to copy the WP Cerber Reset folder to t
329
 
330
 
331
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
 
 
 
332
  = 8.6.3 =
333
  * New: Ability to load IP access list's entries in the CSV format (bulk load).
334
  * Update: A new malware scanner setting allows you to permit the scanner to change permissions of folders and files when required.
1
+ === Cerber Security, Anti-spam & Malware Scan ===
2
  Contributors: gioni
3
  Tags: security, malware scanner, antispam, firewall, limit login attempts, custom login url, login, recaptcha, captcha, activity, log, logging, whitelist, blacklist, access list
4
  Requires at least: 4.9
5
  Requires PHP: 5.6
6
  Tested up to: 5.4
7
+ Stable tag: 8.6.5
8
  License: GPLv2
9
 
10
  Protection against hacker attacks and bots. Malware scanner & integrity checker. User activity log. Antispam reCAPTCHA. Limit login attempts.
329
 
330
 
331
  == Changelog ==
332
+
333
+ = 8.6.5 =
334
+ * New: File system analytics. It's generated based on the results of the last full integrity scan.
335
+ * New: Logging user deletions. The user’s display name and roles are temporarily stored until all log entries related to the user are deleted.
336
+ * New: Faster export with a new date format for CSV log export.
337
+ * New: Ability to disable adding the website administrator's IP address to the White IP Access List upon WP Cerber activation.
338
+ * Improved: Handling the creation of new users by WooCommerce and membership plugins.
339
+ * Improved: Handling user registrations with prohibited emails.
340
+ * Improved: Handling secure Cerber‘s cookies on websites with SSL encryption enabled.
341
+ * Improved: The performance of the integrity checker and malware scanner on huge websites with a large number of files.
342
+ * Fixed: Loading the default plugin settings has no effect. Now it’s fixed and moved from the admin sidebar to the Tools admin page.
343
+ * [Read more](https://wpcerber.com/wp-cerber-security-8-6-5/)
344
+
345
  = 8.6.3 =
346
  * New: Ability to load IP access list's entries in the CSV format (bulk load).
347
  * Update: A new malware scanner setting allows you to permit the scanner to change permissions of folders and files when required.
settings.php CHANGED
@@ -36,22 +36,25 @@
36
  // If this file is called directly, abort executing.
37
  if ( ! defined( 'WPINC' ) ) { exit; }
38
 
39
- define('CERBER_SETTINGS','cerber_settings');
40
- define('CERBER_OPT','cerber-main');
41
- define('CERBER_OPT_H','cerber-hardening');
42
- define('CERBER_OPT_U','cerber-users');
43
- define('CERBER_OPT_A','cerber-antispam');
44
- define('CERBER_OPT_C','cerber-recaptcha');
45
- define('CERBER_OPT_N','cerber-notifications');
46
- define('CERBER_OPT_T','cerber-traffic');
47
- define('CERBER_OPT_S','cerber-scanner');
48
- define('CERBER_OPT_E','cerber-schedule');
49
- define('CERBER_OPT_P','cerber-policies');
50
- define('CERBER_OPT_US','cerber-user_shield');
51
- define('CERBER_OPT_OS','cerber-opt_shield');
52
- define('CERBER_OPT_SL','cerber-nexus-slave');
53
- define('CERBER_OPT_MA','cerber-nexus_master');
54
-
 
 
 
55
  // A new, united settings entry
56
  // @since 8.5.9.1
57
  define( 'CERBER_CONFIG', 'cerber_configuration' );
@@ -59,10 +62,17 @@ define( 'CERBER_CONFIG', 'cerber_configuration' );
59
  /**
60
  * A set of Cerber settings (WP options)
61
  *
 
62
  * @return array
63
  */
64
- function cerber_get_setting_list() {
65
- return array( CERBER_SETTINGS, CERBER_OPT, CERBER_OPT_H, CERBER_OPT_U, CERBER_OPT_A, CERBER_OPT_C, CERBER_OPT_N, CERBER_OPT_T, CERBER_OPT_S, CERBER_OPT_E, CERBER_OPT_P, CERBER_OPT_SL, CERBER_OPT_MA, CERBER_OPT_US, CERBER_OPT_OS );
 
 
 
 
 
 
66
  }
67
 
68
  function cerber_settings_config( $args = array() ) {
@@ -308,15 +318,30 @@ function cerber_settings_config( $args = array() ) {
308
  ),
309
  'dateformat' => array(
310
  'title' => __( 'Date format', 'wp-cerber' ),
311
- 'label' => sprintf( __( 'if empty, the default format %s will be used', 'wp-cerber' ), '<b>' . cerber_date( time() ) . '</b>' ),
312
  'doclink' => 'https://wpcerber.com/date-format-setting/',
313
  'label_pos' => 'below',
314
  'size' => 16,
315
  ),
 
 
 
 
 
316
  'admin_lang' => array(
317
- 'title' => __( 'Use English for admin interface', 'wp-cerber' ),
 
 
 
 
 
 
318
  'type' => 'checkbox',
319
  ),
 
 
 
 
320
  ),
321
  ),
322
 
@@ -857,6 +882,7 @@ function cerber_settings_config( $args = array() ) {
857
  ),
858
  'scan_debug' => array(
859
  'title' => __( 'Enable diagnostic logging', 'wp-cerber' ),
 
860
  'type' => 'checkbox',
861
  ),
862
  'scan_qcleanup' => array(
@@ -1159,6 +1185,7 @@ function cerber_settings_config( $args = array() ) {
1159
  ),*/
1160
  'master_diag' => array(
1161
  'title' => __( 'Enable diagnostic logging', 'wp-cerber' ),
 
1162
  'type' => 'checkbox',
1163
  ),
1164
  )
@@ -1186,6 +1213,7 @@ function cerber_settings_config( $args = array() ) {
1186
  ),
1187
  'slave_diag' => array(
1188
  'title' => __( 'Enable diagnostic logging', 'wp-cerber' ),
 
1189
  'default' => 0,
1190
  'type' => 'checkbox',
1191
  ),
@@ -1399,7 +1427,10 @@ function cerber_get_defaults( $setting = null ) {
1399
  'cerberproto' => 0,
1400
  'usefile' => 0,
1401
  'dateformat' => '',
1402
- 'admin_lang' => 0
 
 
 
1403
 
1404
  ),
1405
  CERBER_OPT_H => array(
@@ -1518,8 +1549,8 @@ function cerber_get_defaults( $setting = null ) {
1518
  'scan_inew' => '1',
1519
  'scan_imod' => '1',
1520
  'scan_chmod' => 0,
1521
- 'scan_tmp' => '1',
1522
- 'scan_sess' => '1',
1523
  'scan_debug' => 0,
1524
  'scan_qcleanup' => '30',
1525
  ),
@@ -1691,7 +1722,7 @@ function cerber_save_settings( $options ) {
1691
  }
1692
  }
1693
  if ( ! empty( $filtered ) ) {
1694
- $result = update_site_option( $option_name, $filtered );
1695
  }
1696
  }
1697
 
@@ -1788,7 +1819,7 @@ function crb_get_settings( $option = '', $purge_cache = false ) {
1788
  }
1789
 
1790
  $set_new = cerber_db_get_var( $sql_new );
1791
-
1792
  if ( $set_new ) {
1793
  array_unshift( $set, $set_new );
1794
  }
@@ -1882,15 +1913,22 @@ function cerber_get_site_option($option = '', $unserialize = true){
1882
  Load default settings, except Custom Login URL
1883
  */
1884
  function cerber_load_defaults() {
 
1885
  $save = array();
1886
  foreach ( cerber_get_defaults() as $option_name => $fields ) {
1887
  foreach ( $fields as $field_name => $def ) {
1888
  $save[ $field_name ] = $def;
1889
  }
1890
  }
 
1891
  if ( $path = crb_get_settings( 'loginpath' ) ) {
1892
  $save['loginpath'] = $path;
1893
  }
 
 
 
 
 
1894
  cerber_save_settings( $save );
1895
  }
1896
 
36
  // If this file is called directly, abort executing.
37
  if ( ! defined( 'WPINC' ) ) { exit; }
38
 
39
+ // Processed by WP Settings API
40
+ define( 'CERBER_OPT', 'cerber-main' );
41
+ define( 'CERBER_OPT_H', 'cerber-hardening' );
42
+ define( 'CERBER_OPT_U', 'cerber-users' );
43
+ define( 'CERBER_OPT_A', 'cerber-antispam' );
44
+ define( 'CERBER_OPT_C', 'cerber-recaptcha' );
45
+ define( 'CERBER_OPT_N', 'cerber-notifications' );
46
+ define( 'CERBER_OPT_T', 'cerber-traffic' );
47
+ define( 'CERBER_OPT_S', 'cerber-scanner' );
48
+ define( 'CERBER_OPT_E', 'cerber-schedule' );
49
+ define( 'CERBER_OPT_P', 'cerber-policies' );
50
+ define( 'CERBER_OPT_US', 'cerber-user_shield' );
51
+ define( 'CERBER_OPT_OS', 'cerber-opt_shield' );
52
+ define( 'CERBER_OPT_SL', 'cerber-nexus-slave' );
53
+ define( 'CERBER_OPT_MA', 'cerber-nexus_master' );
54
+
55
+ // Processed by Cerber
56
+ define( 'CERBER_SETTINGS', 'cerber_settings' );
57
+ define( 'CERBER_GEO_RULES', 'geo_rule_set' );
58
  // A new, united settings entry
59
  // @since 8.5.9.1
60
  define( 'CERBER_CONFIG', 'cerber_configuration' );
62
  /**
63
  * A set of Cerber settings (WP options)
64
  *
65
+ * @param bool $all
66
  * @return array
67
  */
68
+ function cerber_get_setting_list( $all = false ) {
69
+ $ret = array( CERBER_SETTINGS, CERBER_OPT, CERBER_OPT_H, CERBER_OPT_U, CERBER_OPT_A, CERBER_OPT_C, CERBER_OPT_N, CERBER_OPT_T, CERBER_OPT_S, CERBER_OPT_E, CERBER_OPT_P, CERBER_OPT_SL, CERBER_OPT_MA, CERBER_OPT_US, CERBER_OPT_OS );
70
+
71
+ if ( $all ) {
72
+ $ret = array_merge( $ret, array( CERBER_GEO_RULES, CERBER_CONFIG ) );
73
+ }
74
+
75
+ return $ret;
76
  }
77
 
78
  function cerber_settings_config( $args = array() ) {
318
  ),
319
  'dateformat' => array(
320
  'title' => __( 'Date format', 'wp-cerber' ),
321
+ 'label' => sprintf( __( 'if empty, the default format %s will be used', 'wp-cerber' ), '<b>' . date( crb_get_default_dt_format(), time() ) . '</b>' ),
322
  'doclink' => 'https://wpcerber.com/date-format-setting/',
323
  'label_pos' => 'below',
324
  'size' => 16,
325
  ),
326
+ 'plain_date' => array(
327
+ 'title' => __( 'Date format for CSV export', 'wp-cerber' ),
328
+ 'label' => __( 'Use ISO 8601 date format for CSV export files', 'wp-cerber' ),
329
+ 'type' => 'checkbox',
330
+ ),
331
  'admin_lang' => array(
332
+ 'title' => __( 'Use English', 'wp-cerber' ),
333
+ 'label' => __( 'Use English for admin interface', 'wp-cerber' ),
334
+ 'type' => 'checkbox',
335
+ ),
336
+ 'no_white_my_ip' => array(
337
+ 'title' => __( 'My IP address', 'wp-cerber' ),
338
+ 'label' => __( 'Do not add my IP address to the White IP Access List upon plugin activation', 'wp-cerber' ),
339
  'type' => 'checkbox',
340
  ),
341
+ /*'log_errors' => array(
342
+ 'title' => __( 'Log critical errors', 'wp-cerber' ),
343
+ 'type' => 'checkbox',
344
+ ),*/
345
  ),
346
  ),
347
 
882
  ),
883
  'scan_debug' => array(
884
  'title' => __( 'Enable diagnostic logging', 'wp-cerber' ),
885
+ 'label' => 'Once enabled, the log is available here: <a target="_blank" href="' . cerber_admin_link( 'diag-log' ) . '">Diagnostic Log</a>',
886
  'type' => 'checkbox',
887
  ),
888
  'scan_qcleanup' => array(
1185
  ),*/
1186
  'master_diag' => array(
1187
  'title' => __( 'Enable diagnostic logging', 'wp-cerber' ),
1188
+ 'label' => 'Once enabled, the log is available here: <a target="_blank" href="' . cerber_admin_link( 'diag-log' ) . '">Diagnostic Log</a>',
1189
  'type' => 'checkbox',
1190
  ),
1191
  )
1213
  ),
1214
  'slave_diag' => array(
1215
  'title' => __( 'Enable diagnostic logging', 'wp-cerber' ),
1216
+ 'label' => 'Once enabled, the log is available here: <a target="_blank" href="' . cerber_admin_link( 'diag-log' ) . '">Diagnostic Log</a>',
1217
  'default' => 0,
1218
  'type' => 'checkbox',
1219
  ),
1427
  'cerberproto' => 0,
1428
  'usefile' => 0,
1429
  'dateformat' => '',
1430
+ 'plain_date' => 0,
1431
+ 'admin_lang' => 0,
1432
+ 'no_white_my_ip' => 0,
1433
+ //'log_errors' => 1
1434
 
1435
  ),
1436
  CERBER_OPT_H => array(
1549
  'scan_inew' => '1',
1550
  'scan_imod' => '1',
1551
  'scan_chmod' => 0,
1552
+ 'scan_tmp' => 0,
1553
+ 'scan_sess' => 0,
1554
  'scan_debug' => 0,
1555
  'scan_qcleanup' => '30',
1556
  ),
1722
  }
1723
  }
1724
  if ( ! empty( $filtered ) ) {
1725
+ update_site_option( $option_name, $filtered );
1726
  }
1727
  }
1728
 
1819
  }
1820
 
1821
  $set_new = cerber_db_get_var( $sql_new );
1822
+
1823
  if ( $set_new ) {
1824
  array_unshift( $set, $set_new );
1825
  }
1913
  Load default settings, except Custom Login URL
1914
  */
1915
  function cerber_load_defaults() {
1916
+
1917
  $save = array();
1918
  foreach ( cerber_get_defaults() as $option_name => $fields ) {
1919
  foreach ( $fields as $field_name => $def ) {
1920
  $save[ $field_name ] = $def;
1921
  }
1922
  }
1923
+
1924
  if ( $path = crb_get_settings( 'loginpath' ) ) {
1925
  $save['loginpath'] = $path;
1926
  }
1927
+
1928
+ foreach ( cerber_get_setting_list( true ) as $opt ) {
1929
+ delete_site_option( $opt ); // @since 8.6.3.4
1930
+ }
1931
+
1932
  cerber_save_settings( $save );
1933
  }
1934
 
wp-cerber.php CHANGED
@@ -5,7 +5,7 @@
5
  Description: Defends WordPress against hacker attacks, spam, trojans, and viruses. Malware scanner and integrity checker. Hardening WordPress with a set of comprehensive security algorithms. Spam protection with a sophisticated bot detection engine and reCAPTCHA. Tracks user and intruder activity with powerful email, mobile and desktop notifications.
6
  Author: Cerber Tech Inc.
7
  Author URI: https://wpcerber.com
8
- Version: 8.6.3
9
  Text Domain: wp-cerber
10
  Domain Path: /languages
11
  Network: true
@@ -31,7 +31,7 @@
31
 
32
  */
33
 
34
- define( 'CERBER_VER', '8.6.3' );
35
  define( 'CERBER_PLUGIN_ID', 'wp-cerber/wp-cerber.php' );
36
 
37
  function cerber_plugin_file() {
@@ -159,7 +159,8 @@ function cerber_get_upload_dir_mu() {
159
  }
160
 
161
  function cerber_get_abspath() {
162
- static $abspath;
 
163
  if ( $abspath === null ) {
164
  $abspath = cerber_normal_path( ABSPATH );
165
  }
5
  Description: Defends WordPress against hacker attacks, spam, trojans, and viruses. Malware scanner and integrity checker. Hardening WordPress with a set of comprehensive security algorithms. Spam protection with a sophisticated bot detection engine and reCAPTCHA. Tracks user and intruder activity with powerful email, mobile and desktop notifications.
6
  Author: Cerber Tech Inc.
7
  Author URI: https://wpcerber.com
8
+ Version: 8.6.5
9
  Text Domain: wp-cerber
10
  Domain Path: /languages
11
  Network: true
31
 
32
  */
33
 
34
+ define( 'CERBER_VER', '8.6.5' );
35
  define( 'CERBER_PLUGIN_ID', 'wp-cerber/wp-cerber.php' );
36
 
37
  function cerber_plugin_file() {
159
  }
160
 
161
  function cerber_get_abspath() {
162
+ static $abspath = null;
163
+
164
  if ( $abspath === null ) {
165
  $abspath = cerber_normal_path( ABSPATH );
166
  }