Cerber Security & Antispam - Version 8.6.3

Version Description

  • New: Ability to load IP access list's entries in the CSV format (bulk load).
  • Update: A new malware scanner setting allows you to permit the scanner to change permissions of folders and files when required.
  • Fixed: The access list IPv4 wildcard ... doesnt work (has no effect).
  • Fixed: If the anti-spam query whitelist contains more than one entry, they do not work as expected.
  • Fixed: Several settings fields are not properly escaped.
  • Read more
Download this release

Release Info

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

Code changes from version 8.6 to 8.6.3

admin/cerber-settings.php CHANGED
@@ -253,18 +253,11 @@ function cerber_field_show( $args ) {
253
 
254
  //$settings = get_site_option( 'cerber-' . $args['group'] );
255
  $settings = crb_get_settings();
256
- if ( is_array( $settings ) ) {
257
- array_walk_recursive( $settings, 'esc_html' );
258
- }
259
 
260
  $pre = '';
261
  $value = '';
262
  $atts = '';
263
 
264
- if ( isset( $args['value'] ) ) {
265
- $value = esc_html( $args['value'] ); // 7.9.8
266
- }
267
-
268
  $label = crb_array_get( $args, 'label', '' );
269
 
270
  if ( ! empty( $args['doclink'] ) ) {
@@ -284,6 +277,10 @@ function cerber_field_show( $args ) {
284
  $atts .= ' required="required" ';
285
  }
286
 
 
 
 
 
287
  if ( isset( $args['setting'] ) ) {
288
  if ( ! $value && isset( $settings[ $args['setting'] ] ) ) {
289
  $value = $settings[ $args['setting'] ];
@@ -298,6 +295,8 @@ function cerber_field_show( $args ) {
298
  }
299
  }
300
 
 
 
301
  if ( isset( $args['list'] ) ) {
302
  $value = cerber_array2text( $value, $args['delimiter'] );
303
  }
@@ -338,34 +337,34 @@ function cerber_field_show( $args ) {
338
  $s3 = $args['group'] . '-within';
339
 
340
  $html = sprintf( $label,
341
- cerber_txt_field( $name_prefix . '[' . $s1 . ']', $settings[ $s1 ], '', 3, 3, '\d+' ),
342
- cerber_txt_field( $name_prefix . '[' . $s2 . ']', $settings[ $s2 ], '', 3, 3, '\d+' ),
343
- cerber_txt_field( $name_prefix . '[' . $s3 . ']', $settings[ $s3 ], '', 3, 3, '\d+' ) );
344
  break;
345
 
346
  case 'attempts':
347
  $html = sprintf( __( '%s retries are allowed within %s minutes', 'wp-cerber' ),
348
- cerber_txt_field( $name_prefix . '[attempts]', $settings['attempts'], '', 3, 3, '\d+' ),
349
- cerber_txt_field( $name_prefix . '[period]', $settings['period'], '', 3, 3, '\d+' ) );
350
  break;
351
 
352
  case 'reglimit':
353
  $html = sprintf( __( '%s registrations are allowed within %s minutes from one IP address', 'wp-cerber' ),
354
- cerber_txt_field( $name_prefix . '[reglimit_num]', $settings['reglimit_num'], '', 3, 3, '\d+' ),
355
- cerber_txt_field( $name_prefix . '[reglimit_min]', $settings['reglimit_min'], '', 4, 4, '\d+' ));
356
  break;
357
 
358
  case 'aggressive':
359
  $html = sprintf( __( 'Increase lockout duration to %s hours after %s lockouts in the last %s hours', 'wp-cerber' ),
360
- cerber_txt_field( $name_prefix . '[agperiod]', $settings['agperiod'], '', 3, 3, '\d+' ),
361
- cerber_txt_field( $name_prefix . '[aglocks]', $settings['aglocks'], '', 3, 3, '\d+' ),
362
- cerber_txt_field( $name_prefix . '[aglast]', $settings['aglast'], '', 3, 3, '\d+' ) );
363
  break;
364
 
365
  case 'notify':
366
  $html = '<label class="crb-switch"><input class="screen-reader-text" type="checkbox" id="' . $args['setting'] . '" name="cerber-' . $args['group'] . '[' . $args['setting'] . ']" value="1" ' . checked( 1, $value, false ) . $atts . ' /><span class="crb-slider round"></span></label>'
367
  . __( 'Notify admin if the number of active lockouts above', 'wp-cerber' ) . ' ' .
368
- cerber_txt_field( $name_prefix . '[above]', $settings['above'], '', 3, 3, '\d+' ).
369
  ' <span class="crb-no-wrap">[ <a href="' . cerber_admin_link_add( array(
370
  'cerber_admin_do' => 'testnotify',
371
  'type' => 'lockout',
@@ -374,8 +373,8 @@ function cerber_field_show( $args ) {
374
 
375
  case 'citadel':
376
  $html = sprintf( __( 'Enable after %s failed login attempts in the last %s minutes', 'wp-cerber' ),
377
- cerber_txt_field( $name_prefix . '[cilimit]', $settings['cilimit'], '', 3, 3, '\d+' ),
378
- cerber_txt_field( $name_prefix . '[ciperiod]', $settings['ciperiod'], '', 3, 3, '\d+' ) . '<i ' . $data . '></i>' );
379
  break;
380
 
381
  case 'checkbox':
@@ -423,31 +422,41 @@ function cerber_field_show( $args ) {
423
  break;
424
  case 'text':
425
  default:
426
- /*$type = 'text';
427
- if ( in_array( $args['type'], array( 'url' ) ) ) {
428
- $type = $args['type'];
429
- }*/
430
 
431
  $type = crb_array_get( $args, 'type', 'text' );
432
- if ( ! in_array( $type, array( 'url', 'number', 'email' ) ) ) {
433
- $type = 'text';
 
 
 
434
  }
435
 
436
  $size = '';
437
- $maxlength = '';
438
- $class = 'crb-wide';
439
- if ( isset( $args['size'] ) ) {
440
- //$size = ' size="' . $args['size'] . '" maxlength="' . $args['size'] . '" ';
441
- $size = ' size="' . $args['size'] . '"';
442
- $class = '';
443
  }
444
- if ( isset( $args['maxlength'] ) ) {
445
- $maxlength = ' maxlength="' . $args['maxlength'] . '" ';
 
 
 
 
 
 
 
 
 
 
 
446
  }
447
- elseif ( isset( $args['size'] ) ) {
448
- $maxlength = ' maxlength="' . $args['size'] . '" ';
449
  }
450
 
 
451
  if ( isset( $args['pattern'] ) ) {
452
  $atts .= ' pattern="' . $args['pattern'] . '"';
453
  }
@@ -463,7 +472,7 @@ function cerber_field_show( $args ) {
463
  }
464
  }
465
 
466
- $html = $pre . '<input type="' . $type . '" id="' . $args['setting'] . '" name="' . $name . '" value="' . $value . '"' . $atts . ' class="' . $class . '" ' . $size . $maxlength . $atts . $data . ' />';
467
 
468
  if ( ! $size || crb_array_get( $args, 'label_pos' ) == 'below' ) {
469
  $label = '<br/><label class="crb-below" for="' . $args['setting'] . '">' . $label . '</label>';
@@ -566,8 +575,18 @@ function cerber_checkbox( $name, $value, $label = '', $id = '', $atts = '' ) {
566
  <div style="display: table-cell;"><label for="' . $id . '">' . $label . '</label></div>';
567
  }
568
 
569
- function cerber_txt_field( $name, $value = '', $id = '', $size = '', $maxlength = '', $pattern = '' ) {
 
 
 
 
570
  $atts = '';
 
 
 
 
 
 
571
  if ( $size ) {
572
  $atts .= ' size="' . $size . '" ';
573
  }
@@ -578,7 +597,7 @@ function cerber_txt_field( $name, $value = '', $id = '', $size = '', $maxlength
578
  $atts .= ' pattern="' . $pattern . '" ';
579
  }
580
 
581
- return '<input type="text" id="' . $id . '" name="' . $name . '" value="' . $value . '" ' . $atts . ' />';
582
  }
583
 
584
  function cerber_nonce_field( $action = 'control', $echo = false ) {
@@ -700,12 +719,11 @@ add_filter( 'pre_update_option_'.CERBER_OPT_U, function ($new, $old, $option) {
700
  return $new;
701
  }, 10, 3 );
702
  /*
703
- Sanitizing/checking user input for reCAPTCHA tab settings
704
  */
705
  add_filter( 'pre_update_option_' . CERBER_OPT_A, function ( $new, $old, $option ) {
706
- if ( ! empty( $new['botswhite'] ) ) {
707
- $new['botswhite'] = cerber_text2array( $new['botswhite'], "\n" );
708
- }
709
 
710
  if ( empty( $new['botsany'] ) && empty( $new['botscomm'] ) && empty( $new['botsreg'] ) ) {
711
  update_site_option( 'cerber-antibot', '' );
@@ -1048,7 +1066,7 @@ function cerber_update_site_option( $option_name, $value ) {
1048
  /**
1049
  * Updates Cerber's settings in a new way
1050
  *
1051
- * @since 8.5.9.1
1052
  *
1053
  */
1054
  function cerber_settings_update() {
@@ -1059,7 +1077,7 @@ function cerber_settings_update() {
1059
  }
1060
 
1061
  // We do not process some specific cases - not a real settings form
1062
- if ( $group == CRB_NX_SLAVE ) {
1063
  return;
1064
  }
1065
 
@@ -1082,6 +1100,9 @@ function cerber_settings_update() {
1082
 
1083
  $fields = array_fill_keys( $fields, '' );
1084
  $post_fields = crb_get_post_fields( 'cerber-' . $group, array() );
 
 
 
1085
 
1086
  $new_settings = array_merge( $fields, $post_fields );
1087
 
@@ -1109,4 +1130,41 @@ function cerber_settings_update() {
1109
  'remote' => $remote
1110
  ) );
1111
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1112
  }
253
 
254
  //$settings = get_site_option( 'cerber-' . $args['group'] );
255
  $settings = crb_get_settings();
 
 
 
256
 
257
  $pre = '';
258
  $value = '';
259
  $atts = '';
260
 
 
 
 
 
261
  $label = crb_array_get( $args, 'label', '' );
262
 
263
  if ( ! empty( $args['doclink'] ) ) {
277
  $atts .= ' required="required" ';
278
  }
279
 
280
+ if ( isset( $args['value'] ) ) {
281
+ $value = $args['value'];
282
+ }
283
+
284
  if ( isset( $args['setting'] ) ) {
285
  if ( ! $value && isset( $settings[ $args['setting'] ] ) ) {
286
  $value = $settings[ $args['setting'] ];
295
  }
296
  }
297
 
298
+ $value = crb_attr_escape( $value );
299
+
300
  if ( isset( $args['list'] ) ) {
301
  $value = cerber_array2text( $value, $args['delimiter'] );
302
  }
337
  $s3 = $args['group'] . '-within';
338
 
339
  $html = sprintf( $label,
340
+ cerber_digi_field( $name_prefix . '[' . $s1 . ']', $settings[ $s1 ] ),
341
+ cerber_digi_field( $name_prefix . '[' . $s2 . ']', $settings[ $s2 ] ),
342
+ cerber_digi_field( $name_prefix . '[' . $s3 . ']', $settings[ $s3 ] ) );
343
  break;
344
 
345
  case 'attempts':
346
  $html = sprintf( __( '%s retries are allowed within %s minutes', 'wp-cerber' ),
347
+ cerber_digi_field( $name_prefix . '[attempts]', $settings['attempts'] ),
348
+ cerber_digi_field( $name_prefix . '[period]', $settings['period'] ) );
349
  break;
350
 
351
  case 'reglimit':
352
  $html = sprintf( __( '%s registrations are allowed within %s minutes from one IP address', 'wp-cerber' ),
353
+ cerber_digi_field( $name_prefix . '[reglimit_num]', $settings['reglimit_num'] ),
354
+ cerber_digi_field( $name_prefix . '[reglimit_min]', $settings['reglimit_min'], 4, 4 ) );
355
  break;
356
 
357
  case 'aggressive':
358
  $html = sprintf( __( 'Increase lockout duration to %s hours after %s lockouts in the last %s hours', 'wp-cerber' ),
359
+ cerber_digi_field( $name_prefix . '[agperiod]', $settings['agperiod'] ),
360
+ cerber_digi_field( $name_prefix . '[aglocks]', $settings['aglocks'] ),
361
+ cerber_digi_field( $name_prefix . '[aglast]', $settings['aglast'] ) );
362
  break;
363
 
364
  case 'notify':
365
  $html = '<label class="crb-switch"><input class="screen-reader-text" type="checkbox" id="' . $args['setting'] . '" name="cerber-' . $args['group'] . '[' . $args['setting'] . ']" value="1" ' . checked( 1, $value, false ) . $atts . ' /><span class="crb-slider round"></span></label>'
366
  . __( 'Notify admin if the number of active lockouts above', 'wp-cerber' ) . ' ' .
367
+ cerber_digi_field( $name_prefix . '[above]', $settings['above'] ) .
368
  ' <span class="crb-no-wrap">[ <a href="' . cerber_admin_link_add( array(
369
  'cerber_admin_do' => 'testnotify',
370
  'type' => 'lockout',
373
 
374
  case 'citadel':
375
  $html = sprintf( __( 'Enable after %s failed login attempts in the last %s minutes', 'wp-cerber' ),
376
+ cerber_digi_field( $name_prefix . '[cilimit]', $settings['cilimit'] ),
377
+ cerber_digi_field( $name_prefix . '[ciperiod]', $settings['ciperiod'] ) . '<i ' . $data . '></i>' );
378
  break;
379
 
380
  case 'checkbox':
422
  break;
423
  case 'text':
424
  default:
 
 
 
 
425
 
426
  $type = crb_array_get( $args, 'type', 'text' );
427
+ if ( in_array( $type, array( 'url', 'number', 'email' ) ) ) {
428
+ $input_type = $type;
429
+ }
430
+ else {
431
+ $input_type = 'text';
432
  }
433
 
434
  $size = '';
435
+ $class = '';
436
+
437
+ if ( $type == 'digits' ) {
438
+ $size = '3';
439
+ $class = 'crb-digits';
 
440
  }
441
+
442
+ $size = crb_array_get( $args, 'size', $size );
443
+ $maxlength = crb_array_get( $args, 'maxlength', $size );
444
+
445
+ if ( $maxlength ) {
446
+ $maxlength = ' maxlength="' . $maxlength . '" ';
447
+ }
448
+ elseif ( $size ) {
449
+ $maxlength = ' maxlength="' . $size . '" ';
450
+ }
451
+
452
+ if ( $size ) {
453
+ $size = ' size="' . $size . '"';
454
  }
455
+ else {
456
+ $class = 'crb-wide';
457
  }
458
 
459
+
460
  if ( isset( $args['pattern'] ) ) {
461
  $atts .= ' pattern="' . $args['pattern'] . '"';
462
  }
472
  }
473
  }
474
 
475
+ $html = $pre . '<input type="' . $input_type . '" id="' . $args['setting'] . '" name="' . $name . '" value="' . $value . '"' . $atts . ' class="' . $class . '" ' . $size . $maxlength . $atts . $data . ' />';
476
 
477
  if ( ! $size || crb_array_get( $args, 'label_pos' ) == 'below' ) {
478
  $label = '<br/><label class="crb-below" for="' . $args['setting'] . '">' . $label . '</label>';
575
  <div style="display: table-cell;"><label for="' . $id . '">' . $label . '</label></div>';
576
  }
577
 
578
+ function cerber_digi_field( $name, $value = '', $size = '3', $maxlength = '3', $id = '' ) {
579
+ return cerber_txt_field( $name, $value, $id, $size, $maxlength, '\d+', 'crb-digits' );
580
+ }
581
+
582
+ function cerber_txt_field( $name, $value = '', $id = '', $size = '', $maxlength = '', $pattern = '', $class = '' ) {
583
  $atts = '';
584
+ if ( $id ) {
585
+ $atts .= ' id="' . $id . '" ';
586
+ }
587
+ if ( $class ) {
588
+ $atts .= ' class="' . $class . '" ';
589
+ }
590
  if ( $size ) {
591
  $atts .= ' size="' . $size . '" ';
592
  }
597
  $atts .= ' pattern="' . $pattern . '" ';
598
  }
599
 
600
+ return '<input type="text" name="' . $name . '" value="' . $value . '" ' . $atts . ' />';
601
  }
602
 
603
  function cerber_nonce_field( $action = 'control', $echo = false ) {
719
  return $new;
720
  }, 10, 3 );
721
  /*
722
+ Sanitizing/checking user input for anti-spam tab settings
723
  */
724
  add_filter( 'pre_update_option_' . CERBER_OPT_A, function ( $new, $old, $option ) {
725
+
726
+ $new['botswhite'] = cerber_text2array( $new['botswhite'], "\n" );
 
727
 
728
  if ( empty( $new['botsany'] ) && empty( $new['botscomm'] ) && empty( $new['botsreg'] ) ) {
729
  update_site_option( 'cerber-antibot', '' );
1066
  /**
1067
  * Updates Cerber's settings in a new way
1068
  *
1069
+ * @since 8.6
1070
  *
1071
  */
1072
  function cerber_settings_update() {
1077
  }
1078
 
1079
  // We do not process some specific cases - not a real settings form
1080
+ if ( defined( 'CRB_NX_SLAVE' ) && $group == CRB_NX_SLAVE ) {
1081
  return;
1082
  }
1083
 
1100
 
1101
  $fields = array_fill_keys( $fields, '' );
1102
  $post_fields = crb_get_post_fields( 'cerber-' . $group, array() );
1103
+ crb_trim_deep( $post_fields );
1104
+ $post_fields = stripslashes_deep( $post_fields );
1105
+ crb_sanitize_deep( $post_fields ); // removes all tags
1106
 
1107
  $new_settings = array_merge( $fields, $post_fields );
1108
 
1130
  'remote' => $remote
1131
  ) );
1132
 
1133
+ }
1134
+
1135
+ /**
1136
+ * Escaping attributes (values) for forms
1137
+ *
1138
+ * @param array|string $value
1139
+ *
1140
+ * @return array|string
1141
+ */
1142
+ function crb_attr_escape( $value ) {
1143
+ if ( is_array( $value ) ) {
1144
+ array_walk_recursive( $value, function ( &$element ) {
1145
+ $element = crb_escape( $element );
1146
+ } );
1147
+ }
1148
+ else {
1149
+ $value = crb_escape( $value );
1150
+ }
1151
+
1152
+ return $value;
1153
+ }
1154
+
1155
+ /**
1156
+ * Helper
1157
+ *
1158
+ * @param string $val
1159
+ *
1160
+ * @return string Escaped string
1161
+ */
1162
+ function crb_escape( $val ) {
1163
+ if ( ! $val
1164
+ || is_numeric( $val ) ) {
1165
+ return $val;
1166
+ }
1167
+
1168
+ // the same way as in esc_attr();
1169
+ return _wp_specialchars( $val, ENT_QUOTES );
1170
  }
assets/admin.css CHANGED
@@ -44,6 +44,7 @@
44
 
45
  #crb-admin input[type="text"],
46
  #crb-admin input[type="number"],
 
47
  #crb-admin select,
48
  #crb-admin .select2-container {
49
  margin: 0;
@@ -55,6 +56,12 @@
55
  min-height: auto;
56
  }
57
 
 
 
 
 
 
 
58
  #crb-admin textarea,
59
  #crb-admin .select2-selection {
60
  border-radius: 0;
@@ -78,8 +85,10 @@
78
  }
79
 
80
  .crb-main {
81
- width: auto;
82
- overflow: hidden;
 
 
83
  padding-top: 1em;
84
  }
85
 
@@ -138,6 +147,17 @@
138
  color: #888;
139
  }
140
 
 
 
 
 
 
 
 
 
 
 
 
141
  /* Select2 */
142
 
143
  #crb-admin [class^='select2'] {
@@ -149,25 +169,35 @@
149
  .crb-select2-multi {
150
  margin-bottom: 0.5rem; /* workaround */
151
  }
152
- #crb-admin .select2-search__field {
153
- /*width: 300px !important;*/
 
154
  }
155
 
156
- /*#crb-admin select.crb-filter-act option[value="0"] {
157
- color: #777;
158
- }*/
159
 
160
- .crb-settings .crb-label-above {
161
- color: #333;
162
- font-weight: bold;
163
- padding-bottom: 0.7em;
 
 
164
  }
165
 
166
- #crb-form-user_shield th,
167
- #crb-form-opt_shield th{
 
 
 
 
 
 
 
168
  display: none;
169
  }
170
 
 
 
171
  /* Dashboard */
172
 
173
  #crb-kpi {
@@ -215,9 +245,14 @@
215
  /* Aside bar */
216
 
217
  #crb-aside {
218
- float: right;
219
- width: 290px;
220
- margin: 1em 0 0 1em;
 
 
 
 
 
221
  }
222
  #crb-aside .crb-box {
223
  background-color: #fff;
@@ -268,13 +303,13 @@
268
  content: "\f331";*/
269
  font-family: "cerber-icon" !important;
270
  content: '\10ffff';
271
- font-size: 250px;
272
- color: grey;
273
  opacity: 0.2;
274
  z-index: 1;
275
  position: absolute;
276
  top: 45%;
277
- left: -5%;
278
  }
279
 
280
  #crb-donate {
@@ -611,7 +646,8 @@ td.crb-traffic-details div{
611
 
612
  .ip-info-label {
613
  padding: 1px 6px 1px 6px;
614
- margin-left: 4px;
 
615
  }
616
 
617
  /* Activity */
@@ -835,6 +871,7 @@ p.act-url{
835
  }
836
 
837
  /* Access Lists */
 
838
  .acl-wrapper {
839
  margin-bottom: 30px;
840
  width: 100%;
@@ -848,7 +885,7 @@ p.act-url{
848
  }*/
849
 
850
  .acl-wrapper form table {
851
- margin-top: 1em;
852
  width: 100%;
853
  border-collapse: collapse;
854
  }
@@ -861,7 +898,8 @@ p.act-url{
861
  .acl-wrapper form table td:nth-child(2) {
862
  padding-left: 4px;
863
  }
864
- .acl-wrapper input[type="text"]{
 
865
  width:100%;
866
  }
867
 
@@ -991,7 +1029,8 @@ a.nav-tab:last-of-type{
991
  text-align: center;
992
  }
993
 
994
- .crb-user-blocked td.column-username {
 
995
  color: red;
996
  }
997
 
@@ -1437,7 +1476,7 @@ body.wp-cerber_page_cerber-integrity {
1437
 
1438
  div.crb-extra-info {
1439
  overflow: auto;
1440
- padding: 10px 25px;
1441
  background-color: #f8f8f8;
1442
  border: solid 1px #ddd;
1443
  border-bottom: none;
@@ -1449,9 +1488,10 @@ div.crb-extra-info table{
1449
  }
1450
  div.crb-extra-info table td:nth-child(2){
1451
  text-align: right;
 
1452
  }
1453
  div.crb-extra-info p{
1454
- line-height: 0.7em !important;
1455
  }
1456
  /*div#ip-extra p:first-child {*/
1457
  div.crb-extra-info span#ip-address,
@@ -1470,12 +1510,16 @@ div.crb-extra-info #acl-buttons{
1470
  float:right;
1471
  max-width: 30%;
1472
  }
1473
- /*
1474
- #acl-buttons form{
1475
- position: absolute;
1476
- top: 50%;
1477
- transform: translateY(-50%);
1478
- }*/
 
 
 
 
1479
 
1480
  div#whois {
1481
  border: solid 1px #ddd;
@@ -1513,7 +1557,7 @@ div#whois:hover {
1513
  white-space: pre-wrap; /* css-3 */
1514
  }
1515
 
1516
- #user-extra-info div {
1517
  float: left;
1518
  margin-right: 3em;
1519
  }
44
 
45
  #crb-admin input[type="text"],
46
  #crb-admin input[type="number"],
47
+ #crb-admin input[type="url"],
48
  #crb-admin select,
49
  #crb-admin .select2-container {
50
  margin: 0;
56
  min-height: auto;
57
  }
58
 
59
+ #crb-admin input.crb-digits {
60
+ text-align: center;
61
+ /*font-family: Menlo, Consolas, Monaco, monospace;
62
+ font-size: 14px;*/
63
+ }
64
+
65
  #crb-admin textarea,
66
  #crb-admin .select2-selection {
67
  border-radius: 0;
85
  }
86
 
87
  .crb-main {
88
+ /*width: auto;
89
+ overflow: hidden;*/
90
+ display: table-cell;
91
+ width: 80%;
92
  padding-top: 1em;
93
  }
94
 
147
  color: #888;
148
  }
149
 
150
+ .crb-settings .crb-label-above {
151
+ color: #333;
152
+ font-weight: bold;
153
+ padding-bottom: 0.7em;
154
+ }
155
+
156
+ #crb-form-user_shield th,
157
+ #crb-form-opt_shield th{
158
+ display: none;
159
+ }
160
+
161
  /* Select2 */
162
 
163
  #crb-admin [class^='select2'] {
169
  .crb-select2-multi {
170
  margin-bottom: 0.5rem; /* workaround */
171
  }
172
+
173
+ #crb-admin .select2-container .select2-selection--single .select2-selection__rendered {
174
+ padding-right: 28px;
175
  }
176
 
177
+ /* Select2 arrow icon */
 
 
178
 
179
+ #crb-admin .select2-container .select2-selection--single .select2-selection__arrow {
180
+ right: 1px;
181
+ height: 28px;
182
+ width: 28px;
183
+ background: url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E") no-repeat right 5px top 55%;
184
+ background-size: 16px 16px;
185
  }
186
 
187
+ #crb-admin .select2-container--default .select2-selection--single .select2-selection__arrow {
188
+ height: 26px;
189
+ position: absolute;
190
+ top: 1px;
191
+ right: 1px;
192
+ width: 20px;
193
+ }
194
+
195
+ #crb-admin .select2-container .select2-selection--single .select2-selection__arrow b {
196
  display: none;
197
  }
198
 
199
+
200
+
201
  /* Dashboard */
202
 
203
  #crb-kpi {
245
  /* Aside bar */
246
 
247
  #crb-aside {
248
+ /*float: right;*/
249
+ display: table-cell;
250
+ width: 20%;
251
+ padding-left: 1em;
252
+ padding-top: 1em;
253
+ max-width: 290px;
254
+ vertical-align: top;
255
+ /*margin: 1em 0 0 1em;*/
256
  }
257
  #crb-aside .crb-box {
258
  background-color: #fff;
303
  content: "\f331";*/
304
  font-family: "cerber-icon" !important;
305
  content: '\10ffff';
306
+ font-size: 200px;
307
+ color: #01735e;
308
  opacity: 0.2;
309
  z-index: 1;
310
  position: absolute;
311
  top: 45%;
312
+ left: 0;
313
  }
314
 
315
  #crb-donate {
646
 
647
  .ip-info-label {
648
  padding: 1px 6px 1px 6px;
649
+ margin-right: 4px;
650
+ white-space: nowrap;
651
  }
652
 
653
  /* Activity */
871
  }
872
 
873
  /* Access Lists */
874
+
875
  .acl-wrapper {
876
  margin-bottom: 30px;
877
  width: 100%;
885
  }*/
886
 
887
  .acl-wrapper form table {
888
+ margin-top: 0.4em;
889
  width: 100%;
890
  border-collapse: collapse;
891
  }
898
  .acl-wrapper form table td:nth-child(2) {
899
  padding-left: 4px;
900
  }
901
+ #crb-admin .acl-wrapper input[type="text"]{
902
+ border: 2px solid #d6d6d6;
903
  width:100%;
904
  }
905
 
1029
  text-align: center;
1030
  }
1031
 
1032
+ .crb-user-blocked td.column-username,
1033
+ .crb-user-blocked .crb-user-name {
1034
  color: red;
1035
  }
1036
 
1476
 
1477
  div.crb-extra-info {
1478
  overflow: auto;
1479
+ padding: 15px 25px 5px 25px;
1480
  background-color: #f8f8f8;
1481
  border: solid 1px #ddd;
1482
  border-bottom: none;
1488
  }
1489
  div.crb-extra-info table td:nth-child(2){
1490
  text-align: right;
1491
+ vertical-align: top;
1492
  }
1493
  div.crb-extra-info p{
1494
+ line-height: 1;
1495
  }
1496
  /*div#ip-extra p:first-child {*/
1497
  div.crb-extra-info span#ip-address,
1510
  float:right;
1511
  max-width: 30%;
1512
  }
1513
+
1514
+
1515
+ #crb_the_summary > div {
1516
+ display: table-row;
1517
+ }
1518
+
1519
+ #crb_the_summary > div > div {
1520
+ display: table-cell;
1521
+ padding: 0 0.6em 0.8em 0;
1522
+ }
1523
 
1524
  div#whois {
1525
  border: solid 1px #ddd;
1557
  white-space: pre-wrap; /* css-3 */
1558
  }
1559
 
1560
+ #user-extra-info > div {
1561
  float: left;
1562
  margin-right: 3em;
1563
  }
assets/scanner.js CHANGED
@@ -36,7 +36,10 @@ jQuery(document).ready(function ($) {
36
  var crb_the_file;
37
  var crb_row_id = 0; // For local parent -> child relationship
38
 
39
- cerber_scan_load_data();
 
 
 
40
 
41
  crb_scan_controls.find(':button,a').click(function (event) {
42
  var operation = $(event.target).data('control');
36
  var crb_the_file;
37
  var crb_row_id = 0; // For local parent -> child relationship
38
 
39
+ if (crb_admin_page === 'cerber-integrity'
40
+ && (crb_admin_tab === '' || crb_admin_tab === 'scan_main')) {
41
+ cerber_scan_load_data();
42
+ }
43
 
44
  crb_scan_controls.find(':button,a').click(function (event) {
45
  var operation = $(event.target).data('control');
cerber-2fa.php CHANGED
@@ -141,7 +141,7 @@ final class CRB_2FA {
141
  }
142
  }
143
  if ( crb_array_get( $policies, '2fanewnet4' ) ) {
144
- if ( cerber_get_subnet( $last_login['ip'] ) != cerber_get_subnet( cerber_get_remote_ip() ) ) {
145
  return true;
146
  }
147
  }
141
  }
142
  }
143
  if ( crb_array_get( $policies, '2fanewnet4' ) ) {
144
+ if ( cerber_get_subnet_ipv4( $last_login['ip'] ) != cerber_get_subnet_ipv4( cerber_get_remote_ip() ) ) {
145
  return true;
146
  }
147
  }
cerber-load.php CHANGED
@@ -800,11 +800,6 @@ function get_wp_cerber(){
800
  return $the_wp_cerber;
801
  }
802
 
803
- /**
804
- *
805
- * Initialize Cerber Security
806
- *
807
- */
808
  add_action( 'plugins_loaded', function () {
809
 
810
  cerber_error_control();
@@ -813,9 +808,13 @@ add_action( 'plugins_loaded', function () {
813
 
814
  cerber_inspect_uploads(); // Uploads in the dashboard
815
 
816
- cerber_init_cron();
817
 
818
- __('> > > Translator of WP Cerber? To get the PRO license for free, drop your contacts here: https://wpcerber.com/contact/','wp-cerber');
 
 
 
 
819
 
820
  }, 1000 );
821
 
@@ -1330,11 +1329,11 @@ function crb_update_session_data( $user_id, $sessions = null ) {
1330
  }
1331
 
1332
  foreach ( $new as $id ) {
1333
- $data = $sessions[ $id ];
1334
  $session_id = get_wp_cerber()->getRequestID();
1335
  $ip = $data['ip'];
1336
  //$ip = cerber_get_remote_ip();
1337
- $country = (string) lab_get_country( $ip );
1338
  cerber_db_query( 'INSERT INTO ' . $table . ' (user_id, ip, country, started, expires, session_id, wp_session_token) VALUES (' . $user_id . ',"' . $ip . '","' . $country . '","' . $data['login'] . '","' . $data['expiration'] . '","' . $session_id . '","' . $id . '")' );
1339
  }
1340
 
@@ -2930,7 +2929,7 @@ function cerber_block_add( $ip_address = '', $reason_id = 1, $details = '', $dur
2930
  }
2931
 
2932
  if ( crb_get_settings( 'subnet' ) ) {
2933
- $ip = cerber_get_subnet( $ip_address );
2934
  $activity = 11;
2935
  }
2936
  else {
@@ -3029,7 +3028,7 @@ function cerber_get_block( $ip = '' ) {
3029
  $where = ' WHERE ip = "' . $ip . '"';
3030
 
3031
  if ( cerber_is_ipv4( $ip ) ) {
3032
- $subnet = cerber_get_subnet( $ip );
3033
  $where .= ' OR ip = "' . $subnet . '"';
3034
  }
3035
 
@@ -3536,7 +3535,7 @@ function cerber_file_log( $user_login, $ip ) {
3536
  /*
3537
  Return wildcard - string like subnet Class C
3538
  */
3539
- function cerber_get_subnet( $ip ) {
3540
  return preg_replace( '/\.\d{1,3}$/', '.*', $ip );
3541
  }
3542
 
@@ -3580,11 +3579,12 @@ function cerber_is_ip_or_net( $ip ) {
3580
  }
3581
 
3582
  /**
3583
- * Tries to recognize an IP range (with a dash) in a given string.
 
3584
  *
3585
- * @param string $string String to look for an IP addresses in
3586
  *
3587
- * @return array|bool|string Return IP range as an array if it was found.
3588
  */
3589
  function cerber_parse_ip_range( $string ) {
3590
 
@@ -3618,7 +3618,16 @@ function cerber_parse_ip_range( $string ) {
3618
  elseif ( cerber_is_ipv6( $begin_ip ) && cerber_is_ipv6( $end_ip ) ) {
3619
  $ver6 = 1;
3620
  list( $begin, $end, $v6range ) = crb_ipv6_prepare( $begin_ip, $end_ip );
3621
- }
 
 
 
 
 
 
 
 
 
3622
  else {
3623
  return false;
3624
  }
@@ -3642,12 +3651,13 @@ function cerber_parse_ip_range( $string ) {
3642
  * @return array|bool|string False if no wildcard found, otherwise result of cerber_parse_ip()
3643
  */
3644
  function cerber_wildcard2range( $wildcard ) {
3645
- if ( ! strpos( $wildcard, '*' ) ) {
3646
  return false;
3647
  }
 
3648
  if ( ! strpos( $wildcard, ':' ) ) {
3649
- $begin = str_replace( '.*', '.0', $wildcard );
3650
- $end = str_replace( '.*', '.255', $wildcard );
3651
  if ( ! cerber_is_ipv4( $begin ) || ! cerber_is_ipv4( $end ) ) {
3652
  return false;
3653
  }
@@ -3698,15 +3708,27 @@ function cerber_cidr2range( $cidr = '' ) {
3698
  }
3699
 
3700
  /**
3701
- * Try to recognize an IP range or a single IP in a string.
 
3702
  *
3703
- * @param $string string Network wildcard, CIDR or IP range.
3704
  *
3705
- * @return array|bool|string
 
 
3706
  */
3707
  function cerber_any2range( $string ) {
 
 
 
 
 
3708
  $string = trim( $string );
3709
 
 
 
 
 
3710
  // Do not change the order!
3711
  $ret = cerber_wildcard2range( $string );
3712
  if ( ! $ret ) {
@@ -3835,7 +3857,7 @@ function cerber_is_myip( $ip ) {
3835
  if ( $ip == $remote_ip ) {
3836
  return true;
3837
  }
3838
- if ( $ip == cerber_get_subnet( $remote_ip ) ) {
3839
  return true;
3840
  }
3841
 
@@ -4357,26 +4379,6 @@ add_filter( 'cron_schedules', function ( $schedules ) {
4357
  return $schedules;
4358
  } );
4359
 
4360
- function cerber_init_cron(){
4361
- $next_hour = intval( floor( ( time() + 3600 ) / 3600 ) * 3600 );
4362
-
4363
- if ( ! wp_next_scheduled( 'cerber_bg_launcher' ) ) {
4364
- wp_schedule_event( time(), 'crb_five', 'cerber_bg_launcher' );
4365
- }
4366
-
4367
- if ( ! wp_next_scheduled( 'cerber_hourly_1' ) ) {
4368
- wp_schedule_event( $next_hour, 'hourly', 'cerber_hourly_1' );
4369
- }
4370
-
4371
- if ( ! wp_next_scheduled( 'cerber_hourly_2' ) ) {
4372
- wp_schedule_event( $next_hour + 600 , 'hourly', 'cerber_hourly_2' );
4373
- }
4374
-
4375
- if ( ! wp_next_scheduled( 'cerber_daily' ) ) {
4376
- wp_schedule_event( $next_hour + 1200, 'daily', 'cerber_daily' );
4377
- }
4378
- }
4379
-
4380
  add_action( 'cerber_hourly_1', 'cerber_do_hourly' );
4381
  function cerber_do_hourly( $force = false ) {
4382
 
@@ -4570,14 +4572,36 @@ function cerber_do_daily() {
4570
  set_site_transient( $t, array( $start, time() ), 48 * 3600 );
4571
  }
4572
 
 
 
 
 
4573
  add_action( 'cerber_bg_launcher', function () {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4574
  define( 'CRB_DOING_BG_TASK', 1 );
4575
- @set_time_limit( 180 );
4576
- @ini_set( 'max_execution_time', 180 );
 
 
4577
  if ( nexus_is_master() ) {
4578
  nexus_schedule_refresh();
4579
  }
 
4580
  cerber_bg_task_launcher();
 
4581
  } );
4582
 
4583
  function cerber_bg_task_launcher( $filter = null ) {
@@ -5088,6 +5112,7 @@ register_activation_hook( cerber_plugin_file(), function () {
5088
  }
5089
 
5090
  $db_errors = cerber_create_db();
 
5091
  if ( $db_errors ) {
5092
  $e = '';
5093
  foreach ( $db_errors as $db_error ) {
@@ -5101,10 +5126,24 @@ register_activation_hook( cerber_plugin_file(), function () {
5101
  cerber_upgrade_all( true );
5102
 
5103
  cerber_cookie_one();
5104
- cerber_disable_citadel();
5105
 
5106
  cerber_load_admin_code();
5107
- cerber_add_white( cerber_get_subnet( cerber_get_remote_ip() ) , 'My subnet' ); // Protection for non-experienced user
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5108
 
5109
  cerber_htaccess_sync( 'main' );
5110
  cerber_htaccess_sync( 'media' );
@@ -5196,10 +5235,17 @@ function cerber_upgrade_all( $force = false ) {
5196
  global $cerber_doing_upgrade;
5197
  $ver = get_site_option( '_cerber_up' );
5198
  if ( $force || ! $ver || $ver['v'] != CERBER_VER ) {
5199
- $d = @ini_get( 'display_errors');
 
5200
  @ini_set( 'display_errors', 0 );
 
 
 
 
 
5201
  $cerber_doing_upgrade = true;
5202
  @define( 'CRB_DOING_UPGRADE', 1 );
 
5203
  crb_clear_admin_msg();
5204
  cerber_create_db();
5205
  cerber_upgrade_db();
@@ -5218,6 +5264,7 @@ function cerber_upgrade_all( $force = false ) {
5218
  lab_get_key( true );
5219
  $cerber_doing_upgrade = false;
5220
  delete_site_transient( 'update_plugins' );
 
5221
  @ini_set( 'display_errors', $d );
5222
  }
5223
  }
@@ -5594,28 +5641,34 @@ function cerber_acl_fixer() {
5594
  }
5595
 
5596
  foreach ( $ips as $ip ) {
5597
- if ( cerber_is_ipv4( $ip ) ) {
5598
- $range = cerber_any2range( $ip );
5599
- if ( is_array( $range ) ) {
5600
- $begin = $range['begin'];
5601
- $end = $range['end'];
5602
- }
5603
- else {
5604
- $begin = ip2long( $ip );
5605
- $end = ip2long( $ip );
5606
- }
5607
 
5608
- $set = 'ip_long_begin = ' . $begin . ', ip_long_end = ' . $end . ' WHERE ip = "' . $ip . '"';
 
 
 
 
 
 
 
5609
  }
5610
  elseif ( cerber_is_ipv6( $ip ) ) {
5611
- list( $begin, $end, $v6range ) = crb_ipv6_prepare( $ip, $ip );
5612
-
5613
- $set = 'ver6 = 1, ip_long_begin = ' . $begin . ', ip_long_end = ' . $end . ', v6range = "' . $v6range . '" WHERE ip = "' . $ip . '"';
 
 
 
 
 
 
 
5614
  }
5615
  else {
5616
  continue;
5617
  }
5618
 
 
 
5619
  cerber_db_query( 'UPDATE ' . CERBER_ACL_TABLE . ' SET ' . $set );
5620
  }
5621
  }
800
  return $the_wp_cerber;
801
  }
802
 
 
 
 
 
 
803
  add_action( 'plugins_loaded', function () {
804
 
805
  cerber_error_control();
808
 
809
  cerber_inspect_uploads(); // Uploads in the dashboard
810
 
811
+ //cerber_init_cron(); @since 8.6.1 moved to cerber_bg_launcher
812
 
813
+ if ( ! wp_next_scheduled( 'cerber_bg_launcher' ) ) {
814
+ wp_schedule_event( time(), 'crb_five', 'cerber_bg_launcher' );
815
+ }
816
+
817
+ __( '> > > Translator of WP Cerber? To get the PRO license for free, drop your contacts here: https://wpcerber.com/contact/', 'wp-cerber' );
818
 
819
  }, 1000 );
820
 
1329
  }
1330
 
1331
  foreach ( $new as $id ) {
1332
+ $data = $sessions[ $id ];
1333
  $session_id = get_wp_cerber()->getRequestID();
1334
  $ip = $data['ip'];
1335
  //$ip = cerber_get_remote_ip();
1336
+ $country = (string) lab_get_country( $ip );
1337
  cerber_db_query( 'INSERT INTO ' . $table . ' (user_id, ip, country, started, expires, session_id, wp_session_token) VALUES (' . $user_id . ',"' . $ip . '","' . $country . '","' . $data['login'] . '","' . $data['expiration'] . '","' . $session_id . '","' . $id . '")' );
1338
  }
1339
 
2929
  }
2930
 
2931
  if ( crb_get_settings( 'subnet' ) ) {
2932
+ $ip = cerber_get_subnet_ipv4( $ip_address );
2933
  $activity = 11;
2934
  }
2935
  else {
3028
  $where = ' WHERE ip = "' . $ip . '"';
3029
 
3030
  if ( cerber_is_ipv4( $ip ) ) {
3031
+ $subnet = cerber_get_subnet_ipv4( $ip );
3032
  $where .= ' OR ip = "' . $subnet . '"';
3033
  }
3034
 
3535
  /*
3536
  Return wildcard - string like subnet Class C
3537
  */
3538
+ function cerber_get_subnet_ipv4( $ip ) {
3539
  return preg_replace( '/\.\d{1,3}$/', '.*', $ip );
3540
  }
3541
 
3579
  }
3580
 
3581
  /**
3582
+ * Tries to recognize a valid IP range (with a dash) in a given string.
3583
+ * Supports IPv4 & IPv6
3584
  *
3585
+ * @param string $string String to detect for an IP range
3586
  *
3587
+ * @return array|bool|string Return IP range as an array for a valid range, string in case of a single IP, false otherwise
3588
  */
3589
  function cerber_parse_ip_range( $string ) {
3590
 
3618
  elseif ( cerber_is_ipv6( $begin_ip ) && cerber_is_ipv6( $end_ip ) ) {
3619
  $ver6 = 1;
3620
  list( $begin, $end, $v6range ) = crb_ipv6_prepare( $begin_ip, $end_ip );
3621
+
3622
+ // @since 8.6.1 check for a valid IPv6 range: begin < end
3623
+ if ( $begin > $end ) {
3624
+ return false;
3625
+ }
3626
+ list( $begin1, $begin2, $end1, $end2 ) = explode( '#', $v6range, 4 );
3627
+ if ( crb_compare_numbers( $begin1, $begin2, $end1, $end2 ) ) {
3628
+ return false;
3629
+ }
3630
+ }
3631
  else {
3632
  return false;
3633
  }
3651
  * @return array|bool|string False if no wildcard found, otherwise result of cerber_parse_ip()
3652
  */
3653
  function cerber_wildcard2range( $wildcard ) {
3654
+ if ( false === strpos( $wildcard, '*' ) ) {
3655
  return false;
3656
  }
3657
+
3658
  if ( ! strpos( $wildcard, ':' ) ) {
3659
+ $begin = str_replace( '*', '0', $wildcard );
3660
+ $end = str_replace( '*', '255', $wildcard );
3661
  if ( ! cerber_is_ipv4( $begin ) || ! cerber_is_ipv4( $end ) ) {
3662
  return false;
3663
  }
3708
  }
3709
 
3710
  /**
3711
+ * Tries to recognize if a given string contains an IP range/CIDR/wildcard
3712
+ * Supports IPv4 & IPv6
3713
  *
3714
+ * If returns false, there is no IP in the string in any form
3715
  *
3716
+ * @param $string string Anything
3717
+ *
3718
+ * @return array|string Return an array if an IP range recognized, string with IP in case of a single IP, false otherwise
3719
  */
3720
  function cerber_any2range( $string ) {
3721
+ if ( ! $string
3722
+ || ! is_string( $string ) ) {
3723
+ return false;
3724
+ }
3725
+
3726
  $string = trim( $string );
3727
 
3728
+ if ( filter_var( $string, FILTER_VALIDATE_IP ) ) {
3729
+ return $string;
3730
+ }
3731
+
3732
  // Do not change the order!
3733
  $ret = cerber_wildcard2range( $string );
3734
  if ( ! $ret ) {
3857
  if ( $ip == $remote_ip ) {
3858
  return true;
3859
  }
3860
+ if ( $ip == cerber_get_subnet_ipv4( $remote_ip ) ) {
3861
  return true;
3862
  }
3863
 
4379
  return $schedules;
4380
  } );
4381
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4382
  add_action( 'cerber_hourly_1', 'cerber_do_hourly' );
4383
  function cerber_do_hourly( $force = false ) {
4384
 
4572
  set_site_transient( $t, array( $start, time() ), 48 * 3600 );
4573
  }
4574
 
4575
+ /**
4576
+ * Master CRON task scheduler
4577
+ *
4578
+ */
4579
  add_action( 'cerber_bg_launcher', function () {
4580
+ $next_hour = intval( floor( ( time() + 3600 ) / 3600 ) * 3600 );
4581
+
4582
+ if ( ! wp_next_scheduled( 'cerber_hourly_1' ) ) {
4583
+ wp_schedule_event( $next_hour, 'hourly', 'cerber_hourly_1' );
4584
+ }
4585
+
4586
+ if ( ! wp_next_scheduled( 'cerber_hourly_2' ) ) {
4587
+ wp_schedule_event( $next_hour + 600 , 'hourly', 'cerber_hourly_2' );
4588
+ }
4589
+
4590
+ if ( ! wp_next_scheduled( 'cerber_daily' ) ) {
4591
+ wp_schedule_event( $next_hour + 1200, 'daily', 'cerber_daily' );
4592
+ }
4593
+
4594
  define( 'CRB_DOING_BG_TASK', 1 );
4595
+
4596
+ @ignore_user_abort( true );
4597
+ crb_raise_limits();
4598
+
4599
  if ( nexus_is_master() ) {
4600
  nexus_schedule_refresh();
4601
  }
4602
+
4603
  cerber_bg_task_launcher();
4604
+
4605
  } );
4606
 
4607
  function cerber_bg_task_launcher( $filter = null ) {
5112
  }
5113
 
5114
  $db_errors = cerber_create_db();
5115
+
5116
  if ( $db_errors ) {
5117
  $e = '';
5118
  foreach ( $db_errors as $db_error ) {
5126
  cerber_upgrade_all( true );
5127
 
5128
  cerber_cookie_one();
 
5129
 
5130
  cerber_load_admin_code();
5131
+
5132
+ if ( is_user_logged_in() ) { // Not for remote plugin installation/activation
5133
+
5134
+ $ip = cerber_get_remote_ip();
5135
+ $sub = cerber_get_subnet_ipv4( $ip );
5136
+
5137
+ if ( cerber_get_block( $ip ) ) {
5138
+ if ( ! cerber_block_delete( $ip ) ) {
5139
+ cerber_block_delete( $sub );
5140
+ }
5141
+ }
5142
+
5143
+ cerber_add_white( $sub, 'My Subnet' ); // Protection for non-experienced users
5144
+
5145
+ cerber_disable_citadel();
5146
+ }
5147
 
5148
  cerber_htaccess_sync( 'main' );
5149
  cerber_htaccess_sync( 'media' );
5235
  global $cerber_doing_upgrade;
5236
  $ver = get_site_option( '_cerber_up' );
5237
  if ( $force || ! $ver || $ver['v'] != CERBER_VER ) {
5238
+
5239
+ $d = @ini_get( 'display_errors');
5240
  @ini_set( 'display_errors', 0 );
5241
+
5242
+ @ignore_user_abort( true );
5243
+
5244
+ crb_raise_limits();
5245
+
5246
  $cerber_doing_upgrade = true;
5247
  @define( 'CRB_DOING_UPGRADE', 1 );
5248
+
5249
  crb_clear_admin_msg();
5250
  cerber_create_db();
5251
  cerber_upgrade_db();
5264
  lab_get_key( true );
5265
  $cerber_doing_upgrade = false;
5266
  delete_site_transient( 'update_plugins' );
5267
+
5268
  @ini_set( 'display_errors', $d );
5269
  }
5270
  }
5641
  }
5642
 
5643
  foreach ( $ips as $ip ) {
 
 
 
 
 
 
 
 
 
 
5644
 
5645
+ // Code from cerber_acl_add()
5646
+
5647
+ $v6range = '';
5648
+ $ver6 = 0;
5649
+
5650
+ if ( cerber_is_ipv4( $ip ) ) {
5651
+ $begin = ip2long( $ip );
5652
+ $end = ip2long( $ip );
5653
  }
5654
  elseif ( cerber_is_ipv6( $ip ) ) {
5655
+ $ip = cerber_ipv6_short( $ip );
5656
+ list( $begin, $end, $v6range ) = crb_ipv6_prepare( $ip, $ip );
5657
+ $ver6 = 1;
5658
+ }
5659
+ elseif ( ( $range = cerber_any2range( $ip ) )
5660
+ && is_array( $range ) ) {
5661
+ $ver6 = $range['IPV6'];
5662
+ $begin = $range['begin'];
5663
+ $end = $range['end'];
5664
+ $v6range = $range['IPV6range'];
5665
  }
5666
  else {
5667
  continue;
5668
  }
5669
 
5670
+ $set = 'ip_long_begin = ' . $begin . ', ip_long_end = ' . $end . ', ver6 = ' . $ver6 . ', v6range = "' . $v6range . '" WHERE ip = "' . $ip . '"';
5671
+
5672
  cerber_db_query( 'UPDATE ' . CERBER_ACL_TABLE . ' SET ' . $set );
5673
  }
5674
  }
cerber-news.php CHANGED
@@ -86,39 +86,17 @@ function cerber_push_the_news( $version ) {
86
  $news['8.5.3'][] = 'Bug fixed: depending on the number of items in the access lists, the IP address 0.0.0.0 can be erroneously marked as whitelisted or blacklisted.';
87
  $news['8.5.3'][] = 'Bug fixed in Cerber.Hub: if a WordPress plugin is installed on several slave websites and the plugin needs to be updated on some of the slave websites, the plugin is shown as needs to be updated on all the slave websites.';
88
 
89
- $news['8.5.5'][] = 'IP Access Lists now support IPv6 networks, ranges, and wildcards. Add as many IPv6 entries to the access lists as you need. We\'ve developed an extraordinarily fast ACL engine to process them.';
90
- $news['8.5.5'][] = 'The algorithm of handling consecutive IP address lockouts has been improved: the reason for an existing lockout is updated and its duration is recalculated in real-time now.';
91
- $news['8.5.5'][] = 'Traffic inspection algorithms were optimized to reduce false positives and make algorithms more human-friendly.';
92
- $news['8.5.5'][] = 'Improved compatibility with WooCommerce: the password reset and login forms are not blocked anymore if a user’s IP gets locked out due to using a non-existing username by mistake, using a prohibited username, or if a user has exceeded the number of allowed login attempts.';
93
- $news['8.5.5'][] = 'Improved compatibility with WordPress scheduled cron tasks if a website runs on a server with PHP-FPM (FastCGI Process Manager)';
94
- $news['8.5.5'][] = 'Very long URLs on the Live Traffic page are now displayed in full when you click the "Details" link in a row.';
95
- $news['8.5.5'][] = 'The Cerber.Hub multi-site manager: the server column on the slave websites list page now contains a link to quickly filter out websites on the same server.';
96
- $news['8.5.5'][] = 'The Cerber.Hub multi-site manager: now it remembers the filtered list of slave websites while you’re switching between them and the master.';
97
-
98
- $news['8.5.6'][] = 'Now you can separately set the number of days of keeping log records in the database for authenticated (logged in) website users and non-authenticated (not logged in) visitors. These settings are configured for the activity log and the live traffic log separately.';
99
- $news['8.5.6'][] = 'You can completely turn off the Citadel mode feature in the Main Settings now.';
100
- $news['8.5.6'][] = 'The appearance of the Activity log has got small visual improvements.';
101
- $news['8.5.6'][] = 'When you upload a ZIP archive on the integrity scanner page it processes nested ZIP archives now and writes errors to the diagnostic log if it\'s enabled.';
102
- $news['8.5.6'][] = 'Fixed: The blacklisting buttons on the Activity tab do not work showing "Incorrect IP address or IP range".';
103
-
104
- $news['8.5.8'][] = 'A personal data export and erase feature which can be used through the WordPress personal data export and erase tool. This feature helps your organization to be in compliance with data privacy laws such as GDPR in Europe or CCPA in California';
105
- $news['8.5.8'][] = 'The performance of the algorithm that handles exporting rows from the Activity log and the Live Traffic log to a CSV file has been improved enabling export larger datasets';
106
- $news['8.5.8'][] = 'When you block a user you can add an optional admin note now';
107
- $news['8.5.8'][] = 'Fixed: If a user is blocked, it’s not possible to update the user message';
108
- $news['8.5.8'][] = 'Fixed: Depending on the logging settings the "Details" links on the Live Traffic log are not displayed in some rows';
109
-
110
- $news['8.5.9'][] = 'On the Live Traffic log, now you can search and filter our requests with software errors if they occurred.';
111
- $news['8.5.9'][] = 'The code of WP Cerber has been updated and tested to fully support and be compatible with PHP 7.4.';
112
- $news['8.5.9'][] = 'The layout of the list of slave websites on the Cerber.Hub\'s main page has been improved to display the list more accurately on narrow and mobile screens.';
113
- $news['8.5.9'][] = 'If a slave website has the professional version of WP Cerber, it has a PRO sign in the "WP Cerber" column. The license expiration date is shown when you hover the mouse over the sign.';
114
- $news['8.5.9'][] = 'Fixed: A bug with displaying long file names in the Security Scanner Quarantine that makes unavailable deleting or restoring quarantined files manually.';
115
- $news['8.5.9'][] = 'Fixed: A bug that requires installing a valid license key on a Cerber.Hub master website to permit configuring settings on slave websites remotely, which is not intended behavior.';
116
-
117
  $news['8.6'][] = 'An integration with the Cloudflare cloud-based firewall. It’s implemented as a special WP Cerber add-on.';
118
  $news['8.6'][] = 'The malware scanner has got improvements to the monitoring of new and modified files feature. Now it can be set to Disable, Executable files, or All files.';
119
  $news['8.6'][] = 'Additional search fields for the Activity log. They enable you to find a specific request by its Request ID (RID) or/and to search for a string in the request URL.';
120
  $news['8.6'][] = 'The minimum supported PHP version is 5.6.';
121
 
 
 
 
 
 
 
122
  if ( ! empty( $news[ $version ] ) ) {
123
  //$text = '<h3>What\'s new in WP Cerber '.$version.'</h3>';
124
 
86
  $news['8.5.3'][] = 'Bug fixed: depending on the number of items in the access lists, the IP address 0.0.0.0 can be erroneously marked as whitelisted or blacklisted.';
87
  $news['8.5.3'][] = 'Bug fixed in Cerber.Hub: if a WordPress plugin is installed on several slave websites and the plugin needs to be updated on some of the slave websites, the plugin is shown as needs to be updated on all the slave websites.';
88
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  $news['8.6'][] = 'An integration with the Cloudflare cloud-based firewall. It’s implemented as a special WP Cerber add-on.';
90
  $news['8.6'][] = 'The malware scanner has got improvements to the monitoring of new and modified files feature. Now it can be set to Disable, Executable files, or All files.';
91
  $news['8.6'][] = 'Additional search fields for the Activity log. They enable you to find a specific request by its Request ID (RID) or/and to search for a string in the request URL.';
92
  $news['8.6'][] = 'The minimum supported PHP version is 5.6.';
93
 
94
+ $news['8.6.3'][] = 'New: Ability to load IP access list\'s entries in the CSV format (bulk load).';
95
+ $news['8.6.3'][] = 'Update: A new malware scanner setting allows you to permit the scanner to change permissions of folders and files when required.';
96
+ $news['8.6.3'][] = 'Fixed: The access list IPv4 wildcard *.*.*.* doesn\'t work (has no effect).';
97
+ $news['8.6.3'][] = 'Fixed: If the anti-spam query whitelist contains more than one entry, they do not work as expected.';
98
+
99
+
100
  if ( ! empty( $news[ $version ] ) ) {
101
  //$text = '<h3>What\'s new in WP Cerber '.$version.'</h3>';
102
 
cerber-scanner.php CHANGED
@@ -796,7 +796,7 @@ function cerber_apply_scan_policies() {
796
 
797
  if ( $delete ) {
798
  $update = true;
799
- $result = cerber_quarantine_file( 'move', $file_name, $scan['id'] );
800
  if ( is_wp_error( $result ) ) {
801
  cerber_log_scan_error( $result->get_error_message() );
802
  $issue['data']['prced'] = CERBER_FDUN;
@@ -869,7 +869,7 @@ function cerber_recover_files( $package_type ) {
869
  continue;
870
  }
871
 
872
- cerber_quarantine_file( 'copy', $file_name, $scan['id'] );
873
 
874
  if ( ! @copy( $source_file, $file_name ) ) {
875
  $err = error_get_last();
@@ -1330,12 +1330,10 @@ function cerber_push_issues( $section, $issues = array(), $container = '', $sec_
1330
  // Can the file be deleted safely?
1331
 
1332
  $allowed = 0;
1333
- if ( $file['file_type'] != CERBER_FT_CONF ) {
1334
- if ( ! empty( $file['fd_allowed'] ) ) {
1335
- if ( cerber_can_be_deleted( $file['file_name'] ) ) {
1336
- $allowed = 1;
1337
- }
1338
- }
1339
  }
1340
 
1341
  $data['fd_allowed'] = $allowed;
@@ -1851,7 +1849,7 @@ function cerber_verify_plugin( $plugin_folder, $plugin_data ) {
1851
 
1852
  $hash_url = null;
1853
 
1854
- if ( in_array( $plugin_folder, array( 'wp-cerber', 'wp-cerber-buddypress', 'wp-cerber-cloudflare-addon' ) ) ) {
1855
  $hash_url = 'https://my.wpcerber.com/downloads/checksums/' . $plugin_folder . '/' . $plugin_data['Version'] . '.json';
1856
  }
1857
 
@@ -3575,17 +3573,28 @@ function cerber_scan_directory( $root, $pattern = null, $function ) {
3575
 
3576
  // Must be excluded
3577
  if ( $exclude === null ) {
3578
- $exclude = crb_get_settings( 'scan_exclude' );
3579
- if ( ! $exclude ) {
3580
- $exclude = array();
3581
  }
 
3582
  $d = cerber_get_the_folder();
3583
  if ( is_dir( $d ) ) {
3584
- $exclude[] = $d;
 
 
 
 
 
 
 
 
 
3585
  }
3586
- $exclude = array_map( function ( $item ) {
 
3587
  return rtrim( $item, '/\\' );
3588
- }, $exclude );
3589
  }
3590
 
3591
  if ( ! $pattern ) {
@@ -4242,6 +4251,8 @@ function cerber_need_for_hash( $zip_file = '', $delete = true, $expires = 0 ) {
4242
  $tmp_folder1 = $folder . 'zip' . DIRECTORY_SEPARATOR;
4243
  $tmp_folder2 = $folder . 'nested_zip' . DIRECTORY_SEPARATOR;
4244
 
 
 
4245
  if ( ! $zip_file ) {
4246
  if ( ! $files = glob( $folder . '*.zip' ) ) {
4247
  return false;
@@ -4519,6 +4530,32 @@ function cerber_lock_the_folder( $folder ) {
4519
  return false;
4520
  }
4521
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4522
  function cerber_unzip( $file_name, $folder ) {
4523
  cerber_init_wp_filesystem();
4524
 
@@ -4898,7 +4935,7 @@ add_action( 'wp_ajax_cerber_scan_bulk_files', function () {
4898
 
4899
  switch ( $operation ) {
4900
  case 'delete_file':
4901
- $result = cerber_quarantine_file( 'move', $file_name, $scan_id );
4902
  break;
4903
  case 'ignore_add_file':
4904
  $ignore[ $the_file->file_name_hash ] = array(
@@ -4949,21 +4986,28 @@ add_action( 'wp_ajax_cerber_scan_bulk_files', function () {
4949
  /**
4950
  * Move files to the quarantine folder
4951
  *
4952
- * @param $action string 'move' or 'copy'
4953
  * @param string $file_name
4954
  * @param integer $scan_id
 
4955
  *
4956
  * @return bool|WP_Error
4957
  */
4958
- function cerber_quarantine_file( $action, $file_name, $scan_id ) {
4959
  static $folder;
4960
 
4961
  $scan_id = absint( $scan_id );
 
4962
  if ( ! is_file( $file_name ) || ! $scan_id ) {
4963
  return false;
4964
  }
4965
- if ( $action == 'move' && ! cerber_can_be_deleted( $file_name, true ) ) {
4966
- return new WP_Error( 'cerber-del', "This file can't be deleted: ". $file_name );
 
 
 
 
 
 
4967
  }
4968
 
4969
  if ( $folder === null ) {
@@ -5000,7 +5044,8 @@ function cerber_quarantine_file( $action, $file_name, $scan_id ) {
5000
  fwrite( $f, 'Information for restoring files.' . PHP_EOL
5001
  . 'Deletion date | Deleted file => Original file to copy to restore.' . PHP_EOL
5002
  . '-----------------------------------------------------------------'
5003
- . PHP_EOL . `` );
 
5004
  }
5005
  else {
5006
  if ( ! $f = fopen( $restore, 'a' ) ) {
@@ -5018,15 +5063,17 @@ function cerber_quarantine_file( $action, $file_name, $scan_id ) {
5018
  }
5019
  }
5020
 
5021
- if ( $action == 'move' ) {
5022
- if ( ! @rename( $file_name, $new_name ) ) {
5023
- return new WP_Error( 'cerber-quar', 'Unable to move file to the quarantine: ' . $file_name . '. Check the file folder permissions.' );
 
 
5024
  }
5025
- }
5026
- else {
5027
- if ( ! @copy( $file_name, $new_name ) ) {
5028
- return new WP_Error( 'cerber-quar', 'Unable to copy file to the quarantine: ' . $file_name . '. Check the file folder permissions.' );
5029
  }
 
 
5030
  }
5031
 
5032
  // Save restoring info
@@ -5036,41 +5083,74 @@ function cerber_quarantine_file( $action, $file_name, $scan_id ) {
5036
  return true;
5037
  }
5038
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5039
  /**
5040
- * Some files can't be deleted...
5041
  *
5042
  * @param $file_name
5043
  * @param bool $check_inclusion
5044
  *
5045
- * @return bool
5046
  */
5047
  function cerber_can_be_deleted( $file_name, $check_inclusion = false ) {
5048
- static $abspath;
5049
 
5050
  if ( ! file_exists( $file_name ) || ! is_file( $file_name ) || is_link( $file_name ) ) {
5051
- return false;
 
5052
  }
5053
 
5054
  if ( cerber_is_htaccess( $file_name ) || cerber_is_dropin( $file_name ) ) {
5055
- return false;
 
5056
  }
5057
 
5058
  if ( $check_inclusion && in_array( $file_name, get_included_files() ) ) {
5059
- return false;
 
5060
  }
5061
 
5062
  if ( basename( $file_name ) == 'wp-config.php' ) {
5063
- if ( $abspath !== null ) {
5064
- $abspath = cerber_get_abspath();
5065
- }
5066
  $file_name = cerber_normal_path( $file_name );
5067
 
5068
- if ( $file_name == $abspath . 'wp-config.php' ) {
5069
- return false;
 
 
 
5070
  }
5071
- if ( ! file_exists( $abspath . 'wp-config.php' ) && $file_name == dirname( $abspath ) . DIRECTORY_SEPARATOR . 'wp-config.php' ) {
5072
  return false;
5073
- }
5074
  }
5075
 
5076
  return true;
@@ -5148,24 +5228,6 @@ function cerber_is_cloud_request() {
5148
  return $ret;
5149
  }
5150
 
5151
-
5152
- // TODO: !debug, remove from production!
5153
- /*
5154
- add_action( 'init', function () {
5155
- if ( ! empty( $_GET['scan-report'] ) && is_user_logged_in() ) {
5156
- $scan = cerber_get_scan();
5157
- $report = cerber_scan_report( $scan );
5158
- if ( ! $report ) {
5159
- echo 'Nothing to report';
5160
- }
5161
- echo $report;
5162
- print_r($scan);
5163
- //cerber_send_email( 'scan', $report );
5164
- die();
5165
- }
5166
- } );
5167
- */
5168
-
5169
  /**
5170
  * Creates a user report
5171
  *
796
 
797
  if ( $delete ) {
798
  $update = true;
799
+ $result = cerber_quarantine_file( $file_name, $scan['id'] );
800
  if ( is_wp_error( $result ) ) {
801
  cerber_log_scan_error( $result->get_error_message() );
802
  $issue['data']['prced'] = CERBER_FDUN;
869
  continue;
870
  }
871
 
872
+ cerber_quarantine_file( $file_name, $scan['id'], false );
873
 
874
  if ( ! @copy( $source_file, $file_name ) ) {
875
  $err = error_get_last();
1330
  // Can the file be deleted safely?
1331
 
1332
  $allowed = 0;
1333
+ if ( $file['file_type'] != CERBER_FT_CONF
1334
+ && ! empty( $file['fd_allowed'] )
1335
+ && true === cerber_can_be_deleted( $file['file_name'] ) ) {
1336
+ $allowed = 1;
 
 
1337
  }
1338
 
1339
  $data['fd_allowed'] = $allowed;
1849
 
1850
  $hash_url = null;
1851
 
1852
+ if ( in_array( $plugin_folder, array( 'wp-cerber', 'wp-cerber-buddypress', 'wp-cerber-cloudflare-addon', 'jetflow' ) ) ) {
1853
  $hash_url = 'https://my.wpcerber.com/downloads/checksums/' . $plugin_folder . '/' . $plugin_data['Version'] . '.json';
1854
  }
1855
 
3573
 
3574
  // Must be excluded
3575
  if ( $exclude === null ) {
3576
+ $list = crb_get_settings( 'scan_exclude' );
3577
+ if ( ! $list || ! is_array( $list ) ) {
3578
+ $list = array();
3579
  }
3580
+
3581
  $d = cerber_get_the_folder();
3582
  if ( is_dir( $d ) ) {
3583
+ $list[] = $d;
3584
+ }
3585
+
3586
+ $exclude = array();
3587
+ foreach ( $list as $dir ) {
3588
+ if ( ! is_dir( $dir ) ) {
3589
+ continue;
3590
+ }
3591
+
3592
+ $exclude[] = rtrim( $dir, '/\\' );
3593
  }
3594
+
3595
+ /*$exclude = array_map( function ( $item ) {
3596
  return rtrim( $item, '/\\' );
3597
+ }, $exclude );*/
3598
  }
3599
 
3600
  if ( ! $pattern ) {
4251
  $tmp_folder1 = $folder . 'zip' . DIRECTORY_SEPARATOR;
4252
  $tmp_folder2 = $folder . 'nested_zip' . DIRECTORY_SEPARATOR;
4253
 
4254
+ crb_raise_limits();
4255
+
4256
  if ( ! $zip_file ) {
4257
  if ( ! $files = glob( $folder . '*.zip' ) ) {
4258
  return false;
4530
  return false;
4531
  }
4532
 
4533
+ /**
4534
+ * @param $file
4535
+ * @since 8.6.1
4536
+ *
4537
+ * @return bool
4538
+ */
4539
+ function cerber_set_writable( $file ) {
4540
+ static $chmod_file, $chmod_dir;
4541
+
4542
+ if ( ! $chmod_file ) {
4543
+ $chmod_file = ( fileperms( ABSPATH . 'index.php' ) & 0777 | 0644 );
4544
+ }
4545
+ if ( ! $chmod_dir ) {
4546
+ $chmod_dir = ( fileperms( ABSPATH ) & 0777 | 0755 );
4547
+ }
4548
+
4549
+ if ( @is_file( $file ) ) {
4550
+ return @chmod( $file, $chmod_file );
4551
+ }
4552
+ elseif ( @is_dir( $file ) ) {
4553
+ return @chmod( $file, $chmod_dir );
4554
+ }
4555
+
4556
+ return false;
4557
+ }
4558
+
4559
  function cerber_unzip( $file_name, $folder ) {
4560
  cerber_init_wp_filesystem();
4561
 
4935
 
4936
  switch ( $operation ) {
4937
  case 'delete_file':
4938
+ $result = cerber_quarantine_file( $file_name, $scan_id );
4939
  break;
4940
  case 'ignore_add_file':
4941
  $ignore[ $the_file->file_name_hash ] = array(
4986
  /**
4987
  * Move files to the quarantine folder
4988
  *
 
4989
  * @param string $file_name
4990
  * @param integer $scan_id
4991
+ * @param bool $move true to delete the file in its original location @since 8.6.1
4992
  *
4993
  * @return bool|WP_Error
4994
  */
4995
+ function cerber_quarantine_file( $file_name, $scan_id, $move = true ) {
4996
  static $folder;
4997
 
4998
  $scan_id = absint( $scan_id );
4999
+
5000
  if ( ! is_file( $file_name ) || ! $scan_id ) {
5001
  return false;
5002
  }
5003
+
5004
+ if ( $move ) {
5005
+ $can = cerber_can_be_deleted( $file_name, true );
5006
+
5007
+ if ( is_wp_error( $can ) ) {
5008
+ return $can;
5009
+ //return new WP_Error( 'cerber-del', "This file can't be deleted: " . $file_name );
5010
+ }
5011
  }
5012
 
5013
  if ( $folder === null ) {
5044
  fwrite( $f, 'Information for restoring files.' . PHP_EOL
5045
  . 'Deletion date | Deleted file => Original file to copy to restore.' . PHP_EOL
5046
  . '-----------------------------------------------------------------'
5047
+ //. PHP_EOL . `` );
5048
+ . PHP_EOL );
5049
  }
5050
  else {
5051
  if ( ! $f = fopen( $restore, 'a' ) ) {
5063
  }
5064
  }
5065
 
5066
+ if ( ! crb_move_copy( $file_name, $new_name, $move ) ) {
5067
+ $dir = dirname( $file_name );
5068
+
5069
+ if ( $move ) {
5070
+ $msg = 'Unable to move file to the quarantine: ' . $file_name . '. Check permissions (owner) of this folder: ' . $dir;
5071
  }
5072
+ else {
5073
+ $msg = 'Unable to copy file to the quarantine: ' . $file_name . '. Check permissions (owner) of this folder: ' . $dir;
 
 
5074
  }
5075
+
5076
+ return new WP_Error( 'cerber-quar-fail', $msg );
5077
  }
5078
 
5079
  // Save restoring info
5083
  return true;
5084
  }
5085
 
5086
+ // @since 8.6.1
5087
+ function crb_move_copy( $file_name, $new_name, $move = true ) {
5088
+ $abort = false;
5089
+ do {
5090
+ if ( $move ) {
5091
+ $ok = @rename( $file_name, $new_name );
5092
+ }
5093
+ else {
5094
+ $ok = @copy( $file_name, $new_name );
5095
+ }
5096
+
5097
+ if ( $ok ) {
5098
+ return true;
5099
+ }
5100
+
5101
+ if ( $abort ) {
5102
+ return false;
5103
+ }
5104
+
5105
+ if ( ! crb_get_settings( 'scan_chmod' ) ) {
5106
+ return false;
5107
+ }
5108
+
5109
+ cerber_set_writable( dirname( $file_name ) );
5110
+ cerber_set_writable( $file_name );
5111
+ $abort = true;
5112
+
5113
+ } while ( true );
5114
+ }
5115
+
5116
  /**
5117
+ * Some files cannot be deleted
5118
  *
5119
  * @param $file_name
5120
  * @param bool $check_inclusion
5121
  *
5122
+ * @return true|WP_Error true if a file can be safely deleted
5123
  */
5124
  function cerber_can_be_deleted( $file_name, $check_inclusion = false ) {
 
5125
 
5126
  if ( ! file_exists( $file_name ) || ! is_file( $file_name ) || is_link( $file_name ) ) {
5127
+ return new WP_Error( 'cerber_no_file', 'This file cannot be deleted because it doesn\'t exist: ' . $file_name );
5128
+ //return false;
5129
  }
5130
 
5131
  if ( cerber_is_htaccess( $file_name ) || cerber_is_dropin( $file_name ) ) {
5132
+ return new WP_Error( 'cerber_file_not_allowed', 'This file is not allowed to be deleted: ' . $file_name );
5133
+ //return false;
5134
  }
5135
 
5136
  if ( $check_inclusion && in_array( $file_name, get_included_files() ) ) {
5137
+ return new WP_Error( 'cerber_file_active', 'This file cannot be deleted because it \'s loaded and in use: ' . $file_name );
5138
+ //return false;
5139
  }
5140
 
5141
  if ( basename( $file_name ) == 'wp-config.php' ) {
5142
+ $abspath = cerber_get_abspath();
 
 
5143
  $file_name = cerber_normal_path( $file_name );
5144
 
5145
+ if ( ( $file_name == $abspath . 'wp-config.php' )
5146
+ || ( ! file_exists( $abspath . 'wp-config.php' ) && $file_name == dirname( $abspath ) . DIRECTORY_SEPARATOR . 'wp-config.php' ) ) {
5147
+
5148
+ return new WP_Error( 'cerber_file_not_allowed', 'This file is not allowed to be deleted: ' . $file_name );
5149
+ //return false;
5150
  }
5151
+ /*if ( ! file_exists( $abspath . 'wp-config.php' ) && $file_name == dirname( $abspath ) . DIRECTORY_SEPARATOR . 'wp-config.php' ) {
5152
  return false;
5153
+ }*/
5154
  }
5155
 
5156
  return true;
5228
  return $ret;
5229
  }
5230
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5231
  /**
5232
  * Creates a user report
5233
  *
cerber-tools.php CHANGED
@@ -30,53 +30,63 @@
30
 
31
  */
32
 
33
- function cerber_show_imex(){
34
- $form = '<h3>'.__('Export settings to the file','wp-cerber').'</h3>';
35
- $form .= '<p>'.__('When you click the button below you will get a configuration file, which you can upload on another site.','wp-cerber').'</p>';
36
- $form .= '<p>'.__('What do you want to export?','wp-cerber').'</p><form action="" method="get">';
37
- $form .= '<input id="exportset" name="exportset" value="1" type="checkbox" checked> <label for="exportset">'.__('Settings','wp-cerber').'</label>';
38
- $form .= '<p><input id="exportacl" name="exportacl" value="1" type="checkbox" checked> <label for="exportacl">'.__('Access Lists','wp-cerber').'</label>';
39
- $form .= '<p><input type="submit" name="cerber_export" id="submit" class="button button-primary" value="'.__('Download file','wp-cerber').'"></form>';
40
-
41
- $form .= '<h3 style="margin-top:2em;">'.__('Import settings from the file','wp-cerber').'</h3>';
42
- $form .= '<p>'.__('When you click the button below, file will be uploaded and all existing settings will be overridden.','wp-cerber').'</p>';
43
- $form .= '<p>'.__('Select file to import.','wp-cerber').' '. sprintf( __( 'Maximum upload file size: %s.'), esc_html(size_format(wp_max_upload_size())));
44
- $form .= '<form action="" method="post" enctype="multipart/form-data">'.wp_nonce_field( 'crb_import', 'crb_field');
 
 
45
  $form .= '<p><input type="file" name="ifile" id="ifile" required="required">';
46
- $form .= '<p>'.__('What do you want to import?','wp-cerber').'</p><p><input id="importset" name="importset" value="1" type="checkbox" checked> <label for="importset">'.__('Settings','wp-cerber').'</label>';
47
- $form .= '<p><input id="importacl" name="importacl" value="1" type="checkbox" checked> <label for="importacl">'.__('Access Lists','wp-cerber').'</label>';
48
- $form .= '<p><input type="submit" name="cerber_import" id="submit" class="button button-primary" value="'.__('Upload file','wp-cerber').'"></p></form>';
 
 
 
 
 
 
 
 
 
49
  echo $form;
50
  }
51
  /*
52
  Create export file
53
  */
54
- add_action('admin_init','cerber_export');
55
- function cerber_export(){
56
- global $wpdb;
57
 
58
- if ( !cerber_is_http_get() || ! isset( $_GET['cerber_export'] ) ) {
59
  return;
60
  }
61
  if ( ! current_user_can( 'manage_options' ) ) {
62
  wp_die( 'Error!' );
63
  }
64
- $p = cerber_plugin_data();
65
- $data = array('cerber_version' => $p['Version'],'home'=> cerber_get_home_url(),'date'=>date('d M Y H:i:s'));
66
- if (!empty($_GET['exportset'])) {
67
- $data ['options'] = crb_get_settings();
68
  $data ['geo-rules'] = cerber_get_geo_rules();
69
  }
70
  if ( ! empty( $_GET['exportacl'] ) ) {
71
  //$data ['acl'] = cerber_acl_all( 'ip, tag, comments, acl_slice' );
72
  $data ['acl'] = $wpdb->get_results( 'SELECT ip, tag, comments, acl_slice FROM ' . CERBER_ACL_TABLE, ARRAY_N );
73
  }
74
- $file = json_encode($data);
75
- $file .= '==/'.strlen($file).'/'.crc32($file).'/EOF';
76
- header($_SERVER["SERVER_PROTOCOL"].' 200 OK');
77
- header("Content-type: application/force-download");
78
- header("Content-Type: application/octet-stream");
79
- header("Content-Disposition: attachment; filename=wpcerber.config");
80
  echo $file;
81
  exit;
82
  }
@@ -88,13 +98,80 @@ function cerber_export(){
88
  add_action( 'admin_init', 'cerber_import' );
89
  function cerber_import() {
90
  global $wpdb, $wp_cerber;
 
91
  if ( ! isset( $_POST['cerber_import'] ) || ! cerber_is_http_post() ) {
92
  return;
93
  }
 
94
  check_admin_referer( 'crb_import', 'crb_field' );
 
95
  if ( ! current_user_can( 'manage_options' ) ) {
96
- wp_die( 'Upload failed.' );
97
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98
  $ok = true;
99
  if ( ! is_uploaded_file( $_FILES['ifile']['tmp_name'] ) ) {
100
  cerber_admin_notice( __( 'No file was uploaded or file is corrupted', 'wp-cerber' ) );
@@ -757,10 +834,7 @@ function cerber_manage_diag_log( $v ) {
757
  cerber_truncate_log( 0 );
758
  }
759
  elseif ( $v == 'download' ) {
760
- header( $_SERVER["SERVER_PROTOCOL"] . ' 200 OK' );
761
- header( "Content-type: application/force-download" );
762
- header( "Content-Type: application/octet-stream" );
763
- header( "Content-Disposition: attachment; filename=wpcerber.log" );
764
  readfile( cerber_get_diag_log() );
765
  exit;
766
  }
30
 
31
  */
32
 
33
+ function cerber_show_imex() {
34
+ $form = '<h3>' . __( 'Export settings to the file', 'wp-cerber' ) . '</h3>';
35
+ $form .= '<p>' . __( 'When you click the button below you will get a configuration file, which you can upload on another site.', 'wp-cerber' ) . '</p>';
36
+ $form .= '<p>' . __( 'What do you want to export?', 'wp-cerber' ) . '</p><form action="" method="get">';
37
+ $form .= '<input id="exportset" name="exportset" value="1" type="checkbox" checked> <label for="exportset">' . __( 'Settings', 'wp-cerber' ) . '</label>';
38
+ $form .= '<p><input id="exportacl" name="exportacl" value="1" type="checkbox" checked> <label for="exportacl">' . __( 'Access Lists', 'wp-cerber' ) . '</label>';
39
+ $form .= '<p><input type="submit" name="cerber_export" id="submit" class="button button-primary" value="' . __( 'Download file', 'wp-cerber' ) . '"></form>';
40
+
41
+ $nf = wp_nonce_field( 'crb_import', 'crb_field' );
42
+
43
+ $form .= '<h3 style="margin-top:2em;">' . __( 'Import settings from the file', 'wp-cerber' ) . '</h3>';
44
+ $form .= '<p>' . __( 'When you click the button below, file will be uploaded and all existing settings will be overridden.', 'wp-cerber' ) . '</p>';
45
+ $form .= '<p>' . __( 'Select file to import.', 'wp-cerber' ) . ' ' . sprintf( __( 'Maximum upload file size: %s.' ), esc_html( size_format( wp_max_upload_size() ) ) );
46
+ $form .= '<form action="" method="post" enctype="multipart/form-data">' . $nf;
47
  $form .= '<p><input type="file" name="ifile" id="ifile" required="required">';
48
+ $form .= '<p>' . __( 'What do you want to import?', 'wp-cerber' ) . '</p><p><input id="importset" name="importset" value="1" type="checkbox" checked> <label for="importset">' . __( 'Settings', 'wp-cerber' ) . '</label>';
49
+ $form .= '<p><input id="importacl" name="importacl" value="1" type="checkbox" checked> <label for="importacl">' . __( 'Access Lists', 'wp-cerber' ) . '</label>';
50
+ $form .= '<p><input type="submit" name="cerber_import" id="submit" class="button button-primary" value="' . __( 'Upload file', 'wp-cerber' ) . '"></p></form>';
51
+
52
+ $form .= '<h3 style="margin-top:2em;">Bulk load access list entries</h3>';
53
+
54
+ $form .= '<form method="post"><input type="hidden" name="acl_text" value="1">' . $nf;
55
+ $form .= '<p><input type="radio" name="target_acl" value="W" checked="checked">Load to ' . __( 'White IP Access List', 'wp-cerber' ) . '</p>';
56
+ $form .= '<p><input type="radio" name="target_acl" value="B">Load to ' . __( 'Black IP Access List', 'wp-cerber' ) . '</p>';
57
+ $form .= '<p><textarea name="import_acl_entries" rows="8" cols="70" placeholder="Enter access list entries, one item per line. To add entry comments, use the CSV format."></textarea></p>';
58
+ $form .= '<p><input type="submit" name="cerber_import" id="submit" class="button button-primary" value="' . __( 'Load entries', 'wp-cerber' ) . '"></p></form>';
59
+
60
  echo $form;
61
  }
62
  /*
63
  Create export file
64
  */
65
+ add_action( 'admin_init', 'cerber_export' );
66
+ function cerber_export() {
67
+ global $wpdb;
68
 
69
+ if ( ! cerber_is_http_get() || ! isset( $_GET['cerber_export'] ) ) {
70
  return;
71
  }
72
  if ( ! current_user_can( 'manage_options' ) ) {
73
  wp_die( 'Error!' );
74
  }
75
+ $p = cerber_plugin_data();
76
+ $data = array( 'cerber_version' => $p['Version'], 'home' => cerber_get_home_url(), 'date' => date( 'd M Y H:i:s' ) );
77
+ if ( ! empty( $_GET['exportset'] ) ) {
78
+ $data ['options'] = crb_get_settings();
79
  $data ['geo-rules'] = cerber_get_geo_rules();
80
  }
81
  if ( ! empty( $_GET['exportacl'] ) ) {
82
  //$data ['acl'] = cerber_acl_all( 'ip, tag, comments, acl_slice' );
83
  $data ['acl'] = $wpdb->get_results( 'SELECT ip, tag, comments, acl_slice FROM ' . CERBER_ACL_TABLE, ARRAY_N );
84
  }
85
+ $file = json_encode( $data );
86
+ $file .= '==/' . strlen( $file ) . '/' . crc32( $file ) . '/EOF';
87
+
88
+ crb_file_headers( 'wpcerber.config' );
89
+
 
90
  echo $file;
91
  exit;
92
  }
98
  add_action( 'admin_init', 'cerber_import' );
99
  function cerber_import() {
100
  global $wpdb, $wp_cerber;
101
+
102
  if ( ! isset( $_POST['cerber_import'] ) || ! cerber_is_http_post() ) {
103
  return;
104
  }
105
+
106
  check_admin_referer( 'crb_import', 'crb_field' );
107
+
108
  if ( ! current_user_can( 'manage_options' ) ) {
109
+ wp_die( 'Import failed.' );
110
  }
111
+
112
+ // Bulk load ACL
113
+ if ( isset( $_POST['acl_text'] ) ) {
114
+ if ( ! ( $text = crb_get_post_fields( 'import_acl_entries' ) )
115
+ || ! ( $tag = crb_get_post_fields( 'target_acl', false, 'W|B' ) ) ) {
116
+ cerber_admin_notice( 'No data provided' );
117
+
118
+ return;
119
+ }
120
+
121
+ $text = sanitize_textarea_field( $text );
122
+ $list = explode( PHP_EOL, $text );
123
+ $count = 0;
124
+
125
+ foreach ( $list as $line ) {
126
+ if ( ! $line ) {
127
+ continue;
128
+ }
129
+
130
+ list( $ip, $comment ) = explode( ',', $line . ',', 3 );
131
+ $ip = preg_replace( CRB_IP_NET_RANGE, ' ', $ip );
132
+ $ip = preg_replace( '/\s+/', ' ', $ip );
133
+
134
+ if ( ! $ip ) {
135
+ continue;
136
+ }
137
+
138
+ if ( $tag == 'B' ) {
139
+ if ( ! cerber_can_be_listed( $ip ) ) {
140
+ cerber_admin_notice( 'Cannot be blacklisted: ' . $ip );
141
+
142
+ continue;
143
+ }
144
+ }
145
+
146
+ $comment = trim( strip_tags( stripslashes( $comment ) ) );
147
+ $result = cerber_acl_add( $ip, $tag, $comment );
148
+
149
+ if ( $result !== true ) {
150
+ $msg = 'SKIPPED: ' . $ip . ' ' . $comment;
151
+ if ( is_wp_error( $result ) ) {
152
+ $msg .= ' - ' . $result->get_error_message();
153
+ }
154
+
155
+ cerber_admin_notice( $msg );
156
+ }
157
+ else {
158
+ $count ++;
159
+ }
160
+ }
161
+
162
+ if ( $count ) {
163
+ $msg = $count . ' access list entries were loaded. <a href="' . cerber_admin_link( 'acl' ) . '">Manage access lists</a>.';
164
+ }
165
+ else {
166
+ $msg = 'No entries were loaded';
167
+ }
168
+
169
+ cerber_admin_message( $msg );
170
+
171
+ return;
172
+ }
173
+
174
+ // Import from a file
175
  $ok = true;
176
  if ( ! is_uploaded_file( $_FILES['ifile']['tmp_name'] ) ) {
177
  cerber_admin_notice( __( 'No file was uploaded or file is corrupted', 'wp-cerber' ) );
834
  cerber_truncate_log( 0 );
835
  }
836
  elseif ( $v == 'download' ) {
837
+ crb_file_headers( 'wpcerber.log' );
 
 
 
838
  readfile( cerber_get_diag_log() );
839
  exit;
840
  }
cerber-users.php CHANGED
@@ -354,6 +354,7 @@ function crb_admin_role_form( $role_id, $values ) {
354
  }
355
 
356
  function crb_admin_form_field( $field, $name, $value, $id = '' ) {
 
357
  $label = crb_array_get( $field, 'label' );
358
  if ( ! $id ) {
359
  $id = 'crb-input-' . $name;
@@ -385,7 +386,7 @@ function crb_admin_form_field( $field, $name, $value, $id = '' ) {
385
  $type = crb_array_get( $field, 'type', 'text' );
386
 
387
  //return $pre . '<input type="' . $type . '" id="' . $id . '" name="' . $name . '" value="' . $value . '"' . $atts . ' class="' . $class . '" ' . $size . $maxlength . $atts . $data . ' />';
388
- return '<input style="'.$style.'" type="' . $type . '" id="' . $id . '" name="' . $name . '" value="' . $value . '" ' . $atts . ' />';
389
  break;
390
  }
391
  }
354
  }
355
 
356
  function crb_admin_form_field( $field, $name, $value, $id = '' ) {
357
+ $value = crb_attr_escape( $value );
358
  $label = crb_array_get( $field, 'label' );
359
  if ( ! $id ) {
360
  $id = 'crb-input-' . $name;
386
  $type = crb_array_get( $field, 'type', 'text' );
387
 
388
  //return $pre . '<input type="' . $type . '" id="' . $id . '" name="' . $name . '" value="' . $value . '"' . $atts . ' class="' . $class . '" ' . $size . $maxlength . $atts . $data . ' />';
389
+ return '<input style="' . $style . '" type="' . $type . '" id="' . $id . '" name="' . $name . '" value="' . $value . '" ' . $atts . ' />';
390
  break;
391
  }
392
  }
changelog.txt CHANGED
@@ -1,8 +1,17 @@
 
 
 
 
 
 
 
 
1
  = 8.6 =
2
  * New: [An integration with the Cloudflare cloud-based firewall. It’s implemented as a special WP Cerber add-on.](https://wpcerber.com/cloudflare-add-on-wp-cerber/)
3
  * Update: The malware scanner has got improvements to the monitoring of new and modified files feature.
4
  * Update: Additional search fields for the Activity log. They enable you to find a specific request by its Request ID (RID) or/and to search for a string in the request URL.
5
  * Update: The minimum supported PHP version is 5.6.
 
6
 
7
  = 8.5.9 =
8
  * New: On the Live Traffic log, now you can search and filter our requests with software errors if they occurred.
@@ -31,14 +40,14 @@
31
  * Fixed: PHP Notice: Trying to get property "ID" of non-object in cerber-load.php on line 1131
32
 
33
  = 8.5.5 =
34
- * IP Access Lists now support IPv6 networks, ranges, and wildcards. Add as many IPv6 entries to the access lists as you need. We've developed an extraordinarily fast ACL engine to process them.
35
- * The algorithm of handling consecutive IP address lockouts has been improved: the reason for an existing lockout is updated and its duration is recalculated in real-time now.
36
- * Traffic inspection algorithms were optimized to reduce false positives and make algorithms more human-friendly.
37
- * Improved compatibility with WooCommerce: the password reset and login forms are not blocked anymore if a user’s IP gets locked out due to using a non-existing username by mistake, using a prohibited username, or if a user has exceeded the number of allowed login attempts.
38
- * Improved compatibility with WordPress scheduled cron tasks if a website runs on a server with PHP-FPM (FastCGI Process Manager)
39
- * Very long URLs on the Live Traffic page are now displayed in full when you click the "Details" link in a row.
40
- * The [Cerber.Hub multi-site manager](https://wpcerber.com/manage-multiple-websites/): the server column on the slave websites list page now contains a link to quickly filter out websites on the same server.
41
- * The [Cerber.Hub multi-site manager](https://wpcerber.com/manage-multiple-websites/): now it remembers the filtered list of slave websites while you’re switching between them and the master.
42
  * Fixed: If the Custom login URL is enabled on a subfolder WordPress installation, the user redirection after logout generates the HTTP 404 error page.
43
  * Fixed: Very long HTTP referrers and request URLs are displayed in a truncated form on the Live Traffic page due to CSS bug.
44
  * Fixed: If the Data Shield security feature is active, the password reset page on WordPress 5.3 doesn’t work properly showing "Your password reset link appears to be invalid. Please request a new link below."
@@ -48,7 +57,7 @@
48
  * New: The malware scanner and integrity checker window has got a new filter that enables you to filter out and navigate to specific issues quickly.
49
  * New in Cerber.Hub: new columns and filters have been added to the list of slave websites. The new columns display server IP addresses, hostnames, and countries where servers are located.
50
  * Fixed: depending on the number of items in the access lists, the IP address 0.0.0.0 can be erroneously marked as whitelisted or blacklisted.
51
- * Fixed in Cerber.Hub: if a WordPress plugin is installed on several slave websites and the plugin needs to be updated on some of the slave websites, the plugin is shown as needs to be updated on all the slave websites.
52
  * [Read more](https://wpcerber.com/wp-cerber-security-8-5-3/)
53
 
54
  = 8.5 =
1
+ = 8.6.3 =
2
+ * New: Ability to load IP access list's entries in the CSV format (bulk load).
3
+ * Update: A new malware scanner setting allows you to permit the scanner to change permissions of folders and files when required.
4
+ * Fixed: The access list IPv4 wildcard *.*.*.* doesn't work (has no effect).
5
+ * Fixed: If the anti-spam query whitelist contains more than one entry, they do not work as expected.
6
+ * Fixed: Several settings fields are not properly escaped.
7
+ * [Read more](https://wpcerber.com/wp-cerber-security-8-6-3/)
8
+
9
  = 8.6 =
10
  * New: [An integration with the Cloudflare cloud-based firewall. It’s implemented as a special WP Cerber add-on.](https://wpcerber.com/cloudflare-add-on-wp-cerber/)
11
  * Update: The malware scanner has got improvements to the monitoring of new and modified files feature.
12
  * Update: Additional search fields for the Activity log. They enable you to find a specific request by its Request ID (RID) or/and to search for a string in the request URL.
13
  * Update: The minimum supported PHP version is 5.6.
14
+ * [Read more](https://wpcerber.com/wp-cerber-security-8-6/)
15
 
16
  = 8.5.9 =
17
  * New: On the Live Traffic log, now you can search and filter our requests with software errors if they occurred.
40
  * Fixed: PHP Notice: Trying to get property "ID" of non-object in cerber-load.php on line 1131
41
 
42
  = 8.5.5 =
43
+ * New: IP Access Lists now support IPv6 networks, ranges, and wildcards. Add as many IPv6 entries to the access lists as you need. We've developed an extraordinarily fast ACL engine to process them.
44
+ * Update: The algorithm of handling consecutive IP address lockouts has been improved: the reason for an existing lockout is updated and its duration is recalculated in real-time now.
45
+ * Update: Traffic inspection algorithms were optimized to reduce false positives and make algorithms more human-friendly.
46
+ * Update: Improved compatibility with WooCommerce: the password reset and login forms are not blocked anymore if a user’s IP gets locked out due to using a non-existing username by mistake, using a prohibited username, or if a user has exceeded the number of allowed login attempts.
47
+ * Update: Improved compatibility with WordPress scheduled cron tasks if a website runs on a server with PHP-FPM (FastCGI Process Manager)
48
+ * Update: Very long URLs on the Live Traffic page are now displayed in full when you click the "Details" link in a row.
49
+ * Update: The [Cerber.Hub multi-site manager](https://wpcerber.com/manage-multiple-websites/): the server column on the slave websites list page now contains a link to quickly filter out websites on the same server.
50
+ * Update: The [Cerber.Hub multi-site manager](https://wpcerber.com/manage-multiple-websites/): now it remembers the filtered list of slave websites while you’re switching between them and the master.
51
  * Fixed: If the Custom login URL is enabled on a subfolder WordPress installation, the user redirection after logout generates the HTTP 404 error page.
52
  * Fixed: Very long HTTP referrers and request URLs are displayed in a truncated form on the Live Traffic page due to CSS bug.
53
  * Fixed: If the Data Shield security feature is active, the password reset page on WordPress 5.3 doesn’t work properly showing "Your password reset link appears to be invalid. Please request a new link below."
57
  * New: The malware scanner and integrity checker window has got a new filter that enables you to filter out and navigate to specific issues quickly.
58
  * New in Cerber.Hub: new columns and filters have been added to the list of slave websites. The new columns display server IP addresses, hostnames, and countries where servers are located.
59
  * Fixed: depending on the number of items in the access lists, the IP address 0.0.0.0 can be erroneously marked as whitelisted or blacklisted.
60
+ * Fixed in Cerber.Hub: if a WordPress plugin is installed on several slave websites and the plugin needs to be updated on some of the slave websites, the plugin is shown as needs to be updated on all of them.
61
  * [Read more](https://wpcerber.com/wp-cerber-security-8-5-3/)
62
 
63
  = 8.5 =
common.php CHANGED
@@ -777,6 +777,38 @@ function crb_array_diff_keys( &$arr1, &$arr2 ) {
777
  return false;
778
  }
779
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
780
  /**
781
  * Return true if a REST API URL has been requested
782
  *
@@ -1922,8 +1954,12 @@ function cerber_is_crawler( $ua ) {
1922
  return 0;
1923
  }
1924
 
 
1925
  function cerber_db_use_mysqli() {
1926
  static $mysqli;
 
 
 
1927
  if ( $mysqli === null ) {
1928
  $db = cerber_get_db();
1929
  $mysqli = $db->use_mysqli;
@@ -2262,14 +2298,8 @@ function cerber_get_set( $key, $id = null, $unserialize = true, $use_cache = nul
2262
  $key = preg_replace( CRB_SANITIZE_KEY, '', $key );
2263
  $cache_key = 'crb#' . $key . '#';
2264
 
2265
- $and = '';
2266
- if ( $id !== null ) {
2267
- $and = ' AND the_id = ' . absint( $id );
2268
- $cache_key .= absint( $id );
2269
- }
2270
- else {
2271
- $cache_key .= '0';
2272
- }
2273
 
2274
  $ret = false;
2275
 
@@ -2282,7 +2312,7 @@ function cerber_get_set( $key, $id = null, $unserialize = true, $use_cache = nul
2282
  }
2283
  }
2284
 
2285
- if ( $row = cerber_db_get_row( 'SELECT * FROM ' . cerber_get_db_prefix() . CERBER_SETS_TABLE . ' WHERE the_key = "' . $key . '" ' . $and ) ) {
2286
  if ( $row['expires'] > 0 && $row['expires'] < time() ) {
2287
  cerber_delete_set( $key, $id );
2288
  if ( $use_cache ) {
@@ -2378,18 +2408,12 @@ function cerber_delete_set( $key, $id = null) {
2378
  $key = preg_replace( CRB_SANITIZE_KEY, '', $key );
2379
  $cache_key = 'crb#' . $key . '#';
2380
 
2381
- $and = '';
2382
- if ( $id !== null ) {
2383
- $and = ' AND the_id = ' . absint( $id );
2384
- $cache_key .= absint( $id );
2385
- }
2386
- else {
2387
- $cache_key .= '0';
2388
- }
2389
 
2390
  cerber_cache_delete( $cache_key );
2391
 
2392
- if ( cerber_db_query( 'DELETE FROM ' . cerber_get_db_prefix() . CERBER_SETS_TABLE . ' WHERE the_key = "' . $key . '"' . $and ) ) {
2393
  return true;
2394
  }
2395
 
@@ -2523,6 +2547,9 @@ function cerber_set_cookie( $name, $value, $expire = 0, $path = "", $domain = ""
2523
  $path = cerber_get_cookie_path();
2524
  }
2525
 
 
 
 
2526
  setcookie( cerber_get_cookie_prefix() . $name, $value, $expire, $path, $domain, $secure, $httponly );
2527
  }
2528
 
@@ -3132,10 +3159,18 @@ function cerber_empty_dir( $dir ) {
3132
  * Tries to raise PHP limits
3133
  *
3134
  */
3135
- function crb_raise_limits() {
3136
- @set_time_limit( 180 );
3137
  @ini_set( 'max_execution_time', 180 );
3138
- @ini_set( 'memory_limit', 512 );
 
 
 
 
 
 
 
 
3139
  }
3140
 
3141
  function cerber_mask_email( $email ) {
@@ -3255,6 +3290,13 @@ function crb_insert_with_markers( $filename, $marker, $insertion ) {
3255
  return (bool) $bytes;
3256
  }
3257
 
 
 
 
 
 
 
 
3258
  // The key-value cache
3259
 
3260
  final class CRB_Cache {
777
  return false;
778
  }
779
 
780
+
781
+ /**
782
+ * @param string|array $val
783
+ *
784
+ * for objects see map_deep();
785
+ */
786
+ function crb_trim_deep( &$val ) {
787
+ if ( ! is_array( $val ) ) {
788
+ $val = trim( $val );
789
+ }
790
+
791
+ array_walk_recursive( $val, function ( &$v ) {
792
+ $v = trim( $v );
793
+ } );
794
+ }
795
+
796
+ /**
797
+ * @param string|array $val
798
+ *
799
+ * Note: _sanitize_text_fields removes HTML tags
800
+ *
801
+ */
802
+ function crb_sanitize_deep( &$val ) {
803
+ if ( ! is_array( $val ) ) {
804
+ $val = _sanitize_text_fields( $val, true );
805
+ }
806
+
807
+ array_walk_recursive( $val, function ( &$v ) {
808
+ $v = _sanitize_text_fields( $v, true );
809
+ } );
810
+ }
811
+
812
  /**
813
  * Return true if a REST API URL has been requested
814
  *
1954
  return 0;
1955
  }
1956
 
1957
+ // TODO: remove this and other non-MySQLi stuff
1958
  function cerber_db_use_mysqli() {
1959
  static $mysqli;
1960
+
1961
+ return true; // @since 8.6.1 Only MySQLi is supported
1962
+
1963
  if ( $mysqli === null ) {
1964
  $db = cerber_get_db();
1965
  $mysqli = $db->use_mysqli;
2298
  $key = preg_replace( CRB_SANITIZE_KEY, '', $key );
2299
  $cache_key = 'crb#' . $key . '#';
2300
 
2301
+ $id = ( $id !== null ) ? absint( $id ) : 0;
2302
+ $cache_key .= $id;
 
 
 
 
 
 
2303
 
2304
  $ret = false;
2305
 
2312
  }
2313
  }
2314
 
2315
+ if ( $row = cerber_db_get_row( 'SELECT * FROM ' . cerber_get_db_prefix() . CERBER_SETS_TABLE . ' WHERE the_key = "' . $key . '" AND the_id = ' . $id ) ) {
2316
  if ( $row['expires'] > 0 && $row['expires'] < time() ) {
2317
  cerber_delete_set( $key, $id );
2318
  if ( $use_cache ) {
2408
  $key = preg_replace( CRB_SANITIZE_KEY, '', $key );
2409
  $cache_key = 'crb#' . $key . '#';
2410
 
2411
+ $id = ( $id !== null ) ? absint( $id ) : 0;
2412
+ $cache_key .= $id;
 
 
 
 
 
 
2413
 
2414
  cerber_cache_delete( $cache_key );
2415
 
2416
+ if ( cerber_db_query( 'DELETE FROM ' . cerber_get_db_prefix() . CERBER_SETS_TABLE . ' WHERE the_key = "' . $key . '" AND the_id = ' . $id ) ) {
2417
  return true;
2418
  }
2419
 
2547
  $path = cerber_get_cookie_path();
2548
  }
2549
 
2550
+ $expire = absint( $expire );
2551
+ $expire = ( $expire > 43009401600 ) ? 43009401600 : $expire;
2552
+
2553
  setcookie( cerber_get_cookie_prefix() . $name, $value, $expire, $path, $domain, $secure, $httponly );
2554
  }
2555
 
3159
  * Tries to raise PHP limits
3160
  *
3161
  */
3162
+ function crb_raise_limits( $mem = null ) {
3163
+
3164
  @ini_set( 'max_execution_time', 180 );
3165
+
3166
+ if ( function_exists( 'set_time_limit' )
3167
+ && false === strpos( ini_get( 'disable_functions' ), 'set_time_limit' ) ) {
3168
+ @set_time_limit( 0 );
3169
+ }
3170
+
3171
+ if ( $mem ) {
3172
+ @ini_set( 'memory_limit', $mem );
3173
+ }
3174
  }
3175
 
3176
  function cerber_mask_email( $email ) {
3290
  return (bool) $bytes;
3291
  }
3292
 
3293
+ function crb_file_headers( $fname ) {
3294
+ $fname = rawurlencode( $fname ); // encode non-ASCII symbols
3295
+ @ob_clean(); // This trick is crucial for some servers/environments (e.g. some IIS)
3296
+ header( "Content-Type: application/octet-stream" );
3297
+ header( "Content-Disposition: attachment; filename*=UTF-8''{$fname}" );
3298
+ }
3299
+
3300
  // The key-value cache
3301
 
3302
  final class CRB_Cache {
dashboard.php CHANGED
@@ -126,7 +126,7 @@ function cerber_show_admin_page( $title, $tabs = array(), $active_tab = null, $r
126
 
127
  cerber_show_tabs( $active_tab, $tabs );
128
 
129
- cerber_show_aside( $active_tab );
130
 
131
  echo '<div class="crb-main crb-tab-' . $active_tab . '">';
132
 
@@ -139,6 +139,10 @@ function cerber_show_admin_page( $title, $tabs = array(), $active_tab = null, $r
139
 
140
  echo '</div>';
141
 
 
 
 
 
142
  ?>
143
  </div>
144
  <?php
@@ -247,7 +251,7 @@ function cerber_block_delete( $ip ) {
247
  function cerber_acl_form(){
248
 
249
  //echo '<h2>'.__('White IP Access List','wp-cerber').'</h2><p><span style="color:green;" class="dashicons-before dashicons-thumbs-up"></span> '.__('These IPs will never be locked out','wp-cerber').' - <a target="_blank" href="https://wpcerber.com/using-ip-access-lists-to-protect-wordpress/">Know more</a></p>'.
250
- echo '<h2>'.__('White IP Access List','wp-cerber').'</h2><p>Read more: <a target="_blank" href="https://wpcerber.com/using-ip-access-lists-to-protect-wordpress/">How Access Lists work</a></p>'.
251
  cerber_acl_get_table('W');
252
  //echo '<h2>'.__('Black IP Access List','wp-cerber').'</h2><p><span style="color:red;" class="dashicons-before dashicons-thumbs-down"></span> '.__('Nobody can log in or register from these IPs','wp-cerber').' - <a target="_blank" href="https://wpcerber.com/using-ip-access-lists-to-protect-wordpress/">Know more</a></p>'.
253
  echo '<h2>'.__('Black IP Access List','wp-cerber').'</h2>'.
@@ -265,17 +269,19 @@ function cerber_acl_form(){
265
 
266
  <table class="crb-acl-hints">
267
  <tr><td colspan="3">Use the following formats to add entries to the access lists</td></tr>
268
- <tr><td>IPv4</td><td>Single IP address</td><td>192.168.5.22</td></tr>
269
  <tr><td>IPv4</td><td>Range specified with hyphen (dash)</td><td>192.168.1.45 - 192.168.22.165</td></tr>
270
- <tr><td>IPv4</td><td>CIDR</td><td>192.168.128.0/24</td></tr>
271
- <tr><td>IPv4</td><td>Subnet Class C</td><td>192.168.77.*</td></tr>
272
- <tr><td>IPv4</td><td>Subnet Class B</td><td>192.168.*.*</td></tr>
273
- <tr><td>IPv4</td><td>Subnet Class A</td><td>192.*.*.*</td></tr>
274
- <tr><td>IPv4</td><td>Any IPv4 address</td><td>*.*.*.*</td></tr>
275
- <tr><td>IPv6</td><td>Single IP address</td><td>2001:0db8:85a3:0000:0000:8a2e:0370:7334</td></tr>
 
 
276
  <tr><td>IPv6</td><td>Range specified with hyphen (dash)</td><td>2001:db8::ff00:41:0 - 2001:db8::ff00:41:12ff</td></tr>
277
- <tr><td>IPv6</td><td>CIDR</td><td>2001:db8::/46</td></tr>
278
- <tr><td>IPv6</td><td>Wildcard</td><td>2001:db8::ff00:41:*</td></tr>
279
  <tr><td>IPv6</td><td>Any IPv6 address</td><td>::/0</td></tr>
280
  </table>
281
 
@@ -790,7 +796,7 @@ function crb_admin_get_tokenized_link() {
790
 
791
  function cerber_export_activity( $params = array() ) {
792
 
793
- crb_raise_limits();
794
 
795
  $args = array( 'per_page' => 0 );
796
 
@@ -895,12 +901,13 @@ function cerber_export_activity( $params = array() ) {
895
 
896
  function cerber_send_csv_header( $f_name, $total, $heading = array(), $info = array() ) {
897
 
898
- $fname = rawurlencode( $f_name ) . '.csv'; // encode non-ASCII symbols
899
 
900
- header( $_SERVER["SERVER_PROTOCOL"] . ' 200 OK' );
901
- header( "Content-type: application/force-download" );
902
- header( "Content-Type: application/octet-stream" );
903
- header( "Content-Disposition: attachment; filename*=UTF-8''{$fname}" );
 
904
 
905
  $info[] = '"Generated by:","WP Cerber Security ' . CERBER_VER . '"';
906
  $info[] = '"Website:","' . get_option( 'blogname' ) . '"';
@@ -912,6 +919,7 @@ function cerber_send_csv_header( $f_name, $total, $heading = array(), $info = ar
912
  foreach ( $heading as &$item ) {
913
  $item = '"' . str_replace( '"', '""', trim( $item ) ) . '"';
914
  }
 
915
  echo implode( ',', $heading ) . "\r\n";
916
 
917
  }
@@ -1161,7 +1169,7 @@ function cerber_show_activity( $args = array(), $echo = true ) {
1161
  </div>
1162
 
1163
  <div class="crb-act-controls">
1164
- <a href="#" class="crb-opener" data-target="crb-more-activity-fields">More</a>
1165
  </div>
1166
 
1167
  </div>
@@ -1371,25 +1379,26 @@ function cerber_ip_extra_view( $ip, $context = 'activity' ) {
1371
  return '';
1372
  }
1373
 
1374
- $ip_info = ' ';
1375
- $acl = cerber_acl_check( $ip );
 
 
 
 
 
 
 
 
1376
 
1377
  if ( $acl == 'W' ) {
1378
- $ip_info .= '<span class="crb-color-green ip-info-label">' . __( 'White IP Access List', 'wp-cerber' ) . '</span> ';
1379
  }
1380
  elseif ( $acl == 'B' ) {
1381
- $ip_info .= '<span class="crb-color-black ip-info-label">' . __( 'Black IP Access List', 'wp-cerber' ) . '</span> ';
1382
  }
1383
 
1384
  if ( cerber_block_check( $ip ) ) {
1385
- $ip_info .= '<span class="color-blocked ip-info-label">' . __( 'Locked out', 'wp-cerber' ) . '</span> ';
1386
- }
1387
-
1388
- if ( $context == 'activity' ) {
1389
- $ip_info .= cerber_traffic_link( array( 'filter_ip' => $ip ) );
1390
- }
1391
- else {
1392
- $ip_info .= ' <a class="crb-button-tiny" href="' . cerber_admin_link( 'activity', array( 'filter_ip' => $ip ) ) . '">' . __( 'Check for activities', 'wp-cerber' ) . '</a>';
1393
  }
1394
 
1395
  // Filter activity by ...
@@ -1406,6 +1415,7 @@ function cerber_ip_extra_view( $ip, $context = 'activity' ) {
1406
  $abuse = '';
1407
  $network = '';
1408
  $network_info = '';
 
1409
 
1410
  if ( crb_get_settings( 'ip_extra' ) ) {
1411
  $ip_data = cerber_ip_whois_info( $ip );
@@ -1419,12 +1429,15 @@ function cerber_ip_extra_view( $ip, $context = 'activity' ) {
1419
  $country = $ip_data['country'];
1420
  }
1421
  if ( ! empty( $ip_data['data']['abuse-mailbox'] ) ) {
1422
- $abuse = '<p>' . __( 'Abuse email:', 'wp-cerber' ) . ' <a href="mailto:' . $ip_data['data']['abuse-mailbox'] . '">' . $ip_data['data']['abuse-mailbox'] . '</a></p>';
 
1423
  }
1424
  if ( ! empty( $ip_data['data']['network'] ) ) {
1425
- $network = $ip_data['data']['network'];
1426
- $range = cerber_any2range( $network );
1427
- $network_info = '<p>' . __( 'Network:', 'wp-cerber' ) . ' ' . $network . ' &nbsp; <a class="crb-button-tiny" href="' . cerber_admin_link( 'activity', array( 'filter_ip' => $range['range'] ) ) . '">' . __( 'Check for activities', 'wp-cerber' ) . '</a> ' . cerber_traffic_link( array( 'filter_ip' => $range['range'] ) );
 
 
1428
  }
1429
  }
1430
 
@@ -1450,11 +1463,15 @@ function cerber_ip_extra_view( $ip, $context = 'activity' ) {
1450
  '</form>';
1451
  }
1452
 
 
 
1453
  $ret = '<div class="crb-extra-info">
1454
- <table>
1455
- <tr><td><p><span id = "ip-address">' . $ip . '</span><span id = "ip-country">' . $country . '</span>' . $ip_info . '</p>' . $network_info . $abuse . '</td><td>' . $form . '</td></tr>
1456
- </table>
1457
- </div>';
 
 
1458
 
1459
  return $ret . $whois;
1460
  }
@@ -1493,7 +1510,10 @@ function cerber_user_extra_view( $user_id, $context = 'activity' ) {
1493
  $ret .= '<div>' . $avatar . '</div>';
1494
  }
1495
 
 
 
1496
  // Registered
 
1497
  $time = strtotime( cerber_db_get_var( "SELECT user_registered FROM {$wpdb->users} WHERE id = " . $user_id ) );
1498
  if ( $time ) {
1499
  $reg = cerber_auto_date( $time );
@@ -1504,21 +1524,23 @@ function cerber_user_extra_view( $user_id, $context = 'activity' ) {
1504
  }
1505
  }
1506
  }
 
 
1507
  }
1508
 
1509
- // Activated
 
1510
  if ( $log = cerber_get_log( array( 200 ), array( 'id' => $user_id ) ) ) {
1511
- $acted = $log[0];
1512
- $activated = __( 'Activated', 'wp-cerber' ) . ': ' . cerber_auto_date( $acted->stamp );
1513
  if ( $country = crb_country_html( null, $acted->ip ) ) {
1514
  $activated .= ' &nbsp; ' . $country;
1515
  }
1516
- $activated = '<p>' . $activated . '</p>';
1517
- }
1518
- else {
1519
- $activated = '';
1520
  }
1521
 
 
1522
  // Last seen
1523
  $seen = '';
1524
  $s1 = $wpdb->get_row( 'SELECT stamp,ip FROM ' . CERBER_TRAF_TABLE . ' WHERE user_id = ' . $user_id . ' ORDER BY stamp DESC LIMIT 1' );
@@ -1531,17 +1553,25 @@ function cerber_user_extra_view( $user_id, $context = 'activity' ) {
1531
 
1532
  if ( $sn ) {
1533
  $seen = cerber_auto_date( $sn->stamp );
1534
- $seen = __( 'Last seen', 'wp-cerber' ) . ': ' . $seen;
1535
  if ( $country = crb_country_html( null, $sn->ip ) ) {
1536
  $seen .= ' &nbsp; ' . $country;
1537
  }
1538
- $seen = '<p>' . $seen . '</p>';
 
1539
  }
1540
 
1541
- $usn = cerber_db_get_var( 'SELECT count(user_id) FROM ' . cerber_get_db_prefix() . CERBER_USS_TABLE . ' WHERE user_id = ' . $user_id );
1542
- $sessions = ( $usn ) ? '<p><a href="' . cerber_admin_link( 'sessions', array( 'filter_user' => $user_id ) ) . '">Active sessions: ' . $usn . '</a></p>' : '';
 
1543
 
1544
- $ret .= '<div>' . $name . '<p>' . __( 'Registered', 'wp-cerber' ) . ': ' . $reg . '</p>' . $seen . $activated . $sessions . '</div>';
 
 
 
 
 
 
 
1545
 
1546
  if ( $context == 'activity' ) {
1547
  $link = cerber_traffic_link( array( 'filter_user' => $user_id ) );
@@ -2410,34 +2440,6 @@ function cerber_show_aside( $page ) {
2410
  $aside[] = '<a href="https://wpcerber.com/pro/" target="_blank"><img src="'.$crb_assets_url.'bn3ra.png" width="290" height="478"/></a>';
2411
 
2412
  }
2413
- /*
2414
- if (!lab_lab() && !in_array($page,array('geo'))) {
2415
- $aside[] = '<div class="crb-box" id = "crb-donate">
2416
- <div class="crb-box-inner">
2417
- <h3>' . __( 'Donate', 'wp-cerber' ) . '</h3>
2418
- <p>Please consider making a donation to support the continued development and free support of this plugin. Thanks!</p>
2419
-
2420
- <div style="text-align:center;">
2421
- <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
2422
- <input type="hidden" name="cmd" value="_s-xclick">
2423
- <input type="hidden" name="hosted_button_id" value="SR8RJXFU35EW8">
2424
- <input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG_global.gif" border="0" name="submit" alt="PayPal – The safer, easier way to pay online.">
2425
- <img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
2426
- </form>
2427
- </div>
2428
-
2429
- </div>
2430
- </div>';
2431
- }
2432
- */
2433
- /*$aside[] = '<div class="crb-box" id = "crb-jetflow">
2434
- <div class="crb-box-inner">
2435
- <h3>Automate WordPress</h3>
2436
- <p>Create automation scenarios without coding knowledge with the jetFlow.io plugin. Customize your WordPress in no time. No programming knowledge needed anymore.</p>
2437
- <p><span class="dashicons-before dashicons-layout"></span> &nbsp; <a href="http://jetflow.io/" target="_blank">Download the jetFlow.io plugin</a></p>
2438
- </div>
2439
- </div>
2440
- ';*/
2441
 
2442
  $aside[] = '<div class="crb-box" id = "crb-blog">
2443
  <div class="crb-box-inner">
@@ -2783,6 +2785,9 @@ function cerber_admin_head() {
2783
  crb_ajax_loader = '<?php echo $crb_ajax_loader; ?>';
2784
  crb_lab_available = <?php echo $crb_lab_available; ?>;
2785
 
 
 
 
2786
  crb_scan_msg_steps = <?php echo json_encode( cerber_step_desc() ); ?>;
2787
  crb_scan_msg_issues = <?php echo json_encode( cerber_get_issue_label() ); ?>;
2788
  crb_scan_msg_risks = <?php echo json_encode( cerber_get_risk_label() ); ?>;
@@ -3515,7 +3520,7 @@ function crb_country_html($code = null, $ip = null){
3515
 
3516
  function cerber_export_traffic( $params = array() ) {
3517
 
3518
- crb_raise_limits();
3519
 
3520
  $args = array(
3521
  'per_page' => 0,
@@ -4838,16 +4843,18 @@ function cerber_show_tabs( $active, $tabs = array() ) {
4838
  // Access Lists (ACL) ---------------------------------------------------------
4839
 
4840
  /**
4841
- * @param $ip
4842
- * @param $tag
4843
- * @param $comment string
4844
- * @param $acl_slice int
4845
  *
4846
  * @return bool|WP_Error
4847
  */
4848
  function cerber_acl_add( $ip, $tag, $comment = '', $acl_slice = 0 ) {
4849
  global $wpdb;
4850
 
 
 
4851
  $acl_slice = absint( $acl_slice );
4852
  $v6range = '';
4853
  $ver6 = 0;
@@ -4861,7 +4868,8 @@ function cerber_acl_add( $ip, $tag, $comment = '', $acl_slice = 0 ) {
4861
  list( $begin, $end, $v6range ) = crb_ipv6_prepare( $ip, $ip );
4862
  $ver6 = 1;
4863
  }
4864
- elseif ( $range = cerber_any2range( $ip ) ) {
 
4865
  $ver6 = $range['IPV6'];
4866
  $begin = $range['begin'];
4867
  $end = $range['end'];
@@ -4887,7 +4895,7 @@ function cerber_acl_add( $ip, $tag, $comment = '', $acl_slice = 0 ) {
4887
  ), array( '%s', '%d', '%d', '%s', '%s', '%d', '%s', '%d' ) );
4888
 
4889
  if ( ! $result ) {
4890
- return new WP_Error( 'acl_db_error', __( $wpdb->last_error, 'wp-cerber' ) );
4891
  }
4892
 
4893
  crb_event_handler( 'ip_event', array(
126
 
127
  cerber_show_tabs( $active_tab, $tabs );
128
 
129
+ echo '<div style="display: table; width:100%;">';
130
 
131
  echo '<div class="crb-main crb-tab-' . $active_tab . '">';
132
 
139
 
140
  echo '</div>';
141
 
142
+ cerber_show_aside( $active_tab );
143
+
144
+ echo '</div>';
145
+
146
  ?>
147
  </div>
148
  <?php
251
  function cerber_acl_form(){
252
 
253
  //echo '<h2>'.__('White IP Access List','wp-cerber').'</h2><p><span style="color:green;" class="dashicons-before dashicons-thumbs-up"></span> '.__('These IPs will never be locked out','wp-cerber').' - <a target="_blank" href="https://wpcerber.com/using-ip-access-lists-to-protect-wordpress/">Know more</a></p>'.
254
+ echo '<h2>' . __( 'White IP Access List', 'wp-cerber' ) . '</h2><p><a target="_blank" href="https://wpcerber.com/using-ip-access-lists-to-protect-wordpress/">How Access Lists work</a> &nbsp;|&nbsp; <a href="' . cerber_admin_link( 'imex' ) . '">Import entries</a></p>' .
255
  cerber_acl_get_table('W');
256
  //echo '<h2>'.__('Black IP Access List','wp-cerber').'</h2><p><span style="color:red;" class="dashicons-before dashicons-thumbs-down"></span> '.__('Nobody can log in or register from these IPs','wp-cerber').' - <a target="_blank" href="https://wpcerber.com/using-ip-access-lists-to-protect-wordpress/">Know more</a></p>'.
257
  echo '<h2>'.__('Black IP Access List','wp-cerber').'</h2>'.
269
 
270
  <table class="crb-acl-hints">
271
  <tr><td colspan="3">Use the following formats to add entries to the access lists</td></tr>
272
+ <tr><td>IPv4</td><td>Single IPv4 address</td><td>192.168.5.22</td></tr>
273
  <tr><td>IPv4</td><td>Range specified with hyphen (dash)</td><td>192.168.1.45 - 192.168.22.165</td></tr>
274
+ <tr><td>IPv4</td><td>Range specified with CIDR</td><td>192.168.128.0/20</td></tr>
275
+ <tr><td>IPv4</td><td>Subnet Class C specified with CIDR</td><td>192.168.77.0/24</td></tr>
276
+ <tr><td>IPv4</td><td>Any IPv4 address specified with CIDR</td><td>0.0.0.0/0</td></tr>
277
+ <tr><td>IPv4</td><td>Subnet Class C specified with wildcard</td><td>192.168.77.*</td></tr>
278
+ <tr><td>IPv4</td><td>Subnet Class B specified with wildcard</td><td>192.168.*.*</td></tr>
279
+ <tr><td>IPv4</td><td>Subnet Class A specified with wildcard</td><td>192.*.*.*</td></tr>
280
+ <tr><td>IPv4</td><td>Any IPv4 address specified with wildcard</td><td>*.*.*.*</td></tr>
281
+ <tr><td>IPv6</td><td>Single IPv6 address</td><td>2001:0db8:85a3:0000:0000:8a2e:0370:7334</td></tr>
282
  <tr><td>IPv6</td><td>Range specified with hyphen (dash)</td><td>2001:db8::ff00:41:0 - 2001:db8::ff00:41:12ff</td></tr>
283
+ <tr><td>IPv6</td><td>Range specified with CIDR</td><td>2001:db8::/46</td></tr>
284
+ <tr><td>IPv6</td><td>Range specified with wildcard</td><td>2001:db8::ff00:41:*</td></tr>
285
  <tr><td>IPv6</td><td>Any IPv6 address</td><td>::/0</td></tr>
286
  </table>
287
 
796
 
797
  function cerber_export_activity( $params = array() ) {
798
 
799
+ crb_raise_limits( 512 );
800
 
801
  $args = array( 'per_page' => 0 );
802
 
901
 
902
  function cerber_send_csv_header( $f_name, $total, $heading = array(), $info = array() ) {
903
 
904
+ $fname = $f_name . '.csv';
905
 
906
+ //$fname = rawurlencode( $f_name ) . '.csv'; // encode non-ASCII symbols
907
+ //@ob_clean(); // This trick is crucial for some servers/environments (IIS)
908
+ //header( "Content-Type: application/octet-stream" );
909
+ //header( "Content-Disposition: attachment; filename*=UTF-8''{$fname}" );
910
+ crb_file_headers( $fname );
911
 
912
  $info[] = '"Generated by:","WP Cerber Security ' . CERBER_VER . '"';
913
  $info[] = '"Website:","' . get_option( 'blogname' ) . '"';
919
  foreach ( $heading as &$item ) {
920
  $item = '"' . str_replace( '"', '""', trim( $item ) ) . '"';
921
  }
922
+
923
  echo implode( ',', $heading ) . "\r\n";
924
 
925
  }
1169
  </div>
1170
 
1171
  <div class="crb-act-controls">
1172
+ [ <a href="#" class="crb-opener" data-target="crb-more-activity-fields">More</a> ]
1173
  </div>
1174
 
1175
  </div>
1379
  return '';
1380
  }
1381
 
1382
+ $ip_navs = '';
1383
+
1384
+ if ( $context == 'activity' ) {
1385
+ $ip_navs .= cerber_traffic_link( array( 'filter_ip' => $ip ) );
1386
+ }
1387
+ else {
1388
+ $ip_navs .= ' <a class="crb-button-tiny" href="' . cerber_admin_link( 'activity', array( 'filter_ip' => $ip ) ) . '">' . __( 'Check for activities', 'wp-cerber' ) . '</a>';
1389
+ }
1390
+
1391
+ $acl = cerber_acl_check( $ip );
1392
 
1393
  if ( $acl == 'W' ) {
1394
+ $ip_navs .= ' <span class="crb-color-green ip-info-label">' . __( 'White IP Access List', 'wp-cerber' ) . '</span> ';
1395
  }
1396
  elseif ( $acl == 'B' ) {
1397
+ $ip_navs .= ' <span class="crb-color-black ip-info-label">' . __( 'Black IP Access List', 'wp-cerber' ) . '</span> ';
1398
  }
1399
 
1400
  if ( cerber_block_check( $ip ) ) {
1401
+ $ip_navs .= ' <span class="color-blocked ip-info-label">' . __( 'Locked out', 'wp-cerber' ) . '</span> ';
 
 
 
 
 
 
 
1402
  }
1403
 
1404
  // Filter activity by ...
1415
  $abuse = '';
1416
  $network = '';
1417
  $network_info = '';
1418
+ $network_navs = '';
1419
 
1420
  if ( crb_get_settings( 'ip_extra' ) ) {
1421
  $ip_data = cerber_ip_whois_info( $ip );
1429
  $country = $ip_data['country'];
1430
  }
1431
  if ( ! empty( $ip_data['data']['abuse-mailbox'] ) ) {
1432
+ //$abuse = '<p>' . __( 'Abuse email:', 'wp-cerber' ) . ' <a href="mailto:' . $ip_data['data']['abuse-mailbox'] . '">' . $ip_data['data']['abuse-mailbox'] . '</a></p>';
1433
+ $abuse = __( 'Abuse email:', 'wp-cerber' ) . ' <a href="mailto:' . $ip_data['data']['abuse-mailbox'] . '">' . $ip_data['data']['abuse-mailbox'] . '</a>';
1434
  }
1435
  if ( ! empty( $ip_data['data']['network'] ) ) {
1436
+ $network = $ip_data['data']['network'];
1437
+ $range = cerber_any2range( $network );
1438
+ //$network_info = '<p>' . __( 'Network:', 'wp-cerber' ) . ' ' . $network . ' &nbsp; <a class="crb-button-tiny" href="' . cerber_admin_link( 'activity', array( 'filter_ip' => $range['range'] ) ) . '">' . __( 'Check for activities', 'wp-cerber' ) . '</a> ' . cerber_traffic_link( array( 'filter_ip' => $range['range'] ) );
1439
+ $network_info = __( 'Network:', 'wp-cerber' ) . ' ' . $network;
1440
+ $network_navs = '<a class="crb-button-tiny" href="' . cerber_admin_link( 'activity', array( 'filter_ip' => $range['range'] ) ) . '">' . __( 'Check for activities', 'wp-cerber' ) . '</a> ' . cerber_traffic_link( array( 'filter_ip' => $range['range'] ) );
1441
  }
1442
  }
1443
 
1463
  '</form>';
1464
  }
1465
 
1466
+ $ip_info = '<span id = "ip-address">' . $ip . '</span><span id = "ip-country">' . $country . '</span>';
1467
+
1468
  $ret = '<div class="crb-extra-info">
1469
+ <table>
1470
+ <tr><td id="crb_the_summary">
1471
+ <div><div>' . $ip_info . '</div><div>' . $ip_navs . '</div></div>
1472
+ <div><div>' . $network_info . '</div><div>' . $network_navs . '</div></div><p>' . $abuse . '</p></td><td>' . $form . '</td></tr>
1473
+ </table>
1474
+ </div>';
1475
 
1476
  return $ret . $whois;
1477
  }
1510
  $ret .= '<div>' . $avatar . '</div>';
1511
  }
1512
 
1513
+ $user_info = array();
1514
+
1515
  // Registered
1516
+ $reg = false;
1517
  $time = strtotime( cerber_db_get_var( "SELECT user_registered FROM {$wpdb->users} WHERE id = " . $user_id ) );
1518
  if ( $time ) {
1519
  $reg = cerber_auto_date( $time );
1524
  }
1525
  }
1526
  }
1527
+
1528
+ $user_info[] = array( __( 'Registered', 'wp-cerber' ), $reg );
1529
  }
1530
 
1531
+
1532
+ // Activated - BuddyPress
1533
  if ( $log = cerber_get_log( array( 200 ), array( 'id' => $user_id ) ) ) {
1534
+ $acted = $log[0];
1535
+ $activated = cerber_auto_date( $acted->stamp );
1536
  if ( $country = crb_country_html( null, $acted->ip ) ) {
1537
  $activated .= ' &nbsp; ' . $country;
1538
  }
1539
+
1540
+ $user_info[] = array( __( 'Activated', 'wp-cerber' ), $activated );
 
 
1541
  }
1542
 
1543
+
1544
  // Last seen
1545
  $seen = '';
1546
  $s1 = $wpdb->get_row( 'SELECT stamp,ip FROM ' . CERBER_TRAF_TABLE . ' WHERE user_id = ' . $user_id . ' ORDER BY stamp DESC LIMIT 1' );
1553
 
1554
  if ( $sn ) {
1555
  $seen = cerber_auto_date( $sn->stamp );
 
1556
  if ( $country = crb_country_html( null, $sn->ip ) ) {
1557
  $seen .= ' &nbsp; ' . $country;
1558
  }
1559
+
1560
+ $user_info[] = array( __( 'Last seen', 'wp-cerber' ), $seen );
1561
  }
1562
 
1563
+ if ( $usn = cerber_db_get_var( 'SELECT count(user_id) FROM ' . cerber_get_db_prefix() . CERBER_USS_TABLE . ' WHERE user_id = ' . $user_id ) ) {
1564
+ $user_info[] = array( __( 'Active sessions', 'wp-cerber' ), '<a href="' . cerber_admin_link( 'sessions', array( 'filter_user' => $user_id ) ) . '">' . $usn . '</a>');
1565
+ }
1566
 
1567
+ //$ret .= '<div>' . $name . '<p>' . __( 'Registered', 'wp-cerber' ) . ': ' . $reg . '</p>' . $seen . $activated . $sessions . '</div>';
1568
+
1569
+ $summary = '';
1570
+ foreach ( $user_info as $row ) {
1571
+ $summary .= '<div><div>' . implode( '</div><div>', $row ) . '</div></div>';
1572
+ }
1573
+
1574
+ $ret .= '<div id="crb_the_summary">' . $name . $summary . '</div>';
1575
 
1576
  if ( $context == 'activity' ) {
1577
  $link = cerber_traffic_link( array( 'filter_user' => $user_id ) );
2440
  $aside[] = '<a href="https://wpcerber.com/pro/" target="_blank"><img src="'.$crb_assets_url.'bn3ra.png" width="290" height="478"/></a>';
2441
 
2442
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2443
 
2444
  $aside[] = '<div class="crb-box" id = "crb-blog">
2445
  <div class="crb-box-inner">
2785
  crb_ajax_loader = '<?php echo $crb_ajax_loader; ?>';
2786
  crb_lab_available = <?php echo $crb_lab_available; ?>;
2787
 
2788
+ crb_admin_page = '<?php echo crb_admin_get_page(); ?>';
2789
+ crb_admin_tab = '<?php echo crb_admin_get_tab(); ?>';
2790
+
2791
  crb_scan_msg_steps = <?php echo json_encode( cerber_step_desc() ); ?>;
2792
  crb_scan_msg_issues = <?php echo json_encode( cerber_get_issue_label() ); ?>;
2793
  crb_scan_msg_risks = <?php echo json_encode( cerber_get_risk_label() ); ?>;
3520
 
3521
  function cerber_export_traffic( $params = array() ) {
3522
 
3523
+ crb_raise_limits( 512 );
3524
 
3525
  $args = array(
3526
  'per_page' => 0,
4843
  // Access Lists (ACL) ---------------------------------------------------------
4844
 
4845
  /**
4846
+ * @param string $ip
4847
+ * @param string $tag
4848
+ * @param string $comment
4849
+ * @param int $acl_slice
4850
  *
4851
  * @return bool|WP_Error
4852
  */
4853
  function cerber_acl_add( $ip, $tag, $comment = '', $acl_slice = 0 ) {
4854
  global $wpdb;
4855
 
4856
+ $ip = trim( $ip );
4857
+
4858
  $acl_slice = absint( $acl_slice );
4859
  $v6range = '';
4860
  $ver6 = 0;
4868
  list( $begin, $end, $v6range ) = crb_ipv6_prepare( $ip, $ip );
4869
  $ver6 = 1;
4870
  }
4871
+ elseif ( ( $range = cerber_any2range( $ip ) )
4872
+ && is_array( $range ) ) {
4873
  $ver6 = $range['IPV6'];
4874
  $begin = $range['begin'];
4875
  $end = $range['end'];
4895
  ), array( '%s', '%d', '%d', '%s', '%s', '%d', '%s', '%d' ) );
4896
 
4897
  if ( ! $result ) {
4898
+ return new WP_Error( 'acl_db_error', $wpdb->last_error );
4899
  }
4900
 
4901
  crb_event_handler( 'ip_event', array(
languages/wp-cerber-nl_NL.mo CHANGED
Binary file
languages/wp-cerber-nl_NL.po CHANGED
@@ -3451,145 +3451,146 @@ msgstr "Cookies"
3451
 
3452
  #: ../dashboard.php:71
3453
  msgid "Cerber anti-spam settings"
3454
- msgstr ""
3455
 
3456
  #: ../dashboard.php:71 ../settings.php:1106
3457
  msgid "Anti-spam"
3458
- msgstr ""
3459
 
3460
  #: ../dashboard.php:79 ../dashboard.php:79 ../cerber-addons.php:289
3461
  msgid "Add-ons"
3462
- msgstr ""
3463
 
3464
  #: ../dashboard.php:4602
3465
  msgid "Anti-spam and bot detection settings"
3466
- msgstr ""
3467
 
3468
  #: ../dashboard.php:4604
3469
  msgid "Anti-spam engine"
3470
- msgstr ""
3471
 
3472
  #: ../common.php:1425
3473
  msgid "Multiple erroneous requests"
3474
- msgstr ""
3475
 
3476
  #: ../admin/cerber-settings.php:347
3477
  msgid "%s retries are allowed within %s minutes"
3478
- msgstr ""
3479
 
3480
  #: ../admin/cerber-settings.php:353
3481
  msgid "%s registrations are allowed within %s minutes from one IP address"
3482
- msgstr ""
3483
 
3484
  #: ../admin/cerber-settings.php:376
3485
  msgid "Enable after %s failed login attempts in the last %s minutes"
3486
- msgstr ""
3487
 
3488
  #: ../settings.php:142
3489
  msgid "Limit"
3490
- msgstr ""
3491
 
3492
  #: ../settings.php:360
3493
  msgid "Restrict or completely block access to the WordPress REST API according to your needs"
3494
- msgstr ""
3495
 
3496
  #: ../settings.php:575
3497
  msgid "These features help your organization to be in compliance with personal data protection laws"
3498
- msgstr ""
3499
 
3500
  #: ../settings.php:633
3501
  msgid "if empty, the website administrator email %s will be used"
3502
- msgstr ""
3503
 
3504
  #: ../settings.php:637
3505
  msgid "notifications are allowed per hour (0 means unlimited)"
3506
- msgstr ""
3507
 
3508
  #: ../settings.php:649
3509
  msgid "Get notified instantly with mobile and desktop notifications"
3510
- msgstr ""
3511
 
3512
  #: ../settings.php:664
3513
  msgid "Weekly report is a summary of all activities and suspicious events occurred during the last seven days"
3514
- msgstr ""
3515
 
3516
  #: ../settings.php:677 ../settings.php:916
3517
  msgid "if empty, the email addresses from the notification settings will be used"
3518
- msgstr ""
3519
 
3520
  #: ../settings.php:689
3521
  msgid "Traffic Inspector is a context-aware web application firewall (WAF) that protects your website by recognizing and denying malicious HTTP requests"
3522
- msgstr ""
 
3523
 
3524
  #: ../settings.php:718
3525
  msgid "Block IP addresses that send excessive requests for non-existing pages or scan website for security breaches"
3526
- msgstr ""
3527
 
3528
  #: ../settings.php:737
3529
  msgid "Traffic Logging"
3530
- msgstr ""
3531
 
3532
  #: ../settings.php:738
3533
  msgid "Enable optional traffic logging if you need to monitor suspicious and malicious activity or solve security issues"
3534
- msgstr ""
3535
 
3536
  #: ../settings.php:802
3537
  msgid "The scanner monitors file changes, verifies the integrity of WordPress, plugins, and themes, and detects malware"
3538
- msgstr ""
3539
 
3540
  #: ../settings.php:824
3541
  msgid "Specify directories to exclude from scanning. One directory per line."
3542
- msgstr ""
3543
 
3544
  #: ../settings.php:868
3545
  msgid "The scanner automatically scans the website, removes malware and sends email reports with the results of a scan"
3546
- msgstr ""
3547
 
3548
  #: ../settings.php:885
3549
  msgid "Configure what issues to include in the email report and the condition for sending reports"
3550
- msgstr ""
3551
 
3552
  #: ../settings.php:927
3553
  msgid "These policies are automatically enforced at the end of every scheduled scan based on its results. All affected files are moved to the quarantine"
3554
- msgstr ""
3555
 
3556
  #: ../settings.php:993
3557
  msgid "Cerber anti-spam engine"
3558
- msgstr ""
3559
 
3560
  #: ../settings.php:994
3561
  msgid "Spam protection for comment, registration and contact forms on a website"
3562
- msgstr ""
3563
 
3564
  #: ../settings.php:1015
3565
  msgid "Adjust anti-spam engine"
3566
- msgstr ""
3567
 
3568
  #: ../settings.php:1016
3569
  msgid "These settings enable you to fine-tune the behavior of anti-spam algorithms and avoid false positives"
3570
- msgstr ""
3571
 
3572
  #: ../settings.php:1040
3573
  msgid "How the plugin processes comments submitted through the standard comment form"
3574
- msgstr ""
3575
 
3576
  #: ../nexus/cerber-nexus-slave.php:451
3577
  msgid "Settings updated"
3578
- msgstr ""
3579
 
3580
  #: ../dashboard.php:1151
3581
  msgid "Request ID"
3582
- msgstr ""
3583
 
3584
  #: ../dashboard.php:1152
3585
  msgid "Search in URL"
3586
- msgstr ""
3587
 
3588
  #: ../settings.php:831 ../settings.php:840
3589
  msgid "Executable files"
3590
- msgstr ""
3591
 
3592
  #: ../settings.php:832 ../settings.php:841
3593
  msgid "All files"
3594
- msgstr ""
3595
 
3451
 
3452
  #: ../dashboard.php:71
3453
  msgid "Cerber anti-spam settings"
3454
+ msgstr "Cerber anti-spam-instellingen"
3455
 
3456
  #: ../dashboard.php:71 ../settings.php:1106
3457
  msgid "Anti-spam"
3458
+ msgstr "Anti-spam"
3459
 
3460
  #: ../dashboard.php:79 ../dashboard.php:79 ../cerber-addons.php:289
3461
  msgid "Add-ons"
3462
+ msgstr "Add-ons"
3463
 
3464
  #: ../dashboard.php:4602
3465
  msgid "Anti-spam and bot detection settings"
3466
+ msgstr "Anti-spam- en botdetectie-instellingen"
3467
 
3468
  #: ../dashboard.php:4604
3469
  msgid "Anti-spam engine"
3470
+ msgstr "Anti-spamroutine"
3471
 
3472
  #: ../common.php:1425
3473
  msgid "Multiple erroneous requests"
3474
+ msgstr "Meervoudige foutieve verzoeken"
3475
 
3476
  #: ../admin/cerber-settings.php:347
3477
  msgid "%s retries are allowed within %s minutes"
3478
+ msgstr "%s herkansingen in %s minuten toegestaan"
3479
 
3480
  #: ../admin/cerber-settings.php:353
3481
  msgid "%s registrations are allowed within %s minutes from one IP address"
3482
+ msgstr "%s registraties binnen %s minuten vanaf één IP-adres toegestaan"
3483
 
3484
  #: ../admin/cerber-settings.php:376
3485
  msgid "Enable after %s failed login attempts in the last %s minutes"
3486
+ msgstr "Aanzetten na %s gefaalde inlogpogingen in de afgelopen %s minuten"
3487
 
3488
  #: ../settings.php:142
3489
  msgid "Limit"
3490
+ msgstr "Limiet"
3491
 
3492
  #: ../settings.php:360
3493
  msgid "Restrict or completely block access to the WordPress REST API according to your needs"
3494
+ msgstr "Naar behoefte toegang tot de WordPress REST API beperken of blokkeren"
3495
 
3496
  #: ../settings.php:575
3497
  msgid "These features help your organization to be in compliance with personal data protection laws"
3498
+ msgstr "Deze functies helpen u de privacywetgeving na te leven"
3499
 
3500
  #: ../settings.php:633
3501
  msgid "if empty, the website administrator email %s will be used"
3502
+ msgstr "indien leeg, wordt de email %s van de sitebeheerder gebruikt"
3503
 
3504
  #: ../settings.php:637
3505
  msgid "notifications are allowed per hour (0 means unlimited)"
3506
+ msgstr "meldingen per uur toegestaan (0 = onbeperkt)"
3507
 
3508
  #: ../settings.php:649
3509
  msgid "Get notified instantly with mobile and desktop notifications"
3510
+ msgstr "Meteen op de hoogte met desktop- en mobiele meldingen"
3511
 
3512
  #: ../settings.php:664
3513
  msgid "Weekly report is a summary of all activities and suspicious events occurred during the last seven days"
3514
+ msgstr "Het weekrapport is een overzicht van activiteiten en verdachte gebeurtenissen van de afgelopen zeven dagen"
3515
 
3516
  #: ../settings.php:677 ../settings.php:916
3517
  msgid "if empty, the email addresses from the notification settings will be used"
3518
+ msgstr "indien leeg, worden de mailadressen voor meldingen gebruikt"
3519
 
3520
  #: ../settings.php:689
3521
  msgid "Traffic Inspector is a context-aware web application firewall (WAF) that protects your website by recognizing and denying malicious HTTP requests"
3522
+ msgstr "VerkeerInspectie beschermt als contextuele WebApplicatie Firewall (WAF) de website door kwaadaardige HTTP-verzoeken te herkennen en te weigeren\n"
3523
+ ""
3524
 
3525
  #: ../settings.php:718
3526
  msgid "Block IP addresses that send excessive requests for non-existing pages or scan website for security breaches"
3527
+ msgstr "Blokkeer IP-adressen die extreem veel niet-bestaande pagina's opvragen of die scannen voor beveiligingslekken"
3528
 
3529
  #: ../settings.php:737
3530
  msgid "Traffic Logging"
3531
+ msgstr "Verkeer Loggen"
3532
 
3533
  #: ../settings.php:738
3534
  msgid "Enable optional traffic logging if you need to monitor suspicious and malicious activity or solve security issues"
3535
+ msgstr "Ga het verkeer loggen als je verdachte of kwaadaardige activiteiten wilt volgen, of beveiligingsproblemen wilt oplossen"
3536
 
3537
  #: ../settings.php:802
3538
  msgid "The scanner monitors file changes, verifies the integrity of WordPress, plugins, and themes, and detects malware"
3539
+ msgstr "De scanner ziet bestandswijzigingen, controleert de integriteit van WordPress, plugins en thema's, en detecteert malware"
3540
 
3541
  #: ../settings.php:824
3542
  msgid "Specify directories to exclude from scanning. One directory per line."
3543
+ msgstr "Stel de mappen in die niet gescand worden. Eén map per regel."
3544
 
3545
  #: ../settings.php:868
3546
  msgid "The scanner automatically scans the website, removes malware and sends email reports with the results of a scan"
3547
+ msgstr "De scanner scant de site automatisch, verwijdert malware en mailt de resultaten van de scan"
3548
 
3549
  #: ../settings.php:885
3550
  msgid "Configure what issues to include in the email report and the condition for sending reports"
3551
+ msgstr "Instellen wat deel moet uitmaken van de email-rapportage, en waarom deze verzonden wordt"
3552
 
3553
  #: ../settings.php:927
3554
  msgid "These policies are automatically enforced at the end of every scheduled scan based on its results. All affected files are moved to the quarantine"
3555
+ msgstr "Deze maatregelen worden automatisch toegepast na elke scan, afhankelijk van de scan-resultaten. Getroffen bestanden gaan naar quarantaine"
3556
 
3557
  #: ../settings.php:993
3558
  msgid "Cerber anti-spam engine"
3559
+ msgstr "Cerber anti-spam-routines"
3560
 
3561
  #: ../settings.php:994
3562
  msgid "Spam protection for comment, registration and contact forms on a website"
3563
+ msgstr "Spambescherming voor registratie-, opmerkingen- en contactformulieren op de site"
3564
 
3565
  #: ../settings.php:1015
3566
  msgid "Adjust anti-spam engine"
3567
+ msgstr "Anti-spam-routine instellen"
3568
 
3569
  #: ../settings.php:1016
3570
  msgid "These settings enable you to fine-tune the behavior of anti-spam algorithms and avoid false positives"
3571
+ msgstr "Met deze instellingen stel je de anti-spam algoritmes precies in, en voorkom je valse meldingen"
3572
 
3573
  #: ../settings.php:1040
3574
  msgid "How the plugin processes comments submitted through the standard comment form"
3575
+ msgstr "Hoe de plugin opmerkingen verwerkt die binnenkomen via het opmerkingenformulier"
3576
 
3577
  #: ../nexus/cerber-nexus-slave.php:451
3578
  msgid "Settings updated"
3579
+ msgstr "Instellingen aangepast"
3580
 
3581
  #: ../dashboard.php:1151
3582
  msgid "Request ID"
3583
+ msgstr "ID van verzoek"
3584
 
3585
  #: ../dashboard.php:1152
3586
  msgid "Search in URL"
3587
+ msgstr "Zoek in URL"
3588
 
3589
  #: ../settings.php:831 ../settings.php:840
3590
  msgid "Executable files"
3591
+ msgstr "Uitvoerbare bestanden"
3592
 
3593
  #: ../settings.php:832 ../settings.php:841
3594
  msgid "All files"
3595
+ msgstr "Alle bestanden"
3596
 
languages/wp-cerber-sv_SE.mo CHANGED
Binary file
languages/wp-cerber-sv_SE.po CHANGED
@@ -3504,7 +3504,7 @@ msgstr "Bli aviserad omedelbart med aviseringar på mobil och stationär dator"
3504
 
3505
  #: ../settings.php:664
3506
  msgid "Weekly report is a summary of all activities and suspicious events occurred during the last seven days"
3507
- msgstr ""
3508
 
3509
  #: ../settings.php:677 ../settings.php:916
3510
  msgid "if empty, the email addresses from the notification settings will be used"
@@ -3576,7 +3576,7 @@ msgstr ""
3576
 
3577
  #: ../dashboard.php:1152
3578
  msgid "Search in URL"
3579
- msgstr ""
3580
 
3581
  #: ../settings.php:831 ../settings.php:840
3582
  msgid "Executable files"
@@ -3584,5 +3584,5 @@ msgstr ""
3584
 
3585
  #: ../settings.php:832 ../settings.php:841
3586
  msgid "All files"
3587
- msgstr ""
3588
 
3504
 
3505
  #: ../settings.php:664
3506
  msgid "Weekly report is a summary of all activities and suspicious events occurred during the last seven days"
3507
+ msgstr "Veckorapport är en sammanfattning av alla aktiviteter och misstänkta händelser inträffade under de senaste sju dagarna"
3508
 
3509
  #: ../settings.php:677 ../settings.php:916
3510
  msgid "if empty, the email addresses from the notification settings will be used"
3576
 
3577
  #: ../dashboard.php:1152
3578
  msgid "Search in URL"
3579
+ msgstr "Sök i URL"
3580
 
3581
  #: ../settings.php:831 ../settings.php:840
3582
  msgid "Executable files"
3584
 
3585
  #: ../settings.php:832 ../settings.php:841
3586
  msgid "All files"
3587
+ msgstr "Alla filer"
3588
 
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: Wed Apr 01 2020 14:56:11 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:1778 ../dashboard.php:2681 ../dashboard.
32
- #: php:4556
33
  msgid "Dashboard"
34
  msgstr ""
35
 
@@ -37,7 +37,7 @@ msgstr ""
37
  msgid "Cerber Traffic Inspector"
38
  msgstr ""
39
 
40
- #: ../dashboard.php:56 ../dashboard.php:1741 ../dashboard.php:4622
41
  msgid "Traffic Inspector"
42
  msgstr ""
43
 
@@ -53,7 +53,7 @@ msgstr ""
53
  msgid "Cerber Security Rules"
54
  msgstr ""
55
 
56
- #: ../dashboard.php:61 ../dashboard.php:4668
57
  msgid "Security Rules"
58
  msgstr ""
59
 
@@ -61,11 +61,11 @@ msgstr ""
61
  msgid "Cerber User Security"
62
  msgstr ""
63
 
64
- #: ../dashboard.php:64 ../dashboard.php:4648
65
  msgid "User Policies"
66
  msgstr ""
67
 
68
- #: ../dashboard.php:67 ../dashboard.php:4683
69
  msgid "Site Integrity"
70
  msgstr ""
71
 
@@ -73,7 +73,7 @@ msgstr ""
73
  msgid "Cerber anti-spam settings"
74
  msgstr ""
75
 
76
- #: ../dashboard.php:71 ../settings.php:1106
77
  msgid "Anti-spam"
78
  msgstr ""
79
 
@@ -85,762 +85,766 @@ msgstr ""
85
  msgid "Cerber tools"
86
  msgstr ""
87
 
88
- #: ../dashboard.php:82 ../dashboard.php:4718
89
  msgid "Tools"
90
  msgstr ""
91
 
92
- #: ../dashboard.php:186 ../dashboard.php:302
93
  msgid "Remove"
94
  msgstr ""
95
 
96
- #: ../dashboard.php:191 ../cerber-load.php:4832
97
  msgid "IP"
98
  msgstr ""
99
 
100
- #: ../dashboard.php:192 ../dashboard.php:1080
101
  msgid "Hostname"
102
  msgstr ""
103
 
104
- #: ../dashboard.php:193 ../dashboard.php:1081
105
  msgid "Country"
106
  msgstr ""
107
 
108
- #: ../dashboard.php:194 ../cerber-users.php:972
109
  msgid "Expires"
110
  msgstr ""
111
 
112
- #: ../dashboard.php:195 ../cerber-load.php:4129
113
  msgid "Reason"
114
  msgstr ""
115
 
116
- #: ../dashboard.php:196 ../cerber-users.php:975 ../cerber-scanner.php:5768 ..
117
- #: /cerber-scanner.php:5916
118
  msgid "Action"
119
  msgstr ""
120
 
121
- #: ../dashboard.php:212
122
  #, php-format
123
  msgid "Showing last %d records from %d"
124
  msgstr ""
125
 
126
- #: ../dashboard.php:214
127
  msgid "Hint"
128
  msgstr ""
129
 
130
- #: ../dashboard.php:214
131
  msgid "To view activity, click on the IP"
132
  msgstr ""
133
 
134
- #: ../dashboard.php:218
135
  msgid "No lockouts at the moment. The sky is clear."
136
  msgstr ""
137
 
138
- #: ../dashboard.php:250 ../dashboard.php:1341 ../dashboard.php:1378 ../dashboard.
139
- #: php:1736 ../dashboard.php:3754 ../cerber-load.php:5119
140
  msgid "White IP Access List"
141
  msgstr ""
142
 
143
- #: ../dashboard.php:253 ../dashboard.php:1344 ../dashboard.php:1381 ../dashboard.
144
- #: php:1737 ../dashboard.php:3757
145
  msgid "Black IP Access List"
146
  msgstr ""
147
 
148
- #: ../dashboard.php:260
149
  msgid "Your IP"
150
  msgstr ""
151
 
152
- #: ../dashboard.php:298 ../dashboard.php:1392 ../dashboard.php:1427 ../dashboard.
153
- #: php:1550
154
  msgid "Check for activities"
155
  msgstr ""
156
 
157
- #: ../dashboard.php:308
158
  msgid "List is empty"
159
  msgstr ""
160
 
161
- #: ../dashboard.php:314
162
  msgid "IP address, range, wildcard, or CIDR"
163
  msgstr ""
164
 
165
- #: ../dashboard.php:315
166
  msgid "Add Entry"
167
  msgstr ""
168
 
169
- #: ../dashboard.php:316
170
  msgid "Optional comment for this entry"
171
  msgstr ""
172
 
173
- #: ../dashboard.php:338
174
  msgid "You cannot add your IP address or network"
175
  msgstr ""
176
 
177
- #: ../dashboard.php:342
178
  #, php-format
179
  msgid "IP address %s has been added to Black IP Access List"
180
  msgstr ""
181
 
182
- #: ../dashboard.php:345
183
  #, php-format
184
  msgid "IP address %s has been added to White IP Access List"
185
  msgstr ""
186
 
187
- #: ../dashboard.php:427 ../dashboard.php:3662 ../whois.php:222 ../whois.php:253 ..
188
- #: /common.php:1438 ../common.php:1822 ../common.php:1887 ../nexus/cerber-slave-
189
  #: list.php:330
190
  msgid "Unknown"
191
  msgstr ""
192
 
193
- #: ../dashboard.php:500
194
  msgid "unknown"
195
  msgstr ""
196
 
197
- #: ../dashboard.php:563
198
  #, php-format
199
  msgid "Lockout for %s was removed"
200
  msgstr ""
201
 
202
- #: ../dashboard.php:571
203
  msgid "Email has been sent to"
204
  msgstr ""
205
 
206
- #: ../dashboard.php:574
207
  msgid "Unable to send email to"
208
  msgstr ""
209
 
210
- #: ../dashboard.php:629
211
  msgid "Default settings have been loaded"
212
  msgstr ""
213
 
214
- #: ../dashboard.php:833 ../dashboard.php:1079 ../dashboard.php:3976 ../cerber-
215
- #: users.php:973
216
  msgid "IP Address"
217
  msgstr ""
218
 
219
- #: ../dashboard.php:834 ../dashboard.php:1082 ../dashboard.php:3550 ../dashboard.
220
- #: php:3974
221
  msgid "Date"
222
  msgstr ""
223
 
224
- #: ../dashboard.php:835 ../dashboard.php:1083
225
  msgid "Event"
226
  msgstr ""
227
 
228
- #: ../dashboard.php:836
229
  msgid "Additional Details"
230
  msgstr ""
231
 
232
- #: ../dashboard.php:837 ../dashboard.php:1084 ../dashboard.php:3979
233
  msgid "Local User"
234
  msgstr ""
235
 
236
- #: ../dashboard.php:838
237
  msgid "User login"
238
  msgstr ""
239
 
240
- #: ../dashboard.php:839 ../dashboard.php:3555
241
  msgid "User ID"
242
  msgstr ""
243
 
244
- #: ../dashboard.php:840 ../dashboard.php:1085
245
  msgid "Username"
246
  msgstr ""
247
 
248
- #: ../dashboard.php:931 ../dashboard.php:2341
249
  msgid "View all"
250
  msgstr ""
251
 
252
- #: ../dashboard.php:942
253
  msgid "New users"
254
  msgstr ""
255
 
256
- #: ../dashboard.php:948 ../dashboard.php:4005
257
  msgid "Suspicious activity"
258
  msgstr ""
259
 
260
- #: ../dashboard.php:950 ../common.php:1301
261
  msgid "IP blocked"
262
  msgstr ""
263
 
264
- #: ../dashboard.php:952 ../dashboard.php:1734 ../dashboard.php:4007 ../settings.
265
- #: php:374 ../settings.php:1024
266
  msgid "Logged in users"
267
  msgstr ""
268
 
269
- #: ../dashboard.php:953 ../dashboard.php:4008
270
  msgid "Not logged in visitors"
271
  msgstr ""
272
 
273
- #: ../dashboard.php:955
274
  msgid "My activity"
275
  msgstr ""
276
 
277
- #: ../dashboard.php:1107 ../dashboard.php:4039
278
  msgid "Export"
279
  msgstr ""
280
 
281
- #: ../dashboard.php:1112
282
  msgid "No activity has been logged."
283
  msgstr ""
284
 
285
- #: ../dashboard.php:1147
286
  msgid "Filter by registered user"
287
  msgstr ""
288
 
289
- #: ../dashboard.php:1148
290
  msgid "Search for IP or username"
291
  msgstr ""
292
 
293
- #: ../dashboard.php:1151
294
  msgid "Request ID"
295
  msgstr ""
296
 
297
- #: ../dashboard.php:1152
298
  msgid "Search in URL"
299
  msgstr ""
300
 
301
- #: ../dashboard.php:1159
302
  msgid "Filter"
303
  msgstr ""
304
 
305
- #: ../dashboard.php:1349 ../dashboard.php:1385 ../dashboard.php:3762 ../common.
306
- #: php:1359
307
  msgid "Locked out"
308
  msgstr ""
309
 
310
- #: ../dashboard.php:1422
311
  msgid "Abuse email:"
312
  msgstr ""
313
 
314
- #: ../dashboard.php:1427
315
  msgid "Network:"
316
  msgstr ""
317
 
318
- #: ../dashboard.php:1441
319
  msgid "Add network to the Black List"
320
  msgstr ""
321
 
322
- #: ../dashboard.php:1447
323
  msgid "Add IP to the Black List"
324
  msgstr ""
325
 
326
- #: ../dashboard.php:1512
 
 
 
 
327
  msgid "Activated"
328
  msgstr ""
329
 
330
- #: ../dashboard.php:1534
331
  msgid "Last seen"
332
  msgstr ""
333
 
334
- #: ../dashboard.php:1544 ../dashboard.php:1588
335
- msgid "Registered"
336
  msgstr ""
337
 
338
- #: ../dashboard.php:1585
339
  msgid "Comments"
340
  msgstr ""
341
 
342
- #: ../dashboard.php:1586
343
  msgid "Last login"
344
  msgstr ""
345
 
346
- #: ../dashboard.php:1587
347
  msgid "Failed login attempts"
348
  msgstr ""
349
 
350
- #: ../dashboard.php:1619 ../dashboard.php:1710 ../dashboard.php:1759 ../common.
351
- #: php:1575 ../nexus/cerber-slave-list.php:344
352
  msgid "Never"
353
  msgstr ""
354
 
355
- #: ../dashboard.php:1658 ../cerber-users.php:52 ../cerber-users.php:1106
356
  msgid "You"
357
  msgstr ""
358
 
359
- #: ../dashboard.php:1676
360
  msgid "Cerber Quick View"
361
  msgstr ""
362
 
363
- #: ../dashboard.php:1715 ../dashboard.php:1745
364
  msgid "active"
365
  msgstr ""
366
 
367
- #: ../dashboard.php:1715
368
  msgid "deactivate"
369
  msgstr ""
370
 
371
- #: ../dashboard.php:1719
372
  msgid "not active"
373
  msgstr ""
374
 
375
- #: ../dashboard.php:1722 ../dashboard.php:1740
376
  msgid "disabled"
377
  msgstr ""
378
 
379
- #: ../dashboard.php:1728
380
  msgid "failed attempts"
381
  msgstr ""
382
 
383
- #: ../dashboard.php:1728 ../dashboard.php:1729
384
  msgid "in 24 hours"
385
  msgstr ""
386
 
387
- #: ../dashboard.php:1728 ../dashboard.php:1729
388
  msgid "view all"
389
  msgstr ""
390
 
391
- #: ../dashboard.php:1729
392
  msgid "lockouts"
393
  msgstr ""
394
 
395
- #: ../dashboard.php:1731
396
  msgid "Lockouts at the moment"
397
  msgstr ""
398
 
399
- #: ../dashboard.php:1732
400
  msgid "Last lockout"
401
  msgstr ""
402
 
403
- #: ../dashboard.php:1734
404
  msgid "user"
405
  msgid_plural "users"
406
  msgstr[0] ""
407
  msgstr[1] ""
408
 
409
- #: ../dashboard.php:1736 ../dashboard.php:1737 ../dashboard.php:2663
410
  msgid "entry"
411
  msgid_plural "entries"
412
  msgstr[0] ""
413
  msgstr[1] ""
414
 
415
- #: ../dashboard.php:1738 ../settings.php:233
416
  msgid "Citadel mode"
417
  msgstr ""
418
 
419
- #: ../dashboard.php:1740
420
  msgid "enabled"
421
  msgstr ""
422
 
423
- #: ../dashboard.php:1745
424
  msgid "no connection"
425
  msgstr ""
426
 
427
- #: ../dashboard.php:1762
428
  msgctxt "Example: Last malware scan: 23 Jan 2018"
429
  msgid "Last malware scan"
430
  msgstr ""
431
 
432
- #: ../dashboard.php:1765 ../dashboard.php:1767 ../cerber-users.php:20 ../cerber-
433
- #: users.php:445 ../settings.php:696 ../settings.php:724 ../settings.php:830 ..
434
- #: /settings.php:839 ../settings.php:1178 ../cerber-scanner.php:1622
435
  msgid "Disabled"
436
  msgstr ""
437
 
438
- #: ../dashboard.php:1766 ../cerber-scanner.php:1065
439
  msgid "Quick Scan"
440
  msgstr ""
441
 
442
- #: ../dashboard.php:1768 ../cerber-scanner.php:1065
443
  msgid "Full Scan"
444
  msgstr ""
445
 
446
- #: ../dashboard.php:1779 ../dashboard.php:2327 ../dashboard.php:4557 ../cerber-
447
- #: load.php:4823 ../cerber-users.php:1139 ../settings.php:266
448
  msgid "Activity"
449
  msgstr ""
450
 
451
- #: ../dashboard.php:1780 ../cerber-users.php:1140
452
  msgid "Traffic"
453
  msgstr ""
454
 
455
- #: ../dashboard.php:1781
456
  msgid "Integrity"
457
  msgstr ""
458
 
459
- #: ../dashboard.php:1784
460
  msgid "A new version is available"
461
  msgstr ""
462
 
463
- #: ../dashboard.php:2144 ../settings.php:220
464
  msgid "My site is behind a reverse proxy"
465
  msgstr ""
466
 
467
- #: ../dashboard.php:2320
468
  msgid "in the last 24 hours"
469
  msgstr ""
470
 
471
- #: ../dashboard.php:2344
472
  msgid "Recently locked out IP addresses"
473
  msgstr ""
474
 
475
- #: ../dashboard.php:2368
476
  msgid "Confused about some settings?"
477
  msgstr ""
478
 
479
- #: ../dashboard.php:2369
480
  msgid "You can easily load default recommended settings using button below"
481
  msgstr ""
482
 
483
- #: ../dashboard.php:2371
484
  msgid "Load default settings"
485
  msgstr ""
486
 
487
- #: ../dashboard.php:2373 ../dashboard.php:5025 ../cerber-scanner.php:5739 ..
488
- #: /cerber-scanner.php:5900
489
  msgid "Are you sure?"
490
  msgstr ""
491
 
492
- #: ../dashboard.php:2379
493
  msgid "doesn't affect Custom login URL and Access Lists"
494
  msgstr ""
495
 
496
- #: ../dashboard.php:2380 ../cerber-load.php:4161 ../cerber-load.php:5121
497
  msgid "Getting Started Guide"
498
  msgstr ""
499
 
500
- #: ../dashboard.php:2483
501
  msgid "Attention! Citadel mode is now active. Nobody is able to log in."
502
  msgstr ""
503
 
504
- #: ../dashboard.php:2484
505
  msgid "Deactivate"
506
  msgstr ""
507
 
508
- #: ../dashboard.php:2485 ../dashboard.php:2872
509
  msgid "View Activity"
510
  msgstr ""
511
 
512
- #: ../dashboard.php:2500
513
  msgid "Settings saved"
514
  msgstr ""
515
 
516
- #: ../dashboard.php:2571
517
  msgid "Create Alert"
518
  msgstr ""
519
 
520
- #: ../dashboard.php:2575
521
  msgid "Delete Alert"
522
  msgstr ""
523
 
524
- #: ../dashboard.php:2608
525
  msgid "The alert has been created"
526
  msgstr ""
527
 
528
- #: ../dashboard.php:2612
529
  msgid "The alert has been deleted"
530
  msgstr ""
531
 
532
- #: ../dashboard.php:2682
533
  msgid "Main settings"
534
  msgstr ""
535
 
536
- #: ../dashboard.php:2791
537
  msgid "Are you sure you want to delete selected files?"
538
  msgstr ""
539
 
540
- #: ../dashboard.php:2792
541
  msgid "These files have been moved to the quarantine"
542
  msgstr ""
543
 
544
- #: ../dashboard.php:2795
545
  msgid "Do you want to add selected files to the ignore list?"
546
  msgstr ""
547
 
548
- #: ../dashboard.php:2796
549
  msgid "These files have been added to the ignore list"
550
  msgstr ""
551
 
552
- #: ../dashboard.php:2798
553
  msgid "Some errors occurred"
554
  msgstr ""
555
 
556
- #: ../dashboard.php:2799
557
  msgid "All files have been processed"
558
  msgstr ""
559
 
560
- #: ../dashboard.php:3135 ../admin/cerber-settings.php:599
561
  msgid "Save Changes"
562
  msgstr ""
563
 
564
- #: ../dashboard.php:3207
565
  msgid "Role-based rules are configured"
566
  msgstr ""
567
 
568
- #: ../dashboard.php:3257
569
  msgid "Start typing here to find a country"
570
  msgstr ""
571
 
572
- #: ../dashboard.php:3264
573
  msgid "Save all rules"
574
  msgstr ""
575
 
576
- #: ../dashboard.php:3277
577
  #, php-format
578
  msgid "Permitted for one country"
579
  msgid_plural "Permitted for %d countries"
580
  msgstr[0] ""
581
  msgstr[1] ""
582
 
583
- #: ../dashboard.php:3280
584
  #, php-format
585
  msgid "Not permitted for one country"
586
  msgid_plural "Not permitted for %d countries"
587
  msgstr[0] ""
588
  msgstr[1] ""
589
 
590
- #: ../dashboard.php:3288
591
  msgid "No rule"
592
  msgstr ""
593
 
594
- #: ../dashboard.php:3289
595
  msgid "Any country is permitted"
596
  msgstr ""
597
 
598
- #: ../dashboard.php:3372
599
  msgid "Click on a country name to add it to the list of selected countries"
600
  msgstr ""
601
 
602
- #: ../dashboard.php:3376
603
  #, php-format
604
  msgctxt "to is a marker of infinitive, e.g. \"to use it\""
605
  msgid "Selected countries are permitted to %s, other countries are not permitted to"
606
  msgstr ""
607
 
608
- #: ../dashboard.php:3379
609
  #, php-format
610
  msgctxt "to is a marker of infinitive, e.g. \"to use it\""
611
  msgid "Selected countries are not permitted to %s, other countries are permitted to"
612
  msgstr ""
613
 
614
- #: ../dashboard.php:3399
615
  msgid "Log in to the website"
616
  msgstr ""
617
 
618
- #: ../dashboard.php:3401
619
  msgid "All Users"
620
  msgstr ""
621
 
622
- #: ../dashboard.php:3403
623
  msgid "Register on the website"
624
  msgstr ""
625
 
626
- #: ../dashboard.php:3404
627
  msgid "Submit forms"
628
  msgstr ""
629
 
630
- #: ../dashboard.php:3405
631
  msgid "Post comments"
632
  msgstr ""
633
 
634
- #: ../dashboard.php:3406
635
  msgid "Use XML-RPC"
636
  msgstr ""
637
 
638
- #: ../dashboard.php:3407
639
  msgid "Use REST API"
640
  msgstr ""
641
 
642
- #: ../dashboard.php:3449
643
  msgid "Security rules have been updated"
644
  msgstr ""
645
 
646
- #: ../dashboard.php:3549
647
  msgid "IP address"
648
  msgstr ""
649
 
650
- #: ../dashboard.php:3556
651
  msgid "Page generation time"
652
  msgstr ""
653
 
654
- #: ../dashboard.php:3975
655
  msgid "Request"
656
  msgstr ""
657
 
658
- #: ../dashboard.php:3977 ../cerber-users.php:974
659
  msgid "Host Info"
660
  msgstr ""
661
 
662
- #: ../dashboard.php:3978
663
  msgid "User Agent"
664
  msgstr ""
665
 
666
- #: ../dashboard.php:3995
667
  msgid "No requests have been logged."
668
  msgstr ""
669
 
670
- #: ../dashboard.php:4003
671
  msgid "All requests"
672
  msgstr ""
673
 
674
- #: ../dashboard.php:4006
675
  msgid "Errors"
676
  msgstr ""
677
 
678
- #: ../dashboard.php:4011
679
  msgid "Form submissions"
680
  msgstr ""
681
 
682
- #: ../dashboard.php:4013
683
  msgid "Page Not Found"
684
  msgstr ""
685
 
686
- #: ../dashboard.php:4022
687
  msgid "Longer than"
688
  msgstr ""
689
 
690
- #: ../dashboard.php:4032
691
  msgid "Advanced Search"
692
  msgstr ""
693
 
694
- #: ../dashboard.php:4045
695
  msgid "Refresh"
696
  msgstr ""
697
 
698
- #: ../dashboard.php:4558
699
  msgid "Sessions"
700
  msgstr ""
701
 
702
- #: ../dashboard.php:4559
703
  msgid "Lockouts"
704
  msgstr ""
705
 
706
- #: ../dashboard.php:4560
707
  msgid "Main Settings"
708
  msgstr ""
709
 
710
- #: ../dashboard.php:4561 ../cerber-tools.php:38 ../cerber-tools.php:47
711
  msgid "Access Lists"
712
  msgstr ""
713
 
714
- #: ../dashboard.php:4562
715
  msgid "Hardening"
716
  msgstr ""
717
 
718
- #: ../dashboard.php:4564 ../settings.php:254
719
  msgid "Notifications"
720
  msgstr ""
721
 
722
- #: ../dashboard.php:4602
723
  msgid "Anti-spam and bot detection settings"
724
  msgstr ""
725
 
726
- #: ../dashboard.php:4604
727
  msgid "Anti-spam engine"
728
  msgstr ""
729
 
730
- #: ../dashboard.php:4624
731
  msgid "Live Traffic"
732
  msgstr ""
733
 
734
- #: ../dashboard.php:4625 ../dashboard.php:4686 ../cerber-tools.php:37 ../cerber-
735
- #: tools.php:46 ../nexus/cerber-nexus.php:93
736
  msgid "Settings"
737
  msgstr ""
738
 
739
- #: ../dashboard.php:4638
740
  msgid "Data Shield Policies"
741
  msgstr ""
742
 
743
- #: ../dashboard.php:4640
744
  msgid "Accounts & Roles"
745
  msgstr ""
746
 
747
- #: ../dashboard.php:4641
748
  msgid "Site Settings"
749
  msgstr ""
750
 
751
- #: ../dashboard.php:4650
752
  msgid "Role-based"
753
  msgstr ""
754
 
755
- #: ../dashboard.php:4651
756
  msgid "Global"
757
  msgstr ""
758
 
759
- #: ../dashboard.php:4670
760
  msgid "Countries"
761
  msgstr ""
762
 
763
- #: ../dashboard.php:4685
764
  msgid "Security Scanner"
765
  msgstr ""
766
 
767
- #: ../dashboard.php:4687
768
  msgid "Scheduling"
769
  msgstr ""
770
 
771
- #: ../dashboard.php:4688
772
  msgid "Cleaning up"
773
  msgstr ""
774
 
775
- #: ../dashboard.php:4689
776
  msgid "Ignore List"
777
  msgstr ""
778
 
779
- #: ../dashboard.php:4690
780
  msgid "Quarantine"
781
  msgstr ""
782
 
783
- #: ../dashboard.php:4720
784
  msgid "Export & Import"
785
  msgstr ""
786
 
787
- #: ../dashboard.php:4721
788
  msgid "Diagnostic"
789
  msgstr ""
790
 
791
- #: ../dashboard.php:4722
792
  msgid "Log"
793
  msgstr ""
794
 
795
- #: ../dashboard.php:4723
796
  msgid "Changelog"
797
  msgstr ""
798
 
799
- #: ../dashboard.php:4724
800
  msgid "License"
801
  msgstr ""
802
 
803
- #: ../dashboard.php:4825
804
  msgid "Help"
805
  msgstr ""
806
 
807
- #: ../dashboard.php:4871
808
  msgid "Incorrect IP address or IP range"
809
  msgstr ""
810
 
811
- #: ../dashboard.php:4875
812
  msgid "The IP address you are trying to add is already in the list"
813
  msgstr ""
814
 
815
- #: ../dashboard.php:5010
816
  msgid "These features are available in a professional version of the plugin."
817
  msgstr ""
818
 
819
- #: ../dashboard.php:5011
820
  msgid "Know more about all advantages at"
821
  msgstr ""
822
 
823
- #: ../dashboard.php:5046
824
  msgid "Log In"
825
  msgstr ""
826
 
827
- #: ../dashboard.php:5047
828
  msgid "Log Out"
829
  msgstr ""
830
 
831
- #: ../dashboard.php:5048
832
  msgid "Register"
833
  msgstr ""
834
 
835
- #: ../dashboard.php:5051
836
  msgid "WooCommerce Log In"
837
  msgstr ""
838
 
839
- #: ../dashboard.php:5052
840
  msgid "WooCommerce Log Out"
841
  msgstr ""
842
 
843
- #: ../dashboard.php:5091 ../dashboard.php:5092
844
  msgid "Add to menu"
845
  msgstr ""
846
 
@@ -890,321 +894,321 @@ msgid "Lockouts occurred"
890
  msgstr ""
891
 
892
  #: ../common.php:343 ../common.php:421 ../common.php:426 ../common.php:432 ..
893
- #: /common.php:437 ../admin/cerber-settings.php:624 ../admin/cerber-settings.php:
894
- #: 644 ../admin/cerber-settings.php:725 ../cerber-load.php:649 ../cerber-load.php:
895
- #: 661 ../cerber-load.php:668 ../cerber-load.php:1017 ../cerber-load.php:1548 ..
896
- #: /cerber-load.php:1554 ../cerber-load.php:1559 ../cerber-load.php:1566 ..
897
- #: /cerber-load.php:1573 ../cerber-load.php:1579 ../cerber-load.php:1586 ..
898
- #: /cerber-load.php:1737 ../cerber-load.php:1874 ../nexus/cerber-nexus-slave.php:
899
- #: 219 ../nexus/cerber-nexus-slave.php:230 ../cerber-scanner.php:5870
900
  msgid "ERROR:"
901
  msgstr ""
902
 
903
- #: ../common.php:1294
904
  msgid "User created"
905
  msgstr ""
906
 
907
- #: ../common.php:1295
908
  msgid "User registered"
909
  msgstr ""
910
 
911
- #: ../common.php:1296
912
  msgid "Logged in"
913
  msgstr ""
914
 
915
- #: ../common.php:1297
916
  msgid "Logged out"
917
  msgstr ""
918
 
919
- #: ../common.php:1298
920
  msgid "Login failed"
921
  msgstr ""
922
 
923
- #: ../common.php:1302
924
  msgid "IP subnet blocked"
925
  msgstr ""
926
 
927
- #: ../common.php:1305
928
  msgid "Citadel activated!"
929
  msgstr ""
930
 
931
- #: ../common.php:1306
932
  msgid "Spam comment denied"
933
  msgstr ""
934
 
935
- #: ../common.php:1307
936
  msgid "Spam form submission denied"
937
  msgstr ""
938
 
939
- #: ../common.php:1308
940
  msgid "Form submission denied"
941
  msgstr ""
942
 
943
- #: ../common.php:1309
944
  msgid "Comment denied"
945
  msgstr ""
946
 
947
- #: ../common.php:1318
948
  msgid "Password changed"
949
  msgstr ""
950
 
951
- #: ../common.php:1319
952
  msgid "Password reset requested"
953
  msgstr ""
954
 
955
- #: ../common.php:1321
956
  msgid "reCAPTCHA verification failed"
957
  msgstr ""
958
 
959
- #: ../common.php:1322
960
  msgid "reCAPTCHA settings are incorrect"
961
  msgstr ""
962
 
963
- #: ../common.php:1323
964
  msgid "Request to the Google reCAPTCHA service failed"
965
  msgstr ""
966
 
967
- #: ../common.php:1325 ../common.php:1415
968
  msgid "Attempt to access prohibited URL"
969
  msgstr ""
970
 
971
- #: ../common.php:1326 ../common.php:1416
972
  msgid "Attempt to log in with non-existing username"
973
  msgstr ""
974
 
975
- #: ../common.php:1327 ../common.php:1417
976
  msgid "Attempt to log in with prohibited username"
977
  msgstr ""
978
 
979
- #: ../common.php:1329
980
  msgid "Attempt to log in denied"
981
  msgstr ""
982
 
983
- #: ../common.php:1330
984
  msgid "Attempt to register denied"
985
  msgstr ""
986
 
987
- #: ../common.php:1331 ../common.php:1421
988
  msgid "Probing for vulnerable PHP code"
989
  msgstr ""
990
 
991
- #: ../common.php:1332
992
  msgid "Attempt to upload malicious file denied"
993
  msgstr ""
994
 
995
- #: ../common.php:1333
996
  msgid "File upload denied"
997
  msgstr ""
998
 
999
- #: ../common.php:1335
1000
  msgid "Request to REST API denied"
1001
  msgstr ""
1002
 
1003
- #: ../common.php:1336
1004
  msgid "XML-RPC request denied"
1005
  msgstr ""
1006
 
1007
- #: ../common.php:1337
1008
  msgid "User creation denied"
1009
  msgstr ""
1010
 
1011
- #: ../common.php:1338
1012
  msgid "User row update denied"
1013
  msgstr ""
1014
 
1015
- #: ../common.php:1339
1016
  msgid "Role update denied"
1017
  msgstr ""
1018
 
1019
- #: ../common.php:1340
1020
  msgid "Setting update denied"
1021
  msgstr ""
1022
 
1023
- #: ../common.php:1341
1024
  msgid "User metadata update denied"
1025
  msgstr ""
1026
 
1027
- #: ../common.php:1343
1028
  msgid "Malicious request denied"
1029
  msgstr ""
1030
 
1031
- #: ../common.php:1346
1032
  msgid "User activated"
1033
  msgstr ""
1034
 
1035
- #: ../common.php:1349
1036
  msgid "Invalid master credentials"
1037
  msgstr ""
1038
 
1039
- #: ../common.php:1357
1040
  msgid "Bot detected"
1041
  msgstr ""
1042
 
1043
- #: ../common.php:1358
1044
  msgid "Citadel mode is active"
1045
  msgstr ""
1046
 
1047
- #: ../common.php:1360
1048
  msgid "IP address is locked out"
1049
  msgstr ""
1050
 
1051
- #: ../common.php:1361
1052
  msgid "IP blacklisted"
1053
  msgstr ""
1054
 
1055
- #: ../common.php:1362
1056
  msgid "Malicious activity detected"
1057
  msgstr ""
1058
 
1059
- #: ../common.php:1363
1060
  msgid "Blocked by country rule"
1061
  msgstr ""
1062
 
1063
- #: ../common.php:1364
1064
  msgid "Limit reached"
1065
  msgstr ""
1066
 
1067
- #: ../common.php:1365
1068
  msgid "Multiple suspicious activities"
1069
  msgstr ""
1070
 
1071
- #: ../common.php:1366
1072
  msgid "Denied"
1073
  msgstr ""
1074
 
1075
- #: ../common.php:1368
1076
  msgid "Suspicious number of fields"
1077
  msgstr ""
1078
 
1079
- #: ../common.php:1369
1080
  msgid "Suspicious number of nested values"
1081
  msgstr ""
1082
 
1083
- #: ../common.php:1370 ../common.php:1422
1084
  msgid "Malicious code detected"
1085
  msgstr ""
1086
 
1087
- #: ../common.php:1371
1088
  msgid "Suspicious SQL code detected"
1089
  msgstr ""
1090
 
1091
- #: ../common.php:1372
1092
  msgid "Suspicious JavaScript code detected"
1093
  msgstr ""
1094
 
1095
- #: ../common.php:1373
1096
  msgid "Blocked by administrator"
1097
  msgstr ""
1098
 
1099
- #: ../common.php:1374
1100
  msgid "Site policy enforcement"
1101
  msgstr ""
1102
 
1103
- #: ../common.php:1375
1104
  msgid "2FA code verified"
1105
  msgstr ""
1106
 
1107
- #: ../common.php:1376
1108
  msgid "Initiated by the user"
1109
  msgstr ""
1110
 
1111
- #: ../common.php:1379
1112
  msgid "Email address is not permitted"
1113
  msgstr ""
1114
 
1115
- #: ../common.php:1381
1116
  msgid "Permission denied"
1117
  msgstr ""
1118
 
1119
- #: ../common.php:1383
1120
  msgid "Invalid user"
1121
  msgstr ""
1122
 
1123
- #: ../common.php:1384
1124
  msgid "Incorrect password"
1125
  msgstr ""
1126
 
1127
- #: ../common.php:1413
1128
  msgid "Limit on login attempts is reached"
1129
  msgstr ""
1130
 
1131
- #: ../common.php:1414
1132
  msgid "Attempt to access"
1133
  msgstr ""
1134
 
1135
- #: ../common.php:1418
1136
  msgid "Limit on failed reCAPTCHA verifications is reached"
1137
  msgstr ""
1138
 
1139
- #: ../common.php:1419
1140
  msgid "Bot activity is detected"
1141
  msgstr ""
1142
 
1143
- #: ../common.php:1420
1144
  msgid "Multiple suspicious activities were detected"
1145
  msgstr ""
1146
 
1147
- #: ../common.php:1423
1148
  msgid "Attempt to upload a file with malicious code"
1149
  msgstr ""
1150
 
1151
- #: ../common.php:1425
1152
  msgid "Multiple erroneous requests"
1153
  msgstr ""
1154
 
1155
- #: ../common.php:1426
1156
  msgid "Multiple suspicious requests"
1157
  msgstr ""
1158
 
1159
  #. translators: Time difference between two dates, in seconds (sec=second). 1: Number of seconds
1160
- #: ../common.php:1563
1161
  #, php-format
1162
  msgid "%s sec"
1163
  msgid_plural "%s secs"
1164
  msgstr[0] ""
1165
  msgstr[1] ""
1166
 
1167
- #: ../common.php:1570
1168
  #, php-format
1169
  msgid "%s ago"
1170
  msgstr ""
1171
 
1172
- #: ../common.php:1570
1173
  #, php-format
1174
  msgctxt "preposition of a period of time like: in 6 hours"
1175
  msgid "in %s"
1176
  msgstr ""
1177
 
1178
- #: ../common.php:1656
1179
  msgid "Bytes"
1180
  msgstr ""
1181
 
1182
- #: ../common.php:1762
1183
  #, php-format
1184
  msgid "A new version of %s is available. Please install it."
1185
  msgstr ""
1186
 
1187
- #: ../common.php:1782
1188
  msgid "Not specified"
1189
  msgstr ""
1190
 
1191
- #: ../common.php:2765
1192
  msgid "Unable to create the directory"
1193
  msgstr ""
1194
 
1195
- #: ../common.php:2770
1196
  msgid "Destination folder access denied"
1197
  msgstr ""
1198
 
1199
- #: ../common.php:2773
1200
  msgid "File not found"
1201
  msgstr ""
1202
 
1203
- #: ../common.php:2776
1204
  msgid "Unable to copy the file"
1205
  msgstr ""
1206
 
1207
- #: ../common.php:2782
1208
  msgid "Unable to delete the file"
1209
  msgstr ""
1210
 
@@ -1219,104 +1223,104 @@ msgstr ""
1219
  msgid "Awesome!"
1220
  msgstr ""
1221
 
1222
- #: ../admin/cerber-settings.php:94 ../admin/cerber-settings.php:271 ../cerber-lab.
1223
  #: php:828
1224
  msgid "Know more"
1225
  msgstr ""
1226
 
1227
- #: ../admin/cerber-settings.php:347
1228
  #, php-format
1229
  msgid "%s retries are allowed within %s minutes"
1230
  msgstr ""
1231
 
1232
- #: ../admin/cerber-settings.php:353
1233
  #, php-format
1234
  msgid "%s registrations are allowed within %s minutes from one IP address"
1235
  msgstr ""
1236
 
1237
- #: ../admin/cerber-settings.php:359
1238
  #, php-format
1239
  msgid "Increase lockout duration to %s hours after %s lockouts in the last %s hours"
1240
  msgstr ""
1241
 
1242
- #: ../admin/cerber-settings.php:367
1243
  msgid "Notify admin if the number of active lockouts above"
1244
  msgstr ""
1245
 
1246
- #: ../admin/cerber-settings.php:372 ../settings.php:260
1247
  msgid "Click to send test"
1248
  msgstr ""
1249
 
1250
- #: ../admin/cerber-settings.php:376
1251
  #, php-format
1252
  msgid "Enable after %s failed login attempts in the last %s minutes"
1253
  msgstr ""
1254
 
1255
- #: ../admin/cerber-settings.php:498
1256
  msgid "Select one or more roles"
1257
  msgstr ""
1258
 
1259
- #: ../admin/cerber-settings.php:522
1260
  msgid "Sunday"
1261
  msgstr ""
1262
 
1263
- #: ../admin/cerber-settings.php:523
1264
  msgid "Monday"
1265
  msgstr ""
1266
 
1267
- #: ../admin/cerber-settings.php:524
1268
  msgid "Tuesday"
1269
  msgstr ""
1270
 
1271
- #: ../admin/cerber-settings.php:525
1272
  msgid "Wednesday"
1273
  msgstr ""
1274
 
1275
- #: ../admin/cerber-settings.php:526
1276
  msgid "Thursday"
1277
  msgstr ""
1278
 
1279
- #: ../admin/cerber-settings.php:527
1280
  msgid "Friday"
1281
  msgstr ""
1282
 
1283
- #: ../admin/cerber-settings.php:528
1284
  msgid "Saturday"
1285
  msgstr ""
1286
 
1287
- #: ../admin/cerber-settings.php:538
1288
  msgctxt "preposition of time like: at 11:00"
1289
  msgid "at"
1290
  msgstr ""
1291
 
1292
- #: ../admin/cerber-settings.php:557
1293
  msgid "Click to send now"
1294
  msgstr ""
1295
 
1296
- #: ../admin/cerber-settings.php:625
1297
  msgid "Plugin initialization mode has not been changed"
1298
  msgstr ""
1299
 
1300
- #: ../admin/cerber-settings.php:652 ../admin/cerber-settings.php:653
1301
  msgid "Attention! You have changed the login URL! The new login URL is"
1302
  msgstr ""
1303
 
1304
- #: ../admin/cerber-settings.php:654 ../admin/cerber-settings.php:655
1305
  msgid ""
1306
  "If you use a caching plugin, you have to add your new login URL to the list "
1307
  "of pages not to cache."
1308
  msgstr ""
1309
 
1310
- #: ../admin/cerber-settings.php:749 ../admin/cerber-settings.php:761 ..
1311
- #: /admin/cerber-settings.php:918
1312
  msgid "<strong>ERROR</strong>: please enter a valid email address."
1313
  msgstr ""
1314
 
1315
- #: ../admin/cerber-settings.php:924
1316
  msgid "The schedule has been updated"
1317
  msgstr ""
1318
 
1319
- #: ../admin/cerber-settings.php:927
1320
  msgid "Unable to update the schedule"
1321
  msgstr ""
1322
 
@@ -1368,224 +1372,224 @@ msgid ""
1368
  "block below."
1369
  msgstr ""
1370
 
1371
- #: ../cerber-load.php:818
1372
  msgid ""
1373
  "> > > Translator of WP Cerber? To get the PRO license for free, drop your "
1374
  "contacts here: https://wpcerber.com/contact/"
1375
  msgstr ""
1376
 
1377
- #: ../cerber-load.php:1126
1378
  #, php-format
1379
  msgid ""
1380
  "<strong>ERROR</strong>: The password you entered for the username %s is "
1381
  "incorrect."
1382
  msgstr ""
1383
 
1384
- #: ../cerber-load.php:1549 ../cerber-load.php:1555 ../cerber-load.php:1580 ..
1385
- #: /cerber-load.php:1587
1386
  msgid "You are not allowed to register."
1387
  msgstr ""
1388
 
1389
- #: ../cerber-load.php:1567
1390
  msgid "Username is not allowed. Please choose another one."
1391
  msgstr ""
1392
 
1393
- #: ../cerber-load.php:1574
1394
  msgid "Email address is not permitted."
1395
  msgstr ""
1396
 
1397
- #: ../cerber-load.php:1574
1398
  msgid "Please choose another one."
1399
  msgstr ""
1400
 
1401
- #: ../cerber-load.php:1874
1402
  msgid "Sorry, human verification failed."
1403
  msgstr ""
1404
 
1405
- #: ../cerber-load.php:3954
1406
  msgid "We're sorry, you are not allowed to proceed"
1407
  msgstr ""
1408
 
1409
- #: ../cerber-load.php:4070
1410
  msgid "WP Cerber notify"
1411
  msgstr ""
1412
 
1413
- #: ../cerber-load.php:4094
1414
  msgid "Citadel mode is activated"
1415
  msgstr ""
1416
 
1417
- #: ../cerber-load.php:4096
1418
  #, php-format
1419
  msgid "Citadel mode is activated after %d failed login attempts in %d minutes."
1420
  msgstr ""
1421
 
1422
- #: ../cerber-load.php:4097
1423
  #, php-format
1424
  msgid "Last failed attempt was at %s from IP %s with user login: %s."
1425
  msgstr ""
1426
 
1427
- #: ../cerber-load.php:4098 ../cerber-load.php:4864
1428
  msgid "View activity in dashboard"
1429
  msgstr ""
1430
 
1431
- #: ../cerber-load.php:4122
1432
  msgid "unspecified"
1433
  msgstr ""
1434
 
1435
- #: ../cerber-load.php:4125
1436
  msgid "Number of lockouts is increasing"
1437
  msgstr ""
1438
 
1439
- #: ../cerber-load.php:4127
1440
  msgid "Number of active lockouts"
1441
  msgstr ""
1442
 
1443
- #: ../cerber-load.php:4128
1444
  #, php-format
1445
  msgid "Last lockout was added: %s for IP %s"
1446
  msgstr ""
1447
 
1448
- #: ../cerber-load.php:4130
1449
  msgid "View activity for this IP"
1450
  msgstr ""
1451
 
1452
- #: ../cerber-load.php:4131
1453
  msgid "View lockouts in dashboard"
1454
  msgstr ""
1455
 
1456
- #: ../cerber-load.php:4134 ../cerber-load.php:4136
1457
  msgid "A new version of WP Cerber is available to install"
1458
  msgstr ""
1459
 
1460
- #: ../cerber-load.php:4135
1461
  msgid "Hi!"
1462
  msgstr ""
1463
 
1464
- #: ../cerber-load.php:4138 ../cerber-load.php:4149 ../nexus/cerber-slave-list.php:
1465
  #: 44
1466
  msgid "Website"
1467
  msgstr ""
1468
 
1469
- #: ../cerber-load.php:4141 ../cerber-load.php:4142
1470
  msgid "The WP Cerber security plugin has been deactivated"
1471
  msgstr ""
1472
 
1473
- #: ../cerber-load.php:4144
1474
  msgid "Not logged in"
1475
  msgstr ""
1476
 
1477
- #: ../cerber-load.php:4150
1478
  msgid "By user"
1479
  msgstr ""
1480
 
1481
- #: ../cerber-load.php:4151
1482
  msgid "From IP address"
1483
  msgstr ""
1484
 
1485
- #: ../cerber-load.php:4154
1486
  msgid "From country"
1487
  msgstr ""
1488
 
1489
- #: ../cerber-load.php:4158
1490
  msgid "The WP Cerber security plugin is now active"
1491
  msgstr ""
1492
 
1493
- #: ../cerber-load.php:4159 ../cerber-load.php:5118
1494
  msgid "WP Cerber is now active and has started protecting your site"
1495
  msgstr ""
1496
 
1497
- #: ../cerber-load.php:4166
1498
  msgid "New Custom login URL"
1499
  msgstr ""
1500
 
1501
- #: ../cerber-load.php:4170 ../cerber-load.php:4171
1502
  msgid "A new activity has been recorded"
1503
  msgstr ""
1504
 
1505
- #: ../cerber-load.php:4176
1506
  msgid "Weekly report"
1507
  msgstr ""
1508
 
1509
- #: ../cerber-load.php:4179 ../cerber-load.php:4189
1510
  msgid "To change reporting settings visit"
1511
  msgstr ""
1512
 
1513
- #: ../cerber-load.php:4186
1514
  msgid "Scanner Report"
1515
  msgstr ""
1516
 
1517
- #: ../cerber-load.php:4212
1518
  msgid "Your login page:"
1519
  msgstr ""
1520
 
1521
- #: ../cerber-load.php:4216
1522
  msgid "Your license is valid until"
1523
  msgstr ""
1524
 
1525
- #: ../cerber-load.php:4219
1526
  msgid "This message was sent by"
1527
  msgstr ""
1528
 
1529
- #: ../cerber-load.php:4240
1530
  #, php-format
1531
  msgid "Your last sign-in was %s from %s"
1532
  msgstr ""
1533
 
1534
- #: ../cerber-load.php:4310
1535
  msgid "Weekly Report"
1536
  msgstr ""
1537
 
1538
- #: ../cerber-load.php:4322
1539
  msgid "Activity details"
1540
  msgstr ""
1541
 
1542
- #: ../cerber-load.php:4336
1543
  msgid "Attempts to log in with non-existing usernames"
1544
  msgstr ""
1545
 
1546
- #: ../cerber-load.php:4836 ../cerber-users.php:969
1547
  msgid "User"
1548
  msgstr ""
1549
 
1550
- #: ../cerber-load.php:4840
1551
  msgid "Username used"
1552
  msgstr ""
1553
 
1554
- #: ../cerber-load.php:4844
1555
  msgid "Search string"
1556
  msgstr ""
1557
 
1558
- #: ../cerber-load.php:4865
1559
  msgid "To delete the alert, click here"
1560
  msgstr ""
1561
 
1562
- #: ../cerber-load.php:5083
1563
  #, php-format
1564
  msgid "The WP Cerber requires PHP %s or higher. You are running"
1565
  msgstr ""
1566
 
1567
- #: ../cerber-load.php:5087
1568
  #, php-format
1569
  msgid "The WP Cerber requires WordPress %s or higher. You are running"
1570
  msgstr ""
1571
 
1572
- #: ../cerber-load.php:5096
1573
  msgid "Can't activate WP Cerber due to a database error."
1574
  msgstr ""
1575
 
1576
- #: ../cerber-load.php:5119
1577
  msgid "Your IP address is added to the"
1578
  msgstr ""
1579
 
1580
- #: ../cerber-load.php:5135
1581
  msgid "Import settings"
1582
  msgstr ""
1583
 
1584
- #: ../cerber-load.php:5136 ../nexus/cerber-nexus.php:64
1585
  msgid "Enable slave mode"
1586
  msgstr ""
1587
 
1588
- #: ../cerber-users.php:10 ../cerber-users.php:438
1589
  msgid "Two-Factor Authentication"
1590
  msgstr ""
1591
 
@@ -1593,7 +1597,7 @@ msgstr ""
1593
  msgid "Determined by user role policies"
1594
  msgstr ""
1595
 
1596
- #: ../cerber-users.php:19 ../cerber-users.php:446
1597
  msgid "Always enabled"
1598
  msgstr ""
1599
 
@@ -1643,122 +1647,122 @@ msgstr ""
1643
  msgid "Save All Changes"
1644
  msgstr ""
1645
 
1646
- #: ../cerber-users.php:400
1647
  msgid "Block access to WordPress Dashboard"
1648
  msgstr ""
1649
 
1650
- #: ../cerber-users.php:405
1651
  msgid "Hide Toolbar when viewing site"
1652
  msgstr ""
1653
 
1654
- #: ../cerber-users.php:411
1655
  msgid "Redirection rules"
1656
  msgstr ""
1657
 
1658
- #: ../cerber-users.php:415
1659
  msgid "Redirect user after login"
1660
  msgstr ""
1661
 
1662
- #: ../cerber-users.php:420
1663
  msgid "Redirect user after logout"
1664
  msgstr ""
1665
 
1666
- #: ../cerber-users.php:431 ../settings.php:557
1667
  msgid "User session expiration time"
1668
  msgstr ""
1669
 
1670
- #: ../cerber-users.php:442
1671
  msgid "Two-factor authentication"
1672
  msgstr ""
1673
 
1674
- #: ../cerber-users.php:447
1675
  msgid "Advanced mode"
1676
  msgstr ""
1677
 
1678
- #: ../cerber-users.php:451
1679
  msgid "Enforce two-factor authentication if any of the following conditions is true"
1680
  msgstr ""
1681
 
1682
- #: ../cerber-users.php:457
1683
  msgid "Login from a different country"
1684
  msgstr ""
1685
 
1686
- #: ../cerber-users.php:463
1687
  msgid "Login from a different network Class C"
1688
  msgstr ""
1689
 
1690
- #: ../cerber-users.php:469
1691
  msgid "Login from a different IP address"
1692
  msgstr ""
1693
 
1694
- #: ../cerber-users.php:475
1695
  msgid "Using a different browser or device"
1696
  msgstr ""
1697
 
1698
- #: ../cerber-users.php:481
1699
  msgid "Enforce two-factor authentication with fixed intervals"
1700
  msgstr ""
1701
 
1702
- #: ../cerber-users.php:487
1703
  msgid "Regular time intervals (days)"
1704
  msgstr ""
1705
 
1706
- #: ../cerber-users.php:489
1707
  msgid "days interval"
1708
  msgstr ""
1709
 
1710
- #: ../cerber-users.php:494
1711
  msgid "Fixed number of logins"
1712
  msgstr ""
1713
 
1714
- #: ../cerber-users.php:496
1715
  msgid "number of logins"
1716
  msgstr ""
1717
 
1718
- #: ../cerber-users.php:538
1719
  msgid "Policies have been updated"
1720
  msgstr ""
1721
 
1722
- #: ../cerber-users.php:612
1723
  #, php-format
1724
  msgid "Session has been terminated"
1725
  msgid_plural "%s sessions have been terminated"
1726
  msgstr[0] ""
1727
  msgstr[1] ""
1728
 
1729
- #: ../cerber-users.php:942
1730
  msgid "WP Cerber Personal Data Eraser"
1731
  msgstr ""
1732
 
1733
- #: ../cerber-users.php:971
1734
  msgid "Created"
1735
  msgstr ""
1736
 
1737
- #: ../cerber-users.php:992
1738
  msgid "Terminate session"
1739
  msgstr ""
1740
 
1741
- #: ../cerber-users.php:993
1742
  msgid "Block user"
1743
  msgstr ""
1744
 
1745
- #: ../cerber-users.php:1061 ../nexus/cerber-slave-list.php:244
1746
  msgid "Search results for:"
1747
  msgstr ""
1748
 
1749
- #: ../cerber-users.php:1103
1750
  msgid "Profile"
1751
  msgstr ""
1752
 
1753
- #: ../cerber-users.php:1116
1754
  msgid "All Logins"
1755
  msgstr ""
1756
 
1757
- #: ../cerber-users.php:1117
1758
  msgid "User Activity"
1759
  msgstr ""
1760
 
1761
- #: ../cerber-users.php:1163
1762
  msgid "Terminate"
1763
  msgstr ""
1764
 
@@ -1816,11 +1820,11 @@ msgstr ""
1816
  msgid "Limit"
1817
  msgstr ""
1818
 
1819
- #: ../settings.php:146
1820
  msgid "Lockout duration"
1821
  msgstr ""
1822
 
1823
- #: ../settings.php:147 ../settings.php:249
1824
  msgid "minutes"
1825
  msgstr ""
1826
 
@@ -1828,7 +1832,7 @@ msgstr ""
1828
  msgid "Aggressive lockout"
1829
  msgstr ""
1830
 
1831
- #: ../settings.php:155 ../settings.php:501 ../settings.php:702
1832
  msgid "Use White IP Access List"
1833
  msgstr ""
1834
 
@@ -1946,7 +1950,7 @@ msgstr ""
1946
  msgid "Threshold"
1947
  msgstr ""
1948
 
1949
- #: ../settings.php:248 ../cerber-scanner.php:3958
1950
  msgid "Duration"
1951
  msgstr ""
1952
 
@@ -1959,11 +1963,11 @@ msgid "Keep log records of not logged in visitors for"
1959
  msgstr ""
1960
 
1961
  #: ../settings.php:270 ../settings.php:276 ../settings.php:789 ../settings.php:
1962
- #: 794 ../settings.php:859 ../settings.php:1051
1963
  msgid "days"
1964
  msgstr ""
1965
 
1966
- #: ../settings.php:275 ../settings.php:793
1967
  msgid "Keep log records of logged in users for"
1968
  msgstr ""
1969
 
@@ -2170,7 +2174,7 @@ msgstr ""
2170
  msgid "Do not apply these policy to the IP addresses in the White IP Access List"
2171
  msgstr ""
2172
 
2173
- #: ../settings.php:512 ../settings.php:1419
2174
  msgid "Only registered and logged in users are allowed to view this website"
2175
  msgstr ""
2176
 
@@ -2220,7 +2224,7 @@ msgid ""
2220
  msgstr ""
2221
 
2222
  #: ../settings.php:558
2223
- msgid "in minutes (leave empty to use default WP value)"
2224
  msgstr ""
2225
 
2226
  #: ../settings.php:564
@@ -2285,11 +2289,11 @@ msgstr ""
2285
  msgid "Lockout notifications"
2286
  msgstr ""
2287
 
2288
- #: ../settings.php:628 ../settings.php:676 ../settings.php:915
2289
  msgid "Email Address"
2290
  msgstr ""
2291
 
2292
- #: ../settings.php:629 ../settings.php:678 ../settings.php:761 ../settings.php:917
2293
  msgid "Use comma to specify multiple values"
2294
  msgstr ""
2295
 
@@ -2306,582 +2310,586 @@ msgstr ""
2306
  msgid "notifications are allowed per hour (0 means unlimited)"
2307
  msgstr ""
2308
 
2309
- #: ../settings.php:642
2310
  msgid "New version is available"
2311
  msgstr ""
2312
 
2313
- #: ../settings.php:648
2314
  msgid "Push notifications"
2315
  msgstr ""
2316
 
2317
- #: ../settings.php:649
2318
  msgid "Get notified instantly with mobile and desktop notifications"
2319
  msgstr ""
2320
 
2321
- #: ../settings.php:653
2322
  msgid "Pushbullet access token"
2323
  msgstr ""
2324
 
2325
- #: ../settings.php:656
2326
  msgid "Pushbullet device"
2327
  msgstr ""
2328
 
2329
- #: ../settings.php:663
2330
  msgid "Weekly reports"
2331
  msgstr ""
2332
 
2333
- #: ../settings.php:664
2334
  msgid ""
2335
  "Weekly report is a summary of all activities and suspicious events occurred "
2336
  "during the last seven days"
2337
  msgstr ""
2338
 
2339
- #: ../settings.php:667
2340
  msgid "Enable reporting"
2341
  msgstr ""
2342
 
2343
- #: ../settings.php:671
2344
  msgid "Send reports on"
2345
  msgstr ""
2346
 
2347
- #: ../settings.php:677 ../settings.php:916
2348
  msgid "if empty, the email addresses from the notification settings will be used"
2349
  msgstr ""
2350
 
2351
- #: ../settings.php:688
2352
  msgid "Traffic Inspection"
2353
  msgstr ""
2354
 
2355
- #: ../settings.php:689
2356
  msgid ""
2357
  "Traffic Inspector is a context-aware web application firewall (WAF) that "
2358
  "protects your website by recognizing and denying malicious HTTP requests"
2359
  msgstr ""
2360
 
2361
- #: ../settings.php:693
2362
  msgid "Enable traffic inspection"
2363
  msgstr ""
2364
 
2365
- #: ../settings.php:697 ../settings.php:725
2366
  msgid "Maximum compatibility"
2367
  msgstr ""
2368
 
2369
- #: ../settings.php:698 ../settings.php:726
2370
  msgid "Maximum security"
2371
  msgstr ""
2372
 
2373
- #: ../settings.php:706
2374
  msgid "Request whitelist"
2375
  msgstr ""
2376
 
2377
- #: ../settings.php:710
2378
  msgid ""
2379
  "Enter a request URI to exclude the request from inspection. One item per "
2380
  "line."
2381
  msgstr ""
2382
 
2383
- #: ../settings.php:710
2384
  msgid "To specify a REGEX pattern, enclose a whole line in two braces."
2385
  msgstr ""
2386
 
2387
- #: ../settings.php:716
2388
  msgid "Erroneous Request Shielding"
2389
  msgstr ""
2390
 
2391
- #: ../settings.php:718
2392
  msgid ""
2393
  "Block IP addresses that send excessive requests for non-existing pages or "
2394
  "scan website for security breaches"
2395
  msgstr ""
2396
 
2397
- #: ../settings.php:721
2398
  msgid "Enable error shielding"
2399
  msgstr ""
2400
 
2401
- #: ../settings.php:730
2402
  msgid "Ignore logged in users"
2403
  msgstr ""
2404
 
2405
- #: ../settings.php:737
2406
  msgid "Traffic Logging"
2407
  msgstr ""
2408
 
2409
- #: ../settings.php:738
2410
  msgid ""
2411
  "Enable optional traffic logging if you need to monitor suspicious and "
2412
  "malicious activity or solve security issues"
2413
  msgstr ""
2414
 
2415
- #: ../settings.php:742
2416
  msgid "Logging mode"
2417
  msgstr ""
2418
 
2419
- #: ../settings.php:745
2420
  msgid "Logging disabled"
2421
  msgstr ""
2422
 
2423
- #: ../settings.php:746
2424
  msgid "Smart"
2425
  msgstr ""
2426
 
2427
- #: ../settings.php:747
2428
  msgid "All traffic"
2429
  msgstr ""
2430
 
2431
- #: ../settings.php:751
2432
  msgid "Ignore crawlers"
2433
  msgstr ""
2434
 
2435
- #: ../settings.php:755
2436
  msgid "Save request fields"
2437
  msgstr ""
2438
 
2439
- #: ../settings.php:759
2440
  msgid "Mask these form fields"
2441
  msgstr ""
2442
 
2443
- #: ../settings.php:766
2444
  msgid "Save request headers"
2445
  msgstr ""
2446
 
2447
- #: ../settings.php:771
2448
  msgid "Save $_SERVER"
2449
  msgstr ""
2450
 
2451
- #: ../settings.php:775
2452
  msgid "Save request cookies"
2453
  msgstr ""
2454
 
2455
- #: ../settings.php:779
2456
  msgid "Save software errors"
2457
  msgstr ""
2458
 
2459
- #: ../settings.php:783
2460
  msgid "Page generation time threshold"
2461
  msgstr ""
2462
 
2463
- #: ../settings.php:784
2464
  msgid "milliseconds"
2465
  msgstr ""
2466
 
2467
- #: ../settings.php:801
2468
  msgid "Scanner settings"
2469
  msgstr ""
2470
 
2471
- #: ../settings.php:802
2472
  msgid ""
2473
  "The scanner monitors file changes, verifies the integrity of WordPress, "
2474
  "plugins, and themes, and detects malware"
2475
  msgstr ""
2476
 
2477
- #: ../settings.php:806
2478
  msgid "Custom signatures"
2479
  msgstr ""
2480
 
2481
- #: ../settings.php:810
2482
  msgid ""
2483
  "Specify custom PHP code signatures. One item per line. To specify a REGEX "
2484
  "pattern, enclose a whole line in two braces."
2485
  msgstr ""
2486
 
2487
- #: ../settings.php:813
2488
  msgid "Unwanted file extensions"
2489
  msgstr ""
2490
 
2491
- #: ../settings.php:817
2492
  msgid ""
2493
  "Specify file extensions to search for. Full scan only. Use comma to separate "
2494
  "items."
2495
  msgstr ""
2496
 
2497
- #: ../settings.php:820
2498
  msgid "Directories to exclude"
2499
  msgstr ""
2500
 
2501
- #: ../settings.php:824
2502
  msgid "Specify directories to exclude from scanning. One directory per line."
2503
  msgstr ""
2504
 
2505
- #: ../settings.php:827
2506
  msgid "Monitor new files"
2507
  msgstr ""
2508
 
2509
- #: ../settings.php:831 ../settings.php:840
2510
  msgid "Executable files"
2511
  msgstr ""
2512
 
2513
- #: ../settings.php:832 ../settings.php:841
2514
  msgid "All files"
2515
  msgstr ""
2516
 
2517
- #: ../settings.php:836
2518
  msgid "Monitor modified files"
2519
  msgstr ""
2520
 
2521
- #: ../settings.php:845
 
 
 
 
2522
  msgid "Scan temporary directory"
2523
  msgstr ""
2524
 
2525
- #: ../settings.php:849
2526
  msgid "Scan session directory"
2527
  msgstr ""
2528
 
2529
- #: ../settings.php:853 ../settings.php:1157 ../settings.php:1184
2530
  msgid "Enable diagnostic logging"
2531
  msgstr ""
2532
 
2533
- #: ../settings.php:857
2534
  msgid "Delete quarantined files after"
2535
  msgstr ""
2536
 
2537
- #: ../settings.php:867
2538
  msgid "Automated recurring scan schedule"
2539
  msgstr ""
2540
 
2541
- #: ../settings.php:868
2542
  msgid ""
2543
  "The scanner automatically scans the website, removes malware and sends email "
2544
  "reports with the results of a scan"
2545
  msgstr ""
2546
 
2547
- #: ../settings.php:872
2548
  msgid "Launch Quick Scan"
2549
  msgstr ""
2550
 
2551
- #: ../settings.php:877
2552
  msgid "Launch Full Scan"
2553
  msgstr ""
2554
 
2555
- #: ../settings.php:884
2556
  msgid "Scan results reporting"
2557
  msgstr ""
2558
 
2559
- #: ../settings.php:885
2560
  msgid ""
2561
  "Configure what issues to include in the email report and the condition for "
2562
  "sending reports"
2563
  msgstr ""
2564
 
2565
- #: ../settings.php:889
2566
  msgid "Report an issue if any of the following is true"
2567
  msgstr ""
2568
 
2569
- #: ../settings.php:892 ../settings.php:938
2570
  msgid "Low severity"
2571
  msgstr ""
2572
 
2573
- #: ../settings.php:893 ../settings.php:939
2574
  msgid "Medium severity"
2575
  msgstr ""
2576
 
2577
- #: ../settings.php:894 ../settings.php:940
2578
  msgid "High severity"
2579
  msgstr ""
2580
 
2581
- #: ../settings.php:898
2582
  msgid "Send email report"
2583
  msgstr ""
2584
 
2585
- #: ../settings.php:901
2586
  msgid "After every scan"
2587
  msgstr ""
2588
 
2589
- #: ../settings.php:902
2590
  msgid "If any changes in scan results occurred"
2591
  msgstr ""
2592
 
2593
- #: ../settings.php:903
2594
  msgid "If new issues found"
2595
  msgstr ""
2596
 
2597
- #: ../settings.php:907
2598
  msgid "Include file sizes"
2599
  msgstr ""
2600
 
2601
- #: ../settings.php:911
2602
  msgid "Include scan errors"
2603
  msgstr ""
2604
 
2605
- #: ../settings.php:926
2606
  msgid "Automatic cleanup of malware and suspicious files"
2607
  msgstr ""
2608
 
2609
- #: ../settings.php:927
2610
  msgid ""
2611
  "These policies are automatically enforced at the end of every scheduled scan "
2612
  "based on its results. All affected files are moved to the quarantine"
2613
  msgstr ""
2614
 
2615
- #: ../settings.php:931
2616
  msgid "Delete unattended files"
2617
  msgstr ""
2618
 
2619
- #: ../settings.php:935
2620
  msgid "Files in the uploads folder"
2621
  msgstr ""
2622
 
2623
- #: ../settings.php:944
2624
  msgid "Files with unwanted extensions"
2625
  msgstr ""
2626
 
2627
- #: ../settings.php:950
2628
  msgid "Automatic recovery of modified and infected files"
2629
  msgstr ""
2630
 
2631
- #: ../settings.php:953
2632
  msgid "Recover WordPress files"
2633
  msgstr ""
2634
 
2635
- #: ../settings.php:957
2636
  msgid "Recover plugins files"
2637
  msgstr ""
2638
 
2639
- #: ../settings.php:963
2640
  msgid "Exclusions"
2641
  msgstr ""
2642
 
2643
- #: ../settings.php:964
2644
  msgid "These files will never be deleted during automatic cleanup."
2645
  msgstr ""
2646
 
2647
- #: ../settings.php:967
2648
  msgid "Files in the temporary directory"
2649
  msgstr ""
2650
 
2651
- #: ../settings.php:971
2652
  msgid "Files in the sessions directory"
2653
  msgstr ""
2654
 
2655
- #: ../settings.php:975
2656
  msgid "Files in these directories"
2657
  msgstr ""
2658
 
2659
- #: ../settings.php:979
2660
  msgid "Use absolute paths. One item per line."
2661
  msgstr ""
2662
 
2663
- #: ../settings.php:982
2664
  msgid "Files with these extensions"
2665
  msgstr ""
2666
 
2667
- #: ../settings.php:986
2668
  msgid "Use comma to separate items."
2669
  msgstr ""
2670
 
2671
- #: ../settings.php:993
2672
  msgid "Cerber anti-spam engine"
2673
  msgstr ""
2674
 
2675
- #: ../settings.php:994
2676
  msgid "Spam protection for comment, registration and contact forms on a website"
2677
  msgstr ""
2678
 
2679
- #: ../settings.php:998
2680
  msgid "Comment form"
2681
  msgstr ""
2682
 
2683
- #: ../settings.php:999
2684
  msgid "Protect comment form with bot detection engine"
2685
  msgstr ""
2686
 
2687
- #: ../settings.php:1003 ../settings.php:1076
2688
  msgid "Registration form"
2689
  msgstr ""
2690
 
2691
- #: ../settings.php:1004
2692
  msgid "Protect registration form with bot detection engine"
2693
  msgstr ""
2694
 
2695
- #: ../settings.php:1008
2696
  msgid "Other forms"
2697
  msgstr ""
2698
 
2699
- #: ../settings.php:1009
2700
  msgid "Protect all forms on the website with bot detection engine"
2701
  msgstr ""
2702
 
2703
- #: ../settings.php:1015
2704
  msgid "Adjust anti-spam engine"
2705
  msgstr ""
2706
 
2707
- #: ../settings.php:1016
2708
  msgid ""
2709
  "These settings enable you to fine-tune the behavior of anti-spam algorithms "
2710
  "and avoid false positives"
2711
  msgstr ""
2712
 
2713
- #: ../settings.php:1019
2714
  msgid "Safe mode"
2715
  msgstr ""
2716
 
2717
- #: ../settings.php:1020
2718
  msgid "Use less restrictive policies (allow AJAX)"
2719
  msgstr ""
2720
 
2721
- #: ../settings.php:1025
2722
  msgid "Disable bot detection engine for logged in users"
2723
  msgstr ""
2724
 
2725
- #: ../settings.php:1029
2726
  msgid "Query whitelist"
2727
  msgstr ""
2728
 
2729
- #: ../settings.php:1030
2730
  msgid ""
2731
  "Enter a part of query string or query path to exclude a request from "
2732
  "inspection by the engine. One item per line."
2733
  msgstr ""
2734
 
2735
- #: ../settings.php:1039
2736
  msgid "Comment processing"
2737
  msgstr ""
2738
 
2739
- #: ../settings.php:1040
2740
  msgid "How the plugin processes comments submitted through the standard comment form"
2741
  msgstr ""
2742
 
2743
- #: ../settings.php:1043
2744
  msgid "If a spam comment detected"
2745
  msgstr ""
2746
 
2747
- #: ../settings.php:1045
2748
  msgid "Deny it completely"
2749
  msgstr ""
2750
 
2751
- #: ../settings.php:1045
2752
  msgid "Mark it as spam"
2753
  msgstr ""
2754
 
2755
- #: ../settings.php:1048
2756
  msgid "Trash spam comments"
2757
  msgstr ""
2758
 
2759
- #: ../settings.php:1050
2760
  msgid "Move spam comments to trash after"
2761
  msgstr ""
2762
 
2763
- #: ../settings.php:1058
2764
  msgid "reCAPTCHA settings"
2765
  msgstr ""
2766
 
2767
- #: ../settings.php:1059
2768
  msgid ""
2769
  "Before you can start using reCAPTCHA, you have to obtain Site key and Secret "
2770
  "key on the Google website"
2771
  msgstr ""
2772
 
2773
- #: ../settings.php:1063
2774
  msgid "Site key"
2775
  msgstr ""
2776
 
2777
- #: ../settings.php:1067
2778
  msgid "Secret key"
2779
  msgstr ""
2780
 
2781
- #: ../settings.php:1071
2782
  msgid "Invisible reCAPTCHA"
2783
  msgstr ""
2784
 
2785
- #: ../settings.php:1072
2786
  msgid "Enable invisible reCAPTCHA"
2787
  msgstr ""
2788
 
2789
- #: ../settings.php:1072
2790
  msgid ""
2791
  "(do not enable it unless you get and enter the Site and Secret keys for the "
2792
  "invisible version)"
2793
  msgstr ""
2794
 
2795
- #: ../settings.php:1077
2796
  msgid "Enable reCAPTCHA for WordPress registration form"
2797
  msgstr ""
2798
 
2799
- #: ../settings.php:1082
2800
  msgid "Enable reCAPTCHA for WooCommerce registration form"
2801
  msgstr ""
2802
 
2803
- #: ../settings.php:1086
2804
  msgid "Lost password form"
2805
  msgstr ""
2806
 
2807
- #: ../settings.php:1087
2808
  msgid "Enable reCAPTCHA for WordPress lost password form"
2809
  msgstr ""
2810
 
2811
- #: ../settings.php:1092
2812
  msgid "Enable reCAPTCHA for WooCommerce lost password form"
2813
  msgstr ""
2814
 
2815
- #: ../settings.php:1096
2816
  msgid "Login form"
2817
  msgstr ""
2818
 
2819
- #: ../settings.php:1097
2820
  msgid "Enable reCAPTCHA for WordPress login form"
2821
  msgstr ""
2822
 
2823
- #: ../settings.php:1102
2824
  msgid "Enable reCAPTCHA for WooCommerce login form"
2825
  msgstr ""
2826
 
2827
- #: ../settings.php:1107
2828
  msgid "Enable reCAPTCHA for WordPress comment form"
2829
  msgstr ""
2830
 
2831
- #: ../settings.php:1112
2832
  msgid "Disable reCAPTCHA for logged in users"
2833
  msgstr ""
2834
 
2835
- #: ../settings.php:1116
2836
  msgid "Limit attempts"
2837
  msgstr ""
2838
 
2839
- #: ../settings.php:1117
2840
  #, php-format
2841
  msgid "Lock out IP address for %s minutes after %s failed attempts within %s minutes"
2842
  msgstr ""
2843
 
2844
- #: ../settings.php:1124
2845
  msgid "Master settings"
2846
  msgstr ""
2847
 
2848
- #: ../settings.php:1132
2849
  msgid "Return to the website list"
2850
  msgstr ""
2851
 
2852
- #: ../settings.php:1136
2853
  msgid "Show \"Switched to\" notification"
2854
  msgstr ""
2855
 
2856
- #: ../settings.php:1140
2857
  msgid "Add @ site to the page title"
2858
  msgstr ""
2859
 
2860
- #: ../settings.php:1144
2861
  msgid "Use master language"
2862
  msgstr ""
2863
 
2864
- #: ../settings.php:1167
2865
  msgid "Limit access by IP address"
2866
  msgstr ""
2867
 
2868
- #: ../settings.php:1173
2869
  msgid "Access to this website"
2870
  msgstr ""
2871
 
2872
- #: ../settings.php:1176
2873
  msgid "Full access mode"
2874
  msgstr ""
2875
 
2876
- #: ../settings.php:1177
2877
  msgid "Read-only mode"
2878
  msgstr ""
2879
 
2880
- #: ../settings.php:1197
2881
  msgid "The full access mode requires the PRO version of WP Cerber"
2882
  msgstr ""
2883
 
2884
- #: ../settings.php:1265
2885
  msgid "Any activity"
2886
  msgstr ""
2887
 
@@ -2998,50 +3006,54 @@ msgstr ""
2998
  msgid "Download file"
2999
  msgstr ""
3000
 
3001
- #: ../cerber-tools.php:41
3002
  msgid "Import settings from the file"
3003
  msgstr ""
3004
 
3005
- #: ../cerber-tools.php:42
3006
  msgid ""
3007
  "When you click the button below, file will be uploaded and all existing "
3008
  "settings will be overridden."
3009
  msgstr ""
3010
 
3011
- #: ../cerber-tools.php:43
3012
  msgid "Select file to import."
3013
  msgstr ""
3014
 
3015
- #: ../cerber-tools.php:43 ../cerber-scanner.php:4106
3016
  #, php-format
3017
  msgid "Maximum upload file size: %s."
3018
  msgstr ""
3019
 
3020
- #: ../cerber-tools.php:46
3021
  msgid "What do you want to import?"
3022
  msgstr ""
3023
 
3024
- #: ../cerber-tools.php:48 ../cerber-scanner.php:4109
3025
  msgid "Upload file"
3026
  msgstr ""
3027
 
3028
- #: ../cerber-tools.php:100
 
 
 
 
3029
  msgid "No file was uploaded or file is corrupted"
3030
  msgstr ""
3031
 
3032
- #: ../cerber-tools.php:139
3033
  msgid "A database error occurred while importing access list entries"
3034
  msgstr ""
3035
 
3036
- #: ../cerber-tools.php:147
3037
  msgid "Settings has imported successfully from"
3038
  msgstr ""
3039
 
3040
- #: ../cerber-tools.php:154
3041
  msgid "Error while parsing file"
3042
  msgstr ""
3043
 
3044
- #: ../cerber-tools.php:242
3045
  msgid "Unsubscribe"
3046
  msgstr ""
3047
 
@@ -3113,7 +3125,7 @@ msgstr ""
3113
  msgid "Switch to"
3114
  msgstr ""
3115
 
3116
- #: ../nexus/cerber-slave-list.php:337 ../cerber-scanner.php:3974
3117
  msgid "Vulnerabilities"
3118
  msgstr ""
3119
 
@@ -3252,7 +3264,7 @@ msgstr ""
3252
  msgid "Active plugins and updates on"
3253
  msgstr ""
3254
 
3255
- #: ../nexus/cerber-nexus-slave.php:451
3256
  msgid "Settings updated"
3257
  msgstr ""
3258
 
@@ -3353,124 +3365,124 @@ msgstr ""
3353
  msgid "Ignore"
3354
  msgstr ""
3355
 
3356
- #: ../cerber-scanner.php:1568
3357
  msgid "Verified"
3358
  msgstr ""
3359
 
3360
- #: ../cerber-scanner.php:1574
3361
  msgid "Vulnerability found"
3362
  msgstr ""
3363
 
3364
- #: ../cerber-scanner.php:1575
3365
  msgid "Integrity data not found"
3366
  msgstr ""
3367
 
3368
- #: ../cerber-scanner.php:1576
3369
  msgid "Unable to check the integrity of the plugin due to a network error"
3370
  msgstr ""
3371
 
3372
- #: ../cerber-scanner.php:1577
3373
  msgid "Unable to check the integrity of WordPress files due to a network error"
3374
  msgstr ""
3375
 
3376
- #: ../cerber-scanner.php:1578
3377
  msgid "Unable to check the integrity of the theme due to a network error"
3378
  msgstr ""
3379
 
3380
- #: ../cerber-scanner.php:1579
3381
  msgid "Unable to check the integrity due to a DB error"
3382
  msgstr ""
3383
 
3384
- #: ../cerber-scanner.php:1581
3385
  msgid "Local file doesn't exist"
3386
  msgstr ""
3387
 
3388
- #: ../cerber-scanner.php:1583
3389
  msgid "Unable to process file"
3390
  msgstr ""
3391
 
3392
- #: ../cerber-scanner.php:1584 ../cerber-scanner.php:5104
3393
  msgid "Unable to open file"
3394
  msgstr ""
3395
 
3396
- #: ../cerber-scanner.php:1586 ../cerber-scanner.php:3986
3397
  msgid "Checksum mismatch"
3398
  msgstr ""
3399
 
3400
- #: ../cerber-scanner.php:1589
3401
  msgid "Suspicious code found"
3402
  msgstr ""
3403
 
3404
- #: ../cerber-scanner.php:1590
3405
  msgid "Malicious code found"
3406
  msgstr ""
3407
 
3408
- #: ../cerber-scanner.php:1591
3409
  msgid "Unattended suspicious file"
3410
  msgstr ""
3411
 
3412
- #: ../cerber-scanner.php:1592
3413
  msgid "Executable code found"
3414
  msgstr ""
3415
 
3416
- #: ../cerber-scanner.php:1595 ../cerber-scanner.php:2825
3417
  msgid "Suspicious directives found"
3418
  msgstr ""
3419
 
3420
- #: ../cerber-scanner.php:1596
3421
  msgid "Unwanted file extension"
3422
  msgstr ""
3423
 
3424
- #: ../cerber-scanner.php:1598
3425
  msgid "Content has been modified"
3426
  msgstr ""
3427
 
3428
- #: ../cerber-scanner.php:1599
3429
  msgid "New file"
3430
  msgstr ""
3431
 
3432
- #: ../cerber-scanner.php:1601
3433
  msgid "Unable to delete"
3434
  msgstr ""
3435
 
3436
- #: ../cerber-scanner.php:1602
3437
  msgid "File deleted"
3438
  msgstr ""
3439
 
3440
- #: ../cerber-scanner.php:1603
3441
  msgid "File recovered"
3442
  msgstr ""
3443
 
3444
- #: ../cerber-scanner.php:1623
3445
  msgid "Every hour"
3446
  msgstr ""
3447
 
3448
- #: ../cerber-scanner.php:1624
3449
  msgid "Every 3 hours"
3450
  msgstr ""
3451
 
3452
- #: ../cerber-scanner.php:1625
3453
  msgid "Every 6 hours"
3454
  msgstr ""
3455
 
3456
- #: ../cerber-scanner.php:2645
3457
  msgid "Custom signature found"
3458
  msgstr ""
3459
 
3460
- #: ../cerber-scanner.php:2820
3461
  msgid ""
3462
  "This file contains executable code and may contain obfuscated malware. If "
3463
  "this file is a part of a theme or a plugin, it must be located in the theme "
3464
  "or the plugin folder. No exception, no excuses."
3465
  msgstr ""
3466
 
3467
- #: ../cerber-scanner.php:2821
3468
  msgid ""
3469
  "The scanner recognizes this file as \"ownerless\" or \"not bundled\" because it "
3470
  "does not belong to any known part of the website and should not be here."
3471
  msgstr ""
3472
 
3473
- #: ../cerber-scanner.php:2822
3474
  #, php-format
3475
  msgid ""
3476
  "It may remain after upgrading to a newer version of %s. It also may be a "
@@ -3478,15 +3490,15 @@ msgid ""
3478
  "made (bespoke) plugin or theme."
3479
  msgstr ""
3480
 
3481
- #: ../cerber-scanner.php:2823
3482
  msgid "Suspicious code instruction found"
3483
  msgstr ""
3484
 
3485
- #: ../cerber-scanner.php:2824
3486
  msgid "Suspicious code signatures found"
3487
  msgstr ""
3488
 
3489
- #: ../cerber-scanner.php:2826
3490
  msgid ""
3491
  "The contents of the file have been changed and do not match what exists in "
3492
  "the official WordPress repository or a reference file you have uploaded "
@@ -3494,246 +3506,246 @@ msgid ""
3494
  "has been tampered with."
3495
  msgstr ""
3496
 
3497
- #: ../cerber-scanner.php:2827
3498
  #, php-format
3499
  msgid ""
3500
  "To solve this issue you have to reinstall %s or update it to the latest "
3501
  "version."
3502
  msgstr ""
3503
 
3504
- #: ../cerber-scanner.php:2828
3505
  msgid "Please upload a reference ZIP archive"
3506
  msgstr ""
3507
 
3508
- #: ../cerber-scanner.php:2829
3509
  msgid "Resolve issue"
3510
  msgstr ""
3511
 
3512
- #: ../cerber-scanner.php:3862
3513
  msgid "Preparing for the scan"
3514
  msgstr ""
3515
 
3516
- #: ../cerber-scanner.php:3863
3517
  msgid "Scanning folders for files"
3518
  msgstr ""
3519
 
3520
- #: ../cerber-scanner.php:3864
3521
  msgid "Scanning the upload folder for files"
3522
  msgstr ""
3523
 
3524
- #: ../cerber-scanner.php:3865
3525
  msgid "Scanning the temp folder for files"
3526
  msgstr ""
3527
 
3528
- #: ../cerber-scanner.php:3866
3529
  msgid "Scanning the session folder for files"
3530
  msgstr ""
3531
 
3532
- #: ../cerber-scanner.php:3867
3533
  msgid "Parsing the list of files"
3534
  msgstr ""
3535
 
3536
- #: ../cerber-scanner.php:3868
3537
  msgid "Checking for new and modified files"
3538
  msgstr ""
3539
 
3540
- #: ../cerber-scanner.php:3869
3541
  msgid "Verifying the integrity of WordPress"
3542
  msgstr ""
3543
 
3544
- #: ../cerber-scanner.php:3870
3545
  msgid "Recovering WordPress files"
3546
  msgstr ""
3547
 
3548
- #: ../cerber-scanner.php:3871
3549
  msgid "Verifying the integrity of the plugins"
3550
  msgstr ""
3551
 
3552
- #: ../cerber-scanner.php:3872
3553
  msgid "Recovering plugins files"
3554
  msgstr ""
3555
 
3556
- #: ../cerber-scanner.php:3873
3557
  msgid "Verifying the integrity of the themes"
3558
  msgstr ""
3559
 
3560
- #: ../cerber-scanner.php:3874
3561
  msgid "Searching for malicious code"
3562
  msgstr ""
3563
 
3564
- #: ../cerber-scanner.php:3875
3565
  msgid "Finalizing the scan"
3566
  msgstr ""
3567
 
3568
- #: ../cerber-scanner.php:3950
3569
  msgid "Started"
3570
  msgstr ""
3571
 
3572
- #: ../cerber-scanner.php:3954
3573
  msgid "Finished"
3574
  msgstr ""
3575
 
3576
- #: ../cerber-scanner.php:3962
3577
  msgid "Performance"
3578
  msgstr ""
3579
 
3580
- #: ../cerber-scanner.php:3978
3581
  msgid "New files"
3582
  msgstr ""
3583
 
3584
- #: ../cerber-scanner.php:3982
3585
  msgid "Changed files"
3586
  msgstr ""
3587
 
3588
- #: ../cerber-scanner.php:3990
3589
  msgid "Unwanted extensions"
3590
  msgstr ""
3591
 
3592
- #: ../cerber-scanner.php:3994
3593
  msgid "Unattended files"
3594
  msgstr ""
3595
 
3596
- #: ../cerber-scanner.php:4003 ../cerber-scanner.php:5763
3597
  msgid "Scanned"
3598
  msgstr ""
3599
 
3600
- #: ../cerber-scanner.php:4003
3601
  msgid "Files to scan"
3602
  msgstr ""
3603
 
3604
- #: ../cerber-scanner.php:4010
3605
  msgid "Critical issues"
3606
  msgstr ""
3607
 
3608
- #: ../cerber-scanner.php:4010 ../cerber-scanner.php:5295
3609
  msgid "Issues total"
3610
  msgstr ""
3611
 
3612
- #: ../cerber-scanner.php:4103
3613
  msgid "We have not found any integrity data to verify"
3614
  msgstr ""
3615
 
3616
- #: ../cerber-scanner.php:4105
3617
  msgid ""
3618
  "You have to upload a ZIP archive from which you've installed it. This "
3619
  "enables the security scanner to verify the integrity of the code and detect "
3620
  "malware."
3621
  msgstr ""
3622
 
3623
- #: ../cerber-scanner.php:4704
3624
  msgid ""
3625
  "File access error. Possibly scan results are outdated. Please run Quick or "
3626
  "Full Scan."
3627
  msgstr ""
3628
 
3629
- #: ../cerber-scanner.php:5251
3630
  msgid "Full Scan Report"
3631
  msgstr ""
3632
 
3633
- #: ../cerber-scanner.php:5251
3634
  msgid "Quick Scan Report"
3635
  msgstr ""
3636
 
3637
- #: ../cerber-scanner.php:5264
3638
  msgid "Files scanned"
3639
  msgstr ""
3640
 
3641
- #: ../cerber-scanner.php:5349
3642
  msgid "Deleted"
3643
  msgstr ""
3644
 
3645
- #: ../cerber-scanner.php:5353
3646
  msgid "Recovered"
3647
  msgstr ""
3648
 
3649
- #: ../cerber-scanner.php:5402
3650
  msgid "Automatically moved to quarantine"
3651
  msgstr ""
3652
 
3653
- #: ../cerber-scanner.php:5403
3654
  msgid "Automatically deleted"
3655
  msgstr ""
3656
 
3657
- #: ../cerber-scanner.php:5406
3658
  msgid "Automatically recovered"
3659
  msgstr ""
3660
 
3661
- #: ../cerber-scanner.php:5418
3662
  msgid "To view full report visit"
3663
  msgstr ""
3664
 
3665
- #: ../cerber-scanner.php:5662
3666
  msgid "There are no files in the quarantine at the moment."
3667
  msgstr ""
3668
 
3669
- #: ../cerber-scanner.php:5729
3670
  msgid "No files match the specified filter."
3671
  msgstr ""
3672
 
3673
- #: ../cerber-scanner.php:5729
3674
  msgid "Click here to see the full list of files"
3675
  msgstr ""
3676
 
3677
- #: ../cerber-scanner.php:5749
3678
  msgid "Delete permanently"
3679
  msgstr ""
3680
 
3681
- #: ../cerber-scanner.php:5752
3682
  msgid "Restore"
3683
  msgstr ""
3684
 
3685
- #: ../cerber-scanner.php:5764
3686
  msgid "Moved to quarantine"
3687
  msgstr ""
3688
 
3689
- #: ../cerber-scanner.php:5765
3690
  msgid "Automatic deletion"
3691
  msgstr ""
3692
 
3693
- #: ../cerber-scanner.php:5766
3694
  msgid "Size"
3695
  msgstr ""
3696
 
3697
- #: ../cerber-scanner.php:5767 ../cerber-scanner.php:5915
3698
  msgid "File"
3699
  msgstr ""
3700
 
3701
- #: ../cerber-scanner.php:5781
3702
  msgid "All scans"
3703
  msgstr ""
3704
 
3705
- #: ../cerber-scanner.php:5843
3706
  msgid "The file has been deleted permanently."
3707
  msgstr ""
3708
 
3709
- #: ../cerber-scanner.php:5857
3710
  msgid "The file has been restored to its original location."
3711
  msgstr ""
3712
 
3713
- #: ../cerber-scanner.php:5880
3714
  msgid "Apply"
3715
  msgstr ""
3716
 
3717
- #: ../cerber-scanner.php:5881 ../cerber-scanner.php:5908
3718
  msgid "Remove from the list"
3719
  msgstr ""
3720
 
3721
- #: ../cerber-scanner.php:5882
3722
  msgid "User Insights"
3723
  msgstr ""
3724
 
3725
- #: ../cerber-scanner.php:5883
3726
  msgid "Traffic Insights"
3727
  msgstr ""
3728
 
3729
- #: ../cerber-scanner.php:5884
3730
  msgid "Activity Insights"
3731
  msgstr ""
3732
 
3733
- #: ../cerber-scanner.php:5886
3734
  msgid "The list is empty."
3735
  msgstr ""
3736
 
3737
- #: ../cerber-scanner.php:5914
3738
  msgid "Added"
3739
  msgstr ""
5
  "Project-Id-Version: WP Cerber\n"
6
  "Report-Msgid-Bugs-To: \n"
7
  "POT-Creation-Date: Tue Sep 08 2015 21:38:11 GMT+0300\n"
8
+ "POT-Revision-Date: Tue Apr 28 2020 11:47:21 GMT+0300 (Moscow Standard Time)\n"
9
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
10
  "Last-Translator: \n"
11
  "Language-Team: \n"
28
  msgid "Cerber Dashboard"
29
  msgstr ""
30
 
31
+ #: ../dashboard.php:54 ../dashboard.php:1808 ../dashboard.php:2711 ../dashboard.
32
+ #: php:4589
33
  msgid "Dashboard"
34
  msgstr ""
35
 
37
  msgid "Cerber Traffic Inspector"
38
  msgstr ""
39
 
40
+ #: ../dashboard.php:56 ../dashboard.php:1771 ../dashboard.php:4655
41
  msgid "Traffic Inspector"
42
  msgstr ""
43
 
53
  msgid "Cerber Security Rules"
54
  msgstr ""
55
 
56
+ #: ../dashboard.php:61 ../dashboard.php:4701
57
  msgid "Security Rules"
58
  msgstr ""
59
 
61
  msgid "Cerber User Security"
62
  msgstr ""
63
 
64
+ #: ../dashboard.php:64 ../dashboard.php:4681
65
  msgid "User Policies"
66
  msgstr ""
67
 
68
+ #: ../dashboard.php:67 ../dashboard.php:4716
69
  msgid "Site Integrity"
70
  msgstr ""
71
 
73
  msgid "Cerber anti-spam settings"
74
  msgstr ""
75
 
76
+ #: ../dashboard.php:71 ../settings.php:1110
77
  msgid "Anti-spam"
78
  msgstr ""
79
 
85
  msgid "Cerber tools"
86
  msgstr ""
87
 
88
+ #: ../dashboard.php:82 ../dashboard.php:4751
89
  msgid "Tools"
90
  msgstr ""
91
 
92
+ #: ../dashboard.php:190 ../dashboard.php:308
93
  msgid "Remove"
94
  msgstr ""
95
 
96
+ #: ../dashboard.php:195 ../cerber-load.php:4856
97
  msgid "IP"
98
  msgstr ""
99
 
100
+ #: ../dashboard.php:196 ../dashboard.php:1088
101
  msgid "Hostname"
102
  msgstr ""
103
 
104
+ #: ../dashboard.php:197 ../dashboard.php:1089
105
  msgid "Country"
106
  msgstr ""
107
 
108
+ #: ../dashboard.php:198 ../cerber-users.php:973
109
  msgid "Expires"
110
  msgstr ""
111
 
112
+ #: ../dashboard.php:199 ../cerber-load.php:4151
113
  msgid "Reason"
114
  msgstr ""
115
 
116
+ #: ../dashboard.php:200 ../cerber-users.php:976 ../cerber-scanner.php:5830 ..
117
+ #: /cerber-scanner.php:5978
118
  msgid "Action"
119
  msgstr ""
120
 
121
+ #: ../dashboard.php:216
122
  #, php-format
123
  msgid "Showing last %d records from %d"
124
  msgstr ""
125
 
126
+ #: ../dashboard.php:218
127
  msgid "Hint"
128
  msgstr ""
129
 
130
+ #: ../dashboard.php:218
131
  msgid "To view activity, click on the IP"
132
  msgstr ""
133
 
134
+ #: ../dashboard.php:222
135
  msgid "No lockouts at the moment. The sky is clear."
136
  msgstr ""
137
 
138
+ #: ../dashboard.php:254 ../dashboard.php:1349 ../dashboard.php:1394 ../dashboard.
139
+ #: php:1766 ../dashboard.php:3787 ../cerber-load.php:5158 ../cerber-tools.php:55
140
  msgid "White IP Access List"
141
  msgstr ""
142
 
143
+ #: ../dashboard.php:257 ../dashboard.php:1352 ../dashboard.php:1397 ../dashboard.
144
+ #: php:1767 ../dashboard.php:3790 ../cerber-tools.php:56
145
  msgid "Black IP Access List"
146
  msgstr ""
147
 
148
+ #: ../dashboard.php:264
149
  msgid "Your IP"
150
  msgstr ""
151
 
152
+ #: ../dashboard.php:304 ../dashboard.php:1388 ../dashboard.php:1440 ../dashboard.
153
+ #: php:1580
154
  msgid "Check for activities"
155
  msgstr ""
156
 
157
+ #: ../dashboard.php:314
158
  msgid "List is empty"
159
  msgstr ""
160
 
161
+ #: ../dashboard.php:320
162
  msgid "IP address, range, wildcard, or CIDR"
163
  msgstr ""
164
 
165
+ #: ../dashboard.php:321
166
  msgid "Add Entry"
167
  msgstr ""
168
 
169
+ #: ../dashboard.php:322
170
  msgid "Optional comment for this entry"
171
  msgstr ""
172
 
173
+ #: ../dashboard.php:344
174
  msgid "You cannot add your IP address or network"
175
  msgstr ""
176
 
177
+ #: ../dashboard.php:348
178
  #, php-format
179
  msgid "IP address %s has been added to Black IP Access List"
180
  msgstr ""
181
 
182
+ #: ../dashboard.php:351
183
  #, php-format
184
  msgid "IP address %s has been added to White IP Access List"
185
  msgstr ""
186
 
187
+ #: ../dashboard.php:433 ../dashboard.php:3695 ../whois.php:222 ../whois.php:253 ..
188
+ #: /common.php:1470 ../common.php:1854 ../common.php:1919 ../nexus/cerber-slave-
189
  #: list.php:330
190
  msgid "Unknown"
191
  msgstr ""
192
 
193
+ #: ../dashboard.php:506
194
  msgid "unknown"
195
  msgstr ""
196
 
197
+ #: ../dashboard.php:569
198
  #, php-format
199
  msgid "Lockout for %s was removed"
200
  msgstr ""
201
 
202
+ #: ../dashboard.php:577
203
  msgid "Email has been sent to"
204
  msgstr ""
205
 
206
+ #: ../dashboard.php:580
207
  msgid "Unable to send email to"
208
  msgstr ""
209
 
210
+ #: ../dashboard.php:635
211
  msgid "Default settings have been loaded"
212
  msgstr ""
213
 
214
+ #: ../dashboard.php:839 ../dashboard.php:1087 ../dashboard.php:4009 ../cerber-
215
+ #: users.php:974
216
  msgid "IP Address"
217
  msgstr ""
218
 
219
+ #: ../dashboard.php:840 ../dashboard.php:1090 ../dashboard.php:3583 ../dashboard.
220
+ #: php:4007
221
  msgid "Date"
222
  msgstr ""
223
 
224
+ #: ../dashboard.php:841 ../dashboard.php:1091
225
  msgid "Event"
226
  msgstr ""
227
 
228
+ #: ../dashboard.php:842
229
  msgid "Additional Details"
230
  msgstr ""
231
 
232
+ #: ../dashboard.php:843 ../dashboard.php:1092 ../dashboard.php:4012
233
  msgid "Local User"
234
  msgstr ""
235
 
236
+ #: ../dashboard.php:844
237
  msgid "User login"
238
  msgstr ""
239
 
240
+ #: ../dashboard.php:845 ../dashboard.php:3588
241
  msgid "User ID"
242
  msgstr ""
243
 
244
+ #: ../dashboard.php:846 ../dashboard.php:1093
245
  msgid "Username"
246
  msgstr ""
247
 
248
+ #: ../dashboard.php:939 ../dashboard.php:2371
249
  msgid "View all"
250
  msgstr ""
251
 
252
+ #: ../dashboard.php:950
253
  msgid "New users"
254
  msgstr ""
255
 
256
+ #: ../dashboard.php:956 ../dashboard.php:4038
257
  msgid "Suspicious activity"
258
  msgstr ""
259
 
260
+ #: ../dashboard.php:958 ../common.php:1333
261
  msgid "IP blocked"
262
  msgstr ""
263
 
264
+ #: ../dashboard.php:960 ../dashboard.php:1764 ../dashboard.php:4040 ../settings.
265
+ #: php:374 ../settings.php:1029
266
  msgid "Logged in users"
267
  msgstr ""
268
 
269
+ #: ../dashboard.php:961 ../dashboard.php:4041
270
  msgid "Not logged in visitors"
271
  msgstr ""
272
 
273
+ #: ../dashboard.php:963
274
  msgid "My activity"
275
  msgstr ""
276
 
277
+ #: ../dashboard.php:1115 ../dashboard.php:4072
278
  msgid "Export"
279
  msgstr ""
280
 
281
+ #: ../dashboard.php:1120
282
  msgid "No activity has been logged."
283
  msgstr ""
284
 
285
+ #: ../dashboard.php:1155
286
  msgid "Filter by registered user"
287
  msgstr ""
288
 
289
+ #: ../dashboard.php:1156
290
  msgid "Search for IP or username"
291
  msgstr ""
292
 
293
+ #: ../dashboard.php:1159
294
  msgid "Request ID"
295
  msgstr ""
296
 
297
+ #: ../dashboard.php:1160
298
  msgid "Search in URL"
299
  msgstr ""
300
 
301
+ #: ../dashboard.php:1167
302
  msgid "Filter"
303
  msgstr ""
304
 
305
+ #: ../dashboard.php:1357 ../dashboard.php:1401 ../dashboard.php:3795 ../common.
306
+ #: php:1391
307
  msgid "Locked out"
308
  msgstr ""
309
 
310
+ #: ../dashboard.php:1433
311
  msgid "Abuse email:"
312
  msgstr ""
313
 
314
+ #: ../dashboard.php:1439
315
  msgid "Network:"
316
  msgstr ""
317
 
318
+ #: ../dashboard.php:1454
319
  msgid "Add network to the Black List"
320
  msgstr ""
321
 
322
+ #: ../dashboard.php:1460
323
  msgid "Add IP to the Black List"
324
  msgstr ""
325
 
326
+ #: ../dashboard.php:1528 ../dashboard.php:1618
327
+ msgid "Registered"
328
+ msgstr ""
329
+
330
+ #: ../dashboard.php:1540
331
  msgid "Activated"
332
  msgstr ""
333
 
334
+ #: ../dashboard.php:1560
335
  msgid "Last seen"
336
  msgstr ""
337
 
338
+ #: ../dashboard.php:1564
339
+ msgid "Active sessions"
340
  msgstr ""
341
 
342
+ #: ../dashboard.php:1615
343
  msgid "Comments"
344
  msgstr ""
345
 
346
+ #: ../dashboard.php:1616
347
  msgid "Last login"
348
  msgstr ""
349
 
350
+ #: ../dashboard.php:1617
351
  msgid "Failed login attempts"
352
  msgstr ""
353
 
354
+ #: ../dashboard.php:1649 ../dashboard.php:1740 ../dashboard.php:1789 ../common.
355
+ #: php:1607 ../nexus/cerber-slave-list.php:344
356
  msgid "Never"
357
  msgstr ""
358
 
359
+ #: ../dashboard.php:1688 ../cerber-users.php:52 ../cerber-users.php:1107
360
  msgid "You"
361
  msgstr ""
362
 
363
+ #: ../dashboard.php:1706
364
  msgid "Cerber Quick View"
365
  msgstr ""
366
 
367
+ #: ../dashboard.php:1745 ../dashboard.php:1775
368
  msgid "active"
369
  msgstr ""
370
 
371
+ #: ../dashboard.php:1745
372
  msgid "deactivate"
373
  msgstr ""
374
 
375
+ #: ../dashboard.php:1749
376
  msgid "not active"
377
  msgstr ""
378
 
379
+ #: ../dashboard.php:1752 ../dashboard.php:1770
380
  msgid "disabled"
381
  msgstr ""
382
 
383
+ #: ../dashboard.php:1758
384
  msgid "failed attempts"
385
  msgstr ""
386
 
387
+ #: ../dashboard.php:1758 ../dashboard.php:1759
388
  msgid "in 24 hours"
389
  msgstr ""
390
 
391
+ #: ../dashboard.php:1758 ../dashboard.php:1759
392
  msgid "view all"
393
  msgstr ""
394
 
395
+ #: ../dashboard.php:1759
396
  msgid "lockouts"
397
  msgstr ""
398
 
399
+ #: ../dashboard.php:1761
400
  msgid "Lockouts at the moment"
401
  msgstr ""
402
 
403
+ #: ../dashboard.php:1762
404
  msgid "Last lockout"
405
  msgstr ""
406
 
407
+ #: ../dashboard.php:1764
408
  msgid "user"
409
  msgid_plural "users"
410
  msgstr[0] ""
411
  msgstr[1] ""
412
 
413
+ #: ../dashboard.php:1766 ../dashboard.php:1767 ../dashboard.php:2693
414
  msgid "entry"
415
  msgid_plural "entries"
416
  msgstr[0] ""
417
  msgstr[1] ""
418
 
419
+ #: ../dashboard.php:1768 ../settings.php:233
420
  msgid "Citadel mode"
421
  msgstr ""
422
 
423
+ #: ../dashboard.php:1770
424
  msgid "enabled"
425
  msgstr ""
426
 
427
+ #: ../dashboard.php:1775
428
  msgid "no connection"
429
  msgstr ""
430
 
431
+ #: ../dashboard.php:1792
432
  msgctxt "Example: Last malware scan: 23 Jan 2018"
433
  msgid "Last malware scan"
434
  msgstr ""
435
 
436
+ #: ../dashboard.php:1795 ../dashboard.php:1797 ../cerber-users.php:20 ../cerber-
437
+ #: users.php:446 ../settings.php:695 ../settings.php:723 ../settings.php:832 ..
438
+ #: /settings.php:841 ../settings.php:1182 ../cerber-scanner.php:1620
439
  msgid "Disabled"
440
  msgstr ""
441
 
442
+ #: ../dashboard.php:1796 ../cerber-scanner.php:1065
443
  msgid "Quick Scan"
444
  msgstr ""
445
 
446
+ #: ../dashboard.php:1798 ../cerber-scanner.php:1065
447
  msgid "Full Scan"
448
  msgstr ""
449
 
450
+ #: ../dashboard.php:1809 ../dashboard.php:2357 ../dashboard.php:4590 ../cerber-
451
+ #: load.php:4847 ../cerber-users.php:1140 ../settings.php:266
452
  msgid "Activity"
453
  msgstr ""
454
 
455
+ #: ../dashboard.php:1810 ../cerber-users.php:1141
456
  msgid "Traffic"
457
  msgstr ""
458
 
459
+ #: ../dashboard.php:1811
460
  msgid "Integrity"
461
  msgstr ""
462
 
463
+ #: ../dashboard.php:1814
464
  msgid "A new version is available"
465
  msgstr ""
466
 
467
+ #: ../dashboard.php:2174 ../settings.php:220
468
  msgid "My site is behind a reverse proxy"
469
  msgstr ""
470
 
471
+ #: ../dashboard.php:2350
472
  msgid "in the last 24 hours"
473
  msgstr ""
474
 
475
+ #: ../dashboard.php:2374
476
  msgid "Recently locked out IP addresses"
477
  msgstr ""
478
 
479
+ #: ../dashboard.php:2398
480
  msgid "Confused about some settings?"
481
  msgstr ""
482
 
483
+ #: ../dashboard.php:2399
484
  msgid "You can easily load default recommended settings using button below"
485
  msgstr ""
486
 
487
+ #: ../dashboard.php:2401
488
  msgid "Load default settings"
489
  msgstr ""
490
 
491
+ #: ../dashboard.php:2403 ../dashboard.php:5061 ../cerber-scanner.php:5801 ..
492
+ #: /cerber-scanner.php:5962
493
  msgid "Are you sure?"
494
  msgstr ""
495
 
496
+ #: ../dashboard.php:2409
497
  msgid "doesn't affect Custom login URL and Access Lists"
498
  msgstr ""
499
 
500
+ #: ../dashboard.php:2410 ../cerber-load.php:4183 ../cerber-load.php:5160
501
  msgid "Getting Started Guide"
502
  msgstr ""
503
 
504
+ #: ../dashboard.php:2513
505
  msgid "Attention! Citadel mode is now active. Nobody is able to log in."
506
  msgstr ""
507
 
508
+ #: ../dashboard.php:2514
509
  msgid "Deactivate"
510
  msgstr ""
511
 
512
+ #: ../dashboard.php:2515 ../dashboard.php:2905
513
  msgid "View Activity"
514
  msgstr ""
515
 
516
+ #: ../dashboard.php:2530
517
  msgid "Settings saved"
518
  msgstr ""
519
 
520
+ #: ../dashboard.php:2601
521
  msgid "Create Alert"
522
  msgstr ""
523
 
524
+ #: ../dashboard.php:2605
525
  msgid "Delete Alert"
526
  msgstr ""
527
 
528
+ #: ../dashboard.php:2638
529
  msgid "The alert has been created"
530
  msgstr ""
531
 
532
+ #: ../dashboard.php:2642
533
  msgid "The alert has been deleted"
534
  msgstr ""
535
 
536
+ #: ../dashboard.php:2712
537
  msgid "Main settings"
538
  msgstr ""
539
 
540
+ #: ../dashboard.php:2824
541
  msgid "Are you sure you want to delete selected files?"
542
  msgstr ""
543
 
544
+ #: ../dashboard.php:2825
545
  msgid "These files have been moved to the quarantine"
546
  msgstr ""
547
 
548
+ #: ../dashboard.php:2828
549
  msgid "Do you want to add selected files to the ignore list?"
550
  msgstr ""
551
 
552
+ #: ../dashboard.php:2829
553
  msgid "These files have been added to the ignore list"
554
  msgstr ""
555
 
556
+ #: ../dashboard.php:2831
557
  msgid "Some errors occurred"
558
  msgstr ""
559
 
560
+ #: ../dashboard.php:2832
561
  msgid "All files have been processed"
562
  msgstr ""
563
 
564
+ #: ../dashboard.php:3168 ../admin/cerber-settings.php:618
565
  msgid "Save Changes"
566
  msgstr ""
567
 
568
+ #: ../dashboard.php:3240
569
  msgid "Role-based rules are configured"
570
  msgstr ""
571
 
572
+ #: ../dashboard.php:3290
573
  msgid "Start typing here to find a country"
574
  msgstr ""
575
 
576
+ #: ../dashboard.php:3297
577
  msgid "Save all rules"
578
  msgstr ""
579
 
580
+ #: ../dashboard.php:3310
581
  #, php-format
582
  msgid "Permitted for one country"
583
  msgid_plural "Permitted for %d countries"
584
  msgstr[0] ""
585
  msgstr[1] ""
586
 
587
+ #: ../dashboard.php:3313
588
  #, php-format
589
  msgid "Not permitted for one country"
590
  msgid_plural "Not permitted for %d countries"
591
  msgstr[0] ""
592
  msgstr[1] ""
593
 
594
+ #: ../dashboard.php:3321
595
  msgid "No rule"
596
  msgstr ""
597
 
598
+ #: ../dashboard.php:3322
599
  msgid "Any country is permitted"
600
  msgstr ""
601
 
602
+ #: ../dashboard.php:3405
603
  msgid "Click on a country name to add it to the list of selected countries"
604
  msgstr ""
605
 
606
+ #: ../dashboard.php:3409
607
  #, php-format
608
  msgctxt "to is a marker of infinitive, e.g. \"to use it\""
609
  msgid "Selected countries are permitted to %s, other countries are not permitted to"
610
  msgstr ""
611
 
612
+ #: ../dashboard.php:3412
613
  #, php-format
614
  msgctxt "to is a marker of infinitive, e.g. \"to use it\""
615
  msgid "Selected countries are not permitted to %s, other countries are permitted to"
616
  msgstr ""
617
 
618
+ #: ../dashboard.php:3432
619
  msgid "Log in to the website"
620
  msgstr ""
621
 
622
+ #: ../dashboard.php:3434
623
  msgid "All Users"
624
  msgstr ""
625
 
626
+ #: ../dashboard.php:3436
627
  msgid "Register on the website"
628
  msgstr ""
629
 
630
+ #: ../dashboard.php:3437
631
  msgid "Submit forms"
632
  msgstr ""
633
 
634
+ #: ../dashboard.php:3438
635
  msgid "Post comments"
636
  msgstr ""
637
 
638
+ #: ../dashboard.php:3439
639
  msgid "Use XML-RPC"
640
  msgstr ""
641
 
642
+ #: ../dashboard.php:3440
643
  msgid "Use REST API"
644
  msgstr ""
645
 
646
+ #: ../dashboard.php:3482
647
  msgid "Security rules have been updated"
648
  msgstr ""
649
 
650
+ #: ../dashboard.php:3582
651
  msgid "IP address"
652
  msgstr ""
653
 
654
+ #: ../dashboard.php:3589
655
  msgid "Page generation time"
656
  msgstr ""
657
 
658
+ #: ../dashboard.php:4008
659
  msgid "Request"
660
  msgstr ""
661
 
662
+ #: ../dashboard.php:4010 ../cerber-users.php:975
663
  msgid "Host Info"
664
  msgstr ""
665
 
666
+ #: ../dashboard.php:4011
667
  msgid "User Agent"
668
  msgstr ""
669
 
670
+ #: ../dashboard.php:4028
671
  msgid "No requests have been logged."
672
  msgstr ""
673
 
674
+ #: ../dashboard.php:4036
675
  msgid "All requests"
676
  msgstr ""
677
 
678
+ #: ../dashboard.php:4039
679
  msgid "Errors"
680
  msgstr ""
681
 
682
+ #: ../dashboard.php:4044
683
  msgid "Form submissions"
684
  msgstr ""
685
 
686
+ #: ../dashboard.php:4046
687
  msgid "Page Not Found"
688
  msgstr ""
689
 
690
+ #: ../dashboard.php:4055
691
  msgid "Longer than"
692
  msgstr ""
693
 
694
+ #: ../dashboard.php:4065
695
  msgid "Advanced Search"
696
  msgstr ""
697
 
698
+ #: ../dashboard.php:4078
699
  msgid "Refresh"
700
  msgstr ""
701
 
702
+ #: ../dashboard.php:4591
703
  msgid "Sessions"
704
  msgstr ""
705
 
706
+ #: ../dashboard.php:4592
707
  msgid "Lockouts"
708
  msgstr ""
709
 
710
+ #: ../dashboard.php:4593
711
  msgid "Main Settings"
712
  msgstr ""
713
 
714
+ #: ../dashboard.php:4594 ../cerber-tools.php:38 ../cerber-tools.php:49
715
  msgid "Access Lists"
716
  msgstr ""
717
 
718
+ #: ../dashboard.php:4595
719
  msgid "Hardening"
720
  msgstr ""
721
 
722
+ #: ../dashboard.php:4597 ../settings.php:254
723
  msgid "Notifications"
724
  msgstr ""
725
 
726
+ #: ../dashboard.php:4635
727
  msgid "Anti-spam and bot detection settings"
728
  msgstr ""
729
 
730
+ #: ../dashboard.php:4637
731
  msgid "Anti-spam engine"
732
  msgstr ""
733
 
734
+ #: ../dashboard.php:4657
735
  msgid "Live Traffic"
736
  msgstr ""
737
 
738
+ #: ../dashboard.php:4658 ../dashboard.php:4719 ../cerber-tools.php:37 ../cerber-
739
+ #: tools.php:48 ../nexus/cerber-nexus.php:93
740
  msgid "Settings"
741
  msgstr ""
742
 
743
+ #: ../dashboard.php:4671
744
  msgid "Data Shield Policies"
745
  msgstr ""
746
 
747
+ #: ../dashboard.php:4673
748
  msgid "Accounts & Roles"
749
  msgstr ""
750
 
751
+ #: ../dashboard.php:4674
752
  msgid "Site Settings"
753
  msgstr ""
754
 
755
+ #: ../dashboard.php:4683
756
  msgid "Role-based"
757
  msgstr ""
758
 
759
+ #: ../dashboard.php:4684
760
  msgid "Global"
761
  msgstr ""
762
 
763
+ #: ../dashboard.php:4703
764
  msgid "Countries"
765
  msgstr ""
766
 
767
+ #: ../dashboard.php:4718
768
  msgid "Security Scanner"
769
  msgstr ""
770
 
771
+ #: ../dashboard.php:4720
772
  msgid "Scheduling"
773
  msgstr ""
774
 
775
+ #: ../dashboard.php:4721
776
  msgid "Cleaning up"
777
  msgstr ""
778
 
779
+ #: ../dashboard.php:4722
780
  msgid "Ignore List"
781
  msgstr ""
782
 
783
+ #: ../dashboard.php:4723
784
  msgid "Quarantine"
785
  msgstr ""
786
 
787
+ #: ../dashboard.php:4753
788
  msgid "Export & Import"
789
  msgstr ""
790
 
791
+ #: ../dashboard.php:4754
792
  msgid "Diagnostic"
793
  msgstr ""
794
 
795
+ #: ../dashboard.php:4755
796
  msgid "Log"
797
  msgstr ""
798
 
799
+ #: ../dashboard.php:4756
800
  msgid "Changelog"
801
  msgstr ""
802
 
803
+ #: ../dashboard.php:4757
804
  msgid "License"
805
  msgstr ""
806
 
807
+ #: ../dashboard.php:4858
808
  msgid "Help"
809
  msgstr ""
810
 
811
+ #: ../dashboard.php:4907
812
  msgid "Incorrect IP address or IP range"
813
  msgstr ""
814
 
815
+ #: ../dashboard.php:4911
816
  msgid "The IP address you are trying to add is already in the list"
817
  msgstr ""
818
 
819
+ #: ../dashboard.php:5046
820
  msgid "These features are available in a professional version of the plugin."
821
  msgstr ""
822
 
823
+ #: ../dashboard.php:5047
824
  msgid "Know more about all advantages at"
825
  msgstr ""
826
 
827
+ #: ../dashboard.php:5082
828
  msgid "Log In"
829
  msgstr ""
830
 
831
+ #: ../dashboard.php:5083
832
  msgid "Log Out"
833
  msgstr ""
834
 
835
+ #: ../dashboard.php:5084
836
  msgid "Register"
837
  msgstr ""
838
 
839
+ #: ../dashboard.php:5087
840
  msgid "WooCommerce Log In"
841
  msgstr ""
842
 
843
+ #: ../dashboard.php:5088
844
  msgid "WooCommerce Log Out"
845
  msgstr ""
846
 
847
+ #: ../dashboard.php:5127 ../dashboard.php:5128
848
  msgid "Add to menu"
849
  msgstr ""
850
 
894
  msgstr ""
895
 
896
  #: ../common.php:343 ../common.php:421 ../common.php:426 ../common.php:432 ..
897
+ #: /common.php:437 ../admin/cerber-settings.php:643 ../admin/cerber-settings.php:
898
+ #: 663 ../admin/cerber-settings.php:743 ../cerber-load.php:649 ../cerber-load.php:
899
+ #: 661 ../cerber-load.php:668 ../cerber-load.php:1016 ../cerber-load.php:1547 ..
900
+ #: /cerber-load.php:1553 ../cerber-load.php:1558 ../cerber-load.php:1565 ..
901
+ #: /cerber-load.php:1572 ../cerber-load.php:1578 ../cerber-load.php:1585 ..
902
+ #: /cerber-load.php:1736 ../cerber-load.php:1873 ../nexus/cerber-nexus-slave.php:
903
+ #: 204 ../nexus/cerber-nexus-slave.php:215 ../cerber-scanner.php:5932
904
  msgid "ERROR:"
905
  msgstr ""
906
 
907
+ #: ../common.php:1326
908
  msgid "User created"
909
  msgstr ""
910
 
911
+ #: ../common.php:1327
912
  msgid "User registered"
913
  msgstr ""
914
 
915
+ #: ../common.php:1328
916
  msgid "Logged in"
917
  msgstr ""
918
 
919
+ #: ../common.php:1329
920
  msgid "Logged out"
921
  msgstr ""
922
 
923
+ #: ../common.php:1330
924
  msgid "Login failed"
925
  msgstr ""
926
 
927
+ #: ../common.php:1334
928
  msgid "IP subnet blocked"
929
  msgstr ""
930
 
931
+ #: ../common.php:1337
932
  msgid "Citadel activated!"
933
  msgstr ""
934
 
935
+ #: ../common.php:1338
936
  msgid "Spam comment denied"
937
  msgstr ""
938
 
939
+ #: ../common.php:1339
940
  msgid "Spam form submission denied"
941
  msgstr ""
942
 
943
+ #: ../common.php:1340
944
  msgid "Form submission denied"
945
  msgstr ""
946
 
947
+ #: ../common.php:1341
948
  msgid "Comment denied"
949
  msgstr ""
950
 
951
+ #: ../common.php:1350
952
  msgid "Password changed"
953
  msgstr ""
954
 
955
+ #: ../common.php:1351
956
  msgid "Password reset requested"
957
  msgstr ""
958
 
959
+ #: ../common.php:1353
960
  msgid "reCAPTCHA verification failed"
961
  msgstr ""
962
 
963
+ #: ../common.php:1354
964
  msgid "reCAPTCHA settings are incorrect"
965
  msgstr ""
966
 
967
+ #: ../common.php:1355
968
  msgid "Request to the Google reCAPTCHA service failed"
969
  msgstr ""
970
 
971
+ #: ../common.php:1357 ../common.php:1447
972
  msgid "Attempt to access prohibited URL"
973
  msgstr ""
974
 
975
+ #: ../common.php:1358 ../common.php:1448
976
  msgid "Attempt to log in with non-existing username"
977
  msgstr ""
978
 
979
+ #: ../common.php:1359 ../common.php:1449
980
  msgid "Attempt to log in with prohibited username"
981
  msgstr ""
982
 
983
+ #: ../common.php:1361
984
  msgid "Attempt to log in denied"
985
  msgstr ""
986
 
987
+ #: ../common.php:1362
988
  msgid "Attempt to register denied"
989
  msgstr ""
990
 
991
+ #: ../common.php:1363 ../common.php:1453
992
  msgid "Probing for vulnerable PHP code"
993
  msgstr ""
994
 
995
+ #: ../common.php:1364
996
  msgid "Attempt to upload malicious file denied"
997
  msgstr ""
998
 
999
+ #: ../common.php:1365
1000
  msgid "File upload denied"
1001
  msgstr ""
1002
 
1003
+ #: ../common.php:1367
1004
  msgid "Request to REST API denied"
1005
  msgstr ""
1006
 
1007
+ #: ../common.php:1368
1008
  msgid "XML-RPC request denied"
1009
  msgstr ""
1010
 
1011
+ #: ../common.php:1369
1012
  msgid "User creation denied"
1013
  msgstr ""
1014
 
1015
+ #: ../common.php:1370
1016
  msgid "User row update denied"
1017
  msgstr ""
1018
 
1019
+ #: ../common.php:1371
1020
  msgid "Role update denied"
1021
  msgstr ""
1022
 
1023
+ #: ../common.php:1372
1024
  msgid "Setting update denied"
1025
  msgstr ""
1026
 
1027
+ #: ../common.php:1373
1028
  msgid "User metadata update denied"
1029
  msgstr ""
1030
 
1031
+ #: ../common.php:1375
1032
  msgid "Malicious request denied"
1033
  msgstr ""
1034
 
1035
+ #: ../common.php:1378
1036
  msgid "User activated"
1037
  msgstr ""
1038
 
1039
+ #: ../common.php:1381
1040
  msgid "Invalid master credentials"
1041
  msgstr ""
1042
 
1043
+ #: ../common.php:1389
1044
  msgid "Bot detected"
1045
  msgstr ""
1046
 
1047
+ #: ../common.php:1390
1048
  msgid "Citadel mode is active"
1049
  msgstr ""
1050
 
1051
+ #: ../common.php:1392
1052
  msgid "IP address is locked out"
1053
  msgstr ""
1054
 
1055
+ #: ../common.php:1393
1056
  msgid "IP blacklisted"
1057
  msgstr ""
1058
 
1059
+ #: ../common.php:1394
1060
  msgid "Malicious activity detected"
1061
  msgstr ""
1062
 
1063
+ #: ../common.php:1395
1064
  msgid "Blocked by country rule"
1065
  msgstr ""
1066
 
1067
+ #: ../common.php:1396
1068
  msgid "Limit reached"
1069
  msgstr ""
1070
 
1071
+ #: ../common.php:1397
1072
  msgid "Multiple suspicious activities"
1073
  msgstr ""
1074
 
1075
+ #: ../common.php:1398
1076
  msgid "Denied"
1077
  msgstr ""
1078
 
1079
+ #: ../common.php:1400
1080
  msgid "Suspicious number of fields"
1081
  msgstr ""
1082
 
1083
+ #: ../common.php:1401
1084
  msgid "Suspicious number of nested values"
1085
  msgstr ""
1086
 
1087
+ #: ../common.php:1402 ../common.php:1454
1088
  msgid "Malicious code detected"
1089
  msgstr ""
1090
 
1091
+ #: ../common.php:1403
1092
  msgid "Suspicious SQL code detected"
1093
  msgstr ""
1094
 
1095
+ #: ../common.php:1404
1096
  msgid "Suspicious JavaScript code detected"
1097
  msgstr ""
1098
 
1099
+ #: ../common.php:1405
1100
  msgid "Blocked by administrator"
1101
  msgstr ""
1102
 
1103
+ #: ../common.php:1406
1104
  msgid "Site policy enforcement"
1105
  msgstr ""
1106
 
1107
+ #: ../common.php:1407
1108
  msgid "2FA code verified"
1109
  msgstr ""
1110
 
1111
+ #: ../common.php:1408
1112
  msgid "Initiated by the user"
1113
  msgstr ""
1114
 
1115
+ #: ../common.php:1411
1116
  msgid "Email address is not permitted"
1117
  msgstr ""
1118
 
1119
+ #: ../common.php:1413
1120
  msgid "Permission denied"
1121
  msgstr ""
1122
 
1123
+ #: ../common.php:1415
1124
  msgid "Invalid user"
1125
  msgstr ""
1126
 
1127
+ #: ../common.php:1416
1128
  msgid "Incorrect password"
1129
  msgstr ""
1130
 
1131
+ #: ../common.php:1445
1132
  msgid "Limit on login attempts is reached"
1133
  msgstr ""
1134
 
1135
+ #: ../common.php:1446
1136
  msgid "Attempt to access"
1137
  msgstr ""
1138
 
1139
+ #: ../common.php:1450
1140
  msgid "Limit on failed reCAPTCHA verifications is reached"
1141
  msgstr ""
1142
 
1143
+ #: ../common.php:1451
1144
  msgid "Bot activity is detected"
1145
  msgstr ""
1146
 
1147
+ #: ../common.php:1452
1148
  msgid "Multiple suspicious activities were detected"
1149
  msgstr ""
1150
 
1151
+ #: ../common.php:1455
1152
  msgid "Attempt to upload a file with malicious code"
1153
  msgstr ""
1154
 
1155
+ #: ../common.php:1457
1156
  msgid "Multiple erroneous requests"
1157
  msgstr ""
1158
 
1159
+ #: ../common.php:1458
1160
  msgid "Multiple suspicious requests"
1161
  msgstr ""
1162
 
1163
  #. translators: Time difference between two dates, in seconds (sec=second). 1: Number of seconds
1164
+ #: ../common.php:1595
1165
  #, php-format
1166
  msgid "%s sec"
1167
  msgid_plural "%s secs"
1168
  msgstr[0] ""
1169
  msgstr[1] ""
1170
 
1171
+ #: ../common.php:1602
1172
  #, php-format
1173
  msgid "%s ago"
1174
  msgstr ""
1175
 
1176
+ #: ../common.php:1602
1177
  #, php-format
1178
  msgctxt "preposition of a period of time like: in 6 hours"
1179
  msgid "in %s"
1180
  msgstr ""
1181
 
1182
+ #: ../common.php:1688
1183
  msgid "Bytes"
1184
  msgstr ""
1185
 
1186
+ #: ../common.php:1794
1187
  #, php-format
1188
  msgid "A new version of %s is available. Please install it."
1189
  msgstr ""
1190
 
1191
+ #: ../common.php:1814
1192
  msgid "Not specified"
1193
  msgstr ""
1194
 
1195
+ #: ../common.php:2792
1196
  msgid "Unable to create the directory"
1197
  msgstr ""
1198
 
1199
+ #: ../common.php:2797
1200
  msgid "Destination folder access denied"
1201
  msgstr ""
1202
 
1203
+ #: ../common.php:2800
1204
  msgid "File not found"
1205
  msgstr ""
1206
 
1207
+ #: ../common.php:2803
1208
  msgid "Unable to copy the file"
1209
  msgstr ""
1210
 
1211
+ #: ../common.php:2809
1212
  msgid "Unable to delete the file"
1213
  msgstr ""
1214
 
1223
  msgid "Awesome!"
1224
  msgstr ""
1225
 
1226
+ #: ../admin/cerber-settings.php:94 ../admin/cerber-settings.php:264 ../cerber-lab.
1227
  #: php:828
1228
  msgid "Know more"
1229
  msgstr ""
1230
 
1231
+ #: ../admin/cerber-settings.php:346
1232
  #, php-format
1233
  msgid "%s retries are allowed within %s minutes"
1234
  msgstr ""
1235
 
1236
+ #: ../admin/cerber-settings.php:352
1237
  #, php-format
1238
  msgid "%s registrations are allowed within %s minutes from one IP address"
1239
  msgstr ""
1240
 
1241
+ #: ../admin/cerber-settings.php:358
1242
  #, php-format
1243
  msgid "Increase lockout duration to %s hours after %s lockouts in the last %s hours"
1244
  msgstr ""
1245
 
1246
+ #: ../admin/cerber-settings.php:366
1247
  msgid "Notify admin if the number of active lockouts above"
1248
  msgstr ""
1249
 
1250
+ #: ../admin/cerber-settings.php:371 ../settings.php:260
1251
  msgid "Click to send test"
1252
  msgstr ""
1253
 
1254
+ #: ../admin/cerber-settings.php:375
1255
  #, php-format
1256
  msgid "Enable after %s failed login attempts in the last %s minutes"
1257
  msgstr ""
1258
 
1259
+ #: ../admin/cerber-settings.php:507
1260
  msgid "Select one or more roles"
1261
  msgstr ""
1262
 
1263
+ #: ../admin/cerber-settings.php:531
1264
  msgid "Sunday"
1265
  msgstr ""
1266
 
1267
+ #: ../admin/cerber-settings.php:532
1268
  msgid "Monday"
1269
  msgstr ""
1270
 
1271
+ #: ../admin/cerber-settings.php:533
1272
  msgid "Tuesday"
1273
  msgstr ""
1274
 
1275
+ #: ../admin/cerber-settings.php:534
1276
  msgid "Wednesday"
1277
  msgstr ""
1278
 
1279
+ #: ../admin/cerber-settings.php:535
1280
  msgid "Thursday"
1281
  msgstr ""
1282
 
1283
+ #: ../admin/cerber-settings.php:536
1284
  msgid "Friday"
1285
  msgstr ""
1286
 
1287
+ #: ../admin/cerber-settings.php:537
1288
  msgid "Saturday"
1289
  msgstr ""
1290
 
1291
+ #: ../admin/cerber-settings.php:547
1292
  msgctxt "preposition of time like: at 11:00"
1293
  msgid "at"
1294
  msgstr ""
1295
 
1296
+ #: ../admin/cerber-settings.php:566
1297
  msgid "Click to send now"
1298
  msgstr ""
1299
 
1300
+ #: ../admin/cerber-settings.php:644
1301
  msgid "Plugin initialization mode has not been changed"
1302
  msgstr ""
1303
 
1304
+ #: ../admin/cerber-settings.php:671 ../admin/cerber-settings.php:672
1305
  msgid "Attention! You have changed the login URL! The new login URL is"
1306
  msgstr ""
1307
 
1308
+ #: ../admin/cerber-settings.php:673 ../admin/cerber-settings.php:674
1309
  msgid ""
1310
  "If you use a caching plugin, you have to add your new login URL to the list "
1311
  "of pages not to cache."
1312
  msgstr ""
1313
 
1314
+ #: ../admin/cerber-settings.php:767 ../admin/cerber-settings.php:779 ..
1315
+ #: /admin/cerber-settings.php:936
1316
  msgid "<strong>ERROR</strong>: please enter a valid email address."
1317
  msgstr ""
1318
 
1319
+ #: ../admin/cerber-settings.php:942
1320
  msgid "The schedule has been updated"
1321
  msgstr ""
1322
 
1323
+ #: ../admin/cerber-settings.php:945
1324
  msgid "Unable to update the schedule"
1325
  msgstr ""
1326
 
1372
  "block below."
1373
  msgstr ""
1374
 
1375
+ #: ../cerber-load.php:817
1376
  msgid ""
1377
  "> > > Translator of WP Cerber? To get the PRO license for free, drop your "
1378
  "contacts here: https://wpcerber.com/contact/"
1379
  msgstr ""
1380
 
1381
+ #: ../cerber-load.php:1125
1382
  #, php-format
1383
  msgid ""
1384
  "<strong>ERROR</strong>: The password you entered for the username %s is "
1385
  "incorrect."
1386
  msgstr ""
1387
 
1388
+ #: ../cerber-load.php:1548 ../cerber-load.php:1554 ../cerber-load.php:1579 ..
1389
+ #: /cerber-load.php:1586
1390
  msgid "You are not allowed to register."
1391
  msgstr ""
1392
 
1393
+ #: ../cerber-load.php:1566
1394
  msgid "Username is not allowed. Please choose another one."
1395
  msgstr ""
1396
 
1397
+ #: ../cerber-load.php:1573
1398
  msgid "Email address is not permitted."
1399
  msgstr ""
1400
 
1401
+ #: ../cerber-load.php:1573
1402
  msgid "Please choose another one."
1403
  msgstr ""
1404
 
1405
+ #: ../cerber-load.php:1873
1406
  msgid "Sorry, human verification failed."
1407
  msgstr ""
1408
 
1409
+ #: ../cerber-load.php:3976
1410
  msgid "We're sorry, you are not allowed to proceed"
1411
  msgstr ""
1412
 
1413
+ #: ../cerber-load.php:4092
1414
  msgid "WP Cerber notify"
1415
  msgstr ""
1416
 
1417
+ #: ../cerber-load.php:4116
1418
  msgid "Citadel mode is activated"
1419
  msgstr ""
1420
 
1421
+ #: ../cerber-load.php:4118
1422
  #, php-format
1423
  msgid "Citadel mode is activated after %d failed login attempts in %d minutes."
1424
  msgstr ""
1425
 
1426
+ #: ../cerber-load.php:4119
1427
  #, php-format
1428
  msgid "Last failed attempt was at %s from IP %s with user login: %s."
1429
  msgstr ""
1430
 
1431
+ #: ../cerber-load.php:4120 ../cerber-load.php:4888
1432
  msgid "View activity in dashboard"
1433
  msgstr ""
1434
 
1435
+ #: ../cerber-load.php:4144
1436
  msgid "unspecified"
1437
  msgstr ""
1438
 
1439
+ #: ../cerber-load.php:4147
1440
  msgid "Number of lockouts is increasing"
1441
  msgstr ""
1442
 
1443
+ #: ../cerber-load.php:4149
1444
  msgid "Number of active lockouts"
1445
  msgstr ""
1446
 
1447
+ #: ../cerber-load.php:4150
1448
  #, php-format
1449
  msgid "Last lockout was added: %s for IP %s"
1450
  msgstr ""
1451
 
1452
+ #: ../cerber-load.php:4152
1453
  msgid "View activity for this IP"
1454
  msgstr ""
1455
 
1456
+ #: ../cerber-load.php:4153
1457
  msgid "View lockouts in dashboard"
1458
  msgstr ""
1459
 
1460
+ #: ../cerber-load.php:4156 ../cerber-load.php:4158
1461
  msgid "A new version of WP Cerber is available to install"
1462
  msgstr ""
1463
 
1464
+ #: ../cerber-load.php:4157
1465
  msgid "Hi!"
1466
  msgstr ""
1467
 
1468
+ #: ../cerber-load.php:4160 ../cerber-load.php:4171 ../nexus/cerber-slave-list.php:
1469
  #: 44
1470
  msgid "Website"
1471
  msgstr ""
1472
 
1473
+ #: ../cerber-load.php:4163 ../cerber-load.php:4164
1474
  msgid "The WP Cerber security plugin has been deactivated"
1475
  msgstr ""
1476
 
1477
+ #: ../cerber-load.php:4166
1478
  msgid "Not logged in"
1479
  msgstr ""
1480
 
1481
+ #: ../cerber-load.php:4172
1482
  msgid "By user"
1483
  msgstr ""
1484
 
1485
+ #: ../cerber-load.php:4173
1486
  msgid "From IP address"
1487
  msgstr ""
1488
 
1489
+ #: ../cerber-load.php:4176
1490
  msgid "From country"
1491
  msgstr ""
1492
 
1493
+ #: ../cerber-load.php:4180
1494
  msgid "The WP Cerber security plugin is now active"
1495
  msgstr ""
1496
 
1497
+ #: ../cerber-load.php:4181 ../cerber-load.php:5157
1498
  msgid "WP Cerber is now active and has started protecting your site"
1499
  msgstr ""
1500
 
1501
+ #: ../cerber-load.php:4188
1502
  msgid "New Custom login URL"
1503
  msgstr ""
1504
 
1505
+ #: ../cerber-load.php:4192 ../cerber-load.php:4193
1506
  msgid "A new activity has been recorded"
1507
  msgstr ""
1508
 
1509
+ #: ../cerber-load.php:4198
1510
  msgid "Weekly report"
1511
  msgstr ""
1512
 
1513
+ #: ../cerber-load.php:4201 ../cerber-load.php:4211
1514
  msgid "To change reporting settings visit"
1515
  msgstr ""
1516
 
1517
+ #: ../cerber-load.php:4208
1518
  msgid "Scanner Report"
1519
  msgstr ""
1520
 
1521
+ #: ../cerber-load.php:4234
1522
  msgid "Your login page:"
1523
  msgstr ""
1524
 
1525
+ #: ../cerber-load.php:4238
1526
  msgid "Your license is valid until"
1527
  msgstr ""
1528
 
1529
+ #: ../cerber-load.php:4241
1530
  msgid "This message was sent by"
1531
  msgstr ""
1532
 
1533
+ #: ../cerber-load.php:4262
1534
  #, php-format
1535
  msgid "Your last sign-in was %s from %s"
1536
  msgstr ""
1537
 
1538
+ #: ../cerber-load.php:4332
1539
  msgid "Weekly Report"
1540
  msgstr ""
1541
 
1542
+ #: ../cerber-load.php:4344
1543
  msgid "Activity details"
1544
  msgstr ""
1545
 
1546
+ #: ../cerber-load.php:4358
1547
  msgid "Attempts to log in with non-existing usernames"
1548
  msgstr ""
1549
 
1550
+ #: ../cerber-load.php:4860 ../cerber-users.php:970
1551
  msgid "User"
1552
  msgstr ""
1553
 
1554
+ #: ../cerber-load.php:4864
1555
  msgid "Username used"
1556
  msgstr ""
1557
 
1558
+ #: ../cerber-load.php:4868
1559
  msgid "Search string"
1560
  msgstr ""
1561
 
1562
+ #: ../cerber-load.php:4889
1563
  msgid "To delete the alert, click here"
1564
  msgstr ""
1565
 
1566
+ #: ../cerber-load.php:5107
1567
  #, php-format
1568
  msgid "The WP Cerber requires PHP %s or higher. You are running"
1569
  msgstr ""
1570
 
1571
+ #: ../cerber-load.php:5111
1572
  #, php-format
1573
  msgid "The WP Cerber requires WordPress %s or higher. You are running"
1574
  msgstr ""
1575
 
1576
+ #: ../cerber-load.php:5121
1577
  msgid "Can't activate WP Cerber due to a database error."
1578
  msgstr ""
1579
 
1580
+ #: ../cerber-load.php:5158
1581
  msgid "Your IP address is added to the"
1582
  msgstr ""
1583
 
1584
+ #: ../cerber-load.php:5174
1585
  msgid "Import settings"
1586
  msgstr ""
1587
 
1588
+ #: ../cerber-load.php:5175 ../nexus/cerber-nexus.php:64
1589
  msgid "Enable slave mode"
1590
  msgstr ""
1591
 
1592
+ #: ../cerber-users.php:10 ../cerber-users.php:439
1593
  msgid "Two-Factor Authentication"
1594
  msgstr ""
1595
 
1597
  msgid "Determined by user role policies"
1598
  msgstr ""
1599
 
1600
+ #: ../cerber-users.php:19 ../cerber-users.php:447
1601
  msgid "Always enabled"
1602
  msgstr ""
1603
 
1647
  msgid "Save All Changes"
1648
  msgstr ""
1649
 
1650
+ #: ../cerber-users.php:401
1651
  msgid "Block access to WordPress Dashboard"
1652
  msgstr ""
1653
 
1654
+ #: ../cerber-users.php:406
1655
  msgid "Hide Toolbar when viewing site"
1656
  msgstr ""
1657
 
1658
+ #: ../cerber-users.php:412
1659
  msgid "Redirection rules"
1660
  msgstr ""
1661
 
1662
+ #: ../cerber-users.php:416
1663
  msgid "Redirect user after login"
1664
  msgstr ""
1665
 
1666
+ #: ../cerber-users.php:421
1667
  msgid "Redirect user after logout"
1668
  msgstr ""
1669
 
1670
+ #: ../cerber-users.php:432 ../settings.php:557
1671
  msgid "User session expiration time"
1672
  msgstr ""
1673
 
1674
+ #: ../cerber-users.php:443
1675
  msgid "Two-factor authentication"
1676
  msgstr ""
1677
 
1678
+ #: ../cerber-users.php:448
1679
  msgid "Advanced mode"
1680
  msgstr ""
1681
 
1682
+ #: ../cerber-users.php:452
1683
  msgid "Enforce two-factor authentication if any of the following conditions is true"
1684
  msgstr ""
1685
 
1686
+ #: ../cerber-users.php:458
1687
  msgid "Login from a different country"
1688
  msgstr ""
1689
 
1690
+ #: ../cerber-users.php:464
1691
  msgid "Login from a different network Class C"
1692
  msgstr ""
1693
 
1694
+ #: ../cerber-users.php:470
1695
  msgid "Login from a different IP address"
1696
  msgstr ""
1697
 
1698
+ #: ../cerber-users.php:476
1699
  msgid "Using a different browser or device"
1700
  msgstr ""
1701
 
1702
+ #: ../cerber-users.php:482
1703
  msgid "Enforce two-factor authentication with fixed intervals"
1704
  msgstr ""
1705
 
1706
+ #: ../cerber-users.php:488
1707
  msgid "Regular time intervals (days)"
1708
  msgstr ""
1709
 
1710
+ #: ../cerber-users.php:490
1711
  msgid "days interval"
1712
  msgstr ""
1713
 
1714
+ #: ../cerber-users.php:495
1715
  msgid "Fixed number of logins"
1716
  msgstr ""
1717
 
1718
+ #: ../cerber-users.php:497
1719
  msgid "number of logins"
1720
  msgstr ""
1721
 
1722
+ #: ../cerber-users.php:539
1723
  msgid "Policies have been updated"
1724
  msgstr ""
1725
 
1726
+ #: ../cerber-users.php:613
1727
  #, php-format
1728
  msgid "Session has been terminated"
1729
  msgid_plural "%s sessions have been terminated"
1730
  msgstr[0] ""
1731
  msgstr[1] ""
1732
 
1733
+ #: ../cerber-users.php:943
1734
  msgid "WP Cerber Personal Data Eraser"
1735
  msgstr ""
1736
 
1737
+ #: ../cerber-users.php:972
1738
  msgid "Created"
1739
  msgstr ""
1740
 
1741
+ #: ../cerber-users.php:993
1742
  msgid "Terminate session"
1743
  msgstr ""
1744
 
1745
+ #: ../cerber-users.php:994
1746
  msgid "Block user"
1747
  msgstr ""
1748
 
1749
+ #: ../cerber-users.php:1062 ../nexus/cerber-slave-list.php:244
1750
  msgid "Search results for:"
1751
  msgstr ""
1752
 
1753
+ #: ../cerber-users.php:1104
1754
  msgid "Profile"
1755
  msgstr ""
1756
 
1757
+ #: ../cerber-users.php:1117
1758
  msgid "All Logins"
1759
  msgstr ""
1760
 
1761
+ #: ../cerber-users.php:1118
1762
  msgid "User Activity"
1763
  msgstr ""
1764
 
1765
+ #: ../cerber-users.php:1164
1766
  msgid "Terminate"
1767
  msgstr ""
1768
 
1820
  msgid "Limit"
1821
  msgstr ""
1822
 
1823
+ #: ../settings.php:147
1824
  msgid "Lockout duration"
1825
  msgstr ""
1826
 
1827
+ #: ../settings.php:148 ../settings.php:249
1828
  msgid "minutes"
1829
  msgstr ""
1830
 
1832
  msgid "Aggressive lockout"
1833
  msgstr ""
1834
 
1835
+ #: ../settings.php:155 ../settings.php:501 ../settings.php:701
1836
  msgid "Use White IP Access List"
1837
  msgstr ""
1838
 
1950
  msgid "Threshold"
1951
  msgstr ""
1952
 
1953
+ #: ../settings.php:248 ../cerber-scanner.php:3967
1954
  msgid "Duration"
1955
  msgstr ""
1956
 
1963
  msgstr ""
1964
 
1965
  #: ../settings.php:270 ../settings.php:276 ../settings.php:789 ../settings.php:
1966
+ #: 795 ../settings.php:865 ../settings.php:1056
1967
  msgid "days"
1968
  msgstr ""
1969
 
1970
+ #: ../settings.php:275 ../settings.php:794
1971
  msgid "Keep log records of logged in users for"
1972
  msgstr ""
1973
 
2174
  msgid "Do not apply these policy to the IP addresses in the White IP Access List"
2175
  msgstr ""
2176
 
2177
+ #: ../settings.php:512 ../settings.php:1423
2178
  msgid "Only registered and logged in users are allowed to view this website"
2179
  msgstr ""
2180
 
2224
  msgstr ""
2225
 
2226
  #: ../settings.php:558
2227
+ msgid "minutes (leave empty to use the default WordPress value)"
2228
  msgstr ""
2229
 
2230
  #: ../settings.php:564
2289
  msgid "Lockout notifications"
2290
  msgstr ""
2291
 
2292
+ #: ../settings.php:628 ../settings.php:675 ../settings.php:920
2293
  msgid "Email Address"
2294
  msgstr ""
2295
 
2296
+ #: ../settings.php:629 ../settings.php:677 ../settings.php:760 ../settings.php:922
2297
  msgid "Use comma to specify multiple values"
2298
  msgstr ""
2299
 
2310
  msgid "notifications are allowed per hour (0 means unlimited)"
2311
  msgstr ""
2312
 
2313
+ #: ../settings.php:641
2314
  msgid "New version is available"
2315
  msgstr ""
2316
 
2317
+ #: ../settings.php:647
2318
  msgid "Push notifications"
2319
  msgstr ""
2320
 
2321
+ #: ../settings.php:648
2322
  msgid "Get notified instantly with mobile and desktop notifications"
2323
  msgstr ""
2324
 
2325
+ #: ../settings.php:652
2326
  msgid "Pushbullet access token"
2327
  msgstr ""
2328
 
2329
+ #: ../settings.php:655
2330
  msgid "Pushbullet device"
2331
  msgstr ""
2332
 
2333
+ #: ../settings.php:662
2334
  msgid "Weekly reports"
2335
  msgstr ""
2336
 
2337
+ #: ../settings.php:663
2338
  msgid ""
2339
  "Weekly report is a summary of all activities and suspicious events occurred "
2340
  "during the last seven days"
2341
  msgstr ""
2342
 
2343
+ #: ../settings.php:666
2344
  msgid "Enable reporting"
2345
  msgstr ""
2346
 
2347
+ #: ../settings.php:670
2348
  msgid "Send reports on"
2349
  msgstr ""
2350
 
2351
+ #: ../settings.php:676 ../settings.php:921
2352
  msgid "if empty, the email addresses from the notification settings will be used"
2353
  msgstr ""
2354
 
2355
+ #: ../settings.php:687
2356
  msgid "Traffic Inspection"
2357
  msgstr ""
2358
 
2359
+ #: ../settings.php:688
2360
  msgid ""
2361
  "Traffic Inspector is a context-aware web application firewall (WAF) that "
2362
  "protects your website by recognizing and denying malicious HTTP requests"
2363
  msgstr ""
2364
 
2365
+ #: ../settings.php:692
2366
  msgid "Enable traffic inspection"
2367
  msgstr ""
2368
 
2369
+ #: ../settings.php:696 ../settings.php:724
2370
  msgid "Maximum compatibility"
2371
  msgstr ""
2372
 
2373
+ #: ../settings.php:697 ../settings.php:725
2374
  msgid "Maximum security"
2375
  msgstr ""
2376
 
2377
+ #: ../settings.php:705
2378
  msgid "Request whitelist"
2379
  msgstr ""
2380
 
2381
+ #: ../settings.php:709
2382
  msgid ""
2383
  "Enter a request URI to exclude the request from inspection. One item per "
2384
  "line."
2385
  msgstr ""
2386
 
2387
+ #: ../settings.php:709
2388
  msgid "To specify a REGEX pattern, enclose a whole line in two braces."
2389
  msgstr ""
2390
 
2391
+ #: ../settings.php:715
2392
  msgid "Erroneous Request Shielding"
2393
  msgstr ""
2394
 
2395
+ #: ../settings.php:717
2396
  msgid ""
2397
  "Block IP addresses that send excessive requests for non-existing pages or "
2398
  "scan website for security breaches"
2399
  msgstr ""
2400
 
2401
+ #: ../settings.php:720
2402
  msgid "Enable error shielding"
2403
  msgstr ""
2404
 
2405
+ #: ../settings.php:729
2406
  msgid "Ignore logged in users"
2407
  msgstr ""
2408
 
2409
+ #: ../settings.php:736
2410
  msgid "Traffic Logging"
2411
  msgstr ""
2412
 
2413
+ #: ../settings.php:737
2414
  msgid ""
2415
  "Enable optional traffic logging if you need to monitor suspicious and "
2416
  "malicious activity or solve security issues"
2417
  msgstr ""
2418
 
2419
+ #: ../settings.php:741
2420
  msgid "Logging mode"
2421
  msgstr ""
2422
 
2423
+ #: ../settings.php:744
2424
  msgid "Logging disabled"
2425
  msgstr ""
2426
 
2427
+ #: ../settings.php:745
2428
  msgid "Smart"
2429
  msgstr ""
2430
 
2431
+ #: ../settings.php:746
2432
  msgid "All traffic"
2433
  msgstr ""
2434
 
2435
+ #: ../settings.php:750
2436
  msgid "Ignore crawlers"
2437
  msgstr ""
2438
 
2439
+ #: ../settings.php:754
2440
  msgid "Save request fields"
2441
  msgstr ""
2442
 
2443
+ #: ../settings.php:758
2444
  msgid "Mask these form fields"
2445
  msgstr ""
2446
 
2447
+ #: ../settings.php:765
2448
  msgid "Save request headers"
2449
  msgstr ""
2450
 
2451
+ #: ../settings.php:770
2452
  msgid "Save $_SERVER"
2453
  msgstr ""
2454
 
2455
+ #: ../settings.php:774
2456
  msgid "Save request cookies"
2457
  msgstr ""
2458
 
2459
+ #: ../settings.php:778
2460
  msgid "Save software errors"
2461
  msgstr ""
2462
 
2463
+ #: ../settings.php:782
2464
  msgid "Page generation time threshold"
2465
  msgstr ""
2466
 
2467
+ #: ../settings.php:783
2468
  msgid "milliseconds"
2469
  msgstr ""
2470
 
2471
+ #: ../settings.php:803
2472
  msgid "Scanner settings"
2473
  msgstr ""
2474
 
2475
+ #: ../settings.php:804
2476
  msgid ""
2477
  "The scanner monitors file changes, verifies the integrity of WordPress, "
2478
  "plugins, and themes, and detects malware"
2479
  msgstr ""
2480
 
2481
+ #: ../settings.php:808
2482
  msgid "Custom signatures"
2483
  msgstr ""
2484
 
2485
+ #: ../settings.php:812
2486
  msgid ""
2487
  "Specify custom PHP code signatures. One item per line. To specify a REGEX "
2488
  "pattern, enclose a whole line in two braces."
2489
  msgstr ""
2490
 
2491
+ #: ../settings.php:815
2492
  msgid "Unwanted file extensions"
2493
  msgstr ""
2494
 
2495
+ #: ../settings.php:819
2496
  msgid ""
2497
  "Specify file extensions to search for. Full scan only. Use comma to separate "
2498
  "items."
2499
  msgstr ""
2500
 
2501
+ #: ../settings.php:822
2502
  msgid "Directories to exclude"
2503
  msgstr ""
2504
 
2505
+ #: ../settings.php:826
2506
  msgid "Specify directories to exclude from scanning. One directory per line."
2507
  msgstr ""
2508
 
2509
+ #: ../settings.php:829
2510
  msgid "Monitor new files"
2511
  msgstr ""
2512
 
2513
+ #: ../settings.php:833 ../settings.php:842
2514
  msgid "Executable files"
2515
  msgstr ""
2516
 
2517
+ #: ../settings.php:834 ../settings.php:843
2518
  msgid "All files"
2519
  msgstr ""
2520
 
2521
+ #: ../settings.php:838
2522
  msgid "Monitor modified files"
2523
  msgstr ""
2524
 
2525
+ #: ../settings.php:847
2526
+ msgid "Change file permissions when necessary"
2527
+ msgstr ""
2528
+
2529
+ #: ../settings.php:851
2530
  msgid "Scan temporary directory"
2531
  msgstr ""
2532
 
2533
+ #: ../settings.php:855
2534
  msgid "Scan session directory"
2535
  msgstr ""
2536
 
2537
+ #: ../settings.php:859 ../settings.php:1161 ../settings.php:1188
2538
  msgid "Enable diagnostic logging"
2539
  msgstr ""
2540
 
2541
+ #: ../settings.php:863
2542
  msgid "Delete quarantined files after"
2543
  msgstr ""
2544
 
2545
+ #: ../settings.php:872
2546
  msgid "Automated recurring scan schedule"
2547
  msgstr ""
2548
 
2549
+ #: ../settings.php:873
2550
  msgid ""
2551
  "The scanner automatically scans the website, removes malware and sends email "
2552
  "reports with the results of a scan"
2553
  msgstr ""
2554
 
2555
+ #: ../settings.php:877
2556
  msgid "Launch Quick Scan"
2557
  msgstr ""
2558
 
2559
+ #: ../settings.php:882
2560
  msgid "Launch Full Scan"
2561
  msgstr ""
2562
 
2563
+ #: ../settings.php:889
2564
  msgid "Scan results reporting"
2565
  msgstr ""
2566
 
2567
+ #: ../settings.php:890
2568
  msgid ""
2569
  "Configure what issues to include in the email report and the condition for "
2570
  "sending reports"
2571
  msgstr ""
2572
 
2573
+ #: ../settings.php:894
2574
  msgid "Report an issue if any of the following is true"
2575
  msgstr ""
2576
 
2577
+ #: ../settings.php:897 ../settings.php:943
2578
  msgid "Low severity"
2579
  msgstr ""
2580
 
2581
+ #: ../settings.php:898 ../settings.php:944
2582
  msgid "Medium severity"
2583
  msgstr ""
2584
 
2585
+ #: ../settings.php:899 ../settings.php:945
2586
  msgid "High severity"
2587
  msgstr ""
2588
 
2589
+ #: ../settings.php:903
2590
  msgid "Send email report"
2591
  msgstr ""
2592
 
2593
+ #: ../settings.php:906
2594
  msgid "After every scan"
2595
  msgstr ""
2596
 
2597
+ #: ../settings.php:907
2598
  msgid "If any changes in scan results occurred"
2599
  msgstr ""
2600
 
2601
+ #: ../settings.php:908
2602
  msgid "If new issues found"
2603
  msgstr ""
2604
 
2605
+ #: ../settings.php:912
2606
  msgid "Include file sizes"
2607
  msgstr ""
2608
 
2609
+ #: ../settings.php:916
2610
  msgid "Include scan errors"
2611
  msgstr ""
2612
 
2613
+ #: ../settings.php:931
2614
  msgid "Automatic cleanup of malware and suspicious files"
2615
  msgstr ""
2616
 
2617
+ #: ../settings.php:932
2618
  msgid ""
2619
  "These policies are automatically enforced at the end of every scheduled scan "
2620
  "based on its results. All affected files are moved to the quarantine"
2621
  msgstr ""
2622
 
2623
+ #: ../settings.php:936
2624
  msgid "Delete unattended files"
2625
  msgstr ""
2626
 
2627
+ #: ../settings.php:940
2628
  msgid "Files in the uploads folder"
2629
  msgstr ""
2630
 
2631
+ #: ../settings.php:949
2632
  msgid "Files with unwanted extensions"
2633
  msgstr ""
2634
 
2635
+ #: ../settings.php:955
2636
  msgid "Automatic recovery of modified and infected files"
2637
  msgstr ""
2638
 
2639
+ #: ../settings.php:958
2640
  msgid "Recover WordPress files"
2641
  msgstr ""
2642
 
2643
+ #: ../settings.php:962
2644
  msgid "Recover plugins files"
2645
  msgstr ""
2646
 
2647
+ #: ../settings.php:968
2648
  msgid "Exclusions"
2649
  msgstr ""
2650
 
2651
+ #: ../settings.php:969
2652
  msgid "These files will never be deleted during automatic cleanup."
2653
  msgstr ""
2654
 
2655
+ #: ../settings.php:972
2656
  msgid "Files in the temporary directory"
2657
  msgstr ""
2658
 
2659
+ #: ../settings.php:976
2660
  msgid "Files in the sessions directory"
2661
  msgstr ""
2662
 
2663
+ #: ../settings.php:980
2664
  msgid "Files in these directories"
2665
  msgstr ""
2666
 
2667
+ #: ../settings.php:984
2668
  msgid "Use absolute paths. One item per line."
2669
  msgstr ""
2670
 
2671
+ #: ../settings.php:987
2672
  msgid "Files with these extensions"
2673
  msgstr ""
2674
 
2675
+ #: ../settings.php:991
2676
  msgid "Use comma to separate items."
2677
  msgstr ""
2678
 
2679
+ #: ../settings.php:998
2680
  msgid "Cerber anti-spam engine"
2681
  msgstr ""
2682
 
2683
+ #: ../settings.php:999
2684
  msgid "Spam protection for comment, registration and contact forms on a website"
2685
  msgstr ""
2686
 
2687
+ #: ../settings.php:1003
2688
  msgid "Comment form"
2689
  msgstr ""
2690
 
2691
+ #: ../settings.php:1004
2692
  msgid "Protect comment form with bot detection engine"
2693
  msgstr ""
2694
 
2695
+ #: ../settings.php:1008 ../settings.php:1080
2696
  msgid "Registration form"
2697
  msgstr ""
2698
 
2699
+ #: ../settings.php:1009
2700
  msgid "Protect registration form with bot detection engine"
2701
  msgstr ""
2702
 
2703
+ #: ../settings.php:1013
2704
  msgid "Other forms"
2705
  msgstr ""
2706
 
2707
+ #: ../settings.php:1014
2708
  msgid "Protect all forms on the website with bot detection engine"
2709
  msgstr ""
2710
 
2711
+ #: ../settings.php:1020
2712
  msgid "Adjust anti-spam engine"
2713
  msgstr ""
2714
 
2715
+ #: ../settings.php:1021
2716
  msgid ""
2717
  "These settings enable you to fine-tune the behavior of anti-spam algorithms "
2718
  "and avoid false positives"
2719
  msgstr ""
2720
 
2721
+ #: ../settings.php:1024
2722
  msgid "Safe mode"
2723
  msgstr ""
2724
 
2725
+ #: ../settings.php:1025
2726
  msgid "Use less restrictive policies (allow AJAX)"
2727
  msgstr ""
2728
 
2729
+ #: ../settings.php:1030
2730
  msgid "Disable bot detection engine for logged in users"
2731
  msgstr ""
2732
 
2733
+ #: ../settings.php:1034
2734
  msgid "Query whitelist"
2735
  msgstr ""
2736
 
2737
+ #: ../settings.php:1035
2738
  msgid ""
2739
  "Enter a part of query string or query path to exclude a request from "
2740
  "inspection by the engine. One item per line."
2741
  msgstr ""
2742
 
2743
+ #: ../settings.php:1044
2744
  msgid "Comment processing"
2745
  msgstr ""
2746
 
2747
+ #: ../settings.php:1045
2748
  msgid "How the plugin processes comments submitted through the standard comment form"
2749
  msgstr ""
2750
 
2751
+ #: ../settings.php:1048
2752
  msgid "If a spam comment detected"
2753
  msgstr ""
2754
 
2755
+ #: ../settings.php:1050
2756
  msgid "Deny it completely"
2757
  msgstr ""
2758
 
2759
+ #: ../settings.php:1050
2760
  msgid "Mark it as spam"
2761
  msgstr ""
2762
 
2763
+ #: ../settings.php:1053
2764
  msgid "Trash spam comments"
2765
  msgstr ""
2766
 
2767
+ #: ../settings.php:1055
2768
  msgid "Move spam comments to trash after"
2769
  msgstr ""
2770
 
2771
+ #: ../settings.php:1062
2772
  msgid "reCAPTCHA settings"
2773
  msgstr ""
2774
 
2775
+ #: ../settings.php:1063
2776
  msgid ""
2777
  "Before you can start using reCAPTCHA, you have to obtain Site key and Secret "
2778
  "key on the Google website"
2779
  msgstr ""
2780
 
2781
+ #: ../settings.php:1067
2782
  msgid "Site key"
2783
  msgstr ""
2784
 
2785
+ #: ../settings.php:1071
2786
  msgid "Secret key"
2787
  msgstr ""
2788
 
2789
+ #: ../settings.php:1075
2790
  msgid "Invisible reCAPTCHA"
2791
  msgstr ""
2792
 
2793
+ #: ../settings.php:1076
2794
  msgid "Enable invisible reCAPTCHA"
2795
  msgstr ""
2796
 
2797
+ #: ../settings.php:1076
2798
  msgid ""
2799
  "(do not enable it unless you get and enter the Site and Secret keys for the "
2800
  "invisible version)"
2801
  msgstr ""
2802
 
2803
+ #: ../settings.php:1081
2804
  msgid "Enable reCAPTCHA for WordPress registration form"
2805
  msgstr ""
2806
 
2807
+ #: ../settings.php:1086
2808
  msgid "Enable reCAPTCHA for WooCommerce registration form"
2809
  msgstr ""
2810
 
2811
+ #: ../settings.php:1090
2812
  msgid "Lost password form"
2813
  msgstr ""
2814
 
2815
+ #: ../settings.php:1091
2816
  msgid "Enable reCAPTCHA for WordPress lost password form"
2817
  msgstr ""
2818
 
2819
+ #: ../settings.php:1096
2820
  msgid "Enable reCAPTCHA for WooCommerce lost password form"
2821
  msgstr ""
2822
 
2823
+ #: ../settings.php:1100
2824
  msgid "Login form"
2825
  msgstr ""
2826
 
2827
+ #: ../settings.php:1101
2828
  msgid "Enable reCAPTCHA for WordPress login form"
2829
  msgstr ""
2830
 
2831
+ #: ../settings.php:1106
2832
  msgid "Enable reCAPTCHA for WooCommerce login form"
2833
  msgstr ""
2834
 
2835
+ #: ../settings.php:1111
2836
  msgid "Enable reCAPTCHA for WordPress comment form"
2837
  msgstr ""
2838
 
2839
+ #: ../settings.php:1116
2840
  msgid "Disable reCAPTCHA for logged in users"
2841
  msgstr ""
2842
 
2843
+ #: ../settings.php:1120
2844
  msgid "Limit attempts"
2845
  msgstr ""
2846
 
2847
+ #: ../settings.php:1121
2848
  #, php-format
2849
  msgid "Lock out IP address for %s minutes after %s failed attempts within %s minutes"
2850
  msgstr ""
2851
 
2852
+ #: ../settings.php:1128
2853
  msgid "Master settings"
2854
  msgstr ""
2855
 
2856
+ #: ../settings.php:1136
2857
  msgid "Return to the website list"
2858
  msgstr ""
2859
 
2860
+ #: ../settings.php:1140
2861
  msgid "Show \"Switched to\" notification"
2862
  msgstr ""
2863
 
2864
+ #: ../settings.php:1144
2865
  msgid "Add @ site to the page title"
2866
  msgstr ""
2867
 
2868
+ #: ../settings.php:1148
2869
  msgid "Use master language"
2870
  msgstr ""
2871
 
2872
+ #: ../settings.php:1171
2873
  msgid "Limit access by IP address"
2874
  msgstr ""
2875
 
2876
+ #: ../settings.php:1177
2877
  msgid "Access to this website"
2878
  msgstr ""
2879
 
2880
+ #: ../settings.php:1180
2881
  msgid "Full access mode"
2882
  msgstr ""
2883
 
2884
+ #: ../settings.php:1181
2885
  msgid "Read-only mode"
2886
  msgstr ""
2887
 
2888
+ #: ../settings.php:1201
2889
  msgid "The full access mode requires the PRO version of WP Cerber"
2890
  msgstr ""
2891
 
2892
+ #: ../settings.php:1269
2893
  msgid "Any activity"
2894
  msgstr ""
2895
 
3006
  msgid "Download file"
3007
  msgstr ""
3008
 
3009
+ #: ../cerber-tools.php:43
3010
  msgid "Import settings from the file"
3011
  msgstr ""
3012
 
3013
+ #: ../cerber-tools.php:44
3014
  msgid ""
3015
  "When you click the button below, file will be uploaded and all existing "
3016
  "settings will be overridden."
3017
  msgstr ""
3018
 
3019
+ #: ../cerber-tools.php:45
3020
  msgid "Select file to import."
3021
  msgstr ""
3022
 
3023
+ #: ../cerber-tools.php:45 ../cerber-scanner.php:4115
3024
  #, php-format
3025
  msgid "Maximum upload file size: %s."
3026
  msgstr ""
3027
 
3028
+ #: ../cerber-tools.php:48
3029
  msgid "What do you want to import?"
3030
  msgstr ""
3031
 
3032
+ #: ../cerber-tools.php:50 ../cerber-scanner.php:4118
3033
  msgid "Upload file"
3034
  msgstr ""
3035
 
3036
+ #: ../cerber-tools.php:58
3037
+ msgid "Load entries"
3038
+ msgstr ""
3039
+
3040
+ #: ../cerber-tools.php:177
3041
  msgid "No file was uploaded or file is corrupted"
3042
  msgstr ""
3043
 
3044
+ #: ../cerber-tools.php:216
3045
  msgid "A database error occurred while importing access list entries"
3046
  msgstr ""
3047
 
3048
+ #: ../cerber-tools.php:224
3049
  msgid "Settings has imported successfully from"
3050
  msgstr ""
3051
 
3052
+ #: ../cerber-tools.php:231
3053
  msgid "Error while parsing file"
3054
  msgstr ""
3055
 
3056
+ #: ../cerber-tools.php:319
3057
  msgid "Unsubscribe"
3058
  msgstr ""
3059
 
3125
  msgid "Switch to"
3126
  msgstr ""
3127
 
3128
+ #: ../nexus/cerber-slave-list.php:337 ../cerber-scanner.php:3983
3129
  msgid "Vulnerabilities"
3130
  msgstr ""
3131
 
3264
  msgid "Active plugins and updates on"
3265
  msgstr ""
3266
 
3267
+ #: ../nexus/cerber-nexus-slave.php:436
3268
  msgid "Settings updated"
3269
  msgstr ""
3270
 
3365
  msgid "Ignore"
3366
  msgstr ""
3367
 
3368
+ #: ../cerber-scanner.php:1566
3369
  msgid "Verified"
3370
  msgstr ""
3371
 
3372
+ #: ../cerber-scanner.php:1572
3373
  msgid "Vulnerability found"
3374
  msgstr ""
3375
 
3376
+ #: ../cerber-scanner.php:1573
3377
  msgid "Integrity data not found"
3378
  msgstr ""
3379
 
3380
+ #: ../cerber-scanner.php:1574
3381
  msgid "Unable to check the integrity of the plugin due to a network error"
3382
  msgstr ""
3383
 
3384
+ #: ../cerber-scanner.php:1575
3385
  msgid "Unable to check the integrity of WordPress files due to a network error"
3386
  msgstr ""
3387
 
3388
+ #: ../cerber-scanner.php:1576
3389
  msgid "Unable to check the integrity of the theme due to a network error"
3390
  msgstr ""
3391
 
3392
+ #: ../cerber-scanner.php:1577
3393
  msgid "Unable to check the integrity due to a DB error"
3394
  msgstr ""
3395
 
3396
+ #: ../cerber-scanner.php:1579
3397
  msgid "Local file doesn't exist"
3398
  msgstr ""
3399
 
3400
+ #: ../cerber-scanner.php:1581
3401
  msgid "Unable to process file"
3402
  msgstr ""
3403
 
3404
+ #: ../cerber-scanner.php:1582 ../cerber-scanner.php:5184
3405
  msgid "Unable to open file"
3406
  msgstr ""
3407
 
3408
+ #: ../cerber-scanner.php:1584 ../cerber-scanner.php:3995
3409
  msgid "Checksum mismatch"
3410
  msgstr ""
3411
 
3412
+ #: ../cerber-scanner.php:1587
3413
  msgid "Suspicious code found"
3414
  msgstr ""
3415
 
3416
+ #: ../cerber-scanner.php:1588
3417
  msgid "Malicious code found"
3418
  msgstr ""
3419
 
3420
+ #: ../cerber-scanner.php:1589
3421
  msgid "Unattended suspicious file"
3422
  msgstr ""
3423
 
3424
+ #: ../cerber-scanner.php:1590
3425
  msgid "Executable code found"
3426
  msgstr ""
3427
 
3428
+ #: ../cerber-scanner.php:1593 ../cerber-scanner.php:2823
3429
  msgid "Suspicious directives found"
3430
  msgstr ""
3431
 
3432
+ #: ../cerber-scanner.php:1594
3433
  msgid "Unwanted file extension"
3434
  msgstr ""
3435
 
3436
+ #: ../cerber-scanner.php:1596
3437
  msgid "Content has been modified"
3438
  msgstr ""
3439
 
3440
+ #: ../cerber-scanner.php:1597
3441
  msgid "New file"
3442
  msgstr ""
3443
 
3444
+ #: ../cerber-scanner.php:1599
3445
  msgid "Unable to delete"
3446
  msgstr ""
3447
 
3448
+ #: ../cerber-scanner.php:1600
3449
  msgid "File deleted"
3450
  msgstr ""
3451
 
3452
+ #: ../cerber-scanner.php:1601
3453
  msgid "File recovered"
3454
  msgstr ""
3455
 
3456
+ #: ../cerber-scanner.php:1621
3457
  msgid "Every hour"
3458
  msgstr ""
3459
 
3460
+ #: ../cerber-scanner.php:1622
3461
  msgid "Every 3 hours"
3462
  msgstr ""
3463
 
3464
+ #: ../cerber-scanner.php:1623
3465
  msgid "Every 6 hours"
3466
  msgstr ""
3467
 
3468
+ #: ../cerber-scanner.php:2643
3469
  msgid "Custom signature found"
3470
  msgstr ""
3471
 
3472
+ #: ../cerber-scanner.php:2818
3473
  msgid ""
3474
  "This file contains executable code and may contain obfuscated malware. If "
3475
  "this file is a part of a theme or a plugin, it must be located in the theme "
3476
  "or the plugin folder. No exception, no excuses."
3477
  msgstr ""
3478
 
3479
+ #: ../cerber-scanner.php:2819
3480
  msgid ""
3481
  "The scanner recognizes this file as \"ownerless\" or \"not bundled\" because it "
3482
  "does not belong to any known part of the website and should not be here."
3483
  msgstr ""
3484
 
3485
+ #: ../cerber-scanner.php:2820
3486
  #, php-format
3487
  msgid ""
3488
  "It may remain after upgrading to a newer version of %s. It also may be a "
3490
  "made (bespoke) plugin or theme."
3491
  msgstr ""
3492
 
3493
+ #: ../cerber-scanner.php:2821
3494
  msgid "Suspicious code instruction found"
3495
  msgstr ""
3496
 
3497
+ #: ../cerber-scanner.php:2822
3498
  msgid "Suspicious code signatures found"
3499
  msgstr ""
3500
 
3501
+ #: ../cerber-scanner.php:2824
3502
  msgid ""
3503
  "The contents of the file have been changed and do not match what exists in "
3504
  "the official WordPress repository or a reference file you have uploaded "
3506
  "has been tampered with."
3507
  msgstr ""
3508
 
3509
+ #: ../cerber-scanner.php:2825
3510
  #, php-format
3511
  msgid ""
3512
  "To solve this issue you have to reinstall %s or update it to the latest "
3513
  "version."
3514
  msgstr ""
3515
 
3516
+ #: ../cerber-scanner.php:2826
3517
  msgid "Please upload a reference ZIP archive"
3518
  msgstr ""
3519
 
3520
+ #: ../cerber-scanner.php:2827
3521
  msgid "Resolve issue"
3522
  msgstr ""
3523
 
3524
+ #: ../cerber-scanner.php:3871
3525
  msgid "Preparing for the scan"
3526
  msgstr ""
3527
 
3528
+ #: ../cerber-scanner.php:3872
3529
  msgid "Scanning folders for files"
3530
  msgstr ""
3531
 
3532
+ #: ../cerber-scanner.php:3873
3533
  msgid "Scanning the upload folder for files"
3534
  msgstr ""
3535
 
3536
+ #: ../cerber-scanner.php:3874
3537
  msgid "Scanning the temp folder for files"
3538
  msgstr ""
3539
 
3540
+ #: ../cerber-scanner.php:3875
3541
  msgid "Scanning the session folder for files"
3542
  msgstr ""
3543
 
3544
+ #: ../cerber-scanner.php:3876
3545
  msgid "Parsing the list of files"
3546
  msgstr ""
3547
 
3548
+ #: ../cerber-scanner.php:3877
3549
  msgid "Checking for new and modified files"
3550
  msgstr ""
3551
 
3552
+ #: ../cerber-scanner.php:3878
3553
  msgid "Verifying the integrity of WordPress"
3554
  msgstr ""
3555
 
3556
+ #: ../cerber-scanner.php:3879
3557
  msgid "Recovering WordPress files"
3558
  msgstr ""
3559
 
3560
+ #: ../cerber-scanner.php:3880
3561
  msgid "Verifying the integrity of the plugins"
3562
  msgstr ""
3563
 
3564
+ #: ../cerber-scanner.php:3881
3565
  msgid "Recovering plugins files"
3566
  msgstr ""
3567
 
3568
+ #: ../cerber-scanner.php:3882
3569
  msgid "Verifying the integrity of the themes"
3570
  msgstr ""
3571
 
3572
+ #: ../cerber-scanner.php:3883
3573
  msgid "Searching for malicious code"
3574
  msgstr ""
3575
 
3576
+ #: ../cerber-scanner.php:3884
3577
  msgid "Finalizing the scan"
3578
  msgstr ""
3579
 
3580
+ #: ../cerber-scanner.php:3959
3581
  msgid "Started"
3582
  msgstr ""
3583
 
3584
+ #: ../cerber-scanner.php:3963
3585
  msgid "Finished"
3586
  msgstr ""
3587
 
3588
+ #: ../cerber-scanner.php:3971
3589
  msgid "Performance"
3590
  msgstr ""
3591
 
3592
+ #: ../cerber-scanner.php:3987
3593
  msgid "New files"
3594
  msgstr ""
3595
 
3596
+ #: ../cerber-scanner.php:3991
3597
  msgid "Changed files"
3598
  msgstr ""
3599
 
3600
+ #: ../cerber-scanner.php:3999
3601
  msgid "Unwanted extensions"
3602
  msgstr ""
3603
 
3604
+ #: ../cerber-scanner.php:4003
3605
  msgid "Unattended files"
3606
  msgstr ""
3607
 
3608
+ #: ../cerber-scanner.php:4012 ../cerber-scanner.php:5825
3609
  msgid "Scanned"
3610
  msgstr ""
3611
 
3612
+ #: ../cerber-scanner.php:4012
3613
  msgid "Files to scan"
3614
  msgstr ""
3615
 
3616
+ #: ../cerber-scanner.php:4019
3617
  msgid "Critical issues"
3618
  msgstr ""
3619
 
3620
+ #: ../cerber-scanner.php:4019 ../cerber-scanner.php:5357
3621
  msgid "Issues total"
3622
  msgstr ""
3623
 
3624
+ #: ../cerber-scanner.php:4112
3625
  msgid "We have not found any integrity data to verify"
3626
  msgstr ""
3627
 
3628
+ #: ../cerber-scanner.php:4114
3629
  msgid ""
3630
  "You have to upload a ZIP archive from which you've installed it. This "
3631
  "enables the security scanner to verify the integrity of the code and detect "
3632
  "malware."
3633
  msgstr ""
3634
 
3635
+ #: ../cerber-scanner.php:4741
3636
  msgid ""
3637
  "File access error. Possibly scan results are outdated. Please run Quick or "
3638
  "Full Scan."
3639
  msgstr ""
3640
 
3641
+ #: ../cerber-scanner.php:5313
3642
  msgid "Full Scan Report"
3643
  msgstr ""
3644
 
3645
+ #: ../cerber-scanner.php:5313
3646
  msgid "Quick Scan Report"
3647
  msgstr ""
3648
 
3649
+ #: ../cerber-scanner.php:5326
3650
  msgid "Files scanned"
3651
  msgstr ""
3652
 
3653
+ #: ../cerber-scanner.php:5411
3654
  msgid "Deleted"
3655
  msgstr ""
3656
 
3657
+ #: ../cerber-scanner.php:5415
3658
  msgid "Recovered"
3659
  msgstr ""
3660
 
3661
+ #: ../cerber-scanner.php:5464
3662
  msgid "Automatically moved to quarantine"
3663
  msgstr ""
3664
 
3665
+ #: ../cerber-scanner.php:5465
3666
  msgid "Automatically deleted"
3667
  msgstr ""
3668
 
3669
+ #: ../cerber-scanner.php:5468
3670
  msgid "Automatically recovered"
3671
  msgstr ""
3672
 
3673
+ #: ../cerber-scanner.php:5480
3674
  msgid "To view full report visit"
3675
  msgstr ""
3676
 
3677
+ #: ../cerber-scanner.php:5724
3678
  msgid "There are no files in the quarantine at the moment."
3679
  msgstr ""
3680
 
3681
+ #: ../cerber-scanner.php:5791
3682
  msgid "No files match the specified filter."
3683
  msgstr ""
3684
 
3685
+ #: ../cerber-scanner.php:5791
3686
  msgid "Click here to see the full list of files"
3687
  msgstr ""
3688
 
3689
+ #: ../cerber-scanner.php:5811
3690
  msgid "Delete permanently"
3691
  msgstr ""
3692
 
3693
+ #: ../cerber-scanner.php:5814
3694
  msgid "Restore"
3695
  msgstr ""
3696
 
3697
+ #: ../cerber-scanner.php:5826
3698
  msgid "Moved to quarantine"
3699
  msgstr ""
3700
 
3701
+ #: ../cerber-scanner.php:5827
3702
  msgid "Automatic deletion"
3703
  msgstr ""
3704
 
3705
+ #: ../cerber-scanner.php:5828
3706
  msgid "Size"
3707
  msgstr ""
3708
 
3709
+ #: ../cerber-scanner.php:5829 ../cerber-scanner.php:5977
3710
  msgid "File"
3711
  msgstr ""
3712
 
3713
+ #: ../cerber-scanner.php:5843
3714
  msgid "All scans"
3715
  msgstr ""
3716
 
3717
+ #: ../cerber-scanner.php:5905
3718
  msgid "The file has been deleted permanently."
3719
  msgstr ""
3720
 
3721
+ #: ../cerber-scanner.php:5919
3722
  msgid "The file has been restored to its original location."
3723
  msgstr ""
3724
 
3725
+ #: ../cerber-scanner.php:5942
3726
  msgid "Apply"
3727
  msgstr ""
3728
 
3729
+ #: ../cerber-scanner.php:5943 ../cerber-scanner.php:5970
3730
  msgid "Remove from the list"
3731
  msgstr ""
3732
 
3733
+ #: ../cerber-scanner.php:5944
3734
  msgid "User Insights"
3735
  msgstr ""
3736
 
3737
+ #: ../cerber-scanner.php:5945
3738
  msgid "Traffic Insights"
3739
  msgstr ""
3740
 
3741
+ #: ../cerber-scanner.php:5946
3742
  msgid "Activity Insights"
3743
  msgstr ""
3744
 
3745
+ #: ../cerber-scanner.php:5948
3746
  msgid "The list is empty."
3747
  msgstr ""
3748
 
3749
+ #: ../cerber-scanner.php:5976
3750
  msgid "Added"
3751
  msgstr ""
nexus/cerber-nexus-slave.php CHANGED
@@ -153,25 +153,10 @@ function nexus_slave_process() {
153
  }
154
 
155
  @ini_set( 'display_errors', 0 );
156
- @set_time_limit( 180 );
157
- @ini_set( 'max_execution_time', 180 );
158
  @ignore_user_abort( true );
159
- cerber_update_set( 'processing_master_request', 1, 0, false, time() + 120 );
160
-
161
- /*
162
- if ( function_exists( 'cerber_mode' ) ) {
163
- nexus_diag_log( '+++++++++++++++++++++++++++++++++++++' );
164
- }
165
- nexus_diag_log( 'CGM ' . cerber_get_mode() );
166
- nexus_diag_log( 'CGS' . crb_get_settings( 'boot-mode' ) );
167
- if (defined('CERBER_MODE')) {
168
- nexus_diag_log( 'CONSTA! ' .CERBER_MODE);
169
- }
170
- nexus_diag_log('===='.print_r(get_included_files(),1));
171
-
172
- //cerber_check_environment();
173
 
174
- */
175
 
176
  nexus_diag_log( 'Parsing request...' );
177
 
153
  }
154
 
155
  @ini_set( 'display_errors', 0 );
 
 
156
  @ignore_user_abort( true );
157
+ crb_raise_limits();
 
 
 
 
 
 
 
 
 
 
 
 
 
158
 
159
+ cerber_update_set( 'processing_master_request', 1, 0, false, time() + 120 );
160
 
161
  nexus_diag_log( 'Parsing request...' );
162
 
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: security, malware scanner, antispam, firewall, limit login attempts, custo
4
  Requires at least: 4.9
5
  Requires PHP: 5.6
6
  Tested up to: 5.4
7
- Stable tag: 8.6
8
  License: GPLv2
9
 
10
  Protection against hacker attacks and bots. Malware scanner & integrity checker. User activity log. Antispam reCAPTCHA. Limit login attempts.
@@ -329,6 +329,13 @@ To get access to your dashboard you need to copy the WP Cerber Reset folder to t
329
 
330
 
331
  == Changelog ==
 
 
 
 
 
 
 
332
 
333
  = 8.6 =
334
  * New: [An integration with the Cloudflare cloud-based firewall. It’s implemented as a special WP Cerber add-on.](https://wpcerber.com/cloudflare-add-on-wp-cerber/)
4
  Requires at least: 4.9
5
  Requires PHP: 5.6
6
  Tested up to: 5.4
7
+ Stable tag: 8.6.3
8
  License: GPLv2
9
 
10
  Protection against hacker attacks and bots. Malware scanner & integrity checker. User activity log. Antispam reCAPTCHA. Limit login attempts.
329
 
330
 
331
  == Changelog ==
332
+ = 8.6.3 =
333
+ * New: Ability to load IP access list's entries in the CSV format (bulk load).
334
+ * Update: A new malware scanner setting allows you to permit the scanner to change permissions of folders and files when required.
335
+ * Fixed: The access list IPv4 wildcard *.*.*.* doesn’t work (has no effect).
336
+ * Fixed: If the anti-spam query whitelist contains more than one entry, they do not work as expected.
337
+ * Fixed: Several settings fields are not properly escaped.
338
+ * [Read more](https://wpcerber.com/wp-cerber-security-8-6-3/)
339
 
340
  = 8.6 =
341
  * New: [An integration with the Cloudflare cloud-based firewall. It’s implemented as a special WP Cerber add-on.](https://wpcerber.com/cloudflare-add-on-wp-cerber/)
settings.php CHANGED
@@ -142,10 +142,10 @@ function cerber_settings_config( $args = array() ) {
142
  'title' => __( 'Limit', 'wp-cerber' ),
143
  'type' => 'attempts',
144
  ),
145
- 'lockout' => array(
 
146
  'title' => __( 'Lockout duration', 'wp-cerber' ),
147
  'label' => __( 'minutes', 'wp-cerber' ),
148
- 'size' => 3,
149
  ),
150
  'aggressive' => array(
151
  'title' => __( 'Aggressive lockout', 'wp-cerber' ),
@@ -233,21 +233,21 @@ function cerber_settings_config( $args = array() ) {
233
  'name' => __( 'Citadel mode', 'wp-cerber' ),
234
  'desc' => __( '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.', 'wp-cerber' ),
235
  'fields' => array(
236
- 'citadel_on' => array(
237
  'title' => __( 'Enable authentication log monitoring', 'wp-cerber' ),
238
  //'doclink' => 'https://wpcerber.com/only-logged-in-wordpress-users/',
239
  'type' => 'checkbox',
240
  'default' => 0,
241
  ),
242
  'citadel' => array(
243
- 'title' => __( 'Threshold', 'wp-cerber' ),
244
- 'type' => 'citadel',
245
  'enabler' => array( 'citadel_on' ),
246
  ),
247
  'ciduration' => array(
248
- 'title' => __( 'Duration', 'wp-cerber' ),
249
- 'label' => __( 'minutes', 'wp-cerber' ),
250
- 'size' => 3,
251
  'enabler' => array( 'citadel_on' ),
252
  ),
253
  'cinotify' => array(
@@ -269,13 +269,13 @@ function cerber_settings_config( $args = array() ) {
269
  'title' => __( 'Keep log records of not logged in visitors for', 'wp-cerber' ),
270
  'label' => __( 'days', 'wp-cerber' ),
271
  //'label' => __( 'days, not logged in visitors', 'wp-cerber' ),
272
- 'size' => 3
273
  ),
274
  'keeplog_auth' => array(
275
  'title' => __( 'Keep log records of logged in users for', 'wp-cerber' ),
276
  'label' => __( 'days', 'wp-cerber' ),
277
  //'label' => __( 'days, logged in users', 'wp-cerber' ),
278
- 'size' => 3
279
  ),
280
  'cerberlab' => array(
281
  'title' => __( 'Cerber Lab connection', 'wp-cerber' ),
@@ -555,10 +555,10 @@ function cerber_settings_config( $args = array() ) {
555
  ),
556
  'auth_expire' => array(
557
  'title' => __( 'User session expiration time', 'wp-cerber' ),
558
- 'label' => __( 'in minutes (leave empty to use default WP value)', 'wp-cerber' ),
559
  'default' => '',
560
  'size' => 6,
561
- 'type' => 'number',
562
  ),
563
  'usersort' => array(
564
  'title' => __( 'Sort users in dashboard', 'wp-cerber' ),
@@ -635,8 +635,7 @@ function cerber_settings_config( $args = array() ) {
635
  'emailrate' => array(
636
  'title' => __( 'Notification limit', 'wp-cerber' ),
637
  'label' => __( 'notifications are allowed per hour (0 means unlimited)', 'wp-cerber' ),
638
- 'size' => 3,
639
- 'pattern' => '\d+',
640
  ),
641
  'notify-new-ver' => array(
642
  'title' => __( 'New version is available', 'wp-cerber' ),
@@ -782,16 +781,19 @@ function cerber_settings_config( $args = array() ) {
782
  'tithreshold' => array(
783
  'title' => __( 'Page generation time threshold', 'wp-cerber' ),
784
  'label' => __( 'milliseconds', 'wp-cerber' ),
 
785
  'size' => 4,
786
  ),
787
  'tikeeprec' => array(
788
  'title' => __( 'Keep log records of not logged in visitors for', 'wp-cerber' ),
789
  'label' => __( 'days', 'wp-cerber' ),
 
790
  'size' => 4,
791
  ),
792
  'tikeeprec_auth' => array(
793
  'title' => __( 'Keep log records of logged in users for', 'wp-cerber' ),
794
  'label' => __( 'days', 'wp-cerber' ),
 
795
  'size' => 4,
796
  ),
797
  ),
@@ -841,6 +843,10 @@ function cerber_settings_config( $args = array() ) {
841
  2 => __( 'All files', 'wp-cerber' ),
842
  )
843
  ),
 
 
 
 
844
  'scan_tmp' => array(
845
  'title' => __( 'Scan temporary directory', 'wp-cerber' ),
846
  'type' => 'checkbox',
@@ -855,9 +861,8 @@ function cerber_settings_config( $args = array() ) {
855
  ),
856
  'scan_qcleanup' => array(
857
  'title' => __( 'Delete quarantined files after', 'wp-cerber' ),
858
- 'type' => 'text',
859
  'label' => __( 'days', 'wp-cerber' ),
860
- 'size' => 3
861
  ),
862
 
863
  ),
@@ -1046,10 +1051,9 @@ function cerber_settings_config( $args = array() ) {
1046
  ),
1047
  'trashafter' => array(
1048
  'title' => __( 'Trash spam comments', 'wp-cerber' ),
1049
- 'type' => 'text',
1050
  'enabled' => __( 'Move spam comments to trash after' ),
1051
  'label' => __( 'days', 'wp-cerber' ),
1052
- 'size' => 3
1053
  ),
1054
  )
1055
  ),
@@ -1508,11 +1512,12 @@ function cerber_get_defaults( $setting = null ) {
1508
  'ds_4opts_acl' => 0,
1509
  ),
1510
  CERBER_OPT_S => array(
1511
- 'scan_cpt' => '',
1512
- 'scan_uext' => '',
1513
- 'scan_exclude' => '',
1514
  'scan_inew' => '1',
1515
  'scan_imod' => '1',
 
1516
  'scan_tmp' => '1',
1517
  'scan_sess' => '1',
1518
  'scan_debug' => 0,
@@ -1763,16 +1768,17 @@ function crb_get_settings( $option = '', $purge_cache = false ) {
1763
 
1764
  if ( ! isset( $united ) || $purge_cache ) {
1765
 
1766
- $options = cerber_get_setting_list();
1767
- $options[] = CERBER_CONFIG;
1768
  $in = '("' . implode( '","', $options ) . '")';
1769
  $united = array();
1770
 
1771
  if ( is_multisite() ) {
1772
  $sql = 'SELECT meta_value FROM ' . $wpdb->sitemeta . ' WHERE meta_key IN ' . $in;
 
1773
  }
1774
  else {
1775
  $sql = 'SELECT option_value FROM ' . $wpdb->options . ' WHERE option_name IN ' . $in;
 
1776
  }
1777
 
1778
  $set = cerber_db_get_col( $sql );
@@ -1781,6 +1787,12 @@ function crb_get_settings( $option = '', $purge_cache = false ) {
1781
  return false;
1782
  }
1783
 
 
 
 
 
 
 
1784
  foreach ( $set as $item ) {
1785
  if ( empty( $item ) ) {
1786
  continue;
142
  'title' => __( 'Limit', 'wp-cerber' ),
143
  'type' => 'attempts',
144
  ),
145
+ 'lockout' => array(
146
+ 'type' => 'digits',
147
  'title' => __( 'Lockout duration', 'wp-cerber' ),
148
  'label' => __( 'minutes', 'wp-cerber' ),
 
149
  ),
150
  'aggressive' => array(
151
  'title' => __( 'Aggressive lockout', 'wp-cerber' ),
233
  'name' => __( 'Citadel mode', 'wp-cerber' ),
234
  'desc' => __( '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.', 'wp-cerber' ),
235
  'fields' => array(
236
+ 'citadel_on' => array(
237
  'title' => __( 'Enable authentication log monitoring', 'wp-cerber' ),
238
  //'doclink' => 'https://wpcerber.com/only-logged-in-wordpress-users/',
239
  'type' => 'checkbox',
240
  'default' => 0,
241
  ),
242
  'citadel' => array(
243
+ 'title' => __( 'Threshold', 'wp-cerber' ),
244
+ 'type' => 'citadel',
245
  'enabler' => array( 'citadel_on' ),
246
  ),
247
  'ciduration' => array(
248
+ 'title' => __( 'Duration', 'wp-cerber' ),
249
+ 'label' => __( 'minutes', 'wp-cerber' ),
250
+ 'type' => 'digits',
251
  'enabler' => array( 'citadel_on' ),
252
  ),
253
  'cinotify' => array(
269
  'title' => __( 'Keep log records of not logged in visitors for', 'wp-cerber' ),
270
  'label' => __( 'days', 'wp-cerber' ),
271
  //'label' => __( 'days, not logged in visitors', 'wp-cerber' ),
272
+ 'type' => 'digits'
273
  ),
274
  'keeplog_auth' => array(
275
  'title' => __( 'Keep log records of logged in users for', 'wp-cerber' ),
276
  'label' => __( 'days', 'wp-cerber' ),
277
  //'label' => __( 'days, logged in users', 'wp-cerber' ),
278
+ 'type' => 'digits'
279
  ),
280
  'cerberlab' => array(
281
  'title' => __( 'Cerber Lab connection', 'wp-cerber' ),
555
  ),
556
  'auth_expire' => array(
557
  'title' => __( 'User session expiration time', 'wp-cerber' ),
558
+ 'label' => __( 'minutes (leave empty to use the default WordPress value)', 'wp-cerber' ),
559
  'default' => '',
560
  'size' => 6,
561
+ 'type' => 'digits',
562
  ),
563
  'usersort' => array(
564
  'title' => __( 'Sort users in dashboard', 'wp-cerber' ),
635
  'emailrate' => array(
636
  'title' => __( 'Notification limit', 'wp-cerber' ),
637
  'label' => __( 'notifications are allowed per hour (0 means unlimited)', 'wp-cerber' ),
638
+ 'type' => 'digits',
 
639
  ),
640
  'notify-new-ver' => array(
641
  'title' => __( 'New version is available', 'wp-cerber' ),
781
  'tithreshold' => array(
782
  'title' => __( 'Page generation time threshold', 'wp-cerber' ),
783
  'label' => __( 'milliseconds', 'wp-cerber' ),
784
+ 'type' => 'digits',
785
  'size' => 4,
786
  ),
787
  'tikeeprec' => array(
788
  'title' => __( 'Keep log records of not logged in visitors for', 'wp-cerber' ),
789
  'label' => __( 'days', 'wp-cerber' ),
790
+ 'type' => 'digits',
791
  'size' => 4,
792
  ),
793
  'tikeeprec_auth' => array(
794
  'title' => __( 'Keep log records of logged in users for', 'wp-cerber' ),
795
  'label' => __( 'days', 'wp-cerber' ),
796
+ 'type' => 'digits',
797
  'size' => 4,
798
  ),
799
  ),
843
  2 => __( 'All files', 'wp-cerber' ),
844
  )
845
  ),
846
+ 'scan_chmod' => array(
847
+ 'title' => __( 'Change file permissions when necessary', 'wp-cerber' ),
848
+ 'type' => 'checkbox',
849
+ ),
850
  'scan_tmp' => array(
851
  'title' => __( 'Scan temporary directory', 'wp-cerber' ),
852
  'type' => 'checkbox',
861
  ),
862
  'scan_qcleanup' => array(
863
  'title' => __( 'Delete quarantined files after', 'wp-cerber' ),
864
+ 'type' => 'digits',
865
  'label' => __( 'days', 'wp-cerber' ),
 
866
  ),
867
 
868
  ),
1051
  ),
1052
  'trashafter' => array(
1053
  'title' => __( 'Trash spam comments', 'wp-cerber' ),
1054
+ 'type' => 'digits',
1055
  'enabled' => __( 'Move spam comments to trash after' ),
1056
  'label' => __( 'days', 'wp-cerber' ),
 
1057
  ),
1058
  )
1059
  ),
1512
  'ds_4opts_acl' => 0,
1513
  ),
1514
  CERBER_OPT_S => array(
1515
+ 'scan_cpt' => array(),
1516
+ 'scan_uext' => array(),
1517
+ 'scan_exclude' => array(),
1518
  'scan_inew' => '1',
1519
  'scan_imod' => '1',
1520
+ 'scan_chmod' => 0,
1521
  'scan_tmp' => '1',
1522
  'scan_sess' => '1',
1523
  'scan_debug' => 0,
1768
 
1769
  if ( ! isset( $united ) || $purge_cache ) {
1770
 
1771
+ $options = cerber_get_setting_list();
 
1772
  $in = '("' . implode( '","', $options ) . '")';
1773
  $united = array();
1774
 
1775
  if ( is_multisite() ) {
1776
  $sql = 'SELECT meta_value FROM ' . $wpdb->sitemeta . ' WHERE meta_key IN ' . $in;
1777
+ $sql_new = 'SELECT meta_value FROM ' . $wpdb->sitemeta . ' WHERE meta_key = "' . CERBER_CONFIG . '"';
1778
  }
1779
  else {
1780
  $sql = 'SELECT option_value FROM ' . $wpdb->options . ' WHERE option_name IN ' . $in;
1781
+ $sql_new = 'SELECT option_value FROM ' . $wpdb->options . ' WHERE option_name = "' . CERBER_CONFIG . '"';
1782
  }
1783
 
1784
  $set = cerber_db_get_col( $sql );
1787
  return false;
1788
  }
1789
 
1790
+ $set_new = cerber_db_get_var( $sql_new );
1791
+
1792
+ if ( $set_new ) {
1793
+ array_unshift( $set, $set_new );
1794
+ }
1795
+
1796
  foreach ( $set as $item ) {
1797
  if ( empty( $item ) ) {
1798
  continue;
wp-cerber.php CHANGED
@@ -5,7 +5,7 @@
5
  Description: Defends WordPress against hacker attacks, spam, trojans, and viruses. Malware scanner and integrity checker. Hardening WordPress with a set of comprehensive security algorithms. Spam protection with a sophisticated bot detection engine and reCAPTCHA. Tracks user and intruder activity with powerful email, mobile and desktop notifications.
6
  Author: Cerber Tech Inc.
7
  Author URI: https://wpcerber.com
8
- Version: 8.6
9
  Text Domain: wp-cerber
10
  Domain Path: /languages
11
  Network: true
@@ -31,7 +31,7 @@
31
 
32
  */
33
 
34
- define( 'CERBER_VER', '8.6' );
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.6.3
9
  Text Domain: wp-cerber
10
  Domain Path: /languages
11
  Network: true
31
 
32
  */
33
 
34
+ define( 'CERBER_VER', '8.6.3' );
35
  define( 'CERBER_PLUGIN_ID', 'wp-cerber/wp-cerber.php' );
36
 
37
  function cerber_plugin_file() {