Cerber Security & Antispam - Version 8.5

Version Description

  • New: Data Shield module for advanced protection of user data and vital settings in the website database. Available in the PRO version.
  • Improvement: Compatibility with WooCommerce significantly improved.
  • Update: Strict filtering for the Custom login URL setting.
  • Update: Chinese (Taiwan) translation has been added. Thanks to Sid Lo.
  • Bug fixed: Custom login URL doesn't work after updating WordPress to 5.2.3.
  • Bug fixed: User Policies tabs are not switchable if a user role was declared with a hyphen instead of the underscore.
  • Bug fixed: A PHP warning while adding a network to the Black IP Access List from the Activity tab.
  • Bug fixed: An anti-spam false positive: some WordPress DB updates can't be completed.
  • Read more
Download this release

Release Info

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

Code changes from version 8.4 to 8.5

assets/admin.css CHANGED
@@ -32,6 +32,10 @@
32
  vertical-align: middle;
33
  }
34
 
 
 
 
 
35
  .crb-main a:focus,
36
  #crb-aside a:focus {
37
  -webkit-box-shadow: none !important;
@@ -109,6 +113,17 @@
109
  border-radius: 0 !important;
110
  }
111
 
 
 
 
 
 
 
 
 
 
 
 
112
  /* Dashboard */
113
 
114
  #crb-kpi {
@@ -1336,10 +1351,10 @@ div#whois:hover {
1336
  margin-top: 0;
1337
  }
1338
  #diagnostic .diag-section {
1339
- background-color: #f7f7f7;
1340
- border: 2px solid #ccc;
1341
- width: 90%;
1342
- max-width:1000px;
1343
  margin-bottom: 1em;
1344
  padding: 1em;
1345
  }
@@ -1373,12 +1388,28 @@ div#whois:hover {
1373
  }
1374
 
1375
  .crb-plain-table {
 
 
 
 
1376
  border-collapse: collapse;
1377
- margin-top: 1em;
1378
  }
1379
- .crb-plain-table td{
1380
  border: 1px solid #eee;
1381
  }
 
 
 
 
 
 
 
 
 
 
 
 
1382
 
1383
  .cerber-button span.dashicons-before {
1384
  display: inline-block;
32
  vertical-align: middle;
33
  }
34
 
35
+ #crb-admin .select2-search__field {
36
+ width: 300px !important;
37
+ }
38
+
39
  .crb-main a:focus,
40
  #crb-aside a:focus {
41
  -webkit-box-shadow: none !important;
113
  border-radius: 0 !important;
114
  }
115
 
116
+ .crb-settings .crb-label-above {
117
+ color: #333;
118
+ font-weight: bold;
119
+ padding-bottom: 0.7em;
120
+ }
121
+
122
+ #crb-form-user_shield th,
123
+ #crb-form-opt_shield th{
124
+ display: none;
125
+ }
126
+
127
  /* Dashboard */
128
 
129
  #crb-kpi {
1351
  margin-top: 0;
1352
  }
1353
  #diagnostic .diag-section {
1354
+ background-color: #fafafa;
1355
+ border-top: 2px solid #ddd;
1356
+ /*width: 90%;
1357
+ max-width:1000px;*/
1358
  margin-bottom: 1em;
1359
  padding: 1em;
1360
  }
1388
  }
1389
 
1390
  .crb-plain-table {
1391
+ max-height: 440px;
1392
+ overflow: auto;
1393
+ }
1394
+ .crb-plain-table table {
1395
  border-collapse: collapse;
1396
+ margin-bottom: 1em;
1397
  }
1398
+ .crb-plain-table td {
1399
  border: 1px solid #eee;
1400
  }
1401
+ .crb-plain-fcw td:first-of-type {
1402
+ width: 30%;
1403
+ }
1404
+ .crb-plain-table td:not(:first-of-type) {
1405
+ color: #000;
1406
+ }
1407
+ .crb-plain-header,
1408
+ .crb-plain-fh td:first-of-type {
1409
+ color: #000;
1410
+ font-weight: bold;
1411
+ }
1412
+
1413
 
1414
  .cerber-button span.dashicons-before {
1415
  display: inline-block;
cerber-ds.php ADDED
@@ -0,0 +1,934 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ Copyright (C) 2015-19 CERBER TECH INC., https://cerber.tech
4
+ Copyright (C) 2015-19 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
+ if ( ! defined( 'WPINC' ) ) { exit; }
24
+
25
+ final class CRB_DS {
26
+ private static $setting = '_crb_ds_shadowing';
27
+ private static $config = null;
28
+ private static $the_user = null;
29
+ private static $update_user = null;
30
+ private static $acc_owner = false;
31
+ private static $user_blocked = false;
32
+ private static $user_fields = array( 'user_login' => 'lgn', 'user_pass' => 'pwd', 'user_email' => 'eml' );
33
+ private static $opt_cache = array();
34
+ //private static $user_metas = array( 'capabilities' );
35
+
36
+ static function enable_shadowing( $type ) {
37
+
38
+ if ( self::get_config( $type ) || ! lab_lab() ) {
39
+ return;
40
+ }
41
+
42
+ $conf = self::get_config();
43
+
44
+ if ( ! $conf ) {
45
+ $conf = array();
46
+ }
47
+
48
+ $data = array();
49
+ $data[0] = time();
50
+ $data[1] = 0;
51
+ $data[2] = get_current_user_id();
52
+ $data[3] = get_wp_cerber()->getSessionID();
53
+
54
+ switch ( $type ) {
55
+ case 1: // Users data
56
+
57
+ if ( defined( 'CRB_USHD_KEY' ) && is_string( CRB_USHD_KEY ) ) {
58
+ $data[5] = CRB_USHD_KEY; // If users' tables are shared among mutiple websites, define it in the wp-config.php on all websites before (!) activation shadowing
59
+ }
60
+ else {
61
+ $data[5] = substr( str_shuffle( 'abcdefghijklmnopqrstuvwxyz' ), 0, rand( 14, 16 ) );
62
+ }
63
+
64
+ $conf[ $type ] = $data;
65
+ self::save_config( $conf );
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
+
73
+ case 2: // Roles
74
+ case 3: // Settings
75
+
76
+ $data[1] = time(); // Should be set after all shadows has created
77
+ $data[5] = substr( str_shuffle( 'abcdefghijklmnopqrstuvwxyz' ), 0, rand( 10, 12 ) );
78
+ $data[6] = substr( str_shuffle( '0123456789abcdefghijklmnopqrstuvwxyz' ), 0, rand( 8, 14 ) );
79
+
80
+ $conf[ $type ] = $data;
81
+ self::save_config( $conf );
82
+
83
+ foreach ( self::get_protected_settings()[ $type ] as $item ) {
84
+ self::update_setting_shadow( $item, get_option( $item ) );
85
+ }
86
+
87
+ break;
88
+ }
89
+ }
90
+
91
+ static function disable_shadowing( $type ) {
92
+ global $wpdb;
93
+
94
+ if ( ! $type_conf = self::get_config( $type ) ) {
95
+ return;
96
+ }
97
+
98
+ if ( ! is_super_admin() && ! nexus_is_valid_request() ) {
99
+ return;
100
+ }
101
+
102
+ $conf = self::get_config();
103
+ unset( $conf[ $type ] );
104
+ self::save_config( $conf );
105
+
106
+ switch ( $type ) {
107
+ case 1:
108
+ cerber_db_query( 'DELETE FROM ' . $wpdb->usermeta . ' WHERE meta_key ="' . $type_conf[5] . '"' );
109
+ break;
110
+ case 2:
111
+ case 3:
112
+ cerber_db_query( 'DELETE FROM ' . cerber_get_db_prefix() . CERBER_SETS_TABLE . ' WHERE the_key LIKE "' . $type_conf[5] . '%"' );
113
+ break;
114
+ }
115
+
116
+ }
117
+
118
+ static function is_ready( $type ) {
119
+
120
+ if ( lab_lab() && ( $conf = self::get_config( $type ) ) && $conf[1] ) {
121
+ return true;
122
+ }
123
+
124
+ return false;
125
+ }
126
+
127
+ private static function save_config( $conf ) {
128
+ self::$config = $conf;
129
+
130
+ // Encoding
131
+
132
+ reset( $conf );
133
+ $lenght = count( $conf );
134
+
135
+ $b = rand( 1, 10 );
136
+ //$config = array_fill( $b, rand( 12, 14 ), 0 );
137
+ $config = array_fill( $b, rand( $lenght + 8, $lenght + 10 ), 0 );
138
+ $s = rand( 3, 5 );
139
+ $config[ $b + 1 ] = $s; // crucial for extracting
140
+ $config[ $b + $s ] = $conf;
141
+ $config[ $b + $s + 1 ] = array( array( $b ) ); // is not used
142
+ $config[] = $b + 3; // crucial for verification
143
+
144
+ update_site_option( self::$setting, $config );
145
+ }
146
+
147
+ private static function get_config( $type = null ) {
148
+
149
+ if ( ! isset( self::$config ) ) {
150
+
151
+ $s = get_site_option( self::$setting );
152
+
153
+ if ( ! $s || ! is_array( $s ) ) {
154
+ return false;
155
+ }
156
+
157
+ reset( $s );
158
+ if ( key( $s ) != ( end( $s ) - 3 ) ) {
159
+ return false;
160
+ }
161
+
162
+ $s = array_values( $s );
163
+
164
+ self::$config = $s[ $s[1] ];
165
+ }
166
+
167
+ if ( $type ) {
168
+ if ( isset( self::$config[ $type ] ) ) {
169
+ return self::$config[ $type ];
170
+ }
171
+
172
+ return false;
173
+ }
174
+
175
+ return self::$config;
176
+ }
177
+
178
+ /**
179
+ * Creating shadow in bulk
180
+ *
181
+ * @return bool true if not completed, false = completed or nothing to do
182
+ */
183
+ static function iterate_users() {
184
+ global $wpdb;
185
+
186
+ if ( ( ! $type_conf = self::get_config( 1 ) ) || self::is_ready( 1 ) ) {
187
+ return false;
188
+ }
189
+
190
+ $to_do = cerber_db_get_col( 'SELECT DISTINCT ID FROM ' . $wpdb->users . ' WHERE ID NOT IN (SELECT DISTINCT user_id FROM ' . $wpdb->usermeta . ' WHERE meta_key = "' . $type_conf[5] . '")' );
191
+
192
+ if ( ! $to_do ) { // Creating shadow completed
193
+ $conf = self::get_config();
194
+ $conf[1][1] = time();
195
+ self::save_config( $conf );
196
+ //cerber_diag_log( 'Create shadow completed' );
197
+
198
+ return false;
199
+ }
200
+
201
+ foreach ( $to_do as $user_id ) {
202
+ self::update_user_shadow( $user_id, null, null, self::is_meta_preserve() );
203
+ //wp_cache_delete( $user_id, 'user_meta' );
204
+ }
205
+
206
+ return true;
207
+ }
208
+
209
+ private static function get_user_shadow( $user_id ) {
210
+ if ( ! $user_id || ! $conf = self::get_config( 1 ) ) {
211
+ return false;
212
+ }
213
+
214
+ $um = get_user_meta( $user_id, $conf[5], true );
215
+
216
+ if ( ! $um ) {
217
+ return array();
218
+ }
219
+
220
+ $ret = @unserialize( self::decode( $um ) );
221
+
222
+ if ( ! $ret || ! is_array( $ret ) ) {
223
+ $ret = array();
224
+ }
225
+
226
+ return $ret;
227
+ }
228
+
229
+ private static function update_user_shadow( $user_id, $fields = array(), $meta_data = array(), $meta_keys = array() ) {
230
+
231
+ if ( ! $user_id || ! $conf = self::get_config( 1 ) ) {
232
+ return false;
233
+ }
234
+
235
+ if ( ! $data = get_userdata( $user_id ) ) {
236
+ return false; // Not a valid user
237
+ }
238
+
239
+ $sh = self::get_user_shadow( $user_id );
240
+
241
+ $sh[0] = $user_id;
242
+
243
+ if ( empty( $sh[1] ) ) {
244
+ $sh[1] = array();
245
+ }
246
+
247
+ if ( $fields ) {
248
+ $list = array_intersect_key( self::$user_fields, array_flip( $fields ) );
249
+ }
250
+ else {
251
+ $list = self::$user_fields;
252
+ }
253
+
254
+ foreach ( $list as $user_field => $key ) {
255
+ $sh[1][ $key ] = $data->data->$user_field;
256
+ }
257
+
258
+ if ( empty( $sh[2] ) ) {
259
+ $sh[2] = array();
260
+ }
261
+
262
+ /*if ( ! $fields ) { // We use $fields only for updating password
263
+ if ( empty( $sh[2] ) ) { // New user
264
+ foreach ( self::is_meta_preserve() as $key ) {
265
+ $sh[2][ $key ] = get_user_meta( $user_id, $key, true );
266
+ }
267
+ }
268
+ }*/
269
+
270
+ if ( ! empty( $meta_keys ) ) {
271
+ foreach ( $meta_keys as $key ) {
272
+ $sh[2][ $key ] = get_user_meta( $user_id, $key, true );
273
+ }
274
+ }
275
+
276
+ if ( $meta_data ) {
277
+ $sh[2] = array_merge( $sh[2], $meta_data );
278
+ }
279
+
280
+ return update_user_meta( $user_id, $conf[5], self::encode( serialize( $sh ) ) );
281
+ }
282
+
283
+ static function is_user_valid( $user_id = null ) {
284
+ if ( ! self::is_ready( 1 ) ) {
285
+ return true;
286
+ }
287
+
288
+ if ( ! $user_id ) {
289
+ $user_id = get_current_user_id();
290
+ }
291
+
292
+ if ( ( $sh = self::get_user_shadow( $user_id ) )
293
+ && $sh[0] == $user_id ) {
294
+ return true;
295
+ }
296
+
297
+ return false;
298
+ }
299
+
300
+ /**
301
+ * Return the password hash of a given user.
302
+ * Make sure that CRB_DS::is_ready() returns true before using result
303
+ *
304
+ * @param null $user_id
305
+ *
306
+ * @return string
307
+ */
308
+ static function get_user_pass( $user_id ) {
309
+ if ( ! $user_id ) {
310
+ return '';
311
+ }
312
+
313
+ if ( ! ( $sh = self::get_user_shadow( $user_id ) )
314
+ || $sh[0] != $user_id
315
+ || ! ( $ret = crb_array_get( $sh[1], self::$user_fields['user_pass'] ) ) ) {
316
+ return '';
317
+ }
318
+
319
+ return $ret;
320
+ }
321
+
322
+ static function acc_processor( $mode, $user_id ) {
323
+
324
+ if ( $mode == 'pass' ) {
325
+ self::update_user_shadow( $user_id, array( 'user_pass' ) );
326
+
327
+ return;
328
+ }
329
+
330
+ $update_shadow = false;
331
+
332
+ if ( crb_get_settings( 'ds_4acc_acl' ) && crb_acl_is_white() ) {
333
+ $update_shadow = true;
334
+ }
335
+
336
+ switch ( $mode ) {
337
+ case 'new':
338
+ self::$update_user = null;
339
+ if ( ! $update_shadow ) {
340
+ $update_shadow = self::acc_new( $user_id );
341
+ }
342
+ if ( $update_shadow ) {
343
+ self::update_user_shadow( $user_id );
344
+ }
345
+ break;
346
+ case 'update':
347
+ self::$update_user = $user_id;
348
+ self::acc_update( $user_id );
349
+ // Must be deferred till user's data is saved to DB
350
+ add_action( 'profile_update', function ( $user_id ) {
351
+ CRB_DS::update_helper( $user_id );
352
+ } );
353
+ break;
354
+ }
355
+
356
+ }
357
+
358
+ static function update_helper( $user_id ) {
359
+ if ( ( self::$update_user != $user_id )
360
+ || ( self::$user_blocked && ! self::$acc_owner ) ) {
361
+ return;
362
+ }
363
+
364
+ self::update_user_shadow( $user_id );
365
+ }
366
+
367
+ /**
368
+ * Protect DB from an authorized user creation
369
+ *
370
+ * @param $user_id
371
+ *
372
+ * @return bool true if this operation is permitted
373
+ */
374
+ private static function acc_new( $user_id ) {
375
+ global $cerber_status;
376
+
377
+ $set = crb_get_settings();
378
+ self::$user_blocked = false;
379
+
380
+ // Due to lack of a hook in the wp_insert_user() we are forced to check permissions and use wp_delete_user() after the user was created
381
+ if ( ! is_user_logged_in() ) {
382
+ if ( ! crb_user_has_role_strict( $set['ds_regs_roles'], $user_id ) ) {
383
+ $cerber_status = 32;
384
+ self::$user_blocked = true;
385
+ }
386
+ }
387
+ else {
388
+ if ( ! cerber_user_has_role( $set['ds_add_acc'] ) ) {
389
+ $cerber_status = 33;
390
+ self::$user_blocked = true;
391
+ }
392
+ }
393
+
394
+ if ( self::$user_blocked ) {
395
+ require_once( ABSPATH . 'wp-admin/includes/user.php' );
396
+ wp_delete_user( $user_id );
397
+ cerber_log( 72 );
398
+ remove_action( 'register_new_user', 'wp_send_new_user_notifications' );
399
+ remove_action( 'edit_user_created_user', 'wp_send_new_user_notifications', 10 );
400
+ }
401
+ elseif ( ! has_filter( 'register_new_user', 'wp_send_new_user_notifications' ) ) {
402
+ // this is needed in the case of a bulk user import
403
+ add_action( 'register_new_user', 'wp_send_new_user_notifications' );
404
+ add_action( 'edit_user_created_user', 'wp_send_new_user_notifications', 10 );
405
+ }
406
+
407
+ return ( ! self::$user_blocked );
408
+ }
409
+
410
+ /**
411
+ * Protect user's data from authorized modification
412
+ *
413
+ * @param $user_id
414
+ *
415
+ * @return bool true if this operation is permitted
416
+ */
417
+ private static function acc_update( $user_id ) {
418
+ global $cerber_status;
419
+
420
+ $cid = get_current_user_id();
421
+
422
+ self::$acc_owner = ( $user_id == $cid ) ? true : false;
423
+ self::$user_blocked = false;
424
+
425
+ if ( ! cerber_user_has_role( crb_get_settings( 'ds_edit_acc' ) ) ) {
426
+
427
+ self::$user_blocked = true;
428
+
429
+ if ( ! self::$acc_owner ) {
430
+ // Protect the user's row in the users table
431
+ add_filter( 'query', 'crb_empty_query', PHP_INT_MAX );
432
+ add_filter( 'pre_get_col_charset', 'crb_return_wp_error', PHP_INT_MAX );
433
+ $cerber_status = ( ! $cid ) ? 34 : 33;
434
+ cerber_log( 73 );
435
+ }
436
+
437
+ if ( ! has_filter( 'insert_user_meta', array( 'CRB_DS', 'user_meta' ) ) ) {
438
+ add_filter( 'insert_user_meta', array( 'CRB_DS', 'user_meta' ), 0, 3 );
439
+ }
440
+
441
+ }
442
+
443
+ return ( ! self::$user_blocked );
444
+ }
445
+
446
+ static function user_meta( $meta, $user, $update ) {
447
+ self::$the_user = $user;
448
+
449
+ if ( self::$user_blocked == true ) {
450
+ if ( ! self::$acc_owner ) {
451
+ // Must be removed after a single use for a given user
452
+ remove_filter( 'query', 'crb_empty_query', PHP_INT_MAX );
453
+ remove_filter( 'pre_get_col_charset', 'crb_return_wp_error', PHP_INT_MAX );
454
+ }
455
+
456
+ //return array(); // No user meta to update
457
+ }
458
+
459
+ return $meta;
460
+ }
461
+
462
+ /**
463
+ * Protect/process users metas and roles from being updated
464
+ *
465
+ * @param $var
466
+ * @param $user_id
467
+ * @param $meta_key
468
+ * @param $meta_value
469
+ * @param $prev_value
470
+ *
471
+ * @return bool|null
472
+ */
473
+ static function protect_user_meta( $var, $user_id, $meta_key, $meta_value, $prev_value ) {
474
+ global $cerber_status;
475
+
476
+ // A user is not permitted to be created or updated?
477
+ if ( self::$user_blocked ) {
478
+ if ( self::is_meta_protected( $meta_key ) ) { // User roles are here
479
+ $cerber_status = ( ! is_user_logged_in() ) ? 34 : 33;
480
+ cerber_log( 73 );
481
+
482
+ return false;
483
+ }
484
+ }
485
+
486
+ if ( true === self::is_meta_preserve( $meta_key ) ) {
487
+ $ok = false;
488
+
489
+ //if ( ( self::$update_user == $user_id )
490
+ if ( cerber_user_has_role( crb_get_settings( 'ds_edit_acc' ) ) ) {
491
+ $ok = true;
492
+ }
493
+ // Makes sense for user's role meta ONLY
494
+ elseif ( is_array( $meta_value ) && ! array_diff_key( $meta_value, array_flip( crb_get_settings( 'ds_regs_roles' ) ) ) ) {
495
+ $ok = true;
496
+ }
497
+
498
+ if ( $ok ) {
499
+ self::update_user_shadow( $user_id, null, array( $meta_key => $meta_value ) );
500
+ }
501
+ }
502
+
503
+ return $var;
504
+ }
505
+
506
+ private static function is_meta_preserve( $meta_key = null ) {
507
+ global $wpdb;
508
+
509
+ // TODO: add support for multisite via $wpdb->get_blog_prefix()
510
+
511
+ $list = array( $wpdb->base_prefix . 'capabilities', $wpdb->base_prefix . 'user_level' );
512
+
513
+ if ( $meta_key && in_array( $meta_key, $list ) ) {
514
+ return true;
515
+ }
516
+
517
+ return $list;
518
+ }
519
+
520
+ private static function is_meta_protected( $meta_key ) {
521
+ global $wpdb;
522
+
523
+ if ( ( isset( self::$the_user ) && ( $meta_key == self::$the_user->cap_key ) ) // User roles are here
524
+ || $meta_key == $wpdb->get_blog_prefix() . 'user_level' ) {
525
+ return true;
526
+ }
527
+
528
+ /*
529
+ $metas = array();
530
+ if ( in_array( $meta_key, $metas ) ) {
531
+ return true;
532
+ }*/
533
+
534
+ return false;
535
+ }
536
+
537
+ static function get_user_meta( $user_id, $meta_key, $single ) {
538
+
539
+ if ( ( $conf = self::get_config( 1 ) )
540
+ && $conf[5] == $meta_key ) {
541
+ return false; // Skip use shadow meta (infinite loop protection)
542
+ }
543
+
544
+ $sh = self::get_user_shadow( $user_id );
545
+ if ( isset( $sh[2][ $meta_key ] ) ) {
546
+ return array( $sh[2][ $meta_key ] );
547
+ }
548
+
549
+ return false;
550
+ }
551
+
552
+ /**
553
+ * Process settings updates. Updates shadow if permitted.
554
+ *
555
+ * @param $value
556
+ * @param $option
557
+ * @param $old_value
558
+ *
559
+ * @return mixed The old value if update is not permitted
560
+ */
561
+ static function setting_processor( &$value, $option, &$old_value ) {
562
+ global $cerber_status;
563
+
564
+ if ( empty( self::get_protected_settings()[3][ $option ] ) ) {
565
+ return $value;
566
+ }
567
+
568
+ if ( $value == $old_value
569
+ || ( is_array( $value ) && is_array( $old_value )
570
+ && ( serialize( $value ) === serialize( $old_value ) ) ) ) {
571
+ return $value;
572
+ }
573
+
574
+ if ( crb_get_settings( 'ds_4opts_acl' ) && crb_acl_is_white() ) {
575
+ self::update_setting_shadow( $option, $value );
576
+
577
+ return $value;
578
+ }
579
+
580
+ if ( ! cerber_is_ip_allowed() ) {
581
+ cerber_log( 75 );
582
+
583
+ return $old_value;
584
+ }
585
+
586
+ $roles = crb_get_settings( 'ds_4opts_roles' );
587
+
588
+ if ( ! $roles || ! cerber_user_has_role( $roles ) ) {
589
+ $cerber_status = ( is_user_logged_in() ) ? 33 : 34;
590
+ cerber_log( 75 );
591
+
592
+ return $old_value;
593
+ }
594
+
595
+ self::update_setting_shadow( $option, $value );
596
+
597
+ return $value;
598
+ }
599
+
600
+ static function role_processor( &$value, $option, &$old_value ) {
601
+ global $cerber_status;
602
+
603
+ if ( ! is_array( $value )
604
+ || ( substr( $option, - 11 ) != '_user_roles' ) ) {
605
+ return $value;
606
+ }
607
+
608
+ if ( serialize( $value ) === serialize( $old_value ) ) {
609
+ return $value;
610
+ }
611
+
612
+ $cerber_status = 0;
613
+
614
+ if ( ! self::role_update_permitted( $value, $old_value ) ) {
615
+ if ( ! $cerber_status ) {
616
+ $cerber_status = ( is_user_logged_in() ) ? 33 : 34;
617
+ }
618
+ cerber_log( 74 );
619
+
620
+ return $old_value;
621
+ }
622
+
623
+ self::update_setting_shadow( $option, $value );
624
+
625
+ return $value;
626
+ }
627
+
628
+ /**
629
+ * Check if role data can be updated
630
+ *
631
+ * @param $value
632
+ * @param $old_value
633
+ *
634
+ * @return bool True if update is permitted
635
+ */
636
+ static function role_update_permitted( &$value, &$old_value ) {
637
+
638
+ if ( crb_get_settings( 'ds_4roles_acl' ) && crb_acl_is_white() ) {
639
+ return true;
640
+ }
641
+
642
+ if ( ! cerber_is_ip_allowed() ) {
643
+ return false;
644
+ }
645
+
646
+ $add = crb_get_settings( 'ds_add_role' );
647
+ $edit = crb_get_settings( 'ds_edit_role' );
648
+
649
+ if ( ! $add && ! $edit ) {
650
+ return false;
651
+ }
652
+
653
+ // Are there new or deleted roles?
654
+
655
+ if ( crb_array_diff_keys( $value, $old_value ) ) {
656
+ if ( ! $add || ! cerber_user_has_role( $add ) ) {
657
+ return false;
658
+ }
659
+
660
+ return true;
661
+ }
662
+
663
+ // There are some changes in capabilities or names
664
+
665
+ if ( ! $edit || ! cerber_user_has_role( $edit ) ) {
666
+ return false;
667
+ }
668
+
669
+ return true;
670
+ }
671
+
672
+ /**
673
+ * Install hooks for retrieving data of protected settings
674
+ *
675
+ */
676
+ static function settings_hooks( $type ) {
677
+
678
+ if ( ! self::is_ready( $type ) ) {
679
+ return;
680
+ }
681
+
682
+ $list = self::get_protected_settings()[ $type ];
683
+
684
+ foreach ( $list as $option ) {
685
+
686
+ add_filter( "pre_option_{$option}", function ( $var, $option, $default ) {
687
+
688
+ $value = CRB_DS::get_setting_shadow( $option );
689
+
690
+ if ( $value ) {
691
+ return $value;
692
+ }
693
+
694
+ /*add_filter( "option_{$option}", function ( $value, $option ) {
695
+ CRB_DS::update_setting_shadow( $option, $value );
696
+
697
+ return $value;
698
+ }, 10, 2 );*/
699
+
700
+ return $var;
701
+
702
+ }, PHP_INT_MAX, 3 );
703
+
704
+ }
705
+
706
+ }
707
+
708
+ static function get_setting_shadow( $option ) {
709
+ // TODO: implement WP caching via wp_cache_add() / wp_cache_set()?
710
+ if ( ! isset( self::$opt_cache[ $option ] ) ) {
711
+ self::$opt_cache[ $option ] = cerber_get_set( self::get_setting_key( $option ) );
712
+ }
713
+
714
+ return self::$opt_cache[ $option ];
715
+ }
716
+
717
+ private static function update_setting_shadow( $option, $value ) {
718
+ self::$opt_cache[ $option ] = $value;
719
+
720
+ return cerber_update_set( self::get_setting_key( $option ), $value );
721
+ }
722
+
723
+ private static function get_setting_key( $option ) {
724
+ global $wpdb;
725
+ if ( $conf = self::get_config( 2 ) ) {
726
+ return $conf[5] . sha1( $option . $conf[6] . $wpdb->get_blog_prefix() );
727
+ }
728
+
729
+ return '';
730
+ }
731
+
732
+ /**
733
+ * @return array
734
+ */
735
+ private static function get_protected_settings() {
736
+ global $wpdb;
737
+
738
+ $list = array();
739
+
740
+ $list[2] = array( $wpdb->get_blog_prefix() . 'user_roles' );
741
+
742
+ if ( $set = crb_get_settings( 'ds_4opts_list' ) ) {
743
+ $list[3] = $set;
744
+ }
745
+ else {
746
+ $list[3] = array();
747
+ }
748
+
749
+ return $list;
750
+
751
+ }
752
+
753
+ /**
754
+ * A list of settings to protect
755
+ *
756
+ * @param bool $ui_labels
757
+ *
758
+ * @return array
759
+ */
760
+ static function get_settings_list( $ui_labels = true ) {
761
+ $set = array(
762
+ 'admin_email' => __( 'Administration Email Address' ),
763
+ 'default_role' => __( 'New User Default Role' ),
764
+ 'home' => __( 'Site Address (URL)' ),
765
+ 'siteurl' => __( 'WordPress Address (URL)' ),
766
+ 'users_can_register' => __( 'Anyone can register' ),
767
+ 'active_plugins' => __( 'Active Plugins' ),
768
+ 'template' => __( 'Active Theme' ),
769
+ );
770
+
771
+ if ( $ui_labels ) {
772
+ return $set;
773
+ }
774
+
775
+ array_walk( $set, function ( &$e ) {
776
+ $e = 1; // Default value is ON
777
+ } );
778
+
779
+ return $set;
780
+ }
781
+
782
+ private static function encode( $str ) {
783
+ $str = base64_encode( $str );
784
+ $s = strlen( $str );
785
+ $str = rtrim( $str, '=' );
786
+ $num = $s - strlen( $str );
787
+ $ret = $num . $str;
788
+
789
+ return $ret;
790
+ }
791
+
792
+ private static function decode( $str ) {
793
+ static $equs = array( '', '=', '==' );
794
+ $num = substr( $str, 0, 1 );
795
+ $str = ltrim( $str, (string) $num );
796
+
797
+ return base64_decode( $str . $equs[ $num ] );
798
+ }
799
+
800
+ static function get_status() {
801
+ $ret = '';
802
+
803
+ if ( crb_get_settings( 'ds_4acc' ) ) {
804
+ self::get_type_status( 1, $msg );
805
+ $ret .= 'Enabled for user accounts. ' . $msg;
806
+ }
807
+ if ( crb_get_settings( 'ds_4roles' ) ) {
808
+ self::get_type_status( 2, $msg );
809
+ $ret .= '<p>Enabled for user roles. ' . $msg;
810
+ }
811
+ if ( crb_get_settings( 'ds_4opts' ) ) {
812
+ self::get_type_status( 3, $msg );
813
+ $ret .= '<p>Enabled for site settings. ' . $msg;
814
+ }
815
+
816
+ return $ret;
817
+ }
818
+
819
+ private static function get_type_status( $n, &$msg = '' ) {
820
+ if ( $conf = self::get_config( $n ) ) {
821
+ if ( $conf[1] ) {
822
+ $msg = 'Active since ' . cerber_date( $conf[1] ) . '.';
823
+ return true;
824
+ }
825
+ else {
826
+ $msg = 'Creating shadow data in progress. ';
827
+ return true;
828
+ }
829
+ }
830
+
831
+ $msg = 'Configuration has been corrupted. Please re-enable protection in the Data Shield settings.';
832
+ return false;
833
+ }
834
+
835
+ // TODO: implement error notification
836
+ static function check_errors( &$msg ) {
837
+ $msg = '...';
838
+ return false;
839
+ }
840
+ }
841
+
842
+ if ( crb_get_settings( 'ds_4acc' ) && CRB_DS::is_ready( 1 ) ) {
843
+
844
+ add_action( 'user_register', function ( $user_id ) {
845
+
846
+ CRB_DS::acc_processor( 'new', $user_id );
847
+
848
+ }, 0 );
849
+
850
+ add_filter( 'wp_pre_insert_user_data', function ( $data, $update, $user_id ) {
851
+
852
+ if ( $update ) {
853
+ CRB_DS::acc_processor( 'update', $user_id );
854
+ }
855
+
856
+ return $data;
857
+ }, PHP_INT_MAX, 3 );
858
+
859
+ add_filter( 'update_user_metadata', function ( $var, $object_id, $meta_key, $meta_value, $prev_value ) {
860
+ // apply_filters( "update_{$meta_type}_metadata", null, $object_id, $meta_key, $meta_value, $prev_value );
861
+
862
+ return CRB_DS::protect_user_meta( $var, $object_id, $meta_key, $meta_value, $prev_value );
863
+
864
+ }, PHP_INT_MAX, 5 );
865
+
866
+ add_filter( 'get_user_metadata', function ( $var, $object_id, $meta_key, $single ) {
867
+ //$check = apply_filters( "get_{$meta_type}_metadata", null, $object_id, $meta_key, $single );
868
+
869
+ if ( $meta = CRB_DS::get_user_meta( $object_id, $meta_key, $single ) ) {
870
+ return $meta;
871
+ }
872
+
873
+ return $var;
874
+
875
+ }, PHP_INT_MAX, 4 );
876
+
877
+ add_action( 'crb_after_reset', function ( $null, $user_id ) {
878
+
879
+ CRB_DS::acc_processor( 'pass', $user_id );
880
+
881
+ }, 10, 2 );
882
+ }
883
+
884
+ if ( crb_get_settings( 'ds_4roles' ) && CRB_DS::is_ready( 2 ) ) {
885
+
886
+ CRB_DS::settings_hooks( 2 );
887
+
888
+ add_filter( 'pre_update_option', function ( $value, $option, $old_value ) {
889
+
890
+ return CRB_DS::role_processor( $value, $option, $old_value );
891
+
892
+ }, PHP_INT_MAX, 3 );
893
+
894
+ }
895
+
896
+ if ( crb_get_settings( 'ds_4opts' ) && CRB_DS::is_ready( 3 ) ) {
897
+
898
+ CRB_DS::settings_hooks( 3 );
899
+
900
+ add_filter( 'pre_update_option', function ( $value, $option, $old_value ) {
901
+
902
+ return CRB_DS::setting_processor( $value, $option, $old_value );
903
+
904
+ }, PHP_INT_MAX, 3 );
905
+
906
+ }
907
+
908
+ /**
909
+ * A special SQL clause that produces empty result
910
+ *
911
+ * @return string
912
+ */
913
+ function crb_empty_query() {
914
+ global $wpdb;
915
+
916
+ return 'SELECT 0 FROM ' . $wpdb->users;
917
+ }
918
+
919
+ /**
920
+ * This helps to get rid of PHP warnings
921
+ *
922
+ * @return WP_Error
923
+ */
924
+ function crb_return_wp_error() {
925
+ return new WP_Error();
926
+ }
927
+
928
+ function _crb_ds_background() {
929
+ if ( ! CRB_DS::iterate_users() ) {
930
+ return 'done';
931
+ }
932
+
933
+ return 1;
934
+ }
cerber-lab.php CHANGED
@@ -493,17 +493,16 @@ function lab_status() {
493
  return $ret . '<p>No information. No request has been made yet.</p>';
494
  }
495
 
496
- $ret .= '<table id="lab-status"><tr><th>Node</th><th>Processing time</th><th>Operational status</th><th>Info</th><th>IP address</th><th>Location</th><th>Last request</th><th>Protocol</th></tr>';
 
497
  foreach ( $nodes['nodes'] as $id => $node ) {
498
  $delay = round( 1000 * $node['last'][0] ) . ' ms';
499
  $ago = cerber_ago_time( $node['last'][3] );
500
  $status = $node['last'][1];
501
  if ( $status ) {
502
- $class = 'node-ok';
503
  $status = '<span style = "color:green;">' . $status . '</span>';
504
  }
505
  else {
506
- $class = 'node-error';
507
  $status = 'Down';
508
  $delay = 'Unknown';
509
  }
@@ -513,9 +512,28 @@ function lab_status() {
513
  else {
514
  $country = '';
515
  }
516
- $ret .= '<tr class="' . $class . '"><td>' . $id . '</td><td>' . $delay . '</td><td>' . $status . '</td><td>' . $node['last'][2] . '</td><td>' . $node['last'][5] . '</td><td>' . $country . '</td><td>' . $ago . '</td><td>' . $node['last'][4] . '</td><td>';
517
- }
518
- $ret .= '</table>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
519
 
520
  if ( ! empty( $nodes['best'] ) ) {
521
  $ret .= '<p>Closest (fastest) node: ' . $nodes['best'] . '</p>';
@@ -559,19 +577,26 @@ function lab_is_cloud_ok(){
559
  * @param $reason_id integer Why IP is malicious
560
  * @param $details
561
  */
562
- function lab_save_push( $ip, $reason_id, $details ) {
 
563
  $ip = filter_var( $ip, FILTER_VALIDATE_IP );
564
  if ( ! $ip || is_ip_private( $ip ) || crb_acl_is_white( $ip ) || ! ( crb_get_settings( 'cerberlab' ) || lab_lab() ) ) {
565
  return;
566
  }
 
567
  $reason_id = absint( $reason_id );
568
  if ( $reason_id == 8 || $reason_id == 9 ) {
569
  $details = array( 'uri' => $_SERVER['REQUEST_URI'] );
570
  }
 
 
 
 
571
  if ( is_array( $details ) ) {
572
  $details = serialize( $details );
573
  }
574
  $details = cerber_real_escape( $details );
 
575
  cerber_db_query( 'INSERT INTO ' . CERBER_LAB_TABLE . ' (ip, reason_id, details, stamp) VALUES ("' . $ip . '",' . $reason_id . ',"' . $details . '",' . time() . ')' );
576
  }
577
  /**
@@ -674,12 +699,14 @@ function lab_update_key( $lic, $expires = 0 ) {
674
  lab_get_key( false, true ); // reload the static cache
675
  }
676
 
677
- function lab_validate_lic( $lic = '' ) {
678
 
 
679
  $key = lab_get_key();
680
 
681
  if ( ! $lic ) {
682
  if ( empty( $key[2] ) ) {
 
683
  return false;
684
  }
685
  $lic = $key[2];
@@ -691,24 +718,38 @@ function lab_validate_lic( $lic = '' ) {
691
  $i --;
692
  }
693
 
694
- if ( ! $ret || !isset( $ret['response']['expires_gmt'] ) ) {
695
  cerber_admin_notice( 'A network error occurred while verifying the license key. Please try again in a couple of minutes.' );
 
696
  $expires = 0;
697
  }
698
  else {
 
699
  $expires = absint( $ret['response']['expires_gmt'] );
700
  }
701
 
702
- lab_update_key($lic, $expires);
 
 
 
 
 
 
 
 
 
703
 
704
- if ( !$expires || time() > $expires ) {
705
  return false;
706
  }
707
 
708
- $df = cerber_get_site_option( 'date_format', false );
709
- $gmt_offset = cerber_get_site_option( 'gmt_offset', false ) * 3600;
 
 
 
710
 
711
- return date_i18n( $df, $gmt_offset + $expires );
 
712
  }
713
 
714
  function lab_lab( $with_date = false ) {
493
  return $ret . '<p>No information. No request has been made yet.</p>';
494
  }
495
 
496
+ $tb = array();
497
+
498
  foreach ( $nodes['nodes'] as $id => $node ) {
499
  $delay = round( 1000 * $node['last'][0] ) . ' ms';
500
  $ago = cerber_ago_time( $node['last'][3] );
501
  $status = $node['last'][1];
502
  if ( $status ) {
 
503
  $status = '<span style = "color:green;">' . $status . '</span>';
504
  }
505
  else {
 
506
  $status = 'Down';
507
  $delay = 'Unknown';
508
  }
512
  else {
513
  $country = '';
514
  }
515
+ $tb[] = array(
516
+ $id,
517
+ $delay,
518
+ $status,
519
+ $node['last'][2],
520
+ $node['last'][5],
521
+ $country,
522
+ $ago,
523
+ $node['last'][4],
524
+ );
525
+ }
526
+
527
+ $ret .= cerber_make_plain_table( $tb, array(
528
+ 'Node',
529
+ 'Processing time',
530
+ 'Operational status',
531
+ 'Info',
532
+ 'IP address',
533
+ 'Location',
534
+ 'Last request',
535
+ 'Protocol'
536
+ ), false, true );
537
 
538
  if ( ! empty( $nodes['best'] ) ) {
539
  $ret .= '<p>Closest (fastest) node: ' . $nodes['best'] . '</p>';
577
  * @param $reason_id integer Why IP is malicious
578
  * @param $details
579
  */
580
+ function lab_save_push( $ip, $reason_id, $details = null ) {
581
+ global $cerber_status;
582
  $ip = filter_var( $ip, FILTER_VALIDATE_IP );
583
  if ( ! $ip || is_ip_private( $ip ) || crb_acl_is_white( $ip ) || ! ( crb_get_settings( 'cerberlab' ) || lab_lab() ) ) {
584
  return;
585
  }
586
+
587
  $reason_id = absint( $reason_id );
588
  if ( $reason_id == 8 || $reason_id == 9 ) {
589
  $details = array( 'uri' => $_SERVER['REQUEST_URI'] );
590
  }
591
+ elseif ( $reason_id == 100 ) {
592
+ $details = absint( $cerber_status );
593
+ }
594
+
595
  if ( is_array( $details ) ) {
596
  $details = serialize( $details );
597
  }
598
  $details = cerber_real_escape( $details );
599
+
600
  cerber_db_query( 'INSERT INTO ' . CERBER_LAB_TABLE . ' (ip, reason_id, details, stamp) VALUES ("' . $ip . '",' . $reason_id . ',"' . $details . '",' . time() . ')' );
601
  }
602
  /**
699
  lab_get_key( false, true ); // reload the static cache
700
  }
701
 
702
+ function lab_validate_lic( $lic = '', &$msg = '' ) {
703
 
704
+ $msg = '';
705
  $key = lab_get_key();
706
 
707
  if ( ! $lic ) {
708
  if ( empty( $key[2] ) ) {
709
+ $msg = '(1)';
710
  return false;
711
  }
712
  $lic = $key[2];
718
  $i --;
719
  }
720
 
721
+ if ( ! $ret || ! isset( $ret['response']['expires_gmt'] ) ) {
722
  cerber_admin_notice( 'A network error occurred while verifying the license key. Please try again in a couple of minutes.' );
723
+ $msg = '(2)';
724
  $expires = 0;
725
  }
726
  else {
727
+ $msg = '(3)';
728
  $expires = absint( $ret['response']['expires_gmt'] );
729
  }
730
 
731
+ lab_update_key( $lic, $expires );
732
+
733
+ if ( ! $expires ) {
734
+ $msg = '(4)';
735
+
736
+ return false;
737
+ }
738
+
739
+ if ( time() > ( $expires + LAB_LICENSE_GRACE ) ) {
740
+ $msg = '(5)';
741
 
 
742
  return false;
743
  }
744
 
745
+ //$df = cerber_get_site_option( 'date_format', false );
746
+ //$gmt_offset = cerber_get_site_option( 'gmt_offset', false ) * 3600;
747
+
748
+ $df = get_site_option( 'date_format', false );
749
+ $gmt_offset = get_site_option( 'gmt_offset', false ) * 3600;
750
 
751
+ $msg = date_i18n( $df, $gmt_offset + $expires );
752
+ return true;
753
  }
754
 
755
  function lab_lab( $with_date = false ) {
cerber-load.php CHANGED
@@ -86,6 +86,7 @@ require_once( dirname( __FILE__ ) . '/jetflow.php' );
86
  require_once( dirname( __FILE__ ) . '/cerber-news.php' );
87
  require_once( dirname( __FILE__ ) . '/cerber-scanner.php' );
88
  require_once( dirname( __FILE__ ) . '/cerber-2fa.php' );
 
89
  require_once( dirname( __FILE__ ) . '/nexus/cerber-nexus.php' );
90
 
91
  if ( defined( 'WP_ADMIN' ) || defined( 'WP_NETWORK_ADMIN' ) ) {
@@ -923,13 +924,18 @@ function cerber_is_login_request() {
923
  $ret = false;
924
 
925
  if ( $path = crb_get_settings( 'loginpath' ) ) {
926
- $request = $_SERVER['REQUEST_URI'];
927
- if ( $pos = strpos( $request, '?' ) ) {
928
- $request = substr( $request, 0, $pos - 1 );
 
 
929
  }
930
- $request = explode( '/', rtrim( $request, '/' ) );
931
- $request = end( $request );
932
- if ( $path == $request && ! cerber_is_rest_url() ) {
 
 
 
933
  $ret = true;
934
  }
935
  }
@@ -1027,19 +1033,39 @@ function cerber_authenticate( $user, $username, $password ) {
1027
 
1028
  // Check for prohibited username
1029
  if ( $username && cerber_is_prohibited( $username ) ) {
1030
- cerber_log( 52, $username );
 
1031
  cerber_block_add( null, 704, $username );
1032
 
 
 
1033
  // Create with message that is identical the default WP
1034
- return new WP_Error( 'incorrect_password', sprintf(
1035
  __( '<strong>ERROR</strong>: The password you entered for the username %s is incorrect.' ),
1036
  '<strong>' . $username . '</strong>'
1037
- ) );
1038
  }
1039
 
1040
  $user = wp_authenticate_username_password( $user, $username, $password );
1041
  $user = wp_authenticate_email_password( $user, $username, $password );
1042
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1043
  // @since 4.18 it is replacement for 'wp_login_failed' action hook
1044
  // see WP function wp_authenticate()
1045
  $ignore_codes = array( 'empty_username', 'empty_password', 'cerber_denied' );
@@ -1101,6 +1127,19 @@ add_filter( 'wp_authenticate_user', function ( $user, $password ) {
1101
  return $user;
1102
  }, PHP_INT_MAX, 2 );
1103
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1104
  add_action( 'wp_login', function ( $login, $user ) {
1105
  cerber_user_login( $login, $user );
1106
  }, 0, 2 );
@@ -1290,7 +1329,12 @@ function crb_update_session_data( $user_id, $sessions = null ) {
1290
 
1291
  $exist = cerber_db_get_col( 'SELECT wp_session_token FROM ' . $table . ' WHERE user_id = ' . $user_id );
1292
 
1293
- $new = array_diff( $list, $exist ); // Should be just one element or none
 
 
 
 
 
1294
 
1295
  foreach ( $new as $id ) {
1296
  $data = $sessions[ $id ];
@@ -1352,7 +1396,7 @@ add_action( 'set_current_user', function () { // the normal way
1352
  global $current_user;
1353
  cerber_restrict_user( $current_user->ID );
1354
  }, 0 );
1355
- add_action( 'init', function () { // backup for 'set_current_user'
1356
  cerber_restrict_user( get_current_user_id() );
1357
  }, 0 );
1358
 
@@ -1366,6 +1410,7 @@ function cerber_restrict_user( $user_id ) {
1366
  $done = true;
1367
 
1368
  if ( crb_is_user_blocked( $user_id )
 
1369
  || crb_acl_is_black() // @since 8.2.4
1370
  || ! cerber_geo_allowed( 'geo_login', $user_id ) ) { // @since 8.2.3
1371
 
@@ -1413,9 +1458,39 @@ add_filter( 'logout_redirect', function ( $redirect_to, $requested_redirect_to,
1413
  $redirect_to = cerber_parse_redir( $to, $user );
1414
  }
1415
 
 
 
 
 
 
 
1416
  return $redirect_to;
1417
  }, PHP_INT_MAX, 3 );
1418
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1419
  function cerber_parse_redir( $url, $user ) {
1420
  if ( strpos( $url, '{{' ) ) {
1421
  $url = preg_replace( '/{{user_id}}/', $user->ID, $url );
@@ -1584,7 +1659,7 @@ function crb_is_reg_limit_reached() {
1584
  $stamp = absint( time() - 60 * crb_get_settings( 'reglimit_min' ) );
1585
  $count = cerber_db_get_var( 'SELECT count(ip) FROM ' . CERBER_LOG_TABLE . ' WHERE ip = "' . $ip . '" AND activity = 2 AND stamp > ' . $stamp );
1586
  if ( $count >= crb_get_settings( 'reglimit_num' ) ) {
1587
- lab_save_push( $ip, 344, '' );
1588
 
1589
  return true;
1590
  }
@@ -1968,12 +2043,12 @@ function cerber_auth_access() {
1968
 
1969
  $opt = crb_get_settings();
1970
 
1971
- if ( $opt['authonlyacl']
1972
  && crb_acl_is_white() ) {
1973
  return;
1974
  }
1975
 
1976
- if ( $opt['authonly']
1977
  && ! is_user_logged_in()
1978
  && cerber_auth_required( $opt['authonlyredir'] ) ) {
1979
  if ( $opt['authonlyredir'] ) {
@@ -2049,9 +2124,19 @@ function cerber_is_antibot_exception(){
2049
  // Admin || AJAX requests by unauthorized users
2050
  if ( is_admin() ) {
2051
  if ( cerber_is_wp_ajax() ) {
2052
- if (is_user_logged_in()) {
2053
  return true;
2054
  }
 
 
 
 
 
 
 
 
 
 
2055
  }
2056
  else {
2057
  return true;
@@ -2078,15 +2163,6 @@ function cerber_is_antibot_exception(){
2078
  return true;
2079
  }
2080
 
2081
- // Cloud Scanner
2082
- if ( cerber_is_cloud_request() ) {
2083
- return true;
2084
- }
2085
-
2086
- if ( nexus_is_valid_request() ) {
2087
- return true;
2088
- }
2089
-
2090
  // REST API (except Contact Form 7 submission)
2091
  if ( cerber_is_rest_url() ) {
2092
  if ( false === strpos( $_SERVER['REQUEST_URI'], 'contact-form-7' ) ) {
@@ -2096,8 +2172,6 @@ function cerber_is_antibot_exception(){
2096
 
2097
  if ( class_exists( 'WooCommerce' ) ) {
2098
  if ( cerber_is_permalink_enabled() ) {
2099
- //if ( 0 === strpos( cerber_get_site_root() . cerber_purify_uri(), get_home_url() . '/wc-api/' ) ) {
2100
- //if ( 0 === strpos( CRB_Request::full_url(), cerber_get_home_url() . '/wc-api/' ) ) {
2101
  if ( CRB_Request::is_url_start_with( cerber_get_home_url() . '/wc-api/' ) ) {
2102
  return true;
2103
  }
@@ -2109,6 +2183,24 @@ function cerber_is_antibot_exception(){
2109
  }
2110
  }
2111
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2112
  return false;
2113
  }
2114
 
@@ -2145,7 +2237,7 @@ function cerber_antibot_mode() {
2145
  if ( ! empty( $_GET['wc-ajax'] ) &&
2146
  //$_GET['wc-ajax'] == 'get_refreshed_fragments' &&
2147
  count( $_GET ) == 1 &&
2148
- empty( $_POST )
2149
  ) {
2150
 
2151
  return 2;
@@ -2368,6 +2460,7 @@ function cerber_antibot_enabled( $location ) {
2368
  * @param $location string|array Location (setting)
2369
  */
2370
  function cerber_antibot_code($location) {
 
2371
  if ( ! cerber_antibot_enabled( $location ) ) {
2372
  return;
2373
  }
@@ -2583,7 +2676,7 @@ function cerber_is_bot( $location = '' ) {
2583
 
2584
  if ( $ret ) {
2585
  $cerber_status = 11;
2586
- lab_save_push( $remote_ip, 333, '' );
2587
  }
2588
  }
2589
 
@@ -2981,8 +3074,8 @@ function cerber_calc_duration( $ip ) {
2981
  *
2982
  * @return int Allowed attempts for present moment
2983
  */
2984
- function cerber_get_remain_count( $ip = '', $check_acl = true, $activity = array( '7,51,52' ), $allowed = null, $period = null ) {
2985
- global $wpdb, $wp_cerber;
2986
  if ( ! $ip ) {
2987
  $ip = $wp_cerber->getRemoteIp();
2988
  }
@@ -3030,6 +3123,7 @@ function cerber_get_remain_count( $ip = '', $check_acl = true, $activity = array
3030
  * @return bool
3031
  */
3032
  function cerber_is_ip_allowed( $ip = '', $allowed = array(), $ignore_citadel = false ) {
 
3033
 
3034
  if ( ! $ip ) {
3035
  $ip = cerber_get_remote_ip();
@@ -3044,15 +3138,15 @@ function cerber_is_ip_allowed( $ip = '', $allowed = array(), $ignore_citadel = f
3044
  return true;
3045
  }
3046
  if ( $tag == 'B' ) {
 
3047
  return false;
3048
  }
3049
 
3050
  // @since 4.7.9
3051
  if ( $b = cerber_get_block( $ip ) ) {
3052
- if ( empty( $allowed ) ) {
3053
- return false;
3054
- }
3055
- elseif ( ! in_array( $b->reason_id, $allowed ) ) {
3056
  return false;
3057
  }
3058
  }
@@ -3067,6 +3161,7 @@ function cerber_is_ip_allowed( $ip = '', $allowed = array(), $ignore_citadel = f
3067
  }
3068
 
3069
  if ( lab_is_blocked( $ip, false ) ) {
 
3070
  return false;
3071
  }
3072
 
@@ -3231,16 +3326,28 @@ function cerber_acl_remove( $ip ) {
3231
  */
3232
  function cerber_can_be_listed( $ip, $list = 'B' ) {
3233
  if ( $list == 'B' ) {
 
3234
  if ( crb_acl_is_white( cerber_get_remote_ip() ) ) {
3235
  return true;
3236
  }
3237
- if ( filter_var( $ip, FILTER_VALIDATE_IP ) ) {
3238
- if ( cerber_is_myip( $ip ) ) {
3239
- return false;
 
 
 
 
 
 
3240
  }
 
 
3241
  }
3242
- $range = cerber_any2range( $ip );
3243
- if ( cerber_is_ip_in_range( $range ) ) {
 
 
 
3244
  return false;
3245
  }
3246
 
@@ -3590,12 +3697,12 @@ function cerber_is_myip( $ip ) {
3590
  }
3591
 
3592
  function cerber_is_ip_in_range( $range, $ip = null ) {
3593
- global $wp_cerber;
3594
  if ( ! is_array( $range ) ) {
3595
  return false;
3596
  }
3597
  if ( ! $ip ) {
3598
- $ip = $wp_cerber->getRemoteIp();
3599
  }
3600
  $long = ip2long( $ip );
3601
  if ( $range['begin'] <= $long && $long <= $range['end'] ) {
@@ -4290,7 +4397,7 @@ function cerber_bg_task_launcher( $filter = null ) {
4290
  return $ret;
4291
  }
4292
 
4293
- $safe_func = array( 'nexus_send', 'nexus_do_upgrade' );
4294
 
4295
  foreach ( $exec_it as $task_id => $task ) {
4296
 
@@ -4551,7 +4658,7 @@ function cerber_log( $activity, $login = '', $user_id = 0, $ip = null ) {
4551
  }
4552
 
4553
  if ( in_array( $activity, array( 16, 17, 40, 56, 100 ) ) ) {
4554
- lab_save_push( $ip, $activity, '' );
4555
  }
4556
 
4557
  return $ret;
@@ -4571,16 +4678,19 @@ function cerber_get_log($activity = array(), $user = array(), $order = array(),
4571
  global $wpdb;
4572
 
4573
  $where = array();
 
4574
  if ( $activity ) {
4575
  $activity = array_map( 'absint', $activity );
4576
  $where[] = 'activity IN (' . implode( ', ', $activity ) . ')';
4577
  }
4578
 
4579
  if ( ! empty( $user['email'] ) ) {
4580
- $user = get_user_by( 'email', $user['email'] );
 
 
4581
  $where[] = 'user_id = ' . absint( $user->ID );
4582
  }
4583
- elseif ( ! empty( $user['id'] ) ) {
4584
  $where[] = 'user_id = ' . absint( $user['id'] );
4585
  }
4586
 
@@ -5313,7 +5423,7 @@ function cerber_login_scripts() {
5313
  add_action( 'wp_enqueue_scripts', 'cerber_scripts' );
5314
  function cerber_scripts() {
5315
  global $wp_cerber;
5316
- if ( ( is_singular() && cerber_antibot_enabled( array( 'botscomm', 'botsany' ) ) )
5317
  || ( $wp_cerber->getSettings( 'sitekey' ) && $wp_cerber->getSettings( 'secretkey' ) )
5318
  ) {
5319
  wp_enqueue_script( 'jquery' );
@@ -5385,7 +5495,9 @@ add_action( 'wp_footer', 'cerber_foo', 1000 );
5385
  function cerber_foo() {
5386
  global $wp_cerber;
5387
 
5388
- if (is_singular()) cerber_antibot_code( array( 'botscomm', 'botsany' ) );
 
 
5389
 
5390
  if (!$wp_cerber->recaptcha_here) return;
5391
 
@@ -5456,6 +5568,8 @@ register_shutdown_function( function () {
5456
  function cerber_error_shield( $mode = 1 ) {
5457
  global $cerber_status, $cerber_blocked;
5458
 
 
 
5459
  if ( ! $mode || ( crb_get_settings( 'tierrnoauth' ) && is_user_logged_in() ) ) {
5460
  return;
5461
  }
@@ -5680,7 +5794,7 @@ function cerber_traffic_log(){
5680
  //$details[5] = file_get_contents('php://input');
5681
  }
5682
  if ( crb_get_settings( 'tihdrs' ) ) {
5683
- $hds = getallheaders();
5684
  unset( $hds['Cookie'] );
5685
  $details[6] = $hds;
5686
  }
86
  require_once( dirname( __FILE__ ) . '/cerber-news.php' );
87
  require_once( dirname( __FILE__ ) . '/cerber-scanner.php' );
88
  require_once( dirname( __FILE__ ) . '/cerber-2fa.php' );
89
+ require_once( dirname( __FILE__ ) . '/cerber-ds.php' );
90
  require_once( dirname( __FILE__ ) . '/nexus/cerber-nexus.php' );
91
 
92
  if ( defined( 'WP_ADMIN' ) || defined( 'WP_NETWORK_ADMIN' ) ) {
924
  $ret = false;
925
 
926
  if ( $path = crb_get_settings( 'loginpath' ) ) {
927
+
928
+ $uri = $_SERVER['REQUEST_URI'];
929
+
930
+ if ( $pos = strpos( $uri, '?' ) ) {
931
+ $uri = substr( $uri, 0, $pos );
932
  }
933
+
934
+ $components = explode( '/', rtrim( $uri, '/' ) );
935
+ $last = end( $components );
936
+
937
+ if ( $path === $last
938
+ && ! cerber_is_rest_url() ) {
939
  $ret = true;
940
  }
941
  }
1033
 
1034
  // Check for prohibited username
1035
  if ( $username && cerber_is_prohibited( $username ) ) {
1036
+ //cerber_log( 52, $username );
1037
+ $ret = crb_login_error( $username, 52 );
1038
  cerber_block_add( null, 704, $username );
1039
 
1040
+ return $ret;
1041
+
1042
  // Create with message that is identical the default WP
1043
+ /*return new WP_Error( 'incorrect_password', sprintf(
1044
  __( '<strong>ERROR</strong>: The password you entered for the username %s is incorrect.' ),
1045
  '<strong>' . $username . '</strong>'
1046
+ ) );*/
1047
  }
1048
 
1049
  $user = wp_authenticate_username_password( $user, $username, $password );
1050
  $user = wp_authenticate_email_password( $user, $username, $password );
1051
 
1052
+ // @since 8.4.2
1053
+ // Should be moved under 'wp_authenticate_user' hook see below?
1054
+ if ( ( $user instanceof WP_User ) && $user->ID ) {
1055
+
1056
+ if ( crb_get_settings( 'ds_4acc' ) && CRB_DS::is_ready( 1 ) ) {
1057
+
1058
+ if ( ! CRB_DS::is_user_valid( $user->ID ) ) {
1059
+ return crb_login_error( $username, 53, 35 );
1060
+ }
1061
+
1062
+ $pwd = CRB_DS::get_user_pass( $user->ID );
1063
+ if ( ! $pwd || ! wp_check_password( $password, $pwd, $user->ID ) ) {
1064
+ return crb_login_error( $username, 53, 36 );
1065
+ }
1066
+ }
1067
+ }
1068
+
1069
  // @since 4.18 it is replacement for 'wp_login_failed' action hook
1070
  // see WP function wp_authenticate()
1071
  $ignore_codes = array( 'empty_username', 'empty_password', 'cerber_denied' );
1127
  return $user;
1128
  }, PHP_INT_MAX, 2 );
1129
 
1130
+ function crb_login_error( $username, $act = null, $status = null ) {
1131
+ global $cerber_status;
1132
+ $cerber_status = $status;
1133
+ if ( $act ) {
1134
+ cerber_log( $act, $username );
1135
+ }
1136
+ // Create with message that is identical the default WP
1137
+ return new WP_Error( 'incorrect_password', sprintf(
1138
+ __( '<strong>ERROR</strong>: The password you entered for the username %s is incorrect.' ),
1139
+ '<strong>' . $username . '</strong>'
1140
+ ) );
1141
+ }
1142
+
1143
  add_action( 'wp_login', function ( $login, $user ) {
1144
  cerber_user_login( $login, $user );
1145
  }, 0, 2 );
1329
 
1330
  $exist = cerber_db_get_col( 'SELECT wp_session_token FROM ' . $table . ' WHERE user_id = ' . $user_id );
1331
 
1332
+ if ( $exist ) {
1333
+ $new = array_diff( $list, $exist ); // Should be just one element or none
1334
+ }
1335
+ else {
1336
+ $new = $list;
1337
+ }
1338
 
1339
  foreach ( $new as $id ) {
1340
  $data = $sessions[ $id ];
1396
  global $current_user;
1397
  cerber_restrict_user( $current_user->ID );
1398
  }, 0 );
1399
+ add_action( 'init', function () { // backup for 'set_current_user' hook which might not be invoked
1400
  cerber_restrict_user( get_current_user_id() );
1401
  }, 0 );
1402
 
1410
  $done = true;
1411
 
1412
  if ( crb_is_user_blocked( $user_id )
1413
+ || ! CRB_DS::is_user_valid( $user_id )
1414
  || crb_acl_is_black() // @since 8.2.4
1415
  || ! cerber_geo_allowed( 'geo_login', $user_id ) ) { // @since 8.2.3
1416
 
1458
  $redirect_to = cerber_parse_redir( $to, $user );
1459
  }
1460
 
1461
+ if ( ( $path = crb_get_settings( 'loginpath' ) )
1462
+ && empty( $requested_redirect_to )
1463
+ && cerber_is_login_request() ) {
1464
+ $redirect_to = '/' . $path . '/?loggedout=true'; // Replace the default WP logout redirection
1465
+ }
1466
+
1467
  return $redirect_to;
1468
  }, PHP_INT_MAX, 3 );
1469
 
1470
+ if ( crb_get_settings( 'loginpath' ) ) {
1471
+
1472
+ add_filter( 'lostpassword_redirect', function ( $redirect_to ) {
1473
+
1474
+ if ( ( $path = crb_get_settings( 'loginpath' ) )
1475
+ && cerber_is_login_request() ) {
1476
+ $redirect_to = '/' . $path . '/?checkemail=confirm'; // Replace the default WP logout redirection
1477
+ }
1478
+
1479
+ return $redirect_to;
1480
+ }, PHP_INT_MAX );
1481
+
1482
+ add_filter( 'registration_redirect', function ( $redirect_to ) {
1483
+
1484
+ if ( ( $path = crb_get_settings( 'loginpath' ) )
1485
+ && cerber_is_login_request() ) {
1486
+ $redirect_to = '/' . $path . '/?checkemail=registered'; // Replace the default WP logout redirection
1487
+ }
1488
+
1489
+ return $redirect_to;
1490
+ }, PHP_INT_MAX );
1491
+
1492
+ }
1493
+
1494
  function cerber_parse_redir( $url, $user ) {
1495
  if ( strpos( $url, '{{' ) ) {
1496
  $url = preg_replace( '/{{user_id}}/', $user->ID, $url );
1659
  $stamp = absint( time() - 60 * crb_get_settings( 'reglimit_min' ) );
1660
  $count = cerber_db_get_var( 'SELECT count(ip) FROM ' . CERBER_LOG_TABLE . ' WHERE ip = "' . $ip . '" AND activity = 2 AND stamp > ' . $stamp );
1661
  if ( $count >= crb_get_settings( 'reglimit_num' ) ) {
1662
+ lab_save_push( $ip, 344 );
1663
 
1664
  return true;
1665
  }
2043
 
2044
  $opt = crb_get_settings();
2045
 
2046
+ if ( ! empty( $opt['authonlyacl'] )
2047
  && crb_acl_is_white() ) {
2048
  return;
2049
  }
2050
 
2051
+ if ( ! empty( $opt['authonly'] )
2052
  && ! is_user_logged_in()
2053
  && cerber_auth_required( $opt['authonlyredir'] ) ) {
2054
  if ( $opt['authonlyredir'] ) {
2124
  // Admin || AJAX requests by unauthorized users
2125
  if ( is_admin() ) {
2126
  if ( cerber_is_wp_ajax() ) {
2127
+ if ( is_user_logged_in() ) {
2128
  return true;
2129
  }
2130
+ if ( class_exists( 'WooCommerce' ) ) {
2131
+ // Background processes launcher? P.S. wc_privacy_cleanup
2132
+ if ( crb_arrays_similar( $_GET, array(
2133
+ 'nonce' => 'crb_is_alphanumeric',
2134
+ 'action' => 'crb_is_alphanumeric'
2135
+ ) )
2136
+ && ! preg_grep( '/[^\d]/', array_keys( $_POST ) ) ) { // If other than numeric keys in array
2137
+ return true;
2138
+ }
2139
+ }
2140
  }
2141
  else {
2142
  return true;
2163
  return true;
2164
  }
2165
 
 
 
 
 
 
 
 
 
 
2166
  // REST API (except Contact Form 7 submission)
2167
  if ( cerber_is_rest_url() ) {
2168
  if ( false === strpos( $_SERVER['REQUEST_URI'], 'contact-form-7' ) ) {
2172
 
2173
  if ( class_exists( 'WooCommerce' ) ) {
2174
  if ( cerber_is_permalink_enabled() ) {
 
 
2175
  if ( CRB_Request::is_url_start_with( cerber_get_home_url() . '/wc-api/' ) ) {
2176
  return true;
2177
  }
2183
  }
2184
  }
2185
 
2186
+ // Upgrading WP, see update-core.php
2187
+ if ( count( $_GET ) == 1
2188
+ && count( $_POST ) == 0
2189
+ && ( $p = cerber_get_get( 'step' ) )
2190
+ && ( $p == 'upgrade_db' )
2191
+ && substr( cerber_script_filename(), - 21 ) == '/wp-admin/upgrade.php' ) {
2192
+ return true;
2193
+ }
2194
+
2195
+ // Cloud Scanner
2196
+ if ( cerber_is_cloud_request() ) {
2197
+ return true;
2198
+ }
2199
+
2200
+ if ( nexus_is_valid_request() ) {
2201
+ return true;
2202
+ }
2203
+
2204
  return false;
2205
  }
2206
 
2237
  if ( ! empty( $_GET['wc-ajax'] ) &&
2238
  //$_GET['wc-ajax'] == 'get_refreshed_fragments' &&
2239
  count( $_GET ) == 1 &&
2240
+ ( count( $_POST ) <= 1 )
2241
  ) {
2242
 
2243
  return 2;
2460
  * @param $location string|array Location (setting)
2461
  */
2462
  function cerber_antibot_code($location) {
2463
+
2464
  if ( ! cerber_antibot_enabled( $location ) ) {
2465
  return;
2466
  }
2676
 
2677
  if ( $ret ) {
2678
  $cerber_status = 11;
2679
+ lab_save_push( $remote_ip, 333 );
2680
  }
2681
  }
2682
 
3074
  *
3075
  * @return int Allowed attempts for present moment
3076
  */
3077
+ function cerber_get_remain_count( $ip = '', $check_acl = true, $activity = array( 7, 51, 52 ), $allowed = null, $period = null ) {
3078
+ global $wp_cerber;
3079
  if ( ! $ip ) {
3080
  $ip = $wp_cerber->getRemoteIp();
3081
  }
3123
  * @return bool
3124
  */
3125
  function cerber_is_ip_allowed( $ip = '', $allowed = array(), $ignore_citadel = false ) {
3126
+ global $cerber_status;
3127
 
3128
  if ( ! $ip ) {
3129
  $ip = cerber_get_remote_ip();
3138
  return true;
3139
  }
3140
  if ( $tag == 'B' ) {
3141
+ $cerber_status = 14;
3142
  return false;
3143
  }
3144
 
3145
  // @since 4.7.9
3146
  if ( $b = cerber_get_block( $ip ) ) {
3147
+ if ( empty( $allowed ) || ! in_array( $b->reason_id, $allowed ) ) {
3148
+ $cerber_status = 13;
3149
+
 
3150
  return false;
3151
  }
3152
  }
3161
  }
3162
 
3163
  if ( lab_is_blocked( $ip, false ) ) {
3164
+ $cerber_status = 15;
3165
  return false;
3166
  }
3167
 
3326
  */
3327
  function cerber_can_be_listed( $ip, $list = 'B' ) {
3328
  if ( $list == 'B' ) {
3329
+
3330
  if ( crb_acl_is_white( cerber_get_remote_ip() ) ) {
3331
  return true;
3332
  }
3333
+
3334
+ if ( is_string( $ip ) ) {
3335
+
3336
+ if ( filter_var( $ip, FILTER_VALIDATE_IP ) ) {
3337
+ if ( cerber_is_myip( $ip ) ) {
3338
+ return false;
3339
+ }
3340
+
3341
+ return true;
3342
  }
3343
+
3344
+ $ip = cerber_any2range( $ip );
3345
  }
3346
+ elseif ( ! isset( $ip['range'] )) {
3347
+ return false;
3348
+ }
3349
+
3350
+ if ( cerber_is_ip_in_range( $ip ) ) {
3351
  return false;
3352
  }
3353
 
3697
  }
3698
 
3699
  function cerber_is_ip_in_range( $range, $ip = null ) {
3700
+
3701
  if ( ! is_array( $range ) ) {
3702
  return false;
3703
  }
3704
  if ( ! $ip ) {
3705
+ $ip = cerber_get_remote_ip();
3706
  }
3707
  $long = ip2long( $ip );
3708
  if ( $range['begin'] <= $long && $long <= $range['end'] ) {
4397
  return $ret;
4398
  }
4399
 
4400
+ $safe_func = array( 'nexus_send', 'nexus_do_upgrade', '_crb_ds_background' );
4401
 
4402
  foreach ( $exec_it as $task_id => $task ) {
4403
 
4658
  }
4659
 
4660
  if ( in_array( $activity, array( 16, 17, 40, 56, 100 ) ) ) {
4661
+ lab_save_push( $ip, $activity );
4662
  }
4663
 
4664
  return $ret;
4678
  global $wpdb;
4679
 
4680
  $where = array();
4681
+
4682
  if ( $activity ) {
4683
  $activity = array_map( 'absint', $activity );
4684
  $where[] = 'activity IN (' . implode( ', ', $activity ) . ')';
4685
  }
4686
 
4687
  if ( ! empty( $user['email'] ) ) {
4688
+ if ( ! $user = get_user_by( 'email', $user['email'] ) ) {
4689
+ return null;
4690
+ }
4691
  $where[] = 'user_id = ' . absint( $user->ID );
4692
  }
4693
+ elseif ( ! empty( $user['id'] ) ) {
4694
  $where[] = 'user_id = ' . absint( $user['id'] );
4695
  }
4696
 
5423
  add_action( 'wp_enqueue_scripts', 'cerber_scripts' );
5424
  function cerber_scripts() {
5425
  global $wp_cerber;
5426
+ if ( ( ( is_singular() || is_archive() ) && cerber_antibot_enabled( array( 'botscomm', 'botsany' ) ) )
5427
  || ( $wp_cerber->getSettings( 'sitekey' ) && $wp_cerber->getSettings( 'secretkey' ) )
5428
  ) {
5429
  wp_enqueue_script( 'jquery' );
5495
  function cerber_foo() {
5496
  global $wp_cerber;
5497
 
5498
+ if ( is_singular() || is_archive() ) {
5499
+ cerber_antibot_code( array( 'botscomm', 'botsany' ) );
5500
+ }
5501
 
5502
  if (!$wp_cerber->recaptcha_here) return;
5503
 
5568
  function cerber_error_shield( $mode = 1 ) {
5569
  global $cerber_status, $cerber_blocked;
5570
 
5571
+ require_once( ABSPATH . WPINC . '/pluggable.php' ); // @since 8.5 for is_user_logged_in()
5572
+
5573
  if ( ! $mode || ( crb_get_settings( 'tierrnoauth' ) && is_user_logged_in() ) ) {
5574
  return;
5575
  }
5794
  //$details[5] = file_get_contents('php://input');
5795
  }
5796
  if ( crb_get_settings( 'tihdrs' ) ) {
5797
+ $hds = crb_getallheaders();
5798
  unset( $hds['Cookie'] );
5799
  $details[6] = $hds;
5800
  }
cerber-news.php CHANGED
@@ -123,6 +123,13 @@ function cerber_push_the_news( $version ) {
123
  $news['8.4'][] = 'Improvement: The custom login page feature has been updated to eliminate possible conflicts with themes and other plugins.';
124
  $news['8.4'][] = 'Improvement: Compatibility with operating systems that natively doesn’t support the PHP GLOB_BRACE constant.';
125
 
 
 
 
 
 
 
 
126
  if ( ! empty( $news[ $version ] ) ) {
127
  //$text = '<h3>What\'s new in WP Cerber '.$version.'</h3>';
128
 
123
  $news['8.4'][] = 'Improvement: The custom login page feature has been updated to eliminate possible conflicts with themes and other plugins.';
124
  $news['8.4'][] = 'Improvement: Compatibility with operating systems that natively doesn’t support the PHP GLOB_BRACE constant.';
125
 
126
+ $news['8.5'][] = 'A new Data Shield module for advanced protection of user data and vital settings in the website database. Available in the PRO version.';
127
+ $news['8.5'][] = 'Improvement: Compatibility with WooCommerce significantly improved.';
128
+ $news['8.5'][] = 'Bug fixed: Custom login URL doesn\'t work after updating WordPress to 5.2.3.';
129
+ $news['8.5'][] = 'Bug fixed: User Policies tabs are not switchable if a user role was declared with a hyphen instead of the underscore.';
130
+ $news['8.5'][] = 'Bug fixed: A PHP warning while adding a network to the Black IP Access List from the Activity tab.';
131
+ $news['8.5'][] = 'Bug fixed: An anti-spam false positive: some WordPress DB updates can\'t be completed.';
132
+
133
  if ( ! empty( $news[ $version ] ) ) {
134
  //$text = '<h3>What\'s new in WP Cerber '.$version.'</h3>';
135
 
cerber-scanner.php CHANGED
@@ -329,7 +329,7 @@ function cerber_scanner( $control, $mode ) {
329
  if ( crb_get_settings( 'scan_debug' ) ) {
330
  register_shutdown_function( function () {
331
  if ( http_response_code() != 200 ) {
332
- crb_scan_debug( 'SERVER ERROR! The scan is not completed.' );
333
  if ( $err = error_get_last() ) {
334
  crb_scan_debug( print_r( $err, 1 ) );
335
  }
329
  if ( crb_get_settings( 'scan_debug' ) ) {
330
  register_shutdown_function( function () {
331
  if ( http_response_code() != 200 ) {
332
+ crb_scan_debug( 'ERROR: Unexpected software errors detected. Check the server error log.' );
333
  if ( $err = error_get_last() ) {
334
  crb_scan_debug( print_r( $err, 1 ) );
335
  }
cerber-tools.php CHANGED
@@ -183,19 +183,24 @@ function cerber_show_diag(){
183
  <div class="diag-section">
184
  <h3>Database Info</h3>
185
  <?php echo cerber_db_diag(); ?>
186
- <?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 tables</a></p>'; ?>
187
  </div>
188
  <div class="diag-section">
189
- <h3>Server Info</h3>
190
- <textarea name="dia" class="code"><?php
191
- echo 'PHP version: ' . phpversion() . "\n";
192
- $server = $_SERVER;
193
- unset($server['HTTP_COOKIE']);
194
- foreach ( $server as $key => $value ) {
195
- echo '[' . $key . '] => ' . @strip_tags( $value ) . "\n";
196
- }
197
- ?>
198
- </textarea>
 
 
 
 
 
199
  </div>
200
  <div class="diag-section">
201
  <h3>Cerber Security Cloud Status</h3>
@@ -203,8 +208,8 @@ function cerber_show_diag(){
203
  echo lab_status();
204
  ?>
205
  <p style="text-align: right;">
206
- <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>
207
- <a class="button button-secondary" href="<?php echo wp_nonce_url( add_query_arg( array( 'force_check_nodes' => 1 ) ), 'control', 'cerber_nonce' ); ?>">Recheck node status</a>
208
  </p>
209
  </div>
210
  <?php
@@ -235,6 +240,15 @@ function cerber_show_diag(){
235
  echo '</ol>';
236
  echo '</div>';
237
  }
 
 
 
 
 
 
 
 
 
238
  ?>
239
  </form>
240
  <script type="text/javascript">
@@ -254,13 +268,13 @@ function cerber_show_lic() {
254
  $valid = '';
255
  if ( ! empty( $key[2] ) ) {
256
  $lic = $key[2];
257
- if ( $expires = lab_validate_lic( $lic ) ) {
258
  $valid = '
259
- <p><span style="color: green;">This key is valid until '.$expires.'</span></p>
260
  <p>To move the key to another website or web server, please follow these steps: <a href="https://my.wpcerber.com/how-to-move-license-key/" target="_blank">https://my.wpcerber.com/how-to-move-license-key/</a></p>';
261
  }
262
  else {
263
- $valid = '<p><span style="color: red;">This license key is invalid or expired</span></p>
264
  <p>If you believe this key is valid, please follow these steps: <a href="https://my.wpcerber.com/how-to-fix-invalid-or-expired-key/" target="_blank">https://my.wpcerber.com/how-to-fix-invalid-or-expired-key/</a></p>';
265
  }
266
  }
@@ -308,22 +322,26 @@ function cerber_show_wp_diag(){
308
  $tz = ( $tz !== 'UTC' ) ? '<span style="color: red;">' . $tz . '!</span>' : $tz;
309
 
310
  $sys = array(
311
- array( 'Server ', $_SERVER['SERVER_SOFTWARE'] ),
312
- array( 'PHP version ', phpversion() ),
313
- array( 'Server API ', php_sapi_name() ),
314
- array( 'WordPress version', cerber_get_wp_version() ),
315
- array( 'WordPress locale', get_locale() ),
316
- array( 'Options DB table', $wpdb->prefix . 'options' ),
317
  array( 'Server platform', PHP_OS ),
318
  array( 'Memory limit', @ini_get( 'memory_limit' ) ),
319
  array( 'Default PHP timezone', $tz ),
 
 
 
320
  );
321
 
 
 
 
 
322
  if ( nexus_is_valid_request() ) {
323
  $sys[] = array( 'The IP address of the master is detected as', cerber_get_remote_ip() );
324
  }
325
  else {
326
- $sys[] = array( 'Your IP address is detected as', cerber_get_remote_ip() );
327
  }
328
 
329
  $ret[] = cerber_make_plain_table( $sys );
@@ -336,7 +354,15 @@ function cerber_show_wp_diag(){
336
  $folder .= 'quarantine' . DIRECTORY_SEPARATOR;
337
  }
338
 
339
-
 
 
 
 
 
 
 
 
340
 
341
  $folders = array(
342
  array( 'WordPress root folder (ABSPATH) ', ABSPATH ),
@@ -345,23 +371,15 @@ function cerber_show_wp_diag(){
345
  array( 'WordPress plugins folder', cerber_get_plugins_dir() ),
346
  array( 'WordPress themes folder', cerber_get_themes_dir() ),
347
  array( 'WordPress must use plugin folder (WPMU_PLUGIN_DIR) ', WPMU_PLUGIN_DIR ),
 
348
  array( 'PHP folder for uploading files', ini_get( 'upload_tmp_dir' ) ),
349
  array( 'Server folder for temporary files', sys_get_temp_dir() ),
350
  array( 'Server folder for user session data', session_save_path() ),
351
- array( 'Security scanner quarantine folder', $folder ),
352
  array( 'Cerber\'s diagnostic log', cerber_get_diag_log() )
353
  );
354
 
355
- if ( file_exists( ABSPATH . 'wp-config.php' )) {
356
- $config = ABSPATH . 'wp-config.php';
357
- }
358
- elseif ( file_exists( dirname( ABSPATH ) . '/wp-config.php' ) ) {
359
- $config = dirname( ABSPATH ) . '/wp-config.php';
360
- }
361
- else {
362
- $config = 'None?';
363
- }
364
- $folders[] = array( 'WordPress config file', $config );
365
 
366
  if ( file_exists( ABSPATH . '.htaccess' ) ) {
367
  $folders[] = array( 'Main .htaccess file', ABSPATH . '.htaccess' );
@@ -413,17 +431,27 @@ function cerber_show_wp_diag(){
413
  $pls[] = array($data['Name'], $data['Version']);
414
  }
415
 
416
- $ret[] = 'Active plugins<br />'.cerber_make_plain_table( $pls );
417
 
418
- echo implode("<br />",$ret);
419
  }
420
 
421
- function cerber_make_plain_table( $data ) {
422
- $ret = '<table class="crb-plain-table">';
 
 
 
 
 
 
 
 
 
 
423
  foreach ( $data as $row ) {
424
  $ret .= '<tr><td>' . implode( '</td><td>', $row ) . '</td></tr>';
425
  }
426
- $ret .= '</table>';
427
 
428
  return $ret;
429
  }
@@ -442,24 +470,28 @@ function cerber_db_diag(){
442
 
443
  $ret = array();
444
 
445
- $ret[] = 'Database name: ' . DB_NAME;
 
 
446
 
447
  $var = crb_get_mysql_var( 'innodb_buffer_pool_size' );
448
  $pool_size = round( $var / 1048576 );
449
- $inno = 'InnoDB buffer pool size: <b>' . $pool_size . ' MB</b>';
450
  if ( $pool_size < 16 ) {
451
  $inno .= ' Your pool size is extremely small!';
452
  }
453
  elseif ( $pool_size < 64 ) {
454
  $inno .= ' It seems your pool size is too small.';
455
  }
456
- $ret[] = $inno;
457
 
458
  $var = crb_get_mysql_var( 'max_allowed_packet' );
459
- $ret[] = 'Max allowed packet size: <b>' . round( $var / 1048576 ) . ' MB</b>';
 
 
 
460
 
461
- $ret[] = 'Charset: '.$wpdb->charset;
462
- $ret[] = 'Collate: '.$wpdb->collate;
463
 
464
  $ret[] = cerber_table_info( CERBER_LOG_TABLE );
465
  $ret[] = cerber_table_info( CERBER_ACL_TABLE );
@@ -493,24 +525,29 @@ function cerber_table_info( $table ) {
493
  }
494
  $cols = $wpdb->get_results( "SHOW FULL COLUMNS FROM " . $table );
495
 
496
- $columns = '<table><tr><th style="width: 30%">Field</th><th style="width: 30%">Type</th><th style="width: 30%">Collation</th></tr>';
 
497
  foreach ( $cols as $column ) {
498
  $column = obj_to_arr_deep( $column );
499
  $field = array_shift( $column );
500
  $type = array_shift( $column );
501
  $collation = array_shift( $column );
502
- $columns .= '<tr><td><b>' . $field . '</b></td><td>' . $type . '</td><td>' . $collation . '</td></tr>';
 
 
503
  }
504
- $columns .= '</table>';
 
 
505
 
506
  $rows = absint( cerber_db_get_var( 'SELECT COUNT(*) FROM ' . $table ) );
507
 
508
  $sts = $wpdb->get_row( 'SHOW TABLE STATUS WHERE NAME = "' . $table .'"');
509
- $status = '<table>';
510
  foreach ( $sts as $key => $value ) {
511
- $status .= '<tr><td><b>' . $key . '</b></td><td>' . $value . '</td></tr>';
512
  }
513
- $status .= '</table>';
514
 
515
  $truncate = '';
516
  if ($rows) {
183
  <div class="diag-section">
184
  <h3>Database Info</h3>
185
  <?php echo cerber_db_diag(); ?>
186
+ <?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>'; ?>
187
  </div>
188
  <div class="diag-section">
189
+ <h3>Server Environment Variables</h3>
190
+ <?php
191
+ $server = $_SERVER;
192
+ if ( ! empty( $server['HTTP_COOKIE'] ) ) {
193
+ unset( $server['HTTP_COOKIE'] );
194
+ }
195
+ if ( ! empty( $server['HTTP_X_COOKIES'] ) ) {
196
+ unset( $server['HTTP_X_COOKIES'] );
197
+ }
198
+ $se = array();
199
+ foreach ( $server as $key => $value ) {
200
+ $se[] = array( $key, @strip_tags( $value ) );
201
+ }
202
+ echo cerber_make_plain_table( $se );
203
+ ?>
204
  </div>
205
  <div class="diag-section">
206
  <h3>Cerber Security Cloud Status</h3>
208
  echo lab_status();
209
  ?>
210
  <p style="text-align: right;">
211
+ <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>
212
+ <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>
213
  </p>
214
  </div>
215
  <?php
240
  echo '</ol>';
241
  echo '</div>';
242
  }
243
+
244
+ if ( $status = CRB_DS::get_status() ) {
245
+ echo '
246
+ <div class="diag-section">
247
+ <h3>Data Shield Status</h3>';
248
+ echo $status;
249
+ echo '</div>';
250
+ }
251
+
252
  ?>
253
  </form>
254
  <script type="text/javascript">
268
  $valid = '';
269
  if ( ! empty( $key[2] ) ) {
270
  $lic = $key[2];
271
+ if ( lab_validate_lic( $lic, $expires ) ) {
272
  $valid = '
273
+ <p><span style="color: green;">This key is valid until ' . $expires . '</span></p>
274
  <p>To move the key to another website or web server, please follow these steps: <a href="https://my.wpcerber.com/how-to-move-license-key/" target="_blank">https://my.wpcerber.com/how-to-move-license-key/</a></p>';
275
  }
276
  else {
277
+ $valid = '<p><span style="color: red;">This license key is invalid or expired ' . $expires . '</span></p>
278
  <p>If you believe this key is valid, please follow these steps: <a href="https://my.wpcerber.com/how-to-fix-invalid-or-expired-key/" target="_blank">https://my.wpcerber.com/how-to-fix-invalid-or-expired-key/</a></p>';
279
  }
280
  }
322
  $tz = ( $tz !== 'UTC' ) ? '<span style="color: red;">' . $tz . '!</span>' : $tz;
323
 
324
  $sys = array(
325
+ array( 'Web Server', $_SERVER['SERVER_SOFTWARE'] ),
326
+ array( 'PHP version', phpversion() ),
327
+ array( 'Server API', php_sapi_name() ),
 
 
 
328
  array( 'Server platform', PHP_OS ),
329
  array( 'Memory limit', @ini_get( 'memory_limit' ) ),
330
  array( 'Default PHP timezone', $tz ),
331
+ array( 'WordPress version', cerber_get_wp_version() ),
332
+ array( 'WordPress locale', get_locale() ),
333
+ array( 'WordPress options DB table', $wpdb->prefix . 'options' ),
334
  );
335
 
336
+ if ( 2 < substr_count( cerber_get_site_url(), '/' ) ) {
337
+ $sys[] = array( 'Subfolder WP installation', 'YES' );
338
+ }
339
+
340
  if ( nexus_is_valid_request() ) {
341
  $sys[] = array( 'The IP address of the master is detected as', cerber_get_remote_ip() );
342
  }
343
  else {
344
+ $sys[] = array( 'Your IP address is detected as', cerber_get_remote_ip() . ' (<a href="https://wpcerber.com/what-is-my-ip/" target="_blank">check it on the what is my IP address page</a>)' );
345
  }
346
 
347
  $ret[] = cerber_make_plain_table( $sys );
354
  $folder .= 'quarantine' . DIRECTORY_SEPARATOR;
355
  }
356
 
357
+ if ( file_exists( ABSPATH . 'wp-config.php' )) {
358
+ $config = ABSPATH . 'wp-config.php';
359
+ }
360
+ elseif ( file_exists( dirname( ABSPATH ) . '/wp-config.php' ) ) {
361
+ $config = dirname( ABSPATH ) . '/wp-config.php';
362
+ }
363
+ else {
364
+ $config = 'None?';
365
+ }
366
 
367
  $folders = array(
368
  array( 'WordPress root folder (ABSPATH) ', ABSPATH ),
371
  array( 'WordPress plugins folder', cerber_get_plugins_dir() ),
372
  array( 'WordPress themes folder', cerber_get_themes_dir() ),
373
  array( 'WordPress must use plugin folder (WPMU_PLUGIN_DIR) ', WPMU_PLUGIN_DIR ),
374
+ array( 'WordPress config file', $config ),
375
  array( 'PHP folder for uploading files', ini_get( 'upload_tmp_dir' ) ),
376
  array( 'Server folder for temporary files', sys_get_temp_dir() ),
377
  array( 'Server folder for user session data', session_save_path() ),
378
+ array( 'Cerber\'s quarantine folder', $folder ),
379
  array( 'Cerber\'s diagnostic log', cerber_get_diag_log() )
380
  );
381
 
382
+ //$folders[] = array( 'WordPress config file', $config );
 
 
 
 
 
 
 
 
 
383
 
384
  if ( file_exists( ABSPATH . '.htaccess' ) ) {
385
  $folders[] = array( 'Main .htaccess file', ABSPATH . '.htaccess' );
431
  $pls[] = array($data['Name'], $data['Version']);
432
  }
433
 
434
+ $ret[] = '<p>Active plugins</p>' . cerber_make_plain_table( $pls );
435
 
436
+ echo implode("\n",$ret);
437
  }
438
 
439
+ function cerber_make_plain_table( $data, $header = null, $first_header = false, $eq = false ) {
440
+ $class = 'crb-monospace ';
441
+ if ( $first_header ) {
442
+ $class .= ' crb-plain-fh ';
443
+ }
444
+ if ( ! $eq ) {
445
+ $class .= ' crb-plain-fcw ';
446
+ }
447
+ $ret = '<div class="crb-plain-table"><table class="' . $class . '">';
448
+ if ( $header ) {
449
+ $ret .= '<tr class="crb-plain-header"><td>' . implode( '</td><td>', $header ) . '</td></tr>';
450
+ }
451
  foreach ( $data as $row ) {
452
  $ret .= '<tr><td>' . implode( '</td><td>', $row ) . '</td></tr>';
453
  }
454
+ $ret .= '</table></div>';
455
 
456
  return $ret;
457
  }
470
 
471
  $ret = array();
472
 
473
+ $db_info = array();
474
+
475
+ $db_info[] = array( 'Database name', DB_NAME );
476
 
477
  $var = crb_get_mysql_var( 'innodb_buffer_pool_size' );
478
  $pool_size = round( $var / 1048576 );
479
+ $inno = $pool_size . ' MB';
480
  if ( $pool_size < 16 ) {
481
  $inno .= ' Your pool size is extremely small!';
482
  }
483
  elseif ( $pool_size < 64 ) {
484
  $inno .= ' It seems your pool size is too small.';
485
  }
486
+ $db_info[] = array( 'InnoDB buffer pool size', $inno );
487
 
488
  $var = crb_get_mysql_var( 'max_allowed_packet' );
489
+ $db_info[] = array( 'Max allowed packet size', round( $var / 1048576 ) . ' MB' );
490
+
491
+ $db_info[] = array( 'Charset', $wpdb->charset );
492
+ $db_info[] = array( 'Collate', $wpdb->collate );
493
 
494
+ $ret[] = cerber_make_plain_table($db_info);
 
495
 
496
  $ret[] = cerber_table_info( CERBER_LOG_TABLE );
497
  $ret[] = cerber_table_info( CERBER_ACL_TABLE );
525
  }
526
  $cols = $wpdb->get_results( "SHOW FULL COLUMNS FROM " . $table );
527
 
528
+ $tb = array();
529
+ //$columns = '<table><tr><th style="width: 30%">Field</th><th style="width: 30%">Type</th><th style="width: 30%">Collation</th></tr>';
530
  foreach ( $cols as $column ) {
531
  $column = obj_to_arr_deep( $column );
532
  $field = array_shift( $column );
533
  $type = array_shift( $column );
534
  $collation = array_shift( $column );
535
+ $tb[] = array( $field, $type, $collation );
536
+
537
+ //$columns .= '<tr><td><b>' . $field . '</b></td><td>' . $type . '</td><td>' . $collation . '</td></tr>';
538
  }
539
+ //$columns .= '</table>';
540
+
541
+ $columns = cerber_make_plain_table( $tb, array( 'Field', 'Type', 'Collation' ) );
542
 
543
  $rows = absint( cerber_db_get_var( 'SELECT COUNT(*) FROM ' . $table ) );
544
 
545
  $sts = $wpdb->get_row( 'SHOW TABLE STATUS WHERE NAME = "' . $table .'"');
546
+ $tb = array();
547
  foreach ( $sts as $key => $value ) {
548
+ $tb[] = array( $key, $value );
549
  }
550
+ $status = cerber_make_plain_table( $tb, null, true );
551
 
552
  $truncate = '';
553
  if ($rows) {
cerber-users.php CHANGED
@@ -267,7 +267,7 @@ function crb_admin_show_role_policies() {
267
  $tabs_config[ $role_id ] = array(
268
  'title' => $name,
269
  //'desc' => $info,
270
- 'content' => crb_admin_role_form( $role_id, $policies[ $role_id ] ),
271
  );
272
  }
273
 
267
  $tabs_config[ $role_id ] = array(
268
  'title' => $name,
269
  //'desc' => $info,
270
+ 'content' => crb_admin_role_form( $role_id, crb_array_get( $policies, $role_id ) ),
271
  );
272
  }
273
 
changelog.txt CHANGED
@@ -1,3 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
1
  = 8.4 =
2
  * New: More flexible role-based GEO access policies.
3
  * New: A logged in users' sessions manager.
1
+ = 8.5 =
2
+ * New: Data Shield module for advanced protection of user data and vital settings in the website database. Available in the PRO version.
3
+ * Improvement: Compatibility with WooCommerce significantly improved.
4
+ * Update: Strict filtering for the Custom login URL setting.
5
+ * Update: Chinese (Taiwan) translation has been added. Thanks to Sid Lo.
6
+ * Bug fixed: Custom login URL doesn't work after updating WordPress to 5.2.3.
7
+ * Bug fixed: User Policies tabs are not switchable if a user role was declared with a hyphen instead of the underscore.
8
+ * Bug fixed: A PHP warning while adding a network to the Black IP Access List from the Activity tab.
9
+ * Bug fixed: An anti-spam false positive: some WordPress DB updates can't be completed.
10
+ * [Read more](https://wpcerber.com/wp-cerber-security-8-5/)
11
+
12
  = 8.4 =
13
  * New: More flexible role-based GEO access policies.
14
  * New: A logged in users' sessions manager.
common.php CHANGED
@@ -74,6 +74,9 @@ function cerber_admin_link( $tab = '', $args = array(), $add_nonce = false ) {
74
  elseif ( in_array( $tab, array( 'traffic', 'ti_settings' ) ) ) {
75
  $page = 'cerber-traffic';
76
  }
 
 
 
77
  elseif ( in_array( $tab, array( 'geo' ) ) ) {
78
  $page = 'cerber-rules';
79
  }
@@ -389,6 +392,12 @@ function cerber_check_environment(){
389
  cerber_admin_notice('Warning: Traffic Inspector is disabled');
390
  }
391
 
 
 
 
 
 
 
392
  $ex_list = get_loaded_extensions();
393
 
394
  if ( ! in_array( 'curl', $ex_list ) ) {
@@ -697,6 +706,28 @@ function crb_array_get( &$arr, $key, $default = false, $pattern = '' ) {
697
  return array_filter( $ret );
698
  }
699
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
700
  /**
701
  * Return true if a REST API URL has been requested
702
  *
@@ -1028,6 +1059,14 @@ function cerber_is_rest_permitted() {
1028
  return false;
1029
  }
1030
 
 
 
 
 
 
 
 
 
1031
  function cerber_user_has_role( $roles = array(), $user_id = null ) {
1032
  if ( ! $user_id ) {
1033
  $user = wp_get_current_user();
@@ -1035,9 +1074,15 @@ function cerber_user_has_role( $roles = array(), $user_id = null ) {
1035
  else {
1036
  $user = get_userdata( $user_id );
1037
  }
 
1038
  if ( ! $user || empty( $user->roles ) ) {
1039
  return false;
1040
  }
 
 
 
 
 
1041
  if ( array_intersect( $user->roles, $roles ) ) {
1042
  return true;
1043
  }
@@ -1045,6 +1090,28 @@ function cerber_user_has_role( $roles = array(), $user_id = null ) {
1045
  return false;
1046
  }
1047
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1048
  function crb_get_rest_path() {
1049
  static $ret;
1050
  if ( isset( $ret ) ) {
@@ -1075,7 +1142,8 @@ function crb_get_rest_url() {
1075
  }
1076
 
1077
  function crb_is_user_blocked( $uid ) {
1078
- if ( ( $m = get_user_meta( $uid, CERBER_BUKEY, 1 ) )
 
1079
  && ! empty( $m['blocked'] )
1080
  && $m[ 'u' . $uid ] == $uid ) {
1081
  return $m;
@@ -1145,33 +1213,32 @@ function cerber_get_uri_script() {
1145
  * @return bool|string An extension if it's found, false otherwise
1146
  */
1147
  function cerber_detect_exec_extension( $line, $extra = array() ) {
1148
- $executable = array( 'php', 'phtm', 'phtml', 'phps', 'shtm', 'shtml', 'jsp', 'asp', 'aspx', 'exe', 'com', 'cgi', 'pl', 'py', 'pyc', 'pyo' );
1149
 
1150
- if ( empty( $line ) ) {
1151
  return false;
1152
  }
1153
 
1154
  if ( $extra ) {
1155
- $executable = array_merge( $executable, $extra );
 
 
 
1156
  }
1157
 
1158
  $line = trim( $line );
1159
  $line = trim( $line, '/' );
1160
 
1161
- if ( ! strrpos( $line, '.' ) ) {
1162
- return false;
1163
- }
1164
-
1165
- $parts = explode('.', $line);
1166
- array_shift($parts);
1167
 
1168
  // First and last are critical for most server environments
1169
- $first_ext = array_shift($parts);
1170
- $last_ext = array_pop($parts);
1171
 
1172
  if ( $first_ext ) {
1173
  $first_ext = strtolower( $first_ext );
1174
- if ( in_array( $first_ext, $executable ) ) {
1175
  return $first_ext;
1176
  }
1177
  if ( preg_match( '/php\d+/', $first_ext ) ) {
@@ -1181,7 +1248,7 @@ function cerber_detect_exec_extension( $line, $extra = array() ) {
1181
 
1182
  if ( $last_ext ) {
1183
  $last_ext = strtolower( $last_ext );
1184
- if ( in_array( $last_ext, $executable ) ) {
1185
  return $last_ext;
1186
  }
1187
  if ( preg_match( '/php\d+/', $last_ext ) ) {
@@ -1272,6 +1339,10 @@ function cerber_get_labels( $type = 'activity', $all = true ) {
1272
 
1273
  $labels[70] = __( 'Request to REST API denied', 'wp-cerber' );
1274
  $labels[71] = __( 'XML-RPC request denied', 'wp-cerber' );
 
 
 
 
1275
 
1276
  $labels[100] = __( 'Malicious request denied', 'wp-cerber' );
1277
 
@@ -1309,6 +1380,11 @@ function cerber_get_labels( $type = 'activity', $all = true ) {
1309
 
1310
  $labels[30] = 'Username is prohibited';
1311
  $labels[31] = __( 'Email address is not permitted', 'wp-cerber' );
 
 
 
 
 
1312
  }
1313
 
1314
  return $labels;
@@ -1319,7 +1395,7 @@ function crb_get_activity_set( $slice = 'malicious' ) {
1319
  case 'malicious':
1320
  return array( 10, 11, 16, 17, 40, 50, 51, 52, 53, 54, 55, 56, 100 );
1321
  case 'suspicious':
1322
- return array( 10, 11, 16, 17, 20, 40, 50, 51, 52, 53, 54, 55, 56, 100, 70, 71, 300 );
1323
  case 'black':
1324
  return array( 16, 17, 40, 50, 51, 52, 55, 56, 100, 300 );
1325
  case 'dashboard':
@@ -1851,20 +1927,30 @@ function cerber_db_use_mysqli() {
1851
  * Natively escape a string for use in an SQL statement
1852
  * The reason: https://make.wordpress.org/core/2017/10/31/changed-behaviour-of-esc_sql-in-wordpress-4-8-3/
1853
  *
1854
- * @param $string
1855
  *
1856
  * @return string
1857
  * @since 6.0
1858
  */
1859
- function cerber_real_escape( $string ) {
 
 
 
 
 
 
 
 
 
 
1860
 
1861
  $db = cerber_get_db();
1862
 
1863
  if ( cerber_db_use_mysqli() ) {
1864
- $escaped = mysqli_real_escape_string( $db->dbh, $string );
1865
  }
1866
  else {
1867
- $escaped = mysql_real_escape_string( $string, $db->dbh );
1868
  }
1869
 
1870
  return $escaped;
@@ -2140,6 +2226,10 @@ function crb_get_mysql_var( $var ) {
2140
  * @return bool|array
2141
  */
2142
  function cerber_get_set( $key, $id = null, $unserialize = true ) {
 
 
 
 
2143
  $key = preg_replace( '/[^a-z_\-\d]/i', '', $key );
2144
 
2145
  $and = '';
@@ -2184,6 +2274,10 @@ function cerber_get_set( $key, $id = null, $unserialize = true ) {
2184
  */
2185
  function cerber_update_set( $key, $value, $id = null, $serialize = true, $expires = null ) {
2186
 
 
 
 
 
2187
  $key = preg_replace( '/[^a-z_\-\d]/i', '', $key );
2188
 
2189
  $id = ( $id !== null ) ? absint( $id ) : 0;
@@ -2728,6 +2822,37 @@ function cerber_is_base64_encoded( $val ) {
2728
  return false;
2729
  }
2730
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2731
  function cerber_get_html_label( $iid ) {
2732
  $css['scan-ilabel'] = '
2733
  color: #fff;
@@ -2749,20 +2874,25 @@ function cerber_get_html_label( $iid ) {
2749
 
2750
  }
2751
 
2752
- // @since v. 7.7 for PHP-FPM
2753
- if ( ! function_exists( 'getallheaders' ) ) {
2754
- function getallheaders() {
2755
- $headers = array();
2756
- foreach ( $_SERVER as $name => $value ) {
2757
- if ( substr( $name, 0, 5 ) == 'HTTP_' ) {
2758
- $headers[ str_replace( ' ', '-', ucwords( strtolower( str_replace( '_', ' ', substr( $name, 5 ) ) ) ) ) ] = $value;
2759
- }
2760
- }
2761
 
2762
- return $headers;
 
 
 
 
2763
  }
 
 
2764
  }
2765
 
 
2766
  /**
2767
  * Write message to the diagnostic log
2768
  *
74
  elseif ( in_array( $tab, array( 'traffic', 'ti_settings' ) ) ) {
75
  $page = 'cerber-traffic';
76
  }
77
+ elseif ( in_array( $tab, array( 'user_shield', 'opt_shield' ) ) ) {
78
+ $page = 'cerber-shield';
79
+ }
80
  elseif ( in_array( $tab, array( 'geo' ) ) ) {
81
  $page = 'cerber-rules';
82
  }
392
  cerber_admin_notice('Warning: Traffic Inspector is disabled');
393
  }
394
 
395
+ if ( cerber_is_admin_page( false, array( 'page' => 'cerber-shield' ) ) ) {
396
+ if ( CRB_DS::check_errors( $msg ) ) {
397
+ cerber_admin_notice( $msg );
398
+ }
399
+ }
400
+
401
  $ex_list = get_loaded_extensions();
402
 
403
  if ( ! in_array( 'curl', $ex_list ) ) {
706
  return array_filter( $ret );
707
  }
708
 
709
+ /**
710
+ * Compare two arrays by using keys: check if two arrays have different set of keys
711
+ *
712
+ * @param $arr1 array
713
+ * @param $arr2 array
714
+ *
715
+ * @return bool true if arrays have different set of keys
716
+ */
717
+ function crb_array_diff_keys( &$arr1, &$arr2 ) {
718
+ if ( count( $arr1 ) != count( $arr2 ) ) {
719
+ return true;
720
+ }
721
+ if ( array_diff_key( $arr1, $arr2 ) ) {
722
+ return true;
723
+ }
724
+ if ( array_diff_key( $arr2, $arr1 ) ) {
725
+ return true;
726
+ }
727
+
728
+ return false;
729
+ }
730
+
731
  /**
732
  * Return true if a REST API URL has been requested
733
  *
1059
  return false;
1060
  }
1061
 
1062
+ /**
1063
+ * Check if a user has at least one role from the list
1064
+ *
1065
+ * @param array $roles
1066
+ * @param null $user_id
1067
+ *
1068
+ * @return bool
1069
+ */
1070
  function cerber_user_has_role( $roles = array(), $user_id = null ) {
1071
  if ( ! $user_id ) {
1072
  $user = wp_get_current_user();
1074
  else {
1075
  $user = get_userdata( $user_id );
1076
  }
1077
+
1078
  if ( ! $user || empty( $user->roles ) ) {
1079
  return false;
1080
  }
1081
+
1082
+ if ( ! is_array( $roles ) ) {
1083
+ $roles = array( $roles );
1084
+ }
1085
+
1086
  if ( array_intersect( $user->roles, $roles ) ) {
1087
  return true;
1088
  }
1090
  return false;
1091
  }
1092
 
1093
+ /**
1094
+ * Check if all user roles are in the list
1095
+ *
1096
+ * @param array|string $roles
1097
+ * @param int $user_id
1098
+ *
1099
+ * @return bool false if the user has role(s) other than listed in $roles
1100
+ */
1101
+ function crb_user_has_role_strict( $roles, $user_id ) {
1102
+ if ( ! $user_id || ! $user = get_userdata( $user_id ) ) {
1103
+ return false;
1104
+ }
1105
+
1106
+ if ( ! is_array( $roles ) ) {
1107
+ $roles = array( $roles );
1108
+ }
1109
+
1110
+ $user_roles = ( is_array( $user->roles ) ) ? $user->roles : array();
1111
+
1112
+ return ( ! array_diff( $user_roles, $roles ) );
1113
+ }
1114
+
1115
  function crb_get_rest_path() {
1116
  static $ret;
1117
  if ( isset( $ret ) ) {
1142
  }
1143
 
1144
  function crb_is_user_blocked( $uid ) {
1145
+ if ( $uid
1146
+ && ( $m = get_user_meta( $uid, CERBER_BUKEY, 1 ) )
1147
  && ! empty( $m['blocked'] )
1148
  && $m[ 'u' . $uid ] == $uid ) {
1149
  return $m;
1213
  * @return bool|string An extension if it's found, false otherwise
1214
  */
1215
  function cerber_detect_exec_extension( $line, $extra = array() ) {
1216
+ static $executable = array( 'php', 'phtm', 'phtml', 'phps', 'shtm', 'shtml', 'jsp', 'asp', 'aspx', 'exe', 'com', 'cgi', 'pl', 'py', 'pyc', 'pyo' );
1217
 
1218
+ if ( empty( $line ) || ! strrpos( $line, '.' ) ) {
1219
  return false;
1220
  }
1221
 
1222
  if ( $extra ) {
1223
+ $ex_list = array_merge( $executable, $extra );
1224
+ }
1225
+ else {
1226
+ $ex_list = $executable;
1227
  }
1228
 
1229
  $line = trim( $line );
1230
  $line = trim( $line, '/' );
1231
 
1232
+ $parts = explode( '.', $line );
1233
+ array_shift( $parts );
 
 
 
 
1234
 
1235
  // First and last are critical for most server environments
1236
+ $first_ext = array_shift( $parts );
1237
+ $last_ext = array_pop( $parts );
1238
 
1239
  if ( $first_ext ) {
1240
  $first_ext = strtolower( $first_ext );
1241
+ if ( in_array( $first_ext, $ex_list ) ) {
1242
  return $first_ext;
1243
  }
1244
  if ( preg_match( '/php\d+/', $first_ext ) ) {
1248
 
1249
  if ( $last_ext ) {
1250
  $last_ext = strtolower( $last_ext );
1251
+ if ( in_array( $last_ext, $ex_list ) ) {
1252
  return $last_ext;
1253
  }
1254
  if ( preg_match( '/php\d+/', $last_ext ) ) {
1339
 
1340
  $labels[70] = __( 'Request to REST API denied', 'wp-cerber' );
1341
  $labels[71] = __( 'XML-RPC request denied', 'wp-cerber' );
1342
+ $labels[72] = __( 'User creation denied', 'wp-cerber' );
1343
+ $labels[73] = __( 'User update denied', 'wp-cerber' );
1344
+ $labels[74] = __( 'Role update denied', 'wp-cerber' );
1345
+ $labels[75] = __( 'Setting update denied', 'wp-cerber' );
1346
 
1347
  $labels[100] = __( 'Malicious request denied', 'wp-cerber' );
1348
 
1380
 
1381
  $labels[30] = 'Username is prohibited';
1382
  $labels[31] = __( 'Email address is not permitted', 'wp-cerber' );
1383
+ $labels[32] = 'User role is prohibited';
1384
+ $labels[33] = __( 'Permission denied', 'wp-cerber' );
1385
+ $labels[34] = 'Unauthorized access denied';
1386
+ $labels[35] = __( 'Invalid user', 'wp-cerber' );
1387
+ $labels[36] = __( 'Incorrect password', 'wp-cerber' );
1388
  }
1389
 
1390
  return $labels;
1395
  case 'malicious':
1396
  return array( 10, 11, 16, 17, 40, 50, 51, 52, 53, 54, 55, 56, 100 );
1397
  case 'suspicious':
1398
+ return array( 10, 11, 16, 17, 20, 40, 50, 51, 52, 53, 54, 55, 56, 100, 70, 71, 72, 300 );
1399
  case 'black':
1400
  return array( 16, 17, 40, 50, 51, 52, 55, 56, 100, 300 );
1401
  case 'dashboard':
1927
  * Natively escape a string for use in an SQL statement
1928
  * The reason: https://make.wordpress.org/core/2017/10/31/changed-behaviour-of-esc_sql-in-wordpress-4-8-3/
1929
  *
1930
+ * @param string $str
1931
  *
1932
  * @return string
1933
  * @since 6.0
1934
  */
1935
+ function cerber_real_escape( $str ) {
1936
+
1937
+ $str = (string) $str;
1938
+
1939
+ if ( empty( $str ) ) { // @since 8.4.1
1940
+ if ( $str === '0' ) {
1941
+ return '0';
1942
+ }
1943
+
1944
+ return '';
1945
+ }
1946
 
1947
  $db = cerber_get_db();
1948
 
1949
  if ( cerber_db_use_mysqli() ) {
1950
+ $escaped = mysqli_real_escape_string( $db->dbh, $str );
1951
  }
1952
  else {
1953
+ $escaped = mysql_real_escape_string( $str, $db->dbh );
1954
  }
1955
 
1956
  return $escaped;
2226
  * @return bool|array
2227
  */
2228
  function cerber_get_set( $key, $id = null, $unserialize = true ) {
2229
+ if ( ! $key ) {
2230
+ return false;
2231
+ }
2232
+
2233
  $key = preg_replace( '/[^a-z_\-\d]/i', '', $key );
2234
 
2235
  $and = '';
2274
  */
2275
  function cerber_update_set( $key, $value, $id = null, $serialize = true, $expires = null ) {
2276
 
2277
+ if ( ! $key ) {
2278
+ return false;
2279
+ }
2280
+
2281
  $key = preg_replace( '/[^a-z_\-\d]/i', '', $key );
2282
 
2283
  $id = ( $id !== null ) ? absint( $id ) : 0;
2822
  return false;
2823
  }
2824
 
2825
+ function crb_is_alphanumeric( $str ) {
2826
+ return ! preg_match( '/[^\w\-]/', $str );
2827
+ }
2828
+
2829
+ /**
2830
+ * @param array $arr
2831
+ * @param array $fields
2832
+ *
2833
+ * @return bool
2834
+ */
2835
+ function crb_arrays_similar( &$arr, $fields ) {
2836
+ if ( crb_array_diff_keys( $arr, $fields ) ) {
2837
+ return false;
2838
+ }
2839
+
2840
+ foreach ( $fields as $field => $pattern ) {
2841
+ if ( is_callable( $pattern ) ) {
2842
+ if ( ! call_user_func( $pattern, $arr[ $field ] ) ) {
2843
+ return false;
2844
+ }
2845
+ }
2846
+ else {
2847
+ if ( ! preg_match( $pattern, $arr[ $field ] ) ) {
2848
+ return false;
2849
+ }
2850
+ }
2851
+ }
2852
+
2853
+ return true;
2854
+ }
2855
+
2856
  function cerber_get_html_label( $iid ) {
2857
  $css['scan-ilabel'] = '
2858
  color: #fff;
2874
 
2875
  }
2876
 
2877
+ function crb_getallheaders() {
2878
+
2879
+ if ( function_exists( 'getallheaders' ) ) {
2880
+ return getallheaders();
2881
+ }
2882
+
2883
+ // @since v. 7.7 for PHP-FPM
 
 
2884
 
2885
+ $headers = array();
2886
+ foreach ( $_SERVER as $name => $value ) {
2887
+ if ( substr( $name, 0, 5 ) == 'HTTP_' ) {
2888
+ $headers[ str_replace( ' ', '-', ucwords( strtolower( str_replace( '_', ' ', substr( $name, 5 ) ) ) ) ) ] = $value;
2889
+ }
2890
  }
2891
+
2892
+ return $headers;
2893
  }
2894
 
2895
+
2896
  /**
2897
  * Write message to the diagnostic log
2898
  *
dashboard.php CHANGED
@@ -57,6 +57,7 @@ function cerber_admin_menu() {
57
  add_action( 'load-' . $hook, 'crb_admin_screen_options' );
58
 
59
  if ( lab_lab() ) {
 
60
  add_submenu_page( 'cerber-security', __( 'Cerber Security Rules', 'wp-cerber' ), __( 'Security Rules', 'wp-cerber' ), 'manage_options', 'cerber-rules', 'cerber_render_admin_page' );
61
  }
62
 
@@ -2768,7 +2769,7 @@ function cerber_admin_head() {
2768
  #crb-activity td.acinfo div {
2769
  padding: 0.1em 0 0.1em 0.7em;
2770
  }
2771
- .crb12, .crb16, .crb17, .crb18, .crb19, .crb41, .crb42, .crb50, .crb51, .crb52, .crb53, .crb54, .crb55, .crb56, .crb70, .crb71, .crb100 {
2772
  /*border-left: 4px solid #FF5733;*/
2773
  /*font-weight: bold;*/
2774
  border-left: 0.4em solid #FF5733;
@@ -3101,6 +3102,7 @@ function crb_admin_show_vtabs( $tabs_config, $submit = '', $hidden = array(), $f
3101
  $callbacks = array();
3102
 
3103
  foreach ( $tabs_config as $tab_id => $tab ) {
 
3104
  $tablinks .= '<div class="tablinks ' . $b_class . '" data-tab-id="' . $tab_id . '">' . $tab['title'] . '<br/><span>' . crb_array_get( $tab, 'desc', '' ) . '</span></div>';
3105
  $tabs .= '<div id="tab-' . $tab_id . '" class="vtabcontent" ' . $t_style . '>' . $tab['content'] . '</div>';
3106
  if ( $b_class ) {
@@ -4538,6 +4540,16 @@ function cerber_get_admin_page_config( $page = '' ) {
4538
  }
4539
  }
4540
  ),
 
 
 
 
 
 
 
 
 
 
4541
  'cerber-users' => array(
4542
  'title' => __( 'User Policies', 'wp-cerber' ),
4543
  'tabs' => array(
57
  add_action( 'load-' . $hook, 'crb_admin_screen_options' );
58
 
59
  if ( lab_lab() ) {
60
+ add_submenu_page( 'cerber-security', __( 'Cerber Data Shield Policies', 'wp-cerber' ), __( 'Data Shield', 'wp-cerber' ), 'manage_options', 'cerber-shield', 'cerber_render_admin_page' );
61
  add_submenu_page( 'cerber-security', __( 'Cerber Security Rules', 'wp-cerber' ), __( 'Security Rules', 'wp-cerber' ), 'manage_options', 'cerber-rules', 'cerber_render_admin_page' );
62
  }
63
 
2769
  #crb-activity td.acinfo div {
2770
  padding: 0.1em 0 0.1em 0.7em;
2771
  }
2772
+ .crb12, .crb16, .crb17, .crb18, .crb19, .crb41, .crb42, .crb50, .crb51, .crb52, .crb53, .crb54, .crb55, .crb56, .crb70, .crb71, .crb72, .crb100 {
2773
  /*border-left: 4px solid #FF5733;*/
2774
  /*font-weight: bold;*/
2775
  border-left: 0.4em solid #FF5733;
3102
  $callbacks = array();
3103
 
3104
  foreach ( $tabs_config as $tab_id => $tab ) {
3105
+ $tab_id = str_replace( '-', '_', $tab_id );
3106
  $tablinks .= '<div class="tablinks ' . $b_class . '" data-tab-id="' . $tab_id . '">' . $tab['title'] . '<br/><span>' . crb_array_get( $tab, 'desc', '' ) . '</span></div>';
3107
  $tabs .= '<div id="tab-' . $tab_id . '" class="vtabcontent" ' . $t_style . '>' . $tab['content'] . '</div>';
3108
  if ( $b_class ) {
4540
  }
4541
  }
4542
  ),
4543
+ 'cerber-shield' => array(
4544
+ 'title' => __( 'Data Shield Policies', 'wp-cerber' ),
4545
+ 'tabs' => array(
4546
+ 'user_shield' => array( 'bx-group', __( 'Accounts & Roles', 'wp-cerber' ) ),
4547
+ 'opt_shield' => array( 'bx-slider', __( 'Site Settings', 'wp-cerber' ) ),
4548
+ ),
4549
+ 'callback' => function ( $tab ) {
4550
+ cerber_show_settings_form( $tab );
4551
+ }
4552
+ ),
4553
  'cerber-users' => array(
4554
  'title' => __( 'User Policies', 'wp-cerber' ),
4555
  'tabs' => array(
languages/wp-cerber-fr_CA.mo CHANGED
Binary file
languages/wp-cerber-fr_CA.po CHANGED
@@ -58,7 +58,7 @@ msgstr "URL de connexion personnalisée"
58
 
59
  #: ../settings.php:226
60
  msgid "must not overlap with the existing pages or posts slug"
61
- msgstr "ne doit pas chevaucher l’URL d’une page ou d’un article existant"
62
 
63
  #: ../settings.php:233
64
  msgid "Disable wp-login.php"
@@ -133,7 +133,7 @@ msgstr "Affichage de %d derniers enregistrements sur %d"
133
 
134
  #: ../common.php:1233
135
  msgid "Logged in"
136
- msgstr "Connexion réussie"
137
 
138
  #: ../common.php:1234
139
  msgid "Logged out"
@@ -166,7 +166,7 @@ msgstr "IP blacklistées"
166
 
167
  #: ../common.php:1256
168
  msgid "Password changed"
169
- msgstr "Changement de mot de passe"
170
 
171
  #: ../dashboard.php:179 ../dashboard.php:262
172
  msgid "Remove"
@@ -758,7 +758,7 @@ msgstr "En savoir plus"
758
 
759
  #: ../common.php:1231
760
  msgid "User created"
761
- msgstr "Utilisateur créé"
762
 
763
  #: ../common.php:1232
764
  msgid "User registered"
@@ -778,7 +778,7 @@ msgstr "Tentative d’accès à une URL interdite"
778
 
779
  #: ../common.php:1265 ../common.php:1338
780
  msgid "Attempt to log in with prohibited username"
781
- msgstr "Tentative de connexion avec un identifiant interdit"
782
 
783
  #: ../settings.php:296
784
  msgid "Cerber Lab connection"
@@ -995,15 +995,15 @@ msgstr "Événement"
995
 
996
  #: ../common.php:266
997
  msgid "Spam comments denied"
998
- msgstr "Les commentaires de spam sont refusés"
999
 
1000
  #: ../common.php:268
1001
  msgid "Malicious IP addresses detected"
1002
- msgstr "Adresses IP malveillantes détectées"
1003
 
1004
  #: ../common.php:269
1005
  msgid "Lockouts occurred"
1006
- msgstr "Des lock-out ont eu lieu"
1007
 
1008
  #: ../cerber-load.php:1465 ../cerber-load.php:1471 ../cerber-load.php:1496 ..
1009
  #: /cerber-load.php:1503
@@ -1012,7 +1012,7 @@ msgstr "Vous n'êtes pas autorisé à vous inscrire."
1012
 
1013
  #: ../common.php:1242
1014
  msgid "Spam comment denied"
1015
- msgstr "Commentaire anti-spam refusé"
1016
 
1017
  #: ../common.php:1267
1018
  msgid "Attempt to log in denied"
@@ -1024,7 +1024,7 @@ msgstr "Tentative d'enregistrement refusée"
1024
 
1025
  #: ../common.php:263
1026
  msgid "Malicious activities mitigated"
1027
- msgstr "Atténuation des activités malveillantes"
1028
 
1029
  #: ../dashboard.php:70
1030
  msgid "Cerber antispam settings"
@@ -1153,7 +1153,7 @@ msgstr "Vous"
1153
 
1154
  #: ../common.php:267
1155
  msgid "Spam form submissions denied"
1156
- msgstr "Refus d'envoi du formulaire anti-spam"
1157
 
1158
  #: ../dashboard.php:2316 ../cerber-load.php:3880 ../cerber-load.php:4798
1159
  msgid "Getting Started Guide"
@@ -1184,7 +1184,7 @@ msgstr "https://wpcerber.com"
1184
 
1185
  #: ../common.php:1244
1186
  msgid "Form submission denied"
1187
- msgstr "Refus d'envoi du formulaire"
1188
 
1189
  #: ../common.php:1245
1190
  msgid "Comment denied"
@@ -1192,7 +1192,7 @@ msgstr "Commentaire refusé"
1192
 
1193
  #: ../common.php:1273
1194
  msgid "Request to REST API denied"
1195
- msgstr "Demande d'REST API refusée"
1196
 
1197
  #: ../common.php:1274
1198
  msgid "XML-RPC request denied"
@@ -1228,7 +1228,7 @@ msgstr "Plusieurs activités suspectes ont été détectées"
1228
 
1229
  #: ../settings.php:387
1230
  msgid "Allow REST API for logged in users"
1231
- msgstr "Autoriser l'REST API pour les utilisateurs connectés"
1232
 
1233
  #: ../settings.php:399
1234
  msgid "Specify REST API namespaces to be allowed if REST API is disabled. One string per line."
@@ -1344,7 +1344,7 @@ msgstr "Rapport hebdomadaire"
1344
 
1345
  #: ../cerber-load.php:3898 ../cerber-load.php:3908
1346
  msgid "To change reporting settings visit"
1347
- msgstr "Pour modifier les paramètres de reporting, visitez"
1348
 
1349
  #: ../cerber-load.php:3931
1350
  msgid "Your login page:"
@@ -2940,59 +2940,59 @@ msgstr ""
2940
 
2941
  #: ../settings.php:783
2942
  msgid "Automatic recovery of modified and infected files"
2943
- msgstr ""
2944
 
2945
  #: ../settings.php:786
2946
  msgid "Recover WordPress files"
2947
- msgstr ""
2948
 
2949
  #: ../settings.php:790
2950
  msgid "Recover plugins files"
2951
- msgstr ""
2952
 
2953
  #: ../cerber-scanner.php:1605
2954
  msgid "File deleted"
2955
- msgstr ""
2956
 
2957
  #: ../cerber-scanner.php:1606
2958
  msgid "File recovered"
2959
- msgstr ""
2960
 
2961
  #: ../cerber-scanner.php:3860
2962
  msgid "Recovering WordPress files"
2963
- msgstr ""
2964
 
2965
  #: ../cerber-scanner.php:3862
2966
  msgid "Recovering plugins files"
2967
- msgstr ""
2968
 
2969
  #: ../cerber-scanner.php:5353
2970
  msgid "Recovered"
2971
- msgstr ""
2972
 
2973
  #: ../cerber-scanner.php:5403
2974
  msgid "Automatically deleted"
2975
- msgstr ""
2976
 
2977
  #: ../cerber-scanner.php:5406
2978
  msgid "Automatically recovered"
2979
- msgstr ""
2980
 
2981
  #: ../dashboard.php:63
2982
  msgid "Cerber User Security"
2983
- msgstr ""
2984
 
2985
  #: ../dashboard.php:63 ../dashboard.php:4542
2986
  msgid "User Policies"
2987
- msgstr ""
2988
 
2989
  #: ../dashboard.php:1717
2990
  msgid "A new version is available"
2991
- msgstr ""
2992
 
2993
  #: ../dashboard.php:4544
2994
  msgid "Role-based"
2995
- msgstr ""
2996
 
2997
  #: ../dashboard.php:4545
2998
  msgid "Global"
@@ -3076,7 +3076,7 @@ msgstr ""
3076
 
3077
  #: ../cerber-users.php:433
3078
  msgid "Advanced mode"
3079
- msgstr ""
3080
 
3081
  #: ../cerber-users.php:437
3082
  msgid "Enforce two-factor authentication if any of the following conditions is true"
58
 
59
  #: ../settings.php:226
60
  msgid "must not overlap with the existing pages or posts slug"
61
+ msgstr "ne doit pas chevaucher l’URL d’une page ou d’un contenu existant"
62
 
63
  #: ../settings.php:233
64
  msgid "Disable wp-login.php"
133
 
134
  #: ../common.php:1233
135
  msgid "Logged in"
136
+ msgstr "Connexions réussies"
137
 
138
  #: ../common.php:1234
139
  msgid "Logged out"
166
 
167
  #: ../common.php:1256
168
  msgid "Password changed"
169
+ msgstr "Changements de mot de passe"
170
 
171
  #: ../dashboard.php:179 ../dashboard.php:262
172
  msgid "Remove"
758
 
759
  #: ../common.php:1231
760
  msgid "User created"
761
+ msgstr "Utilisateurs créés"
762
 
763
  #: ../common.php:1232
764
  msgid "User registered"
778
 
779
  #: ../common.php:1265 ../common.php:1338
780
  msgid "Attempt to log in with prohibited username"
781
+ msgstr "Tentatives de connexion avec un identifiant interdit"
782
 
783
  #: ../settings.php:296
784
  msgid "Cerber Lab connection"
995
 
996
  #: ../common.php:266
997
  msgid "Spam comments denied"
998
+ msgstr "commentaires de spam refusés"
999
 
1000
  #: ../common.php:268
1001
  msgid "Malicious IP addresses detected"
1002
+ msgstr "adresses IP malveillantes détectées"
1003
 
1004
  #: ../common.php:269
1005
  msgid "Lockouts occurred"
1006
+ msgstr "visiteurs ont été bannis"
1007
 
1008
  #: ../cerber-load.php:1465 ../cerber-load.php:1471 ../cerber-load.php:1496 ..
1009
  #: /cerber-load.php:1503
1012
 
1013
  #: ../common.php:1242
1014
  msgid "Spam comment denied"
1015
+ msgstr "commentaire de spam refusé"
1016
 
1017
  #: ../common.php:1267
1018
  msgid "Attempt to log in denied"
1024
 
1025
  #: ../common.php:263
1026
  msgid "Malicious activities mitigated"
1027
+ msgstr "activités malveillantes bloquées"
1028
 
1029
  #: ../dashboard.php:70
1030
  msgid "Cerber antispam settings"
1153
 
1154
  #: ../common.php:267
1155
  msgid "Spam form submissions denied"
1156
+ msgstr "envois de spam refusés"
1157
 
1158
  #: ../dashboard.php:2316 ../cerber-load.php:3880 ../cerber-load.php:4798
1159
  msgid "Getting Started Guide"
1184
 
1185
  #: ../common.php:1244
1186
  msgid "Form submission denied"
1187
+ msgstr "envois de formulaire bloqué"
1188
 
1189
  #: ../common.php:1245
1190
  msgid "Comment denied"
1192
 
1193
  #: ../common.php:1273
1194
  msgid "Request to REST API denied"
1195
+ msgstr "Demandes d'API REST refusées"
1196
 
1197
  #: ../common.php:1274
1198
  msgid "XML-RPC request denied"
1228
 
1229
  #: ../settings.php:387
1230
  msgid "Allow REST API for logged in users"
1231
+ msgstr "Autoriser l'API REST pour les utilisateurs connectés"
1232
 
1233
  #: ../settings.php:399
1234
  msgid "Specify REST API namespaces to be allowed if REST API is disabled. One string per line."
1344
 
1345
  #: ../cerber-load.php:3898 ../cerber-load.php:3908
1346
  msgid "To change reporting settings visit"
1347
+ msgstr "Pour modifier les paramètres du rapport, visitez : "
1348
 
1349
  #: ../cerber-load.php:3931
1350
  msgid "Your login page:"
2940
 
2941
  #: ../settings.php:783
2942
  msgid "Automatic recovery of modified and infected files"
2943
+ msgstr "Rétablissement automatique des fichiers modifiés et infectés"
2944
 
2945
  #: ../settings.php:786
2946
  msgid "Recover WordPress files"
2947
+ msgstr "Rétablir les fichiers de WordPress"
2948
 
2949
  #: ../settings.php:790
2950
  msgid "Recover plugins files"
2951
+ msgstr "Rétablir les fichiers des extensions"
2952
 
2953
  #: ../cerber-scanner.php:1605
2954
  msgid "File deleted"
2955
+ msgstr "Fichier supprimé"
2956
 
2957
  #: ../cerber-scanner.php:1606
2958
  msgid "File recovered"
2959
+ msgstr "Fichier rétabli"
2960
 
2961
  #: ../cerber-scanner.php:3860
2962
  msgid "Recovering WordPress files"
2963
+ msgstr "Rétablissement des fichiers de WordPress"
2964
 
2965
  #: ../cerber-scanner.php:3862
2966
  msgid "Recovering plugins files"
2967
+ msgstr "Rétablissement des fichiers d'extensions"
2968
 
2969
  #: ../cerber-scanner.php:5353
2970
  msgid "Recovered"
2971
+ msgstr "Rétabli"
2972
 
2973
  #: ../cerber-scanner.php:5403
2974
  msgid "Automatically deleted"
2975
+ msgstr "Supprimé automatiquement"
2976
 
2977
  #: ../cerber-scanner.php:5406
2978
  msgid "Automatically recovered"
2979
+ msgstr "Rétabli automatiquement"
2980
 
2981
  #: ../dashboard.php:63
2982
  msgid "Cerber User Security"
2983
+ msgstr "Sécurité Cerber de l'utilisateur"
2984
 
2985
  #: ../dashboard.php:63 ../dashboard.php:4542
2986
  msgid "User Policies"
2987
+ msgstr "Politiques de l'utilisateur"
2988
 
2989
  #: ../dashboard.php:1717
2990
  msgid "A new version is available"
2991
+ msgstr "Une nouvelle version est disponible"
2992
 
2993
  #: ../dashboard.php:4544
2994
  msgid "Role-based"
2995
+ msgstr "Basé sur les rôles"
2996
 
2997
  #: ../dashboard.php:4545
2998
  msgid "Global"
3076
 
3077
  #: ../cerber-users.php:433
3078
  msgid "Advanced mode"
3079
+ msgstr "Mode avancé"
3080
 
3081
  #: ../cerber-users.php:437
3082
  msgid "Enforce two-factor authentication if any of the following conditions is true"
languages/wp-cerber-fr_FR.mo CHANGED
Binary file
languages/wp-cerber-fr_FR.po CHANGED
@@ -1024,7 +1024,7 @@ msgstr "La tentative d'enregistrement a été refusée"
1024
 
1025
  #: ../common.php:263
1026
  msgid "Malicious activities mitigated"
1027
- msgstr "Atténuation des activités malveillantes"
1028
 
1029
  #: ../dashboard.php:70
1030
  msgid "Cerber antispam settings"
1024
 
1025
  #: ../common.php:263
1026
  msgid "Malicious activities mitigated"
1027
+ msgstr "atténuations d'activités malveillantes"
1028
 
1029
  #: ../dashboard.php:70
1030
  msgid "Cerber antispam settings"
languages/wp-cerber-sv_SE.mo CHANGED
Binary file
languages/wp-cerber-sv_SE.po CHANGED
@@ -2232,7 +2232,7 @@ msgstr "Use comma to separate items."
2232
 
2233
  #: ../dashboard.php:4582
2234
  msgid "Cleaning up"
2235
- msgstr "Städar upp"
2236
 
2237
  #: ../cerber-scanner.php:1593
2238
  msgid "Malicious code found"
@@ -2525,7 +2525,7 @@ msgstr "Tillämpa inte denna policy på IP-adresser i den vita IP-åtkomstlistan
2525
 
2526
  #: ../settings.php:428 ../settings.php:2028
2527
  msgid "Only registered and logged in users are allowed to view this website"
2528
- msgstr "Endast registrerade och inloggade användare får se denna webbplats"
2529
 
2530
  #: ../settings.php:433
2531
  msgid "Redirect to URL"
@@ -2557,7 +2557,7 @@ msgstr "Master-inställningar"
2557
 
2558
  #: ../settings.php:959
2559
  msgid "Return to the website list"
2560
- msgstr "Återgå till webbplatslistan"
2561
 
2562
  #: ../settings.php:963
2563
  msgid "Show \"Switched to\" notification"
@@ -2928,7 +2928,7 @@ msgstr "Aviseringar för utlåsning"
2928
 
2929
  #: ../settings.php:518
2930
  msgid "Pushbullet access token"
2931
- msgstr ""
2932
 
2933
  #: ../settings.php:521
2934
  msgid "Pushbullet device"
@@ -3020,7 +3020,7 @@ msgstr "En ny version av %s är tillgänglig. Vänligen installera den."
3020
 
3021
  #: ../cerber-load.php:1490
3022
  msgid "Email address is not permitted."
3023
- msgstr "E-postadress är inte tillåtet."
3024
 
3025
  #: ../cerber-load.php:1490
3026
  msgid "Please choose another one."
@@ -3289,14 +3289,14 @@ msgstr "Avsluta"
3289
  #: ../dashboard.php:1674
3290
  msgid "user"
3291
  msgid_plural "users"
3292
- msgstr[0] ""
3293
- msgstr[1] ""
3294
 
3295
  #: ../settings.php:377
3296
  msgid "Block access to users' data via REST API"
3297
- msgstr ""
3298
 
3299
  #: ../cerber-scanner.php:1604
3300
  msgid "Unable to delete"
3301
- msgstr ""
3302
 
2232
 
2233
  #: ../dashboard.php:4582
2234
  msgid "Cleaning up"
2235
+ msgstr "Uppstädning"
2236
 
2237
  #: ../cerber-scanner.php:1593
2238
  msgid "Malicious code found"
2525
 
2526
  #: ../settings.php:428 ../settings.php:2028
2527
  msgid "Only registered and logged in users are allowed to view this website"
2528
+ msgstr "Endast registrerade och inloggade användare har tillåtelse visa denna webbplats"
2529
 
2530
  #: ../settings.php:433
2531
  msgid "Redirect to URL"
2557
 
2558
  #: ../settings.php:959
2559
  msgid "Return to the website list"
2560
+ msgstr "Tillbaka till webbplatslistan"
2561
 
2562
  #: ../settings.php:963
2563
  msgid "Show \"Switched to\" notification"
2928
 
2929
  #: ../settings.php:518
2930
  msgid "Pushbullet access token"
2931
+ msgstr "Pushbullet åtkomst-token"
2932
 
2933
  #: ../settings.php:521
2934
  msgid "Pushbullet device"
3020
 
3021
  #: ../cerber-load.php:1490
3022
  msgid "Email address is not permitted."
3023
+ msgstr "E-postadress är inte tillåten."
3024
 
3025
  #: ../cerber-load.php:1490
3026
  msgid "Please choose another one."
3289
  #: ../dashboard.php:1674
3290
  msgid "user"
3291
  msgid_plural "users"
3292
+ msgstr[0] "användare"
3293
+ msgstr[1] "användare"
3294
 
3295
  #: ../settings.php:377
3296
  msgid "Block access to users' data via REST API"
3297
+ msgstr "Blockera åtkomst till användarnas data via REST API"
3298
 
3299
  #: ../cerber-scanner.php:1604
3300
  msgid "Unable to delete"
3301
+ msgstr "Kan inte ta bort"
3302
 
languages/wp-cerber-zh_TW.mo ADDED
Binary file
languages/wp-cerber-zh_TW.po ADDED
@@ -0,0 +1,3299 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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: zh-TW\n"
9
+ "Plural-Forms: nplurals=1; plural=0;\n"
10
+
11
+ #: ../settings.php:163
12
+ msgid "Limit login attempts"
13
+ msgstr "限制登入嘗試"
14
+
15
+ #: ../settings.php:166
16
+ msgid "Attempts"
17
+ msgstr "嘗試"
18
+
19
+ #: ../settings.php:170
20
+ msgid "Lockout duration"
21
+ msgstr "鎖定期間"
22
+
23
+ #: ../settings.php:171 ../settings.php:266
24
+ msgid "minutes"
25
+ msgstr "分鐘"
26
+
27
+ #: ../settings.php:175
28
+ msgid "Aggressive lockout"
29
+ msgstr "主動鎖定"
30
+
31
+ #: ../settings.php:243
32
+ msgid "Site connection"
33
+ msgstr "網站連線"
34
+
35
+ #: ../settings.php:186
36
+ msgid "Proactive security rules"
37
+ msgstr "主動式安全規則"
38
+
39
+ #: ../settings.php:190
40
+ msgid "Block subnet"
41
+ msgstr "封鎖子網路"
42
+
43
+ #: ../settings.php:205
44
+ msgid "Request wp-login.php"
45
+ msgstr "對 wp-login.php發出請求"
46
+
47
+ #: ../settings.php:206
48
+ msgid "Immediately block IP after any request to wp-login.php"
49
+ msgstr "立即封鎖任何發送請求 wp-login.php的 IP"
50
+
51
+ #: ../settings.php:221
52
+ msgid "Custom login page"
53
+ msgstr "自訂登入頁面"
54
+
55
+ #: ../settings.php:225
56
+ msgid "Custom login URL"
57
+ msgstr "自訂登入網址"
58
+
59
+ #: ../settings.php:226
60
+ msgid "must not overlap with the existing pages or posts slug"
61
+ msgstr "不能與現存的頁面或文章代稱重疊"
62
+
63
+ #: ../settings.php:233
64
+ msgid "Disable wp-login.php"
65
+ msgstr "停用 wp-login.php"
66
+
67
+ #: ../settings.php:234
68
+ msgid "Block direct access to wp-login.php and return HTTP 404 Not Found Error"
69
+ msgstr "封鎖直接存取 wp-login.php 並顯示 HTTP 404 錯誤"
70
+
71
+ #: ../dashboard.php:1678 ../settings.php:257
72
+ msgid "Citadel mode"
73
+ msgstr "堡壘模式"
74
+
75
+ #: ../settings.php:261
76
+ msgid "Threshold"
77
+ msgstr "門檻"
78
+
79
+ #: ../settings.php:265 ../cerber-scanner.php:3948
80
+ msgid "Duration"
81
+ msgstr "期間"
82
+
83
+ #: ../dashboard.php:4468 ../cerber-load.php:4811 ../settings.php:270
84
+ msgid "Notifications"
85
+ msgstr "通知"
86
+
87
+ #: ../settings.php:272
88
+ msgid "Send notification to admin email"
89
+ msgstr "傳送通知至管理員郵件"
90
+
91
+ #: ../dashboard.php:4465 ../cerber-load.php:4808 ../cerber-tools.php:38 ../cerber-
92
+ #: tools.php:47 ../cerber-tools.php:139
93
+ msgid "Access Lists"
94
+ msgstr "存取清單"
95
+
96
+ #: ../dashboard.php:1712 ../dashboard.php:2263 ../dashboard.php:4461 ../cerber-
97
+ #: load.php:4503 ../cerber-users.php:922 ../settings.php:282
98
+ msgid "Activity"
99
+ msgstr "活動"
100
+
101
+ #: ../dashboard.php:4463
102
+ msgid "Lockouts"
103
+ msgstr "鎖定"
104
+
105
+ #: ../settings.php:1284
106
+ msgid "%s allowed retries in %s minutes"
107
+ msgstr "允許 %s次重試於 %s分鐘內"
108
+
109
+ #: ../settings.php:1310
110
+ msgid "Enable after %s failed login attempts in last %s minutes"
111
+ msgstr "於 %s次嘗試登入失敗後的 %s分鐘內啟用"
112
+
113
+ #: ../dashboard.php:184 ../cerber-load.php:4512
114
+ msgid "IP"
115
+ msgstr "IP"
116
+
117
+ #: ../dashboard.php:805 ../dashboard.php:1074 ../dashboard.php:3527 ../dashboard.
118
+ #: php:3902
119
+ msgid "Date"
120
+ msgstr "日期"
121
+
122
+ #: ../dashboard.php:808 ../dashboard.php:1076 ../dashboard.php:3907
123
+ msgid "Local User"
124
+ msgstr "本機使用者"
125
+
126
+ #: ../cerber-load.php:4520
127
+ msgid "Username used"
128
+ msgstr "使用的帳號"
129
+
130
+ #: ../dashboard.php:205
131
+ msgid "Showing last %d records from %d"
132
+ msgstr "顯示上次 %d 記錄自 %d"
133
+
134
+ #: ../common.php:1233
135
+ msgid "Logged in"
136
+ msgstr "登入"
137
+
138
+ #: ../common.php:1234
139
+ msgid "Logged out"
140
+ msgstr "登出"
141
+
142
+ #: ../common.php:1235
143
+ msgid "Login failed"
144
+ msgstr "登入失敗"
145
+
146
+ #: ../dashboard.php:905 ../common.php:1238
147
+ msgid "IP blocked"
148
+ msgstr "已封鎖的 IP"
149
+
150
+ #: ../common.php:1239
151
+ msgid "Subnet blocked"
152
+ msgstr "已封鎖的子網路"
153
+
154
+ #: ../common.php:1241
155
+ msgid "Citadel activated!"
156
+ msgstr "已啟用堡壘模式!"
157
+
158
+ #: ../dashboard.php:1295 ../dashboard.php:1331 ../dashboard.php:3701 ../common.
159
+ #: php:1291
160
+ msgid "Locked out"
161
+ msgstr "已鎖定"
162
+
163
+ #: ../common.php:1293
164
+ msgid "IP blacklisted"
165
+ msgstr "黑名單的 IP"
166
+
167
+ #: ../common.php:1256
168
+ msgid "Password changed"
169
+ msgstr "已變更密碼"
170
+
171
+ #: ../dashboard.php:179 ../dashboard.php:262
172
+ msgid "Remove"
173
+ msgstr "移除"
174
+
175
+ #: ../dashboard.php:546
176
+ msgid "Lockout for %s was removed"
177
+ msgstr "已移除對 %s的鎖定"
178
+
179
+ #: ../dashboard.php:234 ../dashboard.php:1287 ../dashboard.php:1324 ../dashboard.
180
+ #: php:1676 ../dashboard.php:3696 ../cerber-load.php:4796
181
+ msgid "White IP Access List"
182
+ msgstr "IP 存取白名單"
183
+
184
+ #: ../dashboard.php:236 ../dashboard.php:1290 ../dashboard.php:1327 ../dashboard.
185
+ #: php:1677 ../dashboard.php:3697
186
+ msgid "Black IP Access List"
187
+ msgstr "IP 存取黑名單"
188
+
189
+ #: ../dashboard.php:268
190
+ msgid "List is empty"
191
+ msgstr "清單無資料"
192
+
193
+ #: ../cerber-load.php:3815
194
+ msgid "Citadel mode is activated after %d failed login attempts in %d minutes."
195
+ msgstr "堡壘模式啟用後發生 %d次失敗的登入嘗試於 %d分鐘內。"
196
+
197
+ #: ../dashboard.php:2423 ../dashboard.php:2861
198
+ msgid "View Activity"
199
+ msgstr "檢視活動"
200
+
201
+ #: ../dashboard.php:4529 ../dashboard.php:4580 ../cerber-tools.php:37 ../cerber-
202
+ #: tools.php:46 ../nexus/cerber-nexus.php:90
203
+ msgid "Settings"
204
+ msgstr "設定"
205
+
206
+ #: ../dashboard.php:1532
207
+ msgid "Last login"
208
+ msgstr "上次登入"
209
+
210
+ #: ../dashboard.php:1565 ../dashboard.php:1656 ../common.php:1494 ../nexus/cerber-
211
+ #: slave-list.php:297
212
+ msgid "Never"
213
+ msgstr "從未"
214
+
215
+ #: ../dashboard.php:2309 ../cerber-users.php:945 ../cerber-tools.php:649 ..
216
+ #: /nexus/cerber-slave-list.php:230 ../cerber-scanner.php:5746 ../cerber-scanner.
217
+ #: php:5904
218
+ msgid "Are you sure?"
219
+ msgstr "你確定嗎?"
220
+
221
+ #: ../dashboard.php:2080 ../settings.php:244
222
+ msgid "My site is behind a reverse proxy"
223
+ msgstr "我的網站位於反向代理中"
224
+
225
+ #: ../settings.php:187
226
+ msgid "Make your protection smarter!"
227
+ msgstr "讓你的防護更智慧!"
228
+
229
+ #: ../settings.php:140
230
+ msgid "Please enable Permalinks to use this feature. Set Permalink Settings to something other than Default."
231
+ msgstr "要使用此功能請啟用永久連結。將永久連結設為預設值以外的設定。"
232
+
233
+ #: ../dashboard.php:4464 ../cerber-load.php:4806
234
+ msgid "Main Settings"
235
+ msgstr "主設定"
236
+
237
+ #: ../dashboard.php:4714
238
+ msgid "Help"
239
+ msgstr "說明"
240
+
241
+ #: ../settings.php:1294
242
+ msgid "Increase lockout duration to %s hours after %s lockouts in the last %s hours"
243
+ msgstr "延長鎖定時間至 %s小時。如發生 %s次鎖定於 %s小時之內"
244
+
245
+ #: ../cerber-load.php:375
246
+ msgid "You are not allowed to log in. Ask your administrator for assistance."
247
+ msgstr "你不被允許登入,請詢問你的管理員協助。"
248
+
249
+ #: ../cerber-load.php:400
250
+ msgid "You have only one attempt remaining."
251
+ msgid_plural "You have %d attempts remaining."
252
+ msgstr[0] "你只剩下一次機會嘗試。\n"
253
+ "你只剩下 %d次機會嘗試。"
254
+
255
+ #: ../dashboard.php:1104
256
+ msgid "No activity has been logged."
257
+ msgstr "尚無活動記錄。"
258
+
259
+ #: ../dashboard.php:187 ../cerber-users.php:755
260
+ msgid "Expires"
261
+ msgstr "逾期"
262
+
263
+ #: ../dashboard.php:211
264
+ msgid "No lockouts at the moment. The sky is clear."
265
+ msgstr "晴朗無雲,目前沒有鎖定記錄。"
266
+
267
+ #: ../dashboard.php:234
268
+ msgid "These IPs will never be locked out"
269
+ msgstr "這些 IP將永遠不會被鎖定"
270
+
271
+ #: ../dashboard.php:243
272
+ msgid "Your IP"
273
+ msgstr "你的 IP"
274
+
275
+ #: ../cerber-load.php:3816
276
+ msgid "Last failed attempt was at %s from IP %s with user login: %s."
277
+ msgstr "上次嘗試登入失敗於 %s來自 IP %s 使用者登入為:%s."
278
+
279
+ #: ../cerber-load.php:4774
280
+ msgid "Can't activate WP Cerber due to a database error."
281
+ msgstr "由於資料庫錯誤無法啟用 WP Cerber。"
282
+
283
+ #: ../settings.php:1301
284
+ msgid "Notify admin if the number of active lockouts above"
285
+ msgstr "若達到上述鎖定次數則通知管理員"
286
+
287
+ #: ../settings.php:286 ../settings.php:643 ../settings.php:696 ../settings.php:879
288
+ msgid "days"
289
+ msgstr "天"
290
+
291
+ #: ../dashboard.php:1622
292
+ msgid "Cerber Quick View"
293
+ msgstr "Cerber快速檢視"
294
+
295
+ #: ../dashboard.php:207
296
+ msgid "Hint"
297
+ msgstr "提示"
298
+
299
+ #: ../dashboard.php:207
300
+ msgid "To view activity, click on the IP"
301
+ msgstr "點選 IP以檢視活動"
302
+
303
+ #: ../settings.php:191
304
+ msgid "Always block entire subnet Class C of intruders IP"
305
+ msgstr "永遠封鎖入侵者 IP的整個 Class C子網路"
306
+
307
+ #: ../settings.php:277 ../settings.php:1307
308
+ msgid "Click to send test"
309
+ msgstr "點選測試傳送"
310
+
311
+ #: ../settings.php:1552 ../settings.php:1553
312
+ msgid "Attention! You have changed the login URL! The new login URL is"
313
+ msgstr "注意!你已變更登入網址,新的登入網址為"
314
+
315
+ #: ../dashboard.php:1531
316
+ msgid "Comments"
317
+ msgstr "留言"
318
+
319
+ #: ../cerber-load.php:3817 ../cerber-load.php:4544
320
+ msgid "View activity in dashboard"
321
+ msgstr "在控制台檢視活動資訊"
322
+
323
+ #: ../cerber-load.php:3846
324
+ msgid "Number of active lockouts"
325
+ msgstr "已鎖定的活動次數"
326
+
327
+ #: ../cerber-load.php:3850
328
+ msgid "View lockouts in dashboard"
329
+ msgstr "在控制台檢視鎖定資訊"
330
+
331
+ #: ../cerber-load.php:3938
332
+ msgid "This message was sent by"
333
+ msgstr "此訊息傳送自"
334
+
335
+ #: ../dashboard.php:75 ../dashboard.php:4612
336
+ msgid "Tools"
337
+ msgstr "工具"
338
+
339
+ #: ../cerber-tools.php:34
340
+ msgid "Export settings to the file"
341
+ msgstr "匯出設定至檔案"
342
+
343
+ #: ../cerber-tools.php:35
344
+ msgid "When you click the button below you will get a configuration file, which you can upload on another site."
345
+ msgstr "當你點選以下按鈕將會產生設定檔,你可以在其他網站中匯入使用。"
346
+
347
+ #: ../cerber-tools.php:36
348
+ msgid "What do you want to export?"
349
+ msgstr "你確認要匯出嗎?"
350
+
351
+ #: ../cerber-tools.php:39
352
+ msgid "Download file"
353
+ msgstr "下載檔案"
354
+
355
+ #: ../cerber-tools.php:41
356
+ msgid "Import settings from the file"
357
+ msgstr "從檔案匯入設定"
358
+
359
+ #: ../cerber-tools.php:42
360
+ msgid "When you click the button below, file will be uploaded and all existing settings will be overridden."
361
+ msgstr "當你點選以下按鈕,將會上傳檔案且全部的設定將會被覆蓋。"
362
+
363
+ #: ../cerber-tools.php:43
364
+ msgid "Select file to import."
365
+ msgstr "選擇匯入的檔案。"
366
+
367
+ #: ../cerber-tools.php:43 ../cerber-scanner.php:4163
368
+ msgid "Maximum upload file size: %s."
369
+ msgstr "上傳檔案最大容量:%s."
370
+
371
+ #: ../cerber-tools.php:46
372
+ msgid "What do you want to import?"
373
+ msgstr "你想要匯入什麼?"
374
+
375
+ #: ../cerber-tools.php:48 ../cerber-scanner.php:4166
376
+ msgid "Upload file"
377
+ msgstr "上傳檔案"
378
+
379
+ #: ../cerber-tools.php:97
380
+ msgid "No file was uploaded or file is corrupted"
381
+ msgstr "未上傳檔案或檔案已損毀"
382
+
383
+ #: ../cerber-tools.php:139
384
+ msgid "Error while updating"
385
+ msgstr "更新時發生錯誤"
386
+
387
+ #: ../cerber-tools.php:145
388
+ msgid "Settings has imported successfully from"
389
+ msgstr "設定已成功匯入自"
390
+
391
+ #: ../cerber-tools.php:152
392
+ msgid "Error while parsing file"
393
+ msgstr "解析檔案時發生錯誤"
394
+
395
+ #: ../dashboard.php:185 ../dashboard.php:1072
396
+ msgid "Hostname"
397
+ msgstr "主機名稱"
398
+
399
+ #: ../dashboard.php:483
400
+ msgid "unknown"
401
+ msgstr "未知"
402
+
403
+ #: ../settings.php:285 ../settings.php:642
404
+ msgid "Keep records for"
405
+ msgstr "保留記錄"
406
+
407
+ #: ../dashboard.php:1660 ../dashboard.php:1685
408
+ msgid "active"
409
+ msgstr "啟用"
410
+
411
+ #: ../dashboard.php:1660
412
+ msgid "deactivate"
413
+ msgstr "停用"
414
+
415
+ #: ../dashboard.php:1662
416
+ msgid "not active"
417
+ msgstr "未啟用"
418
+
419
+ #: ../dashboard.php:1663 ../dashboard.php:1680
420
+ msgid "disabled"
421
+ msgstr "已停用"
422
+
423
+ #: ../dashboard.php:1668
424
+ msgid "failed attempts"
425
+ msgstr "失敗的嘗試"
426
+
427
+ #: ../dashboard.php:1668 ../dashboard.php:1669
428
+ msgid "in 24 hours"
429
+ msgstr "於 24小時內"
430
+
431
+ #: ../dashboard.php:1668 ../dashboard.php:1669
432
+ msgid "view all"
433
+ msgstr "檢視全部"
434
+
435
+ #: ../dashboard.php:1669
436
+ msgid "lockouts"
437
+ msgstr "鎖定"
438
+
439
+ #: ../dashboard.php:1671
440
+ msgid "Lockouts at the moment"
441
+ msgstr "鎖定於"
442
+
443
+ #: ../dashboard.php:1672
444
+ msgid "Last lockout"
445
+ msgstr "上次鎖定"
446
+
447
+ #: ../dashboard.php:1676 ../dashboard.php:1677 ../dashboard.php:2604
448
+ msgid "entry"
449
+ msgid_plural "entries"
450
+ msgstr[0] "項目\n"
451
+ "項目"
452
+
453
+ #: ../dashboard.php:2304
454
+ msgid "Confused about some settings?"
455
+ msgstr "對某些設定感到疑惑?"
456
+
457
+ #: ../dashboard.php:2305
458
+ msgid "You can easily load default recommended settings using button below"
459
+ msgstr "透過以下按鈕你可以簡單的載入建議設定值"
460
+
461
+ #: ../dashboard.php:2307
462
+ msgid "Load default settings"
463
+ msgstr "載入預設值"
464
+
465
+ #: ../dashboard.php:2315
466
+ msgid "doesn't affect Custom login URL and Access Lists"
467
+ msgstr "不影響自訂登入網址和存取清單"
468
+
469
+ #: ../settings.php:509
470
+ msgid "New version is available"
471
+ msgstr "有新版本可供使用"
472
+
473
+ #: ../cerber-load.php:3789
474
+ msgid "WP Cerber notify"
475
+ msgstr "WP Cerber通知"
476
+
477
+ #: ../cerber-load.php:3813
478
+ msgid "Citadel mode is activated"
479
+ msgstr "已啟用堡壘模式"
480
+
481
+ #: ../cerber-load.php:3885
482
+ msgid "New Custom login URL"
483
+ msgstr "新增自訂登入網址"
484
+
485
+ #: ../cerber-load.php:4761
486
+ msgid "The WP Cerber requires PHP %s or higher. You are running"
487
+ msgstr "WP Cerber需要 PHP %s或更新版,你正使用"
488
+
489
+ #: ../cerber-load.php:4765
490
+ msgid "The WP Cerber requires WordPress %s or higher. You are running"
491
+ msgstr "WP Cerber需要 WordPress %s或更新版,你正使用"
492
+
493
+ #: ../settings.php:309
494
+ msgid "Use file"
495
+ msgstr "使用檔案"
496
+
497
+ #: ../settings.php:310
498
+ msgid "Write failed login attempts to the file"
499
+ msgstr "寫入失敗的登入嘗試至檔案"
500
+
501
+ #: ../dashboard.php:2422
502
+ msgid "Deactivate"
503
+ msgstr "停用"
504
+
505
+ #: ../dashboard.php:188 ../cerber-load.php:3848
506
+ msgid "Reason"
507
+ msgstr "原因"
508
+
509
+ #: ../dashboard.php:275
510
+ msgid "Add IP to the list"
511
+ msgstr "新增 IP至此清單"
512
+
513
+ #: ../dashboard.php:1393
514
+ msgid "Add IP to the Black List"
515
+ msgstr "新增 IP至黑名單"
516
+
517
+ #: ../common.php:1336
518
+ msgid "Attempt to access"
519
+ msgstr "嘗試存取"
520
+
521
+ #: ../common.php:1335
522
+ msgid "Limit on login attempts is reached"
523
+ msgstr "已達到登入嘗試限制"
524
+
525
+ #: ../cerber-load.php:3847
526
+ msgid "Last lockout was added: %s for IP %s"
527
+ msgstr "上次鎖定於: %s IP為 %s"
528
+
529
+ #: ../dashboard.php:4466 ../cerber-load.php:4810
530
+ msgid "Hardening"
531
+ msgstr "堅固強化"
532
+
533
+ #: ../dashboard.php:1368
534
+ msgid "Abuse email:"
535
+ msgstr "濫用的郵件:"
536
+
537
+ #: ../settings.php:496 ../settings.php:539 ../settings.php:749
538
+ msgid "Email Address"
539
+ msgstr "Email位置"
540
+
541
+ #: ../settings.php:501
542
+ msgid "if empty, the admin email %s will be used"
543
+ msgstr "如未填寫,則將使用管理員郵件 %s"
544
+
545
+ #: ../settings.php:319
546
+ msgid "Drill down IP"
547
+ msgstr "IP 分析"
548
+
549
+ #: ../settings.php:320
550
+ msgid "Retrieve extra WHOIS information for IP"
551
+ msgstr "為 IP取回額外 WHOIS資訊"
552
+
553
+ #: ../settings.php:337
554
+ msgid "Hardening WordPress"
555
+ msgstr "堅固強化 WordPress"
556
+
557
+ #: ../settings.php:341 ../settings.php:376
558
+ msgid "Stop user enumeration"
559
+ msgstr "停用使用者列舉"
560
+
561
+ #: ../settings.php:360
562
+ msgid "Disable XML-RPC"
563
+ msgstr "停用 XML-RPC"
564
+
565
+ #: ../settings.php:361
566
+ msgid "Block access to the XML-RPC server (including Pingbacks and Trackbacks)"
567
+ msgstr "封鎖對伺服器 XML-RPC的存取(包含自動引用通知及引用通知)"
568
+
569
+ #: ../settings.php:365
570
+ msgid "Disable feeds"
571
+ msgstr "停用資訊提供"
572
+
573
+ #: ../settings.php:366
574
+ msgid "Block access to the RSS, Atom and RDF feeds"
575
+ msgstr "封鎖對 RSS, Atom和 RDF的存取"
576
+
577
+ #: ../settings.php:381
578
+ msgid "Disable REST API"
579
+ msgstr "停用 REST API"
580
+
581
+ #: ../settings.php:1641 ../settings.php:1653 ../settings.php:1776
582
+ msgid "<strong>ERROR</strong>: please enter a valid email address."
583
+ msgstr "<strong>錯誤</strong>:請輸入正確的電子郵件位置。"
584
+
585
+ #: ../cerber-load.php:3878 ../cerber-load.php:4795
586
+ msgid "WP Cerber is now active and has started protecting your site"
587
+ msgstr "WP Cerber現在已啟用並開始保護你的網站"
588
+
589
+ #: ../dashboard.php:189 ../cerber-users.php:758 ../cerber-scanner.php:5772 ..
590
+ #: /cerber-scanner.php:5920
591
+ msgid "Action"
592
+ msgstr "動作"
593
+
594
+ #: ../dashboard.php:236
595
+ msgid "Nobody can log in or register from these IPs"
596
+ msgstr "無人可從這些 IP登入"
597
+
598
+ #: ../dashboard.php:293 ../dashboard.php:310
599
+ msgid "Incorrect IP address or IP range"
600
+ msgstr "不正確的 IP或 IP範圍"
601
+
602
+ #: ../dashboard.php:2438 ../nexus/cerber-nexus-slave.php:443
603
+ msgid "Settings saved"
604
+ msgstr "已儲存設定"
605
+
606
+ #: ../dashboard.php:1373
607
+ msgid "Network:"
608
+ msgstr "網路:"
609
+
610
+ #: ../dashboard.php:1388
611
+ msgid "Add network to the Black List"
612
+ msgstr "新增網路至黑名單"
613
+
614
+ #: ../dashboard.php:2421
615
+ msgid "Attention! Citadel mode is now active. Nobody is able to log in."
616
+ msgstr "注意!已啟用堡壘模式,將無人可登入。"
617
+
618
+ #: ../dashboard.php:410 ../dashboard.php:3625 ../whois.php:222 ../whois.php:253 ..
619
+ #: /common.php:1354 ../common.php:1805 ../nexus/cerber-slave-list.php:283
620
+ msgid "Unknown"
621
+ msgstr "未知"
622
+
623
+ #: ../common.php:323 ../common.php:395 ../common.php:400 ../common.php:406 ..
624
+ #: /common.php:411 ../cerber-load.php:683 ../cerber-load.php:695 ../cerber-load.
625
+ #: php:702 ../cerber-load.php:1024 ../cerber-load.php:1464 ../cerber-load.php:
626
+ #: 1470 ../cerber-load.php:1475 ../cerber-load.php:1482 ../cerber-load.php:1489 ..
627
+ #: /cerber-load.php:1495 ../cerber-load.php:1502 ../cerber-load.php:1653 ..
628
+ #: /cerber-load.php:1790 ../settings.php:1531 ../settings.php:1617 ..
629
+ #: /nexus/cerber-nexus-slave.php:215 ../nexus/cerber-nexus-slave.php:226 ..
630
+ #: /cerber-scanner.php:5874
631
+ msgid "ERROR:"
632
+ msgstr "錯誤:"
633
+
634
+ #: ../cerber-load.php:712
635
+ msgid "Human verification failed. Please click the square box in the reCAPTCHA block below."
636
+ msgstr "真人驗證失敗,請點選下方 reCAPTCHA區塊的方塊。"
637
+
638
+ #: ../cerber-load.php:1035
639
+ msgid "<strong>ERROR</strong>: The password you entered for the username %s is incorrect."
640
+ msgstr "<strong>錯誤</strong>:帳號 %s 的密碼輸入錯誤。"
641
+
642
+ #: ../cerber-load.php:1483
643
+ msgid "Username is not allowed. Please choose another one."
644
+ msgstr "不允許的帳號,請選擇其他的。"
645
+
646
+ #: ../cerber-load.php:3841
647
+ msgid "unspecified"
648
+ msgstr "不明"
649
+
650
+ #: ../cerber-load.php:3844
651
+ msgid "Number of lockouts is increasing"
652
+ msgstr "鎖定次數增長中"
653
+
654
+ #: ../cerber-load.php:3849
655
+ msgid "View activity for this IP"
656
+ msgstr "檢視此 IP的活動"
657
+
658
+ #: ../cerber-load.php:3853 ../cerber-load.php:3855
659
+ msgid "A new version of WP Cerber is available to install"
660
+ msgstr "新版 WP Cerber已經可以安裝"
661
+
662
+ #: ../cerber-load.php:3854
663
+ msgid "Hi!"
664
+ msgstr "嗨!"
665
+
666
+ #: ../cerber-load.php:3857 ../cerber-load.php:3868 ../nexus/cerber-slave-list.php:
667
+ #: 45
668
+ msgid "Website"
669
+ msgstr "網站"
670
+
671
+ #: ../cerber-load.php:3860 ../cerber-load.php:3861
672
+ msgid "The WP Cerber security plugin has been deactivated"
673
+ msgstr "WP Cerber安全外掛已停用"
674
+
675
+ #: ../cerber-load.php:3863
676
+ msgid "Not logged in"
677
+ msgstr "未登入"
678
+
679
+ #: ../cerber-load.php:3869
680
+ msgid "By user"
681
+ msgstr "由使用者"
682
+
683
+ #: ../cerber-load.php:3870
684
+ msgid "From IP address"
685
+ msgstr "來自 IP"
686
+
687
+ #: ../cerber-load.php:3873
688
+ msgid "From country"
689
+ msgstr "來自國家"
690
+
691
+ #: ../cerber-load.php:3877
692
+ msgid "The WP Cerber security plugin is now active"
693
+ msgstr "WP Cerber安全外掛已啟用"
694
+
695
+ #: ../cerber-load.php:4796
696
+ msgid "Your IP address is added to the"
697
+ msgstr "已新增你的 IP至"
698
+
699
+ #: ../cerber-load.php:4812
700
+ msgid "Import settings"
701
+ msgstr "匯入設定"
702
+
703
+ #: ../settings.php:504
704
+ msgid "Notification limit"
705
+ msgstr "通知限制"
706
+
707
+ #: ../settings.php:505
708
+ msgid "notification letters allowed per hour (0 means unlimited)"
709
+ msgstr "每小時允許的通知信(0表示無限制)"
710
+
711
+ #: ../settings.php:465
712
+ msgid "Prohibited usernames"
713
+ msgstr "被禁止的帳號"
714
+
715
+ #: ../settings.php:466
716
+ 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."
717
+ msgstr "清單中的帳號將不被允許登入或註冊,任何 IP嘗試使用這些帳號則會被立即封鎖。使用小寫逗號分隔項目。"
718
+
719
+ #: ../settings.php:474
720
+ msgid "in minutes (leave empty to use default WP value)"
721
+ msgstr "分鐘(未填寫則使用 WP預設值)"
722
+
723
+ #: ../settings.php:886
724
+ msgid "reCAPTCHA settings"
725
+ msgstr "reCAPTCHA設定"
726
+
727
+ #: ../settings.php:890
728
+ msgid "Site key"
729
+ msgstr "網站金鑰"
730
+
731
+ #: ../settings.php:894
732
+ msgid "Secret key"
733
+ msgstr "密鑰"
734
+
735
+ #: ../settings.php:904
736
+ msgid "Enable reCAPTCHA for WordPress registration form"
737
+ msgstr "為 WordPress註冊表單啟用 reCAPTCHA"
738
+
739
+ #: ../settings.php:913
740
+ msgid "Lost password form"
741
+ msgstr "忘記密碼表單"
742
+
743
+ #: ../settings.php:923
744
+ msgid "Login form"
745
+ msgstr "登入表單"
746
+
747
+ #: ../settings.php:924
748
+ msgid "Enable reCAPTCHA for WordPress login form"
749
+ msgstr "為 WordPress登入表單啟用 reCAPTCHA"
750
+
751
+ #: ../settings.php:887
752
+ msgid "Before you can start using reCAPTCHA, you have to obtain Site key and Secret key on the Google website"
753
+ msgstr "在開始使用 reCAPTCHA前,你必須在 Google網站取得網站金鑰與密鑰"
754
+
755
+ #: ../cerber-lab.php:774 ../settings.php:720 ../settings.php:887
756
+ msgid "Know more"
757
+ msgstr "了解更多"
758
+
759
+ #: ../common.php:1231
760
+ msgid "User created"
761
+ msgstr "已建立使用者"
762
+
763
+ #: ../common.php:1232
764
+ msgid "User registered"
765
+ msgstr "已註冊的使用者"
766
+
767
+ #: ../common.php:1259
768
+ msgid "reCAPTCHA verification failed"
769
+ msgstr "reCAPTCHA驗證失敗"
770
+
771
+ #: ../common.php:1260
772
+ msgid "reCAPTCHA settings are incorrect"
773
+ msgstr "reCAPTCHA設定錯誤"
774
+
775
+ #: ../common.php:1263 ../common.php:1358
776
+ msgid "Attempt to access prohibited URL"
777
+ msgstr "嘗試存取禁止的網址"
778
+
779
+ #: ../common.php:1265 ../common.php:1338
780
+ msgid "Attempt to log in with prohibited username"
781
+ msgstr "嘗試登入禁止的使用者帳號"
782
+
783
+ #: ../settings.php:296
784
+ msgid "Cerber Lab connection"
785
+ msgstr "Cerber研究室連線"
786
+
787
+ #: ../settings.php:297
788
+ msgid "Send malicious IP addresses to the Cerber Lab"
789
+ msgstr "傳送惡意 IP位置到 Cerber研究室"
790
+
791
+ #: ../settings.php:301
792
+ msgid "Cerber Lab protocol"
793
+ msgstr "Cerber研究室通訊協定"
794
+
795
+ #: ../settings.php:834 ../settings.php:903
796
+ msgid "Registration form"
797
+ msgstr "註冊表單"
798
+
799
+ #: ../settings.php:909
800
+ msgid "Enable reCAPTCHA for WooCommerce registration form"
801
+ msgstr "為 WooCommerce註冊表單啟用 reCAPTCHA"
802
+
803
+ #: ../settings.php:914
804
+ msgid "Enable reCAPTCHA for WordPress lost password form"
805
+ msgstr "為 WordPress忘記密碼表單啟用 reCAPTCHA"
806
+
807
+ #: ../settings.php:919
808
+ msgid "Enable reCAPTCHA for WooCommerce lost password form"
809
+ msgstr "為 WooCommerce忘記密碼表單啟用 reCAPTCHA"
810
+
811
+ #: ../settings.php:929
812
+ msgid "Enable reCAPTCHA for WooCommerce login form"
813
+ msgstr "為 WooCommerce登入表單啟用 reCAPTCHA"
814
+
815
+ #: ../common.php:1261
816
+ msgid "Request to the Google reCAPTCHA service failed"
817
+ msgstr "發送請求至 Google reCAPTCHA服務失敗"
818
+
819
+ #: ../dashboard.php:886 ../dashboard.php:2277
820
+ msgid "View all"
821
+ msgstr "檢視全部"
822
+
823
+ #: ../dashboard.php:2280
824
+ msgid "Recently locked out IP addresses"
825
+ msgstr "最近鎖定的 IP"
826
+
827
+ #: ../cerber-lab.php:772
828
+ msgid "OK, nail them all"
829
+ msgstr "好的,完成它們"
830
+
831
+ #: ../cerber-lab.php:773
832
+ msgid "NO, maybe later"
833
+ msgstr "不,也許稍後"
834
+
835
+ #: ../dashboard.php:54 ../dashboard.php:1711 ../dashboard.php:2622 ../dashboard.
836
+ #: php:4460
837
+ msgid "Dashboard"
838
+ msgstr "控制台"
839
+
840
+ #: ../cerber-lab.php:770
841
+ msgid "Want to make WP Cerber even more powerful?"
842
+ msgstr "想讓 WP Cerber更好用嗎?"
843
+
844
+ #: ../cerber-lab.php:771
845
+ 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."
846
+ msgstr "允許 WP Cerber傳送鎖定的惡意 IP至 Cerber研究室,這能協助外掛團隊開發新的演算法以協助 WP Cerber防護 WordPress面對每天出現的新威脅和殭屍網路。你能在任何時候從外掛的設定中停用傳送。"
847
+
848
+ #: ../dashboard.php:3526
849
+ msgid "IP address"
850
+ msgstr "IP位置"
851
+
852
+ #: ../dashboard.php:809
853
+ msgid "User login"
854
+ msgstr "使用者登入"
855
+
856
+ #: ../dashboard.php:810 ../dashboard.php:3532
857
+ msgid "User ID"
858
+ msgstr "使用者 ID"
859
+
860
+ #: ../dashboard.php:1099 ../dashboard.php:3967
861
+ msgid "Export"
862
+ msgstr "匯出"
863
+
864
+ #: ../dashboard.php:1122
865
+ msgid "Search for IP or username"
866
+ msgstr "搜尋 IP或帳號"
867
+
868
+ #: ../dashboard.php:1123 ../dashboard.php:1125
869
+ msgid "Filter"
870
+ msgstr "篩選器"
871
+
872
+ #: ../dashboard.php:54
873
+ msgid "Cerber Dashboard"
874
+ msgstr "Cerber控制台"
875
+
876
+ #: ../dashboard.php:75
877
+ msgid "Cerber tools"
878
+ msgstr "Cerber工具"
879
+
880
+ #: ../cerber-tools.php:233
881
+ msgid "Unsubscribe"
882
+ msgstr "取消訂閱"
883
+
884
+ #: ../dashboard.php:2546
885
+ msgid "You've subscribed"
886
+ msgstr "你已訂閱"
887
+
888
+ #: ../dashboard.php:2551
889
+ msgid "You've unsubscribed"
890
+ msgstr "你已取消訂閱"
891
+
892
+ #: ../cerber-load.php:3889 ../cerber-load.php:3890
893
+ msgid "A new activity has been recorded"
894
+ msgstr "已記錄到新活動"
895
+
896
+ #: ../cerber-load.php:4516 ../cerber-users.php:752
897
+ msgid "User"
898
+ msgstr "使用者"
899
+
900
+ #: ../cerber-load.php:4524
901
+ msgid "Search string"
902
+ msgstr "搜尋字串"
903
+
904
+ #: ../settings.php:316
905
+ msgid "Preferences"
906
+ msgstr "偏好設定"
907
+
908
+ #: ../settings.php:324
909
+ msgid "Date format"
910
+ msgstr "日期格式"
911
+
912
+ #: ../settings.php:325
913
+ msgid "if empty, the default format %s will be used"
914
+ msgstr "若未填寫,將會使用預設格式 %s"
915
+
916
+ #: ../settings.php:515
917
+ msgid "Push notifications"
918
+ msgstr "推播通知"
919
+
920
+ #: ../settings.php:489
921
+ msgid "Email notifications"
922
+ msgstr "Email通知"
923
+
924
+ #: ../settings.php:497 ../settings.php:541 ../settings.php:615 ../settings.php:751
925
+ msgid "Use comma to specify multiple values"
926
+ msgstr "使用小寫逗號分隔多個值"
927
+
928
+ #: ../settings.php:127
929
+ msgid "All connected devices"
930
+ msgstr "全部連線的裝置"
931
+
932
+ #: ../settings.php:130
933
+ msgid "No devices found"
934
+ msgstr "未找到裝置"
935
+
936
+ #: ../settings.php:134
937
+ msgid "Not available"
938
+ msgstr "尚不可用"
939
+
940
+ #: ../common.php:1257
941
+ msgid "Password reset requested"
942
+ msgstr "密碼重設請求"
943
+
944
+ #: ../common.php:1339
945
+ msgid "Limit on failed reCAPTCHA verifications is reached"
946
+ msgstr "已達到 reCAPTCHA驗證失敗的限制"
947
+
948
+ #: ../common.php:1489
949
+ msgid "%s ago"
950
+ msgstr "%s之前"
951
+
952
+ #: ../settings.php:180
953
+ msgid "Apply limit login rules to IP addresses in the White IP Access List"
954
+ msgstr "套用登入限制規則至 IP存取白名單"
955
+
956
+ #: ../settings.php:210
957
+ msgid "Display 404 page"
958
+ msgstr "顯示 404頁面"
959
+
960
+ #: ../settings.php:898
961
+ msgid "Invisible reCAPTCHA"
962
+ msgstr "隱藏式 reCAPTCHA"
963
+
964
+ #: ../settings.php:899
965
+ msgid "Enable invisible reCAPTCHA"
966
+ msgstr "啟用隱藏式 reCAPTCHA"
967
+
968
+ #: ../settings.php:899
969
+ msgid "(do not enable it unless you get and enter the Site and Secret keys for the invisible version)"
970
+ msgstr "(除非你取得隱藏版並已輸入網站與密鑰否則不要啟用)"
971
+
972
+ #: ../settings.php:934
973
+ msgid "Enable reCAPTCHA for WordPress comment form"
974
+ msgstr "對 WordPress留言表單啟用 reCAPTCHA"
975
+
976
+ #: ../settings.php:939
977
+ msgid "Disable reCAPTCHA for logged in users"
978
+ msgstr "對登入的使用者停用 reCAPTCHA"
979
+
980
+ #: ../settings.php:943
981
+ msgid "Limit attempts"
982
+ msgstr "限制嘗試次數"
983
+
984
+ #: ../settings.php:944
985
+ msgid "Lock out IP address for %s minutes after %s failed attempts within %s minutes"
986
+ msgstr "鎖定 IP %s分鐘在 %s次嘗試登入失敗於 %s分鐘內"
987
+
988
+ #: ../settings.php:258
989
+ 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."
990
+ msgstr "在堡壘模式中除了 IP存取白名單中的 IP外,無人可登入。已開始的使用者通信將不受影響。"
991
+
992
+ #: ../dashboard.php:806 ../dashboard.php:1075
993
+ msgid "Event"
994
+ msgstr "事件"
995
+
996
+ #: ../common.php:266
997
+ msgid "Spam comments denied"
998
+ msgstr "則已拒絕的垃圾留言"
999
+
1000
+ #: ../common.php:268
1001
+ msgid "Malicious IP addresses detected"
1002
+ msgstr "次檢測到惡意 IP"
1003
+
1004
+ #: ../common.php:269
1005
+ msgid "Lockouts occurred"
1006
+ msgstr "次發生鎖定"
1007
+
1008
+ #: ../cerber-load.php:1465 ../cerber-load.php:1471 ../cerber-load.php:1496 ..
1009
+ #: /cerber-load.php:1503
1010
+ msgid "You are not allowed to register."
1011
+ msgstr "你不被允許註冊。"
1012
+
1013
+ #: ../common.php:1242
1014
+ msgid "Spam comment denied"
1015
+ msgstr "已拒絕垃圾留言"
1016
+
1017
+ #: ../common.php:1267
1018
+ msgid "Attempt to log in denied"
1019
+ msgstr "已拒絕登入嘗試"
1020
+
1021
+ #: ../common.php:1268
1022
+ msgid "Attempt to register denied"
1023
+ msgstr "已拒絕註冊嘗試"
1024
+
1025
+ #: ../common.php:263
1026
+ msgid "Malicious activities mitigated"
1027
+ msgstr "項已緩解的惡意活動"
1028
+
1029
+ #: ../dashboard.php:70
1030
+ msgid "Cerber antispam settings"
1031
+ msgstr "Cerber垃圾留言防護設定"
1032
+
1033
+ #: ../dashboard.php:70 ../cerber-load.php:4809 ../settings.php:933
1034
+ msgid "Antispam"
1035
+ msgstr "垃圾留言防護"
1036
+
1037
+ #: ../settings.php:826
1038
+ msgid "Cerber antispam engine"
1039
+ msgstr "Cerber垃圾留言防護引擎"
1040
+
1041
+ #: ../settings.php:829
1042
+ msgid "Comment form"
1043
+ msgstr "留言表單"
1044
+
1045
+ #: ../settings.php:830
1046
+ msgid "Protect comment form with bot detection engine"
1047
+ msgstr "使用機器人檢測引擎防護留言表單"
1048
+
1049
+ #: ../settings.php:835
1050
+ msgid "Protect registration form with bot detection engine"
1051
+ msgstr "使用機器人檢測引擎防護註冊表單"
1052
+
1053
+ #: ../dashboard.php:4614
1054
+ msgid "Export & Import"
1055
+ msgstr "匯出與匯入"
1056
+
1057
+ #: ../dashboard.php:4615
1058
+ msgid "Diagnostic"
1059
+ msgstr "診斷"
1060
+
1061
+ #: ../dashboard.php:4618
1062
+ msgid "License"
1063
+ msgstr "授權"
1064
+
1065
+ #: ../dashboard.php:4506
1066
+ msgid "Antispam and bot detection settings"
1067
+ msgstr "垃圾留言防護與機器人檢測設定"
1068
+
1069
+ #: ../cerber-load.php:1790
1070
+ msgid "Sorry, human verification failed."
1071
+ msgstr "很抱歉,真人驗證失敗。"
1072
+
1073
+ #: ../common.php:1340
1074
+ msgid "Bot activity is detected"
1075
+ msgstr "已檢測到機器人活動"
1076
+
1077
+ #: ../settings.php:868
1078
+ msgid "Comment processing"
1079
+ msgstr "留言處理中"
1080
+
1081
+ #: ../settings.php:871
1082
+ msgid "If a spam comment detected"
1083
+ msgstr "若檢測到垃圾留言"
1084
+
1085
+ #: ../settings.php:876
1086
+ msgid "Trash spam comments"
1087
+ msgstr "回收桶垃圾留言"
1088
+
1089
+ #: ../settings.php:878
1090
+ msgid "Move spam comments to trash after"
1091
+ msgstr "移動垃圾留言至回收桶於"
1092
+
1093
+ #: ../common.php:1243
1094
+ msgid "Spam form submission denied"
1095
+ msgstr "禁止送出垃圾留言"
1096
+
1097
+ #: ../settings.php:839
1098
+ msgid "Other forms"
1099
+ msgstr "其他表單"
1100
+
1101
+ #: ../settings.php:840
1102
+ msgid "Protect all forms on the website with bot detection engine"
1103
+ msgstr "使用機器人檢測引擎防護網站全部表單"
1104
+
1105
+ #: ../settings.php:846
1106
+ msgid "Adjust antispam engine"
1107
+ msgstr "調整垃圾留言防護引擎"
1108
+
1109
+ #: ../settings.php:849
1110
+ msgid "Safe mode"
1111
+ msgstr "安全模式"
1112
+
1113
+ #: ../settings.php:850
1114
+ msgid "Use less restrictive policies (allow AJAX)"
1115
+ msgstr "使用較少限制的策略(允許 AJAX)"
1116
+
1117
+ #: ../dashboard.php:907 ../dashboard.php:1674 ../dashboard.php:3935 ../settings.
1118
+ #: php:386 ../settings.php:854
1119
+ msgid "Logged in users"
1120
+ msgstr "登入的使用者"
1121
+
1122
+ #: ../settings.php:855
1123
+ msgid "Disable bot detection engine for logged in users"
1124
+ msgstr "為登入的使用者停用機器人檢測引擎"
1125
+
1126
+ #: ../dashboard.php:186 ../dashboard.php:1073
1127
+ msgid "Country"
1128
+ msgstr "國家"
1129
+
1130
+ #: ../dashboard.php:1111
1131
+ msgid "All events"
1132
+ msgstr "全部事件"
1133
+
1134
+ #: ../dashboard.php:60
1135
+ msgid "Cerber Security Rules"
1136
+ msgstr "Cerber安全性規則"
1137
+
1138
+ #: ../dashboard.php:60 ../dashboard.php:4562
1139
+ msgid "Security Rules"
1140
+ msgstr "安全性規則"
1141
+
1142
+ #: ../dashboard.php:1533
1143
+ msgid "Failed login attempts"
1144
+ msgstr "已失敗的登入嘗試"
1145
+
1146
+ #: ../dashboard.php:1490 ../dashboard.php:1534
1147
+ msgid "Registered"
1148
+ msgstr "已註冊"
1149
+
1150
+ #: ../dashboard.php:1604 ../cerber-users.php:51 ../cerber-users.php:889
1151
+ msgid "You"
1152
+ msgstr "你"
1153
+
1154
+ #: ../common.php:267
1155
+ msgid "Spam form submissions denied"
1156
+ msgstr "次禁止傳送垃圾留言"
1157
+
1158
+ #: ../dashboard.php:2316 ../cerber-load.php:3880 ../cerber-load.php:4798
1159
+ msgid "Getting Started Guide"
1160
+ msgstr "開始導覽"
1161
+
1162
+ #: ../dashboard.php:4564
1163
+ msgid "Countries"
1164
+ msgstr "國家"
1165
+
1166
+ #: ../dashboard.php:3263
1167
+ msgid "Permitted for one country"
1168
+ msgid_plural "Permitted for %d countries"
1169
+ msgstr[0] "允許一個國家\n"
1170
+ "允許 %d個國家"
1171
+
1172
+ #: ../dashboard.php:3274
1173
+ msgid "No rule"
1174
+ msgstr "無規則"
1175
+
1176
+ #: ../dashboard.php:3435
1177
+ msgid "Security rules have been updated"
1178
+ msgstr "已更新安全性規則"
1179
+
1180
+ #. URI of the plugin
1181
+ #:
1182
+ msgid "https://wpcerber.com"
1183
+ msgstr "https://wpcerber.com"
1184
+
1185
+ #: ../common.php:1244
1186
+ msgid "Form submission denied"
1187
+ msgstr "已禁止傳送表單"
1188
+
1189
+ #: ../common.php:1245
1190
+ msgid "Comment denied"
1191
+ msgstr "已禁止留言"
1192
+
1193
+ #: ../common.php:1273
1194
+ msgid "Request to REST API denied"
1195
+ msgstr "已禁止 REST-API請求"
1196
+
1197
+ #: ../common.php:1274
1198
+ msgid "XML-RPC request denied"
1199
+ msgstr "已禁止 XML-RPC請求"
1200
+
1201
+ #: ../common.php:1289
1202
+ msgid "Bot detected"
1203
+ msgstr "已檢測到機器人"
1204
+
1205
+ #: ../common.php:1290
1206
+ msgid "Citadel mode is active"
1207
+ msgstr "已啟用堡壘模式"
1208
+
1209
+ #: ../common.php:1295
1210
+ msgid "Malicious activity detected"
1211
+ msgstr "檢測到惡意活動"
1212
+
1213
+ #: ../common.php:1296
1214
+ msgid "Blocked by country rule"
1215
+ msgstr "已依據國家規則封鎖"
1216
+
1217
+ #: ../common.php:1297
1218
+ msgid "Limit reached"
1219
+ msgstr "已達到限制"
1220
+
1221
+ #: ../common.php:1298
1222
+ msgid "Multiple suspicious activities"
1223
+ msgstr "多重可疑活動"
1224
+
1225
+ #: ../common.php:1341
1226
+ msgid "Multiple suspicious activities were detected"
1227
+ msgstr "檢測到多重可疑活動"
1228
+
1229
+ #: ../settings.php:387
1230
+ msgid "Allow REST API for logged in users"
1231
+ msgstr "允許登入的使用者使用 REST API"
1232
+
1233
+ #: ../settings.php:399
1234
+ msgid "Specify REST API namespaces to be allowed if REST API is disabled. One string per line."
1235
+ msgstr "若停用 REST API,則允許使用 REST API命名空間。一行一個字串。"
1236
+
1237
+ #: ../settings.php:442
1238
+ msgid "Registration limit"
1239
+ msgstr "註冊限制"
1240
+
1241
+ #: ../settings.php:480
1242
+ msgid "Sort users in dashboard"
1243
+ msgstr "在控制台排序使用者"
1244
+
1245
+ #: ../settings.php:481
1246
+ msgid "by date of registration"
1247
+ msgstr "依據註冊日期"
1248
+
1249
+ #: ../settings.php:859
1250
+ msgid "Query whitelist"
1251
+ msgstr "字串白名單"
1252
+
1253
+ #: ../settings.php:1289
1254
+ msgid "%s allowed registrations in %s minutes from one IP"
1255
+ msgstr "一個 IP僅允許 %s次註冊於 %s分鐘內"
1256
+
1257
+ #: ../dashboard.php:3243
1258
+ msgid "Start typing here to find a country"
1259
+ msgstr "在這裡輸入以尋找國家"
1260
+
1261
+ #: ../dashboard.php:3358
1262
+ msgid "Click on a country name to add it to the list of selected countries"
1263
+ msgstr "點選國家名稱以新增至選取的國家至清單"
1264
+
1265
+ #: ../dashboard.php:3390
1266
+ msgid "Submit forms"
1267
+ msgstr "傳送表單"
1268
+
1269
+ #: ../dashboard.php:3391
1270
+ msgid "Post comments"
1271
+ msgstr "發布留言"
1272
+
1273
+ #: ../dashboard.php:3385
1274
+ msgid "Log in to the website"
1275
+ msgstr "登入此網站"
1276
+
1277
+ #: ../dashboard.php:3389
1278
+ msgid "Register on the website"
1279
+ msgstr "註冊此網站"
1280
+
1281
+ #: ../dashboard.php:3392
1282
+ msgid "Use XML-RPC"
1283
+ msgstr "使用 XML-RPC"
1284
+
1285
+ #: ../dashboard.php:3393
1286
+ msgid "Use REST API"
1287
+ msgstr "使用 REST API"
1288
+
1289
+ #: ../settings.php:873
1290
+ msgid "Deny it completely"
1291
+ msgstr "完整拒絕"
1292
+
1293
+ #: ../settings.php:873
1294
+ msgid "Mark it as spam"
1295
+ msgstr "標記為垃圾留言"
1296
+
1297
+ #: ../dashboard.php:2256
1298
+ msgid "in the last 24 hours"
1299
+ msgstr "最近 24小時"
1300
+
1301
+ #: ../dashboard.php:2623
1302
+ msgid "Main settings"
1303
+ msgstr "主設定"
1304
+
1305
+ #: ../settings.php:528
1306
+ msgid "Weekly reports"
1307
+ msgstr "每周報告"
1308
+
1309
+ #: ../settings.php:1485
1310
+ msgid "Sunday"
1311
+ msgstr "星期日"
1312
+
1313
+ #: ../settings.php:1486
1314
+ msgid "Monday"
1315
+ msgstr "星期一"
1316
+
1317
+ #: ../settings.php:1487
1318
+ msgid "Tuesday"
1319
+ msgstr "星期二"
1320
+
1321
+ #: ../settings.php:1488
1322
+ msgid "Wednesday"
1323
+ msgstr "星期三"
1324
+
1325
+ #: ../settings.php:1489
1326
+ msgid "Thursday"
1327
+ msgstr "星期四"
1328
+
1329
+ #: ../settings.php:1490
1330
+ msgid "Friday"
1331
+ msgstr "星期五"
1332
+
1333
+ #: ../settings.php:1491
1334
+ msgid "Saturday"
1335
+ msgstr "星期六"
1336
+
1337
+ #: ../settings.php:1554 ../settings.php:1555
1338
+ msgid "If you use a caching plugin, you have to add your new login URL to the list of pages not to cache."
1339
+ msgstr "若你有使用快取外掛,你必須將新的登入網址加入至不快取的清單中。"
1340
+
1341
+ #: ../cerber-load.php:3895
1342
+ msgid "Weekly report"
1343
+ msgstr "每周報告"
1344
+
1345
+ #: ../cerber-load.php:3898 ../cerber-load.php:3908
1346
+ msgid "To change reporting settings visit"
1347
+ msgstr "要變更報告設定請前往"
1348
+
1349
+ #: ../cerber-load.php:3931
1350
+ msgid "Your login page:"
1351
+ msgstr "你的登入頁面:"
1352
+
1353
+ #: ../cerber-load.php:3935
1354
+ msgid "Your license is valid until"
1355
+ msgstr "你的授權有效至"
1356
+
1357
+ #: ../cerber-load.php:4041
1358
+ msgid "Activity details"
1359
+ msgstr "活動詳細資訊"
1360
+
1361
+ #: ../settings.php:1521
1362
+ msgid "Click to send now"
1363
+ msgstr "點選此處立即傳送"
1364
+
1365
+ #: ../cerber-load.php:833
1366
+ msgid "> > > Translator of WP Cerber? To get the PRO license for free, drop your contacts here: https://wpcerber.com/contact/"
1367
+ msgstr "> > > WP Cerber的譯者嗎?可以獲得免費的進階版授權,請在這裡與我們聯繫: https://wpcerber.com/contact/"
1368
+
1369
+ #: ../dashboard.php:554
1370
+ msgid "Email has been sent to"
1371
+ msgstr "已傳送郵件至"
1372
+
1373
+ #: ../dashboard.php:557
1374
+ msgid "Unable to send email to"
1375
+ msgstr "未能傳送郵件至"
1376
+
1377
+ #: ../dashboard.php:3266
1378
+ msgid "Not permitted for one country"
1379
+ msgid_plural "Not permitted for %d countries"
1380
+ msgstr[0] "不允許一個國家\n"
1381
+ "不允許 %d個國家"
1382
+
1383
+ #: ../dashboard.php:3362
1384
+ msgctxt "to is a marker of infinitive, e.g. \"to use it\""
1385
+ msgid "Selected countries are permitted to %s, other countries are not permitted to"
1386
+ msgstr "允許選擇的國家 %s,其他國家則不允許"
1387
+
1388
+ #: ../dashboard.php:3365
1389
+ msgctxt "to is a marker of infinitive, e.g. \"to use it\""
1390
+ msgid "Selected countries are not permitted to %s, other countries are permitted to"
1391
+ msgstr "不允許選擇的國家 %s,其他國家則允許"
1392
+
1393
+ #: ../cerber-load.php:4029
1394
+ msgid "Weekly Report"
1395
+ msgstr "每周報告"
1396
+
1397
+ #: ../settings.php:213
1398
+ msgid "Use 404 template from the active theme"
1399
+ msgstr "從啟用的布景主題中使用 404樣板"
1400
+
1401
+ #: ../settings.php:214
1402
+ msgid "Display simple 404 page"
1403
+ msgstr "顯示簡潔 404頁面"
1404
+
1405
+ #: ../settings.php:860
1406
+ msgid "Enter a part of query string or query path to exclude a request from inspection by the engine. One item per line."
1407
+ msgstr "要從請求檢驗中排除請輸入部分查詢字串或查詢的目錄。一行一個項目。"
1408
+
1409
+ #: ../settings.php:540 ../settings.php:750
1410
+ msgid "if empty, email from notification settings will be used"
1411
+ msgstr "若未填寫,將會使用通知設定中的郵件"
1412
+
1413
+ #: ../settings.php:531
1414
+ msgid "Enable reporting"
1415
+ msgstr "啟用報告"
1416
+
1417
+ #: ../cerber-load.php:3959
1418
+ msgid "Your last sign-in was %s from %s"
1419
+ msgstr "你上次登入於 %s 來自 %s"
1420
+
1421
+ #: ../dashboard.php:274
1422
+ msgid "IP address, IPv4 address range or subnet"
1423
+ msgstr "IP, IPv4範圍或子網路"
1424
+
1425
+ #: ../dashboard.php:276
1426
+ msgid "Optional comment for this entry"
1427
+ msgstr "此項目的額外的留言"
1428
+
1429
+ #: ../dashboard.php:315
1430
+ msgid "You cannot add your IP address or network"
1431
+ msgstr "你不能新增自己的 IP或網路"
1432
+
1433
+ #: ../settings.php:458 ../settings.php:466
1434
+ msgid "To specify a REGEX pattern wrap a pattern in two forward slashes."
1435
+ msgstr "要使用正規表示法請將整行包含於兩個斜線中。"
1436
+
1437
+ #: ../dashboard.php:56
1438
+ msgid "Cerber Traffic Inspector"
1439
+ msgstr "Cerber流量檢驗"
1440
+
1441
+ #: ../dashboard.php:56 ../dashboard.php:1681 ../dashboard.php:4526
1442
+ msgid "Traffic Inspector"
1443
+ msgstr "流量檢驗"
1444
+
1445
+ #: ../dashboard.php:1713 ../cerber-users.php:923
1446
+ msgid "Traffic"
1447
+ msgstr "流量"
1448
+
1449
+ #: ../dashboard.php:3903
1450
+ msgid "Request"
1451
+ msgstr "請求"
1452
+
1453
+ #: ../dashboard.php:3905 ../cerber-users.php:757
1454
+ msgid "Host Info"
1455
+ msgstr "主機資訊"
1456
+
1457
+ #: ../dashboard.php:3906
1458
+ msgid "User Agent"
1459
+ msgstr "使用者代理"
1460
+
1461
+ #: ../dashboard.php:3931
1462
+ msgid "All requests"
1463
+ msgstr "全部請求"
1464
+
1465
+ #: ../dashboard.php:908 ../dashboard.php:3936
1466
+ msgid "Not logged in visitors"
1467
+ msgstr "未登入的訪客"
1468
+
1469
+ #: ../dashboard.php:3939
1470
+ msgid "Form submissions"
1471
+ msgstr "表單傳送"
1472
+
1473
+ #: ../dashboard.php:3941
1474
+ msgid "Page Not Found"
1475
+ msgstr "沒有符合條件的頁面"
1476
+
1477
+ #: ../dashboard.php:3950
1478
+ msgid "Longer than"
1479
+ msgstr "長於"
1480
+
1481
+ #: ../dashboard.php:3973
1482
+ msgid "Refresh"
1483
+ msgstr "更新"
1484
+
1485
+ #: ../common.php:193
1486
+ msgid "Check for requests"
1487
+ msgstr "檢查請求"
1488
+
1489
+ #: ../common.php:1697
1490
+ msgid "Not specified"
1491
+ msgstr "未指定"
1492
+
1493
+ #: ../settings.php:596
1494
+ msgid "Logging mode"
1495
+ msgstr "記錄模式"
1496
+
1497
+ #: ../settings.php:599
1498
+ msgid "Logging disabled"
1499
+ msgstr "已停用記錄"
1500
+
1501
+ #: ../settings.php:600
1502
+ msgid "Smart"
1503
+ msgstr "智慧型"
1504
+
1505
+ #: ../settings.php:601
1506
+ msgid "All traffic"
1507
+ msgstr "全部流量"
1508
+
1509
+ #: ../settings.php:605
1510
+ msgid "Ignore crawlers"
1511
+ msgstr "忽略爬蟲"
1512
+
1513
+ #: ../settings.php:613
1514
+ msgid "Mask these form fields"
1515
+ msgstr "隱藏這些表單欄位"
1516
+
1517
+ #: ../settings.php:638
1518
+ msgid "milliseconds"
1519
+ msgstr "毫秒"
1520
+
1521
+ #: ../settings.php:553
1522
+ msgid "Enable traffic inspection"
1523
+ msgstr "啟用流量檢驗"
1524
+
1525
+ #: ../settings.php:593
1526
+ msgid "Logging"
1527
+ msgstr "記錄"
1528
+
1529
+ #: ../settings.php:609
1530
+ msgid "Save request fields"
1531
+ msgstr "儲存請求欄位"
1532
+
1533
+ #: ../settings.php:637
1534
+ msgid "Page generation time threshold"
1535
+ msgstr "頁面建立時間門檻"
1536
+
1537
+ #: ../dashboard.php:3923
1538
+ msgid "No requests have been logged."
1539
+ msgstr "未記錄到請求。"
1540
+
1541
+ #: ../dashboard.php:1680
1542
+ msgid "enabled"
1543
+ msgstr "已啟用"
1544
+
1545
+ #: ../dashboard.php:1685
1546
+ msgid "no connection"
1547
+ msgstr "無連線"
1548
+
1549
+ #: ../dashboard.php:1480
1550
+ msgid "Last seen"
1551
+ msgstr "上次檢視"
1552
+
1553
+ #: ../common.php:1269 ../common.php:1342
1554
+ msgid "Probing for vulnerable PHP code"
1555
+ msgstr "檢測 PHP代碼弱點"
1556
+
1557
+ #: ../dashboard.php:4264
1558
+ msgid "Any"
1559
+ msgstr "任何"
1560
+
1561
+ #: ../cerber-load.php:3678
1562
+ msgid "We're sorry, you are not allowed to proceed"
1563
+ msgstr "很抱歉,你不被允許繼續"
1564
+
1565
+ #: ../settings.php:566
1566
+ msgid "Request whitelist"
1567
+ msgstr "請求白名單"
1568
+
1569
+ #: ../settings.php:570
1570
+ msgid "Enter a request URI to exclude the request from inspection. One item per line."
1571
+ msgstr "從檢驗中輸入要排除的 URI請求,一行一個項目。"
1572
+
1573
+ #: ../settings.php:620
1574
+ msgid "Save request headers"
1575
+ msgstr "儲存請求標頭"
1576
+
1577
+ #: ../settings.php:625
1578
+ msgid "Save $_SERVER"
1579
+ msgstr "儲存 $_SERVER"
1580
+
1581
+ #: ../settings.php:629
1582
+ msgid "Save request cookies"
1583
+ msgstr "儲存請求 cookies"
1584
+
1585
+ #: ../settings.php:346
1586
+ msgid "Protect admin scripts"
1587
+ msgstr "管理員語法防護"
1588
+
1589
+ #: ../settings.php:347
1590
+ msgid "Block unauthorized access to load-scripts.php and load-styles.php"
1591
+ msgstr "封鎖對 load-scripts.php和 load-styles.php 的未授權存取"
1592
+
1593
+ #: ../common.php:2593
1594
+ msgid "Unable to create the directory"
1595
+ msgstr "無法建立資料夾"
1596
+
1597
+ #: ../common.php:2598
1598
+ msgid "Destination folder access denied"
1599
+ msgstr "已禁止存取目的地目錄"
1600
+
1601
+ #: ../common.php:2601
1602
+ msgid "File not found"
1603
+ msgstr "找不到檔案"
1604
+
1605
+ #: ../common.php:2604
1606
+ msgid "Unable to copy the file"
1607
+ msgstr "無法複製檔案"
1608
+
1609
+ #: ../common.php:2610
1610
+ msgid "Unable to delete the file"
1611
+ msgstr "無法刪除檔案"
1612
+
1613
+ #: ../settings.php:150
1614
+ msgid "Plugin initialization"
1615
+ msgstr "外掛初始化"
1616
+
1617
+ #: ../settings.php:153
1618
+ msgid "Load security engine"
1619
+ msgstr "載入安全引擎"
1620
+
1621
+ #: ../settings.php:156
1622
+ msgid "Legacy mode"
1623
+ msgstr "傳統模式"
1624
+
1625
+ #: ../settings.php:157
1626
+ msgid "Standard mode"
1627
+ msgstr "標準模式"
1628
+
1629
+ #: ../settings.php:1532
1630
+ msgid "Plugin initialization mode has not been changed"
1631
+ msgstr "已變更外掛初始化模式"
1632
+
1633
+ #. Description of the plugin
1634
+ #:
1635
+ 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>."
1636
+ msgstr ""
1637
+
1638
+ #: ../common.php:1271
1639
+ msgid "File upload denied"
1640
+ msgstr "已禁止上傳檔案"
1641
+
1642
+ #: ../settings.php:570
1643
+ msgid "To specify a REGEX pattern, enclose a whole line in two braces."
1644
+ msgstr "要使用正規表示法請將整行包含於大括弧中。"
1645
+
1646
+ #: ../settings.php:143
1647
+ msgid "Be careful about enabling these options."
1648
+ msgstr "請小心使用這些設定。"
1649
+
1650
+ #: ../settings.php:143
1651
+ msgid "If you forget your Custom login URL, you will be unable to log in."
1652
+ msgstr "如果你忘記自訂登入網址,將無法登入。"
1653
+
1654
+ #: ../dashboard.php:66 ../dashboard.php:4577
1655
+ msgid "Site Integrity"
1656
+ msgstr "網站完整性"
1657
+
1658
+ #: ../dashboard.php:1698 ../dashboard.php:1700 ../cerber-users.php:20 ../cerber-
1659
+ #: users.php:431 ../settings.php:556 ../settings.php:581 ../settings.php:1005 ..
1660
+ #: /cerber-scanner.php:1625
1661
+ msgid "Disabled"
1662
+ msgstr "已停用"
1663
+
1664
+ #: ../dashboard.php:1699 ../cerber-scanner.php:1066
1665
+ msgid "Quick Scan"
1666
+ msgstr "快速掃描"
1667
+
1668
+ #: ../dashboard.php:1701 ../cerber-scanner.php:1066
1669
+ msgid "Full Scan"
1670
+ msgstr "完整掃描"
1671
+
1672
+ #. Name of the plugin
1673
+ #:
1674
+ msgid "WP Cerber Security, Antispam & Malware Scan"
1675
+ msgstr "WP Cerber安全性、垃圾留言防護與惡意軟體掃描"
1676
+
1677
+ #: ../common.php:1299
1678
+ msgid "Denied"
1679
+ msgstr "已禁止"
1680
+
1681
+ #: ../settings.php:179 ../settings.php:417 ../settings.php:562
1682
+ msgid "Use White IP Access List"
1683
+ msgstr "使用 IP存取白名單"
1684
+
1685
+ #: ../settings.php:200
1686
+ msgid "Disable dashboard redirection"
1687
+ msgstr "停用控制台重定向"
1688
+
1689
+ #: ../settings.php:201
1690
+ msgid "Disable automatic redirection to the login page when /wp-admin/ is requested by an unauthorized request"
1691
+ msgstr "停用來自未認證的 /wp-admin/直接請求,會自動重定向至登入頁面的功能"
1692
+
1693
+ #: ../settings.php:650
1694
+ msgid "Scanner settings"
1695
+ msgstr "掃描設定"
1696
+
1697
+ #: ../settings.php:653
1698
+ msgid "Custom signatures"
1699
+ msgstr "自訂簽章"
1700
+
1701
+ #: ../settings.php:657
1702
+ msgid "Specify custom PHP code signatures. One item per line. To specify a REGEX pattern, enclose a whole line in two braces."
1703
+ msgstr "指定自訂 PHP代碼簽章。一行一個項目。要使用正規表示法請將整行包含於大括弧中。"
1704
+
1705
+ #: ../settings.php:660
1706
+ msgid "Unwanted file extensions"
1707
+ msgstr "不需要的檔案副檔名"
1708
+
1709
+ #: ../settings.php:664
1710
+ msgid "Specify file extensions to search for. Full scan only. Use comma to separate items."
1711
+ msgstr "只能在完整掃描,指定搜尋的檔案副檔名。使用小寫逗號分隔項目。"
1712
+
1713
+ #: ../settings.php:667
1714
+ msgid "Directories to exclude"
1715
+ msgstr "排除資料夾"
1716
+
1717
+ #: ../settings.php:671
1718
+ msgid "Specify directories to exclude from scanning. Use absolute paths. One item per line."
1719
+ msgstr "指定要排除掃描的資料夾。使用絕對路徑,一行一個項目。"
1720
+
1721
+ #: ../settings.php:682
1722
+ msgid "Scan temporary directory"
1723
+ msgstr "掃描暫存資料夾"
1724
+
1725
+ #: ../settings.php:686
1726
+ msgid "Scan session directory"
1727
+ msgstr "掃描通信資料夾"
1728
+
1729
+ #: ../settings.php:694
1730
+ msgid "Delete quarantined files after"
1731
+ msgstr "刪除隔離區檔案於"
1732
+
1733
+ #: ../settings.php:707
1734
+ msgid "Launch Quick Scan"
1735
+ msgstr "執行快速掃描"
1736
+
1737
+ #: ../cerber-scanner.php:1626
1738
+ msgid "Every hour"
1739
+ msgstr "每小時"
1740
+
1741
+ #: ../cerber-scanner.php:1627
1742
+ msgid "Every 3 hours"
1743
+ msgstr "每 3小時"
1744
+
1745
+ #: ../cerber-scanner.php:1628
1746
+ msgid "Every 6 hours"
1747
+ msgstr "每 6小時"
1748
+
1749
+ #: ../settings.php:712
1750
+ msgid "Launch Full Scan"
1751
+ msgstr "執行完整掃描"
1752
+
1753
+ #: ../settings.php:726 ../settings.php:771
1754
+ msgid "Low severity"
1755
+ msgstr "低嚴重性"
1756
+
1757
+ #: ../settings.php:727 ../settings.php:772
1758
+ msgid "Medium severity"
1759
+ msgstr "中度嚴重性"
1760
+
1761
+ #: ../settings.php:728 ../settings.php:773
1762
+ msgid "High severity"
1763
+ msgstr "高嚴重性"
1764
+
1765
+ #: ../settings.php:723
1766
+ msgid "Report an issue if any of the following is true"
1767
+ msgstr "若符合以下則報告問題"
1768
+
1769
+ #: ../settings.php:732
1770
+ msgid "Send email report"
1771
+ msgstr "傳送報告郵件"
1772
+
1773
+ #: ../settings.php:735
1774
+ msgid "After every scan"
1775
+ msgstr "於每次掃描後"
1776
+
1777
+ #: ../settings.php:736
1778
+ msgid "If any changes in scan results occurred"
1779
+ msgstr "如果在掃描結果中有發生任何變更"
1780
+
1781
+ #: ../settings.php:741
1782
+ msgid "Include file sizes"
1783
+ msgstr "包含檔案容量"
1784
+
1785
+ #: ../settings.php:745
1786
+ msgid "Include scan errors"
1787
+ msgstr "包含掃描錯誤"
1788
+
1789
+ #: ../dashboard.php:4579 ../cerber-load.php:4807
1790
+ msgid "Security Scanner"
1791
+ msgstr "安全性掃描"
1792
+
1793
+ #: ../dashboard.php:4581
1794
+ msgid "Scheduling"
1795
+ msgstr "排程"
1796
+
1797
+ #: ../cerber-scanner.php:94
1798
+ msgid "Currently a scheduled scan in progress. Please wait until it is finished."
1799
+ msgstr "目前已有排定的掃描進行中,請稍候至其完成。"
1800
+
1801
+ #: ../cerber-scanner.php:98
1802
+ msgid "Previous scan started %s has not been completed. Continue scanning?"
1803
+ msgstr "上次掃描開始於 %s且並未完成,要繼續嗎?"
1804
+
1805
+ #: ../cerber-scanner.php:107
1806
+ msgid "It seems this website has never been scanned. To start scanning click the button below."
1807
+ msgstr "網站似乎還沒有掃描過,要開始掃描請點選已下按鈕。"
1808
+
1809
+ #: ../cerber-scanner.php:110
1810
+ msgid "Start Quick Scan"
1811
+ msgstr "開始快速掃描"
1812
+
1813
+ #: ../cerber-scanner.php:111
1814
+ msgid "Start Full Scan"
1815
+ msgstr "開始完整掃描"
1816
+
1817
+ #: ../cerber-scanner.php:112
1818
+ msgid "Stop Scanning"
1819
+ msgstr "停止掃描"
1820
+
1821
+ #: ../cerber-scanner.php:113
1822
+ msgid "Continue Scanning"
1823
+ msgstr "繼續掃描"
1824
+
1825
+ #: ../cerber-scanner.php:149
1826
+ msgid "Delete"
1827
+ msgstr "刪除"
1828
+
1829
+ #: ../cerber-scanner.php:1571
1830
+ msgid "Verified"
1831
+ msgstr "已驗證"
1832
+
1833
+ #: ../cerber-scanner.php:1578
1834
+ msgid "Integrity data not found"
1835
+ msgstr "找不到完整性資料"
1836
+
1837
+ #: ../cerber-scanner.php:1579
1838
+ msgid "Unable to check the integrity of the plugin due to a network error"
1839
+ msgstr "由於網路錯誤以致無法檢查外掛完整性"
1840
+
1841
+ #: ../cerber-scanner.php:1580
1842
+ msgid "Unable to check the integrity of WordPress files due to a network error"
1843
+ msgstr "由於網路錯誤以致無法檢查 WordPress檔案完整性"
1844
+
1845
+ #: ../cerber-scanner.php:1581
1846
+ msgid "Unable to check the integrity of the theme due to a network error"
1847
+ msgstr "由於網路錯誤以致無法檢查佈景主題完整性"
1848
+
1849
+ #: ../cerber-scanner.php:1584
1850
+ msgid "Local file doesn't exist"
1851
+ msgstr "本機檔案不存在"
1852
+
1853
+ #: ../cerber-scanner.php:1586
1854
+ msgid "Unable to process file"
1855
+ msgstr "無法處理檔案"
1856
+
1857
+ #: ../cerber-scanner.php:1587 ../cerber-scanner.php:5104
1858
+ msgid "Unable to open file"
1859
+ msgstr "無法開啟檔案"
1860
+
1861
+ #: ../cerber-scanner.php:1589
1862
+ msgid "Checksum mismatch"
1863
+ msgstr "校驗碼不符合"
1864
+
1865
+ #: ../cerber-scanner.php:1592
1866
+ msgid "Suspicious code found"
1867
+ msgstr "發現可疑代碼"
1868
+
1869
+ #: ../cerber-scanner.php:1594
1870
+ msgid "Unattended suspicious file"
1871
+ msgstr "無關聯的可疑檔案"
1872
+
1873
+ #: ../cerber-scanner.php:1595
1874
+ msgid "Executable code found"
1875
+ msgstr "發現可執行代碼"
1876
+
1877
+ #: ../cerber-scanner.php:1599
1878
+ msgid "Unwanted file extension"
1879
+ msgstr "不需要的檔案副檔名"
1880
+
1881
+ #: ../cerber-scanner.php:1601
1882
+ msgid "Content has been modified"
1883
+ msgstr "內容已被修改"
1884
+
1885
+ #: ../cerber-scanner.php:1602
1886
+ msgid "New file"
1887
+ msgstr "新的檔案"
1888
+
1889
+ #: ../cerber-scanner.php:2648
1890
+ msgid "Custom signature found"
1891
+ msgstr "發現自訂簽章"
1892
+
1893
+ #: ../cerber-scanner.php:3853
1894
+ msgid "Scanning folders for files"
1895
+ msgstr "掃描目錄檔案中"
1896
+
1897
+ #: ../cerber-scanner.php:3857
1898
+ msgid "Parsing the list of files"
1899
+ msgstr "解析檔案清單中"
1900
+
1901
+ #: ../cerber-scanner.php:3858
1902
+ msgid "Checking for new and modified files"
1903
+ msgstr "檢查新增檔案和檔案修改中"
1904
+
1905
+ #: ../cerber-scanner.php:3859
1906
+ msgid "Verifying the integrity of WordPress"
1907
+ msgstr "驗證 WordPress完整性中"
1908
+
1909
+ #: ../cerber-scanner.php:3861
1910
+ msgid "Verifying the integrity of the plugins"
1911
+ msgstr "驗證外掛完整性中"
1912
+
1913
+ #: ../cerber-scanner.php:3863
1914
+ msgid "Verifying the integrity of the themes"
1915
+ msgstr "驗證佈景主題完整性中"
1916
+
1917
+ #: ../cerber-scanner.php:3864
1918
+ msgid "Searching for malicious code"
1919
+ msgstr "搜尋惡意代碼中"
1920
+
1921
+ #: ../cerber-scanner.php:3865
1922
+ msgid "Finalizing the scan"
1923
+ msgstr "即將完成掃描"
1924
+
1925
+ #: ../cerber-scanner.php:3989 ../cerber-scanner.php:4059
1926
+ msgid "Files to scan"
1927
+ msgstr "檔案掃描"
1928
+
1929
+ #: ../cerber-scanner.php:3996 ../cerber-scanner.php:4067
1930
+ msgid "Critical issues"
1931
+ msgstr "嚴重問題"
1932
+
1933
+ #: ../cerber-scanner.php:3996 ../cerber-scanner.php:4071 ../cerber-scanner.php:5295
1934
+ msgid "Issues total"
1935
+ msgstr "問題總數"
1936
+
1937
+ #: ../cerber-scanner.php:4704
1938
+ msgid "File access error. Possibly scan results are outdated. Please run Quick or Full Scan."
1939
+ msgstr "檔案存取錯誤,可能是掃描結果已過時,請執行快速或完整掃描。"
1940
+
1941
+ #: ../cerber-scanner.php:5418
1942
+ msgid "To view full report visit"
1943
+ msgstr "檢視完整報告請前往"
1944
+
1945
+ #: ../cerber-load.php:3905
1946
+ msgid "Scanner Report"
1947
+ msgstr "掃描報告"
1948
+
1949
+ #: ../settings.php:674
1950
+ msgid "Monitor new files"
1951
+ msgstr "監控新檔案"
1952
+
1953
+ #: ../settings.php:678
1954
+ msgid "Monitor modified files"
1955
+ msgstr "監控檔案變更"
1956
+
1957
+ #: ../settings.php:737
1958
+ msgid "If new issues found"
1959
+ msgstr "如果發現新的問題"
1960
+
1961
+ #: ../settings.php:1782
1962
+ msgid "The schedule has been updated"
1963
+ msgstr "已更新排程"
1964
+
1965
+ #: ../cerber-scanner.php:1598 ../cerber-scanner.php:2828
1966
+ msgid "Suspicious directives found"
1967
+ msgstr "發現可疑指令"
1968
+
1969
+ #: ../cerber-scanner.php:2826
1970
+ msgid "Suspicious code instruction found"
1971
+ msgstr "發現可疑代碼判斷指令"
1972
+
1973
+ #: ../cerber-scanner.php:2827
1974
+ msgid "Suspicious code signatures found"
1975
+ msgstr "發現可疑代碼判斷簽章"
1976
+
1977
+ #: ../cerber-scanner.php:2830
1978
+ msgid "To solve this issue you have to reinstall %s or update it to the latest version."
1979
+ msgstr "要解決此問題你必須重新安裝 %s或更新至最新版。"
1980
+
1981
+ #: ../cerber-scanner.php:2831
1982
+ msgid "Please upload a reference ZIP archive"
1983
+ msgstr "請上傳 ZIP格式的參考來源"
1984
+
1985
+ #: ../cerber-scanner.php:2832
1986
+ msgid "Resolve issue"
1987
+ msgstr "解決問題"
1988
+
1989
+ #: ../cerber-scanner.php:4160
1990
+ msgid "We have not found any integrity data to verify"
1991
+ msgstr "我們沒有發現任何完整性資料可驗證"
1992
+
1993
+ #: ../cerber-scanner.php:4162
1994
+ 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."
1995
+ msgstr "你必須上傳已安裝的 ZIP檔案,這會啟動安全性掃描以驗證代碼完整性與惡意軟體。"
1996
+
1997
+ #: ../cerber-scanner.php:5251
1998
+ msgid "Full Scan Report"
1999
+ msgstr "完整掃描報告"
2000
+
2001
+ #: ../cerber-scanner.php:5251
2002
+ msgid "Quick Scan Report"
2003
+ msgstr "快速掃描報告"
2004
+
2005
+ #: ../cerber-scanner.php:5264
2006
+ msgid "Files scanned"
2007
+ msgstr "已掃描的檔案"
2008
+
2009
+ #: ../dashboard.php:261 ../dashboard.php:1338 ../dashboard.php:1373 ../dashboard.
2010
+ #: php:1496
2011
+ msgid "Check for activities"
2012
+ msgstr "檢查活動"
2013
+
2014
+ #: ../dashboard.php:1458
2015
+ msgid "Activated"
2016
+ msgstr "已啟用"
2017
+
2018
+ #: ../common.php:1276
2019
+ msgid "Malicious request denied"
2020
+ msgstr "已拒絕的惡意請求"
2021
+
2022
+ #: ../common.php:1280
2023
+ msgid "User activated"
2024
+ msgstr "已啟用的使用者"
2025
+
2026
+ #: ../common.php:1300
2027
+ msgid "Suspicious number of fields"
2028
+ msgstr "可疑的欄位數量"
2029
+
2030
+ #: ../common.php:1301
2031
+ msgid "Suspicious number of nested values"
2032
+ msgstr "可疑的巢狀值數量"
2033
+
2034
+ #: ../common.php:1302 ../common.php:1343
2035
+ msgid "Malicious code detected"
2036
+ msgstr "檢測到惡意代碼"
2037
+
2038
+ #: ../common.php:1344
2039
+ msgid "Attempt to upload a file with malicious code"
2040
+ msgstr "嘗試上傳有惡意代碼的檔案"
2041
+
2042
+ #: ../common.php:1575
2043
+ msgid "Bytes"
2044
+ msgstr "Bytes"
2045
+
2046
+ #: ../cerber-scanner.php:1577
2047
+ msgid "Vulnerability found"
2048
+ msgstr "發現弱點"
2049
+
2050
+ #: ../cerber-scanner.php:1582
2051
+ msgid "Unable to check the integrity due to a DB error"
2052
+ msgstr "由於資料庫錯誤導致無法檢查正確性"
2053
+
2054
+ #: ../cerber-scanner.php:3854
2055
+ msgid "Scanning the upload folder for files"
2056
+ msgstr "掃描上傳目錄的檔案中"
2057
+
2058
+ #: ../cerber-scanner.php:3855
2059
+ msgid "Scanning the temp folder for files"
2060
+ msgstr "掃描暫存目錄的檔案中"
2061
+
2062
+ #: ../cerber-scanner.php:3856
2063
+ msgid "Scanning the session folder for files"
2064
+ msgstr "掃描通信目錄檔案中"
2065
+
2066
+ #: ../settings.php:704
2067
+ msgid "Automated recurring scan schedule"
2068
+ msgstr "自動重複掃描排程"
2069
+
2070
+ #: ../settings.php:719
2071
+ msgid "Scan results reporting"
2072
+ msgstr "掃描結果報告"
2073
+
2074
+ #: ../dashboard.php:903 ../dashboard.php:3933
2075
+ msgid "Suspicious activity"
2076
+ msgstr "可疑活動"
2077
+
2078
+ #: ../dashboard.php:3934
2079
+ msgid "Errors"
2080
+ msgstr "錯誤"
2081
+
2082
+ #: ../dashboard.php:4508
2083
+ msgid "Antispam engine"
2084
+ msgstr "防垃圾留言引擎"
2085
+
2086
+ #. Description of the plugin
2087
+ #:
2088
+ 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."
2089
+ msgstr "使用惡意軟體掃描器和完整性檢查工具,防護 WordPress來自駭客攻擊、垃圾留言、木馬和病毒。透過一套安全演算法讓 WordPress更堅固,以及尖端機器人檢測引擎和 reCAPTCHA進行垃圾留言防護。還能使用電子郵件、行動裝置、桌面通知追蹤使用者和入侵者活動。"
2090
+
2091
+ #: ../cerber-load.php:381
2092
+ msgid "You have exceeded the number of allowed login attempts. Please try again in %d minutes."
2093
+ msgstr "你已達到嘗試登入的限制次數,請在 %d分鐘後重試。"
2094
+
2095
+ #: ../common.php:1489
2096
+ msgctxt "preposition of a period of time like: in 6 hours"
2097
+ msgid "in %s"
2098
+ msgstr "於 %s"
2099
+
2100
+ #: ../settings.php:1501
2101
+ msgctxt "preposition of time like: at 11:00"
2102
+ msgid "at"
2103
+ msgstr "於"
2104
+
2105
+ #: ../dashboard.php:4584
2106
+ msgid "Quarantine"
2107
+ msgstr "隔離區"
2108
+
2109
+ #: ../cerber-scanner.php:3940
2110
+ msgid "Started"
2111
+ msgstr "已開始"
2112
+
2113
+ #: ../cerber-scanner.php:3944
2114
+ msgid "Finished"
2115
+ msgstr "已完成"
2116
+
2117
+ #: ../cerber-scanner.php:3952
2118
+ msgid "Performance"
2119
+ msgstr "效能"
2120
+
2121
+ #: ../nexus/cerber-slave-list.php:290 ../cerber-scanner.php:3964
2122
+ msgid "Vulnerabilities"
2123
+ msgstr "弱點"
2124
+
2125
+ #: ../cerber-scanner.php:3968
2126
+ msgid "New files"
2127
+ msgstr "新的檔案"
2128
+
2129
+ #: ../cerber-scanner.php:3972
2130
+ msgid "Changed files"
2131
+ msgstr "已變更的檔案"
2132
+
2133
+ #: ../cerber-scanner.php:3976
2134
+ msgid "Unwanted extensions"
2135
+ msgstr "不需要的檔案副檔名"
2136
+
2137
+ #: ../cerber-scanner.php:3980
2138
+ msgid "Unattended files"
2139
+ msgstr "無關聯的檔案"
2140
+
2141
+ #: ../cerber-scanner.php:3989 ../cerber-scanner.php:5767
2142
+ msgid "Scanned"
2143
+ msgstr "已掃描"
2144
+
2145
+ #: ../cerber-scanner.php:5669
2146
+ msgid "There are no files in the quarantine at the moment."
2147
+ msgstr "目前沒有檔案在隔離區。"
2148
+
2149
+ #: ../cerber-scanner.php:5759
2150
+ msgid "Restore"
2151
+ msgstr "復原"
2152
+
2153
+ #: ../cerber-scanner.php:5756
2154
+ msgid "Delete permanently"
2155
+ msgstr "永久刪除"
2156
+
2157
+ #: ../cerber-scanner.php:5768
2158
+ msgid "Moved to quarantine"
2159
+ msgstr "移動至隔離區"
2160
+
2161
+ #: ../cerber-scanner.php:5769
2162
+ msgid "Automatic deletion"
2163
+ msgstr "自動刪除"
2164
+
2165
+ #: ../cerber-scanner.php:5770
2166
+ msgid "Size"
2167
+ msgstr "容量"
2168
+
2169
+ #: ../cerber-scanner.php:5771 ../cerber-scanner.php:5919
2170
+ msgid "File"
2171
+ msgstr "檔案"
2172
+
2173
+ #: ../cerber-scanner.php:5847
2174
+ msgid "The file has been deleted permanently."
2175
+ msgstr "已永久刪除此檔案。"
2176
+
2177
+ #: ../cerber-scanner.php:5861
2178
+ msgid "The file has been restored to its original location."
2179
+ msgstr "此檔案已被還原至原始位置。"
2180
+
2181
+ #: ../dashboard.php:1714
2182
+ msgid "Integrity"
2183
+ msgstr "完整性"
2184
+
2185
+ #: ../common.php:1270
2186
+ msgid "Attempt to upload malicious file denied"
2187
+ msgstr "已拒絕嘗試上傳惡意檔案"
2188
+
2189
+ #: ../cerber-news.php:145
2190
+ msgid "Awesome!"
2191
+ msgstr "太棒了!"
2192
+
2193
+ #: ../settings.php:760
2194
+ msgid "Automatic cleanup of malware and suspicious files"
2195
+ msgstr "自動清理惡意和可疑檔案"
2196
+
2197
+ #: ../settings.php:768
2198
+ msgid "Files in the uploads folder"
2199
+ msgstr "檔案位於上傳目錄"
2200
+
2201
+ #: ../settings.php:777
2202
+ msgid "Files with unwanted extensions"
2203
+ msgstr "包含不需要的副檔名檔案"
2204
+
2205
+ #: ../settings.php:796
2206
+ msgid "Exclusions"
2207
+ msgstr "排除"
2208
+
2209
+ #: ../settings.php:800
2210
+ msgid "Files in the temporary directory"
2211
+ msgstr "檔案位於暫存資料夾"
2212
+
2213
+ #: ../settings.php:804
2214
+ msgid "Files in the sessions directory"
2215
+ msgstr "通信資料夾中的檔案"
2216
+
2217
+ #: ../settings.php:808
2218
+ msgid "Files in these directories"
2219
+ msgstr "檔案位於這些資料夾"
2220
+
2221
+ #: ../settings.php:812
2222
+ msgid "Use absolute paths. One item per line."
2223
+ msgstr "使用絕對路徑。一行一個項目。"
2224
+
2225
+ #: ../settings.php:815
2226
+ msgid "Files with these extensions"
2227
+ msgstr "這些副檔名的檔案"
2228
+
2229
+ #: ../settings.php:819
2230
+ msgid "Use comma to separate items."
2231
+ msgstr "使用小寫逗號分隔項目。"
2232
+
2233
+ #: ../dashboard.php:4582
2234
+ msgid "Cleaning up"
2235
+ msgstr "清理中"
2236
+
2237
+ #: ../cerber-scanner.php:1593
2238
+ msgid "Malicious code found"
2239
+ msgstr "發現惡意代碼"
2240
+
2241
+ #: ../cerber-scanner.php:2823
2242
+ 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."
2243
+ msgstr "此檔案具有可執行代碼且包含混淆的惡意軟體,如果此檔案為佈景主題或外掛的一部分,則它必須存在於各自的目錄中。沒有例外,沒有藉口。"
2244
+
2245
+ #: ../cerber-scanner.php:2824
2246
+ 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."
2247
+ msgstr "由於此檔案不屬於網站任何已知的部份且不應存在於該處,掃描器辨識此檔案為「無人擁有」或「無關聯的」。"
2248
+
2249
+ #: ../cerber-scanner.php:2825
2250
+ 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."
2251
+ msgstr "這可能是在升級至新版 %s後所遺留,也可能是惡意軟體混淆的一部分。在極少數的情況下,這也可能是自訂(客製化)的外掛或佈景主題的一部分。"
2252
+
2253
+ #: ../cerber-scanner.php:2829
2254
+ 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."
2255
+ msgstr "包含的檔案內容已經被修改且不符合 WordPress官方現存的資料庫或你先前上傳的參考檔案。這些檔案可能已經被惡意軟體替換、病毒感染或竄改。"
2256
+
2257
+ #: ../cerber-scanner.php:5349
2258
+ msgid "Deleted"
2259
+ msgstr "已刪除"
2260
+
2261
+ #: ../cerber-scanner.php:5402
2262
+ msgid "Automatically moved to quarantine"
2263
+ msgstr "自動移至隔離區"
2264
+
2265
+ #: ../common.php:1303
2266
+ msgid "Suspicious SQL code detected"
2267
+ msgstr "檢測到可疑 SQL代碼"
2268
+
2269
+ #: ../dashboard.php:1695
2270
+ msgctxt "Example: Last malware scan: 23 Jan 2018"
2271
+ msgid "Last malware scan"
2272
+ msgstr "上次惡意軟體掃描"
2273
+
2274
+ #: ../dashboard.php:4528
2275
+ msgid "Live Traffic"
2276
+ msgstr "即時流量"
2277
+
2278
+ #: ../settings.php:330
2279
+ msgid "Use English for admin interface"
2280
+ msgstr "於管理員介面使用英文語系"
2281
+
2282
+ #: ../dashboard.php:4616
2283
+ msgid "Log"
2284
+ msgstr "記錄"
2285
+
2286
+ #: ../settings.php:351
2287
+ msgid "Disable PHP in uploads"
2288
+ msgstr "禁止上傳 PHP"
2289
+
2290
+ #: ../settings.php:356
2291
+ msgid "Disable PHP error displaying"
2292
+ msgstr "停用顯示 PHP錯誤"
2293
+
2294
+ #: ../dashboard.php:4583
2295
+ msgid "Ignore List"
2296
+ msgstr "忽略清單"
2297
+
2298
+ #: ../cerber-scanner.php:152
2299
+ msgid "Ignore"
2300
+ msgstr "忽略"
2301
+
2302
+ #: ../cerber-scanner.php:5884
2303
+ msgid "Apply"
2304
+ msgstr "套用"
2305
+
2306
+ #: ../cerber-scanner.php:5918
2307
+ msgid "Added"
2308
+ msgstr "已新增"
2309
+
2310
+ #: ../cerber-scanner.php:5885 ../cerber-scanner.php:5912
2311
+ msgid "Remove from the list"
2312
+ msgstr "從清單中移除"
2313
+
2314
+ #: ../cerber-scanner.php:5886
2315
+ msgid "User Insights"
2316
+ msgstr "使用者洞察"
2317
+
2318
+ #: ../cerber-scanner.php:5887
2319
+ msgid "Traffic Insights"
2320
+ msgstr "流量洞察"
2321
+
2322
+ #: ../cerber-scanner.php:5888
2323
+ msgid "Activity Insights"
2324
+ msgstr "活動洞察"
2325
+
2326
+ #: ../dashboard.php:2729
2327
+ msgid "Are you sure you want to delete selected files?"
2328
+ msgstr "你確認要刪除選取的檔案嗎?"
2329
+
2330
+ #: ../dashboard.php:2730
2331
+ msgid "These files have been moved to the quarantine"
2332
+ msgstr "已移動這些檔案至隔離區"
2333
+
2334
+ #: ../dashboard.php:2733
2335
+ msgid "Do you want to add selected files to the ignore list?"
2336
+ msgstr "你想要新增選取的檔案至忽略清單嗎?"
2337
+
2338
+ #: ../dashboard.php:2734
2339
+ msgid "These files have been added to the ignore list"
2340
+ msgstr "已加入這些檔案至忽略清單"
2341
+
2342
+ #: ../dashboard.php:2736
2343
+ msgid "Some errors occurred"
2344
+ msgstr "發生某些錯誤"
2345
+
2346
+ #: ../dashboard.php:2737
2347
+ msgid "All files have been processed"
2348
+ msgstr "已處理全部檔案"
2349
+
2350
+ #: ../settings.php:2582
2351
+ msgid "These features are available in a professional version of the plugin."
2352
+ msgstr "這些功能僅提供進階版外掛使用。"
2353
+
2354
+ #: ../settings.php:2583
2355
+ msgid "Know more about all advantages at"
2356
+ msgstr "了解完整優點於"
2357
+
2358
+ #: ../common.php:1304
2359
+ msgid "Suspicious JavaScript code detected"
2360
+ msgstr "檢測到可疑 Javascript代碼"
2361
+
2362
+ #: ../settings.php:1785
2363
+ msgid "Unable to update the schedule"
2364
+ msgstr "無法更新排程"
2365
+
2366
+ #: ../cerber-scanner.php:5785
2367
+ msgid "All scans"
2368
+ msgstr "全部掃描"
2369
+
2370
+ #: ../cerber-scanner.php:5890
2371
+ msgid "The list is empty."
2372
+ msgstr "清單無資料。"
2373
+
2374
+ #: ../cerber-scanner.php:5736
2375
+ msgid "No files match the specified filter."
2376
+ msgstr "無檔案符合指定的篩選器。"
2377
+
2378
+ #: ../cerber-scanner.php:5736
2379
+ msgid "Click here to see the full list of files"
2380
+ msgstr "點選此處檢視完整檔案清單"
2381
+
2382
+ #: ../dashboard.php:807
2383
+ msgid "Additional Details"
2384
+ msgstr "額外資訊"
2385
+
2386
+ #: ../dashboard.php:3533
2387
+ msgid "Page generation time"
2388
+ msgstr "頁面建立時間"
2389
+
2390
+ #: ../dashboard.php:4742
2391
+ msgid "Log In"
2392
+ msgstr "登入"
2393
+
2394
+ #: ../dashboard.php:4743
2395
+ msgid "Log Out"
2396
+ msgstr "登出"
2397
+
2398
+ #: ../dashboard.php:4744
2399
+ msgid "Register"
2400
+ msgstr "註冊"
2401
+
2402
+ #: ../dashboard.php:4747
2403
+ msgid "WooCommerce Log In"
2404
+ msgstr "登入 WooCommerce"
2405
+
2406
+ #: ../dashboard.php:4748
2407
+ msgid "WooCommerce Log Out"
2408
+ msgstr "登出 WooCommerce"
2409
+
2410
+ #: ../dashboard.php:4787 ../dashboard.php:4788
2411
+ msgid "Add to menu"
2412
+ msgstr "新增至選單"
2413
+
2414
+ #: ../common.php:1292
2415
+ msgid "IP address is locked out"
2416
+ msgstr "已鎖定 IP"
2417
+
2418
+ #: ../common.php:1346
2419
+ msgid "Multiple suspicious requests"
2420
+ msgstr "多重可疑請求"
2421
+
2422
+ #: ../settings.php:550
2423
+ msgid "Traffic Inspection"
2424
+ msgstr "流量檢驗"
2425
+
2426
+ #: ../settings.php:557 ../settings.php:582
2427
+ msgid "Maximum compatibility"
2428
+ msgstr "最佳相容性"
2429
+
2430
+ #: ../settings.php:558 ../settings.php:583
2431
+ msgid "Maximum security"
2432
+ msgstr "最強安全性"
2433
+
2434
+ #: ../settings.php:575
2435
+ msgid "Erroneous Request Shielding"
2436
+ msgstr "錯誤請求防護"
2437
+
2438
+ #: ../settings.php:578
2439
+ msgid "Enable error shielding"
2440
+ msgstr "啟用錯誤防護"
2441
+
2442
+ #: ../settings.php:633
2443
+ msgid "Save software errors"
2444
+ msgstr "儲存軟體錯誤"
2445
+
2446
+ #: ../cerber-scanner.php:3852
2447
+ msgid "Preparing for the scan"
2448
+ msgstr "掃描準備中"
2449
+
2450
+ #: ../common.php:1305
2451
+ msgid "Blocked by administrator"
2452
+ msgstr "由管理員封鎖"
2453
+
2454
+ #: ../cerber-load.php:385
2455
+ msgid "You are not allowed to log in"
2456
+ msgstr "你不被允許登入"
2457
+
2458
+ #: ../cerber-users.php:38
2459
+ msgid "Block User"
2460
+ msgstr "封鎖使用者"
2461
+
2462
+ #: ../cerber-users.php:42 ../cerber-users.php:48
2463
+ msgid "User is not permitted to log into the website"
2464
+ msgstr "使用者不允許登入此網站"
2465
+
2466
+ #: ../cerber-users.php:67 ../settings.php:424
2467
+ msgid "User Message"
2468
+ msgstr "使用者訊息"
2469
+
2470
+ #: ../cerber-users.php:69
2471
+ msgid "An optional message for this user"
2472
+ msgstr "給此使用者的額外訊息"
2473
+
2474
+ #: ../cerber-users.php:173
2475
+ msgid "Blocked Users"
2476
+ msgstr "已封鎖的使用者"
2477
+
2478
+ #: ../settings.php:342
2479
+ msgid "Block access to user pages like /?author=n"
2480
+ msgstr "封鎖使用者頁面存取,如 /?author=n"
2481
+
2482
+ #: ../settings.php:372
2483
+ msgid "Access to WordPress REST API"
2484
+ msgstr "存取 WordPress REST API"
2485
+
2486
+ #: ../settings.php:382
2487
+ msgid "Block access to WordPress REST API except any of the following"
2488
+ msgstr "封鎖對 WordPress REST API的存取,除了以下規則"
2489
+
2490
+ #: ../settings.php:391
2491
+ msgid "Allow REST API for these roles"
2492
+ msgstr "允許這些角色使用 REST API"
2493
+
2494
+ #: ../settings.php:395
2495
+ msgid "Allow these namespaces"
2496
+ msgstr "允許這些命名空間"
2497
+
2498
+ #: ../settings.php:587
2499
+ msgid "Ignore logged in users"
2500
+ msgstr "忽略登入的使用者"
2501
+
2502
+ #: ../settings.php:146
2503
+ msgid "These restrictions do not apply to IP addresses in the White IP Access List"
2504
+ msgstr "這些限制將不會套用至 IP存取白名單中的 IP位置"
2505
+
2506
+ #: ../settings.php:1460
2507
+ msgid "Select one or more roles"
2508
+ msgstr "選擇一個或多個角色"
2509
+
2510
+ #: ../dashboard.php:1121
2511
+ msgid "Filter by registered user"
2512
+ msgstr "根據已註冊的使用者篩選"
2513
+
2514
+ #: ../settings.php:410
2515
+ msgid "Authorized users only"
2516
+ msgstr "僅已驗證的使用者"
2517
+
2518
+ #: ../settings.php:411
2519
+ msgid "Only registered and logged in website users have access to the website"
2520
+ msgstr "僅允許註冊和登入網站的使用者存取此網站"
2521
+
2522
+ #: ../settings.php:418
2523
+ msgid "Do not apply this policy to IP addresses in the White IP Access List"
2524
+ msgstr "不要套用這些策略至 IP存取白名單中的 IP"
2525
+
2526
+ #: ../settings.php:428 ../settings.php:2028
2527
+ msgid "Only registered and logged in users are allowed to view this website"
2528
+ msgstr "僅允許註冊和登入的使用者檢視此網站"
2529
+
2530
+ #: ../settings.php:433
2531
+ msgid "Redirect to URL"
2532
+ msgstr "重定向至網址"
2533
+
2534
+ #: ../dashboard.php:4617
2535
+ msgid "Changelog"
2536
+ msgstr "變更記錄"
2537
+
2538
+ #: ../dashboard.php:612
2539
+ msgid "Default settings have been loaded"
2540
+ msgstr "已載入預設設定值"
2541
+
2542
+ #: ../dashboard.php:3250
2543
+ msgid "Save all rules"
2544
+ msgstr "儲存全部規則"
2545
+
2546
+ #: ../dashboard.php:3121 ../common.php:899
2547
+ msgid "Save Changes"
2548
+ msgstr "儲存變更"
2549
+
2550
+ #: ../common.php:1283
2551
+ msgid "Invalid master credentials"
2552
+ msgstr "不正確的主憑證"
2553
+
2554
+ #: ../settings.php:951
2555
+ msgid "Master settings"
2556
+ msgstr "主設定"
2557
+
2558
+ #: ../settings.php:959
2559
+ msgid "Return to the website list"
2560
+ msgstr "回到網站清單"
2561
+
2562
+ #: ../settings.php:963
2563
+ msgid "Show \"Switched to\" notification"
2564
+ msgstr "顯示「切換至」通知"
2565
+
2566
+ #: ../settings.php:967
2567
+ msgid "Add @ site to the page title"
2568
+ msgstr "在頁面標題新增 @網站"
2569
+
2570
+ #: ../settings.php:690 ../settings.php:984 ../settings.php:1011
2571
+ msgid "Enable diagnostic logging"
2572
+ msgstr "啟用記錄診斷"
2573
+
2574
+ #: ../settings.php:994
2575
+ msgid "Limit access by IP address"
2576
+ msgstr "根據 IP限制存取"
2577
+
2578
+ #: ../settings.php:1000
2579
+ msgid "Access to this website"
2580
+ msgstr "存取此網站"
2581
+
2582
+ #: ../settings.php:1003
2583
+ msgid "Full access mode"
2584
+ msgstr "完整存取模式"
2585
+
2586
+ #: ../settings.php:1004
2587
+ msgid "Read-only mode"
2588
+ msgstr "唯讀模式"
2589
+
2590
+ #: ../settings.php:1020
2591
+ msgid "The full access mode requires the PRO version of WP Cerber"
2592
+ msgstr "完整的存取模式需要進階版的 WP Cerber"
2593
+
2594
+ #: ../nexus/cerber-slave-list.php:48
2595
+ msgid "WordPress"
2596
+ msgstr "WordPress"
2597
+
2598
+ #: ../nexus/cerber-slave-list.php:52
2599
+ msgid "Malware Scan"
2600
+ msgstr "惡意軟體掃描"
2601
+
2602
+ #: ../nexus/cerber-slave-list.php:55 ../nexus/cerber-nexus-master.php:103
2603
+ msgid "Notes"
2604
+ msgstr "備註"
2605
+
2606
+ #: ../nexus/cerber-slave-list.php:117
2607
+ msgid "Add a slave website"
2608
+ msgstr "新增附屬網站"
2609
+
2610
+ #: ../cerber-users.php:844 ../nexus/cerber-slave-list.php:193
2611
+ msgid "Search results for:"
2612
+ msgstr "搜尋結果:"
2613
+
2614
+ #: ../nexus/cerber-slave-list.php:233
2615
+ msgid "Edit"
2616
+ msgstr "編輯"
2617
+
2618
+ #: ../nexus/cerber-slave-list.php:239
2619
+ msgid "Switch to"
2620
+ msgstr "切換至"
2621
+
2622
+ #: ../nexus/cerber-slave-list.php:339
2623
+ msgid "No websites configured."
2624
+ msgstr "無已設定的網站。"
2625
+
2626
+ #: ../nexus/cerber-slave-list.php:339
2627
+ msgid "Add a new one"
2628
+ msgstr "新增"
2629
+
2630
+ #: ../nexus/cerber-nexus-master.php:70
2631
+ msgid "Website Properties"
2632
+ msgstr "網站屬性"
2633
+
2634
+ #: ../nexus/cerber-nexus-master.php:80
2635
+ msgid "Website URL"
2636
+ msgstr "網站網址"
2637
+
2638
+ #: ../nexus/cerber-nexus-master.php:85
2639
+ msgid "Display as"
2640
+ msgstr "顯示為"
2641
+
2642
+ #: ../nexus/cerber-nexus-master.php:111
2643
+ msgid "Website Owner"
2644
+ msgstr "網站擁有者"
2645
+
2646
+ #: ../nexus/cerber-nexus-master.php:115
2647
+ msgid "First Name"
2648
+ msgstr "名字"
2649
+
2650
+ #: ../nexus/cerber-nexus-master.php:119
2651
+ msgid "Last Name"
2652
+ msgstr "姓氏"
2653
+
2654
+ #: ../nexus/cerber-nexus-master.php:123
2655
+ msgid "Email"
2656
+ msgstr "Email"
2657
+
2658
+ #: ../nexus/cerber-nexus-master.php:127
2659
+ msgid "Phone"
2660
+ msgstr "電話"
2661
+
2662
+ #: ../nexus/cerber-nexus-master.php:135
2663
+ msgid "Address"
2664
+ msgstr "地址"
2665
+
2666
+ #: ../nexus/cerber-nexus-master.php:261
2667
+ msgid "Security access token is invalid"
2668
+ msgstr "安全存取權杖不正確"
2669
+
2670
+ #: ../nexus/cerber-nexus-master.php:291
2671
+ msgid "The website you are trying to add is already in the list"
2672
+ msgstr "嘗試加入的網站已在清單中"
2673
+
2674
+ #: ../nexus/cerber-nexus-master.php:300
2675
+ msgid "The website has been added successfully"
2676
+ msgstr "已成功加入此網站"
2677
+
2678
+ #: ../nexus/cerber-nexus-master.php:301
2679
+ msgid "Click to edit"
2680
+ msgstr "點選以編輯"
2681
+
2682
+ #: ../nexus/cerber-nexus-master.php:302
2683
+ msgid "Switch to the Dashboard"
2684
+ msgstr "切換至控制台"
2685
+
2686
+ #: ../nexus/cerber-nexus-master.php:305
2687
+ msgid "Keep in mind: You have added the website that does not support SSL encryption. This may lead to data leakage."
2688
+ msgstr "請牢記:你已經新增不支援 SSL加密的網站,這可能導致資料洩漏。"
2689
+
2690
+ #: ../nexus/cerber-nexus-master.php:426
2691
+ msgid "Website has been deleted"
2692
+ msgid_plural "%s websites have been deleted"
2693
+ msgstr[0] "網站已刪除\n"
2694
+ "%s 個網站已刪除"
2695
+
2696
+ #: ../nexus/cerber-nexus-master.php:982
2697
+ msgid "You have switched to %s"
2698
+ msgstr "你已被切換至 %s"
2699
+
2700
+ #: ../nexus/cerber-nexus-master.php:987
2701
+ msgid "You have switched back to the master website"
2702
+ msgstr "你已被切換回主網站"
2703
+
2704
+ #: ../nexus/cerber-nexus-master.php:1199
2705
+ msgid "You are here:"
2706
+ msgstr "你在此處:"
2707
+
2708
+ #: ../nexus/cerber-nexus-master.php:1202 ../nexus/cerber-nexus.php:89 ..
2709
+ #: /nexus/cerber-nexus.php:99
2710
+ msgid "My Websites"
2711
+ msgstr "我的網站"
2712
+
2713
+ #: ../nexus/cerber-nexus-master.php:1217
2714
+ msgid "Visit Site"
2715
+ msgstr "檢視網站"
2716
+
2717
+ #: ../nexus/cerber-nexus.php:61
2718
+ msgid "Enable slave mode"
2719
+ msgstr "啟用附屬模式"
2720
+
2721
+ #: ../nexus/cerber-nexus.php:62
2722
+ msgid "This website can be managed from a master website"
2723
+ msgstr "此網站可以從主網站進行管理"
2724
+
2725
+ #: ../nexus/cerber-nexus.php:65
2726
+ msgid "Enable master mode"
2727
+ msgstr "啟用主網站模式"
2728
+
2729
+ #: ../nexus/cerber-nexus.php:66
2730
+ msgid "Configure this website as a master to manage other website"
2731
+ msgstr "設定此網站為主網站可管理其他網站"
2732
+
2733
+ #: ../nexus/cerber-nexus.php:71
2734
+ msgid "To proceed, please select the mode for this website"
2735
+ msgstr "若要繼續,請對此網站選擇一個模式"
2736
+
2737
+ #: ../nexus/cerber-nexus.php:95 ../nexus/cerber-nexus.php:99
2738
+ msgid "Slave Settings"
2739
+ msgstr "附屬設定"
2740
+
2741
+ #: ../nexus/cerber-nexus.php:141
2742
+ msgid "Secret Access Token"
2743
+ msgstr "機密存取權杖"
2744
+
2745
+ #: ../nexus/cerber-nexus.php:143
2746
+ msgid "The token is unique to this website. Keep it secret. Install the token on a master website to grant access to this website."
2747
+ msgstr "權杖為網站獨一無二的,請保持其機密性。在主網站上安裝權杖以授權存取此網站。"
2748
+
2749
+ #: ../nexus/cerber-nexus.php:145
2750
+ msgid "Are you sure? This permanently invalidates the token."
2751
+ msgstr "你確定嗎?這將會永久廢止權杖。"
2752
+
2753
+ #: ../nexus/cerber-nexus.php:146
2754
+ msgid "Disable slave mode"
2755
+ msgstr "停用附屬模式"
2756
+
2757
+ #: ../nexus/cerber-nexus.php:261
2758
+ msgid "This website is set as master."
2759
+ msgstr "此網站是設定為主網站。"
2760
+
2761
+ #: ../nexus/cerber-nexus.php:262
2762
+ msgid "Add slave websites by using access tokens."
2763
+ msgstr "使用存取權杖新增附屬網站。"
2764
+
2765
+ #: ../nexus/cerber-nexus.php:265
2766
+ msgid "This website is set as slave."
2767
+ msgstr "此網站是設定為附屬。"
2768
+
2769
+ #: ../nexus/cerber-nexus.php:266
2770
+ msgid "Install the access token on the master website."
2771
+ msgstr "從主網站安裝存取權杖。"
2772
+
2773
+ #. translators: Time difference between two dates, in seconds (sec=second). 1: Number of seconds
2774
+ #: ../common.php:1482
2775
+ msgid "%s sec"
2776
+ msgid_plural "%s secs"
2777
+ msgstr[0] "%s 秒"
2778
+
2779
+ #: ../settings.php:535
2780
+ msgid "Send reports on"
2781
+ msgstr "傳送報告於"
2782
+
2783
+ #: ../nexus/cerber-slave-list.php:51
2784
+ msgid "Updates"
2785
+ msgstr "更新"
2786
+
2787
+ #: ../nexus/cerber-slave-list.php:53 ../nexus/cerber-nexus-master.php:94
2788
+ msgid "Group"
2789
+ msgstr "群組"
2790
+
2791
+ #: ../nexus/cerber-slave-list.php:96
2792
+ msgid "Upgrade WP Cerber"
2793
+ msgstr "更新 WP Cerber"
2794
+
2795
+ #: ../nexus/cerber-slave-list.php:97
2796
+ msgid "Upgrade all active plugins"
2797
+ msgstr "更新全部啟用的外掛"
2798
+
2799
+ #: ../nexus/cerber-slave-list.php:98
2800
+ msgid "Delete website"
2801
+ msgstr "刪除網站"
2802
+
2803
+ #: ../nexus/cerber-slave-list.php:111
2804
+ msgid "All groups"
2805
+ msgstr "全部群組"
2806
+
2807
+ #: ../nexus/cerber-nexus-master.php:1380
2808
+ msgid "Are you sure you want to delete selected websites?"
2809
+ msgstr "你確定要刪除選取的網站嗎?"
2810
+
2811
+ #: ../cerber-users.php:205
2812
+ msgid "Block"
2813
+ msgstr "封鎖"
2814
+
2815
+ #: ../nexus/cerber-nexus-master.php:62
2816
+ msgid "Select an existing group or enter a new one to add it"
2817
+ msgstr "選取已存在的群組或新增一個新的"
2818
+
2819
+ #: ../nexus/cerber-nexus-master.php:131
2820
+ msgid "Company"
2821
+ msgstr "公司"
2822
+
2823
+ #: ../nexus/cerber-nexus-master.php:657
2824
+ msgid "Invalid response from the slave website"
2825
+ msgstr "附屬網站不正確的回覆"
2826
+
2827
+ #: ../common.php:1264 ../common.php:1337
2828
+ msgid "Attempt to log in with non-existing username"
2829
+ msgstr "嘗試登入不存在的使用者帳號"
2830
+
2831
+ #: ../cerber-load.php:4055
2832
+ msgid "Attempts to log in with non-existing usernames"
2833
+ msgstr "嘗試登入不存在的使用者帳號"
2834
+
2835
+ #: ../settings.php:971
2836
+ msgid "Use master language"
2837
+ msgstr "使用主要語系"
2838
+
2839
+ #: ../settings.php:195
2840
+ msgid "Non-existing users"
2841
+ msgstr "不存在的使用者"
2842
+
2843
+ #: ../settings.php:196
2844
+ msgid "Immediately block IP when attempting to log in with a non-existing username"
2845
+ msgstr "若嘗試登入不存在的使用者帳號則立即封鎖 IP"
2846
+
2847
+ #: ../nexus/cerber-slave-list.php:54
2848
+ msgid "Owner"
2849
+ msgstr "擁有者"
2850
+
2851
+ #: ../nexus/cerber-slave-list.php:339
2852
+ msgid "Disable master mode"
2853
+ msgstr "停用主網站模式"
2854
+
2855
+ #: ../nexus/cerber-nexus.php:146
2856
+ msgid "To revoke the token and disable remote management, click here:"
2857
+ msgstr "若要撤銷權杖並停用遠端管理,請點選這裡:"
2858
+
2859
+ #: ../settings.php:352
2860
+ msgid "Block execution of PHP scripts in the WordPress media folder"
2861
+ msgstr "在 WordPress媒體目錄禁止可執行 PHP代碼"
2862
+
2863
+ #: ../nexus/cerber-nexus-master.php:1445 ../nexus/cerber-nexus-master.php:1453
2864
+ msgid "Active plugins and updates on"
2865
+ msgstr "啟用外掛並更新於"
2866
+
2867
+ #: ../nexus/cerber-nexus-master.php:1424
2868
+ msgid "A newer version is available"
2869
+ msgstr "有新版本可供使用"
2870
+
2871
+ #: ../dashboard.php:897
2872
+ msgid "New users"
2873
+ msgstr "新使用者"
2874
+
2875
+ #: ../dashboard.php:910
2876
+ msgid "My activity"
2877
+ msgstr "我的活動"
2878
+
2879
+ #: ../dashboard.php:2509
2880
+ msgid "Create Alert"
2881
+ msgstr "建立警報"
2882
+
2883
+ #: ../dashboard.php:2513
2884
+ msgid "Delete Alert"
2885
+ msgstr "刪除警報"
2886
+
2887
+ #: ../dashboard.php:2547
2888
+ msgid "The alert has been created"
2889
+ msgstr "已建立警報"
2890
+
2891
+ #: ../dashboard.php:2552
2892
+ msgid "The alert has been deleted"
2893
+ msgstr "此警報已被刪除"
2894
+
2895
+ #: ../dashboard.php:3960
2896
+ msgid "Advanced Search"
2897
+ msgstr "進階搜尋"
2898
+
2899
+ #. Author of the plugin
2900
+ #:
2901
+ msgid "Cerber Tech Inc."
2902
+ msgstr "Cerber Tech Inc."
2903
+
2904
+ #: ../cerber-load.php:4545
2905
+ msgid "To delete the alert, click here"
2906
+ msgstr "點選這裡刪除警報"
2907
+
2908
+ #: ../settings.php:228
2909
+ msgid "Custom login URL may contain Latin alphanumeric characters, dashes and underscores only"
2910
+ msgstr "自動登入 URL只能包含拉丁字母、破折號和下劃線"
2911
+
2912
+ #: ../settings.php:240
2913
+ msgid "Site-specific settings"
2914
+ msgstr "網站專用設定"
2915
+
2916
+ #: ../settings.php:248
2917
+ msgid "Prefix for plugin cookies"
2918
+ msgstr "外掛 cookie前置詞"
2919
+
2920
+ #: ../settings.php:249
2921
+ msgid "Prefix may contain only Latin alphanumeric characters and underscores"
2922
+ msgstr "前置詞只能包含拉丁字母和下劃線"
2923
+
2924
+ #: ../settings.php:492
2925
+ msgid "Lockout notifications"
2926
+ msgstr "鎖定通知"
2927
+
2928
+ #: ../settings.php:518
2929
+ msgid "Pushbullet access token"
2930
+ msgstr "Pushbullet存取權杖"
2931
+
2932
+ #: ../settings.php:521
2933
+ msgid "Pushbullet device"
2934
+ msgstr "Pushbullet裝置"
2935
+
2936
+ #: ../settings.php:764
2937
+ msgid "Delete unattended files"
2938
+ msgstr "刪除無關聯的檔案"
2939
+
2940
+ #: ../settings.php:783
2941
+ msgid "Automatic recovery of modified and infected files"
2942
+ msgstr "自動復原被修改和已感染的檔案"
2943
+
2944
+ #: ../settings.php:786
2945
+ msgid "Recover WordPress files"
2946
+ msgstr "復原 WordPress檔案"
2947
+
2948
+ #: ../settings.php:790
2949
+ msgid "Recover plugins files"
2950
+ msgstr "復原外掛檔案"
2951
+
2952
+ #: ../cerber-scanner.php:1605
2953
+ msgid "File deleted"
2954
+ msgstr "檔案已刪除"
2955
+
2956
+ #: ../cerber-scanner.php:1606
2957
+ msgid "File recovered"
2958
+ msgstr "檔案已復原"
2959
+
2960
+ #: ../cerber-scanner.php:3860
2961
+ msgid "Recovering WordPress files"
2962
+ msgstr "復原 WordPress檔案中"
2963
+
2964
+ #: ../cerber-scanner.php:3862
2965
+ msgid "Recovering plugins files"
2966
+ msgstr "復原外掛檔案中"
2967
+
2968
+ #: ../cerber-scanner.php:5353
2969
+ msgid "Recovered"
2970
+ msgstr "已復原"
2971
+
2972
+ #: ../cerber-scanner.php:5403
2973
+ msgid "Automatically deleted"
2974
+ msgstr "已自動刪除"
2975
+
2976
+ #: ../cerber-scanner.php:5406
2977
+ msgid "Automatically recovered"
2978
+ msgstr "已自動復原"
2979
+
2980
+ #: ../dashboard.php:63
2981
+ msgid "Cerber User Security"
2982
+ msgstr "Cerber使用者安全性"
2983
+
2984
+ #: ../dashboard.php:63 ../dashboard.php:4542
2985
+ msgid "User Policies"
2986
+ msgstr "使用者策略"
2987
+
2988
+ #: ../dashboard.php:1717
2989
+ msgid "A new version is available"
2990
+ msgstr "有新版本可供使用"
2991
+
2992
+ #: ../dashboard.php:4544
2993
+ msgid "Role-based"
2994
+ msgstr "基於角色"
2995
+
2996
+ #: ../dashboard.php:4545
2997
+ msgid "Global"
2998
+ msgstr "全域"
2999
+
3000
+ #: ../common.php:1306
3001
+ msgid "Site policy enforcement"
3002
+ msgstr "強制性網站策略"
3003
+
3004
+ #: ../common.php:1307
3005
+ msgid "2FA code verified"
3006
+ msgstr "已驗證 2FA代碼"
3007
+
3008
+ #: ../common.php:1308
3009
+ msgid "Initiated by the user"
3010
+ msgstr "由使用者啟動"
3011
+
3012
+ #: ../common.php:1311
3013
+ msgid "Email address is not permitted"
3014
+ msgstr "不允許的 Email"
3015
+
3016
+ #: ../common.php:1677
3017
+ msgid "A new version of %s is available. Please install it."
3018
+ msgstr "已有新版 %s 可用,請安裝。"
3019
+
3020
+ #: ../cerber-load.php:1490
3021
+ msgid "Email address is not permitted."
3022
+ msgstr "不允許的 Email。"
3023
+
3024
+ #: ../cerber-load.php:1490
3025
+ msgid "Please choose another one."
3026
+ msgstr "請選擇其它的。"
3027
+
3028
+ #: ../cerber-users.php:10 ../cerber-users.php:424
3029
+ msgid "Two-Factor Authentication"
3030
+ msgstr "兩步驟驗證"
3031
+
3032
+ #: ../cerber-users.php:18
3033
+ msgid "Determined by user role policies"
3034
+ msgstr "依據使用者角色策略決定"
3035
+
3036
+ #: ../cerber-users.php:19 ../cerber-users.php:432
3037
+ msgid "Always enabled"
3038
+ msgstr "永遠啟用"
3039
+
3040
+ #: ../cerber-users.php:78
3041
+ msgid "2FA PIN Code"
3042
+ msgstr "2FA PIN碼"
3043
+
3044
+ #: ../cerber-users.php:274
3045
+ msgid "Save All Changes"
3046
+ msgstr "儲存全部變更"
3047
+
3048
+ #: ../cerber-users.php:386
3049
+ msgid "Block access to WordPress Dashboard"
3050
+ msgstr "封鎖存取 WordPress控制台"
3051
+
3052
+ #: ../cerber-users.php:391
3053
+ msgid "Hide Toolbar when viewing site"
3054
+ msgstr "檢視網站時隱藏工具列"
3055
+
3056
+ #: ../cerber-users.php:397
3057
+ msgid "Redirection rules"
3058
+ msgstr "重定向規則"
3059
+
3060
+ #: ../cerber-users.php:401
3061
+ msgid "Redirect user after login"
3062
+ msgstr "使用者登入後重定向"
3063
+
3064
+ #: ../cerber-users.php:406
3065
+ msgid "Redirect user after logout"
3066
+ msgstr "登出後重定向"
3067
+
3068
+ #: ../cerber-users.php:417 ../settings.php:473
3069
+ msgid "User session expiration time"
3070
+ msgstr "使用者通信逾期時間"
3071
+
3072
+ #: ../cerber-users.php:428
3073
+ msgid "Two-factor authentication"
3074
+ msgstr "兩步驟驗證"
3075
+
3076
+ #: ../cerber-users.php:433
3077
+ msgid "Advanced mode"
3078
+ msgstr "進階模式"
3079
+
3080
+ #: ../cerber-users.php:437
3081
+ msgid "Enforce two-factor authentication if any of the following conditions is true"
3082
+ msgstr "如果符合以下任何條件則強制使用兩步驟驗證"
3083
+
3084
+ #: ../cerber-users.php:443
3085
+ msgid "Login from a different country"
3086
+ msgstr "自不同國家登入"
3087
+
3088
+ #: ../cerber-users.php:449
3089
+ msgid "Login from a different network Class C"
3090
+ msgstr "自不同的 Class C網路登入"
3091
+
3092
+ #: ../cerber-users.php:455
3093
+ msgid "Login from a different IP address"
3094
+ msgstr "自不同的 IP位置登入"
3095
+
3096
+ #: ../cerber-users.php:461
3097
+ msgid "Using a different browser or device"
3098
+ msgstr "使用不同的瀏覽器或裝置"
3099
+
3100
+ #: ../cerber-users.php:467
3101
+ msgid "Enforce two-factor authentication with fixed intervals"
3102
+ msgstr "強制兩步驟驗證與固定間隔"
3103
+
3104
+ #: ../cerber-users.php:473
3105
+ msgid "Regular time intervals (days)"
3106
+ msgstr "固定間隔時間(天)"
3107
+
3108
+ #: ../cerber-users.php:475
3109
+ msgid "days interval"
3110
+ msgstr "天間隔"
3111
+
3112
+ #: ../cerber-users.php:480
3113
+ msgid "Fixed number of logins"
3114
+ msgstr "固定登入次數"
3115
+
3116
+ #: ../cerber-users.php:482
3117
+ msgid "number of logins"
3118
+ msgstr "登入次數"
3119
+
3120
+ #: ../cerber-users.php:524
3121
+ msgid "Policies have been updated"
3122
+ msgstr "策略已更新"
3123
+
3124
+ #: ../settings.php:448
3125
+ msgid "Restrict email addresses"
3126
+ msgstr "限制電子郵件位置"
3127
+
3128
+ #: ../settings.php:451
3129
+ msgid "No restrictions"
3130
+ msgstr "無限制"
3131
+
3132
+ #: ../settings.php:452
3133
+ msgid "Deny all email addresses that match the following"
3134
+ msgstr "符合以下電子郵件位置則全部拒絕"
3135
+
3136
+ #: ../settings.php:453
3137
+ msgid "Permit only email addresses that match the following"
3138
+ msgstr "只允許符合以下的電子郵件位置"
3139
+
3140
+ #: ../settings.php:458
3141
+ msgid "Specify email addresses, wildcards or REGEX patterns. Use comma to separate items."
3142
+ msgstr "指定電子郵件位置、通用字元或正規表示法。使用小寫逗號分隔項目。"
3143
+
3144
+ #: ../settings.php:797
3145
+ msgid "These files will never be deleted during automatic cleanup."
3146
+ msgstr "自動清理時將不會刪除這些檔案。"
3147
+
3148
+ #: ../cerber-2fa.php:352
3149
+ msgid "This verification PIN code is expired. We have just sent a new one to your email."
3150
+ msgstr "驗證 PIN碼已逾期,我們已重新發送至你的郵件。"
3151
+
3152
+ #: ../cerber-2fa.php:355
3153
+ msgid "You have entered an incorrect verification PIN code"
3154
+ msgstr "你輸入了錯誤的驗證 PIN碼"
3155
+
3156
+ #: ../cerber-2fa.php:402 ../cerber-2fa.php:486
3157
+ msgid "Please verify that it’s you"
3158
+ msgstr "請驗證此為您"
3159
+
3160
+ #: ../cerber-2fa.php:489
3161
+ msgid "Please use the following verification PIN code to confirm your identity"
3162
+ msgstr "請使用以下驗證 PIN碼確認你的身份"
3163
+
3164
+ #: ../cerber-2fa.php:514
3165
+ msgid "Here are the details of the sign-in attempt"
3166
+ msgstr "這裡是嘗試登入的詳細資訊"
3167
+
3168
+ #: ../cerber-2fa.php:563
3169
+ msgid "expires"
3170
+ msgstr "逾期時間"
3171
+
3172
+ #: ../cerber-2fa.php:580
3173
+ msgid "only digits are allowed"
3174
+ msgstr "僅允許數字"
3175
+
3176
+ #: ../cerber-2fa.php:583
3177
+ msgid "We've sent a verification PIN code to your email"
3178
+ msgstr "我們已傳送驗證 PIN碼至你的郵件"
3179
+
3180
+ #: ../cerber-2fa.php:584
3181
+ msgid "Enter the code from the email in the field below."
3182
+ msgstr "於以下欄位輸入電子郵件中的代碼。"
3183
+
3184
+ #: ../cerber-2fa.php:586
3185
+ msgid "Try again"
3186
+ msgstr "重新再試"
3187
+
3188
+ #: ../cerber-2fa.php:587
3189
+ msgid "Cancel"
3190
+ msgstr "取消"
3191
+
3192
+ #: ../cerber-2fa.php:588
3193
+ msgid "Did not receive an email?"
3194
+ msgstr "沒有收到電子郵件?"
3195
+
3196
+ #: ../cerber-2fa.php:588
3197
+ msgid "or"
3198
+ msgstr "或"
3199
+
3200
+ #: ../cerber-2fa.php:594
3201
+ msgid "Verify it's you"
3202
+ msgstr "驗證此為您"
3203
+
3204
+ #: ../cerber-2fa.php:599
3205
+ msgid "Verify"
3206
+ msgstr "驗證"
3207
+
3208
+ #: ../cerber-users.php:93
3209
+ msgid "Two-Factor Authentication Email"
3210
+ msgstr "兩步驟驗證 Email"
3211
+
3212
+ #: ../dashboard.php:3193
3213
+ msgid "Role-based rules are configured"
3214
+ msgstr "已設定角色規則"
3215
+
3216
+ #: ../dashboard.php:3387
3217
+ msgid "All Users"
3218
+ msgstr "全部使用者"
3219
+
3220
+ #: ../cerber-users.php:57
3221
+ msgctxt "e.g. blocked by John at 11:00"
3222
+ msgid "blocked by %s at %s"
3223
+ msgstr "由 %s在 %s封鎖"
3224
+
3225
+ #: ../cerber-2fa.php:489
3226
+ msgid "The code is valid for %s minutes."
3227
+ msgstr "代碼僅在 %s分鐘內有效。"
3228
+
3229
+ #: ../dashboard.php:301
3230
+ msgid "IP address %s has been added to White IP Access List"
3231
+ msgstr "已新增 IP位置 %s至 IP存取白名單"
3232
+
3233
+ #: ../dashboard.php:323
3234
+ msgid "IP address %s has been added to Black IP Access List"
3235
+ msgstr "已新增 IP位置 %s至 IP存取黑名單"
3236
+
3237
+ #: ../dashboard.php:804 ../dashboard.php:1071 ../dashboard.php:3904 ../cerber-
3238
+ #: users.php:756
3239
+ msgid "IP Address"
3240
+ msgstr "IP位置"
3241
+
3242
+ #: ../dashboard.php:811 ../dashboard.php:1077
3243
+ msgid "Username"
3244
+ msgstr "帳號"
3245
+
3246
+ #: ../dashboard.php:3275
3247
+ msgid "Any country is permitted"
3248
+ msgstr "任何被允許的國家"
3249
+
3250
+ #: ../dashboard.php:4462
3251
+ msgid "Sessions"
3252
+ msgstr "通信"
3253
+
3254
+ #: ../cerber-users.php:598
3255
+ msgid "Session has been terminated"
3256
+ msgid_plural "%s sessions have been terminated"
3257
+ msgstr[0] "已中止通信"
3258
+
3259
+ #: ../cerber-users.php:754
3260
+ msgid "Created"
3261
+ msgstr "已建立"
3262
+
3263
+ #: ../cerber-users.php:775
3264
+ msgid "Terminate session"
3265
+ msgstr "中止通信"
3266
+
3267
+ #: ../cerber-users.php:776
3268
+ msgid "Block user"
3269
+ msgstr "封鎖使用者"
3270
+
3271
+ #: ../cerber-users.php:886
3272
+ msgid "Profile"
3273
+ msgstr "個人資料"
3274
+
3275
+ #: ../cerber-users.php:899
3276
+ msgid "All Logins"
3277
+ msgstr "所有登入"
3278
+
3279
+ #: ../cerber-users.php:900
3280
+ msgid "User Activity"
3281
+ msgstr "使用者活動"
3282
+
3283
+ #: ../cerber-users.php:947
3284
+ msgid "Terminate"
3285
+ msgstr "中止"
3286
+
3287
+ #: ../dashboard.php:1674
3288
+ msgid "user"
3289
+ msgid_plural "users"
3290
+ msgstr[0] "使用者"
3291
+
3292
+ #: ../settings.php:377
3293
+ msgid "Block access to users' data via REST API"
3294
+ msgstr "透過 REST API封鎖存取使用者資料"
3295
+
3296
+ #: ../cerber-scanner.php:1604
3297
+ msgid "Unable to delete"
3298
+ msgstr "無法刪除"
3299
+
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: Mon Jun 17 2019 13:37:16 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:1711 ../dashboard.php:2622 ../dashboard.
32
- #: php:4460
33
  msgid "Dashboard"
34
  msgstr ""
35
 
@@ -37,791 +37,812 @@ msgstr ""
37
  msgid "Cerber Traffic Inspector"
38
  msgstr ""
39
 
40
- #: ../dashboard.php:56 ../dashboard.php:1681 ../dashboard.php:4526
41
  msgid "Traffic Inspector"
42
  msgstr ""
43
 
44
  #: ../dashboard.php:60
 
 
 
 
 
 
 
 
45
  msgid "Cerber Security Rules"
46
  msgstr ""
47
 
48
- #: ../dashboard.php:60 ../dashboard.php:4562
49
  msgid "Security Rules"
50
  msgstr ""
51
 
52
- #: ../dashboard.php:63
53
  msgid "Cerber User Security"
54
  msgstr ""
55
 
56
- #: ../dashboard.php:63 ../dashboard.php:4542
57
  msgid "User Policies"
58
  msgstr ""
59
 
60
- #: ../dashboard.php:66 ../dashboard.php:4577
61
  msgid "Site Integrity"
62
  msgstr ""
63
 
64
- #: ../dashboard.php:70
65
  msgid "Cerber antispam settings"
66
  msgstr ""
67
 
68
- #: ../dashboard.php:70 ../cerber-load.php:4809 ../settings.php:933
69
  msgid "Antispam"
70
  msgstr ""
71
 
72
- #: ../dashboard.php:75
73
  msgid "Cerber tools"
74
  msgstr ""
75
 
76
- #: ../dashboard.php:75 ../dashboard.php:4612
77
  msgid "Tools"
78
  msgstr ""
79
 
80
- #: ../dashboard.php:179 ../dashboard.php:262
81
  msgid "Remove"
82
  msgstr ""
83
 
84
- #: ../dashboard.php:184 ../cerber-load.php:4512
85
  msgid "IP"
86
  msgstr ""
87
 
88
- #: ../dashboard.php:185 ../dashboard.php:1072
89
  msgid "Hostname"
90
  msgstr ""
91
 
92
- #: ../dashboard.php:186 ../dashboard.php:1073
93
  msgid "Country"
94
  msgstr ""
95
 
96
- #: ../dashboard.php:187 ../cerber-users.php:755
97
  msgid "Expires"
98
  msgstr ""
99
 
100
- #: ../dashboard.php:188 ../cerber-load.php:3848
101
  msgid "Reason"
102
  msgstr ""
103
 
104
- #: ../dashboard.php:189 ../cerber-users.php:758 ../cerber-scanner.php:5772 ..
105
  #: /cerber-scanner.php:5920
106
  msgid "Action"
107
  msgstr ""
108
 
109
- #: ../dashboard.php:205
110
  #, php-format
111
  msgid "Showing last %d records from %d"
112
  msgstr ""
113
 
114
- #: ../dashboard.php:207
115
  msgid "Hint"
116
  msgstr ""
117
 
118
- #: ../dashboard.php:207
119
  msgid "To view activity, click on the IP"
120
  msgstr ""
121
 
122
- #: ../dashboard.php:211
123
  msgid "No lockouts at the moment. The sky is clear."
124
  msgstr ""
125
 
126
- #: ../dashboard.php:234 ../dashboard.php:1287 ../dashboard.php:1324 ../dashboard.
127
- #: php:1676 ../dashboard.php:3696 ../cerber-load.php:4796
128
  msgid "White IP Access List"
129
  msgstr ""
130
 
131
- #: ../dashboard.php:234
132
  msgid "These IPs will never be locked out"
133
  msgstr ""
134
 
135
- #: ../dashboard.php:236 ../dashboard.php:1290 ../dashboard.php:1327 ../dashboard.
136
- #: php:1677 ../dashboard.php:3697
137
  msgid "Black IP Access List"
138
  msgstr ""
139
 
140
- #: ../dashboard.php:236
141
  msgid "Nobody can log in or register from these IPs"
142
  msgstr ""
143
 
144
- #: ../dashboard.php:243
145
  msgid "Your IP"
146
  msgstr ""
147
 
148
- #: ../dashboard.php:261 ../dashboard.php:1338 ../dashboard.php:1373 ../dashboard.
149
- #: php:1496
150
  msgid "Check for activities"
151
  msgstr ""
152
 
153
- #: ../dashboard.php:268
154
  msgid "List is empty"
155
  msgstr ""
156
 
157
- #: ../dashboard.php:274
158
  msgid "IP address, IPv4 address range or subnet"
159
  msgstr ""
160
 
161
- #: ../dashboard.php:275
162
  msgid "Add IP to the list"
163
  msgstr ""
164
 
165
- #: ../dashboard.php:276
166
  msgid "Optional comment for this entry"
167
  msgstr ""
168
 
169
- #: ../dashboard.php:293 ../dashboard.php:310
170
  msgid "Incorrect IP address or IP range"
171
  msgstr ""
172
 
173
- #: ../dashboard.php:301
174
  #, php-format
175
  msgid "IP address %s has been added to White IP Access List"
176
  msgstr ""
177
 
178
- #: ../dashboard.php:315
179
  msgid "You cannot add your IP address or network"
180
  msgstr ""
181
 
182
- #: ../dashboard.php:323
183
  #, php-format
184
  msgid "IP address %s has been added to Black IP Access List"
185
  msgstr ""
186
 
187
- #: ../dashboard.php:410 ../dashboard.php:3625 ../whois.php:222 ../whois.php:253 ..
188
- #: /common.php:1354 ../common.php:1805 ../nexus/cerber-slave-list.php:283
 
189
  msgid "Unknown"
190
  msgstr ""
191
 
192
- #: ../dashboard.php:483
193
  msgid "unknown"
194
  msgstr ""
195
 
196
- #: ../dashboard.php:546
197
  #, php-format
198
  msgid "Lockout for %s was removed"
199
  msgstr ""
200
 
201
- #: ../dashboard.php:554
202
  msgid "Email has been sent to"
203
  msgstr ""
204
 
205
- #: ../dashboard.php:557
206
  msgid "Unable to send email to"
207
  msgstr ""
208
 
209
- #: ../dashboard.php:612
210
  msgid "Default settings have been loaded"
211
  msgstr ""
212
 
213
- #: ../dashboard.php:804 ../dashboard.php:1071 ../dashboard.php:3904 ../cerber-
214
  #: users.php:756
215
  msgid "IP Address"
216
  msgstr ""
217
 
218
- #: ../dashboard.php:805 ../dashboard.php:1074 ../dashboard.php:3527 ../dashboard.
219
- #: php:3902
220
  msgid "Date"
221
  msgstr ""
222
 
223
- #: ../dashboard.php:806 ../dashboard.php:1075
224
  msgid "Event"
225
  msgstr ""
226
 
227
- #: ../dashboard.php:807
228
  msgid "Additional Details"
229
  msgstr ""
230
 
231
- #: ../dashboard.php:808 ../dashboard.php:1076 ../dashboard.php:3907
232
  msgid "Local User"
233
  msgstr ""
234
 
235
- #: ../dashboard.php:809
236
  msgid "User login"
237
  msgstr ""
238
 
239
- #: ../dashboard.php:810 ../dashboard.php:3532
240
  msgid "User ID"
241
  msgstr ""
242
 
243
- #: ../dashboard.php:811 ../dashboard.php:1077
244
  msgid "Username"
245
  msgstr ""
246
 
247
- #: ../dashboard.php:886 ../dashboard.php:2277
248
  msgid "View all"
249
  msgstr ""
250
 
251
- #: ../dashboard.php:897
252
  msgid "New users"
253
  msgstr ""
254
 
255
- #: ../dashboard.php:903 ../dashboard.php:3933
256
  msgid "Suspicious activity"
257
  msgstr ""
258
 
259
- #: ../dashboard.php:905 ../common.php:1238
260
  msgid "IP blocked"
261
  msgstr ""
262
 
263
- #: ../dashboard.php:907 ../dashboard.php:1674 ../dashboard.php:3935 ../settings.
264
- #: php:386 ../settings.php:854
265
  msgid "Logged in users"
266
  msgstr ""
267
 
268
- #: ../dashboard.php:908 ../dashboard.php:3936
269
  msgid "Not logged in visitors"
270
  msgstr ""
271
 
272
- #: ../dashboard.php:910
273
  msgid "My activity"
274
  msgstr ""
275
 
276
- #: ../dashboard.php:1099 ../dashboard.php:3967
277
  msgid "Export"
278
  msgstr ""
279
 
280
- #: ../dashboard.php:1104
281
  msgid "No activity has been logged."
282
  msgstr ""
283
 
284
- #: ../dashboard.php:1111
285
  msgid "All events"
286
  msgstr ""
287
 
288
- #: ../dashboard.php:1121
289
  msgid "Filter by registered user"
290
  msgstr ""
291
 
292
- #: ../dashboard.php:1122
293
  msgid "Search for IP or username"
294
  msgstr ""
295
 
296
- #: ../dashboard.php:1123 ../dashboard.php:1125
297
  msgid "Filter"
298
  msgstr ""
299
 
300
- #: ../dashboard.php:1295 ../dashboard.php:1331 ../dashboard.php:3701 ../common.
301
- #: php:1291
302
  msgid "Locked out"
303
  msgstr ""
304
 
305
- #: ../dashboard.php:1368
306
  msgid "Abuse email:"
307
  msgstr ""
308
 
309
- #: ../dashboard.php:1373
310
  msgid "Network:"
311
  msgstr ""
312
 
313
- #: ../dashboard.php:1388
314
  msgid "Add network to the Black List"
315
  msgstr ""
316
 
317
- #: ../dashboard.php:1393
318
  msgid "Add IP to the Black List"
319
  msgstr ""
320
 
321
- #: ../dashboard.php:1458
322
  msgid "Activated"
323
  msgstr ""
324
 
325
- #: ../dashboard.php:1480
326
  msgid "Last seen"
327
  msgstr ""
328
 
329
- #: ../dashboard.php:1490 ../dashboard.php:1534
330
  msgid "Registered"
331
  msgstr ""
332
 
333
- #: ../dashboard.php:1531
334
  msgid "Comments"
335
  msgstr ""
336
 
337
- #: ../dashboard.php:1532
338
  msgid "Last login"
339
  msgstr ""
340
 
341
- #: ../dashboard.php:1533
342
  msgid "Failed login attempts"
343
  msgstr ""
344
 
345
- #: ../dashboard.php:1565 ../dashboard.php:1656 ../common.php:1494 ../nexus/cerber-
346
  #: slave-list.php:297
347
  msgid "Never"
348
  msgstr ""
349
 
350
- #: ../dashboard.php:1604 ../cerber-users.php:51 ../cerber-users.php:889
351
  msgid "You"
352
  msgstr ""
353
 
354
- #: ../dashboard.php:1622
355
  msgid "Cerber Quick View"
356
  msgstr ""
357
 
358
- #: ../dashboard.php:1660 ../dashboard.php:1685
359
  msgid "active"
360
  msgstr ""
361
 
362
- #: ../dashboard.php:1660
363
  msgid "deactivate"
364
  msgstr ""
365
 
366
- #: ../dashboard.php:1662
367
  msgid "not active"
368
  msgstr ""
369
 
370
- #: ../dashboard.php:1663 ../dashboard.php:1680
371
  msgid "disabled"
372
  msgstr ""
373
 
374
- #: ../dashboard.php:1668
375
  msgid "failed attempts"
376
  msgstr ""
377
 
378
- #: ../dashboard.php:1668 ../dashboard.php:1669
379
  msgid "in 24 hours"
380
  msgstr ""
381
 
382
- #: ../dashboard.php:1668 ../dashboard.php:1669
383
  msgid "view all"
384
  msgstr ""
385
 
386
- #: ../dashboard.php:1669
387
  msgid "lockouts"
388
  msgstr ""
389
 
390
- #: ../dashboard.php:1671
391
  msgid "Lockouts at the moment"
392
  msgstr ""
393
 
394
- #: ../dashboard.php:1672
395
  msgid "Last lockout"
396
  msgstr ""
397
 
398
- #: ../dashboard.php:1674
399
  msgid "user"
400
  msgid_plural "users"
401
  msgstr[0] ""
402
  msgstr[1] ""
403
 
404
- #: ../dashboard.php:1676 ../dashboard.php:1677 ../dashboard.php:2604
405
  msgid "entry"
406
  msgid_plural "entries"
407
  msgstr[0] ""
408
  msgstr[1] ""
409
 
410
- #: ../dashboard.php:1678 ../settings.php:257
411
  msgid "Citadel mode"
412
  msgstr ""
413
 
414
- #: ../dashboard.php:1680
415
  msgid "enabled"
416
  msgstr ""
417
 
418
- #: ../dashboard.php:1685
419
  msgid "no connection"
420
  msgstr ""
421
 
422
- #: ../dashboard.php:1695
423
  msgctxt "Example: Last malware scan: 23 Jan 2018"
424
  msgid "Last malware scan"
425
  msgstr ""
426
 
427
- #: ../dashboard.php:1698 ../dashboard.php:1700 ../cerber-users.php:20 ../cerber-
428
- #: users.php:431 ../settings.php:556 ../settings.php:581 ../settings.php:1005 ..
429
  #: /cerber-scanner.php:1625
430
  msgid "Disabled"
431
  msgstr ""
432
 
433
- #: ../dashboard.php:1699 ../cerber-scanner.php:1066
434
  msgid "Quick Scan"
435
  msgstr ""
436
 
437
- #: ../dashboard.php:1701 ../cerber-scanner.php:1066
438
  msgid "Full Scan"
439
  msgstr ""
440
 
441
- #: ../dashboard.php:1712 ../dashboard.php:2263 ../dashboard.php:4461 ../cerber-
442
- #: load.php:4503 ../cerber-users.php:922 ../settings.php:282
443
  msgid "Activity"
444
  msgstr ""
445
 
446
- #: ../dashboard.php:1713 ../cerber-users.php:923
447
  msgid "Traffic"
448
  msgstr ""
449
 
450
- #: ../dashboard.php:1714
451
  msgid "Integrity"
452
  msgstr ""
453
 
454
- #: ../dashboard.php:1717
455
  msgid "A new version is available"
456
  msgstr ""
457
 
458
- #: ../dashboard.php:2080 ../settings.php:244
459
  msgid "My site is behind a reverse proxy"
460
  msgstr ""
461
 
462
- #: ../dashboard.php:2256
463
  msgid "in the last 24 hours"
464
  msgstr ""
465
 
466
- #: ../dashboard.php:2280
467
  msgid "Recently locked out IP addresses"
468
  msgstr ""
469
 
470
- #: ../dashboard.php:2304
471
  msgid "Confused about some settings?"
472
  msgstr ""
473
 
474
- #: ../dashboard.php:2305
475
  msgid "You can easily load default recommended settings using button below"
476
  msgstr ""
477
 
478
- #: ../dashboard.php:2307
479
  msgid "Load default settings"
480
  msgstr ""
481
 
482
- #: ../dashboard.php:2309 ../cerber-users.php:945 ../cerber-tools.php:649 ..
483
  #: /nexus/cerber-slave-list.php:230 ../cerber-scanner.php:5746 ../cerber-scanner.
484
  #: php:5904
485
  msgid "Are you sure?"
486
  msgstr ""
487
 
488
- #: ../dashboard.php:2315
489
  msgid "doesn't affect Custom login URL and Access Lists"
490
  msgstr ""
491
 
492
- #: ../dashboard.php:2316 ../cerber-load.php:3880 ../cerber-load.php:4798
493
  msgid "Getting Started Guide"
494
  msgstr ""
495
 
496
- #: ../dashboard.php:2421
497
  msgid "Attention! Citadel mode is now active. Nobody is able to log in."
498
  msgstr ""
499
 
500
- #: ../dashboard.php:2422
501
  msgid "Deactivate"
502
  msgstr ""
503
 
504
- #: ../dashboard.php:2423 ../dashboard.php:2861
505
  msgid "View Activity"
506
  msgstr ""
507
 
508
- #: ../dashboard.php:2438 ../nexus/cerber-nexus-slave.php:443
509
  msgid "Settings saved"
510
  msgstr ""
511
 
512
- #: ../dashboard.php:2509
513
  msgid "Create Alert"
514
  msgstr ""
515
 
516
- #: ../dashboard.php:2513
517
  msgid "Delete Alert"
518
  msgstr ""
519
 
520
- #: ../dashboard.php:2546
521
  msgid "You've subscribed"
522
  msgstr ""
523
 
524
- #: ../dashboard.php:2547
525
  msgid "The alert has been created"
526
  msgstr ""
527
 
528
- #: ../dashboard.php:2551
529
  msgid "You've unsubscribed"
530
  msgstr ""
531
 
532
- #: ../dashboard.php:2552
533
  msgid "The alert has been deleted"
534
  msgstr ""
535
 
536
- #: ../dashboard.php:2623
537
  msgid "Main settings"
538
  msgstr ""
539
 
540
- #: ../dashboard.php:2729
541
  msgid "Are you sure you want to delete selected files?"
542
  msgstr ""
543
 
544
- #: ../dashboard.php:2730
545
  msgid "These files have been moved to the quarantine"
546
  msgstr ""
547
 
548
- #: ../dashboard.php:2733
549
  msgid "Do you want to add selected files to the ignore list?"
550
  msgstr ""
551
 
552
- #: ../dashboard.php:2734
553
  msgid "These files have been added to the ignore list"
554
  msgstr ""
555
 
556
- #: ../dashboard.php:2736
557
  msgid "Some errors occurred"
558
  msgstr ""
559
 
560
- #: ../dashboard.php:2737
561
  msgid "All files have been processed"
562
  msgstr ""
563
 
564
- #: ../dashboard.php:3121 ../common.php:899
565
  msgid "Save Changes"
566
  msgstr ""
567
 
568
- #: ../dashboard.php:3193
569
  msgid "Role-based rules are configured"
570
  msgstr ""
571
 
572
- #: ../dashboard.php:3243
573
  msgid "Start typing here to find a country"
574
  msgstr ""
575
 
576
- #: ../dashboard.php:3250
577
  msgid "Save all rules"
578
  msgstr ""
579
 
580
- #: ../dashboard.php:3263
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:3266
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:3274
595
  msgid "No rule"
596
  msgstr ""
597
 
598
- #: ../dashboard.php:3275
599
  msgid "Any country is permitted"
600
  msgstr ""
601
 
602
- #: ../dashboard.php:3358
603
  msgid "Click on a country name to add it to the list of selected countries"
604
  msgstr ""
605
 
606
- #: ../dashboard.php:3362
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:3365
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:3385
619
  msgid "Log in to the website"
620
  msgstr ""
621
 
622
- #: ../dashboard.php:3387
623
  msgid "All Users"
624
  msgstr ""
625
 
626
- #: ../dashboard.php:3389
627
  msgid "Register on the website"
628
  msgstr ""
629
 
630
- #: ../dashboard.php:3390
631
  msgid "Submit forms"
632
  msgstr ""
633
 
634
- #: ../dashboard.php:3391
635
  msgid "Post comments"
636
  msgstr ""
637
 
638
- #: ../dashboard.php:3392
639
  msgid "Use XML-RPC"
640
  msgstr ""
641
 
642
- #: ../dashboard.php:3393
643
  msgid "Use REST API"
644
  msgstr ""
645
 
646
- #: ../dashboard.php:3435
647
  msgid "Security rules have been updated"
648
  msgstr ""
649
 
650
- #: ../dashboard.php:3526
651
  msgid "IP address"
652
  msgstr ""
653
 
654
- #: ../dashboard.php:3533
655
  msgid "Page generation time"
656
  msgstr ""
657
 
658
- #: ../dashboard.php:3903
659
  msgid "Request"
660
  msgstr ""
661
 
662
- #: ../dashboard.php:3905 ../cerber-users.php:757
663
  msgid "Host Info"
664
  msgstr ""
665
 
666
- #: ../dashboard.php:3906
667
  msgid "User Agent"
668
  msgstr ""
669
 
670
- #: ../dashboard.php:3923
671
  msgid "No requests have been logged."
672
  msgstr ""
673
 
674
- #: ../dashboard.php:3931
675
  msgid "All requests"
676
  msgstr ""
677
 
678
- #: ../dashboard.php:3934
679
  msgid "Errors"
680
  msgstr ""
681
 
682
- #: ../dashboard.php:3939
683
  msgid "Form submissions"
684
  msgstr ""
685
 
686
- #: ../dashboard.php:3941
687
  msgid "Page Not Found"
688
  msgstr ""
689
 
690
- #: ../dashboard.php:3950
691
  msgid "Longer than"
692
  msgstr ""
693
 
694
- #: ../dashboard.php:3960
695
  msgid "Advanced Search"
696
  msgstr ""
697
 
698
- #: ../dashboard.php:3973
699
  msgid "Refresh"
700
  msgstr ""
701
 
702
- #: ../dashboard.php:4264
703
  msgid "Any"
704
  msgstr ""
705
 
706
- #: ../dashboard.php:4462
707
  msgid "Sessions"
708
  msgstr ""
709
 
710
- #: ../dashboard.php:4463
711
  msgid "Lockouts"
712
  msgstr ""
713
 
714
- #: ../dashboard.php:4464 ../cerber-load.php:4806
715
  msgid "Main Settings"
716
  msgstr ""
717
 
718
- #: ../dashboard.php:4465 ../cerber-load.php:4808 ../cerber-tools.php:38 ../cerber-
719
  #: tools.php:47 ../cerber-tools.php:139
720
  msgid "Access Lists"
721
  msgstr ""
722
 
723
- #: ../dashboard.php:4466 ../cerber-load.php:4810
724
  msgid "Hardening"
725
  msgstr ""
726
 
727
- #: ../dashboard.php:4468 ../cerber-load.php:4811 ../settings.php:270
728
  msgid "Notifications"
729
  msgstr ""
730
 
731
- #: ../dashboard.php:4506
732
  msgid "Antispam and bot detection settings"
733
  msgstr ""
734
 
735
- #: ../dashboard.php:4508
736
  msgid "Antispam engine"
737
  msgstr ""
738
 
739
- #: ../dashboard.php:4528
740
  msgid "Live Traffic"
741
  msgstr ""
742
 
743
- #: ../dashboard.php:4529 ../dashboard.php:4580 ../cerber-tools.php:37 ../cerber-
744
  #: tools.php:46 ../nexus/cerber-nexus.php:90
745
  msgid "Settings"
746
  msgstr ""
747
 
748
  #: ../dashboard.php:4544
 
 
 
 
 
 
 
 
 
 
 
 
749
  msgid "Role-based"
750
  msgstr ""
751
 
752
- #: ../dashboard.php:4545
753
  msgid "Global"
754
  msgstr ""
755
 
756
- #: ../dashboard.php:4564
757
  msgid "Countries"
758
  msgstr ""
759
 
760
- #: ../dashboard.php:4579 ../cerber-load.php:4807
761
  msgid "Security Scanner"
762
  msgstr ""
763
 
764
- #: ../dashboard.php:4581
765
  msgid "Scheduling"
766
  msgstr ""
767
 
768
- #: ../dashboard.php:4582
769
  msgid "Cleaning up"
770
  msgstr ""
771
 
772
- #: ../dashboard.php:4583
773
  msgid "Ignore List"
774
  msgstr ""
775
 
776
- #: ../dashboard.php:4584
777
  msgid "Quarantine"
778
  msgstr ""
779
 
780
- #: ../dashboard.php:4614
781
  msgid "Export & Import"
782
  msgstr ""
783
 
784
- #: ../dashboard.php:4615
785
  msgid "Diagnostic"
786
  msgstr ""
787
 
788
- #: ../dashboard.php:4616
789
  msgid "Log"
790
  msgstr ""
791
 
792
- #: ../dashboard.php:4617
793
  msgid "Changelog"
794
  msgstr ""
795
 
796
- #: ../dashboard.php:4618
797
  msgid "License"
798
  msgstr ""
799
 
800
- #: ../dashboard.php:4714
801
  msgid "Help"
802
  msgstr ""
803
 
804
- #: ../dashboard.php:4742
805
  msgid "Log In"
806
  msgstr ""
807
 
808
- #: ../dashboard.php:4743
809
  msgid "Log Out"
810
  msgstr ""
811
 
812
- #: ../dashboard.php:4744
813
  msgid "Register"
814
  msgstr ""
815
 
816
- #: ../dashboard.php:4747
817
  msgid "WooCommerce Log In"
818
  msgstr ""
819
 
820
- #: ../dashboard.php:4748
821
  msgid "WooCommerce Log Out"
822
  msgstr ""
823
 
824
- #: ../dashboard.php:4787 ../dashboard.php:4788
825
  msgid "Add to menu"
826
  msgstr ""
827
 
@@ -846,310 +867,338 @@ msgstr ""
846
  msgid "Cerber Tech Inc."
847
  msgstr ""
848
 
849
- #: ../common.php:193
850
  msgid "Check for requests"
851
  msgstr ""
852
 
853
- #: ../common.php:263
854
  msgid "Malicious activities mitigated"
855
  msgstr ""
856
 
857
- #: ../common.php:266
858
  msgid "Spam comments denied"
859
  msgstr ""
860
 
861
- #: ../common.php:267
862
  msgid "Spam form submissions denied"
863
  msgstr ""
864
 
865
- #: ../common.php:268
866
  msgid "Malicious IP addresses detected"
867
  msgstr ""
868
 
869
- #: ../common.php:269
870
  msgid "Lockouts occurred"
871
  msgstr ""
872
 
873
- #: ../common.php:323 ../common.php:395 ../common.php:400 ../common.php:406 ..
874
- #: /common.php:411 ../cerber-load.php:683 ../cerber-load.php:695 ../cerber-load.
875
- #: php:702 ../cerber-load.php:1024 ../cerber-load.php:1464 ../cerber-load.php:
876
- #: 1470 ../cerber-load.php:1475 ../cerber-load.php:1482 ../cerber-load.php:1489 ..
877
- #: /cerber-load.php:1495 ../cerber-load.php:1502 ../cerber-load.php:1653 ..
878
- #: /cerber-load.php:1790 ../settings.php:1531 ../settings.php:1617 ..
879
- #: /nexus/cerber-nexus-slave.php:215 ../nexus/cerber-nexus-slave.php:226 ..
880
- #: /cerber-scanner.php:5874
881
  msgid "ERROR:"
882
  msgstr ""
883
 
884
- #: ../common.php:1231
885
  msgid "User created"
886
  msgstr ""
887
 
888
- #: ../common.php:1232
889
  msgid "User registered"
890
  msgstr ""
891
 
892
- #: ../common.php:1233
893
  msgid "Logged in"
894
  msgstr ""
895
 
896
- #: ../common.php:1234
897
  msgid "Logged out"
898
  msgstr ""
899
 
900
- #: ../common.php:1235
901
  msgid "Login failed"
902
  msgstr ""
903
 
904
- #: ../common.php:1239
905
  msgid "Subnet blocked"
906
  msgstr ""
907
 
908
- #: ../common.php:1241
909
  msgid "Citadel activated!"
910
  msgstr ""
911
 
912
- #: ../common.php:1242
913
  msgid "Spam comment denied"
914
  msgstr ""
915
 
916
- #: ../common.php:1243
917
  msgid "Spam form submission denied"
918
  msgstr ""
919
 
920
- #: ../common.php:1244
921
  msgid "Form submission denied"
922
  msgstr ""
923
 
924
- #: ../common.php:1245
925
  msgid "Comment denied"
926
  msgstr ""
927
 
928
- #: ../common.php:1256
929
  msgid "Password changed"
930
  msgstr ""
931
 
932
- #: ../common.php:1257
933
  msgid "Password reset requested"
934
  msgstr ""
935
 
936
- #: ../common.php:1259
937
  msgid "reCAPTCHA verification failed"
938
  msgstr ""
939
 
940
- #: ../common.php:1260
941
  msgid "reCAPTCHA settings are incorrect"
942
  msgstr ""
943
 
944
- #: ../common.php:1261
945
  msgid "Request to the Google reCAPTCHA service failed"
946
  msgstr ""
947
 
948
- #: ../common.php:1263 ../common.php:1358
949
  msgid "Attempt to access prohibited URL"
950
  msgstr ""
951
 
952
- #: ../common.php:1264 ../common.php:1337
953
  msgid "Attempt to log in with non-existing username"
954
  msgstr ""
955
 
956
- #: ../common.php:1265 ../common.php:1338
957
  msgid "Attempt to log in with prohibited username"
958
  msgstr ""
959
 
960
- #: ../common.php:1267
961
  msgid "Attempt to log in denied"
962
  msgstr ""
963
 
964
- #: ../common.php:1268
965
  msgid "Attempt to register denied"
966
  msgstr ""
967
 
968
- #: ../common.php:1269 ../common.php:1342
969
  msgid "Probing for vulnerable PHP code"
970
  msgstr ""
971
 
972
- #: ../common.php:1270
973
  msgid "Attempt to upload malicious file denied"
974
  msgstr ""
975
 
976
- #: ../common.php:1271
977
  msgid "File upload denied"
978
  msgstr ""
979
 
980
- #: ../common.php:1273
981
  msgid "Request to REST API denied"
982
  msgstr ""
983
 
984
- #: ../common.php:1274
985
  msgid "XML-RPC request denied"
986
  msgstr ""
987
 
988
- #: ../common.php:1276
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
989
  msgid "Malicious request denied"
990
  msgstr ""
991
 
992
- #: ../common.php:1280
993
  msgid "User activated"
994
  msgstr ""
995
 
996
- #: ../common.php:1283
997
  msgid "Invalid master credentials"
998
  msgstr ""
999
 
1000
- #: ../common.php:1289
1001
  msgid "Bot detected"
1002
  msgstr ""
1003
 
1004
- #: ../common.php:1290
1005
  msgid "Citadel mode is active"
1006
  msgstr ""
1007
 
1008
- #: ../common.php:1292
1009
  msgid "IP address is locked out"
1010
  msgstr ""
1011
 
1012
- #: ../common.php:1293
1013
  msgid "IP blacklisted"
1014
  msgstr ""
1015
 
1016
- #: ../common.php:1295
1017
  msgid "Malicious activity detected"
1018
  msgstr ""
1019
 
1020
- #: ../common.php:1296
1021
  msgid "Blocked by country rule"
1022
  msgstr ""
1023
 
1024
- #: ../common.php:1297
1025
  msgid "Limit reached"
1026
  msgstr ""
1027
 
1028
- #: ../common.php:1298
1029
  msgid "Multiple suspicious activities"
1030
  msgstr ""
1031
 
1032
- #: ../common.php:1299
1033
  msgid "Denied"
1034
  msgstr ""
1035
 
1036
- #: ../common.php:1300
1037
  msgid "Suspicious number of fields"
1038
  msgstr ""
1039
 
1040
- #: ../common.php:1301
1041
  msgid "Suspicious number of nested values"
1042
  msgstr ""
1043
 
1044
- #: ../common.php:1302 ../common.php:1343
1045
  msgid "Malicious code detected"
1046
  msgstr ""
1047
 
1048
- #: ../common.php:1303
1049
  msgid "Suspicious SQL code detected"
1050
  msgstr ""
1051
 
1052
- #: ../common.php:1304
1053
  msgid "Suspicious JavaScript code detected"
1054
  msgstr ""
1055
 
1056
- #: ../common.php:1305
1057
  msgid "Blocked by administrator"
1058
  msgstr ""
1059
 
1060
- #: ../common.php:1306
1061
  msgid "Site policy enforcement"
1062
  msgstr ""
1063
 
1064
- #: ../common.php:1307
1065
  msgid "2FA code verified"
1066
  msgstr ""
1067
 
1068
- #: ../common.php:1308
1069
  msgid "Initiated by the user"
1070
  msgstr ""
1071
 
1072
- #: ../common.php:1311
1073
  msgid "Email address is not permitted"
1074
  msgstr ""
1075
 
1076
- #: ../common.php:1335
 
 
 
 
 
 
 
 
 
 
 
 
1077
  msgid "Limit on login attempts is reached"
1078
  msgstr ""
1079
 
1080
- #: ../common.php:1336
1081
  msgid "Attempt to access"
1082
  msgstr ""
1083
 
1084
- #: ../common.php:1339
1085
  msgid "Limit on failed reCAPTCHA verifications is reached"
1086
  msgstr ""
1087
 
1088
- #: ../common.php:1340
1089
  msgid "Bot activity is detected"
1090
  msgstr ""
1091
 
1092
- #: ../common.php:1341
1093
  msgid "Multiple suspicious activities were detected"
1094
  msgstr ""
1095
 
1096
- #: ../common.php:1344
1097
  msgid "Attempt to upload a file with malicious code"
1098
  msgstr ""
1099
 
1100
- #: ../common.php:1346
1101
  msgid "Multiple suspicious requests"
1102
  msgstr ""
1103
 
1104
  #. translators: Time difference between two dates, in seconds (sec=second). 1: Number of seconds
1105
- #: ../common.php:1482
1106
  #, php-format
1107
  msgid "%s sec"
1108
  msgid_plural "%s secs"
1109
  msgstr[0] ""
1110
  msgstr[1] ""
1111
 
1112
- #: ../common.php:1489
1113
  #, php-format
1114
  msgid "%s ago"
1115
  msgstr ""
1116
 
1117
- #: ../common.php:1489
1118
  #, php-format
1119
  msgctxt "preposition of a period of time like: in 6 hours"
1120
  msgid "in %s"
1121
  msgstr ""
1122
 
1123
- #: ../common.php:1575
1124
  msgid "Bytes"
1125
  msgstr ""
1126
 
1127
- #: ../common.php:1677
1128
  #, php-format
1129
  msgid "A new version of %s is available. Please install it."
1130
  msgstr ""
1131
 
1132
- #: ../common.php:1697
1133
  msgid "Not specified"
1134
  msgstr ""
1135
 
1136
- #: ../common.php:2593
1137
  msgid "Unable to create the directory"
1138
  msgstr ""
1139
 
1140
- #: ../common.php:2598
1141
  msgid "Destination folder access denied"
1142
  msgstr ""
1143
 
1144
- #: ../common.php:2601
1145
  msgid "File not found"
1146
  msgstr ""
1147
 
1148
- #: ../common.php:2604
1149
  msgid "Unable to copy the file"
1150
  msgstr ""
1151
 
1152
- #: ../common.php:2610
1153
  msgid "Unable to delete the file"
1154
  msgstr ""
1155
 
@@ -1160,15 +1209,15 @@ msgid ""
1160
  "more: <a href=\"https://wpcerber.com\">wpcerber.com</a>."
1161
  msgstr ""
1162
 
1163
- #: ../cerber-news.php:145
1164
  msgid "Awesome!"
1165
  msgstr ""
1166
 
1167
- #: ../cerber-lab.php:770
1168
  msgid "Want to make WP Cerber even more powerful?"
1169
  msgstr ""
1170
 
1171
- #: ../cerber-lab.php:771
1172
  msgid ""
1173
  "Allow WP Cerber to send locked out malicious IP addresses to Cerber Lab. "
1174
  "This helps the plugin team to develop new algorithms for WP Cerber that will "
@@ -1176,256 +1225,256 @@ msgid ""
1176
  "everyday. You can disable the sending in the plugin settings at any time."
1177
  msgstr ""
1178
 
1179
- #: ../cerber-lab.php:772
1180
  msgid "OK, nail them all"
1181
  msgstr ""
1182
 
1183
- #: ../cerber-lab.php:773
1184
  msgid "NO, maybe later"
1185
  msgstr ""
1186
 
1187
- #: ../cerber-lab.php:774 ../settings.php:720 ../settings.php:887
1188
  msgid "Know more"
1189
  msgstr ""
1190
 
1191
- #: ../cerber-load.php:375
1192
  msgid "You are not allowed to log in. Ask your administrator for assistance."
1193
  msgstr ""
1194
 
1195
- #: ../cerber-load.php:381
1196
  #, php-format
1197
  msgid ""
1198
  "You have exceeded the number of allowed login attempts. Please try again in "
1199
  "%d minutes."
1200
  msgstr ""
1201
 
1202
- #: ../cerber-load.php:385
1203
  msgid "You are not allowed to log in"
1204
  msgstr ""
1205
 
1206
- #: ../cerber-load.php:400
1207
  #, php-format
1208
  msgid "You have only one attempt remaining."
1209
  msgid_plural "You have %d attempts remaining."
1210
  msgstr[0] ""
1211
  msgstr[1] ""
1212
 
1213
- #: ../cerber-load.php:712
1214
  msgid ""
1215
  "Human verification failed. Please click the square box in the reCAPTCHA "
1216
  "block below."
1217
  msgstr ""
1218
 
1219
- #: ../cerber-load.php:833
1220
  msgid ""
1221
  "> > > Translator of WP Cerber? To get the PRO license for free, drop your "
1222
  "contacts here: https://wpcerber.com/contact/"
1223
  msgstr ""
1224
 
1225
- #: ../cerber-load.php:1035
1226
  #, php-format
1227
  msgid ""
1228
  "<strong>ERROR</strong>: The password you entered for the username %s is "
1229
  "incorrect."
1230
  msgstr ""
1231
 
1232
- #: ../cerber-load.php:1465 ../cerber-load.php:1471 ../cerber-load.php:1496 ..
1233
- #: /cerber-load.php:1503
1234
  msgid "You are not allowed to register."
1235
  msgstr ""
1236
 
1237
- #: ../cerber-load.php:1483
1238
  msgid "Username is not allowed. Please choose another one."
1239
  msgstr ""
1240
 
1241
- #: ../cerber-load.php:1490
1242
  msgid "Email address is not permitted."
1243
  msgstr ""
1244
 
1245
- #: ../cerber-load.php:1490
1246
  msgid "Please choose another one."
1247
  msgstr ""
1248
 
1249
- #: ../cerber-load.php:1790
1250
  msgid "Sorry, human verification failed."
1251
  msgstr ""
1252
 
1253
- #: ../cerber-load.php:3678
1254
  msgid "We're sorry, you are not allowed to proceed"
1255
  msgstr ""
1256
 
1257
- #: ../cerber-load.php:3789
1258
  msgid "WP Cerber notify"
1259
  msgstr ""
1260
 
1261
- #: ../cerber-load.php:3813
1262
  msgid "Citadel mode is activated"
1263
  msgstr ""
1264
 
1265
- #: ../cerber-load.php:3815
1266
  #, php-format
1267
  msgid "Citadel mode is activated after %d failed login attempts in %d minutes."
1268
  msgstr ""
1269
 
1270
- #: ../cerber-load.php:3816
1271
  #, php-format
1272
  msgid "Last failed attempt was at %s from IP %s with user login: %s."
1273
  msgstr ""
1274
 
1275
- #: ../cerber-load.php:3817 ../cerber-load.php:4544
1276
  msgid "View activity in dashboard"
1277
  msgstr ""
1278
 
1279
- #: ../cerber-load.php:3841
1280
  msgid "unspecified"
1281
  msgstr ""
1282
 
1283
- #: ../cerber-load.php:3844
1284
  msgid "Number of lockouts is increasing"
1285
  msgstr ""
1286
 
1287
- #: ../cerber-load.php:3846
1288
  msgid "Number of active lockouts"
1289
  msgstr ""
1290
 
1291
- #: ../cerber-load.php:3847
1292
  #, php-format
1293
  msgid "Last lockout was added: %s for IP %s"
1294
  msgstr ""
1295
 
1296
- #: ../cerber-load.php:3849
1297
  msgid "View activity for this IP"
1298
  msgstr ""
1299
 
1300
- #: ../cerber-load.php:3850
1301
  msgid "View lockouts in dashboard"
1302
  msgstr ""
1303
 
1304
- #: ../cerber-load.php:3853 ../cerber-load.php:3855
1305
  msgid "A new version of WP Cerber is available to install"
1306
  msgstr ""
1307
 
1308
- #: ../cerber-load.php:3854
1309
  msgid "Hi!"
1310
  msgstr ""
1311
 
1312
- #: ../cerber-load.php:3857 ../cerber-load.php:3868 ../nexus/cerber-slave-list.php:
1313
  #: 45
1314
  msgid "Website"
1315
  msgstr ""
1316
 
1317
- #: ../cerber-load.php:3860 ../cerber-load.php:3861
1318
  msgid "The WP Cerber security plugin has been deactivated"
1319
  msgstr ""
1320
 
1321
- #: ../cerber-load.php:3863
1322
  msgid "Not logged in"
1323
  msgstr ""
1324
 
1325
- #: ../cerber-load.php:3869
1326
  msgid "By user"
1327
  msgstr ""
1328
 
1329
- #: ../cerber-load.php:3870
1330
  msgid "From IP address"
1331
  msgstr ""
1332
 
1333
- #: ../cerber-load.php:3873
1334
  msgid "From country"
1335
  msgstr ""
1336
 
1337
- #: ../cerber-load.php:3877
1338
  msgid "The WP Cerber security plugin is now active"
1339
  msgstr ""
1340
 
1341
- #: ../cerber-load.php:3878 ../cerber-load.php:4795
1342
  msgid "WP Cerber is now active and has started protecting your site"
1343
  msgstr ""
1344
 
1345
- #: ../cerber-load.php:3885
1346
  msgid "New Custom login URL"
1347
  msgstr ""
1348
 
1349
- #: ../cerber-load.php:3889 ../cerber-load.php:3890
1350
  msgid "A new activity has been recorded"
1351
  msgstr ""
1352
 
1353
- #: ../cerber-load.php:3895
1354
  msgid "Weekly report"
1355
  msgstr ""
1356
 
1357
- #: ../cerber-load.php:3898 ../cerber-load.php:3908
1358
  msgid "To change reporting settings visit"
1359
  msgstr ""
1360
 
1361
- #: ../cerber-load.php:3905
1362
  msgid "Scanner Report"
1363
  msgstr ""
1364
 
1365
- #: ../cerber-load.php:3931
1366
  msgid "Your login page:"
1367
  msgstr ""
1368
 
1369
- #: ../cerber-load.php:3935
1370
  msgid "Your license is valid until"
1371
  msgstr ""
1372
 
1373
- #: ../cerber-load.php:3938
1374
  msgid "This message was sent by"
1375
  msgstr ""
1376
 
1377
- #: ../cerber-load.php:3959
1378
  #, php-format
1379
  msgid "Your last sign-in was %s from %s"
1380
  msgstr ""
1381
 
1382
- #: ../cerber-load.php:4029
1383
  msgid "Weekly Report"
1384
  msgstr ""
1385
 
1386
- #: ../cerber-load.php:4041
1387
  msgid "Activity details"
1388
  msgstr ""
1389
 
1390
- #: ../cerber-load.php:4055
1391
  msgid "Attempts to log in with non-existing usernames"
1392
  msgstr ""
1393
 
1394
- #: ../cerber-load.php:4516 ../cerber-users.php:752
1395
  msgid "User"
1396
  msgstr ""
1397
 
1398
- #: ../cerber-load.php:4520
1399
  msgid "Username used"
1400
  msgstr ""
1401
 
1402
- #: ../cerber-load.php:4524
1403
  msgid "Search string"
1404
  msgstr ""
1405
 
1406
- #: ../cerber-load.php:4545
1407
  msgid "To delete the alert, click here"
1408
  msgstr ""
1409
 
1410
- #: ../cerber-load.php:4761
1411
  #, php-format
1412
  msgid "The WP Cerber requires PHP %s or higher. You are running"
1413
  msgstr ""
1414
 
1415
- #: ../cerber-load.php:4765
1416
  #, php-format
1417
  msgid "The WP Cerber requires WordPress %s or higher. You are running"
1418
  msgstr ""
1419
 
1420
- #: ../cerber-load.php:4774
1421
  msgid "Can't activate WP Cerber due to a database error."
1422
  msgstr ""
1423
 
1424
- #: ../cerber-load.php:4796
1425
  msgid "Your IP address is added to the"
1426
  msgstr ""
1427
 
1428
- #: ../cerber-load.php:4812
1429
  msgid "Import settings"
1430
  msgstr ""
1431
 
@@ -1455,7 +1504,7 @@ msgctxt "e.g. blocked by John at 11:00"
1455
  msgid "blocked by %s at %s"
1456
  msgstr ""
1457
 
1458
- #: ../cerber-users.php:67 ../settings.php:424
1459
  msgid "User Message"
1460
  msgstr ""
1461
 
@@ -1503,7 +1552,7 @@ msgstr ""
1503
  msgid "Redirect user after logout"
1504
  msgstr ""
1505
 
1506
- #: ../cerber-users.php:417 ../settings.php:473
1507
  msgid "User session expiration time"
1508
  msgstr ""
1509
 
@@ -1598,1037 +1647,1123 @@ msgstr ""
1598
  msgid "Terminate"
1599
  msgstr ""
1600
 
1601
- #: ../settings.php:127
1602
  msgid "All connected devices"
1603
  msgstr ""
1604
 
1605
- #: ../settings.php:130
1606
  msgid "No devices found"
1607
  msgstr ""
1608
 
1609
- #: ../settings.php:134
1610
  msgid "Not available"
1611
  msgstr ""
1612
 
1613
- #: ../settings.php:140
1614
  msgid ""
1615
  "Please enable Permalinks to use this feature. Set Permalink Settings to "
1616
  "something other than Default."
1617
  msgstr ""
1618
 
1619
- #: ../settings.php:143
1620
  msgid "Be careful about enabling these options."
1621
  msgstr ""
1622
 
1623
- #: ../settings.php:143
1624
  msgid "If you forget your Custom login URL, you will be unable to log in."
1625
  msgstr ""
1626
 
1627
- #: ../settings.php:146
1628
  msgid "These restrictions do not apply to IP addresses in the White IP Access List"
1629
  msgstr ""
1630
 
1631
- #: ../settings.php:150
1632
  msgid "Plugin initialization"
1633
  msgstr ""
1634
 
1635
- #: ../settings.php:153
1636
  msgid "Load security engine"
1637
  msgstr ""
1638
 
1639
- #: ../settings.php:156
1640
  msgid "Legacy mode"
1641
  msgstr ""
1642
 
1643
- #: ../settings.php:157
1644
  msgid "Standard mode"
1645
  msgstr ""
1646
 
1647
- #: ../settings.php:163
1648
  msgid "Limit login attempts"
1649
  msgstr ""
1650
 
1651
- #: ../settings.php:166
1652
  msgid "Attempts"
1653
  msgstr ""
1654
 
1655
- #: ../settings.php:170
1656
  msgid "Lockout duration"
1657
  msgstr ""
1658
 
1659
- #: ../settings.php:171 ../settings.php:266
1660
  msgid "minutes"
1661
  msgstr ""
1662
 
1663
- #: ../settings.php:175
1664
  msgid "Aggressive lockout"
1665
  msgstr ""
1666
 
1667
- #: ../settings.php:179 ../settings.php:417 ../settings.php:562
1668
  msgid "Use White IP Access List"
1669
  msgstr ""
1670
 
1671
- #: ../settings.php:180
1672
  msgid "Apply limit login rules to IP addresses in the White IP Access List"
1673
  msgstr ""
1674
 
1675
- #: ../settings.php:186
1676
  msgid "Proactive security rules"
1677
  msgstr ""
1678
 
1679
- #: ../settings.php:187
1680
  msgid "Make your protection smarter!"
1681
  msgstr ""
1682
 
1683
- #: ../settings.php:190
1684
  msgid "Block subnet"
1685
  msgstr ""
1686
 
1687
- #: ../settings.php:191
1688
  msgid "Always block entire subnet Class C of intruders IP"
1689
  msgstr ""
1690
 
1691
- #: ../settings.php:195
1692
  msgid "Non-existing users"
1693
  msgstr ""
1694
 
1695
- #: ../settings.php:196
1696
  msgid "Immediately block IP when attempting to log in with a non-existing username"
1697
  msgstr ""
1698
 
1699
- #: ../settings.php:200
1700
  msgid "Disable dashboard redirection"
1701
  msgstr ""
1702
 
1703
- #: ../settings.php:201
1704
  msgid ""
1705
  "Disable automatic redirection to the login page when /wp-admin/ is requested "
1706
  "by an unauthorized request"
1707
  msgstr ""
1708
 
1709
- #: ../settings.php:205
1710
  msgid "Request wp-login.php"
1711
  msgstr ""
1712
 
1713
- #: ../settings.php:206
1714
  msgid "Immediately block IP after any request to wp-login.php"
1715
  msgstr ""
1716
 
1717
- #: ../settings.php:210
1718
  msgid "Display 404 page"
1719
  msgstr ""
1720
 
1721
- #: ../settings.php:213
1722
  msgid "Use 404 template from the active theme"
1723
  msgstr ""
1724
 
1725
- #: ../settings.php:214
1726
  msgid "Display simple 404 page"
1727
  msgstr ""
1728
 
1729
- #: ../settings.php:221
1730
  msgid "Custom login page"
1731
  msgstr ""
1732
 
1733
- #: ../settings.php:225
1734
  msgid "Custom login URL"
1735
  msgstr ""
1736
 
1737
- #: ../settings.php:226
1738
  msgid "must not overlap with the existing pages or posts slug"
1739
  msgstr ""
1740
 
1741
- #: ../settings.php:228
1742
  msgid ""
1743
  "Custom login URL may contain Latin alphanumeric characters, dashes and "
1744
  "underscores only"
1745
  msgstr ""
1746
 
1747
- #: ../settings.php:233
1748
  msgid "Disable wp-login.php"
1749
  msgstr ""
1750
 
1751
- #: ../settings.php:234
1752
  msgid "Block direct access to wp-login.php and return HTTP 404 Not Found Error"
1753
  msgstr ""
1754
 
1755
- #: ../settings.php:240
1756
  msgid "Site-specific settings"
1757
  msgstr ""
1758
 
1759
- #: ../settings.php:243
1760
  msgid "Site connection"
1761
  msgstr ""
1762
 
1763
- #: ../settings.php:248
1764
  msgid "Prefix for plugin cookies"
1765
  msgstr ""
1766
 
1767
- #: ../settings.php:249
1768
  msgid "Prefix may contain only Latin alphanumeric characters and underscores"
1769
  msgstr ""
1770
 
1771
- #: ../settings.php:258
1772
  msgid ""
1773
  "In the Citadel mode nobody is able to log in except IPs from the White IP "
1774
  "Access List. Active user sessions will not be affected."
1775
  msgstr ""
1776
 
1777
- #: ../settings.php:261
1778
  msgid "Threshold"
1779
  msgstr ""
1780
 
1781
- #: ../settings.php:265 ../cerber-scanner.php:3948
1782
  msgid "Duration"
1783
  msgstr ""
1784
 
1785
- #: ../settings.php:272
1786
  msgid "Send notification to admin email"
1787
  msgstr ""
1788
 
1789
- #: ../settings.php:277 ../settings.php:1307
1790
  msgid "Click to send test"
1791
  msgstr ""
1792
 
1793
- #: ../settings.php:285 ../settings.php:642
1794
  msgid "Keep records for"
1795
  msgstr ""
1796
 
1797
- #: ../settings.php:286 ../settings.php:643 ../settings.php:696 ../settings.php:879
1798
  msgid "days"
1799
  msgstr ""
1800
 
1801
- #: ../settings.php:296
1802
  msgid "Cerber Lab connection"
1803
  msgstr ""
1804
 
1805
- #: ../settings.php:297
1806
  msgid "Send malicious IP addresses to the Cerber Lab"
1807
  msgstr ""
1808
 
1809
- #: ../settings.php:301
1810
  msgid "Cerber Lab protocol"
1811
  msgstr ""
1812
 
1813
- #: ../settings.php:309
1814
  msgid "Use file"
1815
  msgstr ""
1816
 
1817
- #: ../settings.php:310
1818
  msgid "Write failed login attempts to the file"
1819
  msgstr ""
1820
 
1821
- #: ../settings.php:316
1822
  msgid "Preferences"
1823
  msgstr ""
1824
 
1825
- #: ../settings.php:319
1826
  msgid "Drill down IP"
1827
  msgstr ""
1828
 
1829
- #: ../settings.php:320
1830
  msgid "Retrieve extra WHOIS information for IP"
1831
  msgstr ""
1832
 
1833
- #: ../settings.php:324
1834
  msgid "Date format"
1835
  msgstr ""
1836
 
1837
- #: ../settings.php:325
1838
  #, php-format
1839
  msgid "if empty, the default format %s will be used"
1840
  msgstr ""
1841
 
1842
- #: ../settings.php:330
1843
  msgid "Use English for admin interface"
1844
  msgstr ""
1845
 
1846
- #: ../settings.php:337
1847
  msgid "Hardening WordPress"
1848
  msgstr ""
1849
 
1850
- #: ../settings.php:341 ../settings.php:376
1851
  msgid "Stop user enumeration"
1852
  msgstr ""
1853
 
1854
- #: ../settings.php:342
1855
  msgid "Block access to user pages like /?author=n"
1856
  msgstr ""
1857
 
1858
- #: ../settings.php:346
1859
  msgid "Protect admin scripts"
1860
  msgstr ""
1861
 
1862
- #: ../settings.php:347
1863
  msgid "Block unauthorized access to load-scripts.php and load-styles.php"
1864
  msgstr ""
1865
 
1866
- #: ../settings.php:351
1867
  msgid "Disable PHP in uploads"
1868
  msgstr ""
1869
 
1870
- #: ../settings.php:352
1871
  msgid "Block execution of PHP scripts in the WordPress media folder"
1872
  msgstr ""
1873
 
1874
- #: ../settings.php:356
1875
  msgid "Disable PHP error displaying"
1876
  msgstr ""
1877
 
1878
- #: ../settings.php:360
1879
  msgid "Disable XML-RPC"
1880
  msgstr ""
1881
 
1882
- #: ../settings.php:361
1883
  msgid "Block access to the XML-RPC server (including Pingbacks and Trackbacks)"
1884
  msgstr ""
1885
 
1886
- #: ../settings.php:365
1887
  msgid "Disable feeds"
1888
  msgstr ""
1889
 
1890
- #: ../settings.php:366
1891
  msgid "Block access to the RSS, Atom and RDF feeds"
1892
  msgstr ""
1893
 
1894
- #: ../settings.php:372
1895
  msgid "Access to WordPress REST API"
1896
  msgstr ""
1897
 
1898
- #: ../settings.php:377
1899
  msgid "Block access to users' data via REST API"
1900
  msgstr ""
1901
 
1902
- #: ../settings.php:381
1903
  msgid "Disable REST API"
1904
  msgstr ""
1905
 
1906
- #: ../settings.php:382
1907
  msgid "Block access to WordPress REST API except any of the following"
1908
  msgstr ""
1909
 
1910
- #: ../settings.php:387
1911
  msgid "Allow REST API for logged in users"
1912
  msgstr ""
1913
 
1914
- #: ../settings.php:391
1915
  msgid "Allow REST API for these roles"
1916
  msgstr ""
1917
 
1918
- #: ../settings.php:395
1919
  msgid "Allow these namespaces"
1920
  msgstr ""
1921
 
1922
- #: ../settings.php:399
1923
  msgid ""
1924
  "Specify REST API namespaces to be allowed if REST API is disabled. One "
1925
  "string per line."
1926
  msgstr ""
1927
 
1928
- #: ../settings.php:410
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1929
  msgid "Authorized users only"
1930
  msgstr ""
1931
 
1932
- #: ../settings.php:411
1933
  msgid "Only registered and logged in website users have access to the website"
1934
  msgstr ""
1935
 
1936
- #: ../settings.php:418
1937
- msgid "Do not apply this policy to IP addresses in the White IP Access List"
1938
  msgstr ""
1939
 
1940
- #: ../settings.php:428 ../settings.php:2028
1941
  msgid "Only registered and logged in users are allowed to view this website"
1942
  msgstr ""
1943
 
1944
- #: ../settings.php:433
1945
  msgid "Redirect to URL"
1946
  msgstr ""
1947
 
1948
- #: ../settings.php:442
1949
  msgid "Registration limit"
1950
  msgstr ""
1951
 
1952
- #: ../settings.php:448
1953
  msgid "Restrict email addresses"
1954
  msgstr ""
1955
 
1956
- #: ../settings.php:451
1957
  msgid "No restrictions"
1958
  msgstr ""
1959
 
1960
- #: ../settings.php:452
1961
  msgid "Deny all email addresses that match the following"
1962
  msgstr ""
1963
 
1964
- #: ../settings.php:453
1965
  msgid "Permit only email addresses that match the following"
1966
  msgstr ""
1967
 
1968
- #: ../settings.php:458
1969
  msgid ""
1970
  "Specify email addresses, wildcards or REGEX patterns. Use comma to separate "
1971
  "items."
1972
  msgstr ""
1973
 
1974
- #: ../settings.php:458 ../settings.php:466
1975
  msgid "To specify a REGEX pattern wrap a pattern in two forward slashes."
1976
  msgstr ""
1977
 
1978
- #: ../settings.php:465
1979
  msgid "Prohibited usernames"
1980
  msgstr ""
1981
 
1982
- #: ../settings.php:466
1983
  msgid ""
1984
  "Usernames from this list are not allowed to log in or register. Any IP "
1985
  "address, have tried to use any of these usernames, will be immediately "
1986
  "blocked. Use comma to separate logins."
1987
  msgstr ""
1988
 
1989
- #: ../settings.php:474
1990
  msgid "in minutes (leave empty to use default WP value)"
1991
  msgstr ""
1992
 
1993
- #: ../settings.php:480
1994
  msgid "Sort users in dashboard"
1995
  msgstr ""
1996
 
1997
- #: ../settings.php:481
1998
  msgid "by date of registration"
1999
  msgstr ""
2000
 
2001
- #: ../settings.php:489
2002
  msgid "Email notifications"
2003
  msgstr ""
2004
 
2005
- #: ../settings.php:492
2006
  msgid "Lockout notifications"
2007
  msgstr ""
2008
 
2009
- #: ../settings.php:496 ../settings.php:539 ../settings.php:749
2010
  msgid "Email Address"
2011
  msgstr ""
2012
 
2013
- #: ../settings.php:497 ../settings.php:541 ../settings.php:615 ../settings.php:751
2014
  msgid "Use comma to specify multiple values"
2015
  msgstr ""
2016
 
2017
- #: ../settings.php:501
2018
  #, php-format
2019
  msgid "if empty, the admin email %s will be used"
2020
  msgstr ""
2021
 
2022
- #: ../settings.php:504
2023
  msgid "Notification limit"
2024
  msgstr ""
2025
 
2026
- #: ../settings.php:505
2027
  msgid "notification letters allowed per hour (0 means unlimited)"
2028
  msgstr ""
2029
 
2030
- #: ../settings.php:509
2031
  msgid "New version is available"
2032
  msgstr ""
2033
 
2034
- #: ../settings.php:515
2035
  msgid "Push notifications"
2036
  msgstr ""
2037
 
2038
- #: ../settings.php:518
2039
  msgid "Pushbullet access token"
2040
  msgstr ""
2041
 
2042
- #: ../settings.php:521
2043
  msgid "Pushbullet device"
2044
  msgstr ""
2045
 
2046
- #: ../settings.php:528
2047
  msgid "Weekly reports"
2048
  msgstr ""
2049
 
2050
- #: ../settings.php:531
2051
  msgid "Enable reporting"
2052
  msgstr ""
2053
 
2054
- #: ../settings.php:535
2055
  msgid "Send reports on"
2056
  msgstr ""
2057
 
2058
- #: ../settings.php:540 ../settings.php:750
2059
  msgid "if empty, email from notification settings will be used"
2060
  msgstr ""
2061
 
2062
- #: ../settings.php:550
2063
  msgid "Traffic Inspection"
2064
  msgstr ""
2065
 
2066
- #: ../settings.php:553
2067
  msgid "Enable traffic inspection"
2068
  msgstr ""
2069
 
2070
- #: ../settings.php:557 ../settings.php:582
2071
  msgid "Maximum compatibility"
2072
  msgstr ""
2073
 
2074
- #: ../settings.php:558 ../settings.php:583
2075
  msgid "Maximum security"
2076
  msgstr ""
2077
 
2078
- #: ../settings.php:566
2079
  msgid "Request whitelist"
2080
  msgstr ""
2081
 
2082
- #: ../settings.php:570
2083
  msgid ""
2084
  "Enter a request URI to exclude the request from inspection. One item per "
2085
  "line."
2086
  msgstr ""
2087
 
2088
- #: ../settings.php:570
2089
  msgid "To specify a REGEX pattern, enclose a whole line in two braces."
2090
  msgstr ""
2091
 
2092
- #: ../settings.php:575
2093
  msgid "Erroneous Request Shielding"
2094
  msgstr ""
2095
 
2096
- #: ../settings.php:578
2097
  msgid "Enable error shielding"
2098
  msgstr ""
2099
 
2100
- #: ../settings.php:587
2101
  msgid "Ignore logged in users"
2102
  msgstr ""
2103
 
2104
- #: ../settings.php:593
2105
  msgid "Logging"
2106
  msgstr ""
2107
 
2108
- #: ../settings.php:596
2109
  msgid "Logging mode"
2110
  msgstr ""
2111
 
2112
- #: ../settings.php:599
2113
  msgid "Logging disabled"
2114
  msgstr ""
2115
 
2116
- #: ../settings.php:600
2117
  msgid "Smart"
2118
  msgstr ""
2119
 
2120
- #: ../settings.php:601
2121
  msgid "All traffic"
2122
  msgstr ""
2123
 
2124
- #: ../settings.php:605
2125
  msgid "Ignore crawlers"
2126
  msgstr ""
2127
 
2128
- #: ../settings.php:609
2129
  msgid "Save request fields"
2130
  msgstr ""
2131
 
2132
- #: ../settings.php:613
2133
  msgid "Mask these form fields"
2134
  msgstr ""
2135
 
2136
- #: ../settings.php:620
2137
  msgid "Save request headers"
2138
  msgstr ""
2139
 
2140
- #: ../settings.php:625
2141
  msgid "Save $_SERVER"
2142
  msgstr ""
2143
 
2144
- #: ../settings.php:629
2145
  msgid "Save request cookies"
2146
  msgstr ""
2147
 
2148
- #: ../settings.php:633
2149
  msgid "Save software errors"
2150
  msgstr ""
2151
 
2152
- #: ../settings.php:637
2153
  msgid "Page generation time threshold"
2154
  msgstr ""
2155
 
2156
- #: ../settings.php:638
2157
  msgid "milliseconds"
2158
  msgstr ""
2159
 
2160
- #: ../settings.php:650
2161
  msgid "Scanner settings"
2162
  msgstr ""
2163
 
2164
- #: ../settings.php:653
2165
  msgid "Custom signatures"
2166
  msgstr ""
2167
 
2168
- #: ../settings.php:657
2169
  msgid ""
2170
  "Specify custom PHP code signatures. One item per line. To specify a REGEX "
2171
  "pattern, enclose a whole line in two braces."
2172
  msgstr ""
2173
 
2174
- #: ../settings.php:660
2175
  msgid "Unwanted file extensions"
2176
  msgstr ""
2177
 
2178
- #: ../settings.php:664
2179
  msgid ""
2180
  "Specify file extensions to search for. Full scan only. Use comma to separate "
2181
  "items."
2182
  msgstr ""
2183
 
2184
- #: ../settings.php:667
2185
  msgid "Directories to exclude"
2186
  msgstr ""
2187
 
2188
- #: ../settings.php:671
2189
  msgid ""
2190
  "Specify directories to exclude from scanning. Use absolute paths. One item "
2191
  "per line."
2192
  msgstr ""
2193
 
2194
- #: ../settings.php:674
2195
  msgid "Monitor new files"
2196
  msgstr ""
2197
 
2198
- #: ../settings.php:678
2199
  msgid "Monitor modified files"
2200
  msgstr ""
2201
 
2202
- #: ../settings.php:682
2203
  msgid "Scan temporary directory"
2204
  msgstr ""
2205
 
2206
- #: ../settings.php:686
2207
  msgid "Scan session directory"
2208
  msgstr ""
2209
 
2210
- #: ../settings.php:690 ../settings.php:984 ../settings.php:1011
2211
  msgid "Enable diagnostic logging"
2212
  msgstr ""
2213
 
2214
- #: ../settings.php:694
2215
  msgid "Delete quarantined files after"
2216
  msgstr ""
2217
 
2218
- #: ../settings.php:704
2219
  msgid "Automated recurring scan schedule"
2220
  msgstr ""
2221
 
2222
- #: ../settings.php:707
2223
  msgid "Launch Quick Scan"
2224
  msgstr ""
2225
 
2226
- #: ../settings.php:712
2227
  msgid "Launch Full Scan"
2228
  msgstr ""
2229
 
2230
- #: ../settings.php:719
2231
  msgid "Scan results reporting"
2232
  msgstr ""
2233
 
2234
- #: ../settings.php:723
2235
  msgid "Report an issue if any of the following is true"
2236
  msgstr ""
2237
 
2238
- #: ../settings.php:726 ../settings.php:771
2239
  msgid "Low severity"
2240
  msgstr ""
2241
 
2242
- #: ../settings.php:727 ../settings.php:772
2243
  msgid "Medium severity"
2244
  msgstr ""
2245
 
2246
- #: ../settings.php:728 ../settings.php:773
2247
  msgid "High severity"
2248
  msgstr ""
2249
 
2250
- #: ../settings.php:732
2251
  msgid "Send email report"
2252
  msgstr ""
2253
 
2254
- #: ../settings.php:735
2255
  msgid "After every scan"
2256
  msgstr ""
2257
 
2258
- #: ../settings.php:736
2259
  msgid "If any changes in scan results occurred"
2260
  msgstr ""
2261
 
2262
- #: ../settings.php:737
2263
  msgid "If new issues found"
2264
  msgstr ""
2265
 
2266
- #: ../settings.php:741
2267
  msgid "Include file sizes"
2268
  msgstr ""
2269
 
2270
- #: ../settings.php:745
2271
  msgid "Include scan errors"
2272
  msgstr ""
2273
 
2274
- #: ../settings.php:760
2275
  msgid "Automatic cleanup of malware and suspicious files"
2276
  msgstr ""
2277
 
2278
- #: ../settings.php:764
2279
  msgid "Delete unattended files"
2280
  msgstr ""
2281
 
2282
- #: ../settings.php:768
2283
  msgid "Files in the uploads folder"
2284
  msgstr ""
2285
 
2286
- #: ../settings.php:777
2287
  msgid "Files with unwanted extensions"
2288
  msgstr ""
2289
 
2290
- #: ../settings.php:783
2291
  msgid "Automatic recovery of modified and infected files"
2292
  msgstr ""
2293
 
2294
- #: ../settings.php:786
2295
  msgid "Recover WordPress files"
2296
  msgstr ""
2297
 
2298
- #: ../settings.php:790
2299
  msgid "Recover plugins files"
2300
  msgstr ""
2301
 
2302
- #: ../settings.php:796
2303
  msgid "Exclusions"
2304
  msgstr ""
2305
 
2306
- #: ../settings.php:797
2307
  msgid "These files will never be deleted during automatic cleanup."
2308
  msgstr ""
2309
 
2310
- #: ../settings.php:800
2311
  msgid "Files in the temporary directory"
2312
  msgstr ""
2313
 
2314
- #: ../settings.php:804
2315
  msgid "Files in the sessions directory"
2316
  msgstr ""
2317
 
2318
- #: ../settings.php:808
2319
  msgid "Files in these directories"
2320
  msgstr ""
2321
 
2322
- #: ../settings.php:812
2323
  msgid "Use absolute paths. One item per line."
2324
  msgstr ""
2325
 
2326
- #: ../settings.php:815
2327
  msgid "Files with these extensions"
2328
  msgstr ""
2329
 
2330
- #: ../settings.php:819
2331
  msgid "Use comma to separate items."
2332
  msgstr ""
2333
 
2334
- #: ../settings.php:826
2335
  msgid "Cerber antispam engine"
2336
  msgstr ""
2337
 
2338
- #: ../settings.php:829
2339
  msgid "Comment form"
2340
  msgstr ""
2341
 
2342
- #: ../settings.php:830
2343
  msgid "Protect comment form with bot detection engine"
2344
  msgstr ""
2345
 
2346
- #: ../settings.php:834 ../settings.php:903
2347
  msgid "Registration form"
2348
  msgstr ""
2349
 
2350
- #: ../settings.php:835
2351
  msgid "Protect registration form with bot detection engine"
2352
  msgstr ""
2353
 
2354
- #: ../settings.php:839
2355
  msgid "Other forms"
2356
  msgstr ""
2357
 
2358
- #: ../settings.php:840
2359
  msgid "Protect all forms on the website with bot detection engine"
2360
  msgstr ""
2361
 
2362
- #: ../settings.php:846
2363
  msgid "Adjust antispam engine"
2364
  msgstr ""
2365
 
2366
- #: ../settings.php:849
2367
  msgid "Safe mode"
2368
  msgstr ""
2369
 
2370
- #: ../settings.php:850
2371
  msgid "Use less restrictive policies (allow AJAX)"
2372
  msgstr ""
2373
 
2374
- #: ../settings.php:855
2375
  msgid "Disable bot detection engine for logged in users"
2376
  msgstr ""
2377
 
2378
- #: ../settings.php:859
2379
  msgid "Query whitelist"
2380
  msgstr ""
2381
 
2382
- #: ../settings.php:860
2383
  msgid ""
2384
  "Enter a part of query string or query path to exclude a request from "
2385
  "inspection by the engine. One item per line."
2386
  msgstr ""
2387
 
2388
- #: ../settings.php:868
2389
  msgid "Comment processing"
2390
  msgstr ""
2391
 
2392
- #: ../settings.php:871
2393
  msgid "If a spam comment detected"
2394
  msgstr ""
2395
 
2396
- #: ../settings.php:873
2397
  msgid "Deny it completely"
2398
  msgstr ""
2399
 
2400
- #: ../settings.php:873
2401
  msgid "Mark it as spam"
2402
  msgstr ""
2403
 
2404
- #: ../settings.php:876
2405
  msgid "Trash spam comments"
2406
  msgstr ""
2407
 
2408
- #: ../settings.php:878
2409
  msgid "Move spam comments to trash after"
2410
  msgstr ""
2411
 
2412
- #: ../settings.php:886
2413
  msgid "reCAPTCHA settings"
2414
  msgstr ""
2415
 
2416
- #: ../settings.php:887
2417
  msgid ""
2418
  "Before you can start using reCAPTCHA, you have to obtain Site key and Secret "
2419
  "key on the Google website"
2420
  msgstr ""
2421
 
2422
- #: ../settings.php:890
2423
  msgid "Site key"
2424
  msgstr ""
2425
 
2426
- #: ../settings.php:894
2427
  msgid "Secret key"
2428
  msgstr ""
2429
 
2430
- #: ../settings.php:898
2431
  msgid "Invisible reCAPTCHA"
2432
  msgstr ""
2433
 
2434
- #: ../settings.php:899
2435
  msgid "Enable invisible reCAPTCHA"
2436
  msgstr ""
2437
 
2438
- #: ../settings.php:899
2439
  msgid ""
2440
  "(do not enable it unless you get and enter the Site and Secret keys for the "
2441
  "invisible version)"
2442
  msgstr ""
2443
 
2444
- #: ../settings.php:904
2445
  msgid "Enable reCAPTCHA for WordPress registration form"
2446
  msgstr ""
2447
 
2448
- #: ../settings.php:909
2449
  msgid "Enable reCAPTCHA for WooCommerce registration form"
2450
  msgstr ""
2451
 
2452
- #: ../settings.php:913
2453
  msgid "Lost password form"
2454
  msgstr ""
2455
 
2456
- #: ../settings.php:914
2457
  msgid "Enable reCAPTCHA for WordPress lost password form"
2458
  msgstr ""
2459
 
2460
- #: ../settings.php:919
2461
  msgid "Enable reCAPTCHA for WooCommerce lost password form"
2462
  msgstr ""
2463
 
2464
- #: ../settings.php:923
2465
  msgid "Login form"
2466
  msgstr ""
2467
 
2468
- #: ../settings.php:924
2469
  msgid "Enable reCAPTCHA for WordPress login form"
2470
  msgstr ""
2471
 
2472
- #: ../settings.php:929
2473
  msgid "Enable reCAPTCHA for WooCommerce login form"
2474
  msgstr ""
2475
 
2476
- #: ../settings.php:934
2477
  msgid "Enable reCAPTCHA for WordPress comment form"
2478
  msgstr ""
2479
 
2480
- #: ../settings.php:939
2481
  msgid "Disable reCAPTCHA for logged in users"
2482
  msgstr ""
2483
 
2484
- #: ../settings.php:943
2485
  msgid "Limit attempts"
2486
  msgstr ""
2487
 
2488
- #: ../settings.php:944
2489
  #, php-format
2490
  msgid "Lock out IP address for %s minutes after %s failed attempts within %s minutes"
2491
  msgstr ""
2492
 
2493
- #: ../settings.php:951
2494
  msgid "Master settings"
2495
  msgstr ""
2496
 
2497
- #: ../settings.php:959
2498
  msgid "Return to the website list"
2499
  msgstr ""
2500
 
2501
- #: ../settings.php:963
2502
  msgid "Show \"Switched to\" notification"
2503
  msgstr ""
2504
 
2505
- #: ../settings.php:967
2506
  msgid "Add @ site to the page title"
2507
  msgstr ""
2508
 
2509
- #: ../settings.php:971
2510
  msgid "Use master language"
2511
  msgstr ""
2512
 
2513
- #: ../settings.php:994
2514
  msgid "Limit access by IP address"
2515
  msgstr ""
2516
 
2517
- #: ../settings.php:1000
2518
  msgid "Access to this website"
2519
  msgstr ""
2520
 
2521
- #: ../settings.php:1003
2522
  msgid "Full access mode"
2523
  msgstr ""
2524
 
2525
- #: ../settings.php:1004
2526
  msgid "Read-only mode"
2527
  msgstr ""
2528
 
2529
- #: ../settings.php:1020
2530
  msgid "The full access mode requires the PRO version of WP Cerber"
2531
  msgstr ""
2532
 
2533
- #: ../settings.php:1284
2534
  #, php-format
2535
  msgid "%s allowed retries in %s minutes"
2536
  msgstr ""
2537
 
2538
- #: ../settings.php:1289
2539
  #, php-format
2540
  msgid "%s allowed registrations in %s minutes from one IP"
2541
  msgstr ""
2542
 
2543
- #: ../settings.php:1294
2544
  #, php-format
2545
  msgid "Increase lockout duration to %s hours after %s lockouts in the last %s hours"
2546
  msgstr ""
2547
 
2548
- #: ../settings.php:1301
2549
  msgid "Notify admin if the number of active lockouts above"
2550
  msgstr ""
2551
 
2552
- #: ../settings.php:1310
2553
  #, php-format
2554
  msgid "Enable after %s failed login attempts in last %s minutes"
2555
  msgstr ""
2556
 
2557
- #: ../settings.php:1460
2558
  msgid "Select one or more roles"
2559
  msgstr ""
2560
 
2561
- #: ../settings.php:1485
2562
  msgid "Sunday"
2563
  msgstr ""
2564
 
2565
- #: ../settings.php:1486
2566
  msgid "Monday"
2567
  msgstr ""
2568
 
2569
- #: ../settings.php:1487
2570
  msgid "Tuesday"
2571
  msgstr ""
2572
 
2573
- #: ../settings.php:1488
2574
  msgid "Wednesday"
2575
  msgstr ""
2576
 
2577
- #: ../settings.php:1489
2578
  msgid "Thursday"
2579
  msgstr ""
2580
 
2581
- #: ../settings.php:1490
2582
  msgid "Friday"
2583
  msgstr ""
2584
 
2585
- #: ../settings.php:1491
2586
  msgid "Saturday"
2587
  msgstr ""
2588
 
2589
- #: ../settings.php:1501
2590
  msgctxt "preposition of time like: at 11:00"
2591
  msgid "at"
2592
  msgstr ""
2593
 
2594
- #: ../settings.php:1521
2595
  msgid "Click to send now"
2596
  msgstr ""
2597
 
2598
- #: ../settings.php:1532
2599
  msgid "Plugin initialization mode has not been changed"
2600
  msgstr ""
2601
 
2602
- #: ../settings.php:1552 ../settings.php:1553
2603
  msgid "Attention! You have changed the login URL! The new login URL is"
2604
  msgstr ""
2605
 
2606
- #: ../settings.php:1554 ../settings.php:1555
2607
  msgid ""
2608
  "If you use a caching plugin, you have to add your new login URL to the list "
2609
  "of pages not to cache."
2610
  msgstr ""
2611
 
2612
- #: ../settings.php:1641 ../settings.php:1653 ../settings.php:1776
2613
  msgid "<strong>ERROR</strong>: please enter a valid email address."
2614
  msgstr ""
2615
 
2616
- #: ../settings.php:1782
2617
  msgid "The schedule has been updated"
2618
  msgstr ""
2619
 
2620
- #: ../settings.php:1785
2621
  msgid "Unable to update the schedule"
2622
  msgstr ""
2623
 
2624
- #: ../settings.php:2582
2625
  msgid "These features are available in a professional version of the plugin."
2626
  msgstr ""
2627
 
2628
- #: ../settings.php:2583
2629
  msgid "Know more about all advantages at"
2630
  msgstr ""
2631
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2632
  #: ../cerber-2fa.php:352
2633
  msgid ""
2634
  "This verification PIN code is expired. We have just sent a new one to your "
@@ -2757,7 +2892,7 @@ msgstr ""
2757
  msgid "Error while parsing file"
2758
  msgstr ""
2759
 
2760
- #: ../cerber-tools.php:233
2761
  msgid "Unsubscribe"
2762
  msgstr ""
2763
 
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: Thu Oct 17 2019 19:30:56 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:1712 ../dashboard.php:2623 ../dashboard.
32
+ #: php:4462
33
  msgid "Dashboard"
34
  msgstr ""
35
 
37
  msgid "Cerber Traffic Inspector"
38
  msgstr ""
39
 
40
+ #: ../dashboard.php:56 ../dashboard.php:1682 ../dashboard.php:4528
41
  msgid "Traffic Inspector"
42
  msgstr ""
43
 
44
  #: ../dashboard.php:60
45
+ msgid "Cerber Data Shield Policies"
46
+ msgstr ""
47
+
48
+ #: ../dashboard.php:60
49
+ msgid "Data Shield"
50
+ msgstr ""
51
+
52
+ #: ../dashboard.php:61
53
  msgid "Cerber Security Rules"
54
  msgstr ""
55
 
56
+ #: ../dashboard.php:61 ../dashboard.php:4574
57
  msgid "Security Rules"
58
  msgstr ""
59
 
60
+ #: ../dashboard.php:64
61
  msgid "Cerber User Security"
62
  msgstr ""
63
 
64
+ #: ../dashboard.php:64 ../dashboard.php:4554
65
  msgid "User Policies"
66
  msgstr ""
67
 
68
+ #: ../dashboard.php:67 ../dashboard.php:4589
69
  msgid "Site Integrity"
70
  msgstr ""
71
 
72
+ #: ../dashboard.php:71
73
  msgid "Cerber antispam settings"
74
  msgstr ""
75
 
76
+ #: ../dashboard.php:71 ../cerber-load.php:4919 ../settings.php:1032
77
  msgid "Antispam"
78
  msgstr ""
79
 
80
+ #: ../dashboard.php:76
81
  msgid "Cerber tools"
82
  msgstr ""
83
 
84
+ #: ../dashboard.php:76 ../dashboard.php:4624
85
  msgid "Tools"
86
  msgstr ""
87
 
88
+ #: ../dashboard.php:180 ../dashboard.php:263
89
  msgid "Remove"
90
  msgstr ""
91
 
92
+ #: ../dashboard.php:185 ../cerber-load.php:4619
93
  msgid "IP"
94
  msgstr ""
95
 
96
+ #: ../dashboard.php:186 ../dashboard.php:1073
97
  msgid "Hostname"
98
  msgstr ""
99
 
100
+ #: ../dashboard.php:187 ../dashboard.php:1074
101
  msgid "Country"
102
  msgstr ""
103
 
104
+ #: ../dashboard.php:188 ../cerber-users.php:755
105
  msgid "Expires"
106
  msgstr ""
107
 
108
+ #: ../dashboard.php:189 ../cerber-load.php:3955
109
  msgid "Reason"
110
  msgstr ""
111
 
112
+ #: ../dashboard.php:190 ../cerber-users.php:758 ../cerber-scanner.php:5772 ..
113
  #: /cerber-scanner.php:5920
114
  msgid "Action"
115
  msgstr ""
116
 
117
+ #: ../dashboard.php:206
118
  #, php-format
119
  msgid "Showing last %d records from %d"
120
  msgstr ""
121
 
122
+ #: ../dashboard.php:208
123
  msgid "Hint"
124
  msgstr ""
125
 
126
+ #: ../dashboard.php:208
127
  msgid "To view activity, click on the IP"
128
  msgstr ""
129
 
130
+ #: ../dashboard.php:212
131
  msgid "No lockouts at the moment. The sky is clear."
132
  msgstr ""
133
 
134
+ #: ../dashboard.php:235 ../dashboard.php:1288 ../dashboard.php:1325 ../dashboard.
135
+ #: php:1677 ../dashboard.php:3698 ../cerber-load.php:4906
136
  msgid "White IP Access List"
137
  msgstr ""
138
 
139
+ #: ../dashboard.php:235
140
  msgid "These IPs will never be locked out"
141
  msgstr ""
142
 
143
+ #: ../dashboard.php:237 ../dashboard.php:1291 ../dashboard.php:1328 ../dashboard.
144
+ #: php:1678 ../dashboard.php:3699
145
  msgid "Black IP Access List"
146
  msgstr ""
147
 
148
+ #: ../dashboard.php:237
149
  msgid "Nobody can log in or register from these IPs"
150
  msgstr ""
151
 
152
+ #: ../dashboard.php:244
153
  msgid "Your IP"
154
  msgstr ""
155
 
156
+ #: ../dashboard.php:262 ../dashboard.php:1339 ../dashboard.php:1374 ../dashboard.
157
+ #: php:1497
158
  msgid "Check for activities"
159
  msgstr ""
160
 
161
+ #: ../dashboard.php:269
162
  msgid "List is empty"
163
  msgstr ""
164
 
165
+ #: ../dashboard.php:275
166
  msgid "IP address, IPv4 address range or subnet"
167
  msgstr ""
168
 
169
+ #: ../dashboard.php:276
170
  msgid "Add IP to the list"
171
  msgstr ""
172
 
173
+ #: ../dashboard.php:277
174
  msgid "Optional comment for this entry"
175
  msgstr ""
176
 
177
+ #: ../dashboard.php:294 ../dashboard.php:311
178
  msgid "Incorrect IP address or IP range"
179
  msgstr ""
180
 
181
+ #: ../dashboard.php:302
182
  #, php-format
183
  msgid "IP address %s has been added to White IP Access List"
184
  msgstr ""
185
 
186
+ #: ../dashboard.php:316
187
  msgid "You cannot add your IP address or network"
188
  msgstr ""
189
 
190
+ #: ../dashboard.php:324
191
  #, php-format
192
  msgid "IP address %s has been added to Black IP Access List"
193
  msgstr ""
194
 
195
+ #: ../dashboard.php:411 ../dashboard.php:3627 ../whois.php:222 ../whois.php:253 ..
196
+ #: /common.php:1430 ../common.php:1813 ../common.php:1878 ../nexus/cerber-slave-
197
+ #: list.php:283
198
  msgid "Unknown"
199
  msgstr ""
200
 
201
+ #: ../dashboard.php:484
202
  msgid "unknown"
203
  msgstr ""
204
 
205
+ #: ../dashboard.php:547
206
  #, php-format
207
  msgid "Lockout for %s was removed"
208
  msgstr ""
209
 
210
+ #: ../dashboard.php:555
211
  msgid "Email has been sent to"
212
  msgstr ""
213
 
214
+ #: ../dashboard.php:558
215
  msgid "Unable to send email to"
216
  msgstr ""
217
 
218
+ #: ../dashboard.php:613
219
  msgid "Default settings have been loaded"
220
  msgstr ""
221
 
222
+ #: ../dashboard.php:805 ../dashboard.php:1072 ../dashboard.php:3906 ../cerber-
223
  #: users.php:756
224
  msgid "IP Address"
225
  msgstr ""
226
 
227
+ #: ../dashboard.php:806 ../dashboard.php:1075 ../dashboard.php:3529 ../dashboard.
228
+ #: php:3904
229
  msgid "Date"
230
  msgstr ""
231
 
232
+ #: ../dashboard.php:807 ../dashboard.php:1076
233
  msgid "Event"
234
  msgstr ""
235
 
236
+ #: ../dashboard.php:808
237
  msgid "Additional Details"
238
  msgstr ""
239
 
240
+ #: ../dashboard.php:809 ../dashboard.php:1077 ../dashboard.php:3909
241
  msgid "Local User"
242
  msgstr ""
243
 
244
+ #: ../dashboard.php:810
245
  msgid "User login"
246
  msgstr ""
247
 
248
+ #: ../dashboard.php:811 ../dashboard.php:3534
249
  msgid "User ID"
250
  msgstr ""
251
 
252
+ #: ../dashboard.php:812 ../dashboard.php:1078
253
  msgid "Username"
254
  msgstr ""
255
 
256
+ #: ../dashboard.php:887 ../dashboard.php:2278
257
  msgid "View all"
258
  msgstr ""
259
 
260
+ #: ../dashboard.php:898
261
  msgid "New users"
262
  msgstr ""
263
 
264
+ #: ../dashboard.php:904 ../dashboard.php:3935
265
  msgid "Suspicious activity"
266
  msgstr ""
267
 
268
+ #: ../dashboard.php:906 ../common.php:1305
269
  msgid "IP blocked"
270
  msgstr ""
271
 
272
+ #: ../dashboard.php:908 ../dashboard.php:1675 ../dashboard.php:3937 ../settings.
273
+ #: php:391 ../settings.php:953
274
  msgid "Logged in users"
275
  msgstr ""
276
 
277
+ #: ../dashboard.php:909 ../dashboard.php:3938
278
  msgid "Not logged in visitors"
279
  msgstr ""
280
 
281
+ #: ../dashboard.php:911
282
  msgid "My activity"
283
  msgstr ""
284
 
285
+ #: ../dashboard.php:1100 ../dashboard.php:3969
286
  msgid "Export"
287
  msgstr ""
288
 
289
+ #: ../dashboard.php:1105
290
  msgid "No activity has been logged."
291
  msgstr ""
292
 
293
+ #: ../dashboard.php:1112
294
  msgid "All events"
295
  msgstr ""
296
 
297
+ #: ../dashboard.php:1122
298
  msgid "Filter by registered user"
299
  msgstr ""
300
 
301
+ #: ../dashboard.php:1123
302
  msgid "Search for IP or username"
303
  msgstr ""
304
 
305
+ #: ../dashboard.php:1124 ../dashboard.php:1126
306
  msgid "Filter"
307
  msgstr ""
308
 
309
+ #: ../dashboard.php:1296 ../dashboard.php:1332 ../dashboard.php:3703 ../common.
310
+ #: php:1362
311
  msgid "Locked out"
312
  msgstr ""
313
 
314
+ #: ../dashboard.php:1369
315
  msgid "Abuse email:"
316
  msgstr ""
317
 
318
+ #: ../dashboard.php:1374
319
  msgid "Network:"
320
  msgstr ""
321
 
322
+ #: ../dashboard.php:1389
323
  msgid "Add network to the Black List"
324
  msgstr ""
325
 
326
+ #: ../dashboard.php:1394
327
  msgid "Add IP to the Black List"
328
  msgstr ""
329
 
330
+ #: ../dashboard.php:1459
331
  msgid "Activated"
332
  msgstr ""
333
 
334
+ #: ../dashboard.php:1481
335
  msgid "Last seen"
336
  msgstr ""
337
 
338
+ #: ../dashboard.php:1491 ../dashboard.php:1535
339
  msgid "Registered"
340
  msgstr ""
341
 
342
+ #: ../dashboard.php:1532
343
  msgid "Comments"
344
  msgstr ""
345
 
346
+ #: ../dashboard.php:1533
347
  msgid "Last login"
348
  msgstr ""
349
 
350
+ #: ../dashboard.php:1534
351
  msgid "Failed login attempts"
352
  msgstr ""
353
 
354
+ #: ../dashboard.php:1566 ../dashboard.php:1657 ../common.php:1570 ../nexus/cerber-
355
  #: slave-list.php:297
356
  msgid "Never"
357
  msgstr ""
358
 
359
+ #: ../dashboard.php:1605 ../cerber-users.php:51 ../cerber-users.php:889
360
  msgid "You"
361
  msgstr ""
362
 
363
+ #: ../dashboard.php:1623
364
  msgid "Cerber Quick View"
365
  msgstr ""
366
 
367
+ #: ../dashboard.php:1661 ../dashboard.php:1686
368
  msgid "active"
369
  msgstr ""
370
 
371
+ #: ../dashboard.php:1661
372
  msgid "deactivate"
373
  msgstr ""
374
 
375
+ #: ../dashboard.php:1663
376
  msgid "not active"
377
  msgstr ""
378
 
379
+ #: ../dashboard.php:1664 ../dashboard.php:1681
380
  msgid "disabled"
381
  msgstr ""
382
 
383
+ #: ../dashboard.php:1669
384
  msgid "failed attempts"
385
  msgstr ""
386
 
387
+ #: ../dashboard.php:1669 ../dashboard.php:1670
388
  msgid "in 24 hours"
389
  msgstr ""
390
 
391
+ #: ../dashboard.php:1669 ../dashboard.php:1670
392
  msgid "view all"
393
  msgstr ""
394
 
395
+ #: ../dashboard.php:1670
396
  msgid "lockouts"
397
  msgstr ""
398
 
399
+ #: ../dashboard.php:1672
400
  msgid "Lockouts at the moment"
401
  msgstr ""
402
 
403
+ #: ../dashboard.php:1673
404
  msgid "Last lockout"
405
  msgstr ""
406
 
407
+ #: ../dashboard.php:1675
408
  msgid "user"
409
  msgid_plural "users"
410
  msgstr[0] ""
411
  msgstr[1] ""
412
 
413
+ #: ../dashboard.php:1677 ../dashboard.php:1678 ../dashboard.php:2605
414
  msgid "entry"
415
  msgid_plural "entries"
416
  msgstr[0] ""
417
  msgstr[1] ""
418
 
419
+ #: ../dashboard.php:1679 ../settings.php:262
420
  msgid "Citadel mode"
421
  msgstr ""
422
 
423
+ #: ../dashboard.php:1681
424
  msgid "enabled"
425
  msgstr ""
426
 
427
+ #: ../dashboard.php:1686
428
  msgid "no connection"
429
  msgstr ""
430
 
431
+ #: ../dashboard.php:1696
432
  msgctxt "Example: Last malware scan: 23 Jan 2018"
433
  msgid "Last malware scan"
434
  msgstr ""
435
 
436
+ #: ../dashboard.php:1699 ../dashboard.php:1701 ../cerber-users.php:20 ../cerber-
437
+ #: users.php:431 ../settings.php:655 ../settings.php:680 ../settings.php:1104 ..
438
  #: /cerber-scanner.php:1625
439
  msgid "Disabled"
440
  msgstr ""
441
 
442
+ #: ../dashboard.php:1700 ../cerber-scanner.php:1066
443
  msgid "Quick Scan"
444
  msgstr ""
445
 
446
+ #: ../dashboard.php:1702 ../cerber-scanner.php:1066
447
  msgid "Full Scan"
448
  msgstr ""
449
 
450
+ #: ../dashboard.php:1713 ../dashboard.php:2264 ../dashboard.php:4463 ../cerber-
451
+ #: load.php:4610 ../cerber-users.php:922 ../settings.php:287
452
  msgid "Activity"
453
  msgstr ""
454
 
455
+ #: ../dashboard.php:1714 ../cerber-users.php:923
456
  msgid "Traffic"
457
  msgstr ""
458
 
459
+ #: ../dashboard.php:1715
460
  msgid "Integrity"
461
  msgstr ""
462
 
463
+ #: ../dashboard.php:1718
464
  msgid "A new version is available"
465
  msgstr ""
466
 
467
+ #: ../dashboard.php:2081 ../settings.php:249
468
  msgid "My site is behind a reverse proxy"
469
  msgstr ""
470
 
471
+ #: ../dashboard.php:2257
472
  msgid "in the last 24 hours"
473
  msgstr ""
474
 
475
+ #: ../dashboard.php:2281
476
  msgid "Recently locked out IP addresses"
477
  msgstr ""
478
 
479
+ #: ../dashboard.php:2305
480
  msgid "Confused about some settings?"
481
  msgstr ""
482
 
483
+ #: ../dashboard.php:2306
484
  msgid "You can easily load default recommended settings using button below"
485
  msgstr ""
486
 
487
+ #: ../dashboard.php:2308
488
  msgid "Load default settings"
489
  msgstr ""
490
 
491
+ #: ../dashboard.php:2310 ../cerber-users.php:945 ../cerber-tools.php:686 ..
492
  #: /nexus/cerber-slave-list.php:230 ../cerber-scanner.php:5746 ../cerber-scanner.
493
  #: php:5904
494
  msgid "Are you sure?"
495
  msgstr ""
496
 
497
+ #: ../dashboard.php:2316
498
  msgid "doesn't affect Custom login URL and Access Lists"
499
  msgstr ""
500
 
501
+ #: ../dashboard.php:2317 ../cerber-load.php:3987 ../cerber-load.php:4908
502
  msgid "Getting Started Guide"
503
  msgstr ""
504
 
505
+ #: ../dashboard.php:2422
506
  msgid "Attention! Citadel mode is now active. Nobody is able to log in."
507
  msgstr ""
508
 
509
+ #: ../dashboard.php:2423
510
  msgid "Deactivate"
511
  msgstr ""
512
 
513
+ #: ../dashboard.php:2424 ../dashboard.php:2862
514
  msgid "View Activity"
515
  msgstr ""
516
 
517
+ #: ../dashboard.php:2439 ../nexus/cerber-nexus-slave.php:443
518
  msgid "Settings saved"
519
  msgstr ""
520
 
521
+ #: ../dashboard.php:2510
522
  msgid "Create Alert"
523
  msgstr ""
524
 
525
+ #: ../dashboard.php:2514
526
  msgid "Delete Alert"
527
  msgstr ""
528
 
529
+ #: ../dashboard.php:2547
530
  msgid "You've subscribed"
531
  msgstr ""
532
 
533
+ #: ../dashboard.php:2548
534
  msgid "The alert has been created"
535
  msgstr ""
536
 
537
+ #: ../dashboard.php:2552
538
  msgid "You've unsubscribed"
539
  msgstr ""
540
 
541
+ #: ../dashboard.php:2553
542
  msgid "The alert has been deleted"
543
  msgstr ""
544
 
545
+ #: ../dashboard.php:2624
546
  msgid "Main settings"
547
  msgstr ""
548
 
549
+ #: ../dashboard.php:2730
550
  msgid "Are you sure you want to delete selected files?"
551
  msgstr ""
552
 
553
+ #: ../dashboard.php:2731
554
  msgid "These files have been moved to the quarantine"
555
  msgstr ""
556
 
557
+ #: ../dashboard.php:2734
558
  msgid "Do you want to add selected files to the ignore list?"
559
  msgstr ""
560
 
561
+ #: ../dashboard.php:2735
562
  msgid "These files have been added to the ignore list"
563
  msgstr ""
564
 
565
+ #: ../dashboard.php:2737
566
  msgid "Some errors occurred"
567
  msgstr ""
568
 
569
+ #: ../dashboard.php:2738
570
  msgid "All files have been processed"
571
  msgstr ""
572
 
573
+ #: ../dashboard.php:3123 ../common.php:930
574
  msgid "Save Changes"
575
  msgstr ""
576
 
577
+ #: ../dashboard.php:3195
578
  msgid "Role-based rules are configured"
579
  msgstr ""
580
 
581
+ #: ../dashboard.php:3245
582
  msgid "Start typing here to find a country"
583
  msgstr ""
584
 
585
+ #: ../dashboard.php:3252
586
  msgid "Save all rules"
587
  msgstr ""
588
 
589
+ #: ../dashboard.php:3265
590
  #, php-format
591
  msgid "Permitted for one country"
592
  msgid_plural "Permitted for %d countries"
593
  msgstr[0] ""
594
  msgstr[1] ""
595
 
596
+ #: ../dashboard.php:3268
597
  #, php-format
598
  msgid "Not permitted for one country"
599
  msgid_plural "Not permitted for %d countries"
600
  msgstr[0] ""
601
  msgstr[1] ""
602
 
603
+ #: ../dashboard.php:3276
604
  msgid "No rule"
605
  msgstr ""
606
 
607
+ #: ../dashboard.php:3277
608
  msgid "Any country is permitted"
609
  msgstr ""
610
 
611
+ #: ../dashboard.php:3360
612
  msgid "Click on a country name to add it to the list of selected countries"
613
  msgstr ""
614
 
615
+ #: ../dashboard.php:3364
616
  #, php-format
617
  msgctxt "to is a marker of infinitive, e.g. \"to use it\""
618
  msgid "Selected countries are permitted to %s, other countries are not permitted to"
619
  msgstr ""
620
 
621
+ #: ../dashboard.php:3367
622
  #, php-format
623
  msgctxt "to is a marker of infinitive, e.g. \"to use it\""
624
  msgid "Selected countries are not permitted to %s, other countries are permitted to"
625
  msgstr ""
626
 
627
+ #: ../dashboard.php:3387
628
  msgid "Log in to the website"
629
  msgstr ""
630
 
631
+ #: ../dashboard.php:3389
632
  msgid "All Users"
633
  msgstr ""
634
 
635
+ #: ../dashboard.php:3391
636
  msgid "Register on the website"
637
  msgstr ""
638
 
639
+ #: ../dashboard.php:3392
640
  msgid "Submit forms"
641
  msgstr ""
642
 
643
+ #: ../dashboard.php:3393
644
  msgid "Post comments"
645
  msgstr ""
646
 
647
+ #: ../dashboard.php:3394
648
  msgid "Use XML-RPC"
649
  msgstr ""
650
 
651
+ #: ../dashboard.php:3395
652
  msgid "Use REST API"
653
  msgstr ""
654
 
655
+ #: ../dashboard.php:3437
656
  msgid "Security rules have been updated"
657
  msgstr ""
658
 
659
+ #: ../dashboard.php:3528
660
  msgid "IP address"
661
  msgstr ""
662
 
663
+ #: ../dashboard.php:3535
664
  msgid "Page generation time"
665
  msgstr ""
666
 
667
+ #: ../dashboard.php:3905
668
  msgid "Request"
669
  msgstr ""
670
 
671
+ #: ../dashboard.php:3907 ../cerber-users.php:757
672
  msgid "Host Info"
673
  msgstr ""
674
 
675
+ #: ../dashboard.php:3908
676
  msgid "User Agent"
677
  msgstr ""
678
 
679
+ #: ../dashboard.php:3925
680
  msgid "No requests have been logged."
681
  msgstr ""
682
 
683
+ #: ../dashboard.php:3933
684
  msgid "All requests"
685
  msgstr ""
686
 
687
+ #: ../dashboard.php:3936
688
  msgid "Errors"
689
  msgstr ""
690
 
691
+ #: ../dashboard.php:3941
692
  msgid "Form submissions"
693
  msgstr ""
694
 
695
+ #: ../dashboard.php:3943
696
  msgid "Page Not Found"
697
  msgstr ""
698
 
699
+ #: ../dashboard.php:3952
700
  msgid "Longer than"
701
  msgstr ""
702
 
703
+ #: ../dashboard.php:3962
704
  msgid "Advanced Search"
705
  msgstr ""
706
 
707
+ #: ../dashboard.php:3975
708
  msgid "Refresh"
709
  msgstr ""
710
 
711
+ #: ../dashboard.php:4266
712
  msgid "Any"
713
  msgstr ""
714
 
715
+ #: ../dashboard.php:4464
716
  msgid "Sessions"
717
  msgstr ""
718
 
719
+ #: ../dashboard.php:4465
720
  msgid "Lockouts"
721
  msgstr ""
722
 
723
+ #: ../dashboard.php:4466 ../cerber-load.php:4916
724
  msgid "Main Settings"
725
  msgstr ""
726
 
727
+ #: ../dashboard.php:4467 ../cerber-load.php:4918 ../cerber-tools.php:38 ../cerber-
728
  #: tools.php:47 ../cerber-tools.php:139
729
  msgid "Access Lists"
730
  msgstr ""
731
 
732
+ #: ../dashboard.php:4468 ../cerber-load.php:4920
733
  msgid "Hardening"
734
  msgstr ""
735
 
736
+ #: ../dashboard.php:4470 ../cerber-load.php:4921 ../settings.php:275
737
  msgid "Notifications"
738
  msgstr ""
739
 
740
+ #: ../dashboard.php:4508
741
  msgid "Antispam and bot detection settings"
742
  msgstr ""
743
 
744
+ #: ../dashboard.php:4510
745
  msgid "Antispam engine"
746
  msgstr ""
747
 
748
+ #: ../dashboard.php:4530
749
  msgid "Live Traffic"
750
  msgstr ""
751
 
752
+ #: ../dashboard.php:4531 ../dashboard.php:4592 ../cerber-tools.php:37 ../cerber-
753
  #: tools.php:46 ../nexus/cerber-nexus.php:90
754
  msgid "Settings"
755
  msgstr ""
756
 
757
  #: ../dashboard.php:4544
758
+ msgid "Data Shield Policies"
759
+ msgstr ""
760
+
761
+ #: ../dashboard.php:4546
762
+ msgid "Accounts & Roles"
763
+ msgstr ""
764
+
765
+ #: ../dashboard.php:4547
766
+ msgid "Site Settings"
767
+ msgstr ""
768
+
769
+ #: ../dashboard.php:4556
770
  msgid "Role-based"
771
  msgstr ""
772
 
773
+ #: ../dashboard.php:4557
774
  msgid "Global"
775
  msgstr ""
776
 
777
+ #: ../dashboard.php:4576
778
  msgid "Countries"
779
  msgstr ""
780
 
781
+ #: ../dashboard.php:4591 ../cerber-load.php:4917
782
  msgid "Security Scanner"
783
  msgstr ""
784
 
785
+ #: ../dashboard.php:4593
786
  msgid "Scheduling"
787
  msgstr ""
788
 
789
+ #: ../dashboard.php:4594
790
  msgid "Cleaning up"
791
  msgstr ""
792
 
793
+ #: ../dashboard.php:4595
794
  msgid "Ignore List"
795
  msgstr ""
796
 
797
+ #: ../dashboard.php:4596
798
  msgid "Quarantine"
799
  msgstr ""
800
 
801
+ #: ../dashboard.php:4626
802
  msgid "Export & Import"
803
  msgstr ""
804
 
805
+ #: ../dashboard.php:4627
806
  msgid "Diagnostic"
807
  msgstr ""
808
 
809
+ #: ../dashboard.php:4628
810
  msgid "Log"
811
  msgstr ""
812
 
813
+ #: ../dashboard.php:4629
814
  msgid "Changelog"
815
  msgstr ""
816
 
817
+ #: ../dashboard.php:4630
818
  msgid "License"
819
  msgstr ""
820
 
821
+ #: ../dashboard.php:4726
822
  msgid "Help"
823
  msgstr ""
824
 
825
+ #: ../dashboard.php:4754
826
  msgid "Log In"
827
  msgstr ""
828
 
829
+ #: ../dashboard.php:4755
830
  msgid "Log Out"
831
  msgstr ""
832
 
833
+ #: ../dashboard.php:4756
834
  msgid "Register"
835
  msgstr ""
836
 
837
+ #: ../dashboard.php:4759
838
  msgid "WooCommerce Log In"
839
  msgstr ""
840
 
841
+ #: ../dashboard.php:4760
842
  msgid "WooCommerce Log Out"
843
  msgstr ""
844
 
845
+ #: ../dashboard.php:4799 ../dashboard.php:4800
846
  msgid "Add to menu"
847
  msgstr ""
848
 
867
  msgid "Cerber Tech Inc."
868
  msgstr ""
869
 
870
+ #: ../common.php:196
871
  msgid "Check for requests"
872
  msgstr ""
873
 
874
+ #: ../common.php:266
875
  msgid "Malicious activities mitigated"
876
  msgstr ""
877
 
878
+ #: ../common.php:269
879
  msgid "Spam comments denied"
880
  msgstr ""
881
 
882
+ #: ../common.php:270
883
  msgid "Spam form submissions denied"
884
  msgstr ""
885
 
886
+ #: ../common.php:271
887
  msgid "Malicious IP addresses detected"
888
  msgstr ""
889
 
890
+ #: ../common.php:272
891
  msgid "Lockouts occurred"
892
  msgstr ""
893
 
894
+ #: ../common.php:326 ../common.php:404 ../common.php:409 ../common.php:415 ..
895
+ #: /common.php:420 ../cerber-load.php:684 ../cerber-load.php:696 ../cerber-load.
896
+ #: php:703 ../cerber-load.php:1030 ../cerber-load.php:1539 ../cerber-load.php:
897
+ #: 1545 ../cerber-load.php:1550 ../cerber-load.php:1557 ../cerber-load.php:1564 ..
898
+ #: /cerber-load.php:1570 ../cerber-load.php:1577 ../cerber-load.php:1728 ..
899
+ #: /cerber-load.php:1865 ../settings.php:1644 ../settings.php:1664 ../settings.
900
+ #: php:1739 ../nexus/cerber-nexus-slave.php:215 ../nexus/cerber-nexus-slave.php:
901
+ #: 226 ../cerber-scanner.php:5874
902
  msgid "ERROR:"
903
  msgstr ""
904
 
905
+ #: ../common.php:1298
906
  msgid "User created"
907
  msgstr ""
908
 
909
+ #: ../common.php:1299
910
  msgid "User registered"
911
  msgstr ""
912
 
913
+ #: ../common.php:1300
914
  msgid "Logged in"
915
  msgstr ""
916
 
917
+ #: ../common.php:1301
918
  msgid "Logged out"
919
  msgstr ""
920
 
921
+ #: ../common.php:1302
922
  msgid "Login failed"
923
  msgstr ""
924
 
925
+ #: ../common.php:1306
926
  msgid "Subnet blocked"
927
  msgstr ""
928
 
929
+ #: ../common.php:1308
930
  msgid "Citadel activated!"
931
  msgstr ""
932
 
933
+ #: ../common.php:1309
934
  msgid "Spam comment denied"
935
  msgstr ""
936
 
937
+ #: ../common.php:1310
938
  msgid "Spam form submission denied"
939
  msgstr ""
940
 
941
+ #: ../common.php:1311
942
  msgid "Form submission denied"
943
  msgstr ""
944
 
945
+ #: ../common.php:1312
946
  msgid "Comment denied"
947
  msgstr ""
948
 
949
+ #: ../common.php:1323
950
  msgid "Password changed"
951
  msgstr ""
952
 
953
+ #: ../common.php:1324
954
  msgid "Password reset requested"
955
  msgstr ""
956
 
957
+ #: ../common.php:1326
958
  msgid "reCAPTCHA verification failed"
959
  msgstr ""
960
 
961
+ #: ../common.php:1327
962
  msgid "reCAPTCHA settings are incorrect"
963
  msgstr ""
964
 
965
+ #: ../common.php:1328
966
  msgid "Request to the Google reCAPTCHA service failed"
967
  msgstr ""
968
 
969
+ #: ../common.php:1330 ../common.php:1434
970
  msgid "Attempt to access prohibited URL"
971
  msgstr ""
972
 
973
+ #: ../common.php:1331 ../common.php:1413
974
  msgid "Attempt to log in with non-existing username"
975
  msgstr ""
976
 
977
+ #: ../common.php:1332 ../common.php:1414
978
  msgid "Attempt to log in with prohibited username"
979
  msgstr ""
980
 
981
+ #: ../common.php:1334
982
  msgid "Attempt to log in denied"
983
  msgstr ""
984
 
985
+ #: ../common.php:1335
986
  msgid "Attempt to register denied"
987
  msgstr ""
988
 
989
+ #: ../common.php:1336 ../common.php:1418
990
  msgid "Probing for vulnerable PHP code"
991
  msgstr ""
992
 
993
+ #: ../common.php:1337
994
  msgid "Attempt to upload malicious file denied"
995
  msgstr ""
996
 
997
+ #: ../common.php:1338
998
  msgid "File upload denied"
999
  msgstr ""
1000
 
1001
+ #: ../common.php:1340
1002
  msgid "Request to REST API denied"
1003
  msgstr ""
1004
 
1005
+ #: ../common.php:1341
1006
  msgid "XML-RPC request denied"
1007
  msgstr ""
1008
 
1009
+ #: ../common.php:1342
1010
+ msgid "User creation denied"
1011
+ msgstr ""
1012
+
1013
+ #: ../common.php:1343
1014
+ msgid "User update denied"
1015
+ msgstr ""
1016
+
1017
+ #: ../common.php:1344
1018
+ msgid "Role update denied"
1019
+ msgstr ""
1020
+
1021
+ #: ../common.php:1345
1022
+ msgid "Setting update denied"
1023
+ msgstr ""
1024
+
1025
+ #: ../common.php:1347
1026
  msgid "Malicious request denied"
1027
  msgstr ""
1028
 
1029
+ #: ../common.php:1351
1030
  msgid "User activated"
1031
  msgstr ""
1032
 
1033
+ #: ../common.php:1354
1034
  msgid "Invalid master credentials"
1035
  msgstr ""
1036
 
1037
+ #: ../common.php:1360
1038
  msgid "Bot detected"
1039
  msgstr ""
1040
 
1041
+ #: ../common.php:1361
1042
  msgid "Citadel mode is active"
1043
  msgstr ""
1044
 
1045
+ #: ../common.php:1363
1046
  msgid "IP address is locked out"
1047
  msgstr ""
1048
 
1049
+ #: ../common.php:1364
1050
  msgid "IP blacklisted"
1051
  msgstr ""
1052
 
1053
+ #: ../common.php:1366
1054
  msgid "Malicious activity detected"
1055
  msgstr ""
1056
 
1057
+ #: ../common.php:1367
1058
  msgid "Blocked by country rule"
1059
  msgstr ""
1060
 
1061
+ #: ../common.php:1368
1062
  msgid "Limit reached"
1063
  msgstr ""
1064
 
1065
+ #: ../common.php:1369
1066
  msgid "Multiple suspicious activities"
1067
  msgstr ""
1068
 
1069
+ #: ../common.php:1370
1070
  msgid "Denied"
1071
  msgstr ""
1072
 
1073
+ #: ../common.php:1371
1074
  msgid "Suspicious number of fields"
1075
  msgstr ""
1076
 
1077
+ #: ../common.php:1372
1078
  msgid "Suspicious number of nested values"
1079
  msgstr ""
1080
 
1081
+ #: ../common.php:1373 ../common.php:1419
1082
  msgid "Malicious code detected"
1083
  msgstr ""
1084
 
1085
+ #: ../common.php:1374
1086
  msgid "Suspicious SQL code detected"
1087
  msgstr ""
1088
 
1089
+ #: ../common.php:1375
1090
  msgid "Suspicious JavaScript code detected"
1091
  msgstr ""
1092
 
1093
+ #: ../common.php:1376
1094
  msgid "Blocked by administrator"
1095
  msgstr ""
1096
 
1097
+ #: ../common.php:1377
1098
  msgid "Site policy enforcement"
1099
  msgstr ""
1100
 
1101
+ #: ../common.php:1378
1102
  msgid "2FA code verified"
1103
  msgstr ""
1104
 
1105
+ #: ../common.php:1379
1106
  msgid "Initiated by the user"
1107
  msgstr ""
1108
 
1109
+ #: ../common.php:1382
1110
  msgid "Email address is not permitted"
1111
  msgstr ""
1112
 
1113
+ #: ../common.php:1384
1114
+ msgid "Permission denied"
1115
+ msgstr ""
1116
+
1117
+ #: ../common.php:1386
1118
+ msgid "Invalid user"
1119
+ msgstr ""
1120
+
1121
+ #: ../common.php:1387
1122
+ msgid "Incorrect password"
1123
+ msgstr ""
1124
+
1125
+ #: ../common.php:1411
1126
  msgid "Limit on login attempts is reached"
1127
  msgstr ""
1128
 
1129
+ #: ../common.php:1412
1130
  msgid "Attempt to access"
1131
  msgstr ""
1132
 
1133
+ #: ../common.php:1415
1134
  msgid "Limit on failed reCAPTCHA verifications is reached"
1135
  msgstr ""
1136
 
1137
+ #: ../common.php:1416
1138
  msgid "Bot activity is detected"
1139
  msgstr ""
1140
 
1141
+ #: ../common.php:1417
1142
  msgid "Multiple suspicious activities were detected"
1143
  msgstr ""
1144
 
1145
+ #: ../common.php:1420
1146
  msgid "Attempt to upload a file with malicious code"
1147
  msgstr ""
1148
 
1149
+ #: ../common.php:1422
1150
  msgid "Multiple suspicious requests"
1151
  msgstr ""
1152
 
1153
  #. translators: Time difference between two dates, in seconds (sec=second). 1: Number of seconds
1154
+ #: ../common.php:1558
1155
  #, php-format
1156
  msgid "%s sec"
1157
  msgid_plural "%s secs"
1158
  msgstr[0] ""
1159
  msgstr[1] ""
1160
 
1161
+ #: ../common.php:1565
1162
  #, php-format
1163
  msgid "%s ago"
1164
  msgstr ""
1165
 
1166
+ #: ../common.php:1565
1167
  #, php-format
1168
  msgctxt "preposition of a period of time like: in 6 hours"
1169
  msgid "in %s"
1170
  msgstr ""
1171
 
1172
+ #: ../common.php:1651
1173
  msgid "Bytes"
1174
  msgstr ""
1175
 
1176
+ #: ../common.php:1753
1177
  #, php-format
1178
  msgid "A new version of %s is available. Please install it."
1179
  msgstr ""
1180
 
1181
+ #: ../common.php:1773
1182
  msgid "Not specified"
1183
  msgstr ""
1184
 
1185
+ #: ../common.php:2684
1186
  msgid "Unable to create the directory"
1187
  msgstr ""
1188
 
1189
+ #: ../common.php:2689
1190
  msgid "Destination folder access denied"
1191
  msgstr ""
1192
 
1193
+ #: ../common.php:2692
1194
  msgid "File not found"
1195
  msgstr ""
1196
 
1197
+ #: ../common.php:2695
1198
  msgid "Unable to copy the file"
1199
  msgstr ""
1200
 
1201
+ #: ../common.php:2701
1202
  msgid "Unable to delete the file"
1203
  msgstr ""
1204
 
1209
  "more: <a href=\"https://wpcerber.com\">wpcerber.com</a>."
1210
  msgstr ""
1211
 
1212
+ #: ../cerber-news.php:151
1213
  msgid "Awesome!"
1214
  msgstr ""
1215
 
1216
+ #: ../cerber-lab.php:811
1217
  msgid "Want to make WP Cerber even more powerful?"
1218
  msgstr ""
1219
 
1220
+ #: ../cerber-lab.php:812
1221
  msgid ""
1222
  "Allow WP Cerber to send locked out malicious IP addresses to Cerber Lab. "
1223
  "This helps the plugin team to develop new algorithms for WP Cerber that will "
1225
  "everyday. You can disable the sending in the plugin settings at any time."
1226
  msgstr ""
1227
 
1228
+ #: ../cerber-lab.php:813
1229
  msgid "OK, nail them all"
1230
  msgstr ""
1231
 
1232
+ #: ../cerber-lab.php:814
1233
  msgid "NO, maybe later"
1234
  msgstr ""
1235
 
1236
+ #: ../cerber-lab.php:815 ../settings.php:819 ../settings.php:986
1237
  msgid "Know more"
1238
  msgstr ""
1239
 
1240
+ #: ../cerber-load.php:376
1241
  msgid "You are not allowed to log in. Ask your administrator for assistance."
1242
  msgstr ""
1243
 
1244
+ #: ../cerber-load.php:382
1245
  #, php-format
1246
  msgid ""
1247
  "You have exceeded the number of allowed login attempts. Please try again in "
1248
  "%d minutes."
1249
  msgstr ""
1250
 
1251
+ #: ../cerber-load.php:386
1252
  msgid "You are not allowed to log in"
1253
  msgstr ""
1254
 
1255
+ #: ../cerber-load.php:401
1256
  #, php-format
1257
  msgid "You have only one attempt remaining."
1258
  msgid_plural "You have %d attempts remaining."
1259
  msgstr[0] ""
1260
  msgstr[1] ""
1261
 
1262
+ #: ../cerber-load.php:713
1263
  msgid ""
1264
  "Human verification failed. Please click the square box in the reCAPTCHA "
1265
  "block below."
1266
  msgstr ""
1267
 
1268
+ #: ../cerber-load.php:834
1269
  msgid ""
1270
  "> > > Translator of WP Cerber? To get the PRO license for free, drop your "
1271
  "contacts here: https://wpcerber.com/contact/"
1272
  msgstr ""
1273
 
1274
+ #: ../cerber-load.php:1138
1275
  #, php-format
1276
  msgid ""
1277
  "<strong>ERROR</strong>: The password you entered for the username %s is "
1278
  "incorrect."
1279
  msgstr ""
1280
 
1281
+ #: ../cerber-load.php:1540 ../cerber-load.php:1546 ../cerber-load.php:1571 ..
1282
+ #: /cerber-load.php:1578
1283
  msgid "You are not allowed to register."
1284
  msgstr ""
1285
 
1286
+ #: ../cerber-load.php:1558
1287
  msgid "Username is not allowed. Please choose another one."
1288
  msgstr ""
1289
 
1290
+ #: ../cerber-load.php:1565
1291
  msgid "Email address is not permitted."
1292
  msgstr ""
1293
 
1294
+ #: ../cerber-load.php:1565
1295
  msgid "Please choose another one."
1296
  msgstr ""
1297
 
1298
+ #: ../cerber-load.php:1865
1299
  msgid "Sorry, human verification failed."
1300
  msgstr ""
1301
 
1302
+ #: ../cerber-load.php:3785
1303
  msgid "We're sorry, you are not allowed to proceed"
1304
  msgstr ""
1305
 
1306
+ #: ../cerber-load.php:3896
1307
  msgid "WP Cerber notify"
1308
  msgstr ""
1309
 
1310
+ #: ../cerber-load.php:3920
1311
  msgid "Citadel mode is activated"
1312
  msgstr ""
1313
 
1314
+ #: ../cerber-load.php:3922
1315
  #, php-format
1316
  msgid "Citadel mode is activated after %d failed login attempts in %d minutes."
1317
  msgstr ""
1318
 
1319
+ #: ../cerber-load.php:3923
1320
  #, php-format
1321
  msgid "Last failed attempt was at %s from IP %s with user login: %s."
1322
  msgstr ""
1323
 
1324
+ #: ../cerber-load.php:3924 ../cerber-load.php:4651
1325
  msgid "View activity in dashboard"
1326
  msgstr ""
1327
 
1328
+ #: ../cerber-load.php:3948
1329
  msgid "unspecified"
1330
  msgstr ""
1331
 
1332
+ #: ../cerber-load.php:3951
1333
  msgid "Number of lockouts is increasing"
1334
  msgstr ""
1335
 
1336
+ #: ../cerber-load.php:3953
1337
  msgid "Number of active lockouts"
1338
  msgstr ""
1339
 
1340
+ #: ../cerber-load.php:3954
1341
  #, php-format
1342
  msgid "Last lockout was added: %s for IP %s"
1343
  msgstr ""
1344
 
1345
+ #: ../cerber-load.php:3956
1346
  msgid "View activity for this IP"
1347
  msgstr ""
1348
 
1349
+ #: ../cerber-load.php:3957
1350
  msgid "View lockouts in dashboard"
1351
  msgstr ""
1352
 
1353
+ #: ../cerber-load.php:3960 ../cerber-load.php:3962
1354
  msgid "A new version of WP Cerber is available to install"
1355
  msgstr ""
1356
 
1357
+ #: ../cerber-load.php:3961
1358
  msgid "Hi!"
1359
  msgstr ""
1360
 
1361
+ #: ../cerber-load.php:3964 ../cerber-load.php:3975 ../nexus/cerber-slave-list.php:
1362
  #: 45
1363
  msgid "Website"
1364
  msgstr ""
1365
 
1366
+ #: ../cerber-load.php:3967 ../cerber-load.php:3968
1367
  msgid "The WP Cerber security plugin has been deactivated"
1368
  msgstr ""
1369
 
1370
+ #: ../cerber-load.php:3970
1371
  msgid "Not logged in"
1372
  msgstr ""
1373
 
1374
+ #: ../cerber-load.php:3976
1375
  msgid "By user"
1376
  msgstr ""
1377
 
1378
+ #: ../cerber-load.php:3977
1379
  msgid "From IP address"
1380
  msgstr ""
1381
 
1382
+ #: ../cerber-load.php:3980
1383
  msgid "From country"
1384
  msgstr ""
1385
 
1386
+ #: ../cerber-load.php:3984
1387
  msgid "The WP Cerber security plugin is now active"
1388
  msgstr ""
1389
 
1390
+ #: ../cerber-load.php:3985 ../cerber-load.php:4905
1391
  msgid "WP Cerber is now active and has started protecting your site"
1392
  msgstr ""
1393
 
1394
+ #: ../cerber-load.php:3992
1395
  msgid "New Custom login URL"
1396
  msgstr ""
1397
 
1398
+ #: ../cerber-load.php:3996 ../cerber-load.php:3997
1399
  msgid "A new activity has been recorded"
1400
  msgstr ""
1401
 
1402
+ #: ../cerber-load.php:4002
1403
  msgid "Weekly report"
1404
  msgstr ""
1405
 
1406
+ #: ../cerber-load.php:4005 ../cerber-load.php:4015
1407
  msgid "To change reporting settings visit"
1408
  msgstr ""
1409
 
1410
+ #: ../cerber-load.php:4012
1411
  msgid "Scanner Report"
1412
  msgstr ""
1413
 
1414
+ #: ../cerber-load.php:4038
1415
  msgid "Your login page:"
1416
  msgstr ""
1417
 
1418
+ #: ../cerber-load.php:4042
1419
  msgid "Your license is valid until"
1420
  msgstr ""
1421
 
1422
+ #: ../cerber-load.php:4045
1423
  msgid "This message was sent by"
1424
  msgstr ""
1425
 
1426
+ #: ../cerber-load.php:4066
1427
  #, php-format
1428
  msgid "Your last sign-in was %s from %s"
1429
  msgstr ""
1430
 
1431
+ #: ../cerber-load.php:4136
1432
  msgid "Weekly Report"
1433
  msgstr ""
1434
 
1435
+ #: ../cerber-load.php:4148
1436
  msgid "Activity details"
1437
  msgstr ""
1438
 
1439
+ #: ../cerber-load.php:4162
1440
  msgid "Attempts to log in with non-existing usernames"
1441
  msgstr ""
1442
 
1443
+ #: ../cerber-load.php:4623 ../cerber-users.php:752
1444
  msgid "User"
1445
  msgstr ""
1446
 
1447
+ #: ../cerber-load.php:4627
1448
  msgid "Username used"
1449
  msgstr ""
1450
 
1451
+ #: ../cerber-load.php:4631
1452
  msgid "Search string"
1453
  msgstr ""
1454
 
1455
+ #: ../cerber-load.php:4652
1456
  msgid "To delete the alert, click here"
1457
  msgstr ""
1458
 
1459
+ #: ../cerber-load.php:4871
1460
  #, php-format
1461
  msgid "The WP Cerber requires PHP %s or higher. You are running"
1462
  msgstr ""
1463
 
1464
+ #: ../cerber-load.php:4875
1465
  #, php-format
1466
  msgid "The WP Cerber requires WordPress %s or higher. You are running"
1467
  msgstr ""
1468
 
1469
+ #: ../cerber-load.php:4884
1470
  msgid "Can't activate WP Cerber due to a database error."
1471
  msgstr ""
1472
 
1473
+ #: ../cerber-load.php:4906
1474
  msgid "Your IP address is added to the"
1475
  msgstr ""
1476
 
1477
+ #: ../cerber-load.php:4922
1478
  msgid "Import settings"
1479
  msgstr ""
1480
 
1504
  msgid "blocked by %s at %s"
1505
  msgstr ""
1506
 
1507
+ #: ../cerber-users.php:67 ../settings.php:523
1508
  msgid "User Message"
1509
  msgstr ""
1510
 
1552
  msgid "Redirect user after logout"
1553
  msgstr ""
1554
 
1555
+ #: ../cerber-users.php:417 ../settings.php:572
1556
  msgid "User session expiration time"
1557
  msgstr ""
1558
 
1647
  msgid "Terminate"
1648
  msgstr ""
1649
 
1650
+ #: ../settings.php:132
1651
  msgid "All connected devices"
1652
  msgstr ""
1653
 
1654
+ #: ../settings.php:135
1655
  msgid "No devices found"
1656
  msgstr ""
1657
 
1658
+ #: ../settings.php:139
1659
  msgid "Not available"
1660
  msgstr ""
1661
 
1662
+ #: ../settings.php:145
1663
  msgid ""
1664
  "Please enable Permalinks to use this feature. Set Permalink Settings to "
1665
  "something other than Default."
1666
  msgstr ""
1667
 
1668
+ #: ../settings.php:148
1669
  msgid "Be careful about enabling these options."
1670
  msgstr ""
1671
 
1672
+ #: ../settings.php:148
1673
  msgid "If you forget your Custom login URL, you will be unable to log in."
1674
  msgstr ""
1675
 
1676
+ #: ../settings.php:151
1677
  msgid "These restrictions do not apply to IP addresses in the White IP Access List"
1678
  msgstr ""
1679
 
1680
+ #: ../settings.php:155
1681
  msgid "Plugin initialization"
1682
  msgstr ""
1683
 
1684
+ #: ../settings.php:158
1685
  msgid "Load security engine"
1686
  msgstr ""
1687
 
1688
+ #: ../settings.php:161
1689
  msgid "Legacy mode"
1690
  msgstr ""
1691
 
1692
+ #: ../settings.php:162
1693
  msgid "Standard mode"
1694
  msgstr ""
1695
 
1696
+ #: ../settings.php:168
1697
  msgid "Limit login attempts"
1698
  msgstr ""
1699
 
1700
+ #: ../settings.php:171
1701
  msgid "Attempts"
1702
  msgstr ""
1703
 
1704
+ #: ../settings.php:175
1705
  msgid "Lockout duration"
1706
  msgstr ""
1707
 
1708
+ #: ../settings.php:176 ../settings.php:271
1709
  msgid "minutes"
1710
  msgstr ""
1711
 
1712
+ #: ../settings.php:180
1713
  msgid "Aggressive lockout"
1714
  msgstr ""
1715
 
1716
+ #: ../settings.php:184 ../settings.php:516 ../settings.php:661
1717
  msgid "Use White IP Access List"
1718
  msgstr ""
1719
 
1720
+ #: ../settings.php:185
1721
  msgid "Apply limit login rules to IP addresses in the White IP Access List"
1722
  msgstr ""
1723
 
1724
+ #: ../settings.php:191
1725
  msgid "Proactive security rules"
1726
  msgstr ""
1727
 
1728
+ #: ../settings.php:192
1729
  msgid "Make your protection smarter!"
1730
  msgstr ""
1731
 
1732
+ #: ../settings.php:195
1733
  msgid "Block subnet"
1734
  msgstr ""
1735
 
1736
+ #: ../settings.php:196
1737
  msgid "Always block entire subnet Class C of intruders IP"
1738
  msgstr ""
1739
 
1740
+ #: ../settings.php:200
1741
  msgid "Non-existing users"
1742
  msgstr ""
1743
 
1744
+ #: ../settings.php:201
1745
  msgid "Immediately block IP when attempting to log in with a non-existing username"
1746
  msgstr ""
1747
 
1748
+ #: ../settings.php:205
1749
  msgid "Disable dashboard redirection"
1750
  msgstr ""
1751
 
1752
+ #: ../settings.php:206
1753
  msgid ""
1754
  "Disable automatic redirection to the login page when /wp-admin/ is requested "
1755
  "by an unauthorized request"
1756
  msgstr ""
1757
 
1758
+ #: ../settings.php:210
1759
  msgid "Request wp-login.php"
1760
  msgstr ""
1761
 
1762
+ #: ../settings.php:211
1763
  msgid "Immediately block IP after any request to wp-login.php"
1764
  msgstr ""
1765
 
1766
+ #: ../settings.php:215
1767
  msgid "Display 404 page"
1768
  msgstr ""
1769
 
1770
+ #: ../settings.php:218
1771
  msgid "Use 404 template from the active theme"
1772
  msgstr ""
1773
 
1774
+ #: ../settings.php:219
1775
  msgid "Display simple 404 page"
1776
  msgstr ""
1777
 
1778
+ #: ../settings.php:226
1779
  msgid "Custom login page"
1780
  msgstr ""
1781
 
1782
+ #: ../settings.php:230
1783
  msgid "Custom login URL"
1784
  msgstr ""
1785
 
1786
+ #: ../settings.php:231
1787
  msgid "must not overlap with the existing pages or posts slug"
1788
  msgstr ""
1789
 
1790
+ #: ../settings.php:233
1791
  msgid ""
1792
  "Custom login URL may contain Latin alphanumeric characters, dashes and "
1793
  "underscores only"
1794
  msgstr ""
1795
 
1796
+ #: ../settings.php:238
1797
  msgid "Disable wp-login.php"
1798
  msgstr ""
1799
 
1800
+ #: ../settings.php:239
1801
  msgid "Block direct access to wp-login.php and return HTTP 404 Not Found Error"
1802
  msgstr ""
1803
 
1804
+ #: ../settings.php:245
1805
  msgid "Site-specific settings"
1806
  msgstr ""
1807
 
1808
+ #: ../settings.php:248
1809
  msgid "Site connection"
1810
  msgstr ""
1811
 
1812
+ #: ../settings.php:253
1813
  msgid "Prefix for plugin cookies"
1814
  msgstr ""
1815
 
1816
+ #: ../settings.php:254
1817
  msgid "Prefix may contain only Latin alphanumeric characters and underscores"
1818
  msgstr ""
1819
 
1820
+ #: ../settings.php:263
1821
  msgid ""
1822
  "In the Citadel mode nobody is able to log in except IPs from the White IP "
1823
  "Access List. Active user sessions will not be affected."
1824
  msgstr ""
1825
 
1826
+ #: ../settings.php:266
1827
  msgid "Threshold"
1828
  msgstr ""
1829
 
1830
+ #: ../settings.php:270 ../cerber-scanner.php:3948
1831
  msgid "Duration"
1832
  msgstr ""
1833
 
1834
+ #: ../settings.php:277
1835
  msgid "Send notification to admin email"
1836
  msgstr ""
1837
 
1838
+ #: ../settings.php:282 ../settings.php:1414
1839
  msgid "Click to send test"
1840
  msgstr ""
1841
 
1842
+ #: ../settings.php:290 ../settings.php:741
1843
  msgid "Keep records for"
1844
  msgstr ""
1845
 
1846
+ #: ../settings.php:291 ../settings.php:742 ../settings.php:795 ../settings.php:978
1847
  msgid "days"
1848
  msgstr ""
1849
 
1850
+ #: ../settings.php:301
1851
  msgid "Cerber Lab connection"
1852
  msgstr ""
1853
 
1854
+ #: ../settings.php:302
1855
  msgid "Send malicious IP addresses to the Cerber Lab"
1856
  msgstr ""
1857
 
1858
+ #: ../settings.php:306
1859
  msgid "Cerber Lab protocol"
1860
  msgstr ""
1861
 
1862
+ #: ../settings.php:314
1863
  msgid "Use file"
1864
  msgstr ""
1865
 
1866
+ #: ../settings.php:315
1867
  msgid "Write failed login attempts to the file"
1868
  msgstr ""
1869
 
1870
+ #: ../settings.php:321
1871
  msgid "Preferences"
1872
  msgstr ""
1873
 
1874
+ #: ../settings.php:324
1875
  msgid "Drill down IP"
1876
  msgstr ""
1877
 
1878
+ #: ../settings.php:325
1879
  msgid "Retrieve extra WHOIS information for IP"
1880
  msgstr ""
1881
 
1882
+ #: ../settings.php:329
1883
  msgid "Date format"
1884
  msgstr ""
1885
 
1886
+ #: ../settings.php:330
1887
  #, php-format
1888
  msgid "if empty, the default format %s will be used"
1889
  msgstr ""
1890
 
1891
+ #: ../settings.php:335
1892
  msgid "Use English for admin interface"
1893
  msgstr ""
1894
 
1895
+ #: ../settings.php:342
1896
  msgid "Hardening WordPress"
1897
  msgstr ""
1898
 
1899
+ #: ../settings.php:346 ../settings.php:381
1900
  msgid "Stop user enumeration"
1901
  msgstr ""
1902
 
1903
+ #: ../settings.php:347
1904
  msgid "Block access to user pages like /?author=n"
1905
  msgstr ""
1906
 
1907
+ #: ../settings.php:351
1908
  msgid "Protect admin scripts"
1909
  msgstr ""
1910
 
1911
+ #: ../settings.php:352
1912
  msgid "Block unauthorized access to load-scripts.php and load-styles.php"
1913
  msgstr ""
1914
 
1915
+ #: ../settings.php:356
1916
  msgid "Disable PHP in uploads"
1917
  msgstr ""
1918
 
1919
+ #: ../settings.php:357
1920
  msgid "Block execution of PHP scripts in the WordPress media folder"
1921
  msgstr ""
1922
 
1923
+ #: ../settings.php:361
1924
  msgid "Disable PHP error displaying"
1925
  msgstr ""
1926
 
1927
+ #: ../settings.php:365
1928
  msgid "Disable XML-RPC"
1929
  msgstr ""
1930
 
1931
+ #: ../settings.php:366
1932
  msgid "Block access to the XML-RPC server (including Pingbacks and Trackbacks)"
1933
  msgstr ""
1934
 
1935
+ #: ../settings.php:370
1936
  msgid "Disable feeds"
1937
  msgstr ""
1938
 
1939
+ #: ../settings.php:371
1940
  msgid "Block access to the RSS, Atom and RDF feeds"
1941
  msgstr ""
1942
 
1943
+ #: ../settings.php:377
1944
  msgid "Access to WordPress REST API"
1945
  msgstr ""
1946
 
1947
+ #: ../settings.php:382
1948
  msgid "Block access to users' data via REST API"
1949
  msgstr ""
1950
 
1951
+ #: ../settings.php:386
1952
  msgid "Disable REST API"
1953
  msgstr ""
1954
 
1955
+ #: ../settings.php:387
1956
  msgid "Block access to WordPress REST API except any of the following"
1957
  msgstr ""
1958
 
1959
+ #: ../settings.php:392
1960
  msgid "Allow REST API for logged in users"
1961
  msgstr ""
1962
 
1963
+ #: ../settings.php:396
1964
  msgid "Allow REST API for these roles"
1965
  msgstr ""
1966
 
1967
+ #: ../settings.php:400
1968
  msgid "Allow these namespaces"
1969
  msgstr ""
1970
 
1971
+ #: ../settings.php:404
1972
  msgid ""
1973
  "Specify REST API namespaces to be allowed if REST API is disabled. One "
1974
  "string per line."
1975
  msgstr ""
1976
 
1977
+ #: ../settings.php:411
1978
+ msgid "Protect user accounts"
1979
+ msgstr ""
1980
+
1981
+ #: ../settings.php:416
1982
+ msgid ""
1983
+ "Restrict user account creation and user management with the following "
1984
+ "policies"
1985
+ msgstr ""
1986
+
1987
+ #: ../settings.php:422
1988
+ msgid "User registrations are limited to these roles"
1989
+ msgstr ""
1990
+
1991
+ #: ../settings.php:428
1992
+ msgid "Users with these roles are permitted to create new accounts"
1993
+ msgstr ""
1994
+
1995
+ #: ../settings.php:433
1996
+ msgid "Users with these roles are permitted to change sensitive user data"
1997
+ msgstr ""
1998
+
1999
+ #: ../settings.php:438 ../settings.php:466 ../settings.php:495
2000
+ msgid "Do not apply these policies to the IP addresses in the White IP Access List"
2001
+ msgstr ""
2002
+
2003
+ #: ../settings.php:446
2004
+ msgid "Protect user roles"
2005
+ msgstr ""
2006
+
2007
+ #: ../settings.php:450
2008
+ msgid "Restrict roles and capabilities management with the following policies"
2009
+ msgstr ""
2010
+
2011
+ #: ../settings.php:456
2012
+ msgid "Users with these roles are permitted to add new roles"
2013
+ msgstr ""
2014
+
2015
+ #: ../settings.php:461
2016
+ msgid "Users with these roles are permitted to change role capabilities"
2017
+ msgstr ""
2018
+
2019
+ #: ../settings.php:474
2020
+ msgid "Protect site settings"
2021
+ msgstr ""
2022
+
2023
+ #: ../settings.php:478
2024
+ msgid "Restrict updating site settings with the following policies"
2025
+ msgstr ""
2026
+
2027
+ #: ../settings.php:484
2028
+ msgid "Users with these roles are permitted to change protected settings"
2029
+ msgstr ""
2030
+
2031
+ #: ../settings.php:489
2032
+ msgid "Protected settings"
2033
+ msgstr ""
2034
+
2035
+ #: ../settings.php:509
2036
  msgid "Authorized users only"
2037
  msgstr ""
2038
 
2039
+ #: ../settings.php:510
2040
  msgid "Only registered and logged in website users have access to the website"
2041
  msgstr ""
2042
 
2043
+ #: ../settings.php:517
2044
+ msgid "Do not apply these policy to the IP addresses in the White IP Access List"
2045
  msgstr ""
2046
 
2047
+ #: ../settings.php:527 ../settings.php:2181
2048
  msgid "Only registered and logged in users are allowed to view this website"
2049
  msgstr ""
2050
 
2051
+ #: ../settings.php:532
2052
  msgid "Redirect to URL"
2053
  msgstr ""
2054
 
2055
+ #: ../settings.php:541
2056
  msgid "Registration limit"
2057
  msgstr ""
2058
 
2059
+ #: ../settings.php:547
2060
  msgid "Restrict email addresses"
2061
  msgstr ""
2062
 
2063
+ #: ../settings.php:550
2064
  msgid "No restrictions"
2065
  msgstr ""
2066
 
2067
+ #: ../settings.php:551
2068
  msgid "Deny all email addresses that match the following"
2069
  msgstr ""
2070
 
2071
+ #: ../settings.php:552
2072
  msgid "Permit only email addresses that match the following"
2073
  msgstr ""
2074
 
2075
+ #: ../settings.php:557
2076
  msgid ""
2077
  "Specify email addresses, wildcards or REGEX patterns. Use comma to separate "
2078
  "items."
2079
  msgstr ""
2080
 
2081
+ #: ../settings.php:557 ../settings.php:565
2082
  msgid "To specify a REGEX pattern wrap a pattern in two forward slashes."
2083
  msgstr ""
2084
 
2085
+ #: ../settings.php:564
2086
  msgid "Prohibited usernames"
2087
  msgstr ""
2088
 
2089
+ #: ../settings.php:565
2090
  msgid ""
2091
  "Usernames from this list are not allowed to log in or register. Any IP "
2092
  "address, have tried to use any of these usernames, will be immediately "
2093
  "blocked. Use comma to separate logins."
2094
  msgstr ""
2095
 
2096
+ #: ../settings.php:573
2097
  msgid "in minutes (leave empty to use default WP value)"
2098
  msgstr ""
2099
 
2100
+ #: ../settings.php:579
2101
  msgid "Sort users in dashboard"
2102
  msgstr ""
2103
 
2104
+ #: ../settings.php:580
2105
  msgid "by date of registration"
2106
  msgstr ""
2107
 
2108
+ #: ../settings.php:588
2109
  msgid "Email notifications"
2110
  msgstr ""
2111
 
2112
+ #: ../settings.php:591
2113
  msgid "Lockout notifications"
2114
  msgstr ""
2115
 
2116
+ #: ../settings.php:595 ../settings.php:638 ../settings.php:848
2117
  msgid "Email Address"
2118
  msgstr ""
2119
 
2120
+ #: ../settings.php:596 ../settings.php:640 ../settings.php:714 ../settings.php:850
2121
  msgid "Use comma to specify multiple values"
2122
  msgstr ""
2123
 
2124
+ #: ../settings.php:600
2125
  #, php-format
2126
  msgid "if empty, the admin email %s will be used"
2127
  msgstr ""
2128
 
2129
+ #: ../settings.php:603
2130
  msgid "Notification limit"
2131
  msgstr ""
2132
 
2133
+ #: ../settings.php:604
2134
  msgid "notification letters allowed per hour (0 means unlimited)"
2135
  msgstr ""
2136
 
2137
+ #: ../settings.php:608
2138
  msgid "New version is available"
2139
  msgstr ""
2140
 
2141
+ #: ../settings.php:614
2142
  msgid "Push notifications"
2143
  msgstr ""
2144
 
2145
+ #: ../settings.php:617
2146
  msgid "Pushbullet access token"
2147
  msgstr ""
2148
 
2149
+ #: ../settings.php:620
2150
  msgid "Pushbullet device"
2151
  msgstr ""
2152
 
2153
+ #: ../settings.php:627
2154
  msgid "Weekly reports"
2155
  msgstr ""
2156
 
2157
+ #: ../settings.php:630
2158
  msgid "Enable reporting"
2159
  msgstr ""
2160
 
2161
+ #: ../settings.php:634
2162
  msgid "Send reports on"
2163
  msgstr ""
2164
 
2165
+ #: ../settings.php:639 ../settings.php:849
2166
  msgid "if empty, email from notification settings will be used"
2167
  msgstr ""
2168
 
2169
+ #: ../settings.php:649
2170
  msgid "Traffic Inspection"
2171
  msgstr ""
2172
 
2173
+ #: ../settings.php:652
2174
  msgid "Enable traffic inspection"
2175
  msgstr ""
2176
 
2177
+ #: ../settings.php:656 ../settings.php:681
2178
  msgid "Maximum compatibility"
2179
  msgstr ""
2180
 
2181
+ #: ../settings.php:657 ../settings.php:682
2182
  msgid "Maximum security"
2183
  msgstr ""
2184
 
2185
+ #: ../settings.php:665
2186
  msgid "Request whitelist"
2187
  msgstr ""
2188
 
2189
+ #: ../settings.php:669
2190
  msgid ""
2191
  "Enter a request URI to exclude the request from inspection. One item per "
2192
  "line."
2193
  msgstr ""
2194
 
2195
+ #: ../settings.php:669
2196
  msgid "To specify a REGEX pattern, enclose a whole line in two braces."
2197
  msgstr ""
2198
 
2199
+ #: ../settings.php:674
2200
  msgid "Erroneous Request Shielding"
2201
  msgstr ""
2202
 
2203
+ #: ../settings.php:677
2204
  msgid "Enable error shielding"
2205
  msgstr ""
2206
 
2207
+ #: ../settings.php:686
2208
  msgid "Ignore logged in users"
2209
  msgstr ""
2210
 
2211
+ #: ../settings.php:692
2212
  msgid "Logging"
2213
  msgstr ""
2214
 
2215
+ #: ../settings.php:695
2216
  msgid "Logging mode"
2217
  msgstr ""
2218
 
2219
+ #: ../settings.php:698
2220
  msgid "Logging disabled"
2221
  msgstr ""
2222
 
2223
+ #: ../settings.php:699
2224
  msgid "Smart"
2225
  msgstr ""
2226
 
2227
+ #: ../settings.php:700
2228
  msgid "All traffic"
2229
  msgstr ""
2230
 
2231
+ #: ../settings.php:704
2232
  msgid "Ignore crawlers"
2233
  msgstr ""
2234
 
2235
+ #: ../settings.php:708
2236
  msgid "Save request fields"
2237
  msgstr ""
2238
 
2239
+ #: ../settings.php:712
2240
  msgid "Mask these form fields"
2241
  msgstr ""
2242
 
2243
+ #: ../settings.php:719
2244
  msgid "Save request headers"
2245
  msgstr ""
2246
 
2247
+ #: ../settings.php:724
2248
  msgid "Save $_SERVER"
2249
  msgstr ""
2250
 
2251
+ #: ../settings.php:728
2252
  msgid "Save request cookies"
2253
  msgstr ""
2254
 
2255
+ #: ../settings.php:732
2256
  msgid "Save software errors"
2257
  msgstr ""
2258
 
2259
+ #: ../settings.php:736
2260
  msgid "Page generation time threshold"
2261
  msgstr ""
2262
 
2263
+ #: ../settings.php:737
2264
  msgid "milliseconds"
2265
  msgstr ""
2266
 
2267
+ #: ../settings.php:749
2268
  msgid "Scanner settings"
2269
  msgstr ""
2270
 
2271
+ #: ../settings.php:752
2272
  msgid "Custom signatures"
2273
  msgstr ""
2274
 
2275
+ #: ../settings.php:756
2276
  msgid ""
2277
  "Specify custom PHP code signatures. One item per line. To specify a REGEX "
2278
  "pattern, enclose a whole line in two braces."
2279
  msgstr ""
2280
 
2281
+ #: ../settings.php:759
2282
  msgid "Unwanted file extensions"
2283
  msgstr ""
2284
 
2285
+ #: ../settings.php:763
2286
  msgid ""
2287
  "Specify file extensions to search for. Full scan only. Use comma to separate "
2288
  "items."
2289
  msgstr ""
2290
 
2291
+ #: ../settings.php:766
2292
  msgid "Directories to exclude"
2293
  msgstr ""
2294
 
2295
+ #: ../settings.php:770
2296
  msgid ""
2297
  "Specify directories to exclude from scanning. Use absolute paths. One item "
2298
  "per line."
2299
  msgstr ""
2300
 
2301
+ #: ../settings.php:773
2302
  msgid "Monitor new files"
2303
  msgstr ""
2304
 
2305
+ #: ../settings.php:777
2306
  msgid "Monitor modified files"
2307
  msgstr ""
2308
 
2309
+ #: ../settings.php:781
2310
  msgid "Scan temporary directory"
2311
  msgstr ""
2312
 
2313
+ #: ../settings.php:785
2314
  msgid "Scan session directory"
2315
  msgstr ""
2316
 
2317
+ #: ../settings.php:789 ../settings.php:1083 ../settings.php:1110
2318
  msgid "Enable diagnostic logging"
2319
  msgstr ""
2320
 
2321
+ #: ../settings.php:793
2322
  msgid "Delete quarantined files after"
2323
  msgstr ""
2324
 
2325
+ #: ../settings.php:803
2326
  msgid "Automated recurring scan schedule"
2327
  msgstr ""
2328
 
2329
+ #: ../settings.php:806
2330
  msgid "Launch Quick Scan"
2331
  msgstr ""
2332
 
2333
+ #: ../settings.php:811
2334
  msgid "Launch Full Scan"
2335
  msgstr ""
2336
 
2337
+ #: ../settings.php:818
2338
  msgid "Scan results reporting"
2339
  msgstr ""
2340
 
2341
+ #: ../settings.php:822
2342
  msgid "Report an issue if any of the following is true"
2343
  msgstr ""
2344
 
2345
+ #: ../settings.php:825 ../settings.php:870
2346
  msgid "Low severity"
2347
  msgstr ""
2348
 
2349
+ #: ../settings.php:826 ../settings.php:871
2350
  msgid "Medium severity"
2351
  msgstr ""
2352
 
2353
+ #: ../settings.php:827 ../settings.php:872
2354
  msgid "High severity"
2355
  msgstr ""
2356
 
2357
+ #: ../settings.php:831
2358
  msgid "Send email report"
2359
  msgstr ""
2360
 
2361
+ #: ../settings.php:834
2362
  msgid "After every scan"
2363
  msgstr ""
2364
 
2365
+ #: ../settings.php:835
2366
  msgid "If any changes in scan results occurred"
2367
  msgstr ""
2368
 
2369
+ #: ../settings.php:836
2370
  msgid "If new issues found"
2371
  msgstr ""
2372
 
2373
+ #: ../settings.php:840
2374
  msgid "Include file sizes"
2375
  msgstr ""
2376
 
2377
+ #: ../settings.php:844
2378
  msgid "Include scan errors"
2379
  msgstr ""
2380
 
2381
+ #: ../settings.php:859
2382
  msgid "Automatic cleanup of malware and suspicious files"
2383
  msgstr ""
2384
 
2385
+ #: ../settings.php:863
2386
  msgid "Delete unattended files"
2387
  msgstr ""
2388
 
2389
+ #: ../settings.php:867
2390
  msgid "Files in the uploads folder"
2391
  msgstr ""
2392
 
2393
+ #: ../settings.php:876
2394
  msgid "Files with unwanted extensions"
2395
  msgstr ""
2396
 
2397
+ #: ../settings.php:882
2398
  msgid "Automatic recovery of modified and infected files"
2399
  msgstr ""
2400
 
2401
+ #: ../settings.php:885
2402
  msgid "Recover WordPress files"
2403
  msgstr ""
2404
 
2405
+ #: ../settings.php:889
2406
  msgid "Recover plugins files"
2407
  msgstr ""
2408
 
2409
+ #: ../settings.php:895
2410
  msgid "Exclusions"
2411
  msgstr ""
2412
 
2413
+ #: ../settings.php:896
2414
  msgid "These files will never be deleted during automatic cleanup."
2415
  msgstr ""
2416
 
2417
+ #: ../settings.php:899
2418
  msgid "Files in the temporary directory"
2419
  msgstr ""
2420
 
2421
+ #: ../settings.php:903
2422
  msgid "Files in the sessions directory"
2423
  msgstr ""
2424
 
2425
+ #: ../settings.php:907
2426
  msgid "Files in these directories"
2427
  msgstr ""
2428
 
2429
+ #: ../settings.php:911
2430
  msgid "Use absolute paths. One item per line."
2431
  msgstr ""
2432
 
2433
+ #: ../settings.php:914
2434
  msgid "Files with these extensions"
2435
  msgstr ""
2436
 
2437
+ #: ../settings.php:918
2438
  msgid "Use comma to separate items."
2439
  msgstr ""
2440
 
2441
+ #: ../settings.php:925
2442
  msgid "Cerber antispam engine"
2443
  msgstr ""
2444
 
2445
+ #: ../settings.php:928
2446
  msgid "Comment form"
2447
  msgstr ""
2448
 
2449
+ #: ../settings.php:929
2450
  msgid "Protect comment form with bot detection engine"
2451
  msgstr ""
2452
 
2453
+ #: ../settings.php:933 ../settings.php:1002
2454
  msgid "Registration form"
2455
  msgstr ""
2456
 
2457
+ #: ../settings.php:934
2458
  msgid "Protect registration form with bot detection engine"
2459
  msgstr ""
2460
 
2461
+ #: ../settings.php:938
2462
  msgid "Other forms"
2463
  msgstr ""
2464
 
2465
+ #: ../settings.php:939
2466
  msgid "Protect all forms on the website with bot detection engine"
2467
  msgstr ""
2468
 
2469
+ #: ../settings.php:945
2470
  msgid "Adjust antispam engine"
2471
  msgstr ""
2472
 
2473
+ #: ../settings.php:948
2474
  msgid "Safe mode"
2475
  msgstr ""
2476
 
2477
+ #: ../settings.php:949
2478
  msgid "Use less restrictive policies (allow AJAX)"
2479
  msgstr ""
2480
 
2481
+ #: ../settings.php:954
2482
  msgid "Disable bot detection engine for logged in users"
2483
  msgstr ""
2484
 
2485
+ #: ../settings.php:958
2486
  msgid "Query whitelist"
2487
  msgstr ""
2488
 
2489
+ #: ../settings.php:959
2490
  msgid ""
2491
  "Enter a part of query string or query path to exclude a request from "
2492
  "inspection by the engine. One item per line."
2493
  msgstr ""
2494
 
2495
+ #: ../settings.php:967
2496
  msgid "Comment processing"
2497
  msgstr ""
2498
 
2499
+ #: ../settings.php:970
2500
  msgid "If a spam comment detected"
2501
  msgstr ""
2502
 
2503
+ #: ../settings.php:972
2504
  msgid "Deny it completely"
2505
  msgstr ""
2506
 
2507
+ #: ../settings.php:972
2508
  msgid "Mark it as spam"
2509
  msgstr ""
2510
 
2511
+ #: ../settings.php:975
2512
  msgid "Trash spam comments"
2513
  msgstr ""
2514
 
2515
+ #: ../settings.php:977
2516
  msgid "Move spam comments to trash after"
2517
  msgstr ""
2518
 
2519
+ #: ../settings.php:985
2520
  msgid "reCAPTCHA settings"
2521
  msgstr ""
2522
 
2523
+ #: ../settings.php:986
2524
  msgid ""
2525
  "Before you can start using reCAPTCHA, you have to obtain Site key and Secret "
2526
  "key on the Google website"
2527
  msgstr ""
2528
 
2529
+ #: ../settings.php:989
2530
  msgid "Site key"
2531
  msgstr ""
2532
 
2533
+ #: ../settings.php:993
2534
  msgid "Secret key"
2535
  msgstr ""
2536
 
2537
+ #: ../settings.php:997
2538
  msgid "Invisible reCAPTCHA"
2539
  msgstr ""
2540
 
2541
+ #: ../settings.php:998
2542
  msgid "Enable invisible reCAPTCHA"
2543
  msgstr ""
2544
 
2545
+ #: ../settings.php:998
2546
  msgid ""
2547
  "(do not enable it unless you get and enter the Site and Secret keys for the "
2548
  "invisible version)"
2549
  msgstr ""
2550
 
2551
+ #: ../settings.php:1003
2552
  msgid "Enable reCAPTCHA for WordPress registration form"
2553
  msgstr ""
2554
 
2555
+ #: ../settings.php:1008
2556
  msgid "Enable reCAPTCHA for WooCommerce registration form"
2557
  msgstr ""
2558
 
2559
+ #: ../settings.php:1012
2560
  msgid "Lost password form"
2561
  msgstr ""
2562
 
2563
+ #: ../settings.php:1013
2564
  msgid "Enable reCAPTCHA for WordPress lost password form"
2565
  msgstr ""
2566
 
2567
+ #: ../settings.php:1018
2568
  msgid "Enable reCAPTCHA for WooCommerce lost password form"
2569
  msgstr ""
2570
 
2571
+ #: ../settings.php:1022
2572
  msgid "Login form"
2573
  msgstr ""
2574
 
2575
+ #: ../settings.php:1023
2576
  msgid "Enable reCAPTCHA for WordPress login form"
2577
  msgstr ""
2578
 
2579
+ #: ../settings.php:1028
2580
  msgid "Enable reCAPTCHA for WooCommerce login form"
2581
  msgstr ""
2582
 
2583
+ #: ../settings.php:1033
2584
  msgid "Enable reCAPTCHA for WordPress comment form"
2585
  msgstr ""
2586
 
2587
+ #: ../settings.php:1038
2588
  msgid "Disable reCAPTCHA for logged in users"
2589
  msgstr ""
2590
 
2591
+ #: ../settings.php:1042
2592
  msgid "Limit attempts"
2593
  msgstr ""
2594
 
2595
+ #: ../settings.php:1043
2596
  #, php-format
2597
  msgid "Lock out IP address for %s minutes after %s failed attempts within %s minutes"
2598
  msgstr ""
2599
 
2600
+ #: ../settings.php:1050
2601
  msgid "Master settings"
2602
  msgstr ""
2603
 
2604
+ #: ../settings.php:1058
2605
  msgid "Return to the website list"
2606
  msgstr ""
2607
 
2608
+ #: ../settings.php:1062
2609
  msgid "Show \"Switched to\" notification"
2610
  msgstr ""
2611
 
2612
+ #: ../settings.php:1066
2613
  msgid "Add @ site to the page title"
2614
  msgstr ""
2615
 
2616
+ #: ../settings.php:1070
2617
  msgid "Use master language"
2618
  msgstr ""
2619
 
2620
+ #: ../settings.php:1093
2621
  msgid "Limit access by IP address"
2622
  msgstr ""
2623
 
2624
+ #: ../settings.php:1099
2625
  msgid "Access to this website"
2626
  msgstr ""
2627
 
2628
+ #: ../settings.php:1102
2629
  msgid "Full access mode"
2630
  msgstr ""
2631
 
2632
+ #: ../settings.php:1103
2633
  msgid "Read-only mode"
2634
  msgstr ""
2635
 
2636
+ #: ../settings.php:1119
2637
  msgid "The full access mode requires the PRO version of WP Cerber"
2638
  msgstr ""
2639
 
2640
+ #: ../settings.php:1391
2641
  #, php-format
2642
  msgid "%s allowed retries in %s minutes"
2643
  msgstr ""
2644
 
2645
+ #: ../settings.php:1396
2646
  #, php-format
2647
  msgid "%s allowed registrations in %s minutes from one IP"
2648
  msgstr ""
2649
 
2650
+ #: ../settings.php:1401
2651
  #, php-format
2652
  msgid "Increase lockout duration to %s hours after %s lockouts in the last %s hours"
2653
  msgstr ""
2654
 
2655
+ #: ../settings.php:1408
2656
  msgid "Notify admin if the number of active lockouts above"
2657
  msgstr ""
2658
 
2659
+ #: ../settings.php:1417
2660
  #, php-format
2661
  msgid "Enable after %s failed login attempts in last %s minutes"
2662
  msgstr ""
2663
 
2664
+ #: ../settings.php:1573
2665
  msgid "Select one or more roles"
2666
  msgstr ""
2667
 
2668
+ #: ../settings.php:1598
2669
  msgid "Sunday"
2670
  msgstr ""
2671
 
2672
+ #: ../settings.php:1599
2673
  msgid "Monday"
2674
  msgstr ""
2675
 
2676
+ #: ../settings.php:1600
2677
  msgid "Tuesday"
2678
  msgstr ""
2679
 
2680
+ #: ../settings.php:1601
2681
  msgid "Wednesday"
2682
  msgstr ""
2683
 
2684
+ #: ../settings.php:1602
2685
  msgid "Thursday"
2686
  msgstr ""
2687
 
2688
+ #: ../settings.php:1603
2689
  msgid "Friday"
2690
  msgstr ""
2691
 
2692
+ #: ../settings.php:1604
2693
  msgid "Saturday"
2694
  msgstr ""
2695
 
2696
+ #: ../settings.php:1614
2697
  msgctxt "preposition of time like: at 11:00"
2698
  msgid "at"
2699
  msgstr ""
2700
 
2701
+ #: ../settings.php:1634
2702
  msgid "Click to send now"
2703
  msgstr ""
2704
 
2705
+ #: ../settings.php:1645
2706
  msgid "Plugin initialization mode has not been changed"
2707
  msgstr ""
2708
 
2709
+ #: ../settings.php:1672 ../settings.php:1673
2710
  msgid "Attention! You have changed the login URL! The new login URL is"
2711
  msgstr ""
2712
 
2713
+ #: ../settings.php:1674 ../settings.php:1675
2714
  msgid ""
2715
  "If you use a caching plugin, you have to add your new login URL to the list "
2716
  "of pages not to cache."
2717
  msgstr ""
2718
 
2719
+ #: ../settings.php:1763 ../settings.php:1775 ../settings.php:1929
2720
  msgid "<strong>ERROR</strong>: please enter a valid email address."
2721
  msgstr ""
2722
 
2723
+ #: ../settings.php:1935
2724
  msgid "The schedule has been updated"
2725
  msgstr ""
2726
 
2727
+ #: ../settings.php:1938
2728
  msgid "Unable to update the schedule"
2729
  msgstr ""
2730
 
2731
+ #: ../settings.php:2752
2732
  msgid "These features are available in a professional version of the plugin."
2733
  msgstr ""
2734
 
2735
+ #: ../settings.php:2753
2736
  msgid "Know more about all advantages at"
2737
  msgstr ""
2738
 
2739
+ #: ../cerber-ds.php:762
2740
+ msgid "Administration Email Address"
2741
+ msgstr ""
2742
+
2743
+ #: ../cerber-ds.php:763
2744
+ msgid "New User Default Role"
2745
+ msgstr ""
2746
+
2747
+ #: ../cerber-ds.php:764
2748
+ msgid "Site Address (URL)"
2749
+ msgstr ""
2750
+
2751
+ #: ../cerber-ds.php:765
2752
+ msgid "WordPress Address (URL)"
2753
+ msgstr ""
2754
+
2755
+ #: ../cerber-ds.php:766
2756
+ msgid "Anyone can register"
2757
+ msgstr ""
2758
+
2759
+ #: ../cerber-ds.php:767
2760
+ msgid "Active Plugins"
2761
+ msgstr ""
2762
+
2763
+ #: ../cerber-ds.php:768
2764
+ msgid "Active Theme"
2765
+ msgstr ""
2766
+
2767
  #: ../cerber-2fa.php:352
2768
  msgid ""
2769
  "This verification PIN code is expired. We have just sent a new one to your "
2892
  msgid "Error while parsing file"
2893
  msgstr ""
2894
 
2895
+ #: ../cerber-tools.php:238
2896
  msgid "Unsubscribe"
2897
  msgstr ""
2898
 
readme.txt CHANGED
@@ -2,10 +2,10 @@
2
  Contributors: gioni
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=SR8RJXFU35EW8
4
  Tags: security, malware scanner, antispam, firewall, limit login attempts, custom login url, login, recaptcha, captcha, activity, log, logging, whitelist, blacklist, access list
5
- Requires at least: 4.5
6
  Requires PHP: 5.4
7
  Tested up to: 5.2
8
- Stable tag: 8.4
9
  License: GPLv2
10
 
11
  Protection against hacker attacks and bots. Malware scanner & integrity checker. User activity log. Antispam reCAPTCHA. Limit login attempts.
@@ -14,11 +14,11 @@ Protection against hacker attacks and bots. Malware scanner & integrity checker.
14
 
15
  Defends WordPress against hacker attacks, spam, trojans and malware.
16
  Mitigates brute force attacks by limiting the number of login attempts through the login form, XML-RPC / REST API requests or using auth cookies.
17
- Tracks user and intruder activity with powerful email, mobile and desktop notifications.
18
- Stops spam: activates a specialized Cerber anti-spam engine and Google reCAPTCHA to protect registration, contact and comments forms.
19
  Advanced malware scanner, integrity checker and file monitor.
20
  Hardening WordPress with a set of flexible security rules and sophisticated security algorithms.
21
- Restricts access with the Black IP Access List and the White IP Access List.
22
 
23
  **Features you will love**
24
 
@@ -40,15 +40,15 @@ Restricts access with the Black IP Access List and the White IP Access List.
40
  * Immediately blocks an intruder IP when attempting to log in with non-existent or prohibited username.
41
  * Restrict user registration or login with a username matching REGEX patterns.
42
  * [Restrict access to WP REST API with your own role-based security rules](https://wpcerber.com/restrict-access-to-wordpress-rest-api/).
43
- * Disable WordPress REST API completely.
44
- * Disable XML-RPC (block access to XML-RPC including Pingbacks and Trackbacks).
45
  * Disable feeds (block access to the RSS, Atom and RDF feeds).
46
  * Restrict access to XML-RPC, REST API and feeds by **White IP Access list** by an IP address or an IP range.
47
  * [Authorized users only mode](https://wpcerber.com/only-logged-in-wordpress-users/)
48
  * [Block a user account](https://wpcerber.com/how-to-block-wordpress-user/).
49
  * Disable automatic redirection to the hidden login page.
50
  * **Stop user enumeration** (blocks access to author pages and prevents user data leaks via REST API).
51
- * Proactively **blocks IP subnet class C** for intruder's IP.
52
  * Anti-spam: **reCAPTCHA** to protect WordPress login, register and comment forms.
53
  * [reCAPTCHA for WooCommerce & WordPress forms](https://wpcerber.com/how-to-setup-recaptcha/).
54
  * Invisible reCAPTCHA for WordPress comments forms.
@@ -319,6 +319,17 @@ To get access to your dashboard you need to copy the WP Cerber Reset folder to t
319
 
320
  == Changelog ==
321
 
 
 
 
 
 
 
 
 
 
 
 
322
  = 8.4 =
323
  * New: More flexible role-based GEO access policies.
324
  * New: A logged in users' sessions manager.
2
  Contributors: gioni
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=SR8RJXFU35EW8
4
  Tags: security, malware scanner, antispam, firewall, limit login attempts, custom login url, login, recaptcha, captcha, activity, log, logging, whitelist, blacklist, access list
5
+ Requires at least: 4.9
6
  Requires PHP: 5.4
7
  Tested up to: 5.2
8
+ Stable tag: 8.5
9
  License: GPLv2
10
 
11
  Protection against hacker attacks and bots. Malware scanner & integrity checker. User activity log. Antispam reCAPTCHA. Limit login attempts.
14
 
15
  Defends WordPress against hacker attacks, spam, trojans and malware.
16
  Mitigates brute force attacks by limiting the number of login attempts through the login form, XML-RPC / REST API requests or using auth cookies.
17
+ Tracks user and bad actors activity with flexible email, mobile and desktop notifications.
18
+ Stops spam by using a specialized Cerber's anti-spam engine and Google reCAPTCHA to protect registration, contact and comments forms.
19
  Advanced malware scanner, integrity checker and file monitor.
20
  Hardening WordPress with a set of flexible security rules and sophisticated security algorithms.
21
+ Restricts access with Black and White IP Access Lists.
22
 
23
  **Features you will love**
24
 
40
  * Immediately blocks an intruder IP when attempting to log in with non-existent or prohibited username.
41
  * Restrict user registration or login with a username matching REGEX patterns.
42
  * [Restrict access to WP REST API with your own role-based security rules](https://wpcerber.com/restrict-access-to-wordpress-rest-api/).
43
+ * Block access to WordPress REST API completely.
44
+ * Block access to XML-RPC (block access to XML-RPC including Pingbacks and Trackbacks).
45
  * Disable feeds (block access to the RSS, Atom and RDF feeds).
46
  * Restrict access to XML-RPC, REST API and feeds by **White IP Access list** by an IP address or an IP range.
47
  * [Authorized users only mode](https://wpcerber.com/only-logged-in-wordpress-users/)
48
  * [Block a user account](https://wpcerber.com/how-to-block-wordpress-user/).
49
  * Disable automatic redirection to the hidden login page.
50
  * **Stop user enumeration** (blocks access to author pages and prevents user data leaks via REST API).
51
+ * Proactively **blocks IP subnet class C**.
52
  * Anti-spam: **reCAPTCHA** to protect WordPress login, register and comment forms.
53
  * [reCAPTCHA for WooCommerce & WordPress forms](https://wpcerber.com/how-to-setup-recaptcha/).
54
  * Invisible reCAPTCHA for WordPress comments forms.
319
 
320
  == Changelog ==
321
 
322
+ = 8.5 =
323
+ * New: Data Shield module for advanced protection of user data and vital settings in the website database. Available in the PRO version.
324
+ * Improvement: Compatibility with WooCommerce significantly improved.
325
+ * Update: Strict filtering for the Custom login URL setting.
326
+ * Update: Chinese (Taiwan) translation has been added. Thanks to Sid Lo.
327
+ * Bug fixed: Custom login URL doesn't work after updating WordPress to 5.2.3.
328
+ * Bug fixed: User Policies tabs are not switchable if a user role was declared with a hyphen instead of the underscore.
329
+ * Bug fixed: A PHP warning while adding a network to the Black IP Access List from the Activity tab.
330
+ * Bug fixed: An anti-spam false positive: some WordPress DB updates can't be completed.
331
+ * [Read more](https://wpcerber.com/wp-cerber-security-8-5/)
332
+
333
  = 8.4 =
334
  * New: More flexible role-based GEO access policies.
335
  * New: A logged in users' sessions manager.
settings.php CHANGED
@@ -47,6 +47,8 @@ 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_SL','cerber-nexus-slave');
51
  define('CERBER_OPT_MA','cerber-nexus_master');
52
 
@@ -58,7 +60,7 @@ function cerber_get_setting_id( $tab = null ) {
58
  if ( ! $id ) {
59
  $id = crb_admin_get_page();
60
  }
61
- // Some tab names doesn't match WP setting names
62
  // tab => settings id
63
  $map = array(
64
  'scan_settings' => 'scanner', // define('CERBER_OPT_S','cerber-scanner');
@@ -68,6 +70,7 @@ function cerber_get_setting_id( $tab = null ) {
68
  'captcha' => 'recaptcha',
69
  'cerber-recaptcha' => 'antispam',
70
  'global_policies' => 'users',
 
71
 
72
  'cerber-nexus' => 'nexus-slave',
73
  'nexus_slave' => 'nexus-slave',
@@ -114,6 +117,8 @@ function cerber_settings_config( $args = array() ) {
114
  'policies' => array( 'scanpls', 'scanrecover', 'scanexcl' ),
115
  'antispam' => array( 'antibot', 'antibot_more', 'commproc' ),
116
  'recaptcha' => array( 'recap' ),
 
 
117
  'nexus-slave' => array( 'slave_settings' ),
118
  'nexus_master' => array( 'master_settings' ),
119
  );
@@ -402,6 +407,100 @@ function cerber_settings_config( $args = array() ) {
402
  ),
403
  ),
404
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
405
  'us' => array(
406
  //'name' => __( 'User related settings', 'wp-cerber' ),
407
  //'info' => __( 'User related settings', 'wp-cerber' ),
@@ -415,7 +514,7 @@ function cerber_settings_config( $args = array() ) {
415
  ),
416
  'authonlyacl' => array(
417
  'title' => __( 'Use White IP Access List', 'wp-cerber' ),
418
- 'label' => __( 'Do not apply this policy to IP addresses in the White IP Access List', 'wp-cerber' ),
419
  'type' => 'checkbox',
420
  'default' => 0,
421
  'enabler' => array( 'authonly' ),
@@ -1104,7 +1203,7 @@ function cerber_wp_settings_setup( $screen_id, $sections = array() ) {
1104
  $config['class'] .= ' crb-disable-this';
1105
  }
1106
 
1107
- add_settings_field( $field, $config['title'], 'cerber_field_show', $option, $section_id, $config );
1108
  }
1109
  }
1110
  }
@@ -1116,7 +1215,7 @@ function cerber_wp_settings_setup( $screen_id, $sections = array() ) {
1116
  */
1117
 
1118
  function cerber_get_setting_list() {
1119
- 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 );
1120
  }
1121
 
1122
  /*
@@ -1259,12 +1358,20 @@ function cerber_field_show( $args ) {
1259
 
1260
  $class = crb_array_get( $args, 'class', '' );
1261
 
1262
- $data = '';
 
1263
  if ( isset( $args['enabler'][0] ) ) {
1264
- $data .= ' data-enabler="crb-input-' . $args['enabler'][0] . '" ';
 
1265
  }
1266
  if ( isset( $args['enabler'][1] ) ) {
1267
- $data .= ' data-enabler_value="' . $args['enabler'][1] . '" ';
 
 
 
 
 
 
1268
  }
1269
 
1270
  switch ( $args['type'] ) {
@@ -1320,15 +1427,21 @@ function cerber_field_show( $args ) {
1320
  $html .= '<br/><label class="crb-below" for="' . $args['setting'] . '">' . $label . '</label>';
1321
  break;
1322
  case 'select':
1323
- $html = cerber_select( $name, $args['set'], $value, $class, $id, '', $placeholder );
1324
  //$html .= '<span class="">' . $label . '</span>';
1325
  $html .= '<br/><label class="crb-below">' . $label . '</label>';
1326
  break;
1327
  case 'role_select':
1328
- $html = cerber_role_select( $name . '[]', $value, '', true, '', '100%' );
 
 
 
1329
  break;
1330
  case 'checkbox_set':
1331
- $html = '<div class="crb-checkbox_set" style="line-height: 2em;">';
 
 
 
1332
  foreach ( $args['set'] as $key => $item ) {
1333
  $v = ( ! empty( $value[ $key ] ) ) ? $value[ $key ] : 0;
1334
  $html .= '<input type="checkbox" value="1" name="' . $name . '[' . $key . ']" ' . checked( 1, $v, false ) . $atts . '/>' . $item . '<br />';
@@ -1543,20 +1656,29 @@ add_filter( 'pre_update_option_'.CERBER_OPT, function ($new, $old, $option) {
1543
 
1544
  if ( cerber_is_permalink_enabled() ) {
1545
  $new['loginpath'] = urlencode( str_replace( '/', '', $new['loginpath'] ) );
1546
- $new['loginpath'] = sanitize_text_field($new['loginpath']);
1547
- if ( $new['loginpath'] && $new['loginpath'] != $old['loginpath'] ) {
1548
- $href = cerber_get_home_url() . '/' . $new['loginpath'] . '/';
1549
- $url = urldecode( $href );
1550
- $msg = array();
1551
- $msg_e = array();
1552
- $msg[] = __( 'Attention! You have changed the login URL! The new login URL is', 'wp-cerber' ) . ': <a href="' . $href . '">' . $url . '</a>';
1553
- $msg_e[] = __( 'Attention! You have changed the login URL! The new login URL is', 'wp-cerber' ) . ': ' . $url;
1554
- $msg[] = __( 'If you use a caching plugin, you have to add your new login URL to the list of pages not to cache.', 'wp-cerber' );
1555
- $msg_e[] = __( 'If you use a caching plugin, you have to add your new login URL to the list of pages not to cache.', 'wp-cerber' );
1556
- cerber_admin_notice( $msg );
1557
- cerber_send_email( 'newlurl', $msg_e );
 
 
 
 
 
 
 
 
1558
  }
1559
- } else {
 
1560
  $new['loginpath'] = '';
1561
  $new['loginnowp'] = 0;
1562
  }
@@ -1734,6 +1856,37 @@ add_filter( 'pre_update_option_'.CERBER_OPT_T, function ($new, $old, $option) {
1734
  return $new;
1735
  }, 10, 3 );
1736
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1737
  /*
1738
  Sanitizing/checking user input for Security Scanner settings
1739
  */
@@ -1973,8 +2126,8 @@ function cerber_get_defaults() {
1973
  $all_defaults = array(
1974
  CERBER_OPT => array(
1975
  'boot-mode' => 0,
1976
- 'attempts' => 3,
1977
- 'period' => 60,
1978
  'lockout' => 60,
1979
  'agperiod' => 24,
1980
  'aglocks' => 2,
@@ -2093,6 +2246,23 @@ function cerber_get_defaults() {
2093
  'tithreshold' => '',
2094
  'tikeeprec' => 7,
2095
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2096
  CERBER_OPT_S => array(
2097
  'scan_cpt' => '',
2098
  'scan_uext' => '',
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
 
60
  if ( ! $id ) {
61
  $id = crb_admin_get_page();
62
  }
63
+ // Exceptions: some tab names (or page id) doesn't match WP setting names
64
  // tab => settings id
65
  $map = array(
66
  'scan_settings' => 'scanner', // define('CERBER_OPT_S','cerber-scanner');
70
  'captcha' => 'recaptcha',
71
  'cerber-recaptcha' => 'antispam',
72
  'global_policies' => 'users',
73
+ 'cerber-shield' => 'user_shield',
74
 
75
  'cerber-nexus' => 'nexus-slave',
76
  'nexus_slave' => 'nexus-slave',
117
  'policies' => array( 'scanpls', 'scanrecover', 'scanexcl' ),
118
  'antispam' => array( 'antibot', 'antibot_more', 'commproc' ),
119
  'recaptcha' => array( 'recap' ),
120
+ 'user_shield' => array( 'acc_protect', 'role_protect' ),
121
+ 'opt_shield' => array( 'opt_protect' ),
122
  'nexus-slave' => array( 'slave_settings' ),
123
  'nexus_master' => array( 'master_settings' ),
124
  );
407
  ),
408
  ),
409
 
410
+ 'acc_protect' => array(
411
+ 'name' => __( 'Protect user accounts', 'wp-cerber' ),
412
+ //'desc' => 'These policies prevent site takeover (admin dashboard hijacking) by creating accounts with administrator privileges.',
413
+ 'desc' => 'These security measures prevent site takeover by preventing bad actors from creating additional administrator accounts or user privilege escalation.',
414
+ 'fields' => array(
415
+ 'ds_4acc' => array(
416
+ 'label' => __( 'Restrict user account creation and user management with the following policies', 'wp-cerber' ),
417
+ //'doclink' => 'https://wpcerber.com/only-logged-in-wordpress-users/',
418
+ 'type' => 'checkbox',
419
+ //'pro' => 1
420
+ ),
421
+ 'ds_regs_roles' => array(
422
+ 'label' => __( 'User registrations are limited to these roles', 'wp-cerber' ),
423
+ //'title' => __( 'Roles restricted to new user registrations', 'wp-cerber' ),
424
+ 'type' => 'role_select',
425
+ 'enabler' => array( 'ds_4acc' ),
426
+ ),
427
+ 'ds_add_acc' => array(
428
+ 'label' => __( 'Users with these roles are permitted to create new accounts', 'wp-cerber' ),
429
+ 'type' => 'role_select',
430
+ 'enabler' => array( 'ds_4acc' ),
431
+ ),
432
+ 'ds_edit_acc' => array(
433
+ 'label' => __( 'Users with these roles are permitted to change sensitive user data', 'wp-cerber' ),
434
+ 'type' => 'role_select',
435
+ 'enabler' => array( 'ds_4acc' ),
436
+ ),
437
+ 'ds_4acc_acl' => array(
438
+ 'label' => __( 'Do not apply these policies to the IP addresses in the White IP Access List', 'wp-cerber' ),
439
+ 'type' => 'checkbox',
440
+ 'default' => 0,
441
+ 'enabler' => array( 'ds_4acc' ),
442
+ ),
443
+ ),
444
+ ),
445
+ 'role_protect' => array(
446
+ 'name' => __( 'Protect user roles', 'wp-cerber' ),
447
+ 'desc' => 'These security measures prevent site takeover by preventing bad actors from creating new roles or role capabilities escalation.',
448
+ 'fields' => array(
449
+ 'ds_4roles' => array(
450
+ 'label' => __( "Restrict roles and capabilities management with the following policies", 'wp-cerber' ),
451
+ //'doclink' => 'https://wpcerber.com/only-logged-in-wordpress-users/',
452
+ 'type' => 'checkbox',
453
+ 'default' => 0,
454
+ ),
455
+ 'ds_add_role' => array(
456
+ 'label' => __( 'Users with these roles are permitted to add new roles', 'wp-cerber' ),
457
+ 'type' => 'role_select',
458
+ 'enabler' => array( 'ds_4roles' ),
459
+ ),
460
+ 'ds_edit_role' => array(
461
+ 'label' => __( "Users with these roles are permitted to change role capabilities", 'wp-cerber' ),
462
+ 'type' => 'role_select',
463
+ 'enabler' => array( 'ds_4roles' ),
464
+ ),
465
+ 'ds_4roles_acl' => array(
466
+ 'label' => __( 'Do not apply these policies to the IP addresses in the White IP Access List', 'wp-cerber' ),
467
+ 'type' => 'checkbox',
468
+ 'default' => 0,
469
+ 'enabler' => array( 'ds_4roles' ),
470
+ ),
471
+ ),
472
+ ),
473
+ 'opt_protect' => array(
474
+ 'name' => __( 'Protect site settings', 'wp-cerber' ),
475
+ 'desc' => 'These security measures prevent malware injection by preventing bad actors from altering vital site settings.',
476
+ 'fields' => array(
477
+ 'ds_4opts' => array(
478
+ 'label' => __( "Restrict updating site settings with the following policies", 'wp-cerber' ),
479
+ //'doclink' => 'https://wpcerber.com/only-logged-in-wordpress-users/',
480
+ 'type' => 'checkbox',
481
+ 'default' => 0,
482
+ ),
483
+ 'ds_4opts_roles' => array(
484
+ 'label' => __( 'Users with these roles are permitted to change protected settings', 'wp-cerber' ),
485
+ 'type' => 'role_select',
486
+ 'enabler' => array( 'ds_4opts' ),
487
+ ),
488
+ 'ds_4opts_list' => array(
489
+ 'label' => __( 'Protected settings', 'wp-cerber' ),
490
+ 'type' => 'checkbox_set',
491
+ 'set' => CRB_DS::get_settings_list(),
492
+ 'enabler' => array( 'ds_4opts' ),
493
+ ),
494
+ 'ds_4opts_acl' => array(
495
+ 'label' => __( 'Do not apply these policies to the IP addresses in the White IP Access List', 'wp-cerber' ),
496
+ 'type' => 'checkbox',
497
+ 'default' => 0,
498
+ 'enabler' => array( 'ds_4opts' ),
499
+ ),
500
+ ),
501
+ ),
502
+
503
+
504
  'us' => array(
505
  //'name' => __( 'User related settings', 'wp-cerber' ),
506
  //'info' => __( 'User related settings', 'wp-cerber' ),
514
  ),
515
  'authonlyacl' => array(
516
  'title' => __( 'Use White IP Access List', 'wp-cerber' ),
517
+ 'label' => __( 'Do not apply these policy to the IP addresses in the White IP Access List', 'wp-cerber' ),
518
  'type' => 'checkbox',
519
  'default' => 0,
520
  'enabler' => array( 'authonly' ),
1203
  $config['class'] .= ' crb-disable-this';
1204
  }
1205
 
1206
+ add_settings_field( $field, crb_array_get($config,'title',''), 'cerber_field_show', $option, $section_id, $config );
1207
  }
1208
  }
1209
  }
1215
  */
1216
 
1217
  function cerber_get_setting_list() {
1218
+ 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 );
1219
  }
1220
 
1221
  /*
1358
 
1359
  $class = crb_array_get( $args, 'class', '' );
1360
 
1361
+ $data = '';
1362
+ $ena = array();
1363
  if ( isset( $args['enabler'][0] ) ) {
1364
+ $ena['enabler'] = 'crb-input-' . $args['enabler'][0];
1365
+ //$data .= ' data-enabler="crb-input-' . $args['enabler'][0] . '" ';
1366
  }
1367
  if ( isset( $args['enabler'][1] ) ) {
1368
+ $ena['enabler_value'] = $args['enabler'][1];
1369
+ //$data .= ' data-enabler_value="' . $args['enabler'][1] . '" ';
1370
+ }
1371
+ if ( $ena ) {
1372
+ foreach ( $ena as $att => $val ) {
1373
+ $data .= ' data-' . $att . '="' . $val . '"';
1374
+ }
1375
  }
1376
 
1377
  switch ( $args['type'] ) {
1427
  $html .= '<br/><label class="crb-below" for="' . $args['setting'] . '">' . $label . '</label>';
1428
  break;
1429
  case 'select':
1430
+ $html = cerber_select( $name, $args['set'], $value, $class, $id, '', $placeholder, $ena );
1431
  //$html .= '<span class="">' . $label . '</span>';
1432
  $html .= '<br/><label class="crb-below">' . $label . '</label>';
1433
  break;
1434
  case 'role_select':
1435
+ if ( $label ) {
1436
+ $label = '<p class="crb-label-above"><label for="' . $name . '">' . $label . '</label></p>';
1437
+ }
1438
+ $html = $label . cerber_role_select( $name . '[]', $value, '', true, '', '100%' ) . '<i ' . $data . '></i>';
1439
  break;
1440
  case 'checkbox_set':
1441
+ if ( $label ) {
1442
+ $label = '<p class="crb-label-above"><label for="' . $name . '">' . $label . '</label></p>';
1443
+ }
1444
+ $html = '<div class="crb-checkbox_set" style="line-height: 2em;" ' . $data . '>' . $label;
1445
  foreach ( $args['set'] as $key => $item ) {
1446
  $v = ( ! empty( $value[ $key ] ) ) ? $value[ $key ] : 0;
1447
  $html .= '<input type="checkbox" value="1" name="' . $name . '[' . $key . ']" ' . checked( 1, $v, false ) . $atts . '/>' . $item . '<br />';
1656
 
1657
  if ( cerber_is_permalink_enabled() ) {
1658
  $new['loginpath'] = urlencode( str_replace( '/', '', $new['loginpath'] ) );
1659
+ $new['loginpath'] = sanitize_text_field( $new['loginpath'] );
1660
+
1661
+ if ( $new['loginpath'] ) {
1662
+ if ( $new['loginpath'] == 'wp-admin'
1663
+ || preg_match( '/[#|\.\!\?\:\s]/', $new['loginpath'] ) ) {
1664
+ cerber_admin_notice( __( 'ERROR:', 'wp-cerber' ) . ' You may not set this value for Custom login URL. Please specify another one.' );
1665
+ $new['loginpath'] = $old['loginpath'];
1666
+ }
1667
+ elseif ( $new['loginpath'] != $old['loginpath'] ) {
1668
+ $href = cerber_get_home_url() . '/' . $new['loginpath'] . '/';
1669
+ $url = urldecode( $href );
1670
+ $msg = array();
1671
+ $msg_e = array();
1672
+ $msg[] = __( 'Attention! You have changed the login URL! The new login URL is', 'wp-cerber' ) . ': <a href="' . $href . '">' . $url . '</a>';
1673
+ $msg_e[] = __( 'Attention! You have changed the login URL! The new login URL is', 'wp-cerber' ) . ': ' . $url;
1674
+ $msg[] = __( 'If you use a caching plugin, you have to add your new login URL to the list of pages not to cache.', 'wp-cerber' );
1675
+ $msg_e[] = __( 'If you use a caching plugin, you have to add your new login URL to the list of pages not to cache.', 'wp-cerber' );
1676
+ cerber_admin_notice( $msg );
1677
+ cerber_send_email( 'newlurl', $msg_e );
1678
+ }
1679
  }
1680
+ }
1681
+ else {
1682
  $new['loginpath'] = '';
1683
  $new['loginnowp'] = 0;
1684
  }
1856
  return $new;
1857
  }, 10, 3 );
1858
 
1859
+ add_filter( 'pre_update_option_' . CERBER_OPT_US, function ( $new, $old, $option ) {
1860
+
1861
+ if ( ! empty( $new['ds_4acc'] ) ) {
1862
+ CRB_DS::enable_shadowing( 1 );
1863
+ }
1864
+ else {
1865
+ CRB_DS::disable_shadowing( 1 );
1866
+ }
1867
+
1868
+ if ( ! empty( $new['ds_4roles'] ) ) {
1869
+ CRB_DS::enable_shadowing( 2 );
1870
+ }
1871
+ else {
1872
+ CRB_DS::disable_shadowing( 2 );
1873
+ }
1874
+
1875
+ return $new;
1876
+ }, 10, 3 );
1877
+
1878
+ add_filter( 'pre_update_option_' . CERBER_OPT_OS, function ( $new, $old, $option ) {
1879
+
1880
+ if ( ! empty( $new['ds_4opts'] ) ) {
1881
+ CRB_DS::enable_shadowing( 3 );
1882
+ }
1883
+ else {
1884
+ CRB_DS::disable_shadowing( 3 );
1885
+ }
1886
+
1887
+ return $new;
1888
+ }, 10, 3 );
1889
+
1890
  /*
1891
  Sanitizing/checking user input for Security Scanner settings
1892
  */
2126
  $all_defaults = array(
2127
  CERBER_OPT => array(
2128
  'boot-mode' => 0,
2129
+ 'attempts' => 5,
2130
+ 'period' => 30,
2131
  'lockout' => 60,
2132
  'agperiod' => 24,
2133
  'aglocks' => 2,
2246
  'tithreshold' => '',
2247
  'tikeeprec' => 7,
2248
  ),
2249
+ CERBER_OPT_US => array(
2250
+ 'ds_4acc' => 0,
2251
+ 'ds_regs_roles' => array(),
2252
+ 'ds_add_acc' => array( 'administrator' ),
2253
+ 'ds_edit_acc' => array( 'administrator' ),
2254
+ 'ds_4acc_acl' => 0,
2255
+ 'ds_4roles' => 0,
2256
+ 'ds_add_role' => array( 'administrator' ),
2257
+ 'ds_edit_role' => array( 'administrator' ),
2258
+ 'ds_4roles_acl' => 0,
2259
+ ),
2260
+ CERBER_OPT_OS => array(
2261
+ 'ds_4opts' => 0,
2262
+ 'ds_4opts_roles' => array( 'administrator' ),
2263
+ 'ds_4opts_list' => CRB_DS::get_settings_list( false ),
2264
+ 'ds_4opts_acl' => 0,
2265
+ ),
2266
  CERBER_OPT_S => array(
2267
  'scan_cpt' => '',
2268
  'scan_uext' => '',
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.4
9
  Text Domain: wp-cerber
10
  Domain Path: /languages
11
  Network: true
@@ -31,7 +31,7 @@
31
 
32
  */
33
 
34
- define( 'CERBER_VER', '8.4' );
35
  define( 'CERBER_PLUGIN_ID', 'wp-cerber/wp-cerber.php' );
36
 
37
  function cerber_plugin_file() {
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.5
9
  Text Domain: wp-cerber
10
  Domain Path: /languages
11
  Network: true
31
 
32
  */
33
 
34
+ define( 'CERBER_VER', '8.5' );
35
  define( 'CERBER_PLUGIN_ID', 'wp-cerber/wp-cerber.php' );
36
 
37
  function cerber_plugin_file() {